import { Observable } from 'rxjs';
import { BytesLike, providers, Wallet as EtherWallet, TypedDataField } from 'ethers';
import { Service, ObjectSubject } from '../common';
import { WalletProvider, WalletProviderLike } from './providers';
import { Wallet, WalletOptions } from './interfaces';
export declare class WalletService extends Service {
    private providerLike;
    private options;
    rpcUrl: string;
    chain: number;
    readonly wallet$: ObjectSubject<Wallet, keyof Wallet>;
    readonly EOAAddress$: Observable<string>;
    readonly rpcBundlerUrl: string;
    readonly chainId: number;
    provider: WalletProvider;
    constructor(providerLike: WalletProviderLike, options: WalletOptions, rpcUrl: string, chain: number);
    get wallet(): Wallet;
    get etherWallet(): Partial<EtherWallet>;
    get EOAAddress(): string;
    get walletProvider(): WalletProvider;
    getWalletProvider(): providers.JsonRpcProvider;
    signMessage(message: BytesLike): Promise<string>;
    signTypedData(types: TypedDataField[], message: any, accountAddress: string): Promise<string>;
    protected switchWalletProvider(providerLike: WalletProviderLike): void;
    protected onInit(): void;
}
