@metamask-previews/gator-permissions-controller 0.7.0-preview-159e76e4 → 0.7.0-preview-7cfbb337

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (44) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/dist/GatorPermissionsController.cjs +4 -8
  3. package/dist/GatorPermissionsController.cjs.map +1 -1
  4. package/dist/GatorPermissionsController.d.cts +0 -5
  5. package/dist/GatorPermissionsController.d.cts.map +1 -1
  6. package/dist/GatorPermissionsController.d.mts +0 -5
  7. package/dist/GatorPermissionsController.d.mts.map +1 -1
  8. package/dist/GatorPermissionsController.mjs +2 -6
  9. package/dist/GatorPermissionsController.mjs.map +1 -1
  10. package/dist/constants.cjs +9 -0
  11. package/dist/constants.cjs.map +1 -0
  12. package/dist/constants.d.cts +6 -0
  13. package/dist/constants.d.cts.map +1 -0
  14. package/dist/constants.d.mts +6 -0
  15. package/dist/constants.d.mts.map +1 -0
  16. package/dist/constants.mjs +6 -0
  17. package/dist/constants.mjs.map +1 -0
  18. package/dist/decodePermission/decodePermission.cjs +29 -5
  19. package/dist/decodePermission/decodePermission.cjs.map +1 -1
  20. package/dist/decodePermission/decodePermission.d.cts.map +1 -1
  21. package/dist/decodePermission/decodePermission.d.mts.map +1 -1
  22. package/dist/decodePermission/decodePermission.mjs +29 -5
  23. package/dist/decodePermission/decodePermission.mjs.map +1 -1
  24. package/dist/decodePermission/utils.cjs.map +1 -1
  25. package/dist/decodePermission/utils.mjs.map +1 -1
  26. package/dist/index.cjs +3 -1
  27. package/dist/index.cjs.map +1 -1
  28. package/dist/index.d.cts +1 -0
  29. package/dist/index.d.cts.map +1 -1
  30. package/dist/index.d.mts +1 -0
  31. package/dist/index.d.mts.map +1 -1
  32. package/dist/index.mjs +1 -0
  33. package/dist/index.mjs.map +1 -1
  34. package/dist/test/mocks.cjs +5 -5
  35. package/dist/test/mocks.cjs.map +1 -1
  36. package/dist/test/mocks.mjs +5 -5
  37. package/dist/test/mocks.mjs.map +1 -1
  38. package/dist/types.cjs.map +1 -1
  39. package/dist/types.d.cts +2 -2
  40. package/dist/types.d.cts.map +1 -1
  41. package/dist/types.d.mts +2 -2
  42. package/dist/types.d.mts.map +1 -1
  43. package/dist/types.mjs.map +1 -1
  44. package/package.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"file":"utils.mjs","sourceRoot":"","sources":["../../src/decodePermission/utils.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Caveat } from '@metamask/delegation-core';\nimport { getChecksumAddress, type Hex } from '@metamask/utils';\n\nimport type { DeployedContractsByName, PermissionType } from './types';\n\n/**\n * A rule that defines the required and allowed enforcers for a permission type.\n */\nexport type PermissionRule = {\n permissionType: PermissionType;\n requiredEnforcers: Set<Hex>;\n allowedEnforcers: Set<Hex>;\n};\n\n/**\n * The names of the enforcer contracts for each permission type.\n */\nconst ENFORCER_CONTRACT_NAMES = {\n ERC20PeriodTransferEnforcer: 'ERC20PeriodTransferEnforcer',\n ERC20StreamingEnforcer: 'ERC20StreamingEnforcer',\n ExactCalldataEnforcer: 'ExactCalldataEnforcer',\n NativeTokenPeriodTransferEnforcer: 'NativeTokenPeriodTransferEnforcer',\n NativeTokenStreamingEnforcer: 'NativeTokenStreamingEnforcer',\n TimestampEnforcer: 'TimestampEnforcer',\n ValueLteEnforcer: 'ValueLteEnforcer',\n NonceEnforcer: 'NonceEnforcer',\n};\n\n/**\n * Resolves and returns checksummed addresses of all known enforcer contracts\n * for a given `chainId` under the current delegation framework version.\n *\n * @param contracts - The deployed contracts for the chain.\n * @returns An object mapping enforcer names to checksummed contract addresses.\n * @throws If the chain or an expected enforcer contract is not found.\n */\nexport const getChecksumEnforcersByChainId = (\n contracts: DeployedContractsByName,\n) => {\n const getChecksumContractAddress = (contractName: string) => {\n const address = contracts[contractName];\n\n if (!address) {\n throw new Error(`Contract not found: ${contractName}`);\n }\n\n return getChecksumAddress(address);\n };\n\n // permission type specific enforcers\n const erc20StreamingEnforcer = getChecksumContractAddress(\n ENFORCER_CONTRACT_NAMES.ERC20StreamingEnforcer,\n );\n const erc20PeriodicEnforcer = getChecksumContractAddress(\n ENFORCER_CONTRACT_NAMES.ERC20PeriodTransferEnforcer,\n );\n const nativeTokenStreamingEnforcer = getChecksumContractAddress(\n ENFORCER_CONTRACT_NAMES.NativeTokenStreamingEnforcer,\n );\n const nativeTokenPeriodicEnforcer = getChecksumContractAddress(\n ENFORCER_CONTRACT_NAMES.NativeTokenPeriodTransferEnforcer,\n );\n\n // general enforcers\n const exactCalldataEnforcer = getChecksumContractAddress(\n ENFORCER_CONTRACT_NAMES.ExactCalldataEnforcer,\n );\n const valueLteEnforcer = getChecksumContractAddress(\n ENFORCER_CONTRACT_NAMES.ValueLteEnforcer,\n );\n const timestampEnforcer = getChecksumContractAddress(\n ENFORCER_CONTRACT_NAMES.TimestampEnforcer,\n );\n const nonceEnforcer = getChecksumContractAddress(\n ENFORCER_CONTRACT_NAMES.NonceEnforcer,\n );\n\n return {\n erc20StreamingEnforcer,\n erc20PeriodicEnforcer,\n nativeTokenStreamingEnforcer,\n nativeTokenPeriodicEnforcer,\n exactCalldataEnforcer,\n valueLteEnforcer,\n timestampEnforcer,\n nonceEnforcer,\n };\n};\n\n/**\n * Builds the canonical set of permission matching rules for a chain.\n *\n * Each rule specifies the `permissionType`, the set of `requiredEnforcers`\n * that must be present, and the set of `allowedEnforcers` that may appear in\n * addition to the required set.\n *\n * @param contracts - The deployed contracts for the chain.\n * @returns A list of permission rules used to identify permission types.\n * @throws Propagates any errors from resolving enforcer addresses.\n */\nexport const createPermissionRulesForChainId: (\n contracts: DeployedContractsByName,\n) => PermissionRule[] = (contracts: DeployedContractsByName) => {\n const {\n erc20StreamingEnforcer,\n erc20PeriodicEnforcer,\n nativeTokenStreamingEnforcer,\n nativeTokenPeriodicEnforcer,\n exactCalldataEnforcer,\n valueLteEnforcer,\n timestampEnforcer,\n nonceEnforcer,\n } = getChecksumEnforcersByChainId(contracts);\n\n // the allowed enforcers are the same for all permission types\n const allowedEnforcers = new Set<Hex>([timestampEnforcer]);\n\n const permissionRules: PermissionRule[] = [\n {\n requiredEnforcers: new Set<Hex>([\n nativeTokenStreamingEnforcer,\n exactCalldataEnforcer,\n nonceEnforcer,\n ]),\n allowedEnforcers,\n permissionType: 'native-token-stream',\n },\n {\n requiredEnforcers: new Set<Hex>([\n nativeTokenPeriodicEnforcer,\n exactCalldataEnforcer,\n nonceEnforcer,\n ]),\n allowedEnforcers,\n permissionType: 'native-token-periodic',\n },\n {\n requiredEnforcers: new Set<Hex>([\n erc20StreamingEnforcer,\n valueLteEnforcer,\n nonceEnforcer,\n ]),\n allowedEnforcers,\n permissionType: 'erc20-token-stream',\n },\n {\n requiredEnforcers: new Set<Hex>([\n erc20PeriodicEnforcer,\n valueLteEnforcer,\n nonceEnforcer,\n ]),\n allowedEnforcers,\n permissionType: 'erc20-token-periodic',\n },\n ];\n\n return permissionRules;\n};\n\n/**\n * Determines whether all elements of `subset` are contained within `superset`.\n *\n * @param subset - The candidate subset to test.\n * @param superset - The set expected to contain all elements of `subset`.\n * @returns `true` if `subset` ⊆ `superset`, otherwise `false`.\n */\nexport const isSubset = <T>(subset: Set<T>, superset: Set<T>): boolean => {\n for (const x of subset) {\n if (!superset.has(x)) {\n return false;\n }\n }\n return true;\n};\n\n/**\n * Gets the terms for a given enforcer from a list of caveats.\n *\n * @param args - The arguments to this function.\n * @param args.throwIfNotFound - Whether to throw an error if no matching enforcer is found. Default is true.\n * @param args.caveats - The list of caveats to search.\n * @param args.enforcer - The enforcer to search for.\n * @returns The terms for the given enforcer.\n */\nexport function getTermsByEnforcer<TThrowIfNotFound extends boolean = true>({\n caveats,\n enforcer,\n throwIfNotFound,\n}: {\n caveats: Caveat<Hex>[];\n enforcer: Hex;\n throwIfNotFound?: TThrowIfNotFound;\n}): TThrowIfNotFound extends true ? Hex : Hex | null {\n const matchingCaveats = caveats.filter(\n (caveat) => caveat.enforcer === enforcer,\n );\n\n if (matchingCaveats.length === 0) {\n if (throwIfNotFound ?? true) {\n throw new Error('Invalid caveats');\n }\n return null as TThrowIfNotFound extends true ? Hex : Hex | null;\n }\n\n if (matchingCaveats.length > 1) {\n throw new Error('Invalid caveats');\n }\n\n return matchingCaveats[0].terms;\n}\n\n/**\n * Splits a 0x-prefixed hex string into parts according to the provided byte lengths.\n *\n * Each entry in `lengths` represents a part length in bytes; internally this is\n * multiplied by 2 to derive the number of hexadecimal characters to slice. The\n * returned substrings do not include the `0x` prefix and preserve leading zeros.\n *\n * Note: This function does not perform input validation (e.g., verifying the\n * payload length equals the sum of requested lengths). Callers are expected to\n * provide well-formed inputs.\n *\n * Example:\n * splitHex('0x12345678', [1, 3]) => ['0x12', '0x345678']\n *\n * @param value - The 0x-prefixed hex string to split.\n * @param lengths - The lengths of each part, in bytes.\n * @returns An array of hex substrings (each with `0x` prefix), one for each part.\n */\nexport function splitHex(value: Hex, lengths: number[]): Hex[] {\n let start = 2;\n const parts: Hex[] = [];\n for (const partLength of lengths) {\n const partCharLength = partLength * 2;\n const part = value.slice(start, start + partCharLength);\n start += partCharLength;\n parts.push(`0x${part}` as Hex);\n }\n return parts;\n}\n"]}
1
+ {"version":3,"file":"utils.mjs","sourceRoot":"","sources":["../../src/decodePermission/utils.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Caveat } from '@metamask/delegation-core';\nimport { getChecksumAddress, type Hex } from '@metamask/utils';\n\nimport type { DeployedContractsByName, PermissionType } from './types';\n\n/**\n * A rule that defines the required and allowed enforcers for a permission type.\n */\nexport type PermissionRule = {\n permissionType: PermissionType;\n requiredEnforcers: Set<Hex>;\n allowedEnforcers: Set<Hex>;\n};\n\n/**\n * The names of the enforcer contracts for each permission type.\n */\nconst ENFORCER_CONTRACT_NAMES = {\n ERC20PeriodTransferEnforcer: 'ERC20PeriodTransferEnforcer',\n ERC20StreamingEnforcer: 'ERC20StreamingEnforcer',\n ExactCalldataEnforcer: 'ExactCalldataEnforcer',\n NativeTokenPeriodTransferEnforcer: 'NativeTokenPeriodTransferEnforcer',\n NativeTokenStreamingEnforcer: 'NativeTokenStreamingEnforcer',\n TimestampEnforcer: 'TimestampEnforcer',\n ValueLteEnforcer: 'ValueLteEnforcer',\n NonceEnforcer: 'NonceEnforcer',\n};\n\n/**\n * Resolves and returns checksummed addresses of all known enforcer contracts\n * for a given `chainId` under the current delegation framework version.\n *\n * @param contracts - The deployed contracts for the chain.\n * @returns An object mapping enforcer names to checksummed contract addresses.\n * @throws If the chain or an expected enforcer contract is not found.\n */\nexport const getChecksumEnforcersByChainId = (\n contracts: DeployedContractsByName,\n) => {\n const getChecksumContractAddress = (contractName: string) => {\n const address = contracts[contractName];\n\n if (!address) {\n throw new Error(`Contract not found: ${contractName}`);\n }\n\n return getChecksumAddress(address);\n };\n\n // permission type specific enforcers\n const erc20StreamingEnforcer = getChecksumContractAddress(\n ENFORCER_CONTRACT_NAMES.ERC20StreamingEnforcer,\n );\n const erc20PeriodicEnforcer = getChecksumContractAddress(\n ENFORCER_CONTRACT_NAMES.ERC20PeriodTransferEnforcer,\n );\n const nativeTokenStreamingEnforcer = getChecksumContractAddress(\n ENFORCER_CONTRACT_NAMES.NativeTokenStreamingEnforcer,\n );\n const nativeTokenPeriodicEnforcer = getChecksumContractAddress(\n ENFORCER_CONTRACT_NAMES.NativeTokenPeriodTransferEnforcer,\n );\n\n // general enforcers\n const exactCalldataEnforcer = getChecksumContractAddress(\n ENFORCER_CONTRACT_NAMES.ExactCalldataEnforcer,\n );\n const valueLteEnforcer = getChecksumContractAddress(\n ENFORCER_CONTRACT_NAMES.ValueLteEnforcer,\n );\n const timestampEnforcer = getChecksumContractAddress(\n ENFORCER_CONTRACT_NAMES.TimestampEnforcer,\n );\n const nonceEnforcer = getChecksumContractAddress(\n ENFORCER_CONTRACT_NAMES.NonceEnforcer,\n );\n\n return {\n erc20StreamingEnforcer,\n erc20PeriodicEnforcer,\n nativeTokenStreamingEnforcer,\n nativeTokenPeriodicEnforcer,\n exactCalldataEnforcer,\n valueLteEnforcer,\n timestampEnforcer,\n nonceEnforcer,\n };\n};\n\n/**\n * Builds the canonical set of permission matching rules for a chain.\n *\n * Each rule specifies the `permissionType`, the set of `requiredEnforcers`\n * that must be present, and the set of `allowedEnforcers` that may appear in\n * addition to the required set.\n *\n * @param contracts - The deployed contracts for the chain.\n * @returns A list of permission rules used to identify permission types.\n * @throws Propagates any errors from resolving enforcer addresses.\n */\nexport const createPermissionRulesForChainId: (\n contracts: DeployedContractsByName,\n) => PermissionRule[] = (contracts: DeployedContractsByName) => {\n const {\n erc20StreamingEnforcer,\n erc20PeriodicEnforcer,\n nativeTokenStreamingEnforcer,\n nativeTokenPeriodicEnforcer,\n exactCalldataEnforcer,\n valueLteEnforcer,\n timestampEnforcer,\n nonceEnforcer,\n } = getChecksumEnforcersByChainId(contracts);\n\n // the allowed enforcers are the same for all permission types\n const allowedEnforcers = new Set<Hex>([timestampEnforcer]);\n\n const permissionRules: PermissionRule[] = [\n {\n requiredEnforcers: new Set<Hex>([\n nativeTokenStreamingEnforcer,\n exactCalldataEnforcer,\n nonceEnforcer,\n ]),\n allowedEnforcers,\n permissionType: 'native-token-stream',\n },\n {\n requiredEnforcers: new Set<Hex>([\n nativeTokenPeriodicEnforcer,\n exactCalldataEnforcer,\n nonceEnforcer,\n ]),\n allowedEnforcers,\n permissionType: 'native-token-periodic',\n },\n {\n requiredEnforcers: new Set<Hex>([\n erc20StreamingEnforcer,\n valueLteEnforcer,\n nonceEnforcer,\n ]),\n allowedEnforcers,\n permissionType: 'erc20-token-stream',\n },\n {\n requiredEnforcers: new Set<Hex>([\n erc20PeriodicEnforcer,\n valueLteEnforcer,\n nonceEnforcer,\n ]),\n allowedEnforcers,\n permissionType: 'erc20-token-periodic',\n },\n ];\n\n return permissionRules;\n};\n\n/**\n * Determines whether all elements of `subset` are contained within `superset`.\n *\n * @param subset - The candidate subset to test.\n * @param superset - The set expected to contain all elements of `subset`.\n * @returns `true` if `subset` ⊆ `superset`, otherwise `false`.\n */\nexport const isSubset = <T>(subset: Set<T>, superset: Set<T>): boolean => {\n for (const x of subset) {\n if (!superset.has(x)) {\n return false;\n }\n }\n return true;\n};\n\n/**\n * Gets the terms for a given enforcer from a list of caveats.\n *\n * @param args - The arguments to this function.\n * @param args.throwIfNotFound - Whether to throw an error if no matching enforcer is found. Default is true.\n * @param args.caveats - The list of caveats to search.\n * @param args.enforcer - The enforcer to search for.\n * @returns The terms for the given enforcer.\n */\nexport function getTermsByEnforcer<TThrowIfNotFound extends boolean = true>({\n caveats,\n enforcer,\n throwIfNotFound,\n}: {\n caveats: Caveat<Hex>[];\n enforcer: Hex;\n throwIfNotFound?: TThrowIfNotFound;\n}): TThrowIfNotFound extends true ? Hex : Hex | null {\n const matchingCaveats = caveats.filter(\n (caveat) => caveat.enforcer === enforcer,\n );\n\n if (matchingCaveats.length === 0) {\n if (throwIfNotFound ?? true) {\n throw new Error('Invalid caveats');\n }\n return null as TThrowIfNotFound extends true ? Hex : Hex | null;\n }\n\n if (matchingCaveats.length > 1) {\n throw new Error('Invalid caveats');\n }\n\n return matchingCaveats[0].terms;\n}\n\n/**\n * Splits a 0x-prefixed hex string into parts according to the provided byte lengths.\n *\n * Each entry in `lengths` represents a part length in bytes; internally this is\n * multiplied by 2 to derive the number of hexadecimal characters to slice. The\n * returned substrings do not include the `0x` prefix and preserve leading zeros.\n *\n * Note: This function does not perform input validation (e.g., verifying the\n * payload length equals the sum of requested lengths). Callers are expected to\n * provide well-formed inputs.\n *\n * Example:\n * splitHex('0x12345678', [1, 3]) => ['0x12', '0x345678']\n *\n * @param value - The 0x-prefixed hex string to split.\n * @param lengths - The lengths of each part, in bytes.\n * @returns An array of hex substrings (each with `0x` prefix), one for each part.\n */\nexport function splitHex(value: Hex, lengths: number[]): Hex[] {\n let start = 2;\n const parts: Hex[] = [];\n for (const partLength of lengths) {\n const partCharLength = partLength * 2;\n const part = value.slice(start, start + partCharLength);\n start += partCharLength;\n parts.push(`0x${part}` as const);\n }\n return parts;\n}\n"]}
package/dist/index.cjs CHANGED
@@ -3,10 +3,12 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.deserializeGatorPermissionsMap = exports.serializeGatorPermissionsMap = exports.GatorPermissionsController = void 0;
6
+ exports.DELEGATION_FRAMEWORK_VERSION = exports.deserializeGatorPermissionsMap = exports.serializeGatorPermissionsMap = exports.GatorPermissionsController = void 0;
7
7
  var GatorPermissionsController_1 = require("./GatorPermissionsController.cjs");
8
8
  Object.defineProperty(exports, "GatorPermissionsController", { enumerable: true, get: function () { return __importDefault(GatorPermissionsController_1).default; } });
9
9
  var utils_1 = require("./utils.cjs");
10
10
  Object.defineProperty(exports, "serializeGatorPermissionsMap", { enumerable: true, get: function () { return utils_1.serializeGatorPermissionsMap; } });
11
11
  Object.defineProperty(exports, "deserializeGatorPermissionsMap", { enumerable: true, get: function () { return utils_1.deserializeGatorPermissionsMap; } });
12
+ var constants_1 = require("./constants.cjs");
13
+ Object.defineProperty(exports, "DELEGATION_FRAMEWORK_VERSION", { enumerable: true, get: function () { return constants_1.DELEGATION_FRAMEWORK_VERSION; } });
12
14
  //# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;AAAA,+EAAqF;AAA5E,yJAAA,OAAO,OAA8B;AAC9C,qCAGiB;AAFf,qHAAA,4BAA4B,OAAA;AAC5B,uHAAA,8BAA8B,OAAA","sourcesContent":["export { default as GatorPermissionsController } from './GatorPermissionsController';\nexport {\n serializeGatorPermissionsMap,\n deserializeGatorPermissionsMap,\n} from './utils';\nexport type {\n GatorPermissionsControllerState,\n GatorPermissionsControllerMessenger,\n GatorPermissionsControllerGetStateAction,\n GatorPermissionsControllerDecodePermissionFromPermissionContextForOriginAction,\n GatorPermissionsControllerFetchAndUpdateGatorPermissionsAction,\n GatorPermissionsControllerEnableGatorPermissionsAction,\n GatorPermissionsControllerDisableGatorPermissionsAction,\n GatorPermissionsControllerSubmitRevocationAction,\n GatorPermissionsControllerAddPendingRevocationAction,\n GatorPermissionsControllerSubmitDirectRevocationAction,\n GatorPermissionsControllerIsPendingRevocationAction,\n GatorPermissionsControllerActions,\n GatorPermissionsControllerEvents,\n GatorPermissionsControllerStateChangeEvent,\n} from './GatorPermissionsController';\nexport type { DecodedPermission } from './decodePermission';\nexport type {\n GatorPermissionsControllerErrorCode,\n GatorPermissionsSnapRpcMethod,\n CustomPermission,\n PermissionTypesWithCustom,\n PermissionRequest,\n PermissionResponse,\n PermissionResponseSanitized,\n StoredGatorPermission,\n StoredGatorPermissionSanitized,\n GatorPermissionsMap,\n SupportedGatorPermissionType,\n GatorPermissionsMapByPermissionType,\n GatorPermissionsListByPermissionTypeAndChainId,\n DelegationDetails,\n RevocationParams,\n} from './types';\n\nexport type {\n NativeTokenStreamPermission,\n NativeTokenPeriodicPermission,\n Erc20TokenStreamPermission,\n Erc20TokenPeriodicPermission,\n AccountSigner,\n WalletSigner,\n Signer,\n MetaMaskBasePermissionData,\n} from '@metamask/7715-permission-types';\n"]}
1
+ {"version":3,"file":"index.cjs","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;AAAA,+EAAqF;AAA5E,yJAAA,OAAO,OAA8B;AAC9C,qCAGiB;AAFf,qHAAA,4BAA4B,OAAA;AAC5B,uHAAA,8BAA8B,OAAA;AAmBhC,6CAA2D;AAAlD,yHAAA,4BAA4B,OAAA","sourcesContent":["export { default as GatorPermissionsController } from './GatorPermissionsController';\nexport {\n serializeGatorPermissionsMap,\n deserializeGatorPermissionsMap,\n} from './utils';\nexport type {\n GatorPermissionsControllerState,\n GatorPermissionsControllerMessenger,\n GatorPermissionsControllerGetStateAction,\n GatorPermissionsControllerDecodePermissionFromPermissionContextForOriginAction,\n GatorPermissionsControllerFetchAndUpdateGatorPermissionsAction,\n GatorPermissionsControllerEnableGatorPermissionsAction,\n GatorPermissionsControllerDisableGatorPermissionsAction,\n GatorPermissionsControllerSubmitRevocationAction,\n GatorPermissionsControllerAddPendingRevocationAction,\n GatorPermissionsControllerSubmitDirectRevocationAction,\n GatorPermissionsControllerIsPendingRevocationAction,\n GatorPermissionsControllerActions,\n GatorPermissionsControllerEvents,\n GatorPermissionsControllerStateChangeEvent,\n} from './GatorPermissionsController';\nexport type { DecodedPermission } from './decodePermission';\nexport { DELEGATION_FRAMEWORK_VERSION } from './constants';\nexport type {\n GatorPermissionsControllerErrorCode,\n GatorPermissionsSnapRpcMethod,\n CustomPermission,\n PermissionTypesWithCustom,\n PermissionRequest,\n PermissionResponse,\n PermissionResponseSanitized,\n StoredGatorPermission,\n StoredGatorPermissionSanitized,\n GatorPermissionsMap,\n SupportedGatorPermissionType,\n GatorPermissionsMapByPermissionType,\n GatorPermissionsListByPermissionTypeAndChainId,\n DelegationDetails,\n RevocationParams,\n} from './types';\n\nexport type {\n NativeTokenStreamPermission,\n NativeTokenPeriodicPermission,\n Erc20TokenStreamPermission,\n Erc20TokenPeriodicPermission,\n AccountSigner,\n WalletSigner,\n Signer,\n MetaMaskBasePermissionData,\n} from '@metamask/7715-permission-types';\n"]}
package/dist/index.d.cts CHANGED
@@ -2,6 +2,7 @@ export { default as GatorPermissionsController } from "./GatorPermissionsControl
2
2
  export { serializeGatorPermissionsMap, deserializeGatorPermissionsMap, } from "./utils.cjs";
3
3
  export type { GatorPermissionsControllerState, GatorPermissionsControllerMessenger, GatorPermissionsControllerGetStateAction, GatorPermissionsControllerDecodePermissionFromPermissionContextForOriginAction, GatorPermissionsControllerFetchAndUpdateGatorPermissionsAction, GatorPermissionsControllerEnableGatorPermissionsAction, GatorPermissionsControllerDisableGatorPermissionsAction, GatorPermissionsControllerSubmitRevocationAction, GatorPermissionsControllerAddPendingRevocationAction, GatorPermissionsControllerSubmitDirectRevocationAction, GatorPermissionsControllerIsPendingRevocationAction, GatorPermissionsControllerActions, GatorPermissionsControllerEvents, GatorPermissionsControllerStateChangeEvent, } from "./GatorPermissionsController.cjs";
4
4
  export type { DecodedPermission } from "./decodePermission/index.cjs";
5
+ export { DELEGATION_FRAMEWORK_VERSION } from "./constants.cjs";
5
6
  export type { GatorPermissionsControllerErrorCode, GatorPermissionsSnapRpcMethod, CustomPermission, PermissionTypesWithCustom, PermissionRequest, PermissionResponse, PermissionResponseSanitized, StoredGatorPermission, StoredGatorPermissionSanitized, GatorPermissionsMap, SupportedGatorPermissionType, GatorPermissionsMapByPermissionType, GatorPermissionsListByPermissionTypeAndChainId, DelegationDetails, RevocationParams, } from "./types.cjs";
6
7
  export type { NativeTokenStreamPermission, NativeTokenPeriodicPermission, Erc20TokenStreamPermission, Erc20TokenPeriodicPermission, AccountSigner, WalletSigner, Signer, MetaMaskBasePermissionData, } from "@metamask/7715-permission-types";
7
8
  //# sourceMappingURL=index.d.cts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.cts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,0BAA0B,EAAE,yCAAqC;AACrF,OAAO,EACL,4BAA4B,EAC5B,8BAA8B,GAC/B,oBAAgB;AACjB,YAAY,EACV,+BAA+B,EAC/B,mCAAmC,EACnC,wCAAwC,EACxC,8EAA8E,EAC9E,8DAA8D,EAC9D,sDAAsD,EACtD,uDAAuD,EACvD,gDAAgD,EAChD,oDAAoD,EACpD,sDAAsD,EACtD,mDAAmD,EACnD,iCAAiC,EACjC,gCAAgC,EAChC,0CAA0C,GAC3C,yCAAqC;AACtC,YAAY,EAAE,iBAAiB,EAAE,qCAA2B;AAC5D,YAAY,EACV,mCAAmC,EACnC,6BAA6B,EAC7B,gBAAgB,EAChB,yBAAyB,EACzB,iBAAiB,EACjB,kBAAkB,EAClB,2BAA2B,EAC3B,qBAAqB,EACrB,8BAA8B,EAC9B,mBAAmB,EACnB,4BAA4B,EAC5B,mCAAmC,EACnC,8CAA8C,EAC9C,iBAAiB,EACjB,gBAAgB,GACjB,oBAAgB;AAEjB,YAAY,EACV,2BAA2B,EAC3B,6BAA6B,EAC7B,0BAA0B,EAC1B,4BAA4B,EAC5B,aAAa,EACb,YAAY,EACZ,MAAM,EACN,0BAA0B,GAC3B,wCAAwC"}
1
+ {"version":3,"file":"index.d.cts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,0BAA0B,EAAE,yCAAqC;AACrF,OAAO,EACL,4BAA4B,EAC5B,8BAA8B,GAC/B,oBAAgB;AACjB,YAAY,EACV,+BAA+B,EAC/B,mCAAmC,EACnC,wCAAwC,EACxC,8EAA8E,EAC9E,8DAA8D,EAC9D,sDAAsD,EACtD,uDAAuD,EACvD,gDAAgD,EAChD,oDAAoD,EACpD,sDAAsD,EACtD,mDAAmD,EACnD,iCAAiC,EACjC,gCAAgC,EAChC,0CAA0C,GAC3C,yCAAqC;AACtC,YAAY,EAAE,iBAAiB,EAAE,qCAA2B;AAC5D,OAAO,EAAE,4BAA4B,EAAE,wBAAoB;AAC3D,YAAY,EACV,mCAAmC,EACnC,6BAA6B,EAC7B,gBAAgB,EAChB,yBAAyB,EACzB,iBAAiB,EACjB,kBAAkB,EAClB,2BAA2B,EAC3B,qBAAqB,EACrB,8BAA8B,EAC9B,mBAAmB,EACnB,4BAA4B,EAC5B,mCAAmC,EACnC,8CAA8C,EAC9C,iBAAiB,EACjB,gBAAgB,GACjB,oBAAgB;AAEjB,YAAY,EACV,2BAA2B,EAC3B,6BAA6B,EAC7B,0BAA0B,EAC1B,4BAA4B,EAC5B,aAAa,EACb,YAAY,EACZ,MAAM,EACN,0BAA0B,GAC3B,wCAAwC"}
package/dist/index.d.mts CHANGED
@@ -2,6 +2,7 @@ export { default as GatorPermissionsController } from "./GatorPermissionsControl
2
2
  export { serializeGatorPermissionsMap, deserializeGatorPermissionsMap, } from "./utils.mjs";
3
3
  export type { GatorPermissionsControllerState, GatorPermissionsControllerMessenger, GatorPermissionsControllerGetStateAction, GatorPermissionsControllerDecodePermissionFromPermissionContextForOriginAction, GatorPermissionsControllerFetchAndUpdateGatorPermissionsAction, GatorPermissionsControllerEnableGatorPermissionsAction, GatorPermissionsControllerDisableGatorPermissionsAction, GatorPermissionsControllerSubmitRevocationAction, GatorPermissionsControllerAddPendingRevocationAction, GatorPermissionsControllerSubmitDirectRevocationAction, GatorPermissionsControllerIsPendingRevocationAction, GatorPermissionsControllerActions, GatorPermissionsControllerEvents, GatorPermissionsControllerStateChangeEvent, } from "./GatorPermissionsController.mjs";
4
4
  export type { DecodedPermission } from "./decodePermission/index.mjs";
5
+ export { DELEGATION_FRAMEWORK_VERSION } from "./constants.mjs";
5
6
  export type { GatorPermissionsControllerErrorCode, GatorPermissionsSnapRpcMethod, CustomPermission, PermissionTypesWithCustom, PermissionRequest, PermissionResponse, PermissionResponseSanitized, StoredGatorPermission, StoredGatorPermissionSanitized, GatorPermissionsMap, SupportedGatorPermissionType, GatorPermissionsMapByPermissionType, GatorPermissionsListByPermissionTypeAndChainId, DelegationDetails, RevocationParams, } from "./types.mjs";
6
7
  export type { NativeTokenStreamPermission, NativeTokenPeriodicPermission, Erc20TokenStreamPermission, Erc20TokenPeriodicPermission, AccountSigner, WalletSigner, Signer, MetaMaskBasePermissionData, } from "@metamask/7715-permission-types";
7
8
  //# sourceMappingURL=index.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,0BAA0B,EAAE,yCAAqC;AACrF,OAAO,EACL,4BAA4B,EAC5B,8BAA8B,GAC/B,oBAAgB;AACjB,YAAY,EACV,+BAA+B,EAC/B,mCAAmC,EACnC,wCAAwC,EACxC,8EAA8E,EAC9E,8DAA8D,EAC9D,sDAAsD,EACtD,uDAAuD,EACvD,gDAAgD,EAChD,oDAAoD,EACpD,sDAAsD,EACtD,mDAAmD,EACnD,iCAAiC,EACjC,gCAAgC,EAChC,0CAA0C,GAC3C,yCAAqC;AACtC,YAAY,EAAE,iBAAiB,EAAE,qCAA2B;AAC5D,YAAY,EACV,mCAAmC,EACnC,6BAA6B,EAC7B,gBAAgB,EAChB,yBAAyB,EACzB,iBAAiB,EACjB,kBAAkB,EAClB,2BAA2B,EAC3B,qBAAqB,EACrB,8BAA8B,EAC9B,mBAAmB,EACnB,4BAA4B,EAC5B,mCAAmC,EACnC,8CAA8C,EAC9C,iBAAiB,EACjB,gBAAgB,GACjB,oBAAgB;AAEjB,YAAY,EACV,2BAA2B,EAC3B,6BAA6B,EAC7B,0BAA0B,EAC1B,4BAA4B,EAC5B,aAAa,EACb,YAAY,EACZ,MAAM,EACN,0BAA0B,GAC3B,wCAAwC"}
1
+ {"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,0BAA0B,EAAE,yCAAqC;AACrF,OAAO,EACL,4BAA4B,EAC5B,8BAA8B,GAC/B,oBAAgB;AACjB,YAAY,EACV,+BAA+B,EAC/B,mCAAmC,EACnC,wCAAwC,EACxC,8EAA8E,EAC9E,8DAA8D,EAC9D,sDAAsD,EACtD,uDAAuD,EACvD,gDAAgD,EAChD,oDAAoD,EACpD,sDAAsD,EACtD,mDAAmD,EACnD,iCAAiC,EACjC,gCAAgC,EAChC,0CAA0C,GAC3C,yCAAqC;AACtC,YAAY,EAAE,iBAAiB,EAAE,qCAA2B;AAC5D,OAAO,EAAE,4BAA4B,EAAE,wBAAoB;AAC3D,YAAY,EACV,mCAAmC,EACnC,6BAA6B,EAC7B,gBAAgB,EAChB,yBAAyB,EACzB,iBAAiB,EACjB,kBAAkB,EAClB,2BAA2B,EAC3B,qBAAqB,EACrB,8BAA8B,EAC9B,mBAAmB,EACnB,4BAA4B,EAC5B,mCAAmC,EACnC,8CAA8C,EAC9C,iBAAiB,EACjB,gBAAgB,GACjB,oBAAgB;AAEjB,YAAY,EACV,2BAA2B,EAC3B,6BAA6B,EAC7B,0BAA0B,EAC1B,4BAA4B,EAC5B,aAAa,EACb,YAAY,EACZ,MAAM,EACN,0BAA0B,GAC3B,wCAAwC"}
package/dist/index.mjs CHANGED
@@ -1,3 +1,4 @@
1
1
  export { default as GatorPermissionsController } from "./GatorPermissionsController.mjs";
2
2
  export { serializeGatorPermissionsMap, deserializeGatorPermissionsMap } from "./utils.mjs";
3
+ export { DELEGATION_FRAMEWORK_VERSION } from "./constants.mjs";
3
4
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,0BAA0B,EAAE,yCAAqC;AACrF,OAAO,EACL,4BAA4B,EAC5B,8BAA8B,EAC/B,oBAAgB","sourcesContent":["export { default as GatorPermissionsController } from './GatorPermissionsController';\nexport {\n serializeGatorPermissionsMap,\n deserializeGatorPermissionsMap,\n} from './utils';\nexport type {\n GatorPermissionsControllerState,\n GatorPermissionsControllerMessenger,\n GatorPermissionsControllerGetStateAction,\n GatorPermissionsControllerDecodePermissionFromPermissionContextForOriginAction,\n GatorPermissionsControllerFetchAndUpdateGatorPermissionsAction,\n GatorPermissionsControllerEnableGatorPermissionsAction,\n GatorPermissionsControllerDisableGatorPermissionsAction,\n GatorPermissionsControllerSubmitRevocationAction,\n GatorPermissionsControllerAddPendingRevocationAction,\n GatorPermissionsControllerSubmitDirectRevocationAction,\n GatorPermissionsControllerIsPendingRevocationAction,\n GatorPermissionsControllerActions,\n GatorPermissionsControllerEvents,\n GatorPermissionsControllerStateChangeEvent,\n} from './GatorPermissionsController';\nexport type { DecodedPermission } from './decodePermission';\nexport type {\n GatorPermissionsControllerErrorCode,\n GatorPermissionsSnapRpcMethod,\n CustomPermission,\n PermissionTypesWithCustom,\n PermissionRequest,\n PermissionResponse,\n PermissionResponseSanitized,\n StoredGatorPermission,\n StoredGatorPermissionSanitized,\n GatorPermissionsMap,\n SupportedGatorPermissionType,\n GatorPermissionsMapByPermissionType,\n GatorPermissionsListByPermissionTypeAndChainId,\n DelegationDetails,\n RevocationParams,\n} from './types';\n\nexport type {\n NativeTokenStreamPermission,\n NativeTokenPeriodicPermission,\n Erc20TokenStreamPermission,\n Erc20TokenPeriodicPermission,\n AccountSigner,\n WalletSigner,\n Signer,\n MetaMaskBasePermissionData,\n} from '@metamask/7715-permission-types';\n"]}
1
+ {"version":3,"file":"index.mjs","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,0BAA0B,EAAE,yCAAqC;AACrF,OAAO,EACL,4BAA4B,EAC5B,8BAA8B,EAC/B,oBAAgB;AAkBjB,OAAO,EAAE,4BAA4B,EAAE,wBAAoB","sourcesContent":["export { default as GatorPermissionsController } from './GatorPermissionsController';\nexport {\n serializeGatorPermissionsMap,\n deserializeGatorPermissionsMap,\n} from './utils';\nexport type {\n GatorPermissionsControllerState,\n GatorPermissionsControllerMessenger,\n GatorPermissionsControllerGetStateAction,\n GatorPermissionsControllerDecodePermissionFromPermissionContextForOriginAction,\n GatorPermissionsControllerFetchAndUpdateGatorPermissionsAction,\n GatorPermissionsControllerEnableGatorPermissionsAction,\n GatorPermissionsControllerDisableGatorPermissionsAction,\n GatorPermissionsControllerSubmitRevocationAction,\n GatorPermissionsControllerAddPendingRevocationAction,\n GatorPermissionsControllerSubmitDirectRevocationAction,\n GatorPermissionsControllerIsPendingRevocationAction,\n GatorPermissionsControllerActions,\n GatorPermissionsControllerEvents,\n GatorPermissionsControllerStateChangeEvent,\n} from './GatorPermissionsController';\nexport type { DecodedPermission } from './decodePermission';\nexport { DELEGATION_FRAMEWORK_VERSION } from './constants';\nexport type {\n GatorPermissionsControllerErrorCode,\n GatorPermissionsSnapRpcMethod,\n CustomPermission,\n PermissionTypesWithCustom,\n PermissionRequest,\n PermissionResponse,\n PermissionResponseSanitized,\n StoredGatorPermission,\n StoredGatorPermissionSanitized,\n GatorPermissionsMap,\n SupportedGatorPermissionType,\n GatorPermissionsMapByPermissionType,\n GatorPermissionsListByPermissionTypeAndChainId,\n DelegationDetails,\n RevocationParams,\n} from './types';\n\nexport type {\n NativeTokenStreamPermission,\n NativeTokenPeriodicPermission,\n Erc20TokenStreamPermission,\n Erc20TokenPeriodicPermission,\n AccountSigner,\n WalletSigner,\n Signer,\n MetaMaskBasePermissionData,\n} from '@metamask/7715-permission-types';\n"]}
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.mockGatorPermissionsStorageEntriesFactory = exports.mockCustomPermissionStorageEntry = exports.mockErc20TokenPeriodicStorageEntry = exports.mockErc20TokenStreamStorageEntry = exports.mockNativeTokenPeriodicStorageEntry = exports.mockNativeTokenStreamStorageEntry = void 0;
4
4
  const mockNativeTokenStreamStorageEntry = (chainId) => ({
5
5
  permissionResponse: {
6
- chainId: chainId,
6
+ chainId,
7
7
  address: '0xB68c70159E9892DdF5659ec42ff9BD2bbC23e778',
8
8
  signer: {
9
9
  type: 'account',
@@ -36,7 +36,7 @@ const mockNativeTokenStreamStorageEntry = (chainId) => ({
36
36
  exports.mockNativeTokenStreamStorageEntry = mockNativeTokenStreamStorageEntry;
37
37
  const mockNativeTokenPeriodicStorageEntry = (chainId) => ({
38
38
  permissionResponse: {
39
- chainId: chainId,
39
+ chainId,
40
40
  address: '0xB68c70159E9892DdF5659ec42ff9BD2bbC23e778',
41
41
  signer: {
42
42
  type: 'account',
@@ -68,7 +68,7 @@ const mockNativeTokenPeriodicStorageEntry = (chainId) => ({
68
68
  exports.mockNativeTokenPeriodicStorageEntry = mockNativeTokenPeriodicStorageEntry;
69
69
  const mockErc20TokenStreamStorageEntry = (chainId) => ({
70
70
  permissionResponse: {
71
- chainId: chainId,
71
+ chainId,
72
72
  address: '0xB68c70159E9892DdF5659ec42ff9BD2bbC23e778',
73
73
  signer: {
74
74
  type: 'account',
@@ -102,7 +102,7 @@ const mockErc20TokenStreamStorageEntry = (chainId) => ({
102
102
  exports.mockErc20TokenStreamStorageEntry = mockErc20TokenStreamStorageEntry;
103
103
  const mockErc20TokenPeriodicStorageEntry = (chainId) => ({
104
104
  permissionResponse: {
105
- chainId: chainId,
105
+ chainId,
106
106
  address: '0xB68c70159E9892DdF5659ec42ff9BD2bbC23e778',
107
107
  signer: {
108
108
  type: 'account',
@@ -135,7 +135,7 @@ const mockErc20TokenPeriodicStorageEntry = (chainId) => ({
135
135
  exports.mockErc20TokenPeriodicStorageEntry = mockErc20TokenPeriodicStorageEntry;
136
136
  const mockCustomPermissionStorageEntry = (chainId, data) => ({
137
137
  permissionResponse: {
138
- chainId: chainId,
138
+ chainId,
139
139
  address: '0xB68c70159E9892DdF5659ec42ff9BD2bbC23e778',
140
140
  signer: {
141
141
  type: 'account',
@@ -1 +1 @@
1
- {"version":3,"file":"mocks.cjs","sourceRoot":"","sources":["../../src/test/mocks.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n AccountSigner,\n Erc20TokenPeriodicPermission,\n Erc20TokenStreamPermission,\n NativeTokenPeriodicPermission,\n NativeTokenStreamPermission,\n} from '@metamask/7715-permission-types';\nimport type { Hex } from '@metamask/utils';\n\nimport type {\n CustomPermission,\n PermissionTypesWithCustom,\n StoredGatorPermission,\n} from '../types';\n\nexport const mockNativeTokenStreamStorageEntry = (\n chainId: Hex,\n): StoredGatorPermission<AccountSigner, NativeTokenStreamPermission> => ({\n permissionResponse: {\n chainId: chainId as Hex,\n address: '0xB68c70159E9892DdF5659ec42ff9BD2bbC23e778',\n signer: {\n type: 'account',\n data: { address: '0x4f71DA06987BfeDE90aF0b33E1e3e4ffDCEE7a63' },\n },\n permission: {\n type: 'native-token-stream',\n isAdjustmentAllowed: true,\n data: {\n maxAmount: '0x22b1c8c1227a0000',\n initialAmount: '0x6f05b59d3b20000',\n amountPerSecond: '0x6f05b59d3b20000',\n startTime: 1747699200,\n justification:\n 'This is a very important request for streaming allowance for some very important thing',\n },\n },\n context: '0x00000000',\n dependencyInfo: [\n {\n factory: '0x69Aa2f9fe1572F1B640E1bbc512f5c3a734fc77c',\n factoryData: '0x0000000',\n },\n ],\n signerMeta: {\n delegationManager: '0xdb9B1e94B5b69Df7e401DDbedE43491141047dB3',\n },\n },\n siteOrigin: 'http://localhost:8000',\n});\n\nexport const mockNativeTokenPeriodicStorageEntry = (\n chainId: Hex,\n): StoredGatorPermission<AccountSigner, NativeTokenPeriodicPermission> => ({\n permissionResponse: {\n chainId: chainId as Hex,\n address: '0xB68c70159E9892DdF5659ec42ff9BD2bbC23e778',\n signer: {\n type: 'account',\n data: { address: '0x4f71DA06987BfeDE90aF0b33E1e3e4ffDCEE7a63' },\n },\n permission: {\n type: 'native-token-periodic',\n isAdjustmentAllowed: true,\n data: {\n periodAmount: '0x22b1c8c1227a0000',\n periodDuration: 1747699200,\n startTime: 1747699200,\n justification:\n 'This is a very important request for streaming allowance for some very important thing',\n },\n },\n context: '0x00000000',\n dependencyInfo: [\n {\n factory: '0x69Aa2f9fe1572F1B640E1bbc512f5c3a734fc77c',\n factoryData: '0x0000000',\n },\n ],\n signerMeta: {\n delegationManager: '0xdb9B1e94B5b69Df7e401DDbedE43491141047dB3',\n },\n },\n siteOrigin: 'http://localhost:8000',\n});\n\nexport const mockErc20TokenStreamStorageEntry = (\n chainId: Hex,\n): StoredGatorPermission<AccountSigner, Erc20TokenStreamPermission> => ({\n permissionResponse: {\n chainId: chainId as Hex,\n address: '0xB68c70159E9892DdF5659ec42ff9BD2bbC23e778',\n signer: {\n type: 'account',\n data: { address: '0x4f71DA06987BfeDE90aF0b33E1e3e4ffDCEE7a63' },\n },\n permission: {\n type: 'erc20-token-stream',\n isAdjustmentAllowed: true,\n data: {\n initialAmount: '0x22b1c8c1227a0000',\n maxAmount: '0x6f05b59d3b20000',\n amountPerSecond: '0x6f05b59d3b20000',\n startTime: 1747699200,\n tokenAddress: '0xB68c70159E9892DdF5659ec42ff9BD2bbC23e778',\n justification:\n 'This is a very important request for streaming allowance for some very important thing',\n },\n },\n context: '0x00000000',\n dependencyInfo: [\n {\n factory: '0x69Aa2f9fe1572F1B640E1bbc512f5c3a734fc77c',\n factoryData: '0x0000000',\n },\n ],\n signerMeta: {\n delegationManager: '0xdb9B1e94B5b69Df7e401DDbedE43491141047dB3',\n },\n },\n siteOrigin: 'http://localhost:8000',\n});\n\nexport const mockErc20TokenPeriodicStorageEntry = (\n chainId: Hex,\n): StoredGatorPermission<AccountSigner, Erc20TokenPeriodicPermission> => ({\n permissionResponse: {\n chainId: chainId as Hex,\n address: '0xB68c70159E9892DdF5659ec42ff9BD2bbC23e778',\n signer: {\n type: 'account',\n data: { address: '0x4f71DA06987BfeDE90aF0b33E1e3e4ffDCEE7a63' },\n },\n permission: {\n type: 'erc20-token-periodic',\n isAdjustmentAllowed: true,\n data: {\n periodAmount: '0x22b1c8c1227a0000',\n periodDuration: 1747699200,\n startTime: 1747699200,\n tokenAddress: '0xB68c70159E9892DdF5659ec42ff9BD2bbC23e778',\n justification:\n 'This is a very important request for streaming allowance for some very important thing',\n },\n },\n context: '0x00000000',\n dependencyInfo: [\n {\n factory: '0x69Aa2f9fe1572F1B640E1bbc512f5c3a734fc77c',\n factoryData: '0x0000000',\n },\n ],\n signerMeta: {\n delegationManager: '0xdb9B1e94B5b69Df7e401DDbedE43491141047dB3',\n },\n },\n siteOrigin: 'http://localhost:8000',\n});\n\nexport const mockCustomPermissionStorageEntry = (\n chainId: Hex,\n data: Record<string, unknown>,\n): StoredGatorPermission<AccountSigner, CustomPermission> => ({\n permissionResponse: {\n chainId: chainId as Hex,\n address: '0xB68c70159E9892DdF5659ec42ff9BD2bbC23e778',\n signer: {\n type: 'account',\n data: { address: '0x4f71DA06987BfeDE90aF0b33E1e3e4ffDCEE7a63' },\n },\n permission: {\n type: 'custom',\n isAdjustmentAllowed: true,\n data: {\n justification:\n 'This is a very important request for streaming allowance for some very important thing',\n ...data,\n },\n },\n context: '0x00000000',\n dependencyInfo: [\n {\n factory: '0x69Aa2f9fe1572F1B640E1bbc512f5c3a734fc77c',\n factoryData: '0x0000000',\n },\n ],\n signerMeta: {\n delegationManager: '0xdb9B1e94B5b69Df7e401DDbedE43491141047dB3',\n },\n },\n siteOrigin: 'http://localhost:8000',\n});\n\nexport type MockGatorPermissionsStorageEntriesConfig = {\n [chainId: string]: {\n nativeTokenStream: number;\n nativeTokenPeriodic: number;\n erc20TokenStream: number;\n erc20TokenPeriodic: number;\n custom: {\n count: number;\n data: Record<string, unknown>[];\n };\n };\n};\n\n/**\n * Creates a mock gator permissions storage entry\n *\n * @param config - The config for the mock gator permissions storage entries.\n * @returns Mock gator permissions storage entry\n */\n/**\n * Creates mock gator permissions storage entries with unique expiry times\n *\n * @param config - The config for the mock gator permissions storage entries.\n * @returns Mock gator permissions storage entries\n */\nexport function mockGatorPermissionsStorageEntriesFactory(\n config: MockGatorPermissionsStorageEntriesConfig,\n): StoredGatorPermission<AccountSigner, PermissionTypesWithCustom>[] {\n const result: StoredGatorPermission<\n AccountSigner,\n PermissionTypesWithCustom\n >[] = [];\n\n Object.entries(config).forEach(([chainId, counts]) => {\n if (counts.custom.count !== counts.custom.data.length) {\n throw new Error('Custom permission count and data length mismatch');\n }\n\n /**\n * Creates a number of entries with unique expiry times\n *\n * @param count - The number of entries to create.\n * @param createEntry - The function to create an entry.\n */\n const createEntries = (\n count: number,\n createEntry: () => StoredGatorPermission<\n AccountSigner,\n PermissionTypesWithCustom\n >,\n ) => {\n for (let i = 0; i < count; i++) {\n const entry = createEntry();\n result.push(entry);\n }\n };\n\n createEntries(counts.nativeTokenStream, () =>\n mockNativeTokenStreamStorageEntry(chainId as Hex),\n );\n\n createEntries(counts.nativeTokenPeriodic, () =>\n mockNativeTokenPeriodicStorageEntry(chainId as Hex),\n );\n\n createEntries(counts.erc20TokenStream, () =>\n mockErc20TokenStreamStorageEntry(chainId as Hex),\n );\n\n createEntries(counts.erc20TokenPeriodic, () =>\n mockErc20TokenPeriodicStorageEntry(chainId as Hex),\n );\n\n // Create custom entries\n for (let i = 0; i < counts.custom.count; i++) {\n const entry = mockCustomPermissionStorageEntry(\n chainId as Hex,\n counts.custom.data[i],\n );\n result.push(entry);\n }\n });\n\n return result;\n}\n"]}
1
+ {"version":3,"file":"mocks.cjs","sourceRoot":"","sources":["../../src/test/mocks.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n AccountSigner,\n Erc20TokenPeriodicPermission,\n Erc20TokenStreamPermission,\n NativeTokenPeriodicPermission,\n NativeTokenStreamPermission,\n} from '@metamask/7715-permission-types';\nimport type { Hex } from '@metamask/utils';\n\nimport type {\n CustomPermission,\n PermissionTypesWithCustom,\n StoredGatorPermission,\n} from '../types';\n\nexport const mockNativeTokenStreamStorageEntry = (\n chainId: Hex,\n): StoredGatorPermission<AccountSigner, NativeTokenStreamPermission> => ({\n permissionResponse: {\n chainId,\n address: '0xB68c70159E9892DdF5659ec42ff9BD2bbC23e778',\n signer: {\n type: 'account',\n data: { address: '0x4f71DA06987BfeDE90aF0b33E1e3e4ffDCEE7a63' },\n },\n permission: {\n type: 'native-token-stream',\n isAdjustmentAllowed: true,\n data: {\n maxAmount: '0x22b1c8c1227a0000',\n initialAmount: '0x6f05b59d3b20000',\n amountPerSecond: '0x6f05b59d3b20000',\n startTime: 1747699200,\n justification:\n 'This is a very important request for streaming allowance for some very important thing',\n },\n },\n context: '0x00000000',\n dependencyInfo: [\n {\n factory: '0x69Aa2f9fe1572F1B640E1bbc512f5c3a734fc77c',\n factoryData: '0x0000000',\n },\n ],\n signerMeta: {\n delegationManager: '0xdb9B1e94B5b69Df7e401DDbedE43491141047dB3',\n },\n },\n siteOrigin: 'http://localhost:8000',\n});\n\nexport const mockNativeTokenPeriodicStorageEntry = (\n chainId: Hex,\n): StoredGatorPermission<AccountSigner, NativeTokenPeriodicPermission> => ({\n permissionResponse: {\n chainId,\n address: '0xB68c70159E9892DdF5659ec42ff9BD2bbC23e778',\n signer: {\n type: 'account',\n data: { address: '0x4f71DA06987BfeDE90aF0b33E1e3e4ffDCEE7a63' },\n },\n permission: {\n type: 'native-token-periodic',\n isAdjustmentAllowed: true,\n data: {\n periodAmount: '0x22b1c8c1227a0000',\n periodDuration: 1747699200,\n startTime: 1747699200,\n justification:\n 'This is a very important request for streaming allowance for some very important thing',\n },\n },\n context: '0x00000000',\n dependencyInfo: [\n {\n factory: '0x69Aa2f9fe1572F1B640E1bbc512f5c3a734fc77c',\n factoryData: '0x0000000',\n },\n ],\n signerMeta: {\n delegationManager: '0xdb9B1e94B5b69Df7e401DDbedE43491141047dB3',\n },\n },\n siteOrigin: 'http://localhost:8000',\n});\n\nexport const mockErc20TokenStreamStorageEntry = (\n chainId: Hex,\n): StoredGatorPermission<AccountSigner, Erc20TokenStreamPermission> => ({\n permissionResponse: {\n chainId,\n address: '0xB68c70159E9892DdF5659ec42ff9BD2bbC23e778',\n signer: {\n type: 'account',\n data: { address: '0x4f71DA06987BfeDE90aF0b33E1e3e4ffDCEE7a63' },\n },\n permission: {\n type: 'erc20-token-stream',\n isAdjustmentAllowed: true,\n data: {\n initialAmount: '0x22b1c8c1227a0000',\n maxAmount: '0x6f05b59d3b20000',\n amountPerSecond: '0x6f05b59d3b20000',\n startTime: 1747699200,\n tokenAddress: '0xB68c70159E9892DdF5659ec42ff9BD2bbC23e778',\n justification:\n 'This is a very important request for streaming allowance for some very important thing',\n },\n },\n context: '0x00000000',\n dependencyInfo: [\n {\n factory: '0x69Aa2f9fe1572F1B640E1bbc512f5c3a734fc77c',\n factoryData: '0x0000000',\n },\n ],\n signerMeta: {\n delegationManager: '0xdb9B1e94B5b69Df7e401DDbedE43491141047dB3',\n },\n },\n siteOrigin: 'http://localhost:8000',\n});\n\nexport const mockErc20TokenPeriodicStorageEntry = (\n chainId: Hex,\n): StoredGatorPermission<AccountSigner, Erc20TokenPeriodicPermission> => ({\n permissionResponse: {\n chainId,\n address: '0xB68c70159E9892DdF5659ec42ff9BD2bbC23e778',\n signer: {\n type: 'account',\n data: { address: '0x4f71DA06987BfeDE90aF0b33E1e3e4ffDCEE7a63' },\n },\n permission: {\n type: 'erc20-token-periodic',\n isAdjustmentAllowed: true,\n data: {\n periodAmount: '0x22b1c8c1227a0000',\n periodDuration: 1747699200,\n startTime: 1747699200,\n tokenAddress: '0xB68c70159E9892DdF5659ec42ff9BD2bbC23e778',\n justification:\n 'This is a very important request for streaming allowance for some very important thing',\n },\n },\n context: '0x00000000',\n dependencyInfo: [\n {\n factory: '0x69Aa2f9fe1572F1B640E1bbc512f5c3a734fc77c',\n factoryData: '0x0000000',\n },\n ],\n signerMeta: {\n delegationManager: '0xdb9B1e94B5b69Df7e401DDbedE43491141047dB3',\n },\n },\n siteOrigin: 'http://localhost:8000',\n});\n\nexport const mockCustomPermissionStorageEntry = (\n chainId: Hex,\n data: Record<string, unknown>,\n): StoredGatorPermission<AccountSigner, CustomPermission> => ({\n permissionResponse: {\n chainId,\n address: '0xB68c70159E9892DdF5659ec42ff9BD2bbC23e778',\n signer: {\n type: 'account',\n data: { address: '0x4f71DA06987BfeDE90aF0b33E1e3e4ffDCEE7a63' },\n },\n permission: {\n type: 'custom',\n isAdjustmentAllowed: true,\n data: {\n justification:\n 'This is a very important request for streaming allowance for some very important thing',\n ...data,\n },\n },\n context: '0x00000000',\n dependencyInfo: [\n {\n factory: '0x69Aa2f9fe1572F1B640E1bbc512f5c3a734fc77c',\n factoryData: '0x0000000',\n },\n ],\n signerMeta: {\n delegationManager: '0xdb9B1e94B5b69Df7e401DDbedE43491141047dB3',\n },\n },\n siteOrigin: 'http://localhost:8000',\n});\n\nexport type MockGatorPermissionsStorageEntriesConfig = {\n [chainId: string]: {\n nativeTokenStream: number;\n nativeTokenPeriodic: number;\n erc20TokenStream: number;\n erc20TokenPeriodic: number;\n custom: {\n count: number;\n data: Record<string, unknown>[];\n };\n };\n};\n\n/**\n * Creates a mock gator permissions storage entry\n *\n * @param config - The config for the mock gator permissions storage entries.\n * @returns Mock gator permissions storage entry\n */\n/**\n * Creates mock gator permissions storage entries with unique expiry times\n *\n * @param config - The config for the mock gator permissions storage entries.\n * @returns Mock gator permissions storage entries\n */\nexport function mockGatorPermissionsStorageEntriesFactory(\n config: MockGatorPermissionsStorageEntriesConfig,\n): StoredGatorPermission<AccountSigner, PermissionTypesWithCustom>[] {\n const result: StoredGatorPermission<\n AccountSigner,\n PermissionTypesWithCustom\n >[] = [];\n\n Object.entries(config).forEach(([chainId, counts]) => {\n if (counts.custom.count !== counts.custom.data.length) {\n throw new Error('Custom permission count and data length mismatch');\n }\n\n /**\n * Creates a number of entries with unique expiry times\n *\n * @param count - The number of entries to create.\n * @param createEntry - The function to create an entry.\n */\n const createEntries = (\n count: number,\n createEntry: () => StoredGatorPermission<\n AccountSigner,\n PermissionTypesWithCustom\n >,\n ) => {\n for (let i = 0; i < count; i++) {\n const entry = createEntry();\n result.push(entry);\n }\n };\n\n createEntries(counts.nativeTokenStream, () =>\n mockNativeTokenStreamStorageEntry(chainId as Hex),\n );\n\n createEntries(counts.nativeTokenPeriodic, () =>\n mockNativeTokenPeriodicStorageEntry(chainId as Hex),\n );\n\n createEntries(counts.erc20TokenStream, () =>\n mockErc20TokenStreamStorageEntry(chainId as Hex),\n );\n\n createEntries(counts.erc20TokenPeriodic, () =>\n mockErc20TokenPeriodicStorageEntry(chainId as Hex),\n );\n\n // Create custom entries\n for (let i = 0; i < counts.custom.count; i++) {\n const entry = mockCustomPermissionStorageEntry(\n chainId as Hex,\n counts.custom.data[i],\n );\n result.push(entry);\n }\n });\n\n return result;\n}\n"]}
@@ -1,6 +1,6 @@
1
1
  export const mockNativeTokenStreamStorageEntry = (chainId) => ({
2
2
  permissionResponse: {
3
- chainId: chainId,
3
+ chainId,
4
4
  address: '0xB68c70159E9892DdF5659ec42ff9BD2bbC23e778',
5
5
  signer: {
6
6
  type: 'account',
@@ -32,7 +32,7 @@ export const mockNativeTokenStreamStorageEntry = (chainId) => ({
32
32
  });
33
33
  export const mockNativeTokenPeriodicStorageEntry = (chainId) => ({
34
34
  permissionResponse: {
35
- chainId: chainId,
35
+ chainId,
36
36
  address: '0xB68c70159E9892DdF5659ec42ff9BD2bbC23e778',
37
37
  signer: {
38
38
  type: 'account',
@@ -63,7 +63,7 @@ export const mockNativeTokenPeriodicStorageEntry = (chainId) => ({
63
63
  });
64
64
  export const mockErc20TokenStreamStorageEntry = (chainId) => ({
65
65
  permissionResponse: {
66
- chainId: chainId,
66
+ chainId,
67
67
  address: '0xB68c70159E9892DdF5659ec42ff9BD2bbC23e778',
68
68
  signer: {
69
69
  type: 'account',
@@ -96,7 +96,7 @@ export const mockErc20TokenStreamStorageEntry = (chainId) => ({
96
96
  });
97
97
  export const mockErc20TokenPeriodicStorageEntry = (chainId) => ({
98
98
  permissionResponse: {
99
- chainId: chainId,
99
+ chainId,
100
100
  address: '0xB68c70159E9892DdF5659ec42ff9BD2bbC23e778',
101
101
  signer: {
102
102
  type: 'account',
@@ -128,7 +128,7 @@ export const mockErc20TokenPeriodicStorageEntry = (chainId) => ({
128
128
  });
129
129
  export const mockCustomPermissionStorageEntry = (chainId, data) => ({
130
130
  permissionResponse: {
131
- chainId: chainId,
131
+ chainId,
132
132
  address: '0xB68c70159E9892DdF5659ec42ff9BD2bbC23e778',
133
133
  signer: {
134
134
  type: 'account',
@@ -1 +1 @@
1
- {"version":3,"file":"mocks.mjs","sourceRoot":"","sources":["../../src/test/mocks.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n AccountSigner,\n Erc20TokenPeriodicPermission,\n Erc20TokenStreamPermission,\n NativeTokenPeriodicPermission,\n NativeTokenStreamPermission,\n} from '@metamask/7715-permission-types';\nimport type { Hex } from '@metamask/utils';\n\nimport type {\n CustomPermission,\n PermissionTypesWithCustom,\n StoredGatorPermission,\n} from '../types';\n\nexport const mockNativeTokenStreamStorageEntry = (\n chainId: Hex,\n): StoredGatorPermission<AccountSigner, NativeTokenStreamPermission> => ({\n permissionResponse: {\n chainId: chainId as Hex,\n address: '0xB68c70159E9892DdF5659ec42ff9BD2bbC23e778',\n signer: {\n type: 'account',\n data: { address: '0x4f71DA06987BfeDE90aF0b33E1e3e4ffDCEE7a63' },\n },\n permission: {\n type: 'native-token-stream',\n isAdjustmentAllowed: true,\n data: {\n maxAmount: '0x22b1c8c1227a0000',\n initialAmount: '0x6f05b59d3b20000',\n amountPerSecond: '0x6f05b59d3b20000',\n startTime: 1747699200,\n justification:\n 'This is a very important request for streaming allowance for some very important thing',\n },\n },\n context: '0x00000000',\n dependencyInfo: [\n {\n factory: '0x69Aa2f9fe1572F1B640E1bbc512f5c3a734fc77c',\n factoryData: '0x0000000',\n },\n ],\n signerMeta: {\n delegationManager: '0xdb9B1e94B5b69Df7e401DDbedE43491141047dB3',\n },\n },\n siteOrigin: 'http://localhost:8000',\n});\n\nexport const mockNativeTokenPeriodicStorageEntry = (\n chainId: Hex,\n): StoredGatorPermission<AccountSigner, NativeTokenPeriodicPermission> => ({\n permissionResponse: {\n chainId: chainId as Hex,\n address: '0xB68c70159E9892DdF5659ec42ff9BD2bbC23e778',\n signer: {\n type: 'account',\n data: { address: '0x4f71DA06987BfeDE90aF0b33E1e3e4ffDCEE7a63' },\n },\n permission: {\n type: 'native-token-periodic',\n isAdjustmentAllowed: true,\n data: {\n periodAmount: '0x22b1c8c1227a0000',\n periodDuration: 1747699200,\n startTime: 1747699200,\n justification:\n 'This is a very important request for streaming allowance for some very important thing',\n },\n },\n context: '0x00000000',\n dependencyInfo: [\n {\n factory: '0x69Aa2f9fe1572F1B640E1bbc512f5c3a734fc77c',\n factoryData: '0x0000000',\n },\n ],\n signerMeta: {\n delegationManager: '0xdb9B1e94B5b69Df7e401DDbedE43491141047dB3',\n },\n },\n siteOrigin: 'http://localhost:8000',\n});\n\nexport const mockErc20TokenStreamStorageEntry = (\n chainId: Hex,\n): StoredGatorPermission<AccountSigner, Erc20TokenStreamPermission> => ({\n permissionResponse: {\n chainId: chainId as Hex,\n address: '0xB68c70159E9892DdF5659ec42ff9BD2bbC23e778',\n signer: {\n type: 'account',\n data: { address: '0x4f71DA06987BfeDE90aF0b33E1e3e4ffDCEE7a63' },\n },\n permission: {\n type: 'erc20-token-stream',\n isAdjustmentAllowed: true,\n data: {\n initialAmount: '0x22b1c8c1227a0000',\n maxAmount: '0x6f05b59d3b20000',\n amountPerSecond: '0x6f05b59d3b20000',\n startTime: 1747699200,\n tokenAddress: '0xB68c70159E9892DdF5659ec42ff9BD2bbC23e778',\n justification:\n 'This is a very important request for streaming allowance for some very important thing',\n },\n },\n context: '0x00000000',\n dependencyInfo: [\n {\n factory: '0x69Aa2f9fe1572F1B640E1bbc512f5c3a734fc77c',\n factoryData: '0x0000000',\n },\n ],\n signerMeta: {\n delegationManager: '0xdb9B1e94B5b69Df7e401DDbedE43491141047dB3',\n },\n },\n siteOrigin: 'http://localhost:8000',\n});\n\nexport const mockErc20TokenPeriodicStorageEntry = (\n chainId: Hex,\n): StoredGatorPermission<AccountSigner, Erc20TokenPeriodicPermission> => ({\n permissionResponse: {\n chainId: chainId as Hex,\n address: '0xB68c70159E9892DdF5659ec42ff9BD2bbC23e778',\n signer: {\n type: 'account',\n data: { address: '0x4f71DA06987BfeDE90aF0b33E1e3e4ffDCEE7a63' },\n },\n permission: {\n type: 'erc20-token-periodic',\n isAdjustmentAllowed: true,\n data: {\n periodAmount: '0x22b1c8c1227a0000',\n periodDuration: 1747699200,\n startTime: 1747699200,\n tokenAddress: '0xB68c70159E9892DdF5659ec42ff9BD2bbC23e778',\n justification:\n 'This is a very important request for streaming allowance for some very important thing',\n },\n },\n context: '0x00000000',\n dependencyInfo: [\n {\n factory: '0x69Aa2f9fe1572F1B640E1bbc512f5c3a734fc77c',\n factoryData: '0x0000000',\n },\n ],\n signerMeta: {\n delegationManager: '0xdb9B1e94B5b69Df7e401DDbedE43491141047dB3',\n },\n },\n siteOrigin: 'http://localhost:8000',\n});\n\nexport const mockCustomPermissionStorageEntry = (\n chainId: Hex,\n data: Record<string, unknown>,\n): StoredGatorPermission<AccountSigner, CustomPermission> => ({\n permissionResponse: {\n chainId: chainId as Hex,\n address: '0xB68c70159E9892DdF5659ec42ff9BD2bbC23e778',\n signer: {\n type: 'account',\n data: { address: '0x4f71DA06987BfeDE90aF0b33E1e3e4ffDCEE7a63' },\n },\n permission: {\n type: 'custom',\n isAdjustmentAllowed: true,\n data: {\n justification:\n 'This is a very important request for streaming allowance for some very important thing',\n ...data,\n },\n },\n context: '0x00000000',\n dependencyInfo: [\n {\n factory: '0x69Aa2f9fe1572F1B640E1bbc512f5c3a734fc77c',\n factoryData: '0x0000000',\n },\n ],\n signerMeta: {\n delegationManager: '0xdb9B1e94B5b69Df7e401DDbedE43491141047dB3',\n },\n },\n siteOrigin: 'http://localhost:8000',\n});\n\nexport type MockGatorPermissionsStorageEntriesConfig = {\n [chainId: string]: {\n nativeTokenStream: number;\n nativeTokenPeriodic: number;\n erc20TokenStream: number;\n erc20TokenPeriodic: number;\n custom: {\n count: number;\n data: Record<string, unknown>[];\n };\n };\n};\n\n/**\n * Creates a mock gator permissions storage entry\n *\n * @param config - The config for the mock gator permissions storage entries.\n * @returns Mock gator permissions storage entry\n */\n/**\n * Creates mock gator permissions storage entries with unique expiry times\n *\n * @param config - The config for the mock gator permissions storage entries.\n * @returns Mock gator permissions storage entries\n */\nexport function mockGatorPermissionsStorageEntriesFactory(\n config: MockGatorPermissionsStorageEntriesConfig,\n): StoredGatorPermission<AccountSigner, PermissionTypesWithCustom>[] {\n const result: StoredGatorPermission<\n AccountSigner,\n PermissionTypesWithCustom\n >[] = [];\n\n Object.entries(config).forEach(([chainId, counts]) => {\n if (counts.custom.count !== counts.custom.data.length) {\n throw new Error('Custom permission count and data length mismatch');\n }\n\n /**\n * Creates a number of entries with unique expiry times\n *\n * @param count - The number of entries to create.\n * @param createEntry - The function to create an entry.\n */\n const createEntries = (\n count: number,\n createEntry: () => StoredGatorPermission<\n AccountSigner,\n PermissionTypesWithCustom\n >,\n ) => {\n for (let i = 0; i < count; i++) {\n const entry = createEntry();\n result.push(entry);\n }\n };\n\n createEntries(counts.nativeTokenStream, () =>\n mockNativeTokenStreamStorageEntry(chainId as Hex),\n );\n\n createEntries(counts.nativeTokenPeriodic, () =>\n mockNativeTokenPeriodicStorageEntry(chainId as Hex),\n );\n\n createEntries(counts.erc20TokenStream, () =>\n mockErc20TokenStreamStorageEntry(chainId as Hex),\n );\n\n createEntries(counts.erc20TokenPeriodic, () =>\n mockErc20TokenPeriodicStorageEntry(chainId as Hex),\n );\n\n // Create custom entries\n for (let i = 0; i < counts.custom.count; i++) {\n const entry = mockCustomPermissionStorageEntry(\n chainId as Hex,\n counts.custom.data[i],\n );\n result.push(entry);\n }\n });\n\n return result;\n}\n"]}
1
+ {"version":3,"file":"mocks.mjs","sourceRoot":"","sources":["../../src/test/mocks.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n AccountSigner,\n Erc20TokenPeriodicPermission,\n Erc20TokenStreamPermission,\n NativeTokenPeriodicPermission,\n NativeTokenStreamPermission,\n} from '@metamask/7715-permission-types';\nimport type { Hex } from '@metamask/utils';\n\nimport type {\n CustomPermission,\n PermissionTypesWithCustom,\n StoredGatorPermission,\n} from '../types';\n\nexport const mockNativeTokenStreamStorageEntry = (\n chainId: Hex,\n): StoredGatorPermission<AccountSigner, NativeTokenStreamPermission> => ({\n permissionResponse: {\n chainId,\n address: '0xB68c70159E9892DdF5659ec42ff9BD2bbC23e778',\n signer: {\n type: 'account',\n data: { address: '0x4f71DA06987BfeDE90aF0b33E1e3e4ffDCEE7a63' },\n },\n permission: {\n type: 'native-token-stream',\n isAdjustmentAllowed: true,\n data: {\n maxAmount: '0x22b1c8c1227a0000',\n initialAmount: '0x6f05b59d3b20000',\n amountPerSecond: '0x6f05b59d3b20000',\n startTime: 1747699200,\n justification:\n 'This is a very important request for streaming allowance for some very important thing',\n },\n },\n context: '0x00000000',\n dependencyInfo: [\n {\n factory: '0x69Aa2f9fe1572F1B640E1bbc512f5c3a734fc77c',\n factoryData: '0x0000000',\n },\n ],\n signerMeta: {\n delegationManager: '0xdb9B1e94B5b69Df7e401DDbedE43491141047dB3',\n },\n },\n siteOrigin: 'http://localhost:8000',\n});\n\nexport const mockNativeTokenPeriodicStorageEntry = (\n chainId: Hex,\n): StoredGatorPermission<AccountSigner, NativeTokenPeriodicPermission> => ({\n permissionResponse: {\n chainId,\n address: '0xB68c70159E9892DdF5659ec42ff9BD2bbC23e778',\n signer: {\n type: 'account',\n data: { address: '0x4f71DA06987BfeDE90aF0b33E1e3e4ffDCEE7a63' },\n },\n permission: {\n type: 'native-token-periodic',\n isAdjustmentAllowed: true,\n data: {\n periodAmount: '0x22b1c8c1227a0000',\n periodDuration: 1747699200,\n startTime: 1747699200,\n justification:\n 'This is a very important request for streaming allowance for some very important thing',\n },\n },\n context: '0x00000000',\n dependencyInfo: [\n {\n factory: '0x69Aa2f9fe1572F1B640E1bbc512f5c3a734fc77c',\n factoryData: '0x0000000',\n },\n ],\n signerMeta: {\n delegationManager: '0xdb9B1e94B5b69Df7e401DDbedE43491141047dB3',\n },\n },\n siteOrigin: 'http://localhost:8000',\n});\n\nexport const mockErc20TokenStreamStorageEntry = (\n chainId: Hex,\n): StoredGatorPermission<AccountSigner, Erc20TokenStreamPermission> => ({\n permissionResponse: {\n chainId,\n address: '0xB68c70159E9892DdF5659ec42ff9BD2bbC23e778',\n signer: {\n type: 'account',\n data: { address: '0x4f71DA06987BfeDE90aF0b33E1e3e4ffDCEE7a63' },\n },\n permission: {\n type: 'erc20-token-stream',\n isAdjustmentAllowed: true,\n data: {\n initialAmount: '0x22b1c8c1227a0000',\n maxAmount: '0x6f05b59d3b20000',\n amountPerSecond: '0x6f05b59d3b20000',\n startTime: 1747699200,\n tokenAddress: '0xB68c70159E9892DdF5659ec42ff9BD2bbC23e778',\n justification:\n 'This is a very important request for streaming allowance for some very important thing',\n },\n },\n context: '0x00000000',\n dependencyInfo: [\n {\n factory: '0x69Aa2f9fe1572F1B640E1bbc512f5c3a734fc77c',\n factoryData: '0x0000000',\n },\n ],\n signerMeta: {\n delegationManager: '0xdb9B1e94B5b69Df7e401DDbedE43491141047dB3',\n },\n },\n siteOrigin: 'http://localhost:8000',\n});\n\nexport const mockErc20TokenPeriodicStorageEntry = (\n chainId: Hex,\n): StoredGatorPermission<AccountSigner, Erc20TokenPeriodicPermission> => ({\n permissionResponse: {\n chainId,\n address: '0xB68c70159E9892DdF5659ec42ff9BD2bbC23e778',\n signer: {\n type: 'account',\n data: { address: '0x4f71DA06987BfeDE90aF0b33E1e3e4ffDCEE7a63' },\n },\n permission: {\n type: 'erc20-token-periodic',\n isAdjustmentAllowed: true,\n data: {\n periodAmount: '0x22b1c8c1227a0000',\n periodDuration: 1747699200,\n startTime: 1747699200,\n tokenAddress: '0xB68c70159E9892DdF5659ec42ff9BD2bbC23e778',\n justification:\n 'This is a very important request for streaming allowance for some very important thing',\n },\n },\n context: '0x00000000',\n dependencyInfo: [\n {\n factory: '0x69Aa2f9fe1572F1B640E1bbc512f5c3a734fc77c',\n factoryData: '0x0000000',\n },\n ],\n signerMeta: {\n delegationManager: '0xdb9B1e94B5b69Df7e401DDbedE43491141047dB3',\n },\n },\n siteOrigin: 'http://localhost:8000',\n});\n\nexport const mockCustomPermissionStorageEntry = (\n chainId: Hex,\n data: Record<string, unknown>,\n): StoredGatorPermission<AccountSigner, CustomPermission> => ({\n permissionResponse: {\n chainId,\n address: '0xB68c70159E9892DdF5659ec42ff9BD2bbC23e778',\n signer: {\n type: 'account',\n data: { address: '0x4f71DA06987BfeDE90aF0b33E1e3e4ffDCEE7a63' },\n },\n permission: {\n type: 'custom',\n isAdjustmentAllowed: true,\n data: {\n justification:\n 'This is a very important request for streaming allowance for some very important thing',\n ...data,\n },\n },\n context: '0x00000000',\n dependencyInfo: [\n {\n factory: '0x69Aa2f9fe1572F1B640E1bbc512f5c3a734fc77c',\n factoryData: '0x0000000',\n },\n ],\n signerMeta: {\n delegationManager: '0xdb9B1e94B5b69Df7e401DDbedE43491141047dB3',\n },\n },\n siteOrigin: 'http://localhost:8000',\n});\n\nexport type MockGatorPermissionsStorageEntriesConfig = {\n [chainId: string]: {\n nativeTokenStream: number;\n nativeTokenPeriodic: number;\n erc20TokenStream: number;\n erc20TokenPeriodic: number;\n custom: {\n count: number;\n data: Record<string, unknown>[];\n };\n };\n};\n\n/**\n * Creates a mock gator permissions storage entry\n *\n * @param config - The config for the mock gator permissions storage entries.\n * @returns Mock gator permissions storage entry\n */\n/**\n * Creates mock gator permissions storage entries with unique expiry times\n *\n * @param config - The config for the mock gator permissions storage entries.\n * @returns Mock gator permissions storage entries\n */\nexport function mockGatorPermissionsStorageEntriesFactory(\n config: MockGatorPermissionsStorageEntriesConfig,\n): StoredGatorPermission<AccountSigner, PermissionTypesWithCustom>[] {\n const result: StoredGatorPermission<\n AccountSigner,\n PermissionTypesWithCustom\n >[] = [];\n\n Object.entries(config).forEach(([chainId, counts]) => {\n if (counts.custom.count !== counts.custom.data.length) {\n throw new Error('Custom permission count and data length mismatch');\n }\n\n /**\n * Creates a number of entries with unique expiry times\n *\n * @param count - The number of entries to create.\n * @param createEntry - The function to create an entry.\n */\n const createEntries = (\n count: number,\n createEntry: () => StoredGatorPermission<\n AccountSigner,\n PermissionTypesWithCustom\n >,\n ) => {\n for (let i = 0; i < count; i++) {\n const entry = createEntry();\n result.push(entry);\n }\n };\n\n createEntries(counts.nativeTokenStream, () =>\n mockNativeTokenStreamStorageEntry(chainId as Hex),\n );\n\n createEntries(counts.nativeTokenPeriodic, () =>\n mockNativeTokenPeriodicStorageEntry(chainId as Hex),\n );\n\n createEntries(counts.erc20TokenStream, () =>\n mockErc20TokenStreamStorageEntry(chainId as Hex),\n );\n\n createEntries(counts.erc20TokenPeriodic, () =>\n mockErc20TokenPeriodicStorageEntry(chainId as Hex),\n );\n\n // Create custom entries\n for (let i = 0; i < counts.custom.count; i++) {\n const entry = mockCustomPermissionStorageEntry(\n chainId as Hex,\n counts.custom.data[i],\n );\n result.push(entry);\n }\n });\n\n return result;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"types.cjs","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";;;AAcA;;GAEG;AACH,IAAY,mCAOX;AAPD,WAAY,mCAAmC;IAC7C,mGAA4D,CAAA;IAC5D,mGAA4D,CAAA;IAC5D,yGAAkE,CAAA;IAClE,0HAAmF,CAAA;IACnF,4FAAqD,CAAA;IACrD,yFAAkD,CAAA;AACpD,CAAC,EAPW,mCAAmC,mDAAnC,mCAAmC,QAO9C;AAED;;GAEG;AACH,IAAY,6BASX;AATD,WAAY,6BAA6B;IACvC;;OAEG;IACH,sHAAqF,CAAA;IACrF;;OAEG;IACH,4GAA2E,CAAA;AAC7E,CAAC,EATW,6BAA6B,6CAA7B,6BAA6B,QASxC","sourcesContent":["import type {\n PermissionTypes,\n Signer,\n BasePermission,\n NativeTokenStreamPermission,\n NativeTokenPeriodicPermission,\n Erc20TokenStreamPermission,\n Erc20TokenPeriodicPermission,\n Rule,\n MetaMaskBasePermissionData,\n} from '@metamask/7715-permission-types';\nimport type { Delegation } from '@metamask/delegation-core';\nimport type { Hex } from '@metamask/utils';\n\n/**\n * Enum for the error codes of the gator permissions controller.\n */\nexport enum GatorPermissionsControllerErrorCode {\n GatorPermissionsFetchError = 'gator-permissions-fetch-error',\n GatorPermissionsNotEnabled = 'gator-permissions-not-enabled',\n GatorPermissionsProviderError = 'gator-permissions-provider-error',\n GatorPermissionsMapSerializationError = 'gator-permissions-map-serialization-error',\n PermissionDecodingError = 'permission-decoding-error',\n OriginNotAllowedError = 'origin-not-allowed-error',\n}\n\n/**\n * Enum for the RPC methods of the gator permissions provider snap.\n */\nexport enum GatorPermissionsSnapRpcMethod {\n /**\n * This method is used by the metamask to request a permissions provider to get granted permissions for all sites.\n */\n PermissionProviderGetGrantedPermissions = 'permissionsProvider_getGrantedPermissions',\n /**\n * This method is used by the metamask to submit a revocation to the permissions provider.\n */\n PermissionProviderSubmitRevocation = 'permissionsProvider_submitRevocation',\n}\n\n/**\n * Represents a custom permission that are not of the standard ERC-7715 permission types.\n */\nexport type CustomPermission = BasePermission & {\n type: 'custom';\n data: MetaMaskBasePermissionData & Record<string, unknown>;\n};\n\n/**\n * Represents the type of the ERC-7715 permissions that can be granted including custom permissions.\n */\nexport type PermissionTypesWithCustom = PermissionTypes | CustomPermission;\n\n/**\n * Represents a ERC-7715 permission request.\n *\n * @template Signer - The type of the signer provided, either an AccountSigner or WalletSigner.\n * @template Permission - The type of the permission provided.\n */\nexport type PermissionRequest<\n TSigner extends Signer,\n TPermission extends PermissionTypesWithCustom,\n> = {\n /**\n * hex-encoding of uint256 defined the chain with EIP-155\n */\n chainId: Hex;\n\n /**\n *\n * The account being targeted for this permission request.\n * It is optional to let the user choose which account to grant permission from.\n */\n address?: Hex;\n\n /**\n * An account that is associated with the recipient of the granted 7715 permission or alternatively the wallet will manage the session.\n */\n signer: TSigner;\n\n /**\n * Defines the allowed behavior the signer can do on behalf of the account.\n */\n permission: TPermission;\n\n rules?: Rule[] | null;\n};\n\n/**\n * Represents a ERC-7715 permission response.\n *\n * @template Signer - The type of the signer provided, either an AccountSigner or WalletSigner.\n * @template Permission - The type of the permission provided.\n */\nexport type PermissionResponse<\n TSigner extends Signer,\n TPermission extends PermissionTypesWithCustom,\n> = PermissionRequest<TSigner, TPermission> & {\n /**\n * Is a catch-all to identify a permission for revoking permissions or submitting\n * Defined in ERC-7710.\n */\n context: Hex;\n\n /**\n * The dependencyInfo field is required and contains information needed to deploy accounts.\n * Each entry specifies a factory contract and its associated deployment data.\n * If no account deployment is needed when redeeming the permission, this array must be empty.\n * When non-empty, DApps MUST deploy the accounts by calling the factory contract with factoryData as the calldata.\n * Defined in ERC-4337.\n */\n dependencyInfo: {\n factory: Hex;\n factoryData: Hex;\n }[];\n\n /**\n * If the signer type is account then delegationManager is required as defined in ERC-7710.\n */\n signerMeta: {\n delegationManager: Hex;\n };\n};\n\n/**\n * Represents a sanitized version of the PermissionResponse type.\n * Some fields have been removed but the fields are still present in profile sync.\n *\n * @template Signer - The type of the signer provided, either an AccountSigner or WalletSigner.\n * @template Permission - The type of the permission provided.\n */\nexport type PermissionResponseSanitized<\n TSigner extends Signer,\n TPermission extends PermissionTypesWithCustom,\n> = Omit<\n PermissionResponse<TSigner, TPermission>,\n 'dependencyInfo' | 'signer' | 'rules'\n>;\n\n/**\n * Represents a gator ERC-7715 granted(ie. signed by an user account) permission entry that is stored in profile sync.\n *\n * @template Signer - The type of the signer provided, either an AccountSigner or WalletSigner.\n * @template Permission - The type of the permission provided\n */\nexport type StoredGatorPermission<\n TSigner extends Signer,\n TPermission extends PermissionTypesWithCustom,\n> = {\n permissionResponse: PermissionResponse<TSigner, TPermission>;\n siteOrigin: string;\n /**\n * Flag indicating whether this permission has been revoked.\n */\n isRevoked?: boolean;\n};\n\n/**\n * Represents a sanitized version of the StoredGatorPermission type. Some fields have been removed but the fields are still present in profile sync.\n *\n * @template Signer - The type of the signer provided, either an AccountSigner or WalletSigner.\n * @template Permission - The type of the permission provided.\n */\nexport type StoredGatorPermissionSanitized<\n TSigner extends Signer,\n TPermission extends PermissionTypesWithCustom,\n> = {\n permissionResponse: PermissionResponseSanitized<TSigner, TPermission>;\n siteOrigin: string;\n /**\n * Flag indicating whether this permission has been revoked.\n */\n isRevoked?: boolean;\n};\n\n/**\n * Represents a map of gator permissions by chainId and permission type.\n */\nexport type GatorPermissionsMap = {\n 'native-token-stream': {\n [chainId: Hex]: StoredGatorPermissionSanitized<\n Signer,\n NativeTokenStreamPermission\n >[];\n };\n 'native-token-periodic': {\n [chainId: Hex]: StoredGatorPermissionSanitized<\n Signer,\n NativeTokenPeriodicPermission\n >[];\n };\n 'erc20-token-stream': {\n [chainId: Hex]: StoredGatorPermissionSanitized<\n Signer,\n Erc20TokenStreamPermission\n >[];\n };\n 'erc20-token-periodic': {\n [chainId: Hex]: StoredGatorPermissionSanitized<\n Signer,\n Erc20TokenPeriodicPermission\n >[];\n };\n other: {\n [chainId: Hex]: StoredGatorPermissionSanitized<Signer, CustomPermission>[];\n };\n};\n\n/**\n * Represents the supported permission type(e.g. 'native-token-stream', 'native-token-periodic', 'erc20-token-stream', 'erc20-token-periodic') of the gator permissions map.\n */\nexport type SupportedGatorPermissionType = keyof GatorPermissionsMap;\n\n/**\n * Represents a map of gator permissions for a given permission type with key of chainId. The value being an array of gator permissions for that chainId.\n */\nexport type GatorPermissionsMapByPermissionType<\n TPermissionType extends SupportedGatorPermissionType,\n> = GatorPermissionsMap[TPermissionType];\n\n/**\n * Represents an array of gator permissions for a given permission type and chainId.\n */\nexport type GatorPermissionsListByPermissionTypeAndChainId<\n TPermissionType extends SupportedGatorPermissionType,\n> = GatorPermissionsMap[TPermissionType][Hex];\n\n/**\n * Represents the details of a delegation, that are required to decode a permission.\n */\nexport type DelegationDetails = Pick<\n Delegation<Hex>,\n 'caveats' | 'delegator' | 'delegate' | 'authority'\n>;\n\n/**\n * Represents the parameters for submitting a revocation.\n */\nexport type RevocationParams = {\n /**\n * The permission context as a hex string that identifies the permission to revoke.\n */\n permissionContext: Hex;\n};\n\n/**\n * Represents the parameters for adding a pending revocation.\n */\nexport type PendingRevocationParams = {\n /**\n * The transaction metadata ID to monitor.\n */\n txId: string;\n /**\n * The permission context as a hex string that identifies the permission to revoke.\n */\n permissionContext: Hex;\n};\n"]}
1
+ {"version":3,"file":"types.cjs","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";;;AAcA;;GAEG;AACH,IAAY,mCAOX;AAPD,WAAY,mCAAmC;IAC7C,mGAA4D,CAAA;IAC5D,mGAA4D,CAAA;IAC5D,yGAAkE,CAAA;IAClE,0HAAmF,CAAA;IACnF,4FAAqD,CAAA;IACrD,yFAAkD,CAAA;AACpD,CAAC,EAPW,mCAAmC,mDAAnC,mCAAmC,QAO9C;AAED;;GAEG;AACH,IAAY,6BASX;AATD,WAAY,6BAA6B;IACvC;;OAEG;IACH,sHAAqF,CAAA;IACrF;;OAEG;IACH,4GAA2E,CAAA;AAC7E,CAAC,EATW,6BAA6B,6CAA7B,6BAA6B,QASxC","sourcesContent":["import type {\n PermissionTypes,\n Signer,\n BasePermission,\n NativeTokenStreamPermission,\n NativeTokenPeriodicPermission,\n Erc20TokenStreamPermission,\n Erc20TokenPeriodicPermission,\n Rule,\n MetaMaskBasePermissionData,\n} from '@metamask/7715-permission-types';\nimport type { Delegation } from '@metamask/delegation-core';\nimport type { Hex } from '@metamask/utils';\n\n/**\n * Enum for the error codes of the gator permissions controller.\n */\nexport enum GatorPermissionsControllerErrorCode {\n GatorPermissionsFetchError = 'gator-permissions-fetch-error',\n GatorPermissionsNotEnabled = 'gator-permissions-not-enabled',\n GatorPermissionsProviderError = 'gator-permissions-provider-error',\n GatorPermissionsMapSerializationError = 'gator-permissions-map-serialization-error',\n PermissionDecodingError = 'permission-decoding-error',\n OriginNotAllowedError = 'origin-not-allowed-error',\n}\n\n/**\n * Enum for the RPC methods of the gator permissions provider snap.\n */\nexport enum GatorPermissionsSnapRpcMethod {\n /**\n * This method is used by the metamask to request a permissions provider to get granted permissions for all sites.\n */\n PermissionProviderGetGrantedPermissions = 'permissionsProvider_getGrantedPermissions',\n /**\n * This method is used by the metamask to submit a revocation to the permissions provider.\n */\n PermissionProviderSubmitRevocation = 'permissionsProvider_submitRevocation',\n}\n\n/**\n * Represents a custom permission that are not of the standard ERC-7715 permission types.\n */\nexport type CustomPermission = BasePermission & {\n type: 'custom';\n data: MetaMaskBasePermissionData & Record<string, unknown>;\n};\n\n/**\n * Represents the type of the ERC-7715 permissions that can be granted including custom permissions.\n */\nexport type PermissionTypesWithCustom = PermissionTypes | CustomPermission;\n\n/**\n * Represents a ERC-7715 permission request.\n *\n * @template Signer - The type of the signer provided, either an AccountSigner or WalletSigner.\n * @template Permission - The type of the permission provided.\n */\nexport type PermissionRequest<\n TSigner extends Signer,\n TPermission extends PermissionTypesWithCustom,\n> = {\n /**\n * hex-encoding of uint256 defined the chain with EIP-155\n */\n chainId: Hex;\n\n /**\n *\n * The account being targeted for this permission request.\n * It is optional to let the user choose which account to grant permission from.\n */\n address?: Hex;\n\n /**\n * An account that is associated with the recipient of the granted 7715 permission or alternatively the wallet will manage the session.\n */\n signer: TSigner;\n\n /**\n * Defines the allowed behavior the signer can do on behalf of the account.\n */\n permission: TPermission;\n\n rules?: Rule[] | null;\n};\n\n/**\n * Represents a ERC-7715 permission response.\n *\n * @template Signer - The type of the signer provided, either an AccountSigner or WalletSigner.\n * @template Permission - The type of the permission provided.\n */\nexport type PermissionResponse<\n TSigner extends Signer,\n TPermission extends PermissionTypesWithCustom,\n> = PermissionRequest<TSigner, TPermission> & {\n /**\n * Is a catch-all to identify a permission for revoking permissions or submitting\n * Defined in ERC-7710.\n */\n context: Hex;\n\n /**\n * The dependencyInfo field is required and contains information needed to deploy accounts.\n * Each entry specifies a factory contract and its associated deployment data.\n * If no account deployment is needed when redeeming the permission, this array must be empty.\n * When non-empty, DApps MUST deploy the accounts by calling the factory contract with factoryData as the calldata.\n * Defined in ERC-4337.\n */\n dependencyInfo: {\n factory: Hex;\n factoryData: Hex;\n }[];\n\n /**\n * If the signer type is account then delegationManager is required as defined in ERC-7710.\n */\n signerMeta: {\n delegationManager: Hex;\n };\n};\n\n/**\n * Represents a sanitized version of the PermissionResponse type.\n * Internal fields (dependencyInfo, signer) are removed\n *\n * @template Signer - The type of the signer provided, either an AccountSigner or WalletSigner.\n * @template Permission - The type of the permission provided.\n */\nexport type PermissionResponseSanitized<\n TSigner extends Signer,\n TPermission extends PermissionTypesWithCustom,\n> = Omit<PermissionResponse<TSigner, TPermission>, 'dependencyInfo' | 'signer'>;\n\n/**\n * Represents a gator ERC-7715 granted(ie. signed by an user account) permission entry that is stored in profile sync.\n *\n * @template Signer - The type of the signer provided, either an AccountSigner or WalletSigner.\n * @template Permission - The type of the permission provided\n */\nexport type StoredGatorPermission<\n TSigner extends Signer,\n TPermission extends PermissionTypesWithCustom,\n> = {\n permissionResponse: PermissionResponse<TSigner, TPermission>;\n siteOrigin: string;\n /**\n * Flag indicating whether this permission has been revoked.\n */\n isRevoked?: boolean;\n};\n\n/**\n * Represents a sanitized version of the StoredGatorPermission type. Some fields have been removed but the fields are still present in profile sync.\n *\n * @template Signer - The type of the signer provided, either an AccountSigner or WalletSigner.\n * @template Permission - The type of the permission provided.\n */\nexport type StoredGatorPermissionSanitized<\n TSigner extends Signer,\n TPermission extends PermissionTypesWithCustom,\n> = {\n permissionResponse: PermissionResponseSanitized<TSigner, TPermission>;\n siteOrigin: string;\n /**\n * Flag indicating whether this permission has been revoked.\n */\n isRevoked?: boolean;\n};\n\n/**\n * Represents a map of gator permissions by chainId and permission type.\n */\nexport type GatorPermissionsMap = {\n 'native-token-stream': {\n [chainId: Hex]: StoredGatorPermissionSanitized<\n Signer,\n NativeTokenStreamPermission\n >[];\n };\n 'native-token-periodic': {\n [chainId: Hex]: StoredGatorPermissionSanitized<\n Signer,\n NativeTokenPeriodicPermission\n >[];\n };\n 'erc20-token-stream': {\n [chainId: Hex]: StoredGatorPermissionSanitized<\n Signer,\n Erc20TokenStreamPermission\n >[];\n };\n 'erc20-token-periodic': {\n [chainId: Hex]: StoredGatorPermissionSanitized<\n Signer,\n Erc20TokenPeriodicPermission\n >[];\n };\n other: {\n [chainId: Hex]: StoredGatorPermissionSanitized<Signer, CustomPermission>[];\n };\n};\n\n/**\n * Represents the supported permission type(e.g. 'native-token-stream', 'native-token-periodic', 'erc20-token-stream', 'erc20-token-periodic') of the gator permissions map.\n */\nexport type SupportedGatorPermissionType = keyof GatorPermissionsMap;\n\n/**\n * Represents a map of gator permissions for a given permission type with key of chainId. The value being an array of gator permissions for that chainId.\n */\nexport type GatorPermissionsMapByPermissionType<\n TPermissionType extends SupportedGatorPermissionType,\n> = GatorPermissionsMap[TPermissionType];\n\n/**\n * Represents an array of gator permissions for a given permission type and chainId.\n */\nexport type GatorPermissionsListByPermissionTypeAndChainId<\n TPermissionType extends SupportedGatorPermissionType,\n> = GatorPermissionsMap[TPermissionType][Hex];\n\n/**\n * Represents the details of a delegation, that are required to decode a permission.\n */\nexport type DelegationDetails = Pick<\n Delegation<Hex>,\n 'caveats' | 'delegator' | 'delegate' | 'authority'\n>;\n\n/**\n * Represents the parameters for submitting a revocation.\n */\nexport type RevocationParams = {\n /**\n * The permission context as a hex string that identifies the permission to revoke.\n */\n permissionContext: Hex;\n};\n\n/**\n * Represents the parameters for adding a pending revocation.\n */\nexport type PendingRevocationParams = {\n /**\n * The transaction metadata ID to monitor.\n */\n txId: string;\n /**\n * The permission context as a hex string that identifies the permission to revoke.\n */\n permissionContext: Hex;\n};\n"]}
package/dist/types.d.cts CHANGED
@@ -95,12 +95,12 @@ export type PermissionResponse<TSigner extends Signer, TPermission extends Permi
95
95
  };
96
96
  /**
97
97
  * Represents a sanitized version of the PermissionResponse type.
98
- * Some fields have been removed but the fields are still present in profile sync.
98
+ * Internal fields (dependencyInfo, signer) are removed
99
99
  *
100
100
  * @template Signer - The type of the signer provided, either an AccountSigner or WalletSigner.
101
101
  * @template Permission - The type of the permission provided.
102
102
  */
103
- export type PermissionResponseSanitized<TSigner extends Signer, TPermission extends PermissionTypesWithCustom> = Omit<PermissionResponse<TSigner, TPermission>, 'dependencyInfo' | 'signer' | 'rules'>;
103
+ export type PermissionResponseSanitized<TSigner extends Signer, TPermission extends PermissionTypesWithCustom> = Omit<PermissionResponse<TSigner, TPermission>, 'dependencyInfo' | 'signer'>;
104
104
  /**
105
105
  * Represents a gator ERC-7715 granted(ie. signed by an user account) permission entry that is stored in profile sync.
106
106
  *
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.cts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.cts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EACf,MAAM,EACN,cAAc,EACd,2BAA2B,EAC3B,6BAA6B,EAC7B,0BAA0B,EAC1B,4BAA4B,EAC5B,IAAI,EACJ,0BAA0B,EAC3B,wCAAwC;AACzC,OAAO,KAAK,EAAE,UAAU,EAAE,kCAAkC;AAC5D,OAAO,KAAK,EAAE,GAAG,EAAE,wBAAwB;AAE3C;;GAEG;AACH,oBAAY,mCAAmC;IAC7C,0BAA0B,kCAAkC;IAC5D,0BAA0B,kCAAkC;IAC5D,6BAA6B,qCAAqC;IAClE,qCAAqC,8CAA8C;IACnF,uBAAuB,8BAA8B;IACrD,qBAAqB,6BAA6B;CACnD;AAED;;GAEG;AACH,oBAAY,6BAA6B;IACvC;;OAEG;IACH,uCAAuC,8CAA8C;IACrF;;OAEG;IACH,kCAAkC,yCAAyC;CAC5E;AAED;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,cAAc,GAAG;IAC9C,IAAI,EAAE,QAAQ,CAAC;IACf,IAAI,EAAE,0BAA0B,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC5D,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,yBAAyB,GAAG,eAAe,GAAG,gBAAgB,CAAC;AAE3E;;;;;GAKG;AACH,MAAM,MAAM,iBAAiB,CAC3B,OAAO,SAAS,MAAM,EACtB,WAAW,SAAS,yBAAyB,IAC3C;IACF;;OAEG;IACH,OAAO,EAAE,GAAG,CAAC;IAEb;;;;OAIG;IACH,OAAO,CAAC,EAAE,GAAG,CAAC;IAEd;;OAEG;IACH,MAAM,EAAE,OAAO,CAAC;IAEhB;;OAEG;IACH,UAAU,EAAE,WAAW,CAAC;IAExB,KAAK,CAAC,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC;CACvB,CAAC;AAEF;;;;;GAKG;AACH,MAAM,MAAM,kBAAkB,CAC5B,OAAO,SAAS,MAAM,EACtB,WAAW,SAAS,yBAAyB,IAC3C,iBAAiB,CAAC,OAAO,EAAE,WAAW,CAAC,GAAG;IAC5C;;;OAGG;IACH,OAAO,EAAE,GAAG,CAAC;IAEb;;;;;;OAMG;IACH,cAAc,EAAE;QACd,OAAO,EAAE,GAAG,CAAC;QACb,WAAW,EAAE,GAAG,CAAC;KAClB,EAAE,CAAC;IAEJ;;OAEG;IACH,UAAU,EAAE;QACV,iBAAiB,EAAE,GAAG,CAAC;KACxB,CAAC;CACH,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,MAAM,2BAA2B,CACrC,OAAO,SAAS,MAAM,EACtB,WAAW,SAAS,yBAAyB,IAC3C,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,WAAW,CAAC,EAAE,gBAAgB,GAAG,QAAQ,CAAC,CAAC;AAEhF;;;;;GAKG;AACH,MAAM,MAAM,qBAAqB,CAC/B,OAAO,SAAS,MAAM,EACtB,WAAW,SAAS,yBAAyB,IAC3C;IACF,kBAAkB,EAAE,kBAAkB,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;IAC7D,UAAU,EAAE,MAAM,CAAC;IACnB;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,CAAC;AAEF;;;;;GAKG;AACH,MAAM,MAAM,8BAA8B,CACxC,OAAO,SAAS,MAAM,EACtB,WAAW,SAAS,yBAAyB,IAC3C;IACF,kBAAkB,EAAE,2BAA2B,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;IACtE,UAAU,EAAE,MAAM,CAAC;IACnB;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,mBAAmB,GAAG;IAChC,qBAAqB,EAAE;QACrB,CAAC,OAAO,EAAE,GAAG,GAAG,8BAA8B,CAC5C,MAAM,EACN,2BAA2B,CAC5B,EAAE,CAAC;KACL,CAAC;IACF,uBAAuB,EAAE;QACvB,CAAC,OAAO,EAAE,GAAG,GAAG,8BAA8B,CAC5C,MAAM,EACN,6BAA6B,CAC9B,EAAE,CAAC;KACL,CAAC;IACF,oBAAoB,EAAE;QACpB,CAAC,OAAO,EAAE,GAAG,GAAG,8BAA8B,CAC5C,MAAM,EACN,0BAA0B,CAC3B,EAAE,CAAC;KACL,CAAC;IACF,sBAAsB,EAAE;QACtB,CAAC,OAAO,EAAE,GAAG,GAAG,8BAA8B,CAC5C,MAAM,EACN,4BAA4B,CAC7B,EAAE,CAAC;KACL,CAAC;IACF,KAAK,EAAE;QACL,CAAC,OAAO,EAAE,GAAG,GAAG,8BAA8B,CAAC,MAAM,EAAE,gBAAgB,CAAC,EAAE,CAAC;KAC5E,CAAC;CACH,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,4BAA4B,GAAG,MAAM,mBAAmB,CAAC;AAErE;;GAEG;AACH,MAAM,MAAM,mCAAmC,CAC7C,eAAe,SAAS,4BAA4B,IAClD,mBAAmB,CAAC,eAAe,CAAC,CAAC;AAEzC;;GAEG;AACH,MAAM,MAAM,8CAA8C,CACxD,eAAe,SAAS,4BAA4B,IAClD,mBAAmB,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC,CAAC;AAE9C;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG,IAAI,CAClC,UAAU,CAAC,GAAG,CAAC,EACf,SAAS,GAAG,WAAW,GAAG,UAAU,GAAG,WAAW,CACnD,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC7B;;OAEG;IACH,iBAAiB,EAAE,GAAG,CAAC;CACxB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,uBAAuB,GAAG;IACpC;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IACb;;OAEG;IACH,iBAAiB,EAAE,GAAG,CAAC;CACxB,CAAC"}
package/dist/types.d.mts CHANGED
@@ -95,12 +95,12 @@ export type PermissionResponse<TSigner extends Signer, TPermission extends Permi
95
95
  };
96
96
  /**
97
97
  * Represents a sanitized version of the PermissionResponse type.
98
- * Some fields have been removed but the fields are still present in profile sync.
98
+ * Internal fields (dependencyInfo, signer) are removed
99
99
  *
100
100
  * @template Signer - The type of the signer provided, either an AccountSigner or WalletSigner.
101
101
  * @template Permission - The type of the permission provided.
102
102
  */
103
- export type PermissionResponseSanitized<TSigner extends Signer, TPermission extends PermissionTypesWithCustom> = Omit<PermissionResponse<TSigner, TPermission>, 'dependencyInfo' | 'signer' | 'rules'>;
103
+ export type PermissionResponseSanitized<TSigner extends Signer, TPermission extends PermissionTypesWithCustom> = Omit<PermissionResponse<TSigner, TPermission>, 'dependencyInfo' | 'signer'>;
104
104
  /**
105
105
  * Represents a gator ERC-7715 granted(ie. signed by an user account) permission entry that is stored in profile sync.
106
106
  *
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.mts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.mts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EACf,MAAM,EACN,cAAc,EACd,2BAA2B,EAC3B,6BAA6B,EAC7B,0BAA0B,EAC1B,4BAA4B,EAC5B,IAAI,EACJ,0BAA0B,EAC3B,wCAAwC;AACzC,OAAO,KAAK,EAAE,UAAU,EAAE,kCAAkC;AAC5D,OAAO,KAAK,EAAE,GAAG,EAAE,wBAAwB;AAE3C;;GAEG;AACH,oBAAY,mCAAmC;IAC7C,0BAA0B,kCAAkC;IAC5D,0BAA0B,kCAAkC;IAC5D,6BAA6B,qCAAqC;IAClE,qCAAqC,8CAA8C;IACnF,uBAAuB,8BAA8B;IACrD,qBAAqB,6BAA6B;CACnD;AAED;;GAEG;AACH,oBAAY,6BAA6B;IACvC;;OAEG;IACH,uCAAuC,8CAA8C;IACrF;;OAEG;IACH,kCAAkC,yCAAyC;CAC5E;AAED;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,cAAc,GAAG;IAC9C,IAAI,EAAE,QAAQ,CAAC;IACf,IAAI,EAAE,0BAA0B,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC5D,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,yBAAyB,GAAG,eAAe,GAAG,gBAAgB,CAAC;AAE3E;;;;;GAKG;AACH,MAAM,MAAM,iBAAiB,CAC3B,OAAO,SAAS,MAAM,EACtB,WAAW,SAAS,yBAAyB,IAC3C;IACF;;OAEG;IACH,OAAO,EAAE,GAAG,CAAC;IAEb;;;;OAIG;IACH,OAAO,CAAC,EAAE,GAAG,CAAC;IAEd;;OAEG;IACH,MAAM,EAAE,OAAO,CAAC;IAEhB;;OAEG;IACH,UAAU,EAAE,WAAW,CAAC;IAExB,KAAK,CAAC,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC;CACvB,CAAC;AAEF;;;;;GAKG;AACH,MAAM,MAAM,kBAAkB,CAC5B,OAAO,SAAS,MAAM,EACtB,WAAW,SAAS,yBAAyB,IAC3C,iBAAiB,CAAC,OAAO,EAAE,WAAW,CAAC,GAAG;IAC5C;;;OAGG;IACH,OAAO,EAAE,GAAG,CAAC;IAEb;;;;;;OAMG;IACH,cAAc,EAAE;QACd,OAAO,EAAE,GAAG,CAAC;QACb,WAAW,EAAE,GAAG,CAAC;KAClB,EAAE,CAAC;IAEJ;;OAEG;IACH,UAAU,EAAE;QACV,iBAAiB,EAAE,GAAG,CAAC;KACxB,CAAC;CACH,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,MAAM,2BAA2B,CACrC,OAAO,SAAS,MAAM,EACtB,WAAW,SAAS,yBAAyB,IAC3C,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,WAAW,CAAC,EAAE,gBAAgB,GAAG,QAAQ,CAAC,CAAC;AAEhF;;;;;GAKG;AACH,MAAM,MAAM,qBAAqB,CAC/B,OAAO,SAAS,MAAM,EACtB,WAAW,SAAS,yBAAyB,IAC3C;IACF,kBAAkB,EAAE,kBAAkB,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;IAC7D,UAAU,EAAE,MAAM,CAAC;IACnB;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,CAAC;AAEF;;;;;GAKG;AACH,MAAM,MAAM,8BAA8B,CACxC,OAAO,SAAS,MAAM,EACtB,WAAW,SAAS,yBAAyB,IAC3C;IACF,kBAAkB,EAAE,2BAA2B,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;IACtE,UAAU,EAAE,MAAM,CAAC;IACnB;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,mBAAmB,GAAG;IAChC,qBAAqB,EAAE;QACrB,CAAC,OAAO,EAAE,GAAG,GAAG,8BAA8B,CAC5C,MAAM,EACN,2BAA2B,CAC5B,EAAE,CAAC;KACL,CAAC;IACF,uBAAuB,EAAE;QACvB,CAAC,OAAO,EAAE,GAAG,GAAG,8BAA8B,CAC5C,MAAM,EACN,6BAA6B,CAC9B,EAAE,CAAC;KACL,CAAC;IACF,oBAAoB,EAAE;QACpB,CAAC,OAAO,EAAE,GAAG,GAAG,8BAA8B,CAC5C,MAAM,EACN,0BAA0B,CAC3B,EAAE,CAAC;KACL,CAAC;IACF,sBAAsB,EAAE;QACtB,CAAC,OAAO,EAAE,GAAG,GAAG,8BAA8B,CAC5C,MAAM,EACN,4BAA4B,CAC7B,EAAE,CAAC;KACL,CAAC;IACF,KAAK,EAAE;QACL,CAAC,OAAO,EAAE,GAAG,GAAG,8BAA8B,CAAC,MAAM,EAAE,gBAAgB,CAAC,EAAE,CAAC;KAC5E,CAAC;CACH,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,4BAA4B,GAAG,MAAM,mBAAmB,CAAC;AAErE;;GAEG;AACH,MAAM,MAAM,mCAAmC,CAC7C,eAAe,SAAS,4BAA4B,IAClD,mBAAmB,CAAC,eAAe,CAAC,CAAC;AAEzC;;GAEG;AACH,MAAM,MAAM,8CAA8C,CACxD,eAAe,SAAS,4BAA4B,IAClD,mBAAmB,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC,CAAC;AAE9C;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG,IAAI,CAClC,UAAU,CAAC,GAAG,CAAC,EACf,SAAS,GAAG,WAAW,GAAG,UAAU,GAAG,WAAW,CACnD,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC7B;;OAEG;IACH,iBAAiB,EAAE,GAAG,CAAC;CACxB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,uBAAuB,GAAG;IACpC;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IACb;;OAEG;IACH,iBAAiB,EAAE,GAAG,CAAC;CACxB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.mjs","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAcA;;GAEG;AACH,MAAM,CAAN,IAAY,mCAOX;AAPD,WAAY,mCAAmC;IAC7C,mGAA4D,CAAA;IAC5D,mGAA4D,CAAA;IAC5D,yGAAkE,CAAA;IAClE,0HAAmF,CAAA;IACnF,4FAAqD,CAAA;IACrD,yFAAkD,CAAA;AACpD,CAAC,EAPW,mCAAmC,KAAnC,mCAAmC,QAO9C;AAED;;GAEG;AACH,MAAM,CAAN,IAAY,6BASX;AATD,WAAY,6BAA6B;IACvC;;OAEG;IACH,sHAAqF,CAAA;IACrF;;OAEG;IACH,4GAA2E,CAAA;AAC7E,CAAC,EATW,6BAA6B,KAA7B,6BAA6B,QASxC","sourcesContent":["import type {\n PermissionTypes,\n Signer,\n BasePermission,\n NativeTokenStreamPermission,\n NativeTokenPeriodicPermission,\n Erc20TokenStreamPermission,\n Erc20TokenPeriodicPermission,\n Rule,\n MetaMaskBasePermissionData,\n} from '@metamask/7715-permission-types';\nimport type { Delegation } from '@metamask/delegation-core';\nimport type { Hex } from '@metamask/utils';\n\n/**\n * Enum for the error codes of the gator permissions controller.\n */\nexport enum GatorPermissionsControllerErrorCode {\n GatorPermissionsFetchError = 'gator-permissions-fetch-error',\n GatorPermissionsNotEnabled = 'gator-permissions-not-enabled',\n GatorPermissionsProviderError = 'gator-permissions-provider-error',\n GatorPermissionsMapSerializationError = 'gator-permissions-map-serialization-error',\n PermissionDecodingError = 'permission-decoding-error',\n OriginNotAllowedError = 'origin-not-allowed-error',\n}\n\n/**\n * Enum for the RPC methods of the gator permissions provider snap.\n */\nexport enum GatorPermissionsSnapRpcMethod {\n /**\n * This method is used by the metamask to request a permissions provider to get granted permissions for all sites.\n */\n PermissionProviderGetGrantedPermissions = 'permissionsProvider_getGrantedPermissions',\n /**\n * This method is used by the metamask to submit a revocation to the permissions provider.\n */\n PermissionProviderSubmitRevocation = 'permissionsProvider_submitRevocation',\n}\n\n/**\n * Represents a custom permission that are not of the standard ERC-7715 permission types.\n */\nexport type CustomPermission = BasePermission & {\n type: 'custom';\n data: MetaMaskBasePermissionData & Record<string, unknown>;\n};\n\n/**\n * Represents the type of the ERC-7715 permissions that can be granted including custom permissions.\n */\nexport type PermissionTypesWithCustom = PermissionTypes | CustomPermission;\n\n/**\n * Represents a ERC-7715 permission request.\n *\n * @template Signer - The type of the signer provided, either an AccountSigner or WalletSigner.\n * @template Permission - The type of the permission provided.\n */\nexport type PermissionRequest<\n TSigner extends Signer,\n TPermission extends PermissionTypesWithCustom,\n> = {\n /**\n * hex-encoding of uint256 defined the chain with EIP-155\n */\n chainId: Hex;\n\n /**\n *\n * The account being targeted for this permission request.\n * It is optional to let the user choose which account to grant permission from.\n */\n address?: Hex;\n\n /**\n * An account that is associated with the recipient of the granted 7715 permission or alternatively the wallet will manage the session.\n */\n signer: TSigner;\n\n /**\n * Defines the allowed behavior the signer can do on behalf of the account.\n */\n permission: TPermission;\n\n rules?: Rule[] | null;\n};\n\n/**\n * Represents a ERC-7715 permission response.\n *\n * @template Signer - The type of the signer provided, either an AccountSigner or WalletSigner.\n * @template Permission - The type of the permission provided.\n */\nexport type PermissionResponse<\n TSigner extends Signer,\n TPermission extends PermissionTypesWithCustom,\n> = PermissionRequest<TSigner, TPermission> & {\n /**\n * Is a catch-all to identify a permission for revoking permissions or submitting\n * Defined in ERC-7710.\n */\n context: Hex;\n\n /**\n * The dependencyInfo field is required and contains information needed to deploy accounts.\n * Each entry specifies a factory contract and its associated deployment data.\n * If no account deployment is needed when redeeming the permission, this array must be empty.\n * When non-empty, DApps MUST deploy the accounts by calling the factory contract with factoryData as the calldata.\n * Defined in ERC-4337.\n */\n dependencyInfo: {\n factory: Hex;\n factoryData: Hex;\n }[];\n\n /**\n * If the signer type is account then delegationManager is required as defined in ERC-7710.\n */\n signerMeta: {\n delegationManager: Hex;\n };\n};\n\n/**\n * Represents a sanitized version of the PermissionResponse type.\n * Some fields have been removed but the fields are still present in profile sync.\n *\n * @template Signer - The type of the signer provided, either an AccountSigner or WalletSigner.\n * @template Permission - The type of the permission provided.\n */\nexport type PermissionResponseSanitized<\n TSigner extends Signer,\n TPermission extends PermissionTypesWithCustom,\n> = Omit<\n PermissionResponse<TSigner, TPermission>,\n 'dependencyInfo' | 'signer' | 'rules'\n>;\n\n/**\n * Represents a gator ERC-7715 granted(ie. signed by an user account) permission entry that is stored in profile sync.\n *\n * @template Signer - The type of the signer provided, either an AccountSigner or WalletSigner.\n * @template Permission - The type of the permission provided\n */\nexport type StoredGatorPermission<\n TSigner extends Signer,\n TPermission extends PermissionTypesWithCustom,\n> = {\n permissionResponse: PermissionResponse<TSigner, TPermission>;\n siteOrigin: string;\n /**\n * Flag indicating whether this permission has been revoked.\n */\n isRevoked?: boolean;\n};\n\n/**\n * Represents a sanitized version of the StoredGatorPermission type. Some fields have been removed but the fields are still present in profile sync.\n *\n * @template Signer - The type of the signer provided, either an AccountSigner or WalletSigner.\n * @template Permission - The type of the permission provided.\n */\nexport type StoredGatorPermissionSanitized<\n TSigner extends Signer,\n TPermission extends PermissionTypesWithCustom,\n> = {\n permissionResponse: PermissionResponseSanitized<TSigner, TPermission>;\n siteOrigin: string;\n /**\n * Flag indicating whether this permission has been revoked.\n */\n isRevoked?: boolean;\n};\n\n/**\n * Represents a map of gator permissions by chainId and permission type.\n */\nexport type GatorPermissionsMap = {\n 'native-token-stream': {\n [chainId: Hex]: StoredGatorPermissionSanitized<\n Signer,\n NativeTokenStreamPermission\n >[];\n };\n 'native-token-periodic': {\n [chainId: Hex]: StoredGatorPermissionSanitized<\n Signer,\n NativeTokenPeriodicPermission\n >[];\n };\n 'erc20-token-stream': {\n [chainId: Hex]: StoredGatorPermissionSanitized<\n Signer,\n Erc20TokenStreamPermission\n >[];\n };\n 'erc20-token-periodic': {\n [chainId: Hex]: StoredGatorPermissionSanitized<\n Signer,\n Erc20TokenPeriodicPermission\n >[];\n };\n other: {\n [chainId: Hex]: StoredGatorPermissionSanitized<Signer, CustomPermission>[];\n };\n};\n\n/**\n * Represents the supported permission type(e.g. 'native-token-stream', 'native-token-periodic', 'erc20-token-stream', 'erc20-token-periodic') of the gator permissions map.\n */\nexport type SupportedGatorPermissionType = keyof GatorPermissionsMap;\n\n/**\n * Represents a map of gator permissions for a given permission type with key of chainId. The value being an array of gator permissions for that chainId.\n */\nexport type GatorPermissionsMapByPermissionType<\n TPermissionType extends SupportedGatorPermissionType,\n> = GatorPermissionsMap[TPermissionType];\n\n/**\n * Represents an array of gator permissions for a given permission type and chainId.\n */\nexport type GatorPermissionsListByPermissionTypeAndChainId<\n TPermissionType extends SupportedGatorPermissionType,\n> = GatorPermissionsMap[TPermissionType][Hex];\n\n/**\n * Represents the details of a delegation, that are required to decode a permission.\n */\nexport type DelegationDetails = Pick<\n Delegation<Hex>,\n 'caveats' | 'delegator' | 'delegate' | 'authority'\n>;\n\n/**\n * Represents the parameters for submitting a revocation.\n */\nexport type RevocationParams = {\n /**\n * The permission context as a hex string that identifies the permission to revoke.\n */\n permissionContext: Hex;\n};\n\n/**\n * Represents the parameters for adding a pending revocation.\n */\nexport type PendingRevocationParams = {\n /**\n * The transaction metadata ID to monitor.\n */\n txId: string;\n /**\n * The permission context as a hex string that identifies the permission to revoke.\n */\n permissionContext: Hex;\n};\n"]}
1
+ {"version":3,"file":"types.mjs","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAcA;;GAEG;AACH,MAAM,CAAN,IAAY,mCAOX;AAPD,WAAY,mCAAmC;IAC7C,mGAA4D,CAAA;IAC5D,mGAA4D,CAAA;IAC5D,yGAAkE,CAAA;IAClE,0HAAmF,CAAA;IACnF,4FAAqD,CAAA;IACrD,yFAAkD,CAAA;AACpD,CAAC,EAPW,mCAAmC,KAAnC,mCAAmC,QAO9C;AAED;;GAEG;AACH,MAAM,CAAN,IAAY,6BASX;AATD,WAAY,6BAA6B;IACvC;;OAEG;IACH,sHAAqF,CAAA;IACrF;;OAEG;IACH,4GAA2E,CAAA;AAC7E,CAAC,EATW,6BAA6B,KAA7B,6BAA6B,QASxC","sourcesContent":["import type {\n PermissionTypes,\n Signer,\n BasePermission,\n NativeTokenStreamPermission,\n NativeTokenPeriodicPermission,\n Erc20TokenStreamPermission,\n Erc20TokenPeriodicPermission,\n Rule,\n MetaMaskBasePermissionData,\n} from '@metamask/7715-permission-types';\nimport type { Delegation } from '@metamask/delegation-core';\nimport type { Hex } from '@metamask/utils';\n\n/**\n * Enum for the error codes of the gator permissions controller.\n */\nexport enum GatorPermissionsControllerErrorCode {\n GatorPermissionsFetchError = 'gator-permissions-fetch-error',\n GatorPermissionsNotEnabled = 'gator-permissions-not-enabled',\n GatorPermissionsProviderError = 'gator-permissions-provider-error',\n GatorPermissionsMapSerializationError = 'gator-permissions-map-serialization-error',\n PermissionDecodingError = 'permission-decoding-error',\n OriginNotAllowedError = 'origin-not-allowed-error',\n}\n\n/**\n * Enum for the RPC methods of the gator permissions provider snap.\n */\nexport enum GatorPermissionsSnapRpcMethod {\n /**\n * This method is used by the metamask to request a permissions provider to get granted permissions for all sites.\n */\n PermissionProviderGetGrantedPermissions = 'permissionsProvider_getGrantedPermissions',\n /**\n * This method is used by the metamask to submit a revocation to the permissions provider.\n */\n PermissionProviderSubmitRevocation = 'permissionsProvider_submitRevocation',\n}\n\n/**\n * Represents a custom permission that are not of the standard ERC-7715 permission types.\n */\nexport type CustomPermission = BasePermission & {\n type: 'custom';\n data: MetaMaskBasePermissionData & Record<string, unknown>;\n};\n\n/**\n * Represents the type of the ERC-7715 permissions that can be granted including custom permissions.\n */\nexport type PermissionTypesWithCustom = PermissionTypes | CustomPermission;\n\n/**\n * Represents a ERC-7715 permission request.\n *\n * @template Signer - The type of the signer provided, either an AccountSigner or WalletSigner.\n * @template Permission - The type of the permission provided.\n */\nexport type PermissionRequest<\n TSigner extends Signer,\n TPermission extends PermissionTypesWithCustom,\n> = {\n /**\n * hex-encoding of uint256 defined the chain with EIP-155\n */\n chainId: Hex;\n\n /**\n *\n * The account being targeted for this permission request.\n * It is optional to let the user choose which account to grant permission from.\n */\n address?: Hex;\n\n /**\n * An account that is associated with the recipient of the granted 7715 permission or alternatively the wallet will manage the session.\n */\n signer: TSigner;\n\n /**\n * Defines the allowed behavior the signer can do on behalf of the account.\n */\n permission: TPermission;\n\n rules?: Rule[] | null;\n};\n\n/**\n * Represents a ERC-7715 permission response.\n *\n * @template Signer - The type of the signer provided, either an AccountSigner or WalletSigner.\n * @template Permission - The type of the permission provided.\n */\nexport type PermissionResponse<\n TSigner extends Signer,\n TPermission extends PermissionTypesWithCustom,\n> = PermissionRequest<TSigner, TPermission> & {\n /**\n * Is a catch-all to identify a permission for revoking permissions or submitting\n * Defined in ERC-7710.\n */\n context: Hex;\n\n /**\n * The dependencyInfo field is required and contains information needed to deploy accounts.\n * Each entry specifies a factory contract and its associated deployment data.\n * If no account deployment is needed when redeeming the permission, this array must be empty.\n * When non-empty, DApps MUST deploy the accounts by calling the factory contract with factoryData as the calldata.\n * Defined in ERC-4337.\n */\n dependencyInfo: {\n factory: Hex;\n factoryData: Hex;\n }[];\n\n /**\n * If the signer type is account then delegationManager is required as defined in ERC-7710.\n */\n signerMeta: {\n delegationManager: Hex;\n };\n};\n\n/**\n * Represents a sanitized version of the PermissionResponse type.\n * Internal fields (dependencyInfo, signer) are removed\n *\n * @template Signer - The type of the signer provided, either an AccountSigner or WalletSigner.\n * @template Permission - The type of the permission provided.\n */\nexport type PermissionResponseSanitized<\n TSigner extends Signer,\n TPermission extends PermissionTypesWithCustom,\n> = Omit<PermissionResponse<TSigner, TPermission>, 'dependencyInfo' | 'signer'>;\n\n/**\n * Represents a gator ERC-7715 granted(ie. signed by an user account) permission entry that is stored in profile sync.\n *\n * @template Signer - The type of the signer provided, either an AccountSigner or WalletSigner.\n * @template Permission - The type of the permission provided\n */\nexport type StoredGatorPermission<\n TSigner extends Signer,\n TPermission extends PermissionTypesWithCustom,\n> = {\n permissionResponse: PermissionResponse<TSigner, TPermission>;\n siteOrigin: string;\n /**\n * Flag indicating whether this permission has been revoked.\n */\n isRevoked?: boolean;\n};\n\n/**\n * Represents a sanitized version of the StoredGatorPermission type. Some fields have been removed but the fields are still present in profile sync.\n *\n * @template Signer - The type of the signer provided, either an AccountSigner or WalletSigner.\n * @template Permission - The type of the permission provided.\n */\nexport type StoredGatorPermissionSanitized<\n TSigner extends Signer,\n TPermission extends PermissionTypesWithCustom,\n> = {\n permissionResponse: PermissionResponseSanitized<TSigner, TPermission>;\n siteOrigin: string;\n /**\n * Flag indicating whether this permission has been revoked.\n */\n isRevoked?: boolean;\n};\n\n/**\n * Represents a map of gator permissions by chainId and permission type.\n */\nexport type GatorPermissionsMap = {\n 'native-token-stream': {\n [chainId: Hex]: StoredGatorPermissionSanitized<\n Signer,\n NativeTokenStreamPermission\n >[];\n };\n 'native-token-periodic': {\n [chainId: Hex]: StoredGatorPermissionSanitized<\n Signer,\n NativeTokenPeriodicPermission\n >[];\n };\n 'erc20-token-stream': {\n [chainId: Hex]: StoredGatorPermissionSanitized<\n Signer,\n Erc20TokenStreamPermission\n >[];\n };\n 'erc20-token-periodic': {\n [chainId: Hex]: StoredGatorPermissionSanitized<\n Signer,\n Erc20TokenPeriodicPermission\n >[];\n };\n other: {\n [chainId: Hex]: StoredGatorPermissionSanitized<Signer, CustomPermission>[];\n };\n};\n\n/**\n * Represents the supported permission type(e.g. 'native-token-stream', 'native-token-periodic', 'erc20-token-stream', 'erc20-token-periodic') of the gator permissions map.\n */\nexport type SupportedGatorPermissionType = keyof GatorPermissionsMap;\n\n/**\n * Represents a map of gator permissions for a given permission type with key of chainId. The value being an array of gator permissions for that chainId.\n */\nexport type GatorPermissionsMapByPermissionType<\n TPermissionType extends SupportedGatorPermissionType,\n> = GatorPermissionsMap[TPermissionType];\n\n/**\n * Represents an array of gator permissions for a given permission type and chainId.\n */\nexport type GatorPermissionsListByPermissionTypeAndChainId<\n TPermissionType extends SupportedGatorPermissionType,\n> = GatorPermissionsMap[TPermissionType][Hex];\n\n/**\n * Represents the details of a delegation, that are required to decode a permission.\n */\nexport type DelegationDetails = Pick<\n Delegation<Hex>,\n 'caveats' | 'delegator' | 'delegate' | 'authority'\n>;\n\n/**\n * Represents the parameters for submitting a revocation.\n */\nexport type RevocationParams = {\n /**\n * The permission context as a hex string that identifies the permission to revoke.\n */\n permissionContext: Hex;\n};\n\n/**\n * Represents the parameters for adding a pending revocation.\n */\nexport type PendingRevocationParams = {\n /**\n * The transaction metadata ID to monitor.\n */\n txId: string;\n /**\n * The permission context as a hex string that identifies the permission to revoke.\n */\n permissionContext: Hex;\n};\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@metamask-previews/gator-permissions-controller",
3
- "version": "0.7.0-preview-159e76e4",
3
+ "version": "0.7.0-preview-7cfbb337",
4
4
  "description": "Controller for managing gator permissions with profile sync integration",
5
5
  "keywords": [
6
6
  "MetaMask",
@@ -56,7 +56,7 @@
56
56
  "@metamask/snaps-controllers": "^14.0.1",
57
57
  "@metamask/snaps-sdk": "^9.0.0",
58
58
  "@metamask/snaps-utils": "^11.0.0",
59
- "@metamask/transaction-controller": "^62.3.1",
59
+ "@metamask/transaction-controller": "^62.4.0",
60
60
  "@metamask/utils": "^11.8.1"
61
61
  },
62
62
  "devDependencies": {