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, onAccountChangeCallback, 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 CosmostationEth extends BaseConcreteStrategy implements ConcreteWalletStrategy {
    private ethereum?;
    constructor(args: EthereumWalletStrategyArgs);
    simulateTransaction(_signedTx: TxToSend, _nodeUrl: string): Promise<any>;
    broadcastTransaction(_signedTx: TxToSend, _nodeUrl: string): Promise<any>;
    simulateSignAndBroadcast(_args: {
        ethChainId: string;
        cosmosChainId: string;
        txMsg: Msgs;
        nodeUrl: string;
        memo?: string;
    }): Promise<any>;
    onAccountChange?(_callback: onAccountChangeCallback): void;
    onChainIdChange?(_callback: onChainIdChangeCallback): void;
    cancelOnChainIdChange?(): void;
    cancelOnAccountChange?(): void;
    cancelAllEvents?(): void;
    disconnect?(): Promise<void>;
    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>;
    getNetworkId(): Promise<string>;
    getChainId(): Promise<string>;
    getEthereumTransactionReceipt(txHash: string): Promise<string>;
    getPubKey(): Promise<string>;
    private getEthereum;
}
