import Web3 from 'web3';
import { AccountAddress, ChainId, EthereumChainId, Msgs } from '../../..';
import { DirectSignResponse } from '@cosmjs/proto-signing';
import { TxRaw } from '@routerprotocol/chain-api/cosmos/tx/v1beta1/tx_pb';
import { ConcreteWalletStrategy, onAccountChangeCallback, onChainIdChangeCallback, WalletStrategyArguments } from '../types';
import { Wallet, WalletDeviceType } from '../../types/enums';
import { TxToSend } from '../../../tx-ts/ethermint/types';
export default class WalletStrategy {
    strategies: Record<Wallet, ConcreteWalletStrategy | undefined>;
    wallet: Wallet;
    constructor(args: WalletStrategyArguments);
    getWallet(): Wallet;
    setWallet(wallet: Wallet): void;
    getStrategy(): ConcreteWalletStrategy;
    getAddresses(): Promise<AccountAddress[]>;
    getWalletDeviceType(): Promise<WalletDeviceType>;
    getPubKey(): Promise<string>;
    getChainId(): Promise<string>;
    getNetworkId(): Promise<string>;
    getEthereumTransactionReceipt(txHash: string): Promise<void>;
    confirm(address: AccountAddress): Promise<string>;
    disconnectWallet(): Promise<void>;
    sendTransaction(tx: DirectSignResponse | TxRaw, options: {
        address: AccountAddress;
        chainId: ChainId;
    }): Promise<string>;
    sendEthereumTransaction(tx: any, options: {
        address: AccountAddress;
        ethereumChainId: EthereumChainId;
    }): Promise<string>;
    /** @deprecated * */
    signTransaction(data: string | {
        txRaw: TxRaw;
        accountNumber: number;
        chainId: string;
    }, address: AccountAddress): Promise<string | DirectSignResponse>;
    signEip712TypedData(eip712TypedData: string, address: AccountAddress): Promise<string>;
    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>;
    signCosmosTransaction(transaction: {
        txRaw: TxRaw;
        accountNumber: number;
        chainId: string;
    }, address: AccountAddress): Promise<DirectSignResponse>;
    getWeb3(): Web3;
    onAccountChange(callback: onAccountChangeCallback): void;
    onChainIdChange(callback: onChainIdChangeCallback): void;
    cancelOnChainIdChange(): void;
    cancelAllEvents(): void;
    cancelOnAccountChange(): void;
}
