import { ethers } from 'ethers';
import { TurnkeyConfig } from '../turnkeyClient.js';
/**
 * Turnkey signer for EVM transactions
 * Uses Turnkey's secure enclaves to sign transactions without exposing private keys
 * This is a custom ethers v5-compatible Signer that uses Turnkey SDK directly
 * Uses composition to access Turnkey functionality while extending ethers.Signer
 *
 * @example
 * ```typescript
 * const config: TurnkeyConfig = {
 *   organizationId: 'your-org-id',
 *   apiPublicKey: process.env.TURNKEY_API_PUBLIC_KEY,
 *   apiPrivateKey: process.env.TURNKEY_API_PRIVATE_KEY,
 *   privateKeyId: 'your-private-key-id',
 *   publicKey: '0x...', // Ethereum address
 * };
 *
 * const provider = new ethers.providers.JsonRpcProvider('...');
 * const signer = new TurnkeyEvmSigner(config, provider);
 *
 * // Use with MultiProvider
 * multiProvider.setSigner('ethereum', signer);
 * ```
 */
export declare class TurnkeyEvmSigner extends ethers.Signer {
    private readonly manager;
    readonly address: string;
    readonly provider: ethers.providers.Provider | undefined;
    constructor(config: TurnkeyConfig, provider?: ethers.providers.Provider);
    /**
     * Health check - delegates to manager
     */
    healthCheck(): Promise<boolean>;
    /**
     * Get an ethers Signer connected to the provided provider
     * This returns a new instance with the provider connected
     */
    getSigner(provider: ethers.providers.Provider): Promise<ethers.Signer>;
    /**
     * Connect this signer to a provider (creates new instance with proper configuration)
     */
    connect(provider: ethers.providers.Provider): TurnkeyEvmSigner;
    /**
     * Get the address of this signer
     */
    getAddress(): Promise<string>;
    /**
     * Sign a transaction using Turnkey
     */
    signTransaction(transaction: ethers.providers.TransactionRequest): Promise<string>;
    /**
     * Sign a message using Turnkey
     */
    signMessage(message: string | ethers.utils.Bytes): Promise<string>;
    /**
     * Populate a transaction with default values (nonce, gas, etc.)
     */
    populateTransaction(transaction: ethers.providers.TransactionRequest): Promise<ethers.providers.TransactionRequest>;
}
//# sourceMappingURL=turnkey.d.ts.map