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 "./decorators/abstract.js";
/**
 * Parameters for creating an AbstractClient instance.
 * @interface CreateAbstractClientParameters
 */
export 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<chain extends ChainEIP712 | undefined = ChainEIP712 | undefined, account extends Account | undefined = Account | undefined> = AbstractWalletActions<chain, account>;
export type AbstractClient = Client<Transport, ChainEIP712, Account> & AbstractClientActions<ChainEIP712, Account>;
export declare function createAbstractClient({ signer, chain, transport, address, isPrivyCrossApp, publicTransport, customPaymasterHandler, }: CreateAbstractClientParameters): Promise<AbstractClient>;
export {};
//# sourceMappingURL=abstractClient.d.ts.map