const SessionKeyPluginAbi: readonly [
{
inputs: readonly [
{
internalType: "address";
name: "sessionKey";
type: "address";
},
{
internalType: "bytes32";
name: "tag";
type: "bytes32";
},
{
internalType: "bytes[]";
name: "permissionUpdates";
type: "bytes[]";
},
];
name: "addSessionKey";
outputs: readonly [];
stateMutability: "nonpayable";
type: "function";
},
{
inputs: readonly [
{
components: readonly [
{
internalType: "address";
name: "target";
type: "address";
},
{
internalType: "uint256";
name: "value";
type: "uint256";
},
{
internalType: "bytes";
name: "data";
type: "bytes";
},
];
internalType: "struct Call[]";
name: "calls";
type: "tuple[]";
},
{
internalType: "address";
name: "sessionKey";
type: "address";
},
];
name: "executeWithSessionKey";
outputs: readonly [
{
internalType: "bytes[]";
name: "";
type: "bytes[]";
},
];
stateMutability: "nonpayable";
type: "function";
},
{
inputs: readonly [
{
internalType: "address";
name: "account";
type: "address";
},
{
internalType: "address";
name: "sessionKey";
type: "address";
},
];
name: "findPredecessor";
outputs: readonly [
{
internalType: "bytes32";
name: "";
type: "bytes32";
},
];
stateMutability: "view";
type: "function";
},
{
inputs: readonly [
{
internalType: "address";
name: "account";
type: "address";
},
{
internalType: "address";
name: "sessionKey";
type: "address";
},
{
internalType: "address";
name: "contractAddress";
type: "address";
},
];
name: "getAccessControlEntry";
outputs: readonly [
{
internalType: "bool";
name: "isOnList";
type: "bool";
},
{
internalType: "bool";
name: "checkSelectors";
type: "bool";
},
];
stateMutability: "view";
type: "function";
},
{
inputs: readonly [
{
internalType: "address";
name: "account";
type: "address";
},
{
internalType: "address";
name: "sessionKey";
type: "address";
},
];
name: "getAccessControlType";
outputs: readonly [
{
internalType: "enum ISessionKeyPlugin.ContractAccessControlType";
name: "";
type: "uint8";
},
];
stateMutability: "view";
type: "function";
},
{
inputs: readonly [
{
internalType: "address";
name: "account";
type: "address";
},
{
internalType: "address";
name: "sessionKey";
type: "address";
},
{
internalType: "address";
name: "token";
type: "address";
},
];
name: "getERC20SpendLimitInfo";
outputs: readonly [
{
components: readonly [
{
internalType: "bool";
name: "hasLimit";
type: "bool";
},
{
internalType: "uint256";
name: "limit";
type: "uint256";
},
{
internalType: "uint256";
name: "limitUsed";
type: "uint256";
},
{
internalType: "uint48";
name: "refreshInterval";
type: "uint48";
},
{
internalType: "uint48";
name: "lastUsedTime";
type: "uint48";
},
];
internalType: "struct ISessionKeyPlugin.SpendLimitInfo";
name: "";
type: "tuple";
},
];
stateMutability: "view";
type: "function";
},
{
inputs: readonly [
{
internalType: "address";
name: "account";
type: "address";
},
{
internalType: "address";
name: "sessionKey";
type: "address";
},
];
name: "getGasSpendLimit";
outputs: readonly [
{
components: readonly [
{
internalType: "bool";
name: "hasLimit";
type: "bool";
},
{
internalType: "uint256";
name: "limit";
type: "uint256";
},
{
internalType: "uint256";
name: "limitUsed";
type: "uint256";
},
{
internalType: "uint48";
name: "refreshInterval";
type: "uint48";
},
{
internalType: "uint48";
name: "lastUsedTime";
type: "uint48";
},
];
internalType: "struct ISessionKeyPlugin.SpendLimitInfo";
name: "info";
type: "tuple";
},
{
internalType: "bool";
name: "shouldReset";
type: "bool";
},
];
stateMutability: "view";
type: "function";
},
{
inputs: readonly [
{
internalType: "address";
name: "account";
type: "address";
},
{
internalType: "address";
name: "sessionKey";
type: "address";
},
];
name: "getKeyTimeRange";
outputs: readonly [
{
internalType: "uint48";
name: "validAfter";
type: "uint48";
},
{
internalType: "uint48";
name: "validUntil";
type: "uint48";
},
];
stateMutability: "view";
type: "function";
},
{
inputs: readonly [
{
internalType: "address";
name: "account";
type: "address";
},
{
internalType: "address";
name: "sessionKey";
type: "address";
},
];
name: "getNativeTokenSpendLimitInfo";
outputs: readonly [
{
components: readonly [
{
internalType: "bool";
name: "hasLimit";
type: "bool";
},
{
internalType: "uint256";
name: "limit";
type: "uint256";
},
{
internalType: "uint256";
name: "limitUsed";
type: "uint256";
},
{
internalType: "uint48";
name: "refreshInterval";
type: "uint48";
},
{
internalType: "uint48";
name: "lastUsedTime";
type: "uint48";
},
];
internalType: "struct ISessionKeyPlugin.SpendLimitInfo";
name: "info";
type: "tuple";
},
];
stateMutability: "view";
type: "function";
},
{
inputs: readonly [
{
internalType: "address";
name: "account";
type: "address";
},
{
internalType: "address";
name: "sessionKey";
type: "address";
},
];
name: "getRequiredPaymaster";
outputs: readonly [
{
internalType: "address";
name: "";
type: "address";
},
];
stateMutability: "view";
type: "function";
},
{
inputs: readonly [
{
internalType: "address";
name: "account";
type: "address";
},
{
internalType: "address";
name: "sessionKey";
type: "address";
},
{
internalType: "address";
name: "contractAddress";
type: "address";
},
{
internalType: "bytes4";
name: "selector";
type: "bytes4";
},
];
name: "isSelectorOnAccessControlList";
outputs: readonly [
{
internalType: "bool";
name: "isOnList";
type: "bool";
},
];
stateMutability: "view";
type: "function";
},
{
inputs: readonly [
{
internalType: "address";
name: "account";
type: "address";
},
{
internalType: "address";
name: "sessionKey";
type: "address";
},
];
name: "isSessionKeyOf";
outputs: readonly [
{
internalType: "bool";
name: "";
type: "bool";
},
];
stateMutability: "view";
type: "function";
},
{
inputs: readonly [
{
internalType: "bytes";
name: "data";
type: "bytes";
},
];
name: "onInstall";
outputs: readonly [];
stateMutability: "nonpayable";
type: "function";
},
{
inputs: readonly [
{
internalType: "bytes";
name: "";
type: "bytes";
},
];
name: "onUninstall";
outputs: readonly [];
stateMutability: "nonpayable";
type: "function";
},
{
inputs: readonly [];
name: "pluginManifest";
outputs: readonly [
{
components: readonly [
{
internalType: "bytes4[]";
name: "interfaceIds";
type: "bytes4[]";
},
{
internalType: "bytes4[]";
name: "dependencyInterfaceIds";
type: "bytes4[]";
},
{
internalType: "bytes4[]";
name: "executionFunctions";
type: "bytes4[]";
},
{
internalType: "bytes4[]";
name: "permittedExecutionSelectors";
type: "bytes4[]";
},
{
internalType: "bool";
name: "permitAnyExternalAddress";
type: "bool";
},
{
internalType: "bool";
name: "canSpendNativeToken";
type: "bool";
},
{
components: readonly [
{
internalType: "address";
name: "externalAddress";
type: "address";
},
{
internalType: "bool";
name: "permitAnySelector";
type: "bool";
},
{
internalType: "bytes4[]";
name: "selectors";
type: "bytes4[]";
},
];
internalType: "struct ManifestExternalCallPermission[]";
name: "permittedExternalCalls";
type: "tuple[]";
},
{
components: readonly [
{
internalType: "bytes4";
name: "executionSelector";
type: "bytes4";
},
{
components: readonly [
{
internalType: "enum ManifestAssociatedFunctionType";
name: "functionType";
type: "uint8";
},
{
internalType: "uint8";
name: "functionId";
type: "uint8";
},
{
internalType: "uint256";
name: "dependencyIndex";
type: "uint256";
},
];
internalType: "struct ManifestFunction";
name: "associatedFunction";
type: "tuple";
},
];
internalType: "struct ManifestAssociatedFunction[]";
name: "userOpValidationFunctions";
type: "tuple[]";
},
{
components: readonly [
{
internalType: "bytes4";
name: "executionSelector";
type: "bytes4";
},
{
components: readonly [
{
internalType: "enum ManifestAssociatedFunctionType";
name: "functionType";
type: "uint8";
},
{
internalType: "uint8";
name: "functionId";
type: "uint8";
},
{
internalType: "uint256";
name: "dependencyIndex";
type: "uint256";
},
];
internalType: "struct ManifestFunction";
name: "associatedFunction";
type: "tuple";
},
];
internalType: "struct ManifestAssociatedFunction[]";
name: "runtimeValidationFunctions";
type: "tuple[]";
},
{
components: readonly [
{
internalType: "bytes4";
name: "executionSelector";
type: "bytes4";
},
{
components: readonly [
{
internalType: "enum ManifestAssociatedFunctionType";
name: "functionType";
type: "uint8";
},
{
internalType: "uint8";
name: "functionId";
type: "uint8";
},
{
internalType: "uint256";
name: "dependencyIndex";
type: "uint256";
},
];
internalType: "struct ManifestFunction";
name: "associatedFunction";
type: "tuple";
},
];
internalType: "struct ManifestAssociatedFunction[]";
name: "preUserOpValidationHooks";
type: "tuple[]";
},
{
components: readonly [
{
internalType: "bytes4";
name: "executionSelector";
type: "bytes4";
},
{
components: readonly [
{
internalType: "enum ManifestAssociatedFunctionType";
name: "functionType";
type: "uint8";
},
{
internalType: "uint8";
name: "functionId";
type: "uint8";
},
{
internalType: "uint256";
name: "dependencyIndex";
type: "uint256";
},
];
internalType: "struct ManifestFunction";
name: "associatedFunction";
type: "tuple";
},
];
internalType: "struct ManifestAssociatedFunction[]";
name: "preRuntimeValidationHooks";
type: "tuple[]";
},
{
components: readonly [
{
internalType: "bytes4";
name: "executionSelector";
type: "bytes4";
},
{
components: readonly [
{
internalType: "enum ManifestAssociatedFunctionType";
name: "functionType";
type: "uint8";
},
{
internalType: "uint8";
name: "functionId";
type: "uint8";
},
{
internalType: "uint256";
name: "dependencyIndex";
type: "uint256";
},
];
internalType: "struct ManifestFunction";
name: "preExecHook";
type: "tuple";
},
{
components: readonly [
{
internalType: "enum ManifestAssociatedFunctionType";
name: "functionType";
type: "uint8";
},
{
internalType: "uint8";
name: "functionId";
type: "uint8";
},
{
internalType: "uint256";
name: "dependencyIndex";
type: "uint256";
},
];
internalType: "struct ManifestFunction";
name: "postExecHook";
type: "tuple";
},
];
internalType: "struct ManifestExecutionHook[]";
name: "executionHooks";
type: "tuple[]";
},
];
internalType: "struct PluginManifest";
name: "";
type: "tuple";
},
];
stateMutability: "pure";
type: "function";
},
{
inputs: readonly [];
name: "pluginMetadata";
outputs: readonly [
{
components: readonly [
{
internalType: "string";
name: "name";
type: "string";
},
{
internalType: "string";
name: "version";
type: "string";
},
{
internalType: "string";
name: "author";
type: "string";
},
{
components: readonly [
{
internalType: "bytes4";
name: "functionSelector";
type: "bytes4";
},
{
internalType: "string";
name: "permissionDescription";
type: "string";
},
];
internalType: "struct SelectorPermission[]";
name: "permissionDescriptors";
type: "tuple[]";
},
];
internalType: "struct PluginMetadata";
name: "";
type: "tuple";
},
];
stateMutability: "pure";
type: "function";
},
{
inputs: readonly [
{
internalType: "uint8";
name: "functionId";
type: "uint8";
},
{
internalType: "bytes";
name: "preExecHookData";
type: "bytes";
},
];
name: "postExecutionHook";
outputs: readonly [];
stateMutability: "nonpayable";
type: "function";
},
{
inputs: readonly [
{
internalType: "uint8";
name: "functionId";
type: "uint8";
},
{
internalType: "address";
name: "sender";
type: "address";
},
{
internalType: "uint256";
name: "value";
type: "uint256";
},
{
internalType: "bytes";
name: "data";
type: "bytes";
},
];
name: "preExecutionHook";
outputs: readonly [
{
internalType: "bytes";
name: "";
type: "bytes";
},
];
stateMutability: "nonpayable";
type: "function";
},
{
inputs: readonly [
{
internalType: "uint8";
name: "functionId";
type: "uint8";
},
{
internalType: "address";
name: "sender";
type: "address";
},
{
internalType: "uint256";
name: "value";
type: "uint256";
},
{
internalType: "bytes";
name: "data";
type: "bytes";
},
];
name: "preRuntimeValidationHook";
outputs: readonly [];
stateMutability: "nonpayable";
type: "function";
},
{
inputs: readonly [
{
internalType: "uint8";
name: "functionId";
type: "uint8";
},
{
components: readonly [
{
internalType: "address";
name: "sender";
type: "address";
},
{
internalType: "uint256";
name: "nonce";
type: "uint256";
},
{
internalType: "bytes";
name: "initCode";
type: "bytes";
},
{
internalType: "bytes";
name: "callData";
type: "bytes";
},
{
internalType: "uint256";
name: "callGasLimit";
type: "uint256";
},
{
internalType: "uint256";
name: "verificationGasLimit";
type: "uint256";
},
{
internalType: "uint256";
name: "preVerificationGas";
type: "uint256";
},
{
internalType: "uint256";
name: "maxFeePerGas";
type: "uint256";
},
{
internalType: "uint256";
name: "maxPriorityFeePerGas";
type: "uint256";
},
{
internalType: "bytes";
name: "paymasterAndData";
type: "bytes";
},
{
internalType: "bytes";
name: "signature";
type: "bytes";
},
];
internalType: "struct UserOperation";
name: "userOp";
type: "tuple";
},
{
internalType: "bytes32";
name: "userOpHash";
type: "bytes32";
},
];
name: "preUserOpValidationHook";
outputs: readonly [
{
internalType: "uint256";
name: "";
type: "uint256";
},
];
stateMutability: "nonpayable";
type: "function";
},
{
inputs: readonly [
{
internalType: "address";
name: "sessionKey";
type: "address";
},
{
internalType: "bytes32";
name: "predecessor";
type: "bytes32";
},
];
name: "removeSessionKey";
outputs: readonly [];
stateMutability: "nonpayable";
type: "function";
},
{
inputs: readonly [
{
internalType: "address";
name: "account";
type: "address";
},
{
internalType: "address";
name: "sessionKey";
type: "address";
},
];
name: "resetSessionKeyGasLimitTimestamp";
outputs: readonly [];
stateMutability: "nonpayable";
type: "function";
},
{
inputs: readonly [
{
internalType: "address";
name: "oldSessionKey";
type: "address";
},
{
internalType: "bytes32";
name: "predecessor";
type: "bytes32";
},
{
internalType: "address";
name: "newSessionKey";
type: "address";
},
];
name: "rotateSessionKey";
outputs: readonly [];
stateMutability: "nonpayable";
type: "function";
},
{
inputs: readonly [
{
internalType: "uint8";
name: "functionId";
type: "uint8";
},
{
internalType: "address";
name: "sender";
type: "address";
},
{
internalType: "uint256";
name: "value";
type: "uint256";
},
{
internalType: "bytes";
name: "data";
type: "bytes";
},
];
name: "runtimeValidationFunction";
outputs: readonly [];
stateMutability: "nonpayable";
type: "function";
},
{
inputs: readonly [
{
internalType: "address";
name: "account";
type: "address";
},
];
name: "sessionKeysOf";
outputs: readonly [
{
internalType: "address[]";
name: "";
type: "address[]";
},
];
stateMutability: "view";
type: "function";
},
{
inputs: readonly [
{
internalType: "bytes4";
name: "interfaceId";
type: "bytes4";
},
];
name: "supportsInterface";
outputs: readonly [
{
internalType: "bool";
name: "";
type: "bool";
},
];
stateMutability: "view";
type: "function";
},
{
inputs: readonly [
{
internalType: "address";
name: "sessionKey";
type: "address";
},
{
internalType: "bytes[]";
name: "updates";
type: "bytes[]";
},
];
name: "updateKeyPermissions";
outputs: readonly [];
stateMutability: "nonpayable";
type: "function";
},
{
inputs: readonly [
{
internalType: "uint8";
name: "functionId";
type: "uint8";
},
{
components: readonly [
{
internalType: "address";
name: "sender";
type: "address";
},
{
internalType: "uint256";
name: "nonce";
type: "uint256";
},
{
internalType: "bytes";
name: "initCode";
type: "bytes";
},
{
internalType: "bytes";
name: "callData";
type: "bytes";
},
{
internalType: "uint256";
name: "callGasLimit";
type: "uint256";
},
{
internalType: "uint256";
name: "verificationGasLimit";
type: "uint256";
},
{
internalType: "uint256";
name: "preVerificationGas";
type: "uint256";
},
{
internalType: "uint256";
name: "maxFeePerGas";
type: "uint256";
},
{
internalType: "uint256";
name: "maxPriorityFeePerGas";
type: "uint256";
},
{
internalType: "bytes";
name: "paymasterAndData";
type: "bytes";
},
{
internalType: "bytes";
name: "signature";
type: "bytes";
},
];
internalType: "struct UserOperation";
name: "userOp";
type: "tuple";
},
{
internalType: "bytes32";
name: "userOpHash";
type: "bytes32";
},
];
name: "userOpValidationFunction";
outputs: readonly [
{
internalType: "uint256";
name: "";
type: "uint256";
},
];
stateMutability: "nonpayable";
type: "function";
},
{
anonymous: false;
inputs: readonly [
{
indexed: true;
internalType: "address";
name: "account";
type: "address";
},
{
indexed: true;
internalType: "address";
name: "sessionKey";
type: "address";
},
{
indexed: false;
internalType: "bytes[]";
name: "updates";
type: "bytes[]";
},
];
name: "PermissionsUpdated";
type: "event";
},
{
anonymous: false;
inputs: readonly [
{
indexed: true;
internalType: "address";
name: "account";
type: "address";
},
{
indexed: true;
internalType: "address";
name: "sessionKey";
type: "address";
},
{
indexed: true;
internalType: "bytes32";
name: "tag";
type: "bytes32";
},
];
name: "SessionKeyAdded";
type: "event";
},
{
anonymous: false;
inputs: readonly [
{
indexed: true;
internalType: "address";
name: "account";
type: "address";
},
{
indexed: true;
internalType: "address";
name: "sessionKey";
type: "address";
},
];
name: "SessionKeyRemoved";
type: "event";
},
{
anonymous: false;
inputs: readonly [
{
indexed: true;
internalType: "address";
name: "account";
type: "address";
},
{
indexed: true;
internalType: "address";
name: "oldSessionKey";
type: "address";
},
{
indexed: true;
internalType: "address";
name: "newSessionKey";
type: "address";
},
];
name: "SessionKeyRotated";
type: "event";
},
{
inputs: readonly [];
name: "AlreadyInitialized";
type: "error";
},
{
inputs: readonly [
{
internalType: "address";
name: "account";
type: "address";
},
{
internalType: "address";
name: "sessionKey";
type: "address";
},
{
internalType: "address";
name: "token";
type: "address";
},
];
name: "ERC20SpendLimitExceeded";
type: "error";
},
{
inputs: readonly [];
name: "InvalidAction";
type: "error";
},
{
inputs: readonly [
{
internalType: "bytes4";
name: "updateSelector";
type: "bytes4";
},
];
name: "InvalidPermissionsUpdate";
type: "error";
},
{
inputs: readonly [
{
internalType: "address";
name: "sessionKey";
type: "address";
},
];
name: "InvalidSessionKey";
type: "error";
},
{
inputs: readonly [
{
internalType: "address";
name: "sessionKey";
type: "address";
},
];
name: "InvalidSignature";
type: "error";
},
{
inputs: readonly [
{
internalType: "address";
name: "token";
type: "address";
},
];
name: "InvalidToken";
type: "error";
},
{
inputs: readonly [];
name: "LengthMismatch";
type: "error";
},
{
inputs: readonly [
{
internalType: "address";
name: "account";
type: "address";
},
{
internalType: "address";
name: "sessionKey";
type: "address";
},
];
name: "NativeTokenSpendLimitExceeded";
type: "error";
},
{
inputs: readonly [
{
internalType: "address";
name: "caller";
type: "address";
},
];
name: "NotContractCaller";
type: "error";
},
{
inputs: readonly [
{
internalType: "bytes4";
name: "selector";
type: "bytes4";
},
{
internalType: "uint8";
name: "functionId";
type: "uint8";
},
];
name: "NotImplemented";
type: "error";
},
{
inputs: readonly [];
name: "NotInitialized";
type: "error";
},
{
inputs: readonly [
{
internalType: "address";
name: "sessionKey";
type: "address";
},
];
name: "SessionKeyNotFound";
type: "error";
},
];Defined in: account-kit/smart-contracts/src/msca/plugins/session-key/plugin.ts:540