@safe-global/safe-deployments 1.37.36 → 1.37.37

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 (109) hide show
  1. package/README.md +18 -10
  2. package/dist/assets/v1.3.0/compatibility_fallback_handler.json +16 -6
  3. package/dist/assets/v1.3.0/create_call.json +16 -6
  4. package/dist/assets/v1.3.0/gnosis_safe.json +16 -6
  5. package/dist/assets/v1.3.0/gnosis_safe_l2.json +17 -7
  6. package/dist/assets/v1.3.0/multi_send.json +16 -6
  7. package/dist/assets/v1.3.0/multi_send_call_only.json +16 -6
  8. package/dist/assets/v1.3.0/proxy_factory.json +16 -6
  9. package/dist/assets/v1.3.0/sign_message_lib.json +16 -6
  10. package/dist/assets/v1.3.0/simulate_tx_accessor.json +16 -6
  11. package/dist/assets/v1.4.1/compatibility_fallback_handler.json +13 -3
  12. package/dist/assets/v1.4.1/create_call.json +13 -3
  13. package/dist/assets/v1.4.1/multi_send.json +13 -3
  14. package/dist/assets/v1.4.1/multi_send_call_only.json +13 -3
  15. package/dist/assets/v1.4.1/safe.json +13 -3
  16. package/dist/assets/v1.4.1/safe_l2.json +13 -3
  17. package/dist/assets/v1.4.1/safe_migration.json +14 -3
  18. package/dist/assets/v1.4.1/safe_proxy_factory.json +13 -3
  19. package/dist/assets/v1.4.1/safe_to_l2_migration.json +14 -3
  20. package/dist/assets/v1.4.1/safe_to_l2_setup.json +14 -3
  21. package/dist/assets/v1.4.1/sign_message_lib.json +13 -3
  22. package/dist/assets/v1.4.1/simulate_tx_accessor.json +13 -3
  23. package/dist/assets/v1.5.0/compatibility_fallback_handler.json +380 -0
  24. package/dist/assets/v1.5.0/create_call.json +85 -0
  25. package/dist/assets/v1.5.0/extensible_fallback_handler.json +440 -0
  26. package/dist/assets/v1.5.0/multi_send.json +37 -0
  27. package/dist/assets/v1.5.0/multi_send_call_only.json +32 -0
  28. package/dist/assets/v1.5.0/safe.json +1016 -0
  29. package/dist/assets/v1.5.0/safe_l2.json +1121 -0
  30. package/dist/assets/v1.5.0/safe_migration.json +133 -0
  31. package/dist/assets/v1.5.0/safe_proxy_factory.json +248 -0
  32. package/dist/assets/v1.5.0/safe_to_l2_setup.json +50 -0
  33. package/dist/assets/v1.5.0/sign_message_lib.json +64 -0
  34. package/dist/assets/v1.5.0/simulate_tx_accessor.json +68 -0
  35. package/dist/assets/v1.5.0/token_callback_handler.json +188 -0
  36. package/dist/deployments.d.ts +3 -2
  37. package/dist/deployments.js +52 -19
  38. package/dist/handler.d.ts +26 -0
  39. package/dist/handler.js +40 -8
  40. package/package.json +1 -1
  41. package/src/__tests__/assets.test.ts +0 -16
  42. package/src/__tests__/factories.test.ts +10 -4
  43. package/src/__tests__/handler.test.ts +49 -9
  44. package/src/__tests__/libs.test.ts +43 -10
  45. package/src/__tests__/safes.test.ts +70 -10
  46. package/src/__tests__/utils.test.ts +141 -95
  47. package/src/assets/v1.3.0/compatibility_fallback_handler.json +16 -6
  48. package/src/assets/v1.3.0/create_call.json +16 -6
  49. package/src/assets/v1.3.0/gnosis_safe.json +16 -6
  50. package/src/assets/v1.3.0/gnosis_safe_l2.json +17 -7
  51. package/src/assets/v1.3.0/multi_send.json +16 -6
  52. package/src/assets/v1.3.0/multi_send_call_only.json +16 -6
  53. package/src/assets/v1.3.0/proxy_factory.json +16 -6
  54. package/src/assets/v1.3.0/sign_message_lib.json +16 -6
  55. package/src/assets/v1.3.0/simulate_tx_accessor.json +16 -6
  56. package/src/assets/v1.4.1/compatibility_fallback_handler.json +13 -3
  57. package/src/assets/v1.4.1/create_call.json +13 -3
  58. package/src/assets/v1.4.1/multi_send.json +13 -3
  59. package/src/assets/v1.4.1/multi_send_call_only.json +13 -3
  60. package/src/assets/v1.4.1/safe.json +13 -3
  61. package/src/assets/v1.4.1/safe_l2.json +13 -3
  62. package/src/assets/v1.4.1/safe_migration.json +14 -3
  63. package/src/assets/v1.4.1/safe_proxy_factory.json +13 -3
  64. package/src/assets/v1.4.1/safe_to_l2_migration.json +14 -3
  65. package/src/assets/v1.4.1/safe_to_l2_setup.json +14 -3
  66. package/src/assets/v1.4.1/sign_message_lib.json +13 -3
  67. package/src/assets/v1.4.1/simulate_tx_accessor.json +13 -3
  68. package/src/assets/v1.5.0/compatibility_fallback_handler.json +380 -0
  69. package/src/assets/v1.5.0/create_call.json +85 -0
  70. package/src/assets/v1.5.0/extensible_fallback_handler.json +440 -0
  71. package/src/assets/v1.5.0/multi_send.json +37 -0
  72. package/src/assets/v1.5.0/multi_send_call_only.json +32 -0
  73. package/src/assets/v1.5.0/safe.json +1016 -0
  74. package/src/assets/v1.5.0/safe_l2.json +1121 -0
  75. package/src/assets/v1.5.0/safe_migration.json +133 -0
  76. package/src/assets/v1.5.0/safe_proxy_factory.json +248 -0
  77. package/src/assets/v1.5.0/safe_to_l2_setup.json +50 -0
  78. package/src/assets/v1.5.0/sign_message_lib.json +64 -0
  79. package/src/assets/v1.5.0/simulate_tx_accessor.json +68 -0
  80. package/src/assets/v1.5.0/token_callback_handler.json +188 -0
  81. package/src/deployments.ts +50 -15
  82. package/src/handler.ts +46 -6
  83. package/src/__tests__/assets/v1/v1.0.0/gnosis_safe.json +0 -796
  84. package/src/__tests__/assets/v1/v1.0.0/proxy_factory.json +0 -111
  85. package/src/__tests__/assets/v1/v1.1.1/create_and_add_modules.json +0 -59
  86. package/src/__tests__/assets/v1/v1.1.1/create_call.json +0 -90
  87. package/src/__tests__/assets/v1/v1.1.1/default_callback_handler.json +0 -212
  88. package/src/__tests__/assets/v1/v1.1.1/gnosis_safe.json +0 -1001
  89. package/src/__tests__/assets/v1/v1.1.1/multi_send.json +0 -45
  90. package/src/__tests__/assets/v1/v1.1.1/proxy_factory.json +0 -191
  91. package/src/__tests__/assets/v1/v1.2.0/gnosis_safe.json +0 -1022
  92. package/src/__tests__/assets/v1/v1.3.0/compatibility_fallback_handler.json +0 -588
  93. package/src/__tests__/assets/v1/v1.3.0/create_call.json +0 -331
  94. package/src/__tests__/assets/v1/v1.3.0/gnosis_safe.json +0 -1296
  95. package/src/__tests__/assets/v1/v1.3.0/gnosis_safe_l2.json +0 -1401
  96. package/src/__tests__/assets/v1/v1.3.0/multi_send.json +0 -283
  97. package/src/__tests__/assets/v1/v1.3.0/multi_send_call_only.json +0 -278
  98. package/src/__tests__/assets/v1/v1.3.0/proxy_factory.json +0 -426
  99. package/src/__tests__/assets/v1/v1.3.0/sign_message_lib.json +0 -310
  100. package/src/__tests__/assets/v1/v1.3.0/simulate_tx_accessor.json +0 -314
  101. package/src/__tests__/assets/v1/v1.4.1/compatibility_fallback_handler.json +0 -447
  102. package/src/__tests__/assets/v1/v1.4.1/create_call.json +0 -192
  103. package/src/__tests__/assets/v1/v1.4.1/multi_send.json +0 -144
  104. package/src/__tests__/assets/v1/v1.4.1/multi_send_call_only.json +0 -139
  105. package/src/__tests__/assets/v1/v1.4.1/safe.json +0 -1123
  106. package/src/__tests__/assets/v1/v1.4.1/safe_l2.json +0 -1228
  107. package/src/__tests__/assets/v1/v1.4.1/safe_proxy_factory.json +0 -263
  108. package/src/__tests__/assets/v1/v1.4.1/sign_message_lib.json +0 -171
  109. package/src/__tests__/assets/v1/v1.4.1/simulate_tx_accessor.json +0 -175
@@ -1,8 +1,7 @@
1
- import CreateCall141 from './assets/v1/v1.4.1/create_call.json';
2
- import MultiSend111 from './assets/v1/v1.1.1/multi_send.json';
3
- import MultiSend141 from './assets/v1/v1.4.1/multi_send.json';
4
- import MultiSendCallOnly141 from './assets/v1/v1.4.1/multi_send_call_only.json';
5
- import SignMessageLib141 from './assets/v1/v1.4.1/sign_message_lib.json';
1
+ import CreateCall from '../assets/v1.5.0/create_call.json';
2
+ import MultiSend from '../assets/v1.5.0/multi_send.json';
3
+ import MultiSendCallOnly from '../assets/v1.5.0/multi_send_call_only.json';
4
+ import SignMessageLib from '../assets/v1.5.0/sign_message_lib.json';
6
5
  import {
7
6
  getMultiSendDeployment,
8
7
  getMultiSendCallOnlyDeployment,
@@ -14,26 +13,60 @@ describe('libs.ts', () => {
14
13
  describe('getMultiSendDeployment', () => {
15
14
  it('should find the preferred deployment first', () => {
16
15
  const result = getMultiSendDeployment();
17
- expect(result).toMatchObject(MultiSend141);
18
- expect(result).not.toBe(MultiSend111);
16
+ expect(result).toMatchObject({
17
+ defaultAddress: MultiSend.deployments.canonical.address,
18
+ contractName: 'MultiSend',
19
+ version: '1.5.0',
20
+ networkAddresses: {
21
+ ['1']: MultiSend.deployments.canonical.address,
22
+ },
23
+ abi: MultiSend.abi,
24
+ });
19
25
  });
20
26
  });
27
+
21
28
  describe('getMultiSendCallOnlyDeployment', () => {
22
29
  it('should find the preferred deployment first', () => {
23
30
  const result = getMultiSendCallOnlyDeployment();
24
- expect(result).toMatchObject(MultiSendCallOnly141);
31
+ expect(result).toMatchObject({
32
+ defaultAddress: MultiSendCallOnly.deployments.canonical.address,
33
+ contractName: 'MultiSendCallOnly',
34
+ version: '1.5.0',
35
+ networkAddresses: {
36
+ ['1']: MultiSendCallOnly.deployments.canonical.address,
37
+ },
38
+ abi: MultiSendCallOnly.abi,
39
+ });
25
40
  });
26
41
  });
42
+
27
43
  describe('getCreateCallDeployment', () => {
28
44
  it('should find the preferred deployment first', () => {
29
45
  const result = getCreateCallDeployment();
30
- expect(result).toMatchObject(CreateCall141);
46
+ expect(result).toMatchObject({
47
+ defaultAddress: CreateCall.deployments.canonical.address,
48
+ contractName: 'CreateCall',
49
+ version: '1.5.0',
50
+ networkAddresses: {
51
+ ['1']: CreateCall.deployments.canonical.address,
52
+ },
53
+ abi: CreateCall.abi,
54
+ });
31
55
  });
32
56
  });
57
+
33
58
  describe('getSignMessageLibDeployment', () => {
34
59
  it('should find the preferred deployment first', () => {
35
60
  const result = getSignMessageLibDeployment();
36
- expect(result).toMatchObject(SignMessageLib141);
61
+ expect(result).toMatchObject({
62
+ defaultAddress: SignMessageLib.deployments.canonical.address,
63
+ contractName: 'SignMessageLib',
64
+ version: '1.5.0',
65
+ networkAddresses: {
66
+ ['1']: SignMessageLib.deployments.canonical.address,
67
+ },
68
+ abi: SignMessageLib.abi,
69
+ });
37
70
  });
38
71
  });
39
72
  });
@@ -1,25 +1,85 @@
1
- import SafeL2141 from './assets/v1/v1.4.1/safe_l2.json';
2
- import Safe141 from './assets/v1/v1.4.1/safe.json';
3
- import GnosisSafe130 from './assets/v1/v1.3.0/gnosis_safe.json';
4
- import GnosisSafe120 from './assets/v1/v1.2.0/gnosis_safe.json';
5
- import GnosisSafe111 from './assets/v1/v1.1.1/gnosis_safe.json';
6
- import GnosisSafe100 from './assets/v1/v1.0.0/gnosis_safe.json';
1
+ import Safe150 from '../assets/v1.5.0/safe.json';
2
+ import Safe141 from '../assets/v1.4.1/safe.json';
3
+ import GnosisSafe130 from '../assets/v1.3.0/gnosis_safe.json';
4
+ import GnosisSafe120 from '../assets/v1.2.0/gnosis_safe.json';
5
+ import GnosisSafe111 from '../assets/v1.1.1/gnosis_safe.json';
6
+ import GnosisSafe100 from '../assets/v1.0.0/gnosis_safe.json';
7
+ import SafeL2150 from '../assets/v1.5.0/safe_l2.json';
8
+ import SafeL2141 from '../assets/v1.4.1/safe_l2.json';
9
+ import GnosisSafeL2130 from '../assets/v1.3.0/gnosis_safe_l2.json';
7
10
  import { getSafeSingletonDeployment, getSafeL2SingletonDeployment } from '../safes';
8
11
 
9
12
  describe('safes.ts', () => {
10
13
  describe('getSafeSingletonDeployment', () => {
11
14
  it('should find the latest deployment first', () => {
12
15
  const result = getSafeSingletonDeployment();
13
- expect(result).toMatchObject(Safe141);
14
- [GnosisSafe130, GnosisSafe120, GnosisSafe111, GnosisSafe100].forEach((version) => {
15
- expect(result).not.toBe(version);
16
+ expect(result).toMatchObject({
17
+ defaultAddress: Safe150.deployments.canonical.address,
18
+ contractName: 'Safe',
19
+ version: '1.5.0',
20
+ networkAddresses: {
21
+ ['1']: Safe150.deployments.canonical.address,
22
+ },
23
+ abi: Safe150.abi,
16
24
  });
17
25
  });
26
+
27
+ it('should return the correct deployment filtered by version', () => {
28
+ for (const [version, artifact] of [
29
+ ['1.5.0', Safe150],
30
+ ['1.4.1', Safe141],
31
+ ['1.3.0', GnosisSafe130],
32
+ ['1.2.0', GnosisSafe120],
33
+ ['1.1.1', GnosisSafe111],
34
+ ['1.0.0', GnosisSafe100],
35
+ ] as const) {
36
+ expect(getSafeSingletonDeployment({ version })).toMatchObject({
37
+ defaultAddress: artifact.deployments.canonical.address,
38
+ contractName: artifact.contractName,
39
+ version,
40
+ networkAddresses: {
41
+ ['1']: artifact.deployments.canonical.address,
42
+ },
43
+ abi: artifact.abi,
44
+ });
45
+ }
46
+
47
+ expect(getSafeSingletonDeployment({ version: '99.0.0' })).toBeUndefined();
48
+ });
18
49
  });
50
+
19
51
  describe('getSafeL2SingletonDeployment', () => {
20
52
  it('should find the latest deployment first', () => {
21
53
  const result = getSafeL2SingletonDeployment();
22
- expect(result).toMatchObject(SafeL2141);
54
+ expect(result).toMatchObject({
55
+ defaultAddress: SafeL2150.deployments.canonical.address,
56
+ contractName: 'SafeL2',
57
+ version: '1.5.0',
58
+ networkAddresses: {
59
+ ['1']: SafeL2150.deployments.canonical.address,
60
+ },
61
+ abi: SafeL2150.abi,
62
+ });
63
+ });
64
+
65
+ it('should return the correct deployment filtered by version', () => {
66
+ for (const [version, artifact] of [
67
+ ['1.5.0', SafeL2150],
68
+ ['1.4.1', SafeL2141],
69
+ ['1.3.0', GnosisSafeL2130],
70
+ ] as const) {
71
+ expect(getSafeL2SingletonDeployment({ version })).toMatchObject({
72
+ defaultAddress: artifact.deployments.canonical.address,
73
+ contractName: artifact.contractName,
74
+ version,
75
+ networkAddresses: {
76
+ ['1']: artifact.deployments.canonical.address,
77
+ },
78
+ abi: artifact.abi,
79
+ });
80
+ }
81
+
82
+ expect(getSafeL2SingletonDeployment({ version: '99.0.0' })).toBeUndefined();
23
83
  });
24
84
  });
25
85
  });
@@ -1,11 +1,3 @@
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
1
  import { findDeployment } from '../utils';
10
2
  import { _SAFE_DEPLOYMENTS, _SAFE_L2_DEPLOYMENTS } from '../deployments';
11
3
  import { SingletonDeployment, SingletonDeploymentJSON, DeploymentFormats, SingletonDeploymentV2 } from '../types';
@@ -21,7 +13,7 @@ describe('utils.ts', () => {
21
13
  abi: [],
22
14
  deployments: {
23
15
  canonical: {
24
- address: '0xbeefbeefbeefbeefbeefbeefbeefbeefbeefbeef',
16
+ address: '0xdeaddeaddeaddeaddeaddeaddeaddeaddeaddead',
25
17
  codeHash: '0x0000000000000000000000000000000000000000000000000000000000000000',
26
18
  },
27
19
  },
@@ -69,28 +61,13 @@ describe('utils.ts', () => {
69
61
  expect(findDeployment({ network: '1' }, testDeployments)).toMatchObject(testReleasedDeployment);
70
62
  });
71
63
 
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
64
  it('should return the correct deployment (filtered by released flag)', () => {
88
65
  const testUnreleasedDeploymentJson: SingletonDeploymentJSON = {
89
66
  version: '',
90
67
  abi: [],
91
68
  deployments: {
92
69
  canonical: {
93
- address: '0xbeefbeefbeefbeefbeefbeefbeefbeefbeefbeef',
70
+ address: '0xdeaddeaddeaddeaddeaddeaddeaddeaddeaddead',
94
71
  codeHash: '0x0000000000000000000000000000000000000000000000000000000000000000',
95
72
  },
96
73
  },
@@ -112,6 +89,20 @@ describe('utils.ts', () => {
112
89
  released: true, // Default filter value
113
90
  };
114
91
  const testUnreleasedDeployment: SingletonDeployment = {
92
+ defaultAddress: '0xdeaddeaddeaddeaddeaddeaddeaddeaddeaddead',
93
+ deployments: {
94
+ canonical: {
95
+ address: '0xdeaddeaddeaddeaddeaddeaddeaddeaddeaddead',
96
+ codeHash: '0x0000000000000000000000000000000000000000000000000000000000000000',
97
+ },
98
+ },
99
+ networkAddresses: { '1': '0xdeaddeaddeaddeaddeaddeaddeaddeaddeaddead' },
100
+ released: false,
101
+ abi: [],
102
+ version: '',
103
+ contractName: '',
104
+ };
105
+ const testReleasedDeployment: SingletonDeployment = {
115
106
  defaultAddress: '0xbeefbeefbeefbeefbeefbeefbeefbeefbeefbeef',
116
107
  deployments: {
117
108
  canonical: {
@@ -120,64 +111,91 @@ describe('utils.ts', () => {
120
111
  },
121
112
  },
122
113
  networkAddresses: { '1': '0xbeefbeefbeefbeefbeefbeefbeefbeefbeefbeef' },
123
- released: false,
114
+ released: true,
124
115
  abi: [],
125
116
  version: '',
126
117
  contractName: '',
127
118
  };
128
-
129
119
  const testDeployments = [testUnreleasedDeploymentJson, testReleasedDeploymentJson];
130
120
 
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
121
  expect(findDeployment({ released: false }, testDeployments)).toMatchObject(testUnreleasedDeployment);
122
+ expect(findDeployment({ released: true }, testDeployments)).toMatchObject(testReleasedDeployment);
138
123
 
139
- // L2 deployments
140
- expect(findDeployment({ released: true }, _SAFE_L2_DEPLOYMENTS)).toMatchObject(SafeL2141);
124
+ expect(findDeployment({ released: true }, _SAFE_DEPLOYMENTS)).toMatchObject({
125
+ contractName: 'Safe',
126
+ version: '1.5.0',
127
+ });
128
+ expect(findDeployment({ released: true }, _safeDeploymentsReverse)).toMatchObject({
129
+ contractName: 'GnosisSafe',
130
+ version: '1.0.0',
131
+ });
132
+ expect(findDeployment({ released: true }, _SAFE_L2_DEPLOYMENTS)).toMatchObject({
133
+ contractName: 'SafeL2',
134
+ version: '1.5.0',
135
+ });
141
136
  });
142
137
 
143
138
  it('should return the correct deployment (filtered by network)', () => {
144
139
  // 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);
140
+ expect(findDeployment({ network: '1' }, _safeDeploymentsReverse)).toMatchObject({
141
+ contractName: 'GnosisSafe',
142
+ version: '1.0.0',
143
+ });
144
+ expect(findDeployment({ network: '73799' }, _safeDeploymentsReverse)).toMatchObject({
145
+ contractName: 'GnosisSafe',
146
+ version: '1.1.1',
147
+ });
148
+ expect(findDeployment({ network: '11297108109' }, _safeDeploymentsReverse)).toMatchObject({
149
+ contractName: 'GnosisSafe',
150
+ version: '1.3.0',
151
+ });
148
152
  // Incorrect filter:
149
153
  expect(findDeployment({ network: '0' }, _safeDeploymentsReverse)).toBeUndefined();
150
154
 
151
155
  // L2 deployments
152
- expect(findDeployment({ network: '100' }, _SAFE_L2_DEPLOYMENTS)).toMatchObject(SafeL2141);
156
+ expect(findDeployment({ network: '1' }, _SAFE_L2_DEPLOYMENTS)).toMatchObject({
157
+ contractName: 'SafeL2',
158
+ version: '1.5.0',
159
+ });
153
160
  // Incorrect filter:
154
161
  expect(findDeployment({ network: '0' }, _SAFE_L2_DEPLOYMENTS)).toBeUndefined();
155
162
  });
163
+
156
164
  it('should return the correct deployment (filtered by version and released)', () => {
157
165
  // 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);
166
+ expect(findDeployment({ version: '1.3.0', released: true }, _SAFE_DEPLOYMENTS)).toMatchObject({
167
+ contractName: 'GnosisSafe',
168
+ version: '1.3.0',
169
+ released: true,
170
+ });
171
+ expect(findDeployment({ version: '1.2.0', released: true }, _SAFE_DEPLOYMENTS)).toMatchObject({
172
+ contractName: 'GnosisSafe',
173
+ version: '1.2.0',
174
+ released: true,
175
+ });
176
+ expect(findDeployment({ version: '1.1.1', released: true }, _SAFE_DEPLOYMENTS)).toMatchObject({
177
+ contractName: 'GnosisSafe',
178
+ version: '1.1.1',
179
+ released: true,
180
+ });
181
+ expect(findDeployment({ version: '1.0.0', released: true }, _SAFE_DEPLOYMENTS)).toMatchObject({
182
+ contractName: 'GnosisSafe',
183
+ version: '1.0.0',
184
+ released: true,
185
+ });
162
186
  // Incorrect filter:
163
187
  expect(findDeployment({ version: '1.0.0', released: false }, _SAFE_DEPLOYMENTS)).toBeUndefined();
164
188
 
165
189
  // 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
- );
190
+ expect(findDeployment({ version: '1.3.0', released: true }, _SAFE_L2_DEPLOYMENTS)).toMatchObject({
191
+ contractName: 'GnosisSafeL2',
192
+ version: '1.3.0',
193
+ released: true,
194
+ });
178
195
  // Incorrect filter:
179
- expect(findDeployment({ version: '1.3.0+L2', released: false }, _SAFE_L2_DEPLOYMENTS)).toBeUndefined();
196
+ expect(findDeployment({ version: '1.3.0', released: false }, _SAFE_L2_DEPLOYMENTS)).toBeUndefined();
180
197
  });
198
+
181
199
  it('should return the correct deployment (filtered by version and network)', () => {
182
200
  // Reverse chronological deployments
183
201
  expect(
@@ -188,7 +206,10 @@ describe('utils.ts', () => {
188
206
  },
189
207
  _safeDeploymentsReverse,
190
208
  ),
191
- ).toMatchObject(GnosisSafe100);
209
+ ).toMatchObject({
210
+ contractName: 'GnosisSafe',
211
+ version: '1.0.0',
212
+ });
192
213
  expect(
193
214
  findDeployment(
194
215
  {
@@ -197,7 +218,10 @@ describe('utils.ts', () => {
197
218
  },
198
219
  _safeDeploymentsReverse,
199
220
  ),
200
- ).toMatchObject(GnosisSafe111);
221
+ ).toMatchObject({
222
+ contractName: 'GnosisSafe',
223
+ version: '1.1.1',
224
+ });
201
225
  expect(
202
226
  findDeployment(
203
227
  {
@@ -206,7 +230,10 @@ describe('utils.ts', () => {
206
230
  },
207
231
  _safeDeploymentsReverse,
208
232
  ),
209
- ).toMatchObject(GnosisSafe120);
233
+ ).toMatchObject({
234
+ contractName: 'GnosisSafe',
235
+ version: '1.2.0',
236
+ });
210
237
  expect(
211
238
  findDeployment(
212
239
  {
@@ -215,7 +242,10 @@ describe('utils.ts', () => {
215
242
  },
216
243
  _safeDeploymentsReverse,
217
244
  ),
218
- ).toMatchObject(GnosisSafe130);
245
+ ).toMatchObject({
246
+ contractName: 'GnosisSafe',
247
+ version: '1.3.0',
248
+ });
219
249
  // Incorrect filter:
220
250
  expect(findDeployment({ version: '1.3.0', network: '0' }, _safeDeploymentsReverse)).toBeUndefined();
221
251
 
@@ -228,13 +258,14 @@ describe('utils.ts', () => {
228
258
  },
229
259
  _SAFE_L2_DEPLOYMENTS,
230
260
  ),
231
- ).toMatchObject(GnosisSafeL2130);
232
- expect(findDeployment({ version: '1.3.0+L2', network: '100' }, _SAFE_L2_DEPLOYMENTS)).toMatchObject(
233
- GnosisSafeL2130,
234
- );
261
+ ).toMatchObject({
262
+ contractName: 'GnosisSafeL2',
263
+ version: '1.3.0',
264
+ });
235
265
  // Incorrect filter:
236
- expect(findDeployment({ version: '1.3.0+L2', network: '0' }, _SAFE_L2_DEPLOYMENTS)).toBeUndefined();
266
+ expect(findDeployment({ version: '1.3.0', network: '0' }, _SAFE_L2_DEPLOYMENTS)).toBeUndefined();
237
267
  });
268
+
238
269
  it('should return the correct deployment (filtered by released and network)', () => {
239
270
  const testUnreleasedDeploymentJson: SingletonDeploymentJSON = {
240
271
  version: '',
@@ -283,6 +314,10 @@ describe('utils.ts', () => {
283
314
  testReleasedDeploymentJson,
284
315
  ];
285
316
 
317
+ expect(findDeployment({ released: false, network: '1' }, testDeployments)).toMatchObject(
318
+ testUnreleasedDeployment,
319
+ );
320
+
286
321
  // Reverse chronological deployments
287
322
  expect(
288
323
  findDeployment(
@@ -292,39 +327,57 @@ describe('utils.ts', () => {
292
327
  },
293
328
  _safeDeploymentsReverse,
294
329
  ),
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
- );
330
+ ).toMatchObject({
331
+ contractName: 'GnosisSafe',
332
+ version: '1.0.0',
333
+ });
334
+ expect(findDeployment({ released: true, network: '246' }, _safeDeploymentsReverse)).toMatchObject({
335
+ contractName: 'GnosisSafe',
336
+ version: '1.1.1',
337
+ });
338
+ expect(findDeployment({ released: true, network: '11297108109' }, _safeDeploymentsReverse)).toMatchObject({
339
+ contractName: 'GnosisSafe',
340
+ version: '1.3.0',
341
+ });
302
342
  // Incorrect filter:
303
343
  expect(findDeployment({ released: true, network: '0' }, _safeDeploymentsReverse)).toBeUndefined();
304
- expect(findDeployment({ released: false, network: '1' }, testDeployments)).toMatchObject(
305
- testUnreleasedDeployment,
306
- );
307
344
 
308
345
  // L2 deployments
309
- expect(findDeployment({ released: true, network: '100' }, _SAFE_L2_DEPLOYMENTS)).toMatchObject(SafeL2141);
346
+ expect(findDeployment({ released: true, network: '1' }, _SAFE_L2_DEPLOYMENTS)).toMatchObject({
347
+ contractName: 'SafeL2',
348
+ version: '1.5.0',
349
+ });
310
350
  // Incorrect filter:
311
351
  expect(findDeployment({ released: true, network: '0' }, _SAFE_L2_DEPLOYMENTS)).toBeUndefined();
312
352
  expect(findDeployment({ released: false, network: '100' }, testDeployments)).toBeUndefined();
313
353
  });
354
+
314
355
  it('should return the correct deployment (filtered by version, released and network)', () => {
315
356
  // Reverse chronological deployments
316
357
  expect(
317
358
  findDeployment({ version: '1.0.0', released: true, network: '1' }, _safeDeploymentsReverse),
318
- ).toMatchObject(GnosisSafe100);
359
+ ).toMatchObject({
360
+ contractName: 'GnosisSafe',
361
+ version: '1.0.0',
362
+ });
319
363
  expect(
320
364
  findDeployment({ version: '1.1.1', released: true, network: '246' }, _safeDeploymentsReverse),
321
- ).toMatchObject(GnosisSafe111);
365
+ ).toMatchObject({
366
+ contractName: 'GnosisSafe',
367
+ version: '1.1.1',
368
+ });
322
369
  expect(
323
370
  findDeployment({ version: '1.2.0', released: true, network: '73799' }, _safeDeploymentsReverse),
324
- ).toMatchObject(GnosisSafe120);
371
+ ).toMatchObject({
372
+ contractName: 'GnosisSafe',
373
+ version: '1.2.0',
374
+ });
325
375
  expect(
326
376
  findDeployment({ version: '1.3.0', released: true, network: '11297108109' }, _safeDeploymentsReverse),
327
- ).toMatchObject(GnosisSafe130);
377
+ ).toMatchObject({
378
+ contractName: 'GnosisSafe',
379
+ version: '1.3.0',
380
+ });
328
381
  // Incorrect filter:
329
382
  expect(
330
383
  findDeployment({ version: '1.3.0', released: false, network: '11297108109' }, _safeDeploymentsReverse),
@@ -338,27 +391,20 @@ describe('utils.ts', () => {
338
391
 
339
392
  // L2 deployments
340
393
  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);
394
+ findDeployment({ version: '1.3.0', released: true, network: '100' }, _SAFE_L2_DEPLOYMENTS),
395
+ ).toMatchObject({
396
+ contractName: 'GnosisSafeL2',
397
+ version: '1.3.0',
398
+ });
353
399
  // Incorrect filter:
354
400
  expect(
355
- findDeployment({ version: '1.3.0+L2', released: false, network: '100' }, _SAFE_L2_DEPLOYMENTS),
401
+ findDeployment({ version: '1.3.0', released: false, network: '100' }, _SAFE_L2_DEPLOYMENTS),
356
402
  ).toBeUndefined();
357
403
  expect(
358
- findDeployment({ version: '1.3.0+L2', released: true, network: '0' }, _SAFE_L2_DEPLOYMENTS),
404
+ findDeployment({ version: '1.3.0', released: true, network: '0' }, _SAFE_L2_DEPLOYMENTS),
359
405
  ).toBeUndefined();
360
406
  expect(
361
- findDeployment({ version: '2.0.0+L2', released: true, network: '100' }, _SAFE_L2_DEPLOYMENTS),
407
+ findDeployment({ version: '2.0.0', released: true, network: '100' }, _SAFE_L2_DEPLOYMENTS),
362
408
  ).toBeUndefined();
363
409
  });
364
410
  });
@@ -74,6 +74,7 @@
74
74
  "196": ["eip155", "canonical"],
75
75
  "204": ["eip155", "canonical"],
76
76
  "232": "zksync",
77
+ "239": ["eip155", "canonical"],
77
78
  "240": "zksync",
78
79
  "246": "canonical",
79
80
  "250": ["canonical", "eip155"],
@@ -84,11 +85,11 @@
84
85
  "282": "zksync",
85
86
  "288": "eip155",
86
87
  "291": "canonical",
87
- "300": "zksync",
88
+ "300": ["zksync", "canonical", "eip155"],
88
89
  "314": "eip155",
89
90
  "321": "canonical",
90
91
  "322": "canonical",
91
- "324": "zksync",
92
+ "324": ["zksync", "canonical", "eip155"],
92
93
  "336": ["canonical", "eip155"],
93
94
  "338": "eip155",
94
95
  "360": ["eip155", "canonical"],
@@ -103,7 +104,7 @@
103
104
  "545": "eip155",
104
105
  "570": "eip155",
105
106
  "588": "eip155",
106
- "592": "canonical",
107
+ "592": ["canonical", "eip155"],
107
108
  "595": "eip155",
108
109
  "599": "eip155",
109
110
  "648": ["canonical", "eip155"],
@@ -142,6 +143,7 @@
142
143
  "1514": ["eip155", "canonical"],
143
144
  "1516": ["eip155", "canonical"],
144
145
  "1559": "eip155",
146
+ "1625": "eip155",
145
147
  "1663": "eip155",
146
148
  "1729": "canonical",
147
149
  "1807": "canonical",
@@ -168,11 +170,13 @@
168
170
  "2345": "canonical",
169
171
  "2358": "eip155",
170
172
  "2390": "eip155",
171
- "2741": "zksync",
173
+ "2391": ["eip155", "canonical"],
174
+ "2741": ["zksync", "canonical"],
172
175
  "2810": ["eip155", "canonical"],
173
176
  "2818": ["canonical", "eip155"],
174
177
  "3338": ["canonical", "eip155"],
175
178
  "3636": "eip155",
179
+ "3637": "eip155",
176
180
  "3737": "canonical",
177
181
  "3776": "canonical",
178
182
  "4002": "canonical",
@@ -212,11 +216,13 @@
212
216
  "8194": "eip155",
213
217
  "8217": "eip155",
214
218
  "8329": "canonical",
219
+ "8333": "eip155",
215
220
  "8453": ["eip155", "canonical"],
216
221
  "8822": "eip155",
217
222
  "9000": ["canonical", "eip155"],
218
223
  "9001": ["canonical", "eip155"],
219
224
  "9728": "eip155",
225
+ "9746": ["canonical", "eip155"],
220
226
  "10000": "eip155",
221
227
  "10001": "eip155",
222
228
  "10081": "eip155",
@@ -224,7 +230,7 @@
224
230
  "10242": "eip155",
225
231
  "10243": "eip155",
226
232
  "10849": "canonical",
227
- "11011": "eip155",
233
+ "11011": ["eip155", "canonical"],
228
234
  "11111": "canonical",
229
235
  "11124": "zksync",
230
236
  "11235": "canonical",
@@ -238,6 +244,7 @@
238
244
  "13337": "canonical",
239
245
  "13371": ["eip155", "canonical"],
240
246
  "13473": ["eip155", "canonical"],
247
+ "13505": "eip155",
241
248
  "13746": ["canonical", "eip155"],
242
249
  "14800": "eip155",
243
250
  "17000": ["canonical", "eip155"],
@@ -247,7 +254,7 @@
247
254
  "18233": "canonical",
248
255
  "22776": "canonical",
249
256
  "23294": ["eip155", "canonical"],
250
- "23295": "eip155",
257
+ "23295": ["eip155", "canonical"],
251
258
  "25327": "eip155",
252
259
  "28882": ["eip155", "canonical"],
253
260
  "28979": "canonical",
@@ -277,6 +284,7 @@
277
284
  "47805": "canonical",
278
285
  "48899": ["eip155", "canonical"],
279
286
  "48900": ["canonical", "eip155"],
287
+ "50104": "zksync",
280
288
  "53456": "canonical",
281
289
  "53457": "canonical",
282
290
  "54211": "eip155",
@@ -299,6 +307,7 @@
299
307
  "80084": "canonical",
300
308
  "80085": ["canonical", "eip155"],
301
309
  "80094": ["canonical", "eip155"],
310
+ "81224": ["canonical", "eip155"],
302
311
  "81457": ["canonical", "eip155"],
303
312
  "83291": "canonical",
304
313
  "84531": "eip155",
@@ -359,6 +368,7 @@
359
368
  "328527624": "canonical",
360
369
  "333000333": "canonical",
361
370
  "476462898": "canonical",
371
+ "531050104": "zksync",
362
372
  "666666666": ["canonical", "eip155"],
363
373
  "888888888": "canonical",
364
374
  "999999999": ["canonical", "eip155"],