#!/usr/bin/env perl
# Copyright (c) 2016-2024 The Hush developers
# Distributed under the GPLv3 software license, see the accompanying
# file COPYING or https://www.gnu.org/licenses/gpl-3.0.en.html
use warnings;
use strict;

# Given a block height, estimate when it will happen
my $block      = shift || die "Usage: $0 123";
my $coin       = shift || '';
my $cli        = "./src/dragonx-cli";
unless (-e $cli) {
    die "$cli does not exist, aborting";
}
if ($coin) {
    $cli .= " -ac_name=$coin";
}
my $blockcount = qx{$cli getblockcount};

unless ($blockcount = int($blockcount)) {
    print "Invalid response from $cli\n";
    exit 1;
}

if ($block <= $blockcount) {
	die "That block has already happened!";
} else {
	my $diff    = $block - $blockcount;
    # TODO: support custom blocktimes
    # assumes HACs use default blocktime of 60s
    my $minpb   = $coin ? 1 : 0.6; # 36s in minutes for DragonX
	my $minutes = $diff*$minpb;
	my $seconds = $minutes*60;
	my $now     = time;
	my $then    = $now + $seconds;
	my $ldate   = localtime($then);
	my $gmdate  = gmtime($then);
    if ($coin) {
	    print "$coin Block $block will happen at roughly:\n";
    } else {
	    print "DragonX Block $block will happen at roughly:\n";
    }
	print "$ldate Eastern # $then\n";
	print "$gmdate GMT     # $then\n";
}
