import { BsvNetwork } from "./HDPrivateKey";
import AddressBalance from "./Utils/HTTPResponse/AddressBalance";
import TxDecoded from "./Utils/HTTPResponse/TxDecoded";

import { TxDetails } from "./Utils/HTTPResponse/TxDetails";
import { UnspendTransactionWoC } from "./Utils/HTTPResponse/UnspendTransaction";
import { AccountTxHistory } from "./Utils/TxHistory";
declare class Blockchain {
  private api;
  constructor(network: BsvNetwork);
  static getNetwork(network: BsvNetwork): Blockchain;
  /**
   * @param address
   * @returns the balance at a given adress
   */
  getBalance(address: string): Promise<AddressBalance>;
  /**
   * @param address
   * @returns
   */
  getBalancesFromAddresses(address: string[]): Promise<any[]>;
  getAddressInfo(address: string): Promise<any>;
  getBulkUTXO(addresses: string[]): Promise<
    {
      height: number;
      tx_pos: number;
      tx_hash: string;
      value: number;
      privateKeyIndex: number;
      ownerAddress: string;
    }[]
  >;
  getUnspendTxOuput(address: string): Promise<UnspendTransactionWoC[]>;
  broadcast(txhex: string): Promise<any>;
  getRawTx(txhash: any): Promise<string>;
  getTxDetails(txHash: any): Promise<TxDetails>;
  getHistory(address: string): Promise<AccountTxHistory>;
  getTxDecode(txHexVal: string): Promise<any>;
}
export default Blockchain;
