import { AccountAddress, ChainId, EthereumChainId } from '../../../..';
import { TxRaw } from '@routerprotocol/chain-api/cosmos/tx/v1beta1/tx_pb';
import { DirectSignResponse } from '@cosmjs/proto-signing';
import { ConcreteWalletStrategy, EthereumWalletStrategyArgs, onChainIdChangeCallback } from '../../types';
import BaseConcreteStrategy from './Base';
import { WalletDeviceType } from '../../../types/enums';
import { Msgs } from '../../../../core';
import { TxToSend } from '../../../../tx-ts/ethermint/types';
export default class WalletConnect extends BaseConcreteStrategy implements ConcreteWalletStrategy {
    private walletConnectProvider;
    private readonly ethereumOptions;
    private createWalletConnectProvider;
    constructor(args: EthereumWalletStrategyArgs);
    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>;
    onChainIdChange?(_callback: onChainIdChangeCallback): void;
    cancelOnChainIdChange?(): void;
    cancelOnAccountChange?(): void;
    cancelAllEvents?(): void;
    getWalletDeviceType(): Promise<WalletDeviceType>;
    private connect;
    disconnect(): Promise<void>;
    getAddresses(): Promise<string[]>;
    confirm(address: AccountAddress): Promise<string>;
    /** @deprecated */
    signTransaction(eip712json: string, address: AccountAddress): Promise<string>;
    signEip712TypedData(eip712json: string, address: AccountAddress): Promise<string>;
    sendEthereumTransaction(transaction: unknown, _options: {
        address: AccountAddress;
        ethereumChainId: EthereumChainId;
    }): Promise<string>;
    sendTransaction(_transaction: unknown, _options: {
        address: AccountAddress;
        chainId: ChainId;
    }): Promise<string>;
    signCosmosTransaction(_transaction: {
        txRaw: TxRaw;
        accountNumber: number;
        chainId: string;
    }, _address: AccountAddress): Promise<DirectSignResponse>;
    getEthereumTransactionReceipt(txHash: string): Promise<string>;
    getNetworkId(): Promise<string>;
    getChainId(): Promise<string>;
    getPubKey(): Promise<string>;
    onAccountChange(callback: (account: AccountAddress) => void): void;
}
