import { type TypedDataDomain, type TypedDataField, type Provider, AbstractSigner, TransactionRequest, ethers } from "ethers";
import { TurnkeyClient, TurnkeyActivityError, TurnkeyRequestError, type TSignature, type TurnkeyApiTypes } from "@turnkey/http";
import type { TurnkeyBrowserClient } from "@turnkey/sdk-browser";
import type { TurnkeyServerClient } from "@turnkey/sdk-server";
type TPayloadEncoding = TurnkeyApiTypes["v1PayloadEncoding"];
type TConfig = {
    /**
     * Turnkey client
     */
    client: TurnkeyClient | TurnkeyBrowserClient | TurnkeyServerClient;
    /**
     * Turnkey organization ID
     */
    organizationId: string;
    /**
     * Turnkey wallet account address, private key address, or private key ID
     */
    signWith: string;
};
export declare class TurnkeySigner extends AbstractSigner implements ethers.Signer {
    private readonly client;
    readonly organizationId: string;
    readonly signWith: string;
    constructor(config: TConfig, provider?: Provider);
    connect(provider: Provider): TurnkeySigner;
    getAddress(): Promise<string>;
    private _signTransactionImpl;
    private _signTransactionWithErrorWrapping;
    signTransaction(transaction: TransactionRequest): Promise<string>;
    signMessage(message: string | Uint8Array): Promise<string>;
    _signMessageWithErrorWrapping(message: string, payloadEncoding?: TPayloadEncoding): Promise<string>;
    _signMessageImpl(message: string, payloadEncoding?: TPayloadEncoding): Promise<string>;
    signTypedData(domain: TypedDataDomain, types: Record<string, Array<TypedDataField>>, value: Record<string, any>): Promise<string>;
    _signTypedData: (domain: TypedDataDomain, types: Record<string, Array<TypedDataField>>, value: Record<string, any>) => Promise<string>;
}
export declare function serializeSignature(signature: TSignature): string;
export { TurnkeyActivityError, TurnkeyRequestError };
//# sourceMappingURL=index.d.ts.map