@metamask-previews/gator-permissions-controller 0.0.0-preview-541d905c

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 (60) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/LICENSE +20 -0
  3. package/README.md +38 -0
  4. package/dist/GatorPermissionsController.cjs +238 -0
  5. package/dist/GatorPermissionsController.cjs.map +1 -0
  6. package/dist/GatorPermissionsController.d.cts +139 -0
  7. package/dist/GatorPermissionsController.d.cts.map +1 -0
  8. package/dist/GatorPermissionsController.d.mts +139 -0
  9. package/dist/GatorPermissionsController.d.mts.map +1 -0
  10. package/dist/GatorPermissionsController.mjs +234 -0
  11. package/dist/GatorPermissionsController.mjs.map +1 -0
  12. package/dist/errors.cjs +54 -0
  13. package/dist/errors.cjs.map +1 -0
  14. package/dist/errors.d.cts +40 -0
  15. package/dist/errors.d.cts.map +1 -0
  16. package/dist/errors.d.mts +40 -0
  17. package/dist/errors.d.mts.map +1 -0
  18. package/dist/errors.mjs +46 -0
  19. package/dist/errors.mjs.map +1 -0
  20. package/dist/index.cjs +12 -0
  21. package/dist/index.cjs.map +1 -0
  22. package/dist/index.d.cts +5 -0
  23. package/dist/index.d.cts.map +1 -0
  24. package/dist/index.d.mts +5 -0
  25. package/dist/index.d.mts.map +1 -0
  26. package/dist/index.mjs +3 -0
  27. package/dist/index.mjs.map +1 -0
  28. package/dist/logger.cjs +10 -0
  29. package/dist/logger.cjs.map +1 -0
  30. package/dist/logger.d.cts +7 -0
  31. package/dist/logger.d.cts.map +1 -0
  32. package/dist/logger.d.mts +7 -0
  33. package/dist/logger.d.mts.map +1 -0
  34. package/dist/logger.mjs +7 -0
  35. package/dist/logger.mjs.map +1 -0
  36. package/dist/test/mocks.cjs +224 -0
  37. package/dist/test/mocks.cjs.map +1 -0
  38. package/dist/test/mocks.d.cts +33 -0
  39. package/dist/test/mocks.d.cts.map +1 -0
  40. package/dist/test/mocks.d.mts +33 -0
  41. package/dist/test/mocks.d.mts.map +1 -0
  42. package/dist/test/mocks.mjs +215 -0
  43. package/dist/test/mocks.mjs.map +1 -0
  44. package/dist/types.cjs +24 -0
  45. package/dist/types.cjs.map +1 -0
  46. package/dist/types.d.cts +224 -0
  47. package/dist/types.d.cts.map +1 -0
  48. package/dist/types.d.mts +224 -0
  49. package/dist/types.d.mts.map +1 -0
  50. package/dist/types.mjs +21 -0
  51. package/dist/types.mjs.map +1 -0
  52. package/dist/utils.cjs +46 -0
  53. package/dist/utils.cjs.map +1 -0
  54. package/dist/utils.d.cts +16 -0
  55. package/dist/utils.d.cts.map +1 -0
  56. package/dist/utils.d.mts +16 -0
  57. package/dist/utils.d.mts.map +1 -0
  58. package/dist/utils.mjs +41 -0
  59. package/dist/utils.mjs.map +1 -0
  60. package/package.json +79 -0
@@ -0,0 +1,224 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.mockGatorPermissionsStorageEntriesFactory = exports.mockCustomPermissionStorageEntry = exports.mockErc20TokenPeriodicStorageEntry = exports.mockErc20TokenStreamStorageEntry = exports.mockNativeTokenPeriodicStorageEntry = exports.mockNativeTokenStreamStorageEntry = void 0;
4
+ const mockNativeTokenStreamStorageEntry = (chainId) => ({
5
+ permissionResponse: {
6
+ chainId: chainId,
7
+ address: '0xB68c70159E9892DdF5659ec42ff9BD2bbC23e778',
8
+ expiry: 1750291201,
9
+ isAdjustmentAllowed: true,
10
+ signer: {
11
+ type: 'account',
12
+ data: { address: '0x4f71DA06987BfeDE90aF0b33E1e3e4ffDCEE7a63' },
13
+ },
14
+ permission: {
15
+ type: 'native-token-stream',
16
+ data: {
17
+ maxAmount: '0x22b1c8c1227a0000',
18
+ initialAmount: '0x6f05b59d3b20000',
19
+ amountPerSecond: '0x6f05b59d3b20000',
20
+ startTime: 1747699200,
21
+ justification: 'This is a very important request for streaming allowance for some very important thing',
22
+ },
23
+ rules: {},
24
+ },
25
+ context: '0x00000000',
26
+ accountMeta: [
27
+ {
28
+ factory: '0x69Aa2f9fe1572F1B640E1bbc512f5c3a734fc77c',
29
+ factoryData: '0x0000000',
30
+ },
31
+ ],
32
+ signerMeta: {
33
+ delegationManager: '0xdb9B1e94B5b69Df7e401DDbedE43491141047dB3',
34
+ },
35
+ },
36
+ siteOrigin: 'http://localhost:8000',
37
+ });
38
+ exports.mockNativeTokenStreamStorageEntry = mockNativeTokenStreamStorageEntry;
39
+ const mockNativeTokenPeriodicStorageEntry = (chainId) => ({
40
+ permissionResponse: {
41
+ chainId: chainId,
42
+ address: '0xB68c70159E9892DdF5659ec42ff9BD2bbC23e778',
43
+ expiry: 1850291200,
44
+ isAdjustmentAllowed: true,
45
+ signer: {
46
+ type: 'account',
47
+ data: { address: '0x4f71DA06987BfeDE90aF0b33E1e3e4ffDCEE7a63' },
48
+ },
49
+ permission: {
50
+ type: 'native-token-periodic',
51
+ data: {
52
+ periodAmount: '0x22b1c8c1227a0000',
53
+ periodDuration: 1747699200,
54
+ startTime: 1747699200,
55
+ justification: 'This is a very important request for streaming allowance for some very important thing',
56
+ },
57
+ rules: {},
58
+ },
59
+ context: '0x00000000',
60
+ accountMeta: [
61
+ {
62
+ factory: '0x69Aa2f9fe1572F1B640E1bbc512f5c3a734fc77c',
63
+ factoryData: '0x0000000',
64
+ },
65
+ ],
66
+ signerMeta: {
67
+ delegationManager: '0xdb9B1e94B5b69Df7e401DDbedE43491141047dB3',
68
+ },
69
+ },
70
+ siteOrigin: 'http://localhost:8000',
71
+ });
72
+ exports.mockNativeTokenPeriodicStorageEntry = mockNativeTokenPeriodicStorageEntry;
73
+ const mockErc20TokenStreamStorageEntry = (chainId) => ({
74
+ permissionResponse: {
75
+ chainId: chainId,
76
+ address: '0xB68c70159E9892DdF5659ec42ff9BD2bbC23e778',
77
+ expiry: 1750298200,
78
+ isAdjustmentAllowed: true,
79
+ signer: {
80
+ type: 'account',
81
+ data: { address: '0x4f71DA06987BfeDE90aF0b33E1e3e4ffDCEE7a63' },
82
+ },
83
+ permission: {
84
+ type: 'erc20-token-stream',
85
+ data: {
86
+ initialAmount: '0x22b1c8c1227a0000',
87
+ maxAmount: '0x6f05b59d3b20000',
88
+ amountPerSecond: '0x6f05b59d3b20000',
89
+ startTime: 1747699200,
90
+ tokenAddress: '0xB68c70159E9892DdF5659ec42ff9BD2bbC23e778',
91
+ justification: 'This is a very important request for streaming allowance for some very important thing',
92
+ },
93
+ rules: {},
94
+ },
95
+ context: '0x00000000',
96
+ accountMeta: [
97
+ {
98
+ factory: '0x69Aa2f9fe1572F1B640E1bbc512f5c3a734fc77c',
99
+ factoryData: '0x0000000',
100
+ },
101
+ ],
102
+ signerMeta: {
103
+ delegationManager: '0xdb9B1e94B5b69Df7e401DDbedE43491141047dB3',
104
+ },
105
+ },
106
+ siteOrigin: 'http://localhost:8000',
107
+ });
108
+ exports.mockErc20TokenStreamStorageEntry = mockErc20TokenStreamStorageEntry;
109
+ const mockErc20TokenPeriodicStorageEntry = (chainId) => ({
110
+ permissionResponse: {
111
+ chainId: chainId,
112
+ address: '0xB68c70159E9892DdF5659ec42ff9BD2bbC23e778',
113
+ expiry: 1750291600,
114
+ isAdjustmentAllowed: true,
115
+ signer: {
116
+ type: 'account',
117
+ data: { address: '0x4f71DA06987BfeDE90aF0b33E1e3e4ffDCEE7a63' },
118
+ },
119
+ permission: {
120
+ type: 'erc20-token-periodic',
121
+ data: {
122
+ periodAmount: '0x22b1c8c1227a0000',
123
+ periodDuration: 1747699200,
124
+ startTime: 1747699200,
125
+ tokenAddress: '0xB68c70159E9892DdF5659ec42ff9BD2bbC23e778',
126
+ justification: 'This is a very important request for streaming allowance for some very important thing',
127
+ },
128
+ rules: {},
129
+ },
130
+ context: '0x00000000',
131
+ accountMeta: [
132
+ {
133
+ factory: '0x69Aa2f9fe1572F1B640E1bbc512f5c3a734fc77c',
134
+ factoryData: '0x0000000',
135
+ },
136
+ ],
137
+ signerMeta: {
138
+ delegationManager: '0xdb9B1e94B5b69Df7e401DDbedE43491141047dB3',
139
+ },
140
+ },
141
+ siteOrigin: 'http://localhost:8000',
142
+ });
143
+ exports.mockErc20TokenPeriodicStorageEntry = mockErc20TokenPeriodicStorageEntry;
144
+ const mockCustomPermissionStorageEntry = (chainId, data) => ({
145
+ permissionResponse: {
146
+ chainId: chainId,
147
+ address: '0xB68c70159E9892DdF5659ec42ff9BD2bbC23e778',
148
+ expiry: 1750291200,
149
+ isAdjustmentAllowed: true,
150
+ signer: {
151
+ type: 'account',
152
+ data: { address: '0x4f71DA06987BfeDE90aF0b33E1e3e4ffDCEE7a63' },
153
+ },
154
+ permission: {
155
+ type: 'custom',
156
+ data: {
157
+ justification: 'This is a very important request for streaming allowance for some very important thing',
158
+ ...data,
159
+ },
160
+ rules: {},
161
+ },
162
+ context: '0x00000000',
163
+ accountMeta: [
164
+ {
165
+ factory: '0x69Aa2f9fe1572F1B640E1bbc512f5c3a734fc77c',
166
+ factoryData: '0x0000000',
167
+ },
168
+ ],
169
+ signerMeta: {
170
+ delegationManager: '0xdb9B1e94B5b69Df7e401DDbedE43491141047dB3',
171
+ },
172
+ },
173
+ siteOrigin: 'http://localhost:8000',
174
+ });
175
+ exports.mockCustomPermissionStorageEntry = mockCustomPermissionStorageEntry;
176
+ /**
177
+ * Creates a mock gator permissions storage entry
178
+ *
179
+ * @param config - The config for the mock gator permissions storage entries.
180
+ * @returns Mock gator permissions storage entry
181
+ */
182
+ /**
183
+ * Creates mock gator permissions storage entries with unique expiry times
184
+ *
185
+ * @param config - The config for the mock gator permissions storage entries.
186
+ * @returns Mock gator permissions storage entries
187
+ */
188
+ function mockGatorPermissionsStorageEntriesFactory(config) {
189
+ const result = [];
190
+ let globalIndex = 0;
191
+ Object.entries(config).forEach(([chainId, counts]) => {
192
+ if (counts.custom.count !== counts.custom.data.length) {
193
+ throw new Error('Custom permission count and data length mismatch');
194
+ }
195
+ /**
196
+ * Creates a number of entries with unique expiry times
197
+ *
198
+ * @param count - The number of entries to create.
199
+ * @param createEntry - The function to create an entry.
200
+ */
201
+ const createEntries = (count, createEntry) => {
202
+ for (let i = 0; i < count; i++) {
203
+ const entry = createEntry();
204
+ entry.permissionResponse.expiry += globalIndex;
205
+ result.push(entry);
206
+ globalIndex += 1;
207
+ }
208
+ };
209
+ createEntries(counts.nativeTokenStream, () => (0, exports.mockNativeTokenStreamStorageEntry)(chainId));
210
+ createEntries(counts.nativeTokenPeriodic, () => (0, exports.mockNativeTokenPeriodicStorageEntry)(chainId));
211
+ createEntries(counts.erc20TokenStream, () => (0, exports.mockErc20TokenStreamStorageEntry)(chainId));
212
+ createEntries(counts.erc20TokenPeriodic, () => (0, exports.mockErc20TokenPeriodicStorageEntry)(chainId));
213
+ // Create custom entries
214
+ for (let i = 0; i < counts.custom.count; i++) {
215
+ const entry = (0, exports.mockCustomPermissionStorageEntry)(chainId, counts.custom.data[i]);
216
+ entry.permissionResponse.expiry += globalIndex;
217
+ result.push(entry);
218
+ globalIndex += 1;
219
+ }
220
+ });
221
+ return result;
222
+ }
223
+ exports.mockGatorPermissionsStorageEntriesFactory = mockGatorPermissionsStorageEntriesFactory;
224
+ //# sourceMappingURL=mocks.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mocks.cjs","sourceRoot":"","sources":["../../src/test/mocks.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Hex } from '@metamask/utils';\n\nimport type {\n AccountSigner,\n CustomPermission,\n Erc20TokenPeriodicPermission,\n Erc20TokenStreamPermission,\n NativeTokenPeriodicPermission,\n NativeTokenStreamPermission,\n PermissionTypes,\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 expiry: 1750291201,\n isAdjustmentAllowed: true,\n signer: {\n type: 'account',\n data: { address: '0x4f71DA06987BfeDE90aF0b33E1e3e4ffDCEE7a63' },\n },\n permission: {\n type: 'native-token-stream',\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 rules: {},\n },\n context: '0x00000000',\n accountMeta: [\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 expiry: 1850291200,\n isAdjustmentAllowed: true,\n signer: {\n type: 'account',\n data: { address: '0x4f71DA06987BfeDE90aF0b33E1e3e4ffDCEE7a63' },\n },\n permission: {\n type: 'native-token-periodic',\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 rules: {},\n },\n context: '0x00000000',\n accountMeta: [\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 expiry: 1750298200,\n isAdjustmentAllowed: true,\n signer: {\n type: 'account',\n data: { address: '0x4f71DA06987BfeDE90aF0b33E1e3e4ffDCEE7a63' },\n },\n permission: {\n type: 'erc20-token-stream',\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 rules: {},\n },\n context: '0x00000000',\n accountMeta: [\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 expiry: 1750291600,\n isAdjustmentAllowed: true,\n signer: {\n type: 'account',\n data: { address: '0x4f71DA06987BfeDE90aF0b33E1e3e4ffDCEE7a63' },\n },\n permission: {\n type: 'erc20-token-periodic',\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 rules: {},\n },\n context: '0x00000000',\n accountMeta: [\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 expiry: 1750291200,\n isAdjustmentAllowed: true,\n signer: {\n type: 'account',\n data: { address: '0x4f71DA06987BfeDE90aF0b33E1e3e4ffDCEE7a63' },\n },\n permission: {\n type: 'custom',\n data: {\n justification:\n 'This is a very important request for streaming allowance for some very important thing',\n ...data,\n },\n rules: {},\n },\n context: '0x00000000',\n accountMeta: [\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, PermissionTypes>[] {\n const result: StoredGatorPermission<AccountSigner, PermissionTypes>[] = [];\n let globalIndex = 0;\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<AccountSigner, PermissionTypes>,\n ) => {\n for (let i = 0; i < count; i++) {\n const entry = createEntry();\n entry.permissionResponse.expiry += globalIndex;\n result.push(entry);\n globalIndex += 1;\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 entry.permissionResponse.expiry += globalIndex;\n result.push(entry);\n globalIndex += 1;\n }\n });\n\n return result;\n}\n"]}
@@ -0,0 +1,33 @@
1
+ import type { Hex } from "@metamask/utils";
2
+ import type { AccountSigner, CustomPermission, Erc20TokenPeriodicPermission, Erc20TokenStreamPermission, NativeTokenPeriodicPermission, NativeTokenStreamPermission, PermissionTypes, StoredGatorPermission } from "../types.cjs";
3
+ export declare const mockNativeTokenStreamStorageEntry: (chainId: Hex) => StoredGatorPermission<AccountSigner, NativeTokenStreamPermission>;
4
+ export declare const mockNativeTokenPeriodicStorageEntry: (chainId: Hex) => StoredGatorPermission<AccountSigner, NativeTokenPeriodicPermission>;
5
+ export declare const mockErc20TokenStreamStorageEntry: (chainId: Hex) => StoredGatorPermission<AccountSigner, Erc20TokenStreamPermission>;
6
+ export declare const mockErc20TokenPeriodicStorageEntry: (chainId: Hex) => StoredGatorPermission<AccountSigner, Erc20TokenPeriodicPermission>;
7
+ export declare const mockCustomPermissionStorageEntry: (chainId: Hex, data: Record<string, unknown>) => StoredGatorPermission<AccountSigner, CustomPermission>;
8
+ export type MockGatorPermissionsStorageEntriesConfig = {
9
+ [chainId: string]: {
10
+ nativeTokenStream: number;
11
+ nativeTokenPeriodic: number;
12
+ erc20TokenStream: number;
13
+ erc20TokenPeriodic: number;
14
+ custom: {
15
+ count: number;
16
+ data: Record<string, unknown>[];
17
+ };
18
+ };
19
+ };
20
+ /**
21
+ * Creates a mock gator permissions storage entry
22
+ *
23
+ * @param config - The config for the mock gator permissions storage entries.
24
+ * @returns Mock gator permissions storage entry
25
+ */
26
+ /**
27
+ * Creates mock gator permissions storage entries with unique expiry times
28
+ *
29
+ * @param config - The config for the mock gator permissions storage entries.
30
+ * @returns Mock gator permissions storage entries
31
+ */
32
+ export declare function mockGatorPermissionsStorageEntriesFactory(config: MockGatorPermissionsStorageEntriesConfig): StoredGatorPermission<AccountSigner, PermissionTypes>[];
33
+ //# sourceMappingURL=mocks.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mocks.d.cts","sourceRoot":"","sources":["../../src/test/mocks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,wBAAwB;AAE3C,OAAO,KAAK,EACV,aAAa,EACb,gBAAgB,EAChB,4BAA4B,EAC5B,0BAA0B,EAC1B,6BAA6B,EAC7B,2BAA2B,EAC3B,eAAe,EACf,qBAAqB,EACtB,qBAAiB;AAElB,eAAO,MAAM,iCAAiC,YACnC,GAAG,KACX,sBAAsB,aAAa,EAAE,2BAA2B,CAkCjE,CAAC;AAEH,eAAO,MAAM,mCAAmC,YACrC,GAAG,KACX,sBAAsB,aAAa,EAAE,6BAA6B,CAiCnE,CAAC;AAEH,eAAO,MAAM,gCAAgC,YAClC,GAAG,KACX,sBAAsB,aAAa,EAAE,0BAA0B,CAmChE,CAAC;AAEH,eAAO,MAAM,kCAAkC,YACpC,GAAG,KACX,sBAAsB,aAAa,EAAE,4BAA4B,CAkClE,CAAC;AAEH,eAAO,MAAM,gCAAgC,YAClC,GAAG,QACN,OAAO,MAAM,EAAE,OAAO,CAAC,KAC5B,sBAAsB,aAAa,EAAE,gBAAgB,CA+BtD,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,aAAa,EAAE,eAAe,CAAC,EAAE,CAwDzD"}
@@ -0,0 +1,33 @@
1
+ import type { Hex } from "@metamask/utils";
2
+ import type { AccountSigner, CustomPermission, Erc20TokenPeriodicPermission, Erc20TokenStreamPermission, NativeTokenPeriodicPermission, NativeTokenStreamPermission, PermissionTypes, StoredGatorPermission } from "../types.mjs";
3
+ export declare const mockNativeTokenStreamStorageEntry: (chainId: Hex) => StoredGatorPermission<AccountSigner, NativeTokenStreamPermission>;
4
+ export declare const mockNativeTokenPeriodicStorageEntry: (chainId: Hex) => StoredGatorPermission<AccountSigner, NativeTokenPeriodicPermission>;
5
+ export declare const mockErc20TokenStreamStorageEntry: (chainId: Hex) => StoredGatorPermission<AccountSigner, Erc20TokenStreamPermission>;
6
+ export declare const mockErc20TokenPeriodicStorageEntry: (chainId: Hex) => StoredGatorPermission<AccountSigner, Erc20TokenPeriodicPermission>;
7
+ export declare const mockCustomPermissionStorageEntry: (chainId: Hex, data: Record<string, unknown>) => StoredGatorPermission<AccountSigner, CustomPermission>;
8
+ export type MockGatorPermissionsStorageEntriesConfig = {
9
+ [chainId: string]: {
10
+ nativeTokenStream: number;
11
+ nativeTokenPeriodic: number;
12
+ erc20TokenStream: number;
13
+ erc20TokenPeriodic: number;
14
+ custom: {
15
+ count: number;
16
+ data: Record<string, unknown>[];
17
+ };
18
+ };
19
+ };
20
+ /**
21
+ * Creates a mock gator permissions storage entry
22
+ *
23
+ * @param config - The config for the mock gator permissions storage entries.
24
+ * @returns Mock gator permissions storage entry
25
+ */
26
+ /**
27
+ * Creates mock gator permissions storage entries with unique expiry times
28
+ *
29
+ * @param config - The config for the mock gator permissions storage entries.
30
+ * @returns Mock gator permissions storage entries
31
+ */
32
+ export declare function mockGatorPermissionsStorageEntriesFactory(config: MockGatorPermissionsStorageEntriesConfig): StoredGatorPermission<AccountSigner, PermissionTypes>[];
33
+ //# sourceMappingURL=mocks.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mocks.d.mts","sourceRoot":"","sources":["../../src/test/mocks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,wBAAwB;AAE3C,OAAO,KAAK,EACV,aAAa,EACb,gBAAgB,EAChB,4BAA4B,EAC5B,0BAA0B,EAC1B,6BAA6B,EAC7B,2BAA2B,EAC3B,eAAe,EACf,qBAAqB,EACtB,qBAAiB;AAElB,eAAO,MAAM,iCAAiC,YACnC,GAAG,KACX,sBAAsB,aAAa,EAAE,2BAA2B,CAkCjE,CAAC;AAEH,eAAO,MAAM,mCAAmC,YACrC,GAAG,KACX,sBAAsB,aAAa,EAAE,6BAA6B,CAiCnE,CAAC;AAEH,eAAO,MAAM,gCAAgC,YAClC,GAAG,KACX,sBAAsB,aAAa,EAAE,0BAA0B,CAmChE,CAAC;AAEH,eAAO,MAAM,kCAAkC,YACpC,GAAG,KACX,sBAAsB,aAAa,EAAE,4BAA4B,CAkClE,CAAC;AAEH,eAAO,MAAM,gCAAgC,YAClC,GAAG,QACN,OAAO,MAAM,EAAE,OAAO,CAAC,KAC5B,sBAAsB,aAAa,EAAE,gBAAgB,CA+BtD,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,aAAa,EAAE,eAAe,CAAC,EAAE,CAwDzD"}
@@ -0,0 +1,215 @@
1
+ export const mockNativeTokenStreamStorageEntry = (chainId) => ({
2
+ permissionResponse: {
3
+ chainId: chainId,
4
+ address: '0xB68c70159E9892DdF5659ec42ff9BD2bbC23e778',
5
+ expiry: 1750291201,
6
+ isAdjustmentAllowed: true,
7
+ signer: {
8
+ type: 'account',
9
+ data: { address: '0x4f71DA06987BfeDE90aF0b33E1e3e4ffDCEE7a63' },
10
+ },
11
+ permission: {
12
+ type: 'native-token-stream',
13
+ data: {
14
+ maxAmount: '0x22b1c8c1227a0000',
15
+ initialAmount: '0x6f05b59d3b20000',
16
+ amountPerSecond: '0x6f05b59d3b20000',
17
+ startTime: 1747699200,
18
+ justification: 'This is a very important request for streaming allowance for some very important thing',
19
+ },
20
+ rules: {},
21
+ },
22
+ context: '0x00000000',
23
+ accountMeta: [
24
+ {
25
+ factory: '0x69Aa2f9fe1572F1B640E1bbc512f5c3a734fc77c',
26
+ factoryData: '0x0000000',
27
+ },
28
+ ],
29
+ signerMeta: {
30
+ delegationManager: '0xdb9B1e94B5b69Df7e401DDbedE43491141047dB3',
31
+ },
32
+ },
33
+ siteOrigin: 'http://localhost:8000',
34
+ });
35
+ export const mockNativeTokenPeriodicStorageEntry = (chainId) => ({
36
+ permissionResponse: {
37
+ chainId: chainId,
38
+ address: '0xB68c70159E9892DdF5659ec42ff9BD2bbC23e778',
39
+ expiry: 1850291200,
40
+ isAdjustmentAllowed: true,
41
+ signer: {
42
+ type: 'account',
43
+ data: { address: '0x4f71DA06987BfeDE90aF0b33E1e3e4ffDCEE7a63' },
44
+ },
45
+ permission: {
46
+ type: 'native-token-periodic',
47
+ data: {
48
+ periodAmount: '0x22b1c8c1227a0000',
49
+ periodDuration: 1747699200,
50
+ startTime: 1747699200,
51
+ justification: 'This is a very important request for streaming allowance for some very important thing',
52
+ },
53
+ rules: {},
54
+ },
55
+ context: '0x00000000',
56
+ accountMeta: [
57
+ {
58
+ factory: '0x69Aa2f9fe1572F1B640E1bbc512f5c3a734fc77c',
59
+ factoryData: '0x0000000',
60
+ },
61
+ ],
62
+ signerMeta: {
63
+ delegationManager: '0xdb9B1e94B5b69Df7e401DDbedE43491141047dB3',
64
+ },
65
+ },
66
+ siteOrigin: 'http://localhost:8000',
67
+ });
68
+ export const mockErc20TokenStreamStorageEntry = (chainId) => ({
69
+ permissionResponse: {
70
+ chainId: chainId,
71
+ address: '0xB68c70159E9892DdF5659ec42ff9BD2bbC23e778',
72
+ expiry: 1750298200,
73
+ isAdjustmentAllowed: true,
74
+ signer: {
75
+ type: 'account',
76
+ data: { address: '0x4f71DA06987BfeDE90aF0b33E1e3e4ffDCEE7a63' },
77
+ },
78
+ permission: {
79
+ type: 'erc20-token-stream',
80
+ data: {
81
+ initialAmount: '0x22b1c8c1227a0000',
82
+ maxAmount: '0x6f05b59d3b20000',
83
+ amountPerSecond: '0x6f05b59d3b20000',
84
+ startTime: 1747699200,
85
+ tokenAddress: '0xB68c70159E9892DdF5659ec42ff9BD2bbC23e778',
86
+ justification: 'This is a very important request for streaming allowance for some very important thing',
87
+ },
88
+ rules: {},
89
+ },
90
+ context: '0x00000000',
91
+ accountMeta: [
92
+ {
93
+ factory: '0x69Aa2f9fe1572F1B640E1bbc512f5c3a734fc77c',
94
+ factoryData: '0x0000000',
95
+ },
96
+ ],
97
+ signerMeta: {
98
+ delegationManager: '0xdb9B1e94B5b69Df7e401DDbedE43491141047dB3',
99
+ },
100
+ },
101
+ siteOrigin: 'http://localhost:8000',
102
+ });
103
+ export const mockErc20TokenPeriodicStorageEntry = (chainId) => ({
104
+ permissionResponse: {
105
+ chainId: chainId,
106
+ address: '0xB68c70159E9892DdF5659ec42ff9BD2bbC23e778',
107
+ expiry: 1750291600,
108
+ isAdjustmentAllowed: true,
109
+ signer: {
110
+ type: 'account',
111
+ data: { address: '0x4f71DA06987BfeDE90aF0b33E1e3e4ffDCEE7a63' },
112
+ },
113
+ permission: {
114
+ type: 'erc20-token-periodic',
115
+ data: {
116
+ periodAmount: '0x22b1c8c1227a0000',
117
+ periodDuration: 1747699200,
118
+ startTime: 1747699200,
119
+ tokenAddress: '0xB68c70159E9892DdF5659ec42ff9BD2bbC23e778',
120
+ justification: 'This is a very important request for streaming allowance for some very important thing',
121
+ },
122
+ rules: {},
123
+ },
124
+ context: '0x00000000',
125
+ accountMeta: [
126
+ {
127
+ factory: '0x69Aa2f9fe1572F1B640E1bbc512f5c3a734fc77c',
128
+ factoryData: '0x0000000',
129
+ },
130
+ ],
131
+ signerMeta: {
132
+ delegationManager: '0xdb9B1e94B5b69Df7e401DDbedE43491141047dB3',
133
+ },
134
+ },
135
+ siteOrigin: 'http://localhost:8000',
136
+ });
137
+ export const mockCustomPermissionStorageEntry = (chainId, data) => ({
138
+ permissionResponse: {
139
+ chainId: chainId,
140
+ address: '0xB68c70159E9892DdF5659ec42ff9BD2bbC23e778',
141
+ expiry: 1750291200,
142
+ isAdjustmentAllowed: true,
143
+ signer: {
144
+ type: 'account',
145
+ data: { address: '0x4f71DA06987BfeDE90aF0b33E1e3e4ffDCEE7a63' },
146
+ },
147
+ permission: {
148
+ type: 'custom',
149
+ data: {
150
+ justification: 'This is a very important request for streaming allowance for some very important thing',
151
+ ...data,
152
+ },
153
+ rules: {},
154
+ },
155
+ context: '0x00000000',
156
+ accountMeta: [
157
+ {
158
+ factory: '0x69Aa2f9fe1572F1B640E1bbc512f5c3a734fc77c',
159
+ factoryData: '0x0000000',
160
+ },
161
+ ],
162
+ signerMeta: {
163
+ delegationManager: '0xdb9B1e94B5b69Df7e401DDbedE43491141047dB3',
164
+ },
165
+ },
166
+ siteOrigin: 'http://localhost:8000',
167
+ });
168
+ /**
169
+ * Creates a mock gator permissions storage entry
170
+ *
171
+ * @param config - The config for the mock gator permissions storage entries.
172
+ * @returns Mock gator permissions storage entry
173
+ */
174
+ /**
175
+ * Creates mock gator permissions storage entries with unique expiry times
176
+ *
177
+ * @param config - The config for the mock gator permissions storage entries.
178
+ * @returns Mock gator permissions storage entries
179
+ */
180
+ export function mockGatorPermissionsStorageEntriesFactory(config) {
181
+ const result = [];
182
+ let globalIndex = 0;
183
+ Object.entries(config).forEach(([chainId, counts]) => {
184
+ if (counts.custom.count !== counts.custom.data.length) {
185
+ throw new Error('Custom permission count and data length mismatch');
186
+ }
187
+ /**
188
+ * Creates a number of entries with unique expiry times
189
+ *
190
+ * @param count - The number of entries to create.
191
+ * @param createEntry - The function to create an entry.
192
+ */
193
+ const createEntries = (count, createEntry) => {
194
+ for (let i = 0; i < count; i++) {
195
+ const entry = createEntry();
196
+ entry.permissionResponse.expiry += globalIndex;
197
+ result.push(entry);
198
+ globalIndex += 1;
199
+ }
200
+ };
201
+ createEntries(counts.nativeTokenStream, () => mockNativeTokenStreamStorageEntry(chainId));
202
+ createEntries(counts.nativeTokenPeriodic, () => mockNativeTokenPeriodicStorageEntry(chainId));
203
+ createEntries(counts.erc20TokenStream, () => mockErc20TokenStreamStorageEntry(chainId));
204
+ createEntries(counts.erc20TokenPeriodic, () => mockErc20TokenPeriodicStorageEntry(chainId));
205
+ // Create custom entries
206
+ for (let i = 0; i < counts.custom.count; i++) {
207
+ const entry = mockCustomPermissionStorageEntry(chainId, counts.custom.data[i]);
208
+ entry.permissionResponse.expiry += globalIndex;
209
+ result.push(entry);
210
+ globalIndex += 1;
211
+ }
212
+ });
213
+ return result;
214
+ }
215
+ //# sourceMappingURL=mocks.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mocks.mjs","sourceRoot":"","sources":["../../src/test/mocks.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Hex } from '@metamask/utils';\n\nimport type {\n AccountSigner,\n CustomPermission,\n Erc20TokenPeriodicPermission,\n Erc20TokenStreamPermission,\n NativeTokenPeriodicPermission,\n NativeTokenStreamPermission,\n PermissionTypes,\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 expiry: 1750291201,\n isAdjustmentAllowed: true,\n signer: {\n type: 'account',\n data: { address: '0x4f71DA06987BfeDE90aF0b33E1e3e4ffDCEE7a63' },\n },\n permission: {\n type: 'native-token-stream',\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 rules: {},\n },\n context: '0x00000000',\n accountMeta: [\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 expiry: 1850291200,\n isAdjustmentAllowed: true,\n signer: {\n type: 'account',\n data: { address: '0x4f71DA06987BfeDE90aF0b33E1e3e4ffDCEE7a63' },\n },\n permission: {\n type: 'native-token-periodic',\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 rules: {},\n },\n context: '0x00000000',\n accountMeta: [\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 expiry: 1750298200,\n isAdjustmentAllowed: true,\n signer: {\n type: 'account',\n data: { address: '0x4f71DA06987BfeDE90aF0b33E1e3e4ffDCEE7a63' },\n },\n permission: {\n type: 'erc20-token-stream',\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 rules: {},\n },\n context: '0x00000000',\n accountMeta: [\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 expiry: 1750291600,\n isAdjustmentAllowed: true,\n signer: {\n type: 'account',\n data: { address: '0x4f71DA06987BfeDE90aF0b33E1e3e4ffDCEE7a63' },\n },\n permission: {\n type: 'erc20-token-periodic',\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 rules: {},\n },\n context: '0x00000000',\n accountMeta: [\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 expiry: 1750291200,\n isAdjustmentAllowed: true,\n signer: {\n type: 'account',\n data: { address: '0x4f71DA06987BfeDE90aF0b33E1e3e4ffDCEE7a63' },\n },\n permission: {\n type: 'custom',\n data: {\n justification:\n 'This is a very important request for streaming allowance for some very important thing',\n ...data,\n },\n rules: {},\n },\n context: '0x00000000',\n accountMeta: [\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, PermissionTypes>[] {\n const result: StoredGatorPermission<AccountSigner, PermissionTypes>[] = [];\n let globalIndex = 0;\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<AccountSigner, PermissionTypes>,\n ) => {\n for (let i = 0; i < count; i++) {\n const entry = createEntry();\n entry.permissionResponse.expiry += globalIndex;\n result.push(entry);\n globalIndex += 1;\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 entry.permissionResponse.expiry += globalIndex;\n result.push(entry);\n globalIndex += 1;\n }\n });\n\n return result;\n}\n"]}
package/dist/types.cjs ADDED
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GatorPermissionsSnapRpcMethod = exports.GatorPermissionsControllerErrorCode = void 0;
4
+ /**
5
+ * Enum for the error codes of the gator permissions controller.
6
+ */
7
+ var GatorPermissionsControllerErrorCode;
8
+ (function (GatorPermissionsControllerErrorCode) {
9
+ GatorPermissionsControllerErrorCode["GatorPermissionsFetchError"] = "gator-permissions-fetch-error";
10
+ GatorPermissionsControllerErrorCode["GatorPermissionsNotEnabled"] = "gator-permissions-not-enabled";
11
+ GatorPermissionsControllerErrorCode["GatorPermissionsProviderError"] = "gator-permissions-provider-error";
12
+ GatorPermissionsControllerErrorCode["GatorPermissionsMapSerializationError"] = "gator-permissions-map-serialization-error";
13
+ })(GatorPermissionsControllerErrorCode || (exports.GatorPermissionsControllerErrorCode = GatorPermissionsControllerErrorCode = {}));
14
+ /**
15
+ * Enum for the RPC methods of the gator permissions provider snap.
16
+ */
17
+ var GatorPermissionsSnapRpcMethod;
18
+ (function (GatorPermissionsSnapRpcMethod) {
19
+ /**
20
+ * This method is used by the metamask to request a permissions provider to get granted permissions for all sites.
21
+ */
22
+ GatorPermissionsSnapRpcMethod["PermissionProviderGetGrantedPermissions"] = "permissionsProvider_getGrantedPermissions";
23
+ })(GatorPermissionsSnapRpcMethod || (exports.GatorPermissionsSnapRpcMethod = GatorPermissionsSnapRpcMethod = {}));
24
+ //# sourceMappingURL=types.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.cjs","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";;;AAEA;;GAEG;AACH,IAAY,mCAKX;AALD,WAAY,mCAAmC;IAC7C,mGAA4D,CAAA;IAC5D,mGAA4D,CAAA;IAC5D,yGAAkE,CAAA;IAClE,0HAAmF,CAAA;AACrF,CAAC,EALW,mCAAmC,mDAAnC,mCAAmC,QAK9C;AAED;;GAEG;AACH,IAAY,6BAKX;AALD,WAAY,6BAA6B;IACvC;;OAEG;IACH,sHAAqF,CAAA;AACvF,CAAC,EALW,6BAA6B,6CAA7B,6BAA6B,QAKxC","sourcesContent":["import 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}\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\ntype BasePermission = {\n type: string;\n\n /**\n * Data structure varies by permission type.\n */\n data: Record<string, unknown>;\n\n /**\n * set of restrictions or conditions that a signer must abide by when redeeming a Permission.\n */\n rules?: Record<string, unknown>;\n};\n\nexport type MetaMaskBasePermissionData = {\n /**\n * A human-readable explanation of why the permission is being requested.\n */\n justification: string;\n};\n\nexport type NativeTokenStreamPermission = BasePermission & {\n type: 'native-token-stream';\n data: MetaMaskBasePermissionData & {\n initialAmount?: Hex;\n maxAmount?: Hex;\n amountPerSecond: Hex;\n startTime: number;\n };\n};\n\nexport type NativeTokenPeriodicPermission = BasePermission & {\n type: 'native-token-periodic';\n data: MetaMaskBasePermissionData & {\n periodAmount: Hex;\n periodDuration: number;\n startTime: number;\n };\n};\n\nexport type Erc20TokenStreamPermission = BasePermission & {\n type: 'erc20-token-stream';\n data: MetaMaskBasePermissionData & {\n initialAmount?: Hex;\n maxAmount?: Hex;\n amountPerSecond: Hex;\n startTime: number;\n tokenAddress: Hex;\n };\n};\n\nexport type Erc20TokenPeriodicPermission = BasePermission & {\n type: 'erc20-token-periodic';\n data: MetaMaskBasePermissionData & {\n periodAmount: Hex;\n periodDuration: number;\n startTime: number;\n tokenAddress: Hex;\n };\n};\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.\n */\nexport type PermissionTypes =\n | NativeTokenStreamPermission\n | NativeTokenPeriodicPermission\n | Erc20TokenStreamPermission\n | Erc20TokenPeriodicPermission\n | CustomPermission;\n\n/**\n * Represents an ERC-7715 account signer type.\n */\nexport type AccountSigner = {\n type: 'account';\n data: {\n address: Hex;\n };\n};\n\n/**\n * Represents an ERC-7715 wallet signer type.\n *\n */\nexport type WalletSigner = {\n type: 'wallet';\n data: Record<string, unknown>;\n};\n\nexport type SignerParam = AccountSigner | WalletSigner;\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 SignerParam,\n TPermission extends PermissionTypes,\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 * unix timestamp in seconds\n */\n expiry: number;\n\n /**\n * Boolean value that allows DApp to define whether the permission can be attenuated–adjusted to meet the user’s terms.\n */\n isAdjustmentAllowed: boolean;\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\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 SignerParam,\n TPermission extends PermissionTypes,\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 accountMeta 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 accountMeta: {\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 SignerParam,\n TPermission extends PermissionTypes,\n> = Omit<\n PermissionResponse<TSigner, TPermission>,\n 'isAdjustmentAllowed' | 'accountMeta' | 'signer'\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 SignerParam,\n TPermission extends PermissionTypes,\n> = {\n permissionResponse: PermissionResponse<TSigner, TPermission>;\n siteOrigin: string;\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 SignerParam,\n TPermission extends PermissionTypes,\n> = {\n permissionResponse: PermissionResponseSanitized<TSigner, TPermission>;\n siteOrigin: string;\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 SignerParam,\n NativeTokenStreamPermission\n >[];\n };\n 'native-token-periodic': {\n [chainId: Hex]: StoredGatorPermissionSanitized<\n SignerParam,\n NativeTokenPeriodicPermission\n >[];\n };\n 'erc20-token-stream': {\n [chainId: Hex]: StoredGatorPermissionSanitized<\n SignerParam,\n Erc20TokenStreamPermission\n >[];\n };\n 'erc20-token-periodic': {\n [chainId: Hex]: StoredGatorPermissionSanitized<\n SignerParam,\n Erc20TokenPeriodicPermission\n >[];\n };\n other: {\n [chainId: Hex]: StoredGatorPermissionSanitized<\n SignerParam,\n CustomPermission\n >[];\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"]}