@metamask/gator-permissions-controller 0.7.0 → 1.0.0
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.
- package/CHANGELOG.md +30 -2
- package/dist/GatorPermissionsController.cjs +30 -48
- package/dist/GatorPermissionsController.cjs.map +1 -1
- package/dist/GatorPermissionsController.d.cts +2 -7
- package/dist/GatorPermissionsController.d.cts.map +1 -1
- package/dist/GatorPermissionsController.d.mts +2 -7
- package/dist/GatorPermissionsController.d.mts.map +1 -1
- package/dist/GatorPermissionsController.mjs +28 -46
- package/dist/GatorPermissionsController.mjs.map +1 -1
- package/dist/constants.cjs +9 -0
- package/dist/constants.cjs.map +1 -0
- package/dist/constants.d.cts +6 -0
- package/dist/constants.d.cts.map +1 -0
- package/dist/constants.d.mts +6 -0
- package/dist/constants.d.mts.map +1 -0
- package/dist/constants.mjs +6 -0
- package/dist/constants.mjs.map +1 -0
- package/dist/decodePermission/decodePermission.cjs +58 -13
- package/dist/decodePermission/decodePermission.cjs.map +1 -1
- package/dist/decodePermission/decodePermission.d.cts +1 -1
- package/dist/decodePermission/decodePermission.d.cts.map +1 -1
- package/dist/decodePermission/decodePermission.d.mts +1 -1
- package/dist/decodePermission/decodePermission.d.mts.map +1 -1
- package/dist/decodePermission/decodePermission.mjs +59 -14
- package/dist/decodePermission/decodePermission.mjs.map +1 -1
- package/dist/decodePermission/types.cjs.map +1 -1
- package/dist/decodePermission/types.d.cts +3 -3
- package/dist/decodePermission/types.d.cts.map +1 -1
- package/dist/decodePermission/types.d.mts +3 -3
- package/dist/decodePermission/types.d.mts.map +1 -1
- package/dist/decodePermission/types.mjs.map +1 -1
- package/dist/decodePermission/utils.cjs +36 -24
- package/dist/decodePermission/utils.cjs.map +1 -1
- package/dist/decodePermission/utils.d.cts +5 -4
- package/dist/decodePermission/utils.d.cts.map +1 -1
- package/dist/decodePermission/utils.d.mts +5 -4
- package/dist/decodePermission/utils.d.mts.map +1 -1
- package/dist/decodePermission/utils.mjs +36 -24
- package/dist/decodePermission/utils.mjs.map +1 -1
- package/dist/index.cjs +3 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +2 -1
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.mts +2 -1
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +1 -0
- package/dist/index.mjs.map +1 -1
- package/dist/test/mocks.cjs +25 -50
- package/dist/test/mocks.cjs.map +1 -1
- package/dist/test/mocks.d.cts +7 -7
- package/dist/test/mocks.d.cts.map +1 -1
- package/dist/test/mocks.d.mts +7 -7
- package/dist/test/mocks.d.mts.map +1 -1
- package/dist/test/mocks.mjs +25 -50
- package/dist/test/mocks.mjs.map +1 -1
- package/dist/types.cjs.map +1 -1
- package/dist/types.d.cts +25 -28
- package/dist/types.d.cts.map +1 -1
- package/dist/types.d.mts +25 -28
- package/dist/types.d.mts.map +1 -1
- package/dist/types.mjs.map +1 -1
- package/package.json +7 -7
|
@@ -11,6 +11,7 @@ const ENFORCER_CONTRACT_NAMES = {
|
|
|
11
11
|
TimestampEnforcer: 'TimestampEnforcer',
|
|
12
12
|
ValueLteEnforcer: 'ValueLteEnforcer',
|
|
13
13
|
NonceEnforcer: 'NonceEnforcer',
|
|
14
|
+
AllowedCalldataEnforcer: 'AllowedCalldataEnforcer',
|
|
14
15
|
};
|
|
15
16
|
/**
|
|
16
17
|
* Resolves and returns checksummed addresses of all known enforcer contracts
|
|
@@ -38,6 +39,7 @@ export const getChecksumEnforcersByChainId = (contracts) => {
|
|
|
38
39
|
const valueLteEnforcer = getChecksumContractAddress(ENFORCER_CONTRACT_NAMES.ValueLteEnforcer);
|
|
39
40
|
const timestampEnforcer = getChecksumContractAddress(ENFORCER_CONTRACT_NAMES.TimestampEnforcer);
|
|
40
41
|
const nonceEnforcer = getChecksumContractAddress(ENFORCER_CONTRACT_NAMES.NonceEnforcer);
|
|
42
|
+
const allowedCalldataEnforcer = getChecksumContractAddress(ENFORCER_CONTRACT_NAMES.AllowedCalldataEnforcer);
|
|
41
43
|
return {
|
|
42
44
|
erc20StreamingEnforcer,
|
|
43
45
|
erc20PeriodicEnforcer,
|
|
@@ -47,13 +49,14 @@ export const getChecksumEnforcersByChainId = (contracts) => {
|
|
|
47
49
|
valueLteEnforcer,
|
|
48
50
|
timestampEnforcer,
|
|
49
51
|
nonceEnforcer,
|
|
52
|
+
allowedCalldataEnforcer,
|
|
50
53
|
};
|
|
51
54
|
};
|
|
52
55
|
/**
|
|
53
56
|
* Builds the canonical set of permission matching rules for a chain.
|
|
54
57
|
*
|
|
55
58
|
* Each rule specifies the `permissionType`, the set of `requiredEnforcers`
|
|
56
|
-
* that must be present, and the set of `
|
|
59
|
+
* that must be present, and the set of `optionalEnforcers` that may appear in
|
|
57
60
|
* addition to the required set.
|
|
58
61
|
*
|
|
59
62
|
* @param contracts - The deployed contracts for the chain.
|
|
@@ -61,46 +64,55 @@ export const getChecksumEnforcersByChainId = (contracts) => {
|
|
|
61
64
|
* @throws Propagates any errors from resolving enforcer addresses.
|
|
62
65
|
*/
|
|
63
66
|
export const createPermissionRulesForChainId = (contracts) => {
|
|
64
|
-
const { erc20StreamingEnforcer, erc20PeriodicEnforcer, nativeTokenStreamingEnforcer, nativeTokenPeriodicEnforcer, exactCalldataEnforcer, valueLteEnforcer, timestampEnforcer, nonceEnforcer, } = getChecksumEnforcersByChainId(contracts);
|
|
65
|
-
// the
|
|
66
|
-
const
|
|
67
|
+
const { erc20StreamingEnforcer, erc20PeriodicEnforcer, nativeTokenStreamingEnforcer, nativeTokenPeriodicEnforcer, exactCalldataEnforcer, valueLteEnforcer, timestampEnforcer, nonceEnforcer, allowedCalldataEnforcer, } = getChecksumEnforcersByChainId(contracts);
|
|
68
|
+
// the optional enforcers are the same for all permission types
|
|
69
|
+
const optionalEnforcers = new Set([timestampEnforcer]);
|
|
67
70
|
const permissionRules = [
|
|
68
71
|
{
|
|
69
|
-
requiredEnforcers: new
|
|
70
|
-
nativeTokenStreamingEnforcer,
|
|
71
|
-
exactCalldataEnforcer,
|
|
72
|
-
nonceEnforcer,
|
|
72
|
+
requiredEnforcers: new Map([
|
|
73
|
+
[nativeTokenStreamingEnforcer, 1],
|
|
74
|
+
[exactCalldataEnforcer, 1],
|
|
75
|
+
[nonceEnforcer, 1],
|
|
73
76
|
]),
|
|
74
|
-
|
|
77
|
+
optionalEnforcers,
|
|
75
78
|
permissionType: 'native-token-stream',
|
|
76
79
|
},
|
|
77
80
|
{
|
|
78
|
-
requiredEnforcers: new
|
|
79
|
-
nativeTokenPeriodicEnforcer,
|
|
80
|
-
exactCalldataEnforcer,
|
|
81
|
-
nonceEnforcer,
|
|
81
|
+
requiredEnforcers: new Map([
|
|
82
|
+
[nativeTokenPeriodicEnforcer, 1],
|
|
83
|
+
[exactCalldataEnforcer, 1],
|
|
84
|
+
[nonceEnforcer, 1],
|
|
82
85
|
]),
|
|
83
|
-
|
|
86
|
+
optionalEnforcers,
|
|
84
87
|
permissionType: 'native-token-periodic',
|
|
85
88
|
},
|
|
86
89
|
{
|
|
87
|
-
requiredEnforcers: new
|
|
88
|
-
erc20StreamingEnforcer,
|
|
89
|
-
valueLteEnforcer,
|
|
90
|
-
nonceEnforcer,
|
|
90
|
+
requiredEnforcers: new Map([
|
|
91
|
+
[erc20StreamingEnforcer, 1],
|
|
92
|
+
[valueLteEnforcer, 1],
|
|
93
|
+
[nonceEnforcer, 1],
|
|
91
94
|
]),
|
|
92
|
-
|
|
95
|
+
optionalEnforcers,
|
|
93
96
|
permissionType: 'erc20-token-stream',
|
|
94
97
|
},
|
|
95
98
|
{
|
|
96
|
-
requiredEnforcers: new
|
|
97
|
-
erc20PeriodicEnforcer,
|
|
98
|
-
valueLteEnforcer,
|
|
99
|
-
nonceEnforcer,
|
|
99
|
+
requiredEnforcers: new Map([
|
|
100
|
+
[erc20PeriodicEnforcer, 1],
|
|
101
|
+
[valueLteEnforcer, 1],
|
|
102
|
+
[nonceEnforcer, 1],
|
|
100
103
|
]),
|
|
101
|
-
|
|
104
|
+
optionalEnforcers,
|
|
102
105
|
permissionType: 'erc20-token-periodic',
|
|
103
106
|
},
|
|
107
|
+
{
|
|
108
|
+
requiredEnforcers: new Map([
|
|
109
|
+
[allowedCalldataEnforcer, 2],
|
|
110
|
+
[valueLteEnforcer, 1],
|
|
111
|
+
[nonceEnforcer, 1],
|
|
112
|
+
]),
|
|
113
|
+
optionalEnforcers,
|
|
114
|
+
permissionType: 'erc20-token-revocation',
|
|
115
|
+
},
|
|
104
116
|
];
|
|
105
117
|
return permissionRules;
|
|
106
118
|
};
|
|
@@ -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 } from '@metamask/utils';\nimport 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: Map<Hex, number>;\n optionalEnforcers: 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 AllowedCalldataEnforcer: 'AllowedCalldataEnforcer',\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 const allowedCalldataEnforcer = getChecksumContractAddress(\n ENFORCER_CONTRACT_NAMES.AllowedCalldataEnforcer,\n );\n\n return {\n erc20StreamingEnforcer,\n erc20PeriodicEnforcer,\n nativeTokenStreamingEnforcer,\n nativeTokenPeriodicEnforcer,\n exactCalldataEnforcer,\n valueLteEnforcer,\n timestampEnforcer,\n nonceEnforcer,\n allowedCalldataEnforcer,\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 `optionalEnforcers` 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 allowedCalldataEnforcer,\n } = getChecksumEnforcersByChainId(contracts);\n\n // the optional enforcers are the same for all permission types\n const optionalEnforcers = new Set<Hex>([timestampEnforcer]);\n\n const permissionRules: PermissionRule[] = [\n {\n requiredEnforcers: new Map<Hex, number>([\n [nativeTokenStreamingEnforcer, 1],\n [exactCalldataEnforcer, 1],\n [nonceEnforcer, 1],\n ]),\n optionalEnforcers,\n permissionType: 'native-token-stream',\n },\n {\n requiredEnforcers: new Map<Hex, number>([\n [nativeTokenPeriodicEnforcer, 1],\n [exactCalldataEnforcer, 1],\n [nonceEnforcer, 1],\n ]),\n optionalEnforcers,\n permissionType: 'native-token-periodic',\n },\n {\n requiredEnforcers: new Map<Hex, number>([\n [erc20StreamingEnforcer, 1],\n [valueLteEnforcer, 1],\n [nonceEnforcer, 1],\n ]),\n optionalEnforcers,\n permissionType: 'erc20-token-stream',\n },\n {\n requiredEnforcers: new Map<Hex, number>([\n [erc20PeriodicEnforcer, 1],\n [valueLteEnforcer, 1],\n [nonceEnforcer, 1],\n ]),\n optionalEnforcers,\n permissionType: 'erc20-token-periodic',\n },\n {\n requiredEnforcers: new Map<Hex, number>([\n [allowedCalldataEnforcer, 2],\n [valueLteEnforcer, 1],\n [nonceEnforcer, 1],\n ]),\n optionalEnforcers,\n permissionType: 'erc20-token-revocation',\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
|
package/dist/index.cjs.map
CHANGED
|
@@ -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
|
|
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 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
|
-
export type { NativeTokenStreamPermission, NativeTokenPeriodicPermission, Erc20TokenStreamPermission, Erc20TokenPeriodicPermission,
|
|
7
|
+
export type { NativeTokenStreamPermission, NativeTokenPeriodicPermission, Erc20TokenStreamPermission, Erc20TokenPeriodicPermission, MetaMaskBasePermissionData, } from "@metamask/7715-permission-types";
|
|
7
8
|
//# sourceMappingURL=index.d.cts.map
|
package/dist/index.d.cts.map
CHANGED
|
@@ -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,
|
|
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,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
|
-
export type { NativeTokenStreamPermission, NativeTokenPeriodicPermission, Erc20TokenStreamPermission, Erc20TokenPeriodicPermission,
|
|
7
|
+
export type { NativeTokenStreamPermission, NativeTokenPeriodicPermission, Erc20TokenStreamPermission, Erc20TokenPeriodicPermission, MetaMaskBasePermissionData, } from "@metamask/7715-permission-types";
|
|
7
8
|
//# sourceMappingURL=index.d.mts.map
|
package/dist/index.d.mts.map
CHANGED
|
@@ -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,
|
|
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,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
|
package/dist/index.mjs.map
CHANGED
|
@@ -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
|
|
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 MetaMaskBasePermissionData,\n} from '@metamask/7715-permission-types';\n"]}
|
package/dist/test/mocks.cjs
CHANGED
|
@@ -3,12 +3,9 @@ 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
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
type: 'account',
|
|
10
|
-
data: { address: '0x4f71DA06987BfeDE90aF0b33E1e3e4ffDCEE7a63' },
|
|
11
|
-
},
|
|
6
|
+
chainId,
|
|
7
|
+
from: '0xB68c70159E9892DdF5659ec42ff9BD2bbC23e778',
|
|
8
|
+
to: '0x4f71DA06987BfeDE90aF0b33E1e3e4ffDCEE7a63',
|
|
12
9
|
permission: {
|
|
13
10
|
type: 'native-token-stream',
|
|
14
11
|
isAdjustmentAllowed: true,
|
|
@@ -21,27 +18,22 @@ const mockNativeTokenStreamStorageEntry = (chainId) => ({
|
|
|
21
18
|
},
|
|
22
19
|
},
|
|
23
20
|
context: '0x00000000',
|
|
24
|
-
|
|
21
|
+
dependencies: [
|
|
25
22
|
{
|
|
26
23
|
factory: '0x69Aa2f9fe1572F1B640E1bbc512f5c3a734fc77c',
|
|
27
24
|
factoryData: '0x0000000',
|
|
28
25
|
},
|
|
29
26
|
],
|
|
30
|
-
|
|
31
|
-
delegationManager: '0xdb9B1e94B5b69Df7e401DDbedE43491141047dB3',
|
|
32
|
-
},
|
|
27
|
+
delegationManager: '0xdb9B1e94B5b69Df7e401DDbedE43491141047dB3',
|
|
33
28
|
},
|
|
34
29
|
siteOrigin: 'http://localhost:8000',
|
|
35
30
|
});
|
|
36
31
|
exports.mockNativeTokenStreamStorageEntry = mockNativeTokenStreamStorageEntry;
|
|
37
32
|
const mockNativeTokenPeriodicStorageEntry = (chainId) => ({
|
|
38
33
|
permissionResponse: {
|
|
39
|
-
chainId
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
type: 'account',
|
|
43
|
-
data: { address: '0x4f71DA06987BfeDE90aF0b33E1e3e4ffDCEE7a63' },
|
|
44
|
-
},
|
|
34
|
+
chainId,
|
|
35
|
+
from: '0xB68c70159E9892DdF5659ec42ff9BD2bbC23e778',
|
|
36
|
+
to: '0x4f71DA06987BfeDE90aF0b33E1e3e4ffDCEE7a63',
|
|
45
37
|
permission: {
|
|
46
38
|
type: 'native-token-periodic',
|
|
47
39
|
isAdjustmentAllowed: true,
|
|
@@ -53,27 +45,22 @@ const mockNativeTokenPeriodicStorageEntry = (chainId) => ({
|
|
|
53
45
|
},
|
|
54
46
|
},
|
|
55
47
|
context: '0x00000000',
|
|
56
|
-
|
|
48
|
+
dependencies: [
|
|
57
49
|
{
|
|
58
50
|
factory: '0x69Aa2f9fe1572F1B640E1bbc512f5c3a734fc77c',
|
|
59
51
|
factoryData: '0x0000000',
|
|
60
52
|
},
|
|
61
53
|
],
|
|
62
|
-
|
|
63
|
-
delegationManager: '0xdb9B1e94B5b69Df7e401DDbedE43491141047dB3',
|
|
64
|
-
},
|
|
54
|
+
delegationManager: '0xdb9B1e94B5b69Df7e401DDbedE43491141047dB3',
|
|
65
55
|
},
|
|
66
56
|
siteOrigin: 'http://localhost:8000',
|
|
67
57
|
});
|
|
68
58
|
exports.mockNativeTokenPeriodicStorageEntry = mockNativeTokenPeriodicStorageEntry;
|
|
69
59
|
const mockErc20TokenStreamStorageEntry = (chainId) => ({
|
|
70
60
|
permissionResponse: {
|
|
71
|
-
chainId
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
type: 'account',
|
|
75
|
-
data: { address: '0x4f71DA06987BfeDE90aF0b33E1e3e4ffDCEE7a63' },
|
|
76
|
-
},
|
|
61
|
+
chainId,
|
|
62
|
+
from: '0xB68c70159E9892DdF5659ec42ff9BD2bbC23e778',
|
|
63
|
+
to: '0x4f71DA06987BfeDE90aF0b33E1e3e4ffDCEE7a63',
|
|
77
64
|
permission: {
|
|
78
65
|
type: 'erc20-token-stream',
|
|
79
66
|
isAdjustmentAllowed: true,
|
|
@@ -87,27 +74,22 @@ const mockErc20TokenStreamStorageEntry = (chainId) => ({
|
|
|
87
74
|
},
|
|
88
75
|
},
|
|
89
76
|
context: '0x00000000',
|
|
90
|
-
|
|
77
|
+
dependencies: [
|
|
91
78
|
{
|
|
92
79
|
factory: '0x69Aa2f9fe1572F1B640E1bbc512f5c3a734fc77c',
|
|
93
80
|
factoryData: '0x0000000',
|
|
94
81
|
},
|
|
95
82
|
],
|
|
96
|
-
|
|
97
|
-
delegationManager: '0xdb9B1e94B5b69Df7e401DDbedE43491141047dB3',
|
|
98
|
-
},
|
|
83
|
+
delegationManager: '0xdb9B1e94B5b69Df7e401DDbedE43491141047dB3',
|
|
99
84
|
},
|
|
100
85
|
siteOrigin: 'http://localhost:8000',
|
|
101
86
|
});
|
|
102
87
|
exports.mockErc20TokenStreamStorageEntry = mockErc20TokenStreamStorageEntry;
|
|
103
88
|
const mockErc20TokenPeriodicStorageEntry = (chainId) => ({
|
|
104
89
|
permissionResponse: {
|
|
105
|
-
chainId
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
type: 'account',
|
|
109
|
-
data: { address: '0x4f71DA06987BfeDE90aF0b33E1e3e4ffDCEE7a63' },
|
|
110
|
-
},
|
|
90
|
+
chainId,
|
|
91
|
+
from: '0xB68c70159E9892DdF5659ec42ff9BD2bbC23e778',
|
|
92
|
+
to: '0x4f71DA06987BfeDE90aF0b33E1e3e4ffDCEE7a63',
|
|
111
93
|
permission: {
|
|
112
94
|
type: 'erc20-token-periodic',
|
|
113
95
|
isAdjustmentAllowed: true,
|
|
@@ -120,27 +102,22 @@ const mockErc20TokenPeriodicStorageEntry = (chainId) => ({
|
|
|
120
102
|
},
|
|
121
103
|
},
|
|
122
104
|
context: '0x00000000',
|
|
123
|
-
|
|
105
|
+
dependencies: [
|
|
124
106
|
{
|
|
125
107
|
factory: '0x69Aa2f9fe1572F1B640E1bbc512f5c3a734fc77c',
|
|
126
108
|
factoryData: '0x0000000',
|
|
127
109
|
},
|
|
128
110
|
],
|
|
129
|
-
|
|
130
|
-
delegationManager: '0xdb9B1e94B5b69Df7e401DDbedE43491141047dB3',
|
|
131
|
-
},
|
|
111
|
+
delegationManager: '0xdb9B1e94B5b69Df7e401DDbedE43491141047dB3',
|
|
132
112
|
},
|
|
133
113
|
siteOrigin: 'http://localhost:8000',
|
|
134
114
|
});
|
|
135
115
|
exports.mockErc20TokenPeriodicStorageEntry = mockErc20TokenPeriodicStorageEntry;
|
|
136
116
|
const mockCustomPermissionStorageEntry = (chainId, data) => ({
|
|
137
117
|
permissionResponse: {
|
|
138
|
-
chainId
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
type: 'account',
|
|
142
|
-
data: { address: '0x4f71DA06987BfeDE90aF0b33E1e3e4ffDCEE7a63' },
|
|
143
|
-
},
|
|
118
|
+
chainId,
|
|
119
|
+
from: '0xB68c70159E9892DdF5659ec42ff9BD2bbC23e778',
|
|
120
|
+
to: '0x4f71DA06987BfeDE90aF0b33E1e3e4ffDCEE7a63',
|
|
144
121
|
permission: {
|
|
145
122
|
type: 'custom',
|
|
146
123
|
isAdjustmentAllowed: true,
|
|
@@ -150,15 +127,13 @@ const mockCustomPermissionStorageEntry = (chainId, data) => ({
|
|
|
150
127
|
},
|
|
151
128
|
},
|
|
152
129
|
context: '0x00000000',
|
|
153
|
-
|
|
130
|
+
dependencies: [
|
|
154
131
|
{
|
|
155
132
|
factory: '0x69Aa2f9fe1572F1B640E1bbc512f5c3a734fc77c',
|
|
156
133
|
factoryData: '0x0000000',
|
|
157
134
|
},
|
|
158
135
|
],
|
|
159
|
-
|
|
160
|
-
delegationManager: '0xdb9B1e94B5b69Df7e401DDbedE43491141047dB3',
|
|
161
|
-
},
|
|
136
|
+
delegationManager: '0xdb9B1e94B5b69Df7e401DDbedE43491141047dB3',
|
|
162
137
|
},
|
|
163
138
|
siteOrigin: 'http://localhost:8000',
|
|
164
139
|
});
|
package/dist/test/mocks.cjs.map
CHANGED
|
@@ -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 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<NativeTokenStreamPermission> => ({\n permissionResponse: {\n chainId,\n from: '0xB68c70159E9892DdF5659ec42ff9BD2bbC23e778',\n to: '0x4f71DA06987BfeDE90aF0b33E1e3e4ffDCEE7a63',\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 dependencies: [\n {\n factory: '0x69Aa2f9fe1572F1B640E1bbc512f5c3a734fc77c',\n factoryData: '0x0000000',\n },\n ],\n delegationManager: '0xdb9B1e94B5b69Df7e401DDbedE43491141047dB3',\n },\n siteOrigin: 'http://localhost:8000',\n});\n\nexport const mockNativeTokenPeriodicStorageEntry = (\n chainId: Hex,\n): StoredGatorPermission<NativeTokenPeriodicPermission> => ({\n permissionResponse: {\n chainId,\n from: '0xB68c70159E9892DdF5659ec42ff9BD2bbC23e778',\n to: '0x4f71DA06987BfeDE90aF0b33E1e3e4ffDCEE7a63',\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 dependencies: [\n {\n factory: '0x69Aa2f9fe1572F1B640E1bbc512f5c3a734fc77c',\n factoryData: '0x0000000',\n },\n ],\n delegationManager: '0xdb9B1e94B5b69Df7e401DDbedE43491141047dB3',\n },\n siteOrigin: 'http://localhost:8000',\n});\n\nexport const mockErc20TokenStreamStorageEntry = (\n chainId: Hex,\n): StoredGatorPermission<Erc20TokenStreamPermission> => ({\n permissionResponse: {\n chainId,\n from: '0xB68c70159E9892DdF5659ec42ff9BD2bbC23e778',\n to: '0x4f71DA06987BfeDE90aF0b33E1e3e4ffDCEE7a63',\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 dependencies: [\n {\n factory: '0x69Aa2f9fe1572F1B640E1bbc512f5c3a734fc77c',\n factoryData: '0x0000000',\n },\n ],\n delegationManager: '0xdb9B1e94B5b69Df7e401DDbedE43491141047dB3',\n },\n siteOrigin: 'http://localhost:8000',\n});\n\nexport const mockErc20TokenPeriodicStorageEntry = (\n chainId: Hex,\n): StoredGatorPermission<Erc20TokenPeriodicPermission> => ({\n permissionResponse: {\n chainId,\n from: '0xB68c70159E9892DdF5659ec42ff9BD2bbC23e778',\n to: '0x4f71DA06987BfeDE90aF0b33E1e3e4ffDCEE7a63',\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 dependencies: [\n {\n factory: '0x69Aa2f9fe1572F1B640E1bbc512f5c3a734fc77c',\n factoryData: '0x0000000',\n },\n ],\n delegationManager: '0xdb9B1e94B5b69Df7e401DDbedE43491141047dB3',\n },\n siteOrigin: 'http://localhost:8000',\n});\n\nexport const mockCustomPermissionStorageEntry = (\n chainId: Hex,\n data: Record<string, unknown>,\n): StoredGatorPermission<CustomPermission> => ({\n permissionResponse: {\n chainId,\n from: '0xB68c70159E9892DdF5659ec42ff9BD2bbC23e778',\n to: '0x4f71DA06987BfeDE90aF0b33E1e3e4ffDCEE7a63',\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 dependencies: [\n {\n factory: '0x69Aa2f9fe1572F1B640E1bbc512f5c3a734fc77c',\n factoryData: '0x0000000',\n },\n ],\n delegationManager: '0xdb9B1e94B5b69Df7e401DDbedE43491141047dB3',\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<PermissionTypesWithCustom>[] {\n const result: StoredGatorPermission<PermissionTypesWithCustom>[] = [];\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<PermissionTypesWithCustom>,\n ): void => {\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"]}
|
package/dist/test/mocks.d.cts
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { Erc20TokenPeriodicPermission, Erc20TokenStreamPermission, NativeTokenPeriodicPermission, NativeTokenStreamPermission } from "@metamask/7715-permission-types";
|
|
2
2
|
import type { Hex } from "@metamask/utils";
|
|
3
3
|
import type { CustomPermission, PermissionTypesWithCustom, StoredGatorPermission } from "../types.cjs";
|
|
4
|
-
export declare const mockNativeTokenStreamStorageEntry: (chainId: Hex) => StoredGatorPermission<
|
|
5
|
-
export declare const mockNativeTokenPeriodicStorageEntry: (chainId: Hex) => StoredGatorPermission<
|
|
6
|
-
export declare const mockErc20TokenStreamStorageEntry: (chainId: Hex) => StoredGatorPermission<
|
|
7
|
-
export declare const mockErc20TokenPeriodicStorageEntry: (chainId: Hex) => StoredGatorPermission<
|
|
8
|
-
export declare const mockCustomPermissionStorageEntry: (chainId: Hex, data: Record<string, unknown>) => StoredGatorPermission<
|
|
4
|
+
export declare const mockNativeTokenStreamStorageEntry: (chainId: Hex) => StoredGatorPermission<NativeTokenStreamPermission>;
|
|
5
|
+
export declare const mockNativeTokenPeriodicStorageEntry: (chainId: Hex) => StoredGatorPermission<NativeTokenPeriodicPermission>;
|
|
6
|
+
export declare const mockErc20TokenStreamStorageEntry: (chainId: Hex) => StoredGatorPermission<Erc20TokenStreamPermission>;
|
|
7
|
+
export declare const mockErc20TokenPeriodicStorageEntry: (chainId: Hex) => StoredGatorPermission<Erc20TokenPeriodicPermission>;
|
|
8
|
+
export declare const mockCustomPermissionStorageEntry: (chainId: Hex, data: Record<string, unknown>) => StoredGatorPermission<CustomPermission>;
|
|
9
9
|
export type MockGatorPermissionsStorageEntriesConfig = {
|
|
10
10
|
[chainId: string]: {
|
|
11
11
|
nativeTokenStream: number;
|
|
@@ -30,5 +30,5 @@ export type MockGatorPermissionsStorageEntriesConfig = {
|
|
|
30
30
|
* @param config - The config for the mock gator permissions storage entries.
|
|
31
31
|
* @returns Mock gator permissions storage entries
|
|
32
32
|
*/
|
|
33
|
-
export declare function mockGatorPermissionsStorageEntriesFactory(config: MockGatorPermissionsStorageEntriesConfig): StoredGatorPermission<
|
|
33
|
+
export declare function mockGatorPermissionsStorageEntriesFactory(config: MockGatorPermissionsStorageEntriesConfig): StoredGatorPermission<PermissionTypesWithCustom>[];
|
|
34
34
|
//# sourceMappingURL=mocks.d.cts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mocks.d.cts","sourceRoot":"","sources":["../../src/test/mocks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,
|
|
1
|
+
{"version":3,"file":"mocks.d.cts","sourceRoot":"","sources":["../../src/test/mocks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,4BAA4B,EAC5B,0BAA0B,EAC1B,6BAA6B,EAC7B,2BAA2B,EAC5B,wCAAwC;AACzC,OAAO,KAAK,EAAE,GAAG,EAAE,wBAAwB;AAE3C,OAAO,KAAK,EACV,gBAAgB,EAChB,yBAAyB,EACzB,qBAAqB,EACtB,qBAAiB;AAElB,eAAO,MAAM,iCAAiC,YACnC,GAAG,KACX,sBAAsB,2BAA2B,CA2BlD,CAAC;AAEH,eAAO,MAAM,mCAAmC,YACrC,GAAG,KACX,sBAAsB,6BAA6B,CA0BpD,CAAC;AAEH,eAAO,MAAM,gCAAgC,YAClC,GAAG,KACX,sBAAsB,0BAA0B,CA4BjD,CAAC;AAEH,eAAO,MAAM,kCAAkC,YACpC,GAAG,KACX,sBAAsB,4BAA4B,CA2BnD,CAAC;AAEH,eAAO,MAAM,gCAAgC,YAClC,GAAG,QACN,OAAO,MAAM,EAAE,OAAO,CAAC,KAC5B,sBAAsB,gBAAgB,CAwBvC,CAAC;AAEH,MAAM,MAAM,wCAAwC,GAAG;IACrD,CAAC,OAAO,EAAE,MAAM,GAAG;QACjB,iBAAiB,EAAE,MAAM,CAAC;QAC1B,mBAAmB,EAAE,MAAM,CAAC;QAC5B,gBAAgB,EAAE,MAAM,CAAC;QACzB,kBAAkB,EAAE,MAAM,CAAC;QAC3B,MAAM,EAAE;YACN,KAAK,EAAE,MAAM,CAAC;YACd,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;SACjC,CAAC;KACH,CAAC;CACH,CAAC;AAEF;;;;;GAKG;AACH;;;;;GAKG;AACH,wBAAgB,yCAAyC,CACvD,MAAM,EAAE,wCAAwC,GAC/C,qBAAqB,CAAC,yBAAyB,CAAC,EAAE,CAmDpD"}
|
package/dist/test/mocks.d.mts
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { Erc20TokenPeriodicPermission, Erc20TokenStreamPermission, NativeTokenPeriodicPermission, NativeTokenStreamPermission } from "@metamask/7715-permission-types";
|
|
2
2
|
import type { Hex } from "@metamask/utils";
|
|
3
3
|
import type { CustomPermission, PermissionTypesWithCustom, StoredGatorPermission } from "../types.mjs";
|
|
4
|
-
export declare const mockNativeTokenStreamStorageEntry: (chainId: Hex) => StoredGatorPermission<
|
|
5
|
-
export declare const mockNativeTokenPeriodicStorageEntry: (chainId: Hex) => StoredGatorPermission<
|
|
6
|
-
export declare const mockErc20TokenStreamStorageEntry: (chainId: Hex) => StoredGatorPermission<
|
|
7
|
-
export declare const mockErc20TokenPeriodicStorageEntry: (chainId: Hex) => StoredGatorPermission<
|
|
8
|
-
export declare const mockCustomPermissionStorageEntry: (chainId: Hex, data: Record<string, unknown>) => StoredGatorPermission<
|
|
4
|
+
export declare const mockNativeTokenStreamStorageEntry: (chainId: Hex) => StoredGatorPermission<NativeTokenStreamPermission>;
|
|
5
|
+
export declare const mockNativeTokenPeriodicStorageEntry: (chainId: Hex) => StoredGatorPermission<NativeTokenPeriodicPermission>;
|
|
6
|
+
export declare const mockErc20TokenStreamStorageEntry: (chainId: Hex) => StoredGatorPermission<Erc20TokenStreamPermission>;
|
|
7
|
+
export declare const mockErc20TokenPeriodicStorageEntry: (chainId: Hex) => StoredGatorPermission<Erc20TokenPeriodicPermission>;
|
|
8
|
+
export declare const mockCustomPermissionStorageEntry: (chainId: Hex, data: Record<string, unknown>) => StoredGatorPermission<CustomPermission>;
|
|
9
9
|
export type MockGatorPermissionsStorageEntriesConfig = {
|
|
10
10
|
[chainId: string]: {
|
|
11
11
|
nativeTokenStream: number;
|
|
@@ -30,5 +30,5 @@ export type MockGatorPermissionsStorageEntriesConfig = {
|
|
|
30
30
|
* @param config - The config for the mock gator permissions storage entries.
|
|
31
31
|
* @returns Mock gator permissions storage entries
|
|
32
32
|
*/
|
|
33
|
-
export declare function mockGatorPermissionsStorageEntriesFactory(config: MockGatorPermissionsStorageEntriesConfig): StoredGatorPermission<
|
|
33
|
+
export declare function mockGatorPermissionsStorageEntriesFactory(config: MockGatorPermissionsStorageEntriesConfig): StoredGatorPermission<PermissionTypesWithCustom>[];
|
|
34
34
|
//# sourceMappingURL=mocks.d.mts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mocks.d.mts","sourceRoot":"","sources":["../../src/test/mocks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,
|
|
1
|
+
{"version":3,"file":"mocks.d.mts","sourceRoot":"","sources":["../../src/test/mocks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,4BAA4B,EAC5B,0BAA0B,EAC1B,6BAA6B,EAC7B,2BAA2B,EAC5B,wCAAwC;AACzC,OAAO,KAAK,EAAE,GAAG,EAAE,wBAAwB;AAE3C,OAAO,KAAK,EACV,gBAAgB,EAChB,yBAAyB,EACzB,qBAAqB,EACtB,qBAAiB;AAElB,eAAO,MAAM,iCAAiC,YACnC,GAAG,KACX,sBAAsB,2BAA2B,CA2BlD,CAAC;AAEH,eAAO,MAAM,mCAAmC,YACrC,GAAG,KACX,sBAAsB,6BAA6B,CA0BpD,CAAC;AAEH,eAAO,MAAM,gCAAgC,YAClC,GAAG,KACX,sBAAsB,0BAA0B,CA4BjD,CAAC;AAEH,eAAO,MAAM,kCAAkC,YACpC,GAAG,KACX,sBAAsB,4BAA4B,CA2BnD,CAAC;AAEH,eAAO,MAAM,gCAAgC,YAClC,GAAG,QACN,OAAO,MAAM,EAAE,OAAO,CAAC,KAC5B,sBAAsB,gBAAgB,CAwBvC,CAAC;AAEH,MAAM,MAAM,wCAAwC,GAAG;IACrD,CAAC,OAAO,EAAE,MAAM,GAAG;QACjB,iBAAiB,EAAE,MAAM,CAAC;QAC1B,mBAAmB,EAAE,MAAM,CAAC;QAC5B,gBAAgB,EAAE,MAAM,CAAC;QACzB,kBAAkB,EAAE,MAAM,CAAC;QAC3B,MAAM,EAAE;YACN,KAAK,EAAE,MAAM,CAAC;YACd,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;SACjC,CAAC;KACH,CAAC;CACH,CAAC;AAEF;;;;;GAKG;AACH;;;;;GAKG;AACH,wBAAgB,yCAAyC,CACvD,MAAM,EAAE,wCAAwC,GAC/C,qBAAqB,CAAC,yBAAyB,CAAC,EAAE,CAmDpD"}
|