#!/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 time, estimate when it will happen
my $block      = shift || die "Usage: $0 123";
my $coin       = shift || '';
my $hush       = "./src/hush-cli";
unless (-e $hush) {
    die "$hush does not exist, aborting";
}
if ($coin) {
    $hush .= " -ac_name=$coin";
}
my $blockcount = qx{$hush getblockcount};

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

if ($block <= $blockcount) {
	die "That block has already happened!";
} else {
	my $diff    = $block - $blockcount;
    my $minpb   = 1.25; # 75s in minutes for HUSH3
    if ($coin eq 'DRAGONX') {
        $minpb = 0.6; # minutes per block
    } elsif ($coin) {
        # TODO: support custom bloctimes
        $minpb = 1; # assumes default blocktime of 60s
    }
	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 "Hush Block $block will happen at roughly:\n";
    }
	print "$ldate Eastern # $then\n";
	print "$gmdate GMT     # $then\n";
}
