@safe-global/safe-deployments 1.37.0 → 1.37.2

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 (112) hide show
  1. package/README.md +150 -31
  2. package/dist/accessors.d.ts +14 -1
  3. package/dist/accessors.js +19 -11
  4. package/dist/assets/v1.0.0/gnosis_safe.json +479 -103
  5. package/dist/assets/v1.0.0/proxy_factory.json +11 -6
  6. package/dist/assets/v1.1.1/default_callback_handler.json +14 -9
  7. package/dist/assets/v1.1.1/gnosis_safe.json +14 -9
  8. package/dist/assets/v1.1.1/multi_send.json +14 -9
  9. package/dist/assets/v1.1.1/proxy_factory.json +14 -9
  10. package/dist/assets/v1.2.0/gnosis_safe.json +14 -9
  11. package/dist/assets/v1.3.0/compatibility_fallback_handler.json +259 -235
  12. package/dist/assets/v1.3.0/create_call.json +259 -235
  13. package/dist/assets/v1.3.0/gnosis_safe.json +259 -235
  14. package/dist/assets/v1.3.0/gnosis_safe_l2.json +259 -235
  15. package/dist/assets/v1.3.0/multi_send.json +259 -235
  16. package/dist/assets/v1.3.0/multi_send_call_only.json +259 -235
  17. package/dist/assets/v1.3.0/proxy_factory.json +259 -235
  18. package/dist/assets/v1.3.0/sign_message_lib.json +260 -236
  19. package/dist/assets/v1.3.0/simulate_tx_accessor.json +259 -235
  20. package/dist/assets/v1.4.1/compatibility_fallback_handler.json +119 -108
  21. package/dist/assets/v1.4.1/create_call.json +119 -108
  22. package/dist/assets/v1.4.1/multi_send.json +119 -108
  23. package/dist/assets/v1.4.1/multi_send_call_only.json +119 -108
  24. package/dist/assets/v1.4.1/safe.json +119 -108
  25. package/dist/assets/v1.4.1/safe_l2.json +119 -108
  26. package/dist/assets/v1.4.1/safe_proxy_factory.json +120 -109
  27. package/dist/assets/v1.4.1/sign_message_lib.json +120 -109
  28. package/dist/assets/v1.4.1/simulate_tx_accessor.json +119 -108
  29. package/dist/deployments.d.ts +12 -0
  30. package/dist/deployments.js +71 -0
  31. package/dist/factories.d.ts +12 -1
  32. package/dist/factories.js +17 -13
  33. package/dist/handler.d.ts +29 -1
  34. package/dist/handler.js +55 -24
  35. package/dist/libs.d.ts +45 -1
  36. package/dist/libs.js +62 -32
  37. package/dist/safes.d.ts +23 -3
  38. package/dist/safes.js +32 -21
  39. package/dist/types.d.ts +37 -2
  40. package/dist/utils.d.ts +12 -2
  41. package/dist/utils.js +61 -9
  42. package/package.json +18 -19
  43. package/src/__tests__/assets/v1/v1.0.0/gnosis_safe.json +796 -0
  44. package/src/__tests__/assets/v1/v1.0.0/proxy_factory.json +111 -0
  45. package/src/__tests__/assets/v1/v1.1.1/create_and_add_modules.json +59 -0
  46. package/src/__tests__/assets/v1/v1.1.1/create_call.json +90 -0
  47. package/src/__tests__/assets/v1/v1.1.1/default_callback_handler.json +212 -0
  48. package/src/__tests__/assets/v1/v1.1.1/gnosis_safe.json +1001 -0
  49. package/src/__tests__/assets/v1/v1.1.1/multi_send.json +45 -0
  50. package/src/__tests__/assets/v1/v1.1.1/proxy_factory.json +191 -0
  51. package/src/__tests__/assets/v1/v1.2.0/gnosis_safe.json +1022 -0
  52. package/src/__tests__/assets/v1/v1.3.0/compatibility_fallback_handler.json +588 -0
  53. package/src/__tests__/assets/v1/v1.3.0/create_call.json +331 -0
  54. package/src/__tests__/assets/v1/v1.3.0/gnosis_safe.json +1296 -0
  55. package/src/__tests__/assets/v1/v1.3.0/gnosis_safe_l2.json +1401 -0
  56. package/src/__tests__/assets/v1/v1.3.0/multi_send.json +283 -0
  57. package/src/__tests__/assets/v1/v1.3.0/multi_send_call_only.json +278 -0
  58. package/src/__tests__/assets/v1/v1.3.0/proxy_factory.json +426 -0
  59. package/src/__tests__/assets/v1/v1.3.0/sign_message_lib.json +310 -0
  60. package/src/__tests__/assets/v1/v1.3.0/simulate_tx_accessor.json +314 -0
  61. package/src/__tests__/assets/v1/v1.4.1/compatibility_fallback_handler.json +447 -0
  62. package/src/__tests__/assets/v1/v1.4.1/create_call.json +192 -0
  63. package/src/__tests__/assets/v1/v1.4.1/multi_send.json +144 -0
  64. package/src/__tests__/assets/v1/v1.4.1/multi_send_call_only.json +139 -0
  65. package/src/__tests__/assets/v1/v1.4.1/safe.json +1123 -0
  66. package/src/__tests__/assets/v1/v1.4.1/safe_l2.json +1228 -0
  67. package/src/__tests__/assets/v1/v1.4.1/safe_proxy_factory.json +263 -0
  68. package/src/__tests__/assets/v1/v1.4.1/sign_message_lib.json +171 -0
  69. package/src/__tests__/assets/v1/v1.4.1/simulate_tx_accessor.json +175 -0
  70. package/src/__tests__/assets.test.ts +101 -38
  71. package/src/__tests__/factories.test.ts +3 -3
  72. package/src/__tests__/handler.test.ts +5 -5
  73. package/src/__tests__/libs.test.ts +9 -9
  74. package/src/__tests__/safes.test.ts +9 -12
  75. package/src/__tests__/utils.test.ts +421 -0
  76. package/src/accessors.ts +21 -12
  77. package/src/assets/v1.0.0/gnosis_safe.json +479 -103
  78. package/src/assets/v1.0.0/proxy_factory.json +11 -6
  79. package/src/assets/v1.1.1/create_and_add_modules.json +19 -10
  80. package/src/assets/v1.1.1/create_call.json +14 -9
  81. package/src/assets/v1.1.1/default_callback_handler.json +14 -9
  82. package/src/assets/v1.1.1/gnosis_safe.json +14 -9
  83. package/src/assets/v1.1.1/multi_send.json +14 -9
  84. package/src/assets/v1.1.1/proxy_factory.json +14 -9
  85. package/src/assets/v1.2.0/gnosis_safe.json +14 -9
  86. package/src/assets/v1.3.0/compatibility_fallback_handler.json +259 -235
  87. package/src/assets/v1.3.0/create_call.json +259 -235
  88. package/src/assets/v1.3.0/gnosis_safe.json +259 -235
  89. package/src/assets/v1.3.0/gnosis_safe_l2.json +259 -235
  90. package/src/assets/v1.3.0/multi_send.json +259 -235
  91. package/src/assets/v1.3.0/multi_send_call_only.json +259 -235
  92. package/src/assets/v1.3.0/proxy_factory.json +259 -235
  93. package/src/assets/v1.3.0/sign_message_lib.json +260 -236
  94. package/src/assets/v1.3.0/simulate_tx_accessor.json +259 -235
  95. package/src/assets/v1.4.1/compatibility_fallback_handler.json +119 -108
  96. package/src/assets/v1.4.1/create_call.json +119 -108
  97. package/src/assets/v1.4.1/multi_send.json +119 -108
  98. package/src/assets/v1.4.1/multi_send_call_only.json +119 -108
  99. package/src/assets/v1.4.1/safe.json +119 -108
  100. package/src/assets/v1.4.1/safe_l2.json +119 -108
  101. package/src/assets/v1.4.1/safe_proxy_factory.json +120 -109
  102. package/src/assets/v1.4.1/sign_message_lib.json +120 -109
  103. package/src/assets/v1.4.1/simulate_tx_accessor.json +119 -108
  104. package/src/deployments.ts +90 -0
  105. package/src/factories.ts +19 -14
  106. package/src/handler.ts +62 -26
  107. package/src/index.ts +6 -6
  108. package/src/libs.ts +69 -35
  109. package/src/safes.ts +34 -22
  110. package/src/types.ts +86 -10
  111. package/src/utils.ts +105 -12
  112. package/src/__tests__/utilts.test.ts +0 -385
@@ -0,0 +1,421 @@
1
+ import SafeL2141 from './assets/v1/v1.4.1/safe_l2.json';
2
+ import Safe141 from './assets/v1/v1.4.1/safe.json';
3
+
4
+ import GnosisSafeL2130 from './assets/v1/v1.3.0/gnosis_safe_l2.json';
5
+ import GnosisSafe130 from './assets/v1/v1.3.0/gnosis_safe.json';
6
+ import GnosisSafe120 from './assets/v1/v1.2.0/gnosis_safe.json';
7
+ import GnosisSafe111 from './assets/v1/v1.1.1/gnosis_safe.json';
8
+ import GnosisSafe100 from './assets/v1/v1.0.0/gnosis_safe.json';
9
+ import { findDeployment } from '../utils';
10
+ import { _SAFE_DEPLOYMENTS, _SAFE_L2_DEPLOYMENTS } from '../deployments';
11
+ import { SingletonDeployment, SingletonDeploymentJSON, DeploymentFormats, SingletonDeploymentV2 } from '../types';
12
+
13
+ const _safeDeploymentsReverse = [..._SAFE_DEPLOYMENTS].reverse();
14
+
15
+ describe('utils.ts', () => {
16
+ describe('findDeployment', () => {
17
+ describe('singleton format', () => {
18
+ it('should filter by released by default', () => {
19
+ const testUnreleasedDeploymentJson: SingletonDeploymentJSON = {
20
+ version: '',
21
+ abi: [],
22
+ deployments: {
23
+ canonical: {
24
+ address: '0xbeefbeefbeefbeefbeefbeefbeefbeefbeefbeef',
25
+ codeHash: '0x0000000000000000000000000000000000000000000000000000000000000000',
26
+ },
27
+ },
28
+ networkAddresses: { '1': 'canonical' },
29
+ contractName: '',
30
+ released: false,
31
+ };
32
+ const testReleasedDeploymentJson: SingletonDeploymentJSON = {
33
+ version: '',
34
+ abi: [],
35
+ deployments: {
36
+ canonical: {
37
+ address: '0xbeefbeefbeefbeefbeefbeefbeefbeefbeefbeef',
38
+ codeHash: '0x0000000000000000000000000000000000000000000000000000000000000000',
39
+ },
40
+ },
41
+ networkAddresses: { '1': 'canonical' },
42
+ contractName: '',
43
+ released: true, // Default filter value
44
+ };
45
+ const testReleasedDeployment: SingletonDeployment = {
46
+ defaultAddress: '0xbeefbeefbeefbeefbeefbeefbeefbeefbeefbeef',
47
+ deployments: {
48
+ canonical: {
49
+ address: '0xbeefbeefbeefbeefbeefbeefbeefbeefbeefbeef',
50
+ codeHash: '0x0000000000000000000000000000000000000000000000000000000000000000',
51
+ },
52
+ },
53
+ networkAddresses: { '1': '0xbeefbeefbeefbeefbeefbeefbeefbeefbeefbeef' },
54
+ released: true,
55
+ abi: [],
56
+ version: '',
57
+ contractName: '',
58
+ };
59
+
60
+ const testDeployments = [
61
+ testUnreleasedDeploymentJson,
62
+ testUnreleasedDeploymentJson,
63
+ testReleasedDeploymentJson,
64
+ ];
65
+
66
+ expect(findDeployment(undefined, testDeployments)).toMatchObject(testReleasedDeployment);
67
+
68
+ // should preserve the released flag even if its not explicitly passed
69
+ expect(findDeployment({ network: '1' }, testDeployments)).toMatchObject(testReleasedDeployment);
70
+ });
71
+
72
+ it('should return the correct deployment (filtered by version)', () => {
73
+ // Chronological deployments
74
+ expect(findDeployment({ version: '1.3.0' }, _SAFE_DEPLOYMENTS)).toMatchObject(GnosisSafe130);
75
+ expect(findDeployment({ version: '1.2.0' }, _SAFE_DEPLOYMENTS)).toMatchObject(GnosisSafe120);
76
+ expect(findDeployment({ version: '1.1.1' }, _SAFE_DEPLOYMENTS)).toMatchObject(GnosisSafe111);
77
+ expect(findDeployment({ version: '1.0.0' }, _SAFE_DEPLOYMENTS)).toMatchObject(GnosisSafe100);
78
+ // Incorrect filter:
79
+ expect(findDeployment({ version: '2.0.0' }, _SAFE_DEPLOYMENTS)).toBeUndefined();
80
+
81
+ // L2 deployments
82
+ expect(findDeployment({ version: '1.3.0+L2' }, _SAFE_L2_DEPLOYMENTS)).toMatchObject(GnosisSafeL2130);
83
+ // Incorrect filter:
84
+ expect(findDeployment({ version: '2.0.0+L2' }, _SAFE_L2_DEPLOYMENTS)).toBeUndefined();
85
+ });
86
+
87
+ it('should return the correct deployment (filtered by released flag)', () => {
88
+ const testUnreleasedDeploymentJson: SingletonDeploymentJSON = {
89
+ version: '',
90
+ abi: [],
91
+ deployments: {
92
+ canonical: {
93
+ address: '0xbeefbeefbeefbeefbeefbeefbeefbeefbeefbeef',
94
+ codeHash: '0x0000000000000000000000000000000000000000000000000000000000000000',
95
+ },
96
+ },
97
+ networkAddresses: { '1': 'canonical' },
98
+ contractName: '',
99
+ released: false,
100
+ };
101
+ const testReleasedDeploymentJson: SingletonDeploymentJSON = {
102
+ version: '',
103
+ abi: [],
104
+ deployments: {
105
+ canonical: {
106
+ address: '0xbeefbeefbeefbeefbeefbeefbeefbeefbeefbeef',
107
+ codeHash: '0x0000000000000000000000000000000000000000000000000000000000000000',
108
+ },
109
+ },
110
+ networkAddresses: { '1': 'canonical' },
111
+ contractName: '',
112
+ released: true, // Default filter value
113
+ };
114
+ const testUnreleasedDeployment: SingletonDeployment = {
115
+ defaultAddress: '0xbeefbeefbeefbeefbeefbeefbeefbeefbeefbeef',
116
+ deployments: {
117
+ canonical: {
118
+ address: '0xbeefbeefbeefbeefbeefbeefbeefbeefbeefbeef',
119
+ codeHash: '0x0000000000000000000000000000000000000000000000000000000000000000',
120
+ },
121
+ },
122
+ networkAddresses: { '1': '0xbeefbeefbeefbeefbeefbeefbeefbeefbeefbeef' },
123
+ released: false,
124
+ abi: [],
125
+ version: '',
126
+ contractName: '',
127
+ };
128
+
129
+ const testDeployments = [testUnreleasedDeploymentJson, testReleasedDeploymentJson];
130
+
131
+ // Chronological deployments
132
+ expect(findDeployment({ released: true }, _SAFE_DEPLOYMENTS)).toMatchObject(Safe141);
133
+
134
+ // Reverse chronological deployments
135
+ expect(findDeployment({ released: true }, _safeDeploymentsReverse)).toMatchObject(GnosisSafe100);
136
+ // Released flag set to false:
137
+ expect(findDeployment({ released: false }, testDeployments)).toMatchObject(testUnreleasedDeployment);
138
+
139
+ // L2 deployments
140
+ expect(findDeployment({ released: true }, _SAFE_L2_DEPLOYMENTS)).toMatchObject(SafeL2141);
141
+ });
142
+
143
+ it('should return the correct deployment (filtered by network)', () => {
144
+ // Reverse chronological deployments
145
+ expect(findDeployment({ network: '1' }, _safeDeploymentsReverse)).toMatchObject(GnosisSafe100);
146
+ expect(findDeployment({ network: '73799' }, _safeDeploymentsReverse)).toMatchObject(GnosisSafe111);
147
+ expect(findDeployment({ network: '11297108109' }, _safeDeploymentsReverse)).toMatchObject(GnosisSafe130);
148
+ // Incorrect filter:
149
+ expect(findDeployment({ network: '0' }, _safeDeploymentsReverse)).toBeUndefined();
150
+
151
+ // L2 deployments
152
+ expect(findDeployment({ network: '100' }, _SAFE_L2_DEPLOYMENTS)).toMatchObject(SafeL2141);
153
+ // Incorrect filter:
154
+ expect(findDeployment({ network: '0' }, _SAFE_L2_DEPLOYMENTS)).toBeUndefined();
155
+ });
156
+ it('should return the correct deployment (filtered by version and released)', () => {
157
+ // Chronological deployments
158
+ expect(findDeployment({ version: '1.3.0', released: true }, _SAFE_DEPLOYMENTS)).toMatchObject(GnosisSafe130);
159
+ expect(findDeployment({ version: '1.2.0', released: true }, _SAFE_DEPLOYMENTS)).toMatchObject(GnosisSafe120);
160
+ expect(findDeployment({ version: '1.1.1', released: true }, _SAFE_DEPLOYMENTS)).toMatchObject(GnosisSafe111);
161
+ expect(findDeployment({ version: '1.0.0', released: true }, _SAFE_DEPLOYMENTS)).toMatchObject(GnosisSafe100);
162
+ // Incorrect filter:
163
+ expect(findDeployment({ version: '1.0.0', released: false }, _SAFE_DEPLOYMENTS)).toBeUndefined();
164
+
165
+ // L2 deployments
166
+ expect(
167
+ findDeployment(
168
+ {
169
+ version: '1.3.0',
170
+ released: true,
171
+ },
172
+ _SAFE_L2_DEPLOYMENTS,
173
+ ),
174
+ ).toMatchObject(GnosisSafeL2130);
175
+ expect(findDeployment({ version: '1.3.0+L2', released: true }, _SAFE_L2_DEPLOYMENTS)).toMatchObject(
176
+ GnosisSafeL2130,
177
+ );
178
+ // Incorrect filter:
179
+ expect(findDeployment({ version: '1.3.0+L2', released: false }, _SAFE_L2_DEPLOYMENTS)).toBeUndefined();
180
+ });
181
+ it('should return the correct deployment (filtered by version and network)', () => {
182
+ // Reverse chronological deployments
183
+ expect(
184
+ findDeployment(
185
+ {
186
+ version: '1.0.0',
187
+ network: '1',
188
+ },
189
+ _safeDeploymentsReverse,
190
+ ),
191
+ ).toMatchObject(GnosisSafe100);
192
+ expect(
193
+ findDeployment(
194
+ {
195
+ version: '1.1.1',
196
+ network: '1',
197
+ },
198
+ _safeDeploymentsReverse,
199
+ ),
200
+ ).toMatchObject(GnosisSafe111);
201
+ expect(
202
+ findDeployment(
203
+ {
204
+ version: '1.2.0',
205
+ network: '1',
206
+ },
207
+ _safeDeploymentsReverse,
208
+ ),
209
+ ).toMatchObject(GnosisSafe120);
210
+ expect(
211
+ findDeployment(
212
+ {
213
+ version: '1.3.0',
214
+ network: '1',
215
+ },
216
+ _safeDeploymentsReverse,
217
+ ),
218
+ ).toMatchObject(GnosisSafe130);
219
+ // Incorrect filter:
220
+ expect(findDeployment({ version: '1.3.0', network: '0' }, _safeDeploymentsReverse)).toBeUndefined();
221
+
222
+ // L2 deployments
223
+ expect(
224
+ findDeployment(
225
+ {
226
+ version: '1.3.0',
227
+ network: '100',
228
+ },
229
+ _SAFE_L2_DEPLOYMENTS,
230
+ ),
231
+ ).toMatchObject(GnosisSafeL2130);
232
+ expect(findDeployment({ version: '1.3.0+L2', network: '100' }, _SAFE_L2_DEPLOYMENTS)).toMatchObject(
233
+ GnosisSafeL2130,
234
+ );
235
+ // Incorrect filter:
236
+ expect(findDeployment({ version: '1.3.0+L2', network: '0' }, _SAFE_L2_DEPLOYMENTS)).toBeUndefined();
237
+ });
238
+ it('should return the correct deployment (filtered by released and network)', () => {
239
+ const testUnreleasedDeploymentJson: SingletonDeploymentJSON = {
240
+ version: '',
241
+ abi: [],
242
+ deployments: {
243
+ canonical: {
244
+ address: '0xbeefbeefbeefbeefbeefbeefbeefbeefbeefbeef',
245
+ codeHash: '0x0000000000000000000000000000000000000000000000000000000000000000',
246
+ },
247
+ },
248
+ networkAddresses: { '1': 'canonical' },
249
+ contractName: '',
250
+ released: false,
251
+ };
252
+ const testReleasedDeploymentJson: SingletonDeploymentJSON = {
253
+ version: '',
254
+ abi: [],
255
+ deployments: {
256
+ canonical: {
257
+ address: '0xbeefbeefbeefbeefbeefbeefbeefbeefbeefbeef',
258
+ codeHash: '0x0000000000000000000000000000000000000000000000000000000000000000',
259
+ },
260
+ },
261
+ networkAddresses: { '1': 'canonical' },
262
+ contractName: '',
263
+ released: true, // Default filter value
264
+ };
265
+ const testUnreleasedDeployment: SingletonDeployment = {
266
+ defaultAddress: '0xbeefbeefbeefbeefbeefbeefbeefbeefbeefbeef',
267
+ deployments: {
268
+ canonical: {
269
+ address: '0xbeefbeefbeefbeefbeefbeefbeefbeefbeefbeef',
270
+ codeHash: '0x0000000000000000000000000000000000000000000000000000000000000000',
271
+ },
272
+ },
273
+ networkAddresses: { '1': '0xbeefbeefbeefbeefbeefbeefbeefbeefbeefbeef' },
274
+ released: false,
275
+ abi: [],
276
+ version: '',
277
+ contractName: '',
278
+ };
279
+
280
+ const testDeployments = [
281
+ testUnreleasedDeploymentJson,
282
+ testUnreleasedDeploymentJson,
283
+ testReleasedDeploymentJson,
284
+ ];
285
+
286
+ // Reverse chronological deployments
287
+ expect(
288
+ findDeployment(
289
+ {
290
+ released: true,
291
+ network: '1',
292
+ },
293
+ _safeDeploymentsReverse,
294
+ ),
295
+ ).toMatchObject(GnosisSafe100);
296
+ expect(findDeployment({ released: true, network: '246' }, _safeDeploymentsReverse)).toMatchObject(
297
+ GnosisSafe111,
298
+ );
299
+ expect(findDeployment({ released: true, network: '11297108109' }, _safeDeploymentsReverse)).toMatchObject(
300
+ GnosisSafe130,
301
+ );
302
+ // Incorrect filter:
303
+ expect(findDeployment({ released: true, network: '0' }, _safeDeploymentsReverse)).toBeUndefined();
304
+ expect(findDeployment({ released: false, network: '1' }, testDeployments)).toMatchObject(
305
+ testUnreleasedDeployment,
306
+ );
307
+
308
+ // L2 deployments
309
+ expect(findDeployment({ released: true, network: '100' }, _SAFE_L2_DEPLOYMENTS)).toMatchObject(SafeL2141);
310
+ // Incorrect filter:
311
+ expect(findDeployment({ released: true, network: '0' }, _SAFE_L2_DEPLOYMENTS)).toBeUndefined();
312
+ expect(findDeployment({ released: false, network: '100' }, testDeployments)).toBeUndefined();
313
+ });
314
+ it('should return the correct deployment (filtered by version, released and network)', () => {
315
+ // Reverse chronological deployments
316
+ expect(
317
+ findDeployment({ version: '1.0.0', released: true, network: '1' }, _safeDeploymentsReverse),
318
+ ).toMatchObject(GnosisSafe100);
319
+ expect(
320
+ findDeployment({ version: '1.1.1', released: true, network: '246' }, _safeDeploymentsReverse),
321
+ ).toMatchObject(GnosisSafe111);
322
+ expect(
323
+ findDeployment({ version: '1.2.0', released: true, network: '73799' }, _safeDeploymentsReverse),
324
+ ).toMatchObject(GnosisSafe120);
325
+ expect(
326
+ findDeployment({ version: '1.3.0', released: true, network: '11297108109' }, _safeDeploymentsReverse),
327
+ ).toMatchObject(GnosisSafe130);
328
+ // Incorrect filter:
329
+ expect(
330
+ findDeployment({ version: '1.3.0', released: false, network: '11297108109' }, _safeDeploymentsReverse),
331
+ ).toBeUndefined();
332
+ expect(
333
+ findDeployment({ version: '1.3.0', released: true, network: '0' }, _safeDeploymentsReverse),
334
+ ).toBeUndefined();
335
+ expect(
336
+ findDeployment({ version: '2.0.0', released: true, network: '11297108109' }, _safeDeploymentsReverse),
337
+ ).toBeUndefined();
338
+
339
+ // L2 deployments
340
+ expect(
341
+ findDeployment(
342
+ {
343
+ version: '1.3.0',
344
+ released: true,
345
+ network: '100',
346
+ },
347
+ _SAFE_L2_DEPLOYMENTS,
348
+ ),
349
+ ).toMatchObject(GnosisSafeL2130);
350
+ expect(
351
+ findDeployment({ version: '1.3.0+L2', released: true, network: '100' }, _SAFE_L2_DEPLOYMENTS),
352
+ ).toMatchObject(GnosisSafeL2130);
353
+ // Incorrect filter:
354
+ expect(
355
+ findDeployment({ version: '1.3.0+L2', released: false, network: '100' }, _SAFE_L2_DEPLOYMENTS),
356
+ ).toBeUndefined();
357
+ expect(
358
+ findDeployment({ version: '1.3.0+L2', released: true, network: '0' }, _SAFE_L2_DEPLOYMENTS),
359
+ ).toBeUndefined();
360
+ expect(
361
+ findDeployment({ version: '2.0.0+L2', released: true, network: '100' }, _SAFE_L2_DEPLOYMENTS),
362
+ ).toBeUndefined();
363
+ });
364
+ });
365
+
366
+ describe('multiple format', () => {
367
+ it('should populate the networkAddresses field', () => {
368
+ const testReleasedDeploymentJson: SingletonDeploymentJSON = {
369
+ version: '',
370
+ abi: [],
371
+ deployments: {
372
+ canonical: {
373
+ address: '0xbeefbeefbeefbeefbeefbeefbeefbeefbeefbeef',
374
+ codeHash: '0x0000000000000000000000000000000000000000000000000000000000000000',
375
+ },
376
+ eip155: {
377
+ address: '0xc0ffeec0ffeec0ffeec0ffeec0ffeec0ffeebabe',
378
+ codeHash: '0x0000000000000000000000000000000000000000000000000000000000000000',
379
+ },
380
+ zksync: {
381
+ address: '0xbabebabebabebabebabebabebabebabebabebabe',
382
+ codeHash: '0x0000000000000000000000000000000000000000000000000000000000000000',
383
+ },
384
+ },
385
+ networkAddresses: { '1': 'canonical', '100': 'zksync', '101': ['canonical', 'eip155'] },
386
+ contractName: '',
387
+ released: true, // Default filter value
388
+ };
389
+ const expectedDeployment: SingletonDeploymentV2 = {
390
+ deployments: {
391
+ canonical: {
392
+ address: '0xbeefbeefbeefbeefbeefbeefbeefbeefbeefbeef',
393
+ codeHash: '0x0000000000000000000000000000000000000000000000000000000000000000',
394
+ },
395
+ eip155: {
396
+ address: '0xc0ffeec0ffeec0ffeec0ffeec0ffeec0ffeebabe',
397
+ codeHash: '0x0000000000000000000000000000000000000000000000000000000000000000',
398
+ },
399
+ zksync: {
400
+ address: '0xbabebabebabebabebabebabebabebabebabebabe',
401
+ codeHash: '0x0000000000000000000000000000000000000000000000000000000000000000',
402
+ },
403
+ },
404
+ networkAddresses: {
405
+ '1': '0xbeefbeefbeefbeefbeefbeefbeefbeefbeefbeef',
406
+ '100': '0xbabebabebabebabebabebabebabebabebabebabe',
407
+ '101': ['0xbeefbeefbeefbeefbeefbeefbeefbeefbeefbeef', '0xc0ffeec0ffeec0ffeec0ffeec0ffeec0ffeebabe'],
408
+ },
409
+ released: true,
410
+ abi: [],
411
+ version: '',
412
+ contractName: '',
413
+ };
414
+
415
+ const testDeployments = [testReleasedDeploymentJson];
416
+
417
+ expect(findDeployment({}, testDeployments, DeploymentFormats.MULTIPLE)).toMatchObject(expectedDeployment);
418
+ });
419
+ });
420
+ });
421
+ });
package/src/accessors.ts CHANGED
@@ -1,14 +1,23 @@
1
- import SimulateTxAccessor130 from './assets/v1.3.0/simulate_tx_accessor.json';
2
- import SimulateTxAccessor141 from './assets/v1.4.1/simulate_tx_accessor.json';
3
-
4
- import { DeploymentFilter, SingletonDeployment } from './types'
5
- import { findDeployment } from './utils'
6
-
7
- // This is a sorted array (newest to oldest)
8
- const accessorDeployments: SingletonDeployment[] = [
9
- SimulateTxAccessor141, SimulateTxAccessor130
10
- ]
1
+ import { DeploymentFilter, SingletonDeployment, DeploymentFormats, SingletonDeploymentV2 } from './types';
2
+ import { findDeployment } from './utils';
3
+ import { _ACCESSOR_DEPLOYMENTS } from './deployments';
11
4
 
5
+ /**
6
+ * Retrieves a single simulate transaction accessor deployment based on the provided filter.
7
+ *
8
+ * @param {DeploymentFilter} [filter] - Optional filter to apply when searching for the deployment.
9
+ * @returns {SingletonDeployment | undefined} - The found deployment or undefined if no deployment matches the filter.
10
+ */
12
11
  export const getSimulateTxAccessorDeployment = (filter?: DeploymentFilter): SingletonDeployment | undefined => {
13
- return findDeployment(filter, accessorDeployments)
14
- }
12
+ return findDeployment(filter, _ACCESSOR_DEPLOYMENTS);
13
+ };
14
+
15
+ /**
16
+ * Retrieves multiple simulate transaction accessor deployments based on the provided filter.
17
+ *
18
+ * @param {DeploymentFilter} [filter] - Optional filter to apply when searching for the deployments.
19
+ * @returns {SingletonDeploymentV2 | undefined} - The found deployments in the specified format or undefined if no deployments match the filter.
20
+ */
21
+ export const getSimulateTxAccessorDeployments = (filter?: DeploymentFilter): SingletonDeploymentV2 | undefined => {
22
+ return findDeployment(filter, _ACCESSOR_DEPLOYMENTS, DeploymentFormats.MULTIPLE);
23
+ };