import { type GetAccountParameter, type GetEntryPointFromAccount, type SendUserOperationResult, type UserOperationOverridesParameter } from "@aa-sdk/core"; import { type Address, type Chain, type Client, type Hex, type Transport } from "viem"; import type { HookConfig, ValidationConfig } from "../common/types.js"; import { type ModularAccountsV2 } from "../../account/common/modularAccountV2Base.js"; export type InstallValidationParams = { validationConfig: ValidationConfig; selectors: Hex[]; installData: Hex; hooks: { hookConfig: HookConfig; initData: Hex; }[]; } & UserOperationOverridesParameter> & GetAccountParameter; export type UninstallValidationParams = { moduleAddress: Address; entityId: number; uninstallData: Hex; hookUninstallDatas: Hex[]; } & UserOperationOverridesParameter> & GetAccountParameter; export type InstallValidationActions = { installValidation: (args: InstallValidationParams) => Promise; encodeInstallValidation: (args: InstallValidationParams) => Promise; uninstallValidation: (args: UninstallValidationParams) => Promise; encodeUninstallValidation: (args: UninstallValidationParams) => Promise; }; /** * Provides validation installation and uninstallation functionalities for a MA v2 client, ensuring compatibility with `SmartAccountClient`. * * @example * ```ts * import { createModularAccountV2Client, installValidationActions, getDefaultSingleSignerValidationModuleAddress, SingleSignerValidationModule } from "@account-kit/smart-contracts"; * import { Address } from "viem"; * * const client = (await createModularAccountV2Client({ ... })).extend(installValidationActions); * const sessionKeyAddress: Address = "0x1234"; * const sessionKeyEntityId: number = 1; * * await client.installValidation({ * validationConfig: { * moduleAddress: getDefaultSingleSignerValidationModuleAddress( * client.chain * ), * entityId: sessionKeyEntityId, * isGlobal: true, * isSignatureValidation: false, * isUserOpValidation: true, * }, * selectors: [], * installData: SingleSignerValidationModule.encodeOnInstallData({ * entityId: sessionKeyEntityId, * signer: sessionKeyAddress, * }), * hooks: [], * }); * * await client.uninstallValidation({ * moduleAddress: sessionKeyAddress, * entityId: sessionKeyEntityId, * uninstallData: SingleSignerValidationModule.encodeOnUninstallData({ * entityId: sessionKeyEntityId, * }), * hookUninstallDatas: [], * }); * * ``` * * @param {object} client - The client instance which provides account and sendUserOperation functionality. * @returns {object} - An object containing two methods, `installValidation` and `uninstallValidation`. */ export declare function installValidationActions(client: Client): InstallValidationActions;