@safe-global/safe-deployments 1.37.1 → 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 (107) hide show
  1. package/README.md +101 -10
  2. package/dist/accessors.d.ts +14 -1
  3. package/dist/accessors.js +19 -9
  4. package/dist/assets/v1.0.0/gnosis_safe.json +5 -3
  5. package/dist/assets/v1.0.0/proxy_factory.json +5 -3
  6. package/dist/assets/v1.1.1/default_callback_handler.json +5 -3
  7. package/dist/assets/v1.1.1/gnosis_safe.json +5 -3
  8. package/dist/assets/v1.1.1/multi_send.json +5 -3
  9. package/dist/assets/v1.1.1/proxy_factory.json +5 -3
  10. package/dist/assets/v1.2.0/gnosis_safe.json +5 -3
  11. package/dist/assets/v1.3.0/compatibility_fallback_handler.json +17 -5
  12. package/dist/assets/v1.3.0/create_call.json +17 -5
  13. package/dist/assets/v1.3.0/gnosis_safe.json +17 -5
  14. package/dist/assets/v1.3.0/gnosis_safe_l2.json +17 -5
  15. package/dist/assets/v1.3.0/multi_send.json +17 -5
  16. package/dist/assets/v1.3.0/multi_send_call_only.json +17 -5
  17. package/dist/assets/v1.3.0/proxy_factory.json +17 -5
  18. package/dist/assets/v1.3.0/sign_message_lib.json +17 -5
  19. package/dist/assets/v1.3.0/simulate_tx_accessor.json +17 -5
  20. package/dist/assets/v1.4.1/compatibility_fallback_handler.json +8 -3
  21. package/dist/assets/v1.4.1/create_call.json +8 -3
  22. package/dist/assets/v1.4.1/multi_send.json +8 -3
  23. package/dist/assets/v1.4.1/multi_send_call_only.json +8 -3
  24. package/dist/assets/v1.4.1/safe.json +8 -3
  25. package/dist/assets/v1.4.1/safe_l2.json +8 -3
  26. package/dist/assets/v1.4.1/safe_proxy_factory.json +8 -3
  27. package/dist/assets/v1.4.1/sign_message_lib.json +8 -3
  28. package/dist/assets/v1.4.1/simulate_tx_accessor.json +8 -3
  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 -16
  33. package/dist/handler.d.ts +29 -1
  34. package/dist/handler.js +55 -25
  35. package/dist/libs.d.ts +45 -1
  36. package/dist/libs.js +62 -24
  37. package/dist/safes.d.ts +23 -3
  38. package/dist/safes.js +32 -23
  39. package/dist/types.d.ts +21 -12
  40. package/dist/types.js +0 -11
  41. package/dist/utils.d.ts +5 -2
  42. package/dist/utils.js +34 -11
  43. package/package.json +6 -5
  44. package/src/__tests__/assets/v1/v1.0.0/gnosis_safe.json +5 -3
  45. package/src/__tests__/assets/v1/v1.0.0/proxy_factory.json +5 -3
  46. package/src/__tests__/assets/v1/v1.1.1/create_and_add_modules.json +5 -3
  47. package/src/__tests__/assets/v1/v1.1.1/create_call.json +5 -3
  48. package/src/__tests__/assets/v1/v1.1.1/default_callback_handler.json +5 -3
  49. package/src/__tests__/assets/v1/v1.1.1/gnosis_safe.json +5 -3
  50. package/src/__tests__/assets/v1/v1.1.1/multi_send.json +5 -3
  51. package/src/__tests__/assets/v1/v1.1.1/proxy_factory.json +5 -3
  52. package/src/__tests__/assets/v1/v1.2.0/gnosis_safe.json +5 -3
  53. package/src/__tests__/assets/v1/v1.3.0/compatibility_fallback_handler.json +13 -5
  54. package/src/__tests__/assets/v1/v1.3.0/create_call.json +13 -5
  55. package/src/__tests__/assets/v1/v1.3.0/gnosis_safe.json +13 -5
  56. package/src/__tests__/assets/v1/v1.3.0/gnosis_safe_l2.json +13 -5
  57. package/src/__tests__/assets/v1/v1.3.0/multi_send.json +13 -5
  58. package/src/__tests__/assets/v1/v1.3.0/multi_send_call_only.json +13 -5
  59. package/src/__tests__/assets/v1/v1.3.0/proxy_factory.json +13 -5
  60. package/src/__tests__/assets/v1/v1.3.0/sign_message_lib.json +13 -5
  61. package/src/__tests__/assets/v1/v1.3.0/simulate_tx_accessor.json +13 -5
  62. package/src/__tests__/assets/v1/v1.4.1/compatibility_fallback_handler.json +5 -3
  63. package/src/__tests__/assets/v1/v1.4.1/create_call.json +5 -3
  64. package/src/__tests__/assets/v1/v1.4.1/multi_send.json +5 -3
  65. package/src/__tests__/assets/v1/v1.4.1/multi_send_call_only.json +5 -3
  66. package/src/__tests__/assets/v1/v1.4.1/safe.json +5 -3
  67. package/src/__tests__/assets/v1/v1.4.1/safe_l2.json +5 -3
  68. package/src/__tests__/assets/v1/v1.4.1/safe_proxy_factory.json +5 -3
  69. package/src/__tests__/assets/v1/v1.4.1/sign_message_lib.json +5 -3
  70. package/src/__tests__/assets/v1/v1.4.1/simulate_tx_accessor.json +5 -3
  71. package/src/__tests__/assets.test.ts +7 -7
  72. package/src/__tests__/utils.test.ts +386 -236
  73. package/src/accessors.ts +19 -8
  74. package/src/assets/v1.0.0/gnosis_safe.json +5 -3
  75. package/src/assets/v1.0.0/proxy_factory.json +5 -3
  76. package/src/assets/v1.1.1/create_and_add_modules.json +5 -3
  77. package/src/assets/v1.1.1/create_call.json +5 -3
  78. package/src/assets/v1.1.1/default_callback_handler.json +5 -3
  79. package/src/assets/v1.1.1/gnosis_safe.json +5 -3
  80. package/src/assets/v1.1.1/multi_send.json +5 -3
  81. package/src/assets/v1.1.1/proxy_factory.json +5 -3
  82. package/src/assets/v1.2.0/gnosis_safe.json +5 -3
  83. package/src/assets/v1.3.0/compatibility_fallback_handler.json +17 -5
  84. package/src/assets/v1.3.0/create_call.json +17 -5
  85. package/src/assets/v1.3.0/gnosis_safe.json +17 -5
  86. package/src/assets/v1.3.0/gnosis_safe_l2.json +17 -5
  87. package/src/assets/v1.3.0/multi_send.json +17 -5
  88. package/src/assets/v1.3.0/multi_send_call_only.json +17 -5
  89. package/src/assets/v1.3.0/proxy_factory.json +17 -5
  90. package/src/assets/v1.3.0/sign_message_lib.json +17 -5
  91. package/src/assets/v1.3.0/simulate_tx_accessor.json +17 -5
  92. package/src/assets/v1.4.1/compatibility_fallback_handler.json +8 -3
  93. package/src/assets/v1.4.1/create_call.json +8 -3
  94. package/src/assets/v1.4.1/multi_send.json +8 -3
  95. package/src/assets/v1.4.1/multi_send_call_only.json +8 -3
  96. package/src/assets/v1.4.1/safe.json +8 -3
  97. package/src/assets/v1.4.1/safe_l2.json +8 -3
  98. package/src/assets/v1.4.1/safe_proxy_factory.json +8 -3
  99. package/src/assets/v1.4.1/sign_message_lib.json +8 -3
  100. package/src/assets/v1.4.1/simulate_tx_accessor.json +8 -3
  101. package/src/deployments.ts +90 -0
  102. package/src/factories.ts +17 -15
  103. package/src/handler.ts +56 -23
  104. package/src/libs.ts +64 -22
  105. package/src/safes.ts +31 -21
  106. package/src/types.ts +27 -25
  107. package/src/utils.ts +63 -8
@@ -7,265 +7,415 @@ import GnosisSafe120 from './assets/v1/v1.2.0/gnosis_safe.json';
7
7
  import GnosisSafe111 from './assets/v1/v1.1.1/gnosis_safe.json';
8
8
  import GnosisSafe100 from './assets/v1/v1.0.0/gnosis_safe.json';
9
9
  import { findDeployment } from '../utils';
10
- import { _safeDeployments, _safeL2Deployments } from '../safes';
11
- import { SingletonDeployment, SingletonDeploymentJSON } from '../types';
10
+ import { _SAFE_DEPLOYMENTS, _SAFE_L2_DEPLOYMENTS } from '../deployments';
11
+ import { SingletonDeployment, SingletonDeploymentJSON, DeploymentFormats, SingletonDeploymentV2 } from '../types';
12
12
 
13
- const _safeDeploymentsReverse = [..._safeDeployments].reverse();
13
+ const _safeDeploymentsReverse = [..._SAFE_DEPLOYMENTS].reverse();
14
14
 
15
15
  describe('utils.ts', () => {
16
16
  describe('findDeployment', () => {
17
- it('should filter by released by default', () => {
18
- const testUnreleasedDeploymentJson: SingletonDeploymentJSON = {
19
- version: '',
20
- abi: [],
21
- addresses: {
22
- canonical: '0xbeefbeefbeefbeefbeefbeefbeefbeefbeefbeef',
23
- },
24
- networkAddresses: { '1': 'canonical' },
25
- contractName: '',
26
- codeHash: '0x0000000000000000000000000000000000000000000000000000000000000000',
27
- released: false,
28
- };
29
- const testReleasedDeploymentJson: SingletonDeploymentJSON = {
30
- version: '',
31
- abi: [],
32
- addresses: {
33
- canonical: '0xbeefbeefbeefbeefbeefbeefbeefbeefbeefbeef',
34
- },
35
- networkAddresses: { '1': 'canonical' },
36
- contractName: '',
37
- codeHash: '0x0000000000000000000000000000000000000000000000000000000000000000',
38
- released: true, // Default filter value
39
- };
40
- const testReleasedDeployment: SingletonDeployment = {
41
- defaultAddress: '0xbeefbeefbeefbeefbeefbeefbeefbeefbeefbeef',
42
- addresses: {
43
- canonical: '0xbeefbeefbeefbeefbeefbeefbeefbeefbeefbeef',
44
- },
45
- networkAddresses: { '1': '0xbeefbeefbeefbeefbeefbeefbeefbeefbeefbeef' },
46
- codeHash: '0x0000000000000000000000000000000000000000000000000000000000000000',
47
- released: true,
48
- abi: [],
49
- version: '',
50
- contractName: '',
51
- };
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
+ };
52
59
 
53
- const testDeployments = [testUnreleasedDeploymentJson, testUnreleasedDeploymentJson, testReleasedDeploymentJson];
60
+ const testDeployments = [
61
+ testUnreleasedDeploymentJson,
62
+ testUnreleasedDeploymentJson,
63
+ testReleasedDeploymentJson,
64
+ ];
54
65
 
55
- expect(findDeployment(undefined, testDeployments)).toMatchObject(testReleasedDeployment);
66
+ expect(findDeployment(undefined, testDeployments)).toMatchObject(testReleasedDeployment);
56
67
 
57
- // should preserve the released flag even if its not explicitly passed
58
- expect(findDeployment({ network: '1' }, testDeployments)).toMatchObject(testReleasedDeployment);
59
- });
68
+ // should preserve the released flag even if its not explicitly passed
69
+ expect(findDeployment({ network: '1' }, testDeployments)).toMatchObject(testReleasedDeployment);
70
+ });
60
71
 
61
- it('should return the correct deployment (filtered by version)', () => {
62
- // Chronological deployments
63
- expect(findDeployment({ version: '1.3.0' }, _safeDeployments)).toMatchObject(GnosisSafe130);
64
- expect(findDeployment({ version: '1.2.0' }, _safeDeployments)).toMatchObject(GnosisSafe120);
65
- expect(findDeployment({ version: '1.1.1' }, _safeDeployments)).toMatchObject(GnosisSafe111);
66
- expect(findDeployment({ version: '1.0.0' }, _safeDeployments)).toMatchObject(GnosisSafe100);
67
- // Incorrect filter:
68
- expect(findDeployment({ version: '2.0.0' }, _safeDeployments)).toBeUndefined();
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();
69
80
 
70
- // L2 deployments
71
- expect(findDeployment({ version: '1.3.0+L2' }, _safeL2Deployments)).toMatchObject(GnosisSafeL2130);
72
- // Incorrect filter:
73
- expect(findDeployment({ version: '2.0.0+L2' }, _safeL2Deployments)).toBeUndefined();
74
- });
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
+ });
75
86
 
76
- it('should return the correct deployment (filtered by released flag)', () => {
77
- const testUnreleasedDeploymentJson: SingletonDeploymentJSON = {
78
- version: '',
79
- abi: [],
80
- addresses: {
81
- canonical: '0xbeefbeefbeefbeefbeefbeefbeefbeefbeefbeef',
82
- },
83
- networkAddresses: { '1': 'canonical' },
84
- contractName: '',
85
- codeHash: '0x0000000000000000000000000000000000000000000000000000000000000000',
86
- released: false,
87
- };
88
- const testReleasedDeploymentJson: SingletonDeploymentJSON = {
89
- version: '',
90
- abi: [],
91
- addresses: {
92
- canonical: '0xbeefbeefbeefbeefbeefbeefbeefbeefbeefbeef',
93
- },
94
- networkAddresses: { '1': 'canonical' },
95
- contractName: '',
96
- codeHash: '0x0000000000000000000000000000000000000000000000000000000000000000',
97
- released: true, // Default filter value
98
- };
99
- const testUnreleasedDeployment: SingletonDeployment = {
100
- defaultAddress: '0xbeefbeefbeefbeefbeefbeefbeefbeefbeefbeef',
101
- addresses: {
102
- canonical: '0xbeefbeefbeefbeefbeefbeefbeefbeefbeefbeef',
103
- },
104
- networkAddresses: { '1': '0xbeefbeefbeefbeefbeefbeefbeefbeefbeefbeef' },
105
- codeHash: '0x0000000000000000000000000000000000000000000000000000000000000000',
106
- released: false,
107
- abi: [],
108
- version: '',
109
- contractName: '',
110
- };
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
+ };
111
128
 
112
- const testDeployments = [testUnreleasedDeploymentJson, testReleasedDeploymentJson];
129
+ const testDeployments = [testUnreleasedDeploymentJson, testReleasedDeploymentJson];
113
130
 
114
- // Chronological deployments
115
- expect(findDeployment({ released: true }, _safeDeployments)).toMatchObject(Safe141);
131
+ // Chronological deployments
132
+ expect(findDeployment({ released: true }, _SAFE_DEPLOYMENTS)).toMatchObject(Safe141);
116
133
 
117
- // Reverse chronological deployments
118
- expect(findDeployment({ released: true }, _safeDeploymentsReverse)).toMatchObject(GnosisSafe100);
119
- // Released flag set to false:
120
- expect(findDeployment({ released: false }, testDeployments)).toMatchObject(testUnreleasedDeployment);
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);
121
138
 
122
- // L2 deployments
123
- expect(findDeployment({ released: true }, _safeL2Deployments)).toMatchObject(SafeL2141);
124
- });
139
+ // L2 deployments
140
+ expect(findDeployment({ released: true }, _SAFE_L2_DEPLOYMENTS)).toMatchObject(SafeL2141);
141
+ });
125
142
 
126
- it('should return the correct deployment (filtered by network)', () => {
127
- // Reverse chronological deployments
128
- expect(findDeployment({ network: '1' }, _safeDeploymentsReverse)).toMatchObject(GnosisSafe100);
129
- expect(findDeployment({ network: '73799' }, _safeDeploymentsReverse)).toMatchObject(GnosisSafe111);
130
- expect(findDeployment({ network: '11297108109' }, _safeDeploymentsReverse)).toMatchObject(GnosisSafe130);
131
- // Incorrect filter:
132
- expect(findDeployment({ network: '0' }, _safeDeploymentsReverse)).toBeUndefined();
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();
133
150
 
134
- // L2 deployments
135
- expect(findDeployment({ network: '100' }, _safeL2Deployments)).toMatchObject(SafeL2141);
136
- // Incorrect filter:
137
- expect(findDeployment({ network: '0' }, _safeL2Deployments)).toBeUndefined();
138
- });
139
- it('should return the correct deployment (filtered by version and released)', () => {
140
- // Chronological deployments
141
- expect(findDeployment({ version: '1.3.0', released: true }, _safeDeployments)).toMatchObject(GnosisSafe130);
142
- expect(findDeployment({ version: '1.2.0', released: true }, _safeDeployments)).toMatchObject(GnosisSafe120);
143
- expect(findDeployment({ version: '1.1.1', released: true }, _safeDeployments)).toMatchObject(GnosisSafe111);
144
- expect(findDeployment({ version: '1.0.0', released: true }, _safeDeployments)).toMatchObject(GnosisSafe100);
145
- // Incorrect filter:
146
- expect(findDeployment({ version: '1.0.0', released: false }, _safeDeployments)).toBeUndefined();
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();
147
164
 
148
- // L2 deployments
149
- expect(findDeployment({ version: '1.3.0', released: true }, _safeL2Deployments)).toMatchObject(GnosisSafeL2130);
150
- expect(findDeployment({ version: '1.3.0+L2', released: true }, _safeL2Deployments)).toMatchObject(
151
- GnosisSafeL2130,
152
- );
153
- // Incorrect filter:
154
- expect(findDeployment({ version: '1.3.0+L2', released: false }, _safeL2Deployments)).toBeUndefined();
155
- });
156
- it('should return the correct deployment (filtered by version and network)', () => {
157
- // Reverse chronological deployments
158
- expect(findDeployment({ version: '1.0.0', network: '1' }, _safeDeploymentsReverse)).toMatchObject(GnosisSafe100);
159
- expect(findDeployment({ version: '1.1.1', network: '1' }, _safeDeploymentsReverse)).toMatchObject(GnosisSafe111);
160
- expect(findDeployment({ version: '1.2.0', network: '1' }, _safeDeploymentsReverse)).toMatchObject(GnosisSafe120);
161
- expect(findDeployment({ version: '1.3.0', network: '1' }, _safeDeploymentsReverse)).toMatchObject(GnosisSafe130);
162
- // Incorrect filter:
163
- expect(findDeployment({ version: '1.3.0', network: '0' }, _safeDeploymentsReverse)).toBeUndefined();
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();
164
221
 
165
- // L2 deployments
166
- expect(findDeployment({ version: '1.3.0', network: '100' }, _safeL2Deployments)).toMatchObject(GnosisSafeL2130);
167
- expect(findDeployment({ version: '1.3.0+L2', network: '100' }, _safeL2Deployments)).toMatchObject(
168
- GnosisSafeL2130,
169
- );
170
- // Incorrect filter:
171
- expect(findDeployment({ version: '1.3.0+L2', network: '0' }, _safeL2Deployments)).toBeUndefined();
172
- });
173
- it('should return the correct deployment (filtered by released and network)', () => {
174
- const testUnreleasedDeploymentJson: SingletonDeploymentJSON = {
175
- version: '',
176
- abi: [],
177
- addresses: {
178
- canonical: '0xbeefbeefbeefbeefbeefbeefbeefbeefbeefbeef',
179
- },
180
- networkAddresses: { '1': 'canonical' },
181
- contractName: '',
182
- codeHash: '0x0000000000000000000000000000000000000000000000000000000000000000',
183
- released: false,
184
- };
185
- const testReleasedDeploymentJson: SingletonDeploymentJSON = {
186
- version: '',
187
- abi: [],
188
- addresses: {
189
- canonical: '0xbeefbeefbeefbeefbeefbeefbeefbeefbeefbeef',
190
- },
191
- networkAddresses: { '1': 'canonical' },
192
- contractName: '',
193
- codeHash: '0x0000000000000000000000000000000000000000000000000000000000000000',
194
- released: true, // Default filter value
195
- };
196
- const testUnreleasedDeployment: SingletonDeployment = {
197
- defaultAddress: '0xbeefbeefbeefbeefbeefbeefbeefbeefbeefbeef',
198
- addresses: {
199
- canonical: '0xbeefbeefbeefbeefbeefbeefbeefbeefbeefbeef',
200
- },
201
- networkAddresses: { '1': '0xbeefbeefbeefbeefbeefbeefbeefbeefbeefbeef' },
202
- codeHash: '0x0000000000000000000000000000000000000000000000000000000000000000',
203
- released: false,
204
- abi: [],
205
- version: '',
206
- contractName: '',
207
- };
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
+ ];
208
285
 
209
- const testDeployments = [testUnreleasedDeploymentJson, testUnreleasedDeploymentJson, testReleasedDeploymentJson];
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
+ );
210
307
 
211
- // Reverse chronological deployments
212
- expect(findDeployment({ released: true, network: '1' }, _safeDeploymentsReverse)).toMatchObject(GnosisSafe100);
213
- expect(findDeployment({ released: true, network: '246' }, _safeDeploymentsReverse)).toMatchObject(GnosisSafe111);
214
- expect(findDeployment({ released: true, network: '11297108109' }, _safeDeploymentsReverse)).toMatchObject(
215
- GnosisSafe130,
216
- );
217
- // Incorrect filter:
218
- expect(findDeployment({ released: true, network: '0' }, _safeDeploymentsReverse)).toBeUndefined();
219
- expect(findDeployment({ released: false, network: '1' }, testDeployments)).toMatchObject(
220
- testUnreleasedDeployment,
221
- );
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();
222
338
 
223
- // L2 deployments
224
- expect(findDeployment({ released: true, network: '100' }, _safeL2Deployments)).toMatchObject(SafeL2141);
225
- // Incorrect filter:
226
- expect(findDeployment({ released: true, network: '0' }, _safeL2Deployments)).toBeUndefined();
227
- expect(findDeployment({ released: false, network: '100' }, testDeployments)).toBeUndefined();
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
+ });
228
364
  });
229
- it('should return the correct deployment (filtered by version, released and network)', () => {
230
- // Reverse chronological deployments
231
- expect(findDeployment({ version: '1.0.0', released: true, network: '1' }, _safeDeploymentsReverse)).toMatchObject(
232
- GnosisSafe100,
233
- );
234
- expect(
235
- findDeployment({ version: '1.1.1', released: true, network: '246' }, _safeDeploymentsReverse),
236
- ).toMatchObject(GnosisSafe111);
237
- expect(
238
- findDeployment({ version: '1.2.0', released: true, network: '73799' }, _safeDeploymentsReverse),
239
- ).toMatchObject(GnosisSafe120);
240
- expect(
241
- findDeployment({ version: '1.3.0', released: true, network: '11297108109' }, _safeDeploymentsReverse),
242
- ).toMatchObject(GnosisSafe130);
243
- // Incorrect filter:
244
- expect(
245
- findDeployment({ version: '1.3.0', released: false, network: '11297108109' }, _safeDeploymentsReverse),
246
- ).toBeUndefined();
247
- expect(
248
- findDeployment({ version: '1.3.0', released: true, network: '0' }, _safeDeploymentsReverse),
249
- ).toBeUndefined();
250
- expect(
251
- findDeployment({ version: '2.0.0', released: true, network: '11297108109' }, _safeDeploymentsReverse),
252
- ).toBeUndefined();
253
365
 
254
- // L2 deployments
255
- expect(findDeployment({ version: '1.3.0', released: true, network: '100' }, _safeL2Deployments)).toMatchObject(
256
- GnosisSafeL2130,
257
- );
258
- expect(findDeployment({ version: '1.3.0+L2', released: true, network: '100' }, _safeL2Deployments)).toMatchObject(
259
- GnosisSafeL2130,
260
- );
261
- // Incorrect filter:
262
- expect(
263
- findDeployment({ version: '1.3.0+L2', released: false, network: '100' }, _safeL2Deployments),
264
- ).toBeUndefined();
265
- expect(findDeployment({ version: '1.3.0+L2', released: true, network: '0' }, _safeL2Deployments)).toBeUndefined();
266
- expect(
267
- findDeployment({ version: '2.0.0+L2', released: true, network: '100' }, _safeL2Deployments),
268
- ).toBeUndefined();
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
+ });
269
419
  });
270
420
  });
271
421
  });