import { ethers } from 'ethers';
import { ChainInfo, TransferToken } from '../../../models';
import { ChainIds, ERC20Names } from '../../../networks';
import { AddEthereumChainParameter, GetBalanceProps, NewEthereumWallet, SignProps, WatchAssetParams } from './types';
export interface IMetamaskWrapper {
    init(): void;
    generateWallet(): NewEthereumWallet;
    connectWallet(): Promise<string[]>;
    getAddress(): Promise<string[]>;
    getBalance(args?: GetBalanceProps): Promise<number[]>;
    getChain(): Promise<ChainInfo | null>;
    switchNetwork(chainId: ChainIds): Promise<void>;
    switchCustomNetwork(network: AddEthereumChainParameter): Promise<void>;
    addToken(token: ERC20Names): Promise<boolean>;
    addCustomToken(newAsset: WatchAssetParams): Promise<boolean>;
    sign(args: SignProps): Promise<void>;
    transfer(args: TransferToken): Promise<ethers.providers.TransactionResponse | null>;
    sendSignedTransaction(args: {
        tx?: ethers.utils.Deferrable<ethers.providers.TransactionRequest>;
    }): Promise<ethers.providers.TransactionResponse>;
    sendTransaction(tx: string): Promise<ethers.providers.TransactionResponse>;
    addEventListener(eventFilter: ethers.providers.EventType, listener: ethers.providers.Listener): Promise<void>;
    scanQrCode(regex?: RegExp): Promise<string>;
    getMobileLink(): string;
}
