///
import { BurnAndReleaseTransaction, LockAndMintTransaction, Logger, RenNetwork, RenNetworkDetails, RenNetworkString, SyncOrPromise, TxStatus } from "@renproject/interfaces";
import BigNumber from "bignumber.js";
import { AbstractRenVMProvider } from "./";
import { RenVMProvider as V1Provider } from "./v1";
import { RenVMParams, RenVMProvider as V2Provider, RenVMResponses } from "./v2";
export declare class CombinedProvider implements AbstractRenVMProvider {
v1?: V1Provider;
v2: V2Provider;
sendMessage: AbstractRenVMProvider["sendMessage"];
network: RenNetworkDetails;
constructor(network: RenNetwork | RenNetworkString | RenNetworkDetails, logger?: Logger);
selector: (params: Parameters[0]) => string;
version: (selector: string) => 1 | 2;
mintTxHash: (params: Parameters[0]) => Buffer;
submitMint: (params: Parameters[0]) => SyncOrPromise;
burnTxHash: (params: {
selector: string;
gHash: Buffer;
gPubKey: Buffer;
nHash: Buffer;
nonce: Buffer;
output: {
txid: Buffer;
txindex: string;
};
amount: string;
payload: Buffer;
pHash: Buffer;
to: string;
}) => Buffer;
submitBurn: (params: Parameters[0]) => SyncOrPromise;
queryMintOrBurn: (selector: string, utxoTxHash: Buffer, retries?: number | undefined) => SyncOrPromise;
waitForTX: (selector: string, utxoTxHash: Buffer, onStatus?: ((status: TxStatus) => void) | undefined, cancelRequested?: (() => boolean) | undefined, timeout?: number | undefined) => SyncOrPromise;
/**
* selectPublicKey fetches the key for the RenVM shard handling
* the provided contract.
*
* @returns The key hash (20 bytes) as a string.
*/
selectPublicKey: (selector: string, assetOrChain: string) => SyncOrPromise;
/**
* Used to query what network a custom provider is connected to. LockAndMint
* and BurnAndRelease use this to configure their chain parameters.
*/
getNetwork: (selector: string) => SyncOrPromise;
getConfirmationTarget: (selector: string, chain: {
name: string;
}) => Promise;
estimateTransactionFee: (asset: string, lockChain: {
name: string;
}, hostChain: {
name: string;
}) => Promise<{
lock: BigNumber;
release: BigNumber;
mint: number;
burn: number;
}>;
}