import { IBundler } from "@abstraxn/bundler";
import { BaseValidationModule } from "@abstraxn/modules";
import { IPaymaster } from "@abstraxn/paymaster";
import { JsonRpcProvider } from "@ethersproject/providers";
import { Signer } from "ethers";
export interface AbstraxnSmartAccountConfig {
    signer?: Signer;
    chainId: number;
    provider?: JsonRpcProvider;
    defaultValidationModule: BaseValidationModule;
    bundler?: IBundler;
    paymaster?: IPaymaster;
    index?: number;
    entryPointAddress?: string;
    implementationAddress?: string;
    smartFactoryAddress?: string;
    proxyCreationCode?: string;
    fallbackHandlerAddress?: string;
}
export interface VerificationGasLimits {
    /**
     * per userOp gasLimit for validateUserOp()
     * called from entrypoint to the account
     * should consider max execution
     */
    validateUserOpGas: number;
    /**
     * per userOp gasLimit for validatePaymasterUserOp()
     * called from entrypoint to the paymaster
     * should consider max execution
     */
    validatePaymasterUserOpGas: number;
    /**
     * per userOp gasLimit for postOp()
     * called from entrypoint to the paymaster
     * should consider max execution for paymaster/s this account may use
     */
    postOpGas: number;
}
