///
import { AbiItem, BurnAndReleaseTransaction, LockAndMintTransaction, LockChain, MintChain, RenNetwork, RenNetworkDetails, RenNetworkString, SyncOrPromise, TxStatus } from "@renproject/interfaces";
import BigNumber from "bignumber.js";
import { Provider } from "@renproject/provider";
export interface AbstractRenVMProvider extends Provider {
selector: (params: {
asset: string;
from: LockChain | MintChain;
to: LockChain | MintChain;
}) => string;
version: (selector: string) => number;
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;
outputHashFormat: string;
transactionVersion?: number;
}) => Buffer;
submitGatewayDetails?: (gateway: string, params: {
selector: string;
gHash: Buffer;
gPubKey: Buffer;
nHash: Buffer;
nonce: Buffer;
payload: Buffer;
pHash: Buffer;
to: string;
token: string;
fn: string;
fnABI: AbiItem[];
tags: [string] | [];
transactionVersion?: number;
}, retries?: number) => SyncOrPromise;
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;
token: string;
fn: string;
fnABI: AbiItem[];
tags: [string] | [];
transactionVersion?: number;
}, retries?: number) => 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: {
selector: string;
tags: [string] | [];
burnNonce: BigNumber;
gHash: Buffer;
gPubKey: Buffer;
nHash: Buffer;
nonce: Buffer;
output: {
txid: Buffer;
txindex: string;
};
amount: string;
payload: Buffer;
pHash: Buffer;
to: string;
}, retries?: number) => SyncOrPromise;
queryMintOrBurn: (selector: string, utxoTxHash: Buffer, retries?: number) => SyncOrPromise;
waitForTX: (selector: string, utxoTxHash: Buffer, onStatus?: (status: TxStatus) => void, _cancelRequested?: () => boolean, timeout?: number) => 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;
/**
* Look up the number of confirmations required by RenVM.
*/
getConfirmationTarget?: (selector: string, chain: {
name: string;
}) => SyncOrPromise;
/**
* Return the estimated fee RenVM will use for locking and releasing.
*/
estimateTransactionFee: (asset: string, lockChain: {
name: string;
legacyName?: string;
}, hostChain: {
name: string;
legacyName?: string;
}) => SyncOrPromise<{
lock: BigNumber;
release: BigNumber;
mint: number;
burn: number;
}>;
}