///
import { AbiItem, BurnAndReleaseTransaction, LockAndMintTransaction, LockChain, Logger, MintChain, RenNetwork, RenNetworkDetails, RenNetworkString, TxStatus } from "@renproject/interfaces";
import { Provider } from "@renproject/provider";
import BigNumber from "bignumber.js";
import { AbstractRenVMProvider } from "../abstract";
import { ParamsQueryBlock, ParamsQueryBlocks, ParamsQueryTx, ParamsQueryTxs, ParamsSubmitBurn, ParamsSubmitMint, RenVMParams, RenVMResponses } from "./methods";
export declare const generateMintTxHash: (selector: string, encodedID: string, deposit: string, logger?: Logger) => Buffer;
export declare class RenVMProvider implements AbstractRenVMProvider {
version: () => number;
private readonly network;
readonly provider: Provider;
sendMessage: RenVMProvider["provider"]["sendMessage"];
private readonly logger;
constructor(network: RenNetwork | RenNetworkString | RenNetworkDetails, provider?: Provider, logger?: Logger);
selector: ({ asset, from, to, }: {
asset: string;
from: LockChain | MintChain;
to: LockChain | MintChain;
}) => string;
queryBlock: (blockHeight: ParamsQueryBlock["blockHeight"], retry?: number | undefined) => Promise;
queryBlocks: (blockHeight: ParamsQueryBlocks["blockHeight"], n: ParamsQueryBlocks["n"], retry?: number | undefined) => Promise;
submitTx: (tx: ParamsSubmitBurn["tx"] | ParamsSubmitMint["tx"], retry?: number | undefined) => Promise;
queryTx: (txHash: ParamsQueryTx["txHash"], retry?: number | undefined) => Promise;
queryTxs: (tags: ParamsQueryTxs["tags"], page?: number | undefined, pageSize?: number | undefined, txStatus?: ParamsQueryTxs["txStatus"], retry?: number | undefined) => Promise;
queryNumPeers: (retry?: number | undefined) => Promise;
queryPeers: (retry?: number | undefined) => Promise;
queryShards: (retry?: number | undefined) => Promise;
queryStat: (retry?: number | undefined) => Promise;
queryFees: (retry?: number | undefined) => Promise;
getFees: () => Promise;
mintTxHash: ({ selector, gHash, outputHashFormat, }: {
selector: string;
gHash: Buffer;
outputHashFormat: string;
}) => Buffer;
submitMint: ({ selector, nonce, output, payload, to, token, fn, fnABI, tags, }: {
selector: string;
nonce: Buffer;
output: {
txindex: string;
txid: Buffer;
};
payload: Buffer;
to: string;
token: string;
fn: string;
fnABI: AbiItem[];
tags: [string] | [];
}) => Promise;
submitBurn: (params: {
selector: string;
tags: [string] | [];
burnNonce: BigNumber;
}) => Promise;
readonly queryMintOrBurn: (_selector: string, utxoTxHash: Buffer, retries?: number | undefined) => Promise;
readonly waitForTX: (selector: string, utxoTxHash: Buffer, onStatus?: ((status: TxStatus) => void) | undefined, _cancelRequested?: (() => boolean) | undefined, timeout?: number | undefined) => Promise;
/**
* selectPublicKey fetches the public key for the RenVM shard handling
* the provided contract.
*
* @param asset The asset for which the public key should be fetched.
* @returns The public key hash (20 bytes) as a string.
*/
readonly selectPublicKey: (_selector: string, asset: string) => Promise;
getNetwork: (_selector: string) => Promise;
getConfirmationTarget: (selector: string, _chain: {
name: string;
}) => Promise<2 | 6 | 12 | 15 | 24 | 30 | undefined>;
estimateTransactionFee: (_asset: string, _lockChain: {
name: string;
legacyName?: string;
}, hostChain: {
name: string;
legacyName?: string;
}) => Promise<{
lock: BigNumber;
release: BigNumber;
mint: number;
burn: number;
}>;
}