import { type Account, type Address, type Client, type Transport } from 'viem';
import { type ChainEIP712 } from 'viem/zksync';
import type { CustomPaymasterHandler } from './types/customPaymaster.js';
import { type AbstractWalletActions } from './walletActions.js';
/**
 * Parameters for creating an AbstractClient instance.
 * @interface CreateAbstractClientParameters
 */
interface CreateAbstractClientParameters {
    /**
     * The account used for signing AGW transactions.
     * @type {Account}
     */
    signer: Account;
    /**
     * The chain configuration supporting EIP-712.
     * @type {ChainEIP712}
     */
    chain: ChainEIP712;
    /**
     * Optional transport layer for network communication.
     * If not provided, a default HTTP transport will be used.
     * @type {Transport}
     * @optional
     */
    transport?: Transport;
    /**
     * The address of the smart account.
     * @type {Address}
     * @optional
     */
    address?: Address;
    /**
     * Whether the client is a Privy cross-app client.
     * @type {boolean}
     * @optional
     */
    isPrivyCrossApp?: boolean;
    /**
     * The transport layer for the underlying public client.
     * @type {Transport}
     * @optional
     */
    publicTransport?: Transport;
    /**
     * The custom paymaster handler.
     * @type {CustomPaymasterHandler}
     * @optional
     */
    customPaymasterHandler?: CustomPaymasterHandler;
}
type AbstractClientActions = AbstractWalletActions<ChainEIP712, Account>;
export type AbstractClient = Client<Transport, ChainEIP712, Account> & AbstractClientActions;
export declare function createAbstractClient({ signer, chain, transport, address, isPrivyCrossApp, publicTransport, customPaymasterHandler, }: CreateAbstractClientParameters): Promise<AbstractClient>;
export {};
//# sourceMappingURL=abstractClient.d.ts.map