@mantleio/sdk
Version:
[Mantle] Tools for working with Mantle
60 lines (59 loc) • 2.77 kB
TypeScript
import { Contract, Overrides, Signer, BigNumber, CallOverrides, PayableOverrides } from 'ethers';
import { BlockTag, TransactionRequest, TransactionResponse } from '@ethersproject/abstract-provider';
import { NumberLike, AddressLike, TokenBridgeMessage } from './types';
import { CrossChainMessenger } from '../cross-chain-messenger';
export interface IERC721BridgeAdapter {
messenger: CrossChainMessenger;
l1Bridge: Contract;
l2Bridge: Contract;
supportsTokenPair(l1Token: AddressLike, l2Token: AddressLike): Promise<boolean>;
approval(l1Token: AddressLike, l2Token: AddressLike, signer: Signer): Promise<boolean>;
approve(l1Token: AddressLike, l2Token: AddressLike, signer: Signer, opts?: {
overrides?: Overrides;
}): Promise<TransactionResponse>;
deposit(l1Token: AddressLike, l2Token: AddressLike, tokenId: NumberLike, signer: Signer, opts?: {
recipient?: AddressLike;
l2GasLimit?: NumberLike;
overrides?: Overrides;
}): Promise<TransactionResponse>;
getWithdrawalsByAddress(address: AddressLike, opts?: {
fromBlock?: BlockTag;
toBlock?: BlockTag;
}): Promise<TokenBridgeMessage[]>;
getDepositsByAddress(address: AddressLike, opts?: {
fromBlock?: BlockTag;
toBlock?: BlockTag;
}): Promise<TokenBridgeMessage[]>;
withdraw(l1Token: AddressLike, l2Token: AddressLike, tokenId: NumberLike, signer: Signer, opts?: {
recipient?: AddressLike;
overrides?: Overrides;
}): Promise<TransactionResponse>;
populateTransaction: {
approve(l1Token: AddressLike, l2Token: AddressLike, opts?: {
overrides?: Overrides;
}): Promise<TransactionRequest>;
deposit(l1Token: AddressLike, l2Token: AddressLike, tokenId: NumberLike, opts?: {
recipient?: AddressLike;
l2GasLimit?: NumberLike;
overrides?: PayableOverrides;
}): Promise<TransactionRequest>;
withdraw(l1Token: AddressLike, l2Token: AddressLike, tokenId: NumberLike, opts?: {
recipient?: AddressLike;
overrides?: Overrides;
}): Promise<TransactionRequest>;
};
estimateGas: {
approve(l1Token: AddressLike, l2Token: AddressLike, opts?: {
overrides?: CallOverrides;
}): Promise<BigNumber>;
deposit(l1Token: AddressLike, l2Token: AddressLike, tokenId: NumberLike, opts?: {
recipient?: AddressLike;
l2GasLimit?: NumberLike;
overrides?: CallOverrides;
}): Promise<BigNumber>;
withdraw(l1Token: AddressLike, l2Token: AddressLike, tokenId: NumberLike, opts?: {
recipient?: AddressLike;
overrides?: CallOverrides;
}): Promise<BigNumber>;
};
}