import { SigningKey, TransactionLike, TypedDataDomain, TypedDataField, JsonRpcApiProvider as EthersJsonRpcApiProvider, JsonRpcSigner as EthersJsonRpcSigner, Provider, TransactionRequest, TransactionResponse, Wallet as EthersWallet, ProgressCallback } from "ethers";
export declare class Wallet extends EthersWallet {
    static fromEncryptedJson(json: string, password: string | Uint8Array, progress?: ProgressCallback): Promise<Wallet>;
    static fromEncryptedJsonSync(json: string, password: string | Uint8Array): Wallet;
    static fromEncryptedJsonList(json: string, password: string | Uint8Array, progress?: ProgressCallback): Promise<Wallet[]>;
    static fromEncryptedJsonListSync(json: string, password: string | Uint8Array): Wallet[];
    private klaytnAddr;
    constructor(addressOrPrivateKey: string | SigningKey, privateKeyOrProvider?: SigningKey | Provider | string, provider?: Provider);
    getAddress(legacy?: boolean): Promise<string>;
    getEtherAddress(): Promise<string>;
    decodeTxFromRLP(rlp: string): any;
    isDecoupled(): Promise<boolean>;
    populateTransaction(transaction: TransactionRequest): Promise<TransactionLike<string>>;
    private _populateTransaction;
    signTransaction(transaction: TransactionRequest): Promise<string>;
    signTransactionAsFeePayer(transactionOrRLP: TransactionRequest | string): Promise<string>;
    sendTransaction(transaction: TransactionRequest): Promise<TransactionResponse>;
    sendTransactionAsFeePayer(transactionOrRLP: TransactionRequest | string): Promise<TransactionResponse>;
    _sendKlaytnRawTransaction(signedTx: string): Promise<TransactionResponse>;
}
export declare class JsonRpcSigner extends EthersJsonRpcSigner {
    constructor(provider: EthersJsonRpcApiProvider, address: string);
    isKaikas(): boolean;
    connect(_provider: Provider): EthersJsonRpcSigner;
    connectUnchecked(): EthersJsonRpcSigner;
    signMessage(message: string | Uint8Array): Promise<string>;
    _legacySignMessage(message: Uint8Array | string): Promise<string>;
    _signTypedData(domain: TypedDataDomain, types: Record<string, Array<TypedDataField>>, value: Record<string, any>): Promise<string>;
    populateTransaction(transaction: TransactionRequest): Promise<TransactionLike<string>>;
    signTransaction(transaction: TransactionRequest): Promise<string>;
    sendTransaction(transaction: TransactionRequest): Promise<TransactionResponse>;
    sendUncheckedTransaction(transaction: TransactionRequest): Promise<string>;
    unlock(password: string): Promise<boolean>;
}
