///
import BigNumber from "bignumber.js";
import { BurnAndReleaseTransaction, LockAndMintTransaction, LockChain, Logger, MintChain, RenNetwork, RenNetworkDetails, RenNetworkString, SyncOrPromise, TxStatus } from "@renproject/interfaces";
import { Provider } from "@renproject/provider";
import { AbstractRenVMProvider } from "../abstract";
import { ParamsQueryBlock, ParamsQueryBlocks, ParamsQueryTx, ParamsQueryTxs, ParamsSubmitBurn, ParamsSubmitGateway, ParamsSubmitMint, RenVMParams, RenVMResponses, RPCMethod } from "./methods";
import { MintTransactionInput, SubmitGatewayInput } from "./transaction";
export declare const resolveV2Contract: ({ asset, from, to, }: {
asset: string;
from: LockChain | MintChain;
to: LockChain | MintChain;
}) => string;
export declare class RenVMProvider implements AbstractRenVMProvider {
version: () => number;
private readonly network;
readonly provider: Provider;
private readonly logger;
constructor(network: RenNetwork | RenNetworkString | RenNetworkDetails, provider?: Provider | string, logger?: Logger);
sendMessage: (method: Method, request: RenVMParams[Method], retry?: number | undefined, timeout?: number | undefined) => SyncOrPromise;
selector: (params: {
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;
submitGateway: (gateway: ParamsSubmitGateway["gateway"], tx: ParamsSubmitGateway["tx"], 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;
queryConfig: (retry?: number | undefined) => Promise;
/**
* @deprecated - use `queryBlockState` instead.
*/
queryState: (retry?: number | undefined) => Promise;
queryBlockState: (retry?: number | undefined) => Promise;
buildGateway: ({ selector, gHash, gPubKey, nHash, nonce, payload, pHash, to, transactionVersion, }: {
selector: string;
gHash: Buffer;
gPubKey: Buffer;
nHash: Buffer;
nonce: Buffer;
payload: Buffer;
pHash: Buffer;
to: string;
transactionVersion?: number | undefined;
}) => SubmitGatewayInput;
buildTransaction: ({ selector, gHash, gPubKey, nHash, nonce, output, amount, payload, pHash, to, transactionVersion, }: {
selector: string;
gHash: Buffer;
gPubKey: Buffer;
nHash: Buffer;
nonce: Buffer;
output: {
txid: Buffer;
txindex: string;
};
amount: string;
payload: Buffer;
pHash: Buffer;
to: string;
transactionVersion?: number | undefined;
}) => MintTransactionInput;
mintTxHash: (params: {
selector: string;
gHash: Buffer;
gPubKey: Buffer;
nHash: Buffer;
nonce: Buffer;
output: {
txindex: string;
txid: Buffer;
};
amount: string;
payload: Buffer;
pHash: Buffer;
to: string;
transactionVersion?: number;
}) => Buffer;
submitMint: (params: {
selector: string;
gHash: Buffer;
gPubKey: Buffer;
nHash: Buffer;
nonce: Buffer;
output: {
txindex: string;
txid: Buffer;
};
amount: string;
payload: Buffer;
pHash: Buffer;
to: string;
transactionVersion?: number;
}, retries?: number | undefined) => Promise;
submitGatewayDetails: (gateway: string, params: {
selector: string;
gHash: Buffer;
gPubKey: Buffer;
nHash: Buffer;
nonce: Buffer;
payload: Buffer;
pHash: Buffer;
to: string;
transactionVersion?: number;
}, retries?: number | undefined) => Promise;
burnTxHash: (params: {
selector: string;
gHash: Buffer;
gPubKey: Buffer;
nHash: Buffer;
nonce: Buffer;
output: {
txindex: string;
txid: Buffer;
};
amount: string;
payload: Buffer;
pHash: Buffer;
to: string;
transactionVersion?: number;
}) => Buffer;
submitBurn: (params: {
selector: string;
gHash: Buffer;
gPubKey: Buffer;
nHash: Buffer;
nonce: Buffer;
output: {
txindex: string;
txid: Buffer;
};
amount: string;
payload: Buffer;
pHash: Buffer;
to: string;
transactionVersion?: number;
}, retries?: number | undefined) => Promise;
/**
* Queries the result of a RenVM transaction and unmarshals the result into
* a [[LockAndMintTransaction]] or [[BurnAndReleaseTransaction]].
*
* @param renVMTxHash The transaction hash as a Buffer.
*/
readonly queryMintOrBurn: (_selector: string, renVMTxHash: Buffer, retries?: number | undefined) => Promise;
/**
* Fetches the result of a RenVM transaction on a repeated basis until the
* transaction's status is `"done"`.
*
* @param utxoTxHash The transaction hash as a Buffer.
* @param onStatus A callback called each time the status of the transaction
* is refreshed - even if it hasn't changed.
* @param _cancelRequested A function that returns `true` to cancel the
* loop.
*/
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 chain The chain for which the public key should be fetched.
* @returns The public key hash (20 bytes) as a string.
*/
readonly selectPublicKey: (selector: string, _chain: string) => Promise;
getNetwork: (_selector: string) => Promise;
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;
}>;
}