/// <reference types="node" />
import BigNumber from "bignumber.js";
import { BITBOX } from "bitbox-sdk";
import { AddressDetailsResult, AddressUtxoResult } from "bitcoin-com-rest";
import { IGrpcClient, SlpRequiredBurn } from "grpc-bchrpc";
import { INetwork, logger, SlpAddressUtxoResult, SlpBalancesResult, SlpTransactionDetails, SlpTxnDetailsResult } from "../index";
import { Slp, SlpValidator } from "./slp";
import { TransactionHelpers } from "./transactionhelpers";
export declare class BchdNetwork implements INetwork {
    BITBOX: BITBOX;
    slp: Slp;
    validator: SlpValidator;
    txnHelpers: TransactionHelpers;
    logger: logger;
    client: IGrpcClient;
    constructor({ BITBOX, validator, logger, client }: {
        BITBOX: BITBOX;
        client: IGrpcClient;
        validator: SlpValidator;
        logger?: logger;
    });
    getTokenInformation(txid: string, decimalConversion?: boolean): Promise<SlpTransactionDetails>;
    getTransactionDetails(txid: string): Promise<SlpTxnDetailsResult | undefined>;
    getUtxos(address: string): Promise<AddressUtxoResult>;
    getAllSlpBalancesAndUtxos(address: string | string[]): Promise<SlpBalancesResult | Array<{
        address: string;
        result: SlpBalancesResult;
    }>>;
    simpleTokenSend(tokenId: string, sendAmounts: BigNumber | BigNumber[], inputUtxos: SlpAddressUtxoResult[], tokenReceiverAddresses: string | string[], changeReceiverAddress: string, requiredNonTokenOutputs?: Array<{
        satoshis: number;
        receiverAddress: string;
    }>): Promise<string>;
    simpleBchSend(sendAmounts: BigNumber | BigNumber[], inputUtxos: SlpAddressUtxoResult[], bchReceiverAddresses: string | string[], changeReceiverAddress: string): Promise<string>;
    simpleTokenGenesis(tokenName: string, tokenTicker: string, tokenAmount: BigNumber, documentUri: string | null, documentHash: Buffer | null, decimals: number, tokenReceiverAddress: string, batonReceiverAddress: string, bchChangeReceiverAddress: string, inputUtxos: SlpAddressUtxoResult[]): Promise<string>;
    simpleNFT1ParentGenesis(tokenName: string, tokenTicker: string, tokenAmount: BigNumber, documentUri: string | null, documentHash: Buffer | null, tokenReceiverAddress: string, batonReceiverAddress: string, bchChangeReceiverAddress: string, inputUtxos: SlpAddressUtxoResult[], decimals?: number): Promise<string>;
    simpleNFT1ChildGenesis(nft1GroupId: string, tokenName: string, tokenTicker: string, documentUri: string | null, documentHash: Buffer | null, tokenReceiverAddress: string, bchChangeReceiverAddress: string, inputUtxos: SlpAddressUtxoResult[], allowBurnAnyAmount?: boolean): Promise<string>;
    simpleTokenMint(tokenId: string, mintAmount: BigNumber, inputUtxos: SlpAddressUtxoResult[], tokenReceiverAddress: string, batonReceiverAddress: string, changeReceiverAddress: string): Promise<string>;
    simpleTokenBurn(tokenId: string, burnAmount: BigNumber, inputUtxos: SlpAddressUtxoResult[], changeReceiverAddress: string): Promise<string>;
    getUtxoWithRetry(address: string, retries?: number): Promise<AddressUtxoResult>;
    getUtxoWithTxDetails(address: string): Promise<SlpAddressUtxoResult[]>;
    getTransactionDetailsWithRetry(txids: string[], retries?: number): Promise<SlpTxnDetailsResult[] | undefined>;
    getAddressDetailsWithRetry(address: string, retries?: number): Promise<AddressDetailsResult>;
    sendTx(hex: string, slpBurns?: SlpRequiredBurn[], suppressWarnings?: boolean): Promise<string>;
    monitorForPayment(paymentAddress: string, fee: number, onPaymentCB: Function): Promise<void>;
    processUtxosForSlp(utxos: SlpAddressUtxoResult[]): Promise<SlpBalancesResult>;
    getRawTransactions(txids: string[]): Promise<string[]>;
    isValidSlpTxid(txid: string): Promise<boolean>;
    validateSlpTransactions(txids: string[]): Promise<string[]>;
    getNftParentId(tokenIdHex: string): Promise<string>;
}
