@reown/appkit-experimental 1.1.0 → 1.1.3

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 (64) hide show
  1. package/dist/esm/exports/smart-session/index.js +1 -0
  2. package/dist/esm/exports/smart-session/index.js.map +1 -1
  3. package/dist/esm/src/smart-session/controllers/SmartSessionsController.js +74 -0
  4. package/dist/esm/src/smart-session/controllers/SmartSessionsController.js.map +1 -0
  5. package/dist/esm/src/smart-session/schema/index.js +37 -5
  6. package/dist/esm/src/smart-session/schema/index.js.map +1 -1
  7. package/dist/esm/src/smart-session/ui/components/index.js +88 -0
  8. package/dist/esm/src/smart-session/ui/components/index.js.map +1 -0
  9. package/dist/esm/src/smart-session/ui/components/styles.js +21 -0
  10. package/dist/esm/src/smart-session/ui/components/styles.js.map +1 -0
  11. package/dist/esm/src/smart-session/ui/components/wui-permission-list-item/index.js +88 -0
  12. package/dist/esm/src/smart-session/ui/components/wui-permission-list-item/index.js.map +1 -0
  13. package/dist/esm/src/smart-session/ui/components/wui-permission-list-item/styles.js +21 -0
  14. package/dist/esm/src/smart-session/ui/components/wui-permission-list-item/styles.js.map +1 -0
  15. package/dist/esm/src/smart-session/ui/components/wui-smart-session-list-item/index.js +88 -0
  16. package/dist/esm/src/smart-session/ui/components/wui-smart-session-list-item/index.js.map +1 -0
  17. package/dist/esm/src/smart-session/ui/components/wui-smart-session-list-item/styles.js +21 -0
  18. package/dist/esm/src/smart-session/ui/components/wui-smart-session-list-item/styles.js.map +1 -0
  19. package/dist/esm/src/smart-session/ui/permissions/wui-permission-contract-call/index.js +71 -0
  20. package/dist/esm/src/smart-session/ui/permissions/wui-permission-contract-call/index.js.map +1 -0
  21. package/dist/esm/src/smart-session/ui/permissions/wui-permission-contract-call/styles.js +11 -0
  22. package/dist/esm/src/smart-session/ui/permissions/wui-permission-contract-call/styles.js.map +1 -0
  23. package/dist/esm/src/smart-session/ui/views/w3m-smart-session-created-view/index.js +79 -0
  24. package/dist/esm/src/smart-session/ui/views/w3m-smart-session-created-view/index.js.map +1 -0
  25. package/dist/esm/src/smart-session/ui/views/w3m-smart-session-created-view/styles.js +7 -0
  26. package/dist/esm/src/smart-session/ui/views/w3m-smart-session-created-view/styles.js.map +1 -0
  27. package/dist/esm/src/smart-session/ui/views/w3m-smart-session-list-view/index.js +169 -0
  28. package/dist/esm/src/smart-session/ui/views/w3m-smart-session-list-view/index.js.map +1 -0
  29. package/dist/esm/src/smart-session/ui/views/w3m-smart-session-list-view/styles.js +30 -0
  30. package/dist/esm/src/smart-session/ui/views/w3m-smart-session-list-view/styles.js.map +1 -0
  31. package/dist/esm/tests/smart-session/requestValidation/mockRequest.js +14 -0
  32. package/dist/esm/tests/smart-session/requestValidation/mockRequest.js.map +1 -0
  33. package/dist/esm/tests/smart-session/requestValidation/validateCommonFields.test.js +290 -0
  34. package/dist/esm/tests/smart-session/requestValidation/validateCommonFields.test.js.map +1 -0
  35. package/dist/esm/tests/smart-session/requestValidation/validateContractCallPermission.test.js +135 -0
  36. package/dist/esm/tests/smart-session/requestValidation/validateContractCallPermission.test.js.map +1 -0
  37. package/dist/esm/tests/smart-session/requestValidation/validateERC20RecurringAllowancePermission.test.js +175 -0
  38. package/dist/esm/tests/smart-session/requestValidation/validateERC20RecurringAllowancePermission.test.js.map +1 -0
  39. package/dist/esm/tests/smart-session/requestValidation/validateNativeTokenRecurringAllowancePermission.test.js +137 -0
  40. package/dist/esm/tests/smart-session/requestValidation/validateNativeTokenRecurringAllowancePermission.test.js.map +1 -0
  41. package/dist/esm/tsconfig.tsbuildinfo +1 -1
  42. package/dist/types/exports/smart-session/index.d.ts +1 -1
  43. package/dist/types/src/smart-session/controllers/SmartSessionsController.d.ts +9 -0
  44. package/dist/types/src/smart-session/helper/index.d.ts +32 -2
  45. package/dist/types/src/smart-session/schema/index.d.ts +133 -8
  46. package/dist/types/src/smart-session/ui/components/index.d.ts +18 -0
  47. package/dist/types/src/smart-session/ui/components/styles.d.ts +2 -0
  48. package/dist/types/src/smart-session/ui/components/wui-permission-list-item/index.d.ts +18 -0
  49. package/dist/types/src/smart-session/ui/components/wui-permission-list-item/styles.d.ts +2 -0
  50. package/dist/types/src/smart-session/ui/components/wui-smart-session-list-item/index.d.ts +18 -0
  51. package/dist/types/src/smart-session/ui/components/wui-smart-session-list-item/styles.d.ts +2 -0
  52. package/dist/types/src/smart-session/ui/permissions/wui-permission-contract-call/index.d.ts +20 -0
  53. package/dist/types/src/smart-session/ui/permissions/wui-permission-contract-call/styles.d.ts +2 -0
  54. package/dist/types/src/smart-session/ui/views/w3m-smart-session-created-view/index.d.ts +13 -0
  55. package/dist/types/src/smart-session/ui/views/w3m-smart-session-created-view/styles.d.ts +2 -0
  56. package/dist/types/src/smart-session/ui/views/w3m-smart-session-list-view/index.d.ts +19 -0
  57. package/dist/types/src/smart-session/ui/views/w3m-smart-session-list-view/styles.d.ts +2 -0
  58. package/dist/types/src/smart-session/utils/TypeUtils.d.ts +18 -1
  59. package/dist/types/tests/smart-session/requestValidation/mockRequest.d.ts +2 -0
  60. package/dist/types/tests/smart-session/requestValidation/validateCommonFields.test.d.ts +1 -0
  61. package/dist/types/tests/smart-session/requestValidation/validateContractCallPermission.test.d.ts +1 -0
  62. package/dist/types/tests/smart-session/requestValidation/validateERC20RecurringAllowancePermission.test.d.ts +1 -0
  63. package/dist/types/tests/smart-session/requestValidation/validateNativeTokenRecurringAllowancePermission.test.d.ts +1 -0
  64. package/package.json +4 -4
@@ -0,0 +1,135 @@
1
+ import { beforeEach, describe, expect, it } from 'vitest';
2
+ import { validateRequest } from '../../../src/smart-session/helper/index.js';
3
+ import { donutContractAbi } from '../../data/abi.js';
4
+ import { ERROR_MESSAGES } from '../../../src/smart-session/schema/index.js';
5
+ import { mockRequest } from './mockRequest.js';
6
+ describe('ContractCallPermission validation', () => {
7
+ let testRequest;
8
+ beforeEach(() => {
9
+ testRequest = {
10
+ ...mockRequest(),
11
+ permissions: []
12
+ };
13
+ });
14
+ const validPermission = {
15
+ type: 'contract-call',
16
+ data: {
17
+ address: '0x1234567890123456789012345678901234567890',
18
+ abi: donutContractAbi,
19
+ functions: [{ functionName: 'testFunction' }]
20
+ }
21
+ };
22
+ it('should pass for valid permissions array', () => {
23
+ const request = {
24
+ ...testRequest,
25
+ permissions: [validPermission]
26
+ };
27
+ expect(() => validateRequest(request)).not.toThrow();
28
+ });
29
+ it('should pass for multiple valid permissions', () => {
30
+ const request = {
31
+ ...testRequest,
32
+ permissions: [validPermission, validPermission]
33
+ };
34
+ expect(() => validateRequest(request)).not.toThrow();
35
+ });
36
+ it('should fail for empty permissions array', () => {
37
+ const request = {
38
+ ...testRequest,
39
+ permissions: []
40
+ };
41
+ expect(() => validateRequest(request)).toThrow(ERROR_MESSAGES.INVALID_PERMISSIONS);
42
+ });
43
+ it('should fail for non-array permissions', () => {
44
+ const request = {
45
+ ...testRequest,
46
+ permissions: validPermission
47
+ };
48
+ expect(() => validateRequest(request)).toThrow(ERROR_MESSAGES.INVALID_PERMISSIONS_TYPE);
49
+ });
50
+ it('should fail for invalid permission type', () => {
51
+ const request = {
52
+ ...testRequest,
53
+ permissions: [{ ...validPermission, type: 'invalid-type' }]
54
+ };
55
+ expect(() => validateRequest(request)).toThrow(`Invalid permissions.0: Invalid input`);
56
+ });
57
+ it('should fail for missing address in permission data', () => {
58
+ const invalidPermission = {
59
+ ...validPermission,
60
+ data: { ...validPermission.data, address: undefined }
61
+ };
62
+ const request = {
63
+ ...testRequest,
64
+ permissions: [invalidPermission]
65
+ };
66
+ expect(() => validateRequest(request)).toThrow('Invalid permissions.0: Invalid input');
67
+ });
68
+ it('should fail for invalid address format in permission data', () => {
69
+ const invalidPermission = {
70
+ ...validPermission,
71
+ data: { ...validPermission.data, address: '1234' }
72
+ };
73
+ const request = {
74
+ ...testRequest,
75
+ permissions: [invalidPermission]
76
+ };
77
+ expect(() => validateRequest(request)).toThrow(ERROR_MESSAGES.INVALID_ADDRESS);
78
+ });
79
+ it('should fail for missing abi in permission data', () => {
80
+ const invalidPermission = {
81
+ ...validPermission,
82
+ data: { ...validPermission.data, abi: undefined }
83
+ };
84
+ const request = {
85
+ ...testRequest,
86
+ permissions: [invalidPermission]
87
+ };
88
+ expect(() => validateRequest(request)).toThrow('Invalid permissions.0: Invalid input');
89
+ });
90
+ it('should fail for non-array abi in permission data', () => {
91
+ const invalidPermission = {
92
+ ...validPermission,
93
+ data: { ...validPermission.data, abi: {} }
94
+ };
95
+ const request = {
96
+ ...testRequest,
97
+ permissions: [invalidPermission]
98
+ };
99
+ expect(() => validateRequest(request)).toThrow('Invalid permissions.0: Invalid input');
100
+ });
101
+ it('should fail for missing functions in permission data', () => {
102
+ const invalidPermission = {
103
+ ...validPermission,
104
+ data: { ...validPermission.data, functions: undefined }
105
+ };
106
+ const request = {
107
+ ...testRequest,
108
+ permissions: [invalidPermission]
109
+ };
110
+ expect(() => validateRequest(request)).toThrow('Invalid permissions.0: Invalid input');
111
+ });
112
+ it('should fail for non-array functions in permission data', () => {
113
+ const invalidPermission = {
114
+ ...validPermission,
115
+ data: { ...validPermission.data, functions: {} }
116
+ };
117
+ const request = {
118
+ ...testRequest,
119
+ permissions: [invalidPermission]
120
+ };
121
+ expect(() => validateRequest(request)).toThrow('Invalid permissions.0: Invalid input');
122
+ });
123
+ it('should fail for missing functionName in function permission', () => {
124
+ const invalidPermission = {
125
+ ...validPermission,
126
+ data: { ...validPermission.data, functions: [{}] }
127
+ };
128
+ const request = {
129
+ ...testRequest,
130
+ permissions: [invalidPermission]
131
+ };
132
+ expect(() => validateRequest(request)).toThrow('Invalid permissions.0: Invalid input');
133
+ });
134
+ });
135
+ //# sourceMappingURL=validateContractCallPermission.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validateContractCallPermission.test.js","sourceRoot":"","sources":["../../../../../tests/smart-session/requestValidation/validateContractCallPermission.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,175 @@
1
+ import { beforeEach, describe, expect, it } from 'vitest';
2
+ import { validateRequest } from '../../../src/smart-session/helper/index.js';
3
+ import { ERROR_MESSAGES } from '../../../src/smart-session/schema/index.js';
4
+ import { mockRequest } from './mockRequest.js';
5
+ describe('ERC20RecurringAllowancePermission validation', () => {
6
+ let testRequest;
7
+ beforeEach(() => {
8
+ testRequest = {
9
+ ...mockRequest(),
10
+ permissions: []
11
+ };
12
+ });
13
+ const validPermission = {
14
+ type: 'erc20-recurring-allowance',
15
+ data: {
16
+ token: '0x1234567890123456789012345678901234567890',
17
+ allowance: '0x1234567890abcdef',
18
+ start: Math.floor(Date.now() / 1000) + 3600,
19
+ period: 3600
20
+ }
21
+ };
22
+ it('should pass for valid permissions array with valid tokenAddress', () => {
23
+ const request = {
24
+ ...testRequest,
25
+ permissions: [validPermission]
26
+ };
27
+ expect(() => validateRequest(request)).not.toThrow();
28
+ });
29
+ it('should pass for multiple valid permissions', () => {
30
+ const request = {
31
+ ...testRequest,
32
+ permissions: [validPermission, validPermission]
33
+ };
34
+ expect(() => validateRequest(request)).not.toThrow();
35
+ });
36
+ it('should fail for empty permissions array', () => {
37
+ const request = {
38
+ ...testRequest,
39
+ permissions: []
40
+ };
41
+ expect(() => validateRequest(request)).toThrow(ERROR_MESSAGES.INVALID_PERMISSIONS);
42
+ });
43
+ it('should fail for non-array permissions', () => {
44
+ const request = {
45
+ ...testRequest,
46
+ permissions: validPermission
47
+ };
48
+ expect(() => validateRequest(request)).toThrow(ERROR_MESSAGES.INVALID_PERMISSIONS_TYPE);
49
+ });
50
+ it('should fail for invalid permission type', () => {
51
+ const request = {
52
+ ...testRequest,
53
+ permissions: [{ ...validPermission, type: 'invalid-type' }]
54
+ };
55
+ expect(() => validateRequest(request)).toThrow(`Invalid permissions.0: Invalid input`);
56
+ });
57
+ it('should fail for missing allowance', () => {
58
+ const request = {
59
+ ...testRequest,
60
+ permissions: [
61
+ {
62
+ type: 'erc20-recurring-allowance',
63
+ data: {
64
+ token: '0x1234567890123456789012345678901234567890',
65
+ start: Math.floor(Date.now() / 1000) + 3600,
66
+ period: 3600
67
+ }
68
+ }
69
+ ]
70
+ };
71
+ expect(() => validateRequest(request)).toThrow('Invalid permissions.0: Invalid input');
72
+ });
73
+ it('should fail for invalid allowance format (missing 0x prefix)', () => {
74
+ const request = {
75
+ ...testRequest,
76
+ permissions: [
77
+ {
78
+ type: 'erc20-recurring-allowance',
79
+ data: {
80
+ token: '0x1234567890123456789012345678901234567890',
81
+ allowance: '1234567890abcdef',
82
+ start: Math.floor(Date.now() / 1000) + 3600,
83
+ period: 3600
84
+ }
85
+ }
86
+ ]
87
+ };
88
+ expect(() => validateRequest(request)).toThrow(`Invalid permissions.0.data.allowance: ${ERROR_MESSAGES.INVALID_ALLOWANCE_FORMAT}`);
89
+ });
90
+ it('should fail for missing token', () => {
91
+ const request = {
92
+ ...testRequest,
93
+ permissions: [
94
+ {
95
+ type: 'erc20-recurring-allowance',
96
+ data: {
97
+ allowance: '0x1234567890abcdef',
98
+ start: Math.floor(Date.now() / 1000) + 3600,
99
+ period: 3600
100
+ }
101
+ }
102
+ ]
103
+ };
104
+ expect(() => validateRequest(request)).toThrow('Invalid permissions.0: Invalid input');
105
+ });
106
+ it('should fail for invalid tokenAddress format (missing 0x prefix)', () => {
107
+ const request = {
108
+ ...testRequest,
109
+ permissions: [
110
+ {
111
+ type: 'erc20-recurring-allowance',
112
+ data: {
113
+ token: '1234567890123456789012345678901234567890',
114
+ allowance: '0x1234567890abcdef',
115
+ start: Math.floor(Date.now() / 1000) + 3600,
116
+ period: 3600
117
+ }
118
+ }
119
+ ]
120
+ };
121
+ expect(() => validateRequest(request)).toThrow(`Invalid permissions.0.data.token: ${ERROR_MESSAGES.INVALID_ADDRESS}`);
122
+ });
123
+ it('should fail for start time in the past', () => {
124
+ const startTime = Math.floor(Date.now() / 1000) - 3600;
125
+ const request = {
126
+ ...testRequest,
127
+ permissions: [
128
+ {
129
+ type: 'erc20-recurring-allowance',
130
+ data: {
131
+ token: '0x1234567890123456789012345678901234567890',
132
+ allowance: '0x1234567890abcdef',
133
+ start: startTime,
134
+ period: 3600
135
+ }
136
+ }
137
+ ]
138
+ };
139
+ expect(() => validateRequest(request)).toThrow(`Invalid permissions.0.data.start: ${ERROR_MESSAGES.INVALID_START}`);
140
+ });
141
+ it('should fail for missing period', () => {
142
+ const request = {
143
+ ...testRequest,
144
+ permissions: [
145
+ {
146
+ type: 'erc20-recurring-allowance',
147
+ data: {
148
+ token: '0x1234567890123456789012345678901234567890',
149
+ allowance: '0x1234567890abcdef',
150
+ start: Math.floor(Date.now() / 1000) + 3600
151
+ }
152
+ }
153
+ ]
154
+ };
155
+ expect(() => validateRequest(request)).toThrow('Invalid permissions.0: Invalid input');
156
+ });
157
+ it('should fail for invalid period (negative)', () => {
158
+ const request = {
159
+ ...testRequest,
160
+ permissions: [
161
+ {
162
+ type: 'erc20-recurring-allowance',
163
+ data: {
164
+ token: '0x1234567890123456789012345678901234567890',
165
+ allowance: '0x1234567890abcdef',
166
+ start: Math.floor(Date.now() / 1000) + 3600,
167
+ period: -3600
168
+ }
169
+ }
170
+ ]
171
+ };
172
+ expect(() => validateRequest(request)).toThrow(`Invalid permissions.0.data.period: ${ERROR_MESSAGES.INVALID_PERIOD}`);
173
+ });
174
+ });
175
+ //# sourceMappingURL=validateERC20RecurringAllowancePermission.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validateERC20RecurringAllowancePermission.test.js","sourceRoot":"","sources":["../../../../../tests/smart-session/requestValidation/validateERC20RecurringAllowancePermission.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,137 @@
1
+ import { beforeEach, describe, expect, it } from 'vitest';
2
+ import { validateRequest } from '../../../src/smart-session/helper/index.js';
3
+ import { ERROR_MESSAGES } from '../../../src/smart-session/schema/index.js';
4
+ import { mockRequest } from './mockRequest.js';
5
+ describe('NativeTokenRecurringAllowancePermission validation', () => {
6
+ let testRequest;
7
+ beforeEach(() => {
8
+ testRequest = {
9
+ ...mockRequest(),
10
+ permissions: []
11
+ };
12
+ });
13
+ const validPermission = {
14
+ type: 'native-token-recurring-allowance',
15
+ data: {
16
+ allowance: '0x1234567890abcdef',
17
+ start: Math.floor(Date.now() / 1000) + 3600,
18
+ period: 3600
19
+ }
20
+ };
21
+ it('should pass for valid permissions array', () => {
22
+ const request = {
23
+ ...testRequest,
24
+ permissions: [validPermission]
25
+ };
26
+ expect(() => validateRequest(request)).not.toThrow();
27
+ });
28
+ it('should pass for multiple valid permissions', () => {
29
+ const request = {
30
+ ...testRequest,
31
+ permissions: [validPermission, validPermission]
32
+ };
33
+ expect(() => validateRequest(request)).not.toThrow();
34
+ });
35
+ it('should fail for empty permissions array', () => {
36
+ const request = {
37
+ ...testRequest,
38
+ permissions: []
39
+ };
40
+ expect(() => validateRequest(request)).toThrow(ERROR_MESSAGES.INVALID_PERMISSIONS);
41
+ });
42
+ it('should fail for non-array permissions', () => {
43
+ const request = {
44
+ ...testRequest,
45
+ permissions: validPermission
46
+ };
47
+ expect(() => validateRequest(request)).toThrow(ERROR_MESSAGES.INVALID_PERMISSIONS_TYPE);
48
+ });
49
+ it('should fail for invalid permission type', () => {
50
+ const request = {
51
+ ...testRequest,
52
+ permissions: [{ ...validPermission, type: 'invalid-type' }]
53
+ };
54
+ expect(() => validateRequest(request)).toThrow(`Invalid permissions.0: Invalid input`);
55
+ });
56
+ it('should fail for missing allowance', () => {
57
+ const request = {
58
+ ...testRequest,
59
+ permissions: [
60
+ {
61
+ type: 'native-token-recurring-allowance',
62
+ data: {
63
+ start: Math.floor(Date.now() / 1000) + 3600,
64
+ period: 3600
65
+ }
66
+ }
67
+ ]
68
+ };
69
+ expect(() => validateRequest(request)).toThrow('Invalid permissions.0: Invalid input');
70
+ });
71
+ it('should fail for invalid allowance format (missing 0x prefix)', () => {
72
+ const request = {
73
+ ...testRequest,
74
+ permissions: [
75
+ {
76
+ type: 'native-token-recurring-allowance',
77
+ data: {
78
+ allowance: '1234567890abcdef',
79
+ start: Math.floor(Date.now() / 1000) + 3600,
80
+ period: 3600
81
+ }
82
+ }
83
+ ]
84
+ };
85
+ expect(() => validateRequest(request)).toThrow(`Invalid permissions.0.data.allowance: ${ERROR_MESSAGES.INVALID_ALLOWANCE_FORMAT}`);
86
+ });
87
+ it('should fail for start time in the past', () => {
88
+ const startTime = Math.floor(Date.now() / 1000) - 3600;
89
+ console.log(startTime);
90
+ const request = {
91
+ ...testRequest,
92
+ permissions: [
93
+ {
94
+ type: 'native-token-recurring-allowance',
95
+ data: {
96
+ allowance: '0x1234567890abcdef',
97
+ start: startTime,
98
+ period: 3600
99
+ }
100
+ }
101
+ ]
102
+ };
103
+ expect(() => validateRequest(request)).toThrow(`Invalid permissions.0.data.start: ${ERROR_MESSAGES.INVALID_START}`);
104
+ });
105
+ it('should fail for missing period', () => {
106
+ const request = {
107
+ ...testRequest,
108
+ permissions: [
109
+ {
110
+ type: 'native-token-recurring-allowance',
111
+ data: {
112
+ allowance: '0x1234567890abcdef',
113
+ start: Math.floor(Date.now() / 1000) + 3600
114
+ }
115
+ }
116
+ ]
117
+ };
118
+ expect(() => validateRequest(request)).toThrow('Invalid permissions.0: Invalid input');
119
+ });
120
+ it('should fail for missing period', () => {
121
+ const request = {
122
+ ...testRequest,
123
+ permissions: [
124
+ {
125
+ type: 'native-token-recurring-allowance',
126
+ data: {
127
+ allowance: '0x1234567890abcdef',
128
+ start: Math.floor(Date.now() / 1000) + 3600,
129
+ period: -3600
130
+ }
131
+ }
132
+ ]
133
+ };
134
+ expect(() => validateRequest(request)).toThrow(`Invalid permissions.0.data.period: ${ERROR_MESSAGES.INVALID_PERIOD}`);
135
+ });
136
+ });
137
+ //# sourceMappingURL=validateNativeTokenRecurringAllowancePermission.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validateNativeTokenRecurringAllowancePermission.test.js","sourceRoot":"","sources":["../../../../../tests/smart-session/requestValidation/validateNativeTokenRecurringAllowancePermission.test.ts"],"names":[],"mappings":"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"}