import { encodeAbiParameters, type Address, type Transport, type Client, type EncodeFunctionDataParameters, type Chain, type Hex } from 'viem'; import { type SmartContractAccount, type GetAccountParameter, type SendUserOperationResult, type GetEntryPointFromAccount, type UserOperationOverridesParameter, type UserOperationContext, type GetContextParameter } from '@alchemy/aa-core'; import { type Plugin } from '../types.js'; import { type FunctionReference } from '../../account-loupe/types.js'; type ExecutionActions = GetEntryPointFromAccount> = { executeWithSessionKey: (args: Pick, 'args'> & UserOperationOverridesParameter & GetAccountParameter & GetContextParameter) => Promise>; addSessionKey: (args: Pick, 'args'> & UserOperationOverridesParameter & GetAccountParameter & GetContextParameter) => Promise>; removeSessionKey: (args: Pick, 'args'> & UserOperationOverridesParameter & GetAccountParameter & GetContextParameter) => Promise>; rotateSessionKey: (args: Pick, 'args'> & UserOperationOverridesParameter & GetAccountParameter & GetContextParameter) => Promise>; updateKeyPermissions: (args: Pick, 'args'> & UserOperationOverridesParameter & GetAccountParameter & GetContextParameter) => Promise>; }; type InstallArgs = [ { type: 'address[]'; name: 'initialKeys'; }, { type: 'bytes32[]'; name: 'tags'; }, { type: 'bytes[][]'; name: 'initialPermissions'; } ]; export type InstallSessionKeyPluginParams = { args: Parameters>[1]; pluginAddress?: Address; dependencyOverrides?: FunctionReference[]; }; type ManagementActions = GetEntryPointFromAccount> = { installSessionKeyPlugin: (args: UserOperationOverridesParameter & InstallSessionKeyPluginParams & GetAccountParameter & GetContextParameter) => Promise>; }; type ReadAndEncodeActions = { encodeExecuteWithSessionKey: (args: Pick, 'args'>) => Hex; encodeAddSessionKey: (args: Pick, 'args'>) => Hex; encodeRemoveSessionKey: (args: Pick, 'args'>) => Hex; encodeRotateSessionKey: (args: Pick, 'args'>) => Hex; encodeUpdateKeyPermissions: (args: Pick, 'args'>) => Hex; }; export type SessionKeyPluginActions = ExecutionActions & ManagementActions & ReadAndEncodeActions; export declare const SessionKeyPlugin: Plugin; export declare const sessionKeyPluginActions: (client: Client) => SessionKeyPluginActions; export declare const SessionKeyPluginExecutionFunctionAbi: readonly [{ readonly stateMutability: "nonpayable"; readonly type: "function"; readonly inputs: readonly [{ readonly name: "calls"; readonly internalType: "struct Call[]"; readonly type: "tuple[]"; readonly components: readonly [{ readonly name: "target"; readonly internalType: "address"; readonly type: "address"; }, { readonly name: "value"; readonly internalType: "uint256"; readonly type: "uint256"; }, { readonly name: "data"; readonly internalType: "bytes"; readonly type: "bytes"; }]; }, { readonly name: "sessionKey"; readonly internalType: "address"; readonly type: "address"; }]; readonly name: "executeWithSessionKey"; readonly outputs: readonly [{ readonly name: ""; readonly internalType: "bytes[]"; readonly type: "bytes[]"; }]; }, { readonly stateMutability: "nonpayable"; readonly type: "function"; readonly inputs: readonly [{ readonly name: "sessionKey"; readonly internalType: "address"; readonly type: "address"; }, { readonly name: "tag"; readonly internalType: "bytes32"; readonly type: "bytes32"; }, { readonly name: "permissionUpdates"; readonly internalType: "bytes[]"; readonly type: "bytes[]"; }]; readonly name: "addSessionKey"; readonly outputs: readonly []; }, { readonly stateMutability: "nonpayable"; readonly type: "function"; readonly inputs: readonly [{ readonly name: "sessionKey"; readonly internalType: "address"; readonly type: "address"; }, { readonly name: "predecessor"; readonly internalType: "bytes32"; readonly type: "bytes32"; }]; readonly name: "removeSessionKey"; readonly outputs: readonly []; }, { readonly stateMutability: "nonpayable"; readonly type: "function"; readonly inputs: readonly [{ readonly name: "oldSessionKey"; readonly internalType: "address"; readonly type: "address"; }, { readonly name: "predecessor"; readonly internalType: "bytes32"; readonly type: "bytes32"; }, { readonly name: "newSessionKey"; readonly internalType: "address"; readonly type: "address"; }]; readonly name: "rotateSessionKey"; readonly outputs: readonly []; }, { readonly stateMutability: "nonpayable"; readonly type: "function"; readonly inputs: readonly [{ readonly name: "sessionKey"; readonly internalType: "address"; readonly type: "address"; }, { readonly name: "updates"; readonly internalType: "bytes[]"; readonly type: "bytes[]"; }]; readonly name: "updateKeyPermissions"; readonly outputs: readonly []; }]; export declare const SessionKeyPluginAbi: readonly [{ readonly stateMutability: "nonpayable"; readonly type: "function"; readonly inputs: readonly [{ readonly name: "sessionKey"; readonly internalType: "address"; readonly type: "address"; }, { readonly name: "tag"; readonly internalType: "bytes32"; readonly type: "bytes32"; }, { readonly name: "permissionUpdates"; readonly internalType: "bytes[]"; readonly type: "bytes[]"; }]; readonly name: "addSessionKey"; readonly outputs: readonly []; }, { readonly stateMutability: "nonpayable"; readonly type: "function"; readonly inputs: readonly [{ readonly name: "calls"; readonly internalType: "struct Call[]"; readonly type: "tuple[]"; readonly components: readonly [{ readonly name: "target"; readonly internalType: "address"; readonly type: "address"; }, { readonly name: "value"; readonly internalType: "uint256"; readonly type: "uint256"; }, { readonly name: "data"; readonly internalType: "bytes"; readonly type: "bytes"; }]; }, { readonly name: "sessionKey"; readonly internalType: "address"; readonly type: "address"; }]; readonly name: "executeWithSessionKey"; readonly outputs: readonly [{ readonly name: ""; readonly internalType: "bytes[]"; readonly type: "bytes[]"; }]; }, { readonly stateMutability: "view"; readonly type: "function"; readonly inputs: readonly [{ readonly name: "account"; readonly internalType: "address"; readonly type: "address"; }, { readonly name: "sessionKey"; readonly internalType: "address"; readonly type: "address"; }]; readonly name: "findPredecessor"; readonly outputs: readonly [{ readonly name: ""; readonly internalType: "bytes32"; readonly type: "bytes32"; }]; }, { readonly stateMutability: "view"; readonly type: "function"; readonly inputs: readonly [{ readonly name: "account"; readonly internalType: "address"; readonly type: "address"; }, { readonly name: "sessionKey"; readonly internalType: "address"; readonly type: "address"; }, { readonly name: "contractAddress"; readonly internalType: "address"; readonly type: "address"; }]; readonly name: "getAccessControlEntry"; readonly outputs: readonly [{ readonly name: "isOnList"; readonly internalType: "bool"; readonly type: "bool"; }, { readonly name: "checkSelectors"; readonly internalType: "bool"; readonly type: "bool"; }]; }, { readonly stateMutability: "view"; readonly type: "function"; readonly inputs: readonly [{ readonly name: "account"; readonly internalType: "address"; readonly type: "address"; }, { readonly name: "sessionKey"; readonly internalType: "address"; readonly type: "address"; }]; readonly name: "getAccessControlType"; readonly outputs: readonly [{ readonly name: ""; readonly internalType: "enum ISessionKeyPlugin.ContractAccessControlType"; readonly type: "uint8"; }]; }, { readonly stateMutability: "view"; readonly type: "function"; readonly inputs: readonly [{ readonly name: "account"; readonly internalType: "address"; readonly type: "address"; }, { readonly name: "sessionKey"; readonly internalType: "address"; readonly type: "address"; }, { readonly name: "token"; readonly internalType: "address"; readonly type: "address"; }]; readonly name: "getERC20SpendLimitInfo"; readonly outputs: readonly [{ readonly name: ""; readonly internalType: "struct ISessionKeyPlugin.SpendLimitInfo"; readonly type: "tuple"; readonly components: readonly [{ readonly name: "hasLimit"; readonly internalType: "bool"; readonly type: "bool"; }, { readonly name: "limit"; readonly internalType: "uint256"; readonly type: "uint256"; }, { readonly name: "limitUsed"; readonly internalType: "uint256"; readonly type: "uint256"; }, { readonly name: "refreshInterval"; readonly internalType: "uint48"; readonly type: "uint48"; }, { readonly name: "lastUsedTime"; readonly internalType: "uint48"; readonly type: "uint48"; }]; }]; }, { readonly stateMutability: "view"; readonly type: "function"; readonly inputs: readonly [{ readonly name: "account"; readonly internalType: "address"; readonly type: "address"; }, { readonly name: "sessionKey"; readonly internalType: "address"; readonly type: "address"; }]; readonly name: "getGasSpendLimit"; readonly outputs: readonly [{ readonly name: "info"; readonly internalType: "struct ISessionKeyPlugin.SpendLimitInfo"; readonly type: "tuple"; readonly components: readonly [{ readonly name: "hasLimit"; readonly internalType: "bool"; readonly type: "bool"; }, { readonly name: "limit"; readonly internalType: "uint256"; readonly type: "uint256"; }, { readonly name: "limitUsed"; readonly internalType: "uint256"; readonly type: "uint256"; }, { readonly name: "refreshInterval"; readonly internalType: "uint48"; readonly type: "uint48"; }, { readonly name: "lastUsedTime"; readonly internalType: "uint48"; readonly type: "uint48"; }]; }, { readonly name: "shouldReset"; readonly internalType: "bool"; readonly type: "bool"; }]; }, { readonly stateMutability: "view"; readonly type: "function"; readonly inputs: readonly [{ readonly name: "account"; readonly internalType: "address"; readonly type: "address"; }, { readonly name: "sessionKey"; readonly internalType: "address"; readonly type: "address"; }]; readonly name: "getKeyTimeRange"; readonly outputs: readonly [{ readonly name: "validAfter"; readonly internalType: "uint48"; readonly type: "uint48"; }, { readonly name: "validUntil"; readonly internalType: "uint48"; readonly type: "uint48"; }]; }, { readonly stateMutability: "view"; readonly type: "function"; readonly inputs: readonly [{ readonly name: "account"; readonly internalType: "address"; readonly type: "address"; }, { readonly name: "sessionKey"; readonly internalType: "address"; readonly type: "address"; }]; readonly name: "getNativeTokenSpendLimitInfo"; readonly outputs: readonly [{ readonly name: "info"; readonly internalType: "struct ISessionKeyPlugin.SpendLimitInfo"; readonly type: "tuple"; readonly components: readonly [{ readonly name: "hasLimit"; readonly internalType: "bool"; readonly type: "bool"; }, { readonly name: "limit"; readonly internalType: "uint256"; readonly type: "uint256"; }, { readonly name: "limitUsed"; readonly internalType: "uint256"; readonly type: "uint256"; }, { readonly name: "refreshInterval"; readonly internalType: "uint48"; readonly type: "uint48"; }, { readonly name: "lastUsedTime"; readonly internalType: "uint48"; readonly type: "uint48"; }]; }]; }, { readonly stateMutability: "view"; readonly type: "function"; readonly inputs: readonly [{ readonly name: "account"; readonly internalType: "address"; readonly type: "address"; }, { readonly name: "sessionKey"; readonly internalType: "address"; readonly type: "address"; }]; readonly name: "getRequiredPaymaster"; readonly outputs: readonly [{ readonly name: ""; readonly internalType: "address"; readonly type: "address"; }]; }, { readonly stateMutability: "view"; readonly type: "function"; readonly inputs: readonly [{ readonly name: "account"; readonly internalType: "address"; readonly type: "address"; }, { readonly name: "sessionKey"; readonly internalType: "address"; readonly type: "address"; }, { readonly name: "contractAddress"; readonly internalType: "address"; readonly type: "address"; }, { readonly name: "selector"; readonly internalType: "bytes4"; readonly type: "bytes4"; }]; readonly name: "isSelectorOnAccessControlList"; readonly outputs: readonly [{ readonly name: "isOnList"; readonly internalType: "bool"; readonly type: "bool"; }]; }, { readonly stateMutability: "view"; readonly type: "function"; readonly inputs: readonly [{ readonly name: "account"; readonly internalType: "address"; readonly type: "address"; }, { readonly name: "sessionKey"; readonly internalType: "address"; readonly type: "address"; }]; readonly name: "isSessionKeyOf"; readonly outputs: readonly [{ readonly name: ""; readonly internalType: "bool"; readonly type: "bool"; }]; }, { readonly stateMutability: "nonpayable"; readonly type: "function"; readonly inputs: readonly [{ readonly name: "data"; readonly internalType: "bytes"; readonly type: "bytes"; }]; readonly name: "onInstall"; readonly outputs: readonly []; }, { readonly stateMutability: "nonpayable"; readonly type: "function"; readonly inputs: readonly [{ readonly name: ""; readonly internalType: "bytes"; readonly type: "bytes"; }]; readonly name: "onUninstall"; readonly outputs: readonly []; }, { readonly stateMutability: "pure"; readonly type: "function"; readonly inputs: readonly []; readonly name: "pluginManifest"; readonly outputs: readonly [{ readonly name: ""; readonly internalType: "struct PluginManifest"; readonly type: "tuple"; readonly components: readonly [{ readonly name: "interfaceIds"; readonly internalType: "bytes4[]"; readonly type: "bytes4[]"; }, { readonly name: "dependencyInterfaceIds"; readonly internalType: "bytes4[]"; readonly type: "bytes4[]"; }, { readonly name: "executionFunctions"; readonly internalType: "bytes4[]"; readonly type: "bytes4[]"; }, { readonly name: "permittedExecutionSelectors"; readonly internalType: "bytes4[]"; readonly type: "bytes4[]"; }, { readonly name: "permitAnyExternalAddress"; readonly internalType: "bool"; readonly type: "bool"; }, { readonly name: "canSpendNativeToken"; readonly internalType: "bool"; readonly type: "bool"; }, { readonly name: "permittedExternalCalls"; readonly internalType: "struct ManifestExternalCallPermission[]"; readonly type: "tuple[]"; readonly components: readonly [{ readonly name: "externalAddress"; readonly internalType: "address"; readonly type: "address"; }, { readonly name: "permitAnySelector"; readonly internalType: "bool"; readonly type: "bool"; }, { readonly name: "selectors"; readonly internalType: "bytes4[]"; readonly type: "bytes4[]"; }]; }, { readonly name: "userOpValidationFunctions"; readonly internalType: "struct ManifestAssociatedFunction[]"; readonly type: "tuple[]"; readonly components: readonly [{ readonly name: "executionSelector"; readonly internalType: "bytes4"; readonly type: "bytes4"; }, { readonly name: "associatedFunction"; readonly internalType: "struct ManifestFunction"; readonly type: "tuple"; readonly components: readonly [{ readonly name: "functionType"; readonly internalType: "enum ManifestAssociatedFunctionType"; readonly type: "uint8"; }, { readonly name: "functionId"; readonly internalType: "uint8"; readonly type: "uint8"; }, { readonly name: "dependencyIndex"; readonly internalType: "uint256"; readonly type: "uint256"; }]; }]; }, { readonly name: "runtimeValidationFunctions"; readonly internalType: "struct ManifestAssociatedFunction[]"; readonly type: "tuple[]"; readonly components: readonly [{ readonly name: "executionSelector"; readonly internalType: "bytes4"; readonly type: "bytes4"; }, { readonly name: "associatedFunction"; readonly internalType: "struct ManifestFunction"; readonly type: "tuple"; readonly components: readonly [{ readonly name: "functionType"; readonly internalType: "enum ManifestAssociatedFunctionType"; readonly type: "uint8"; }, { readonly name: "functionId"; readonly internalType: "uint8"; readonly type: "uint8"; }, { readonly name: "dependencyIndex"; readonly internalType: "uint256"; readonly type: "uint256"; }]; }]; }, { readonly name: "preUserOpValidationHooks"; readonly internalType: "struct ManifestAssociatedFunction[]"; readonly type: "tuple[]"; readonly components: readonly [{ readonly name: "executionSelector"; readonly internalType: "bytes4"; readonly type: "bytes4"; }, { readonly name: "associatedFunction"; readonly internalType: "struct ManifestFunction"; readonly type: "tuple"; readonly components: readonly [{ readonly name: "functionType"; readonly internalType: "enum ManifestAssociatedFunctionType"; readonly type: "uint8"; }, { readonly name: "functionId"; readonly internalType: "uint8"; readonly type: "uint8"; }, { readonly name: "dependencyIndex"; readonly internalType: "uint256"; readonly type: "uint256"; }]; }]; }, { readonly name: "preRuntimeValidationHooks"; readonly internalType: "struct ManifestAssociatedFunction[]"; readonly type: "tuple[]"; readonly components: readonly [{ readonly name: "executionSelector"; readonly internalType: "bytes4"; readonly type: "bytes4"; }, { readonly name: "associatedFunction"; readonly internalType: "struct ManifestFunction"; readonly type: "tuple"; readonly components: readonly [{ readonly name: "functionType"; readonly internalType: "enum ManifestAssociatedFunctionType"; readonly type: "uint8"; }, { readonly name: "functionId"; readonly internalType: "uint8"; readonly type: "uint8"; }, { readonly name: "dependencyIndex"; readonly internalType: "uint256"; readonly type: "uint256"; }]; }]; }, { readonly name: "executionHooks"; readonly internalType: "struct ManifestExecutionHook[]"; readonly type: "tuple[]"; readonly components: readonly [{ readonly name: "executionSelector"; readonly internalType: "bytes4"; readonly type: "bytes4"; }, { readonly name: "preExecHook"; readonly internalType: "struct ManifestFunction"; readonly type: "tuple"; readonly components: readonly [{ readonly name: "functionType"; readonly internalType: "enum ManifestAssociatedFunctionType"; readonly type: "uint8"; }, { readonly name: "functionId"; readonly internalType: "uint8"; readonly type: "uint8"; }, { readonly name: "dependencyIndex"; readonly internalType: "uint256"; readonly type: "uint256"; }]; }, { readonly name: "postExecHook"; readonly internalType: "struct ManifestFunction"; readonly type: "tuple"; readonly components: readonly [{ readonly name: "functionType"; readonly internalType: "enum ManifestAssociatedFunctionType"; readonly type: "uint8"; }, { readonly name: "functionId"; readonly internalType: "uint8"; readonly type: "uint8"; }, { readonly name: "dependencyIndex"; readonly internalType: "uint256"; readonly type: "uint256"; }]; }]; }]; }]; }, { readonly stateMutability: "pure"; readonly type: "function"; readonly inputs: readonly []; readonly name: "pluginMetadata"; readonly outputs: readonly [{ readonly name: ""; readonly internalType: "struct PluginMetadata"; readonly type: "tuple"; readonly components: readonly [{ readonly name: "name"; readonly internalType: "string"; readonly type: "string"; }, { readonly name: "version"; readonly internalType: "string"; readonly type: "string"; }, { readonly name: "author"; readonly internalType: "string"; readonly type: "string"; }, { readonly name: "permissionDescriptors"; readonly internalType: "struct SelectorPermission[]"; readonly type: "tuple[]"; readonly components: readonly [{ readonly name: "functionSelector"; readonly internalType: "bytes4"; readonly type: "bytes4"; }, { readonly name: "permissionDescription"; readonly internalType: "string"; readonly type: "string"; }]; }]; }]; }, { readonly stateMutability: "nonpayable"; readonly type: "function"; readonly inputs: readonly [{ readonly name: "functionId"; readonly internalType: "uint8"; readonly type: "uint8"; }, { readonly name: "preExecHookData"; readonly internalType: "bytes"; readonly type: "bytes"; }]; readonly name: "postExecutionHook"; readonly outputs: readonly []; }, { readonly stateMutability: "nonpayable"; readonly type: "function"; readonly inputs: readonly [{ readonly name: "functionId"; readonly internalType: "uint8"; readonly type: "uint8"; }, { readonly name: "sender"; readonly internalType: "address"; readonly type: "address"; }, { readonly name: "value"; readonly internalType: "uint256"; readonly type: "uint256"; }, { readonly name: "data"; readonly internalType: "bytes"; readonly type: "bytes"; }]; readonly name: "preExecutionHook"; readonly outputs: readonly [{ readonly name: ""; readonly internalType: "bytes"; readonly type: "bytes"; }]; }, { readonly stateMutability: "nonpayable"; readonly type: "function"; readonly inputs: readonly [{ readonly name: "functionId"; readonly internalType: "uint8"; readonly type: "uint8"; }, { readonly name: "sender"; readonly internalType: "address"; readonly type: "address"; }, { readonly name: "value"; readonly internalType: "uint256"; readonly type: "uint256"; }, { readonly name: "data"; readonly internalType: "bytes"; readonly type: "bytes"; }]; readonly name: "preRuntimeValidationHook"; readonly outputs: readonly []; }, { readonly stateMutability: "nonpayable"; readonly type: "function"; readonly inputs: readonly [{ readonly name: "functionId"; readonly internalType: "uint8"; readonly type: "uint8"; }, { readonly name: "userOp"; readonly internalType: "struct UserOperation"; readonly type: "tuple"; readonly components: readonly [{ readonly name: "sender"; readonly internalType: "address"; readonly type: "address"; }, { readonly name: "nonce"; readonly internalType: "uint256"; readonly type: "uint256"; }, { readonly name: "initCode"; readonly internalType: "bytes"; readonly type: "bytes"; }, { readonly name: "callData"; readonly internalType: "bytes"; readonly type: "bytes"; }, { readonly name: "callGasLimit"; readonly internalType: "uint256"; readonly type: "uint256"; }, { readonly name: "verificationGasLimit"; readonly internalType: "uint256"; readonly type: "uint256"; }, { readonly name: "preVerificationGas"; readonly internalType: "uint256"; readonly type: "uint256"; }, { readonly name: "maxFeePerGas"; readonly internalType: "uint256"; readonly type: "uint256"; }, { readonly name: "maxPriorityFeePerGas"; readonly internalType: "uint256"; readonly type: "uint256"; }, { readonly name: "paymasterAndData"; readonly internalType: "bytes"; readonly type: "bytes"; }, { readonly name: "signature"; readonly internalType: "bytes"; readonly type: "bytes"; }]; }, { readonly name: "userOpHash"; readonly internalType: "bytes32"; readonly type: "bytes32"; }]; readonly name: "preUserOpValidationHook"; readonly outputs: readonly [{ readonly name: ""; readonly internalType: "uint256"; readonly type: "uint256"; }]; }, { readonly stateMutability: "nonpayable"; readonly type: "function"; readonly inputs: readonly [{ readonly name: "sessionKey"; readonly internalType: "address"; readonly type: "address"; }, { readonly name: "predecessor"; readonly internalType: "bytes32"; readonly type: "bytes32"; }]; readonly name: "removeSessionKey"; readonly outputs: readonly []; }, { readonly stateMutability: "nonpayable"; readonly type: "function"; readonly inputs: readonly [{ readonly name: "account"; readonly internalType: "address"; readonly type: "address"; }, { readonly name: "sessionKey"; readonly internalType: "address"; readonly type: "address"; }]; readonly name: "resetSessionKeyGasLimitTimestamp"; readonly outputs: readonly []; }, { readonly stateMutability: "nonpayable"; readonly type: "function"; readonly inputs: readonly [{ readonly name: "oldSessionKey"; readonly internalType: "address"; readonly type: "address"; }, { readonly name: "predecessor"; readonly internalType: "bytes32"; readonly type: "bytes32"; }, { readonly name: "newSessionKey"; readonly internalType: "address"; readonly type: "address"; }]; readonly name: "rotateSessionKey"; readonly outputs: readonly []; }, { readonly stateMutability: "nonpayable"; readonly type: "function"; readonly inputs: readonly [{ readonly name: "functionId"; readonly internalType: "uint8"; readonly type: "uint8"; }, { readonly name: "sender"; readonly internalType: "address"; readonly type: "address"; }, { readonly name: "value"; readonly internalType: "uint256"; readonly type: "uint256"; }, { readonly name: "data"; readonly internalType: "bytes"; readonly type: "bytes"; }]; readonly name: "runtimeValidationFunction"; readonly outputs: readonly []; }, { readonly stateMutability: "view"; readonly type: "function"; readonly inputs: readonly [{ readonly name: "account"; readonly internalType: "address"; readonly type: "address"; }]; readonly name: "sessionKeysOf"; readonly outputs: readonly [{ readonly name: ""; readonly internalType: "address[]"; readonly type: "address[]"; }]; }, { readonly stateMutability: "view"; readonly type: "function"; readonly inputs: readonly [{ readonly name: "interfaceId"; readonly internalType: "bytes4"; readonly type: "bytes4"; }]; readonly name: "supportsInterface"; readonly outputs: readonly [{ readonly name: ""; readonly internalType: "bool"; readonly type: "bool"; }]; }, { readonly stateMutability: "nonpayable"; readonly type: "function"; readonly inputs: readonly [{ readonly name: "sessionKey"; readonly internalType: "address"; readonly type: "address"; }, { readonly name: "updates"; readonly internalType: "bytes[]"; readonly type: "bytes[]"; }]; readonly name: "updateKeyPermissions"; readonly outputs: readonly []; }, { readonly stateMutability: "nonpayable"; readonly type: "function"; readonly inputs: readonly [{ readonly name: "functionId"; readonly internalType: "uint8"; readonly type: "uint8"; }, { readonly name: "userOp"; readonly internalType: "struct UserOperation"; readonly type: "tuple"; readonly components: readonly [{ readonly name: "sender"; readonly internalType: "address"; readonly type: "address"; }, { readonly name: "nonce"; readonly internalType: "uint256"; readonly type: "uint256"; }, { readonly name: "initCode"; readonly internalType: "bytes"; readonly type: "bytes"; }, { readonly name: "callData"; readonly internalType: "bytes"; readonly type: "bytes"; }, { readonly name: "callGasLimit"; readonly internalType: "uint256"; readonly type: "uint256"; }, { readonly name: "verificationGasLimit"; readonly internalType: "uint256"; readonly type: "uint256"; }, { readonly name: "preVerificationGas"; readonly internalType: "uint256"; readonly type: "uint256"; }, { readonly name: "maxFeePerGas"; readonly internalType: "uint256"; readonly type: "uint256"; }, { readonly name: "maxPriorityFeePerGas"; readonly internalType: "uint256"; readonly type: "uint256"; }, { readonly name: "paymasterAndData"; readonly internalType: "bytes"; readonly type: "bytes"; }, { readonly name: "signature"; readonly internalType: "bytes"; readonly type: "bytes"; }]; }, { readonly name: "userOpHash"; readonly internalType: "bytes32"; readonly type: "bytes32"; }]; readonly name: "userOpValidationFunction"; readonly outputs: readonly [{ readonly name: ""; readonly internalType: "uint256"; readonly type: "uint256"; }]; }, { readonly type: "event"; readonly anonymous: false; readonly inputs: readonly [{ readonly name: "account"; readonly internalType: "address"; readonly type: "address"; readonly indexed: true; }, { readonly name: "sessionKey"; readonly internalType: "address"; readonly type: "address"; readonly indexed: true; }, { readonly name: "updates"; readonly internalType: "bytes[]"; readonly type: "bytes[]"; readonly indexed: false; }]; readonly name: "PermissionsUpdated"; }, { readonly type: "event"; readonly anonymous: false; readonly inputs: readonly [{ readonly name: "account"; readonly internalType: "address"; readonly type: "address"; readonly indexed: true; }, { readonly name: "sessionKey"; readonly internalType: "address"; readonly type: "address"; readonly indexed: true; }, { readonly name: "tag"; readonly internalType: "bytes32"; readonly type: "bytes32"; readonly indexed: true; }]; readonly name: "SessionKeyAdded"; }, { readonly type: "event"; readonly anonymous: false; readonly inputs: readonly [{ readonly name: "account"; readonly internalType: "address"; readonly type: "address"; readonly indexed: true; }, { readonly name: "sessionKey"; readonly internalType: "address"; readonly type: "address"; readonly indexed: true; }]; readonly name: "SessionKeyRemoved"; }, { readonly type: "event"; readonly anonymous: false; readonly inputs: readonly [{ readonly name: "account"; readonly internalType: "address"; readonly type: "address"; readonly indexed: true; }, { readonly name: "oldSessionKey"; readonly internalType: "address"; readonly type: "address"; readonly indexed: true; }, { readonly name: "newSessionKey"; readonly internalType: "address"; readonly type: "address"; readonly indexed: true; }]; readonly name: "SessionKeyRotated"; }, { readonly type: "error"; readonly inputs: readonly []; readonly name: "AlreadyInitialized"; }, { readonly type: "error"; readonly inputs: readonly [{ readonly name: "account"; readonly internalType: "address"; readonly type: "address"; }, { readonly name: "sessionKey"; readonly internalType: "address"; readonly type: "address"; }, { readonly name: "token"; readonly internalType: "address"; readonly type: "address"; }]; readonly name: "ERC20SpendLimitExceeded"; }, { readonly type: "error"; readonly inputs: readonly []; readonly name: "InvalidAction"; }, { readonly type: "error"; readonly inputs: readonly [{ readonly name: "updateSelector"; readonly internalType: "bytes4"; readonly type: "bytes4"; }]; readonly name: "InvalidPermissionsUpdate"; }, { readonly type: "error"; readonly inputs: readonly [{ readonly name: "sessionKey"; readonly internalType: "address"; readonly type: "address"; }]; readonly name: "InvalidSessionKey"; }, { readonly type: "error"; readonly inputs: readonly [{ readonly name: "sessionKey"; readonly internalType: "address"; readonly type: "address"; }]; readonly name: "InvalidSignature"; }, { readonly type: "error"; readonly inputs: readonly [{ readonly name: "token"; readonly internalType: "address"; readonly type: "address"; }]; readonly name: "InvalidToken"; }, { readonly type: "error"; readonly inputs: readonly []; readonly name: "LengthMismatch"; }, { readonly type: "error"; readonly inputs: readonly [{ readonly name: "account"; readonly internalType: "address"; readonly type: "address"; }, { readonly name: "sessionKey"; readonly internalType: "address"; readonly type: "address"; }]; readonly name: "NativeTokenSpendLimitExceeded"; }, { readonly type: "error"; readonly inputs: readonly [{ readonly name: "caller"; readonly internalType: "address"; readonly type: "address"; }]; readonly name: "NotContractCaller"; }, { readonly type: "error"; readonly inputs: readonly [{ readonly name: "selector"; readonly internalType: "bytes4"; readonly type: "bytes4"; }, { readonly name: "functionId"; readonly internalType: "uint8"; readonly type: "uint8"; }]; readonly name: "NotImplemented"; }, { readonly type: "error"; readonly inputs: readonly []; readonly name: "NotInitialized"; }, { readonly type: "error"; readonly inputs: readonly [{ readonly name: "sessionKey"; readonly internalType: "address"; readonly type: "address"; }]; readonly name: "SessionKeyNotFound"; }]; export {};