import { Msgs } from '../../../..';
import { AccountAddress, ChainId, EthereumChainId } from '../../../..';
import { DirectSignResponse } from '@cosmjs/proto-signing';
import { TxRaw } from '@routerprotocol/chain-api/cosmos/tx/v1beta1/tx_pb';
import { ConcreteWalletStrategy, EthereumWalletStrategyArgs } from '../../types';
import BaseConcreteStrategy from './Base';
import { WalletDeviceType } from '../../../types/enums';
import { TxToSend } from '../../../../tx-ts/ethermint/types';
export default class Metamask extends BaseConcreteStrategy implements ConcreteWalletStrategy {
    private ethereum;
    constructor(args: EthereumWalletStrategyArgs);
    getWalletDeviceType(): Promise<WalletDeviceType>;
    getAddresses(): Promise<string[]>;
    confirm(address: AccountAddress): Promise<string>;
    sendEthereumTransaction(transaction: unknown, _options: {
        address: AccountAddress;
        ethereumChainId: EthereumChainId;
    }): Promise<string>;
    sendTransaction(_transaction: unknown, _options: {
        address: AccountAddress;
        chainId: ChainId;
    }): Promise<string>;
    /** @deprecated */
    signTransaction(eip712json: string, address: AccountAddress): Promise<string>;
    signEip712TypedData(eip712json: string, address: AccountAddress): Promise<string>;
    signCosmosTransaction(_transaction: {
        txRaw: TxRaw;
        accountNumber: number;
        chainId: string;
    }, _address: AccountAddress): Promise<DirectSignResponse>;
    simulateTransaction(signedTx: TxToSend, nodeUrl: string): Promise<any>;
    broadcastTransaction(signedTx: TxToSend, nodeUrl: string): Promise<any>;
    simulateSignAndBroadcast({ ethChainId, cosmosChainId, txMsg, nodeUrl, memo, }: {
        ethChainId: string;
        cosmosChainId: string;
        txMsg: Msgs;
        nodeUrl: string;
        memo?: string;
    }): Promise<any>;
    getNetworkId(): Promise<string>;
    getChainId(): Promise<string>;
    getEthereumTransactionReceipt(txHash: string): Promise<string>;
    getPubKey(): Promise<string>;
    onChainIdChanged(callback: () => void): void;
    onAccountChange(callback: (account: AccountAddress) => void): void;
    cancelOnChainIdChange(): void;
    cancelOnAccountChange(): void;
    cancelAllEvents(): void;
    private getEthereum;
}
