@hyperlane-xyz/sdk 44.0.2 → 45.0.1

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 (189) hide show
  1. package/dist/consts/multisigIsm.d.ts.map +1 -1
  2. package/dist/consts/multisigIsm.js +104 -772
  3. package/dist/consts/multisigIsm.js.map +1 -1
  4. package/dist/consts/testChains.d.ts.map +1 -1
  5. package/dist/consts/testChains.js +11 -6
  6. package/dist/consts/testChains.js.map +1 -1
  7. package/dist/core/adapters/SealevelCoreAdapter.d.ts +6 -0
  8. package/dist/core/adapters/SealevelCoreAdapter.d.ts.map +1 -1
  9. package/dist/core/adapters/SealevelCoreAdapter.js +20 -0
  10. package/dist/core/adapters/SealevelCoreAdapter.js.map +1 -1
  11. package/dist/core/adapters/SealevelCoreAdapter.test.js +17 -0
  12. package/dist/core/adapters/SealevelCoreAdapter.test.js.map +1 -1
  13. package/dist/core/types.d.ts.map +1 -1
  14. package/dist/core/types.js +14 -1
  15. package/dist/core/types.js.map +1 -1
  16. package/dist/core/types.test.js +98 -1
  17. package/dist/core/types.test.js.map +1 -1
  18. package/dist/deploy/proxy.d.ts +1 -0
  19. package/dist/deploy/proxy.d.ts.map +1 -1
  20. package/dist/deploy/proxy.js +6 -0
  21. package/dist/deploy/proxy.js.map +1 -1
  22. package/dist/deploy/warp.d.ts.map +1 -1
  23. package/dist/deploy/warp.js +32 -43
  24. package/dist/deploy/warp.js.map +1 -1
  25. package/dist/deploy/warp.test.js +62 -1
  26. package/dist/deploy/warp.test.js.map +1 -1
  27. package/dist/gas/adapters/SealevelIgpAdapter.d.ts +3 -2
  28. package/dist/gas/adapters/SealevelIgpAdapter.d.ts.map +1 -1
  29. package/dist/gas/adapters/SealevelIgpAdapter.js +3 -2
  30. package/dist/gas/adapters/SealevelIgpAdapter.js.map +1 -1
  31. package/dist/index.d.ts +2 -2
  32. package/dist/index.d.ts.map +1 -1
  33. package/dist/index.js +2 -2
  34. package/dist/index.js.map +1 -1
  35. package/dist/ism/EvmIsmModule.d.ts.map +1 -1
  36. package/dist/ism/EvmIsmModule.js +5 -1
  37. package/dist/ism/EvmIsmModule.js.map +1 -1
  38. package/dist/ism/EvmIsmModule.test.js +109 -0
  39. package/dist/ism/EvmIsmModule.test.js.map +1 -1
  40. package/dist/ism/HyperlaneIsmFactory.d.ts +26 -6
  41. package/dist/ism/HyperlaneIsmFactory.d.ts.map +1 -1
  42. package/dist/ism/HyperlaneIsmFactory.hardhat-test.js +60 -0
  43. package/dist/ism/HyperlaneIsmFactory.hardhat-test.js.map +1 -1
  44. package/dist/ism/HyperlaneIsmFactory.js +165 -34
  45. package/dist/ism/HyperlaneIsmFactory.js.map +1 -1
  46. package/dist/ism/HyperlaneIsmFactory.test.js +33 -6
  47. package/dist/ism/HyperlaneIsmFactory.test.js.map +1 -1
  48. package/dist/ism/types.d.ts +18 -2
  49. package/dist/ism/types.d.ts.map +1 -1
  50. package/dist/ism/types.js +43 -3
  51. package/dist/ism/types.js.map +1 -1
  52. package/dist/ism/types.test.js +232 -56
  53. package/dist/ism/types.test.js.map +1 -1
  54. package/dist/ism/utils.d.ts.map +1 -1
  55. package/dist/ism/utils.js +13 -0
  56. package/dist/ism/utils.js.map +1 -1
  57. package/dist/ism/utils.test.js +43 -1
  58. package/dist/ism/utils.test.js.map +1 -1
  59. package/dist/metadata/ChainMetadataManager.d.ts +1 -0
  60. package/dist/metadata/ChainMetadataManager.d.ts.map +1 -1
  61. package/dist/metadata/ChainMetadataManager.js +1 -0
  62. package/dist/metadata/ChainMetadataManager.js.map +1 -1
  63. package/dist/metadata/ChainMetadataManager.test.js +14 -1
  64. package/dist/metadata/ChainMetadataManager.test.js.map +1 -1
  65. package/dist/metadata/ChainMetadataResolver.d.ts +1 -0
  66. package/dist/metadata/ChainMetadataResolver.d.ts.map +1 -1
  67. package/dist/metadata/ChainMetadataResolver.js +1 -0
  68. package/dist/metadata/ChainMetadataResolver.js.map +1 -1
  69. package/dist/metadata/ChainMetadataResolver.test.js +4 -0
  70. package/dist/metadata/ChainMetadataResolver.test.js.map +1 -1
  71. package/dist/metadata/agentConfig.d.ts +209 -93
  72. package/dist/metadata/agentConfig.d.ts.map +1 -1
  73. package/dist/metadata/agentConfig.js +106 -13
  74. package/dist/metadata/agentConfig.js.map +1 -1
  75. package/dist/metadata/agentConfig.test.js +277 -25
  76. package/dist/metadata/agentConfig.test.js.map +1 -1
  77. package/dist/metadata/chainMetadata.test.js +25 -0
  78. package/dist/metadata/chainMetadata.test.js.map +1 -1
  79. package/dist/metadata/chainMetadataTypes.d.ts +36 -0
  80. package/dist/metadata/chainMetadataTypes.d.ts.map +1 -1
  81. package/dist/metadata/chainMetadataTypes.js +26 -0
  82. package/dist/metadata/chainMetadataTypes.js.map +1 -1
  83. package/dist/providers/SeismicSigner.d.ts +4 -12
  84. package/dist/providers/SeismicSigner.d.ts.map +1 -1
  85. package/dist/providers/SeismicSigner.js +84 -35
  86. package/dist/providers/SeismicSigner.js.map +1 -1
  87. package/dist/providers/SeismicSigner.test.d.ts +2 -0
  88. package/dist/providers/SeismicSigner.test.d.ts.map +1 -0
  89. package/dist/providers/SeismicSigner.test.js +160 -0
  90. package/dist/providers/SeismicSigner.test.js.map +1 -0
  91. package/dist/providers/SmartProvider/SmartProvider.d.ts +1 -5
  92. package/dist/providers/SmartProvider/SmartProvider.d.ts.map +1 -1
  93. package/dist/providers/SmartProvider/SmartProvider.emptyResponse.test.d.ts +2 -0
  94. package/dist/providers/SmartProvider/SmartProvider.emptyResponse.test.d.ts.map +1 -0
  95. package/dist/providers/SmartProvider/SmartProvider.emptyResponse.test.js +164 -0
  96. package/dist/providers/SmartProvider/SmartProvider.emptyResponse.test.js.map +1 -0
  97. package/dist/providers/SmartProvider/SmartProvider.js +35 -72
  98. package/dist/providers/SmartProvider/SmartProvider.js.map +1 -1
  99. package/dist/providers/SmartProvider/SmartProvider.test.js +181 -2
  100. package/dist/providers/SmartProvider/SmartProvider.test.js.map +1 -1
  101. package/dist/providers/SmartProvider/jsonRpcError.d.ts +7 -0
  102. package/dist/providers/SmartProvider/jsonRpcError.d.ts.map +1 -0
  103. package/dist/providers/SmartProvider/jsonRpcError.js +67 -0
  104. package/dist/providers/SmartProvider/jsonRpcError.js.map +1 -0
  105. package/dist/providers/SmartProvider/types.d.ts +1 -0
  106. package/dist/providers/SmartProvider/types.d.ts.map +1 -1
  107. package/dist/providers/builders/ethersV5.d.ts +0 -1
  108. package/dist/providers/builders/ethersV5.d.ts.map +1 -1
  109. package/dist/providers/builders/ethersV5.js +19 -5
  110. package/dist/providers/builders/ethersV5.js.map +1 -1
  111. package/dist/providers/builders/ethersV5.test.d.ts +2 -0
  112. package/dist/providers/builders/ethersV5.test.d.ts.map +1 -0
  113. package/dist/providers/builders/ethersV5.test.js +77 -0
  114. package/dist/providers/builders/ethersV5.test.js.map +1 -0
  115. package/dist/providers/builders/radix.browser.d.ts +1 -0
  116. package/dist/providers/builders/radix.browser.d.ts.map +1 -1
  117. package/dist/providers/builders/radix.browser.js +1 -0
  118. package/dist/providers/builders/radix.browser.js.map +1 -1
  119. package/dist/providers/builders/radix.d.ts.map +1 -1
  120. package/dist/providers/builders/radix.gateway.test.d.ts +2 -0
  121. package/dist/providers/builders/radix.gateway.test.d.ts.map +1 -0
  122. package/dist/providers/builders/radix.gateway.test.js +39 -0
  123. package/dist/providers/builders/radix.gateway.test.js.map +1 -0
  124. package/dist/providers/builders/radix.js +1 -0
  125. package/dist/providers/builders/radix.js.map +1 -1
  126. package/dist/providers/builders/radix.test.js +1 -0
  127. package/dist/providers/builders/radix.test.js.map +1 -1
  128. package/dist/providers/providerBuilders.d.ts +1 -1
  129. package/dist/providers/providerBuilders.d.ts.map +1 -1
  130. package/dist/providers/providerBuilders.js +1 -1
  131. package/dist/providers/providerBuilders.js.map +1 -1
  132. package/dist/rpc/evm/EvmEventLogsReader.hardhat-test.js +60 -8
  133. package/dist/rpc/evm/EvmEventLogsReader.hardhat-test.js.map +1 -1
  134. package/dist/test/errors.d.ts +25 -0
  135. package/dist/test/errors.d.ts.map +1 -1
  136. package/dist/test/errors.js +31 -0
  137. package/dist/test/errors.js.map +1 -1
  138. package/dist/test/fixtures/warp-route-replay/record.d.ts +2 -0
  139. package/dist/test/fixtures/warp-route-replay/record.d.ts.map +1 -0
  140. package/dist/test/fixtures/warp-route-replay/record.js +32 -0
  141. package/dist/test/fixtures/warp-route-replay/record.js.map +1 -0
  142. package/dist/test/replayRpc.d.ts +82 -0
  143. package/dist/test/replayRpc.d.ts.map +1 -0
  144. package/dist/test/replayRpc.js +331 -0
  145. package/dist/test/replayRpc.js.map +1 -0
  146. package/dist/test/replayScenarios.d.ts +19 -0
  147. package/dist/test/replayScenarios.d.ts.map +1 -0
  148. package/dist/test/replayScenarios.js +89 -0
  149. package/dist/test/replayScenarios.js.map +1 -0
  150. package/dist/timelock/evm/EvmTimelockReader.hardhat-test.js +92 -7
  151. package/dist/timelock/evm/EvmTimelockReader.hardhat-test.js.map +1 -1
  152. package/dist/timelock/evm/errors.js +1 -1
  153. package/dist/timelock/evm/errors.js.map +1 -1
  154. package/dist/token/EvmWarpRouteReader.d.ts +27 -0
  155. package/dist/token/EvmWarpRouteReader.d.ts.map +1 -1
  156. package/dist/token/EvmWarpRouteReader.hardhat-test.js +28 -3
  157. package/dist/token/EvmWarpRouteReader.hardhat-test.js.map +1 -1
  158. package/dist/token/EvmWarpRouteReader.js +172 -42
  159. package/dist/token/EvmWarpRouteReader.js.map +1 -1
  160. package/dist/token/EvmWarpRouteReader.replay.test.d.ts +2 -0
  161. package/dist/token/EvmWarpRouteReader.replay.test.d.ts.map +1 -0
  162. package/dist/token/EvmWarpRouteReader.replay.test.js +392 -0
  163. package/dist/token/EvmWarpRouteReader.replay.test.js.map +1 -0
  164. package/dist/token/EvmWarpRouteReader.test.js +529 -4
  165. package/dist/token/EvmWarpRouteReader.test.js.map +1 -1
  166. package/dist/token/types.d.ts +1 -1
  167. package/dist/token/warpCheck.d.ts +1 -0
  168. package/dist/token/warpCheck.d.ts.map +1 -1
  169. package/dist/token/warpCheck.js +25 -2
  170. package/dist/token/warpCheck.js.map +1 -1
  171. package/dist/token/warpCheck.test.js +119 -0
  172. package/dist/token/warpCheck.test.js.map +1 -1
  173. package/dist/utils/contract.d.ts +33 -0
  174. package/dist/utils/contract.d.ts.map +1 -1
  175. package/dist/utils/contract.js +116 -3
  176. package/dist/utils/contract.js.map +1 -1
  177. package/dist/utils/contract.test.js +465 -2
  178. package/dist/utils/contract.test.js.map +1 -1
  179. package/dist/utils/contract.transport.test.d.ts +2 -0
  180. package/dist/utils/contract.transport.test.d.ts.map +1 -0
  181. package/dist/utils/contract.transport.test.js +145 -0
  182. package/dist/utils/contract.transport.test.js.map +1 -0
  183. package/dist/utils/ism.d.ts +12 -6
  184. package/dist/utils/ism.d.ts.map +1 -1
  185. package/dist/utils/ism.js +92 -41
  186. package/dist/utils/ism.js.map +1 -1
  187. package/dist/utils/ism.test.js +75 -2
  188. package/dist/utils/ism.test.js.map +1 -1
  189. package/package.json +29 -15
@@ -1,16 +1,17 @@
1
- import { PackageVersioned__factory } from '@hyperlane-xyz/core';
1
+ import { CrossCollateralRouter__factory, EverclearTokenBridge__factory, HypERC20Collateral__factory, IFiatToken__factory, IXERC20__factory, PackageVersioned__factory, TokenRouter__factory, } from '@hyperlane-xyz/core';
2
2
  import chai, { expect } from 'chai';
3
3
  import chaiAsPromised from 'chai-as-promised';
4
4
  import { ethers } from 'ethers';
5
5
  import sinon from 'sinon';
6
6
  import { assert } from '@hyperlane-xyz/utils';
7
7
  import { TestChainName } from '../consts/testChains.js';
8
- import { EIP1967_IMPLEMENTATION_SLOT } from '../deploy/proxy.js';
8
+ import { EIP1967_BEACON_SLOT, EIP1967_IMPLEMENTATION_SLOT, } from '../deploy/proxy.js';
9
9
  import { MultiProvider } from '../providers/MultiProvider.js';
10
10
  import { EvmEventLogsReader } from '../rpc/evm/EvmEventLogsReader.js';
11
- import { missingSelectorError, networkError } from '../test/errors.js';
11
+ import { errorStringRevertError, ethersCallExceptionWithNestedError, lsp17NoExtensionError, missingSelectorError, networkError, panicRevertError, unrecognisedCustomRevertError, } from '../test/errors.js';
12
12
  import { randomAddress } from '../test/testUtils.js';
13
13
  import { EvmWarpRouteReader } from './EvmWarpRouteReader.js';
14
+ import { TokenType } from './config.js';
14
15
  import { XERC20Type } from './types.js';
15
16
  import { CONFIGURATION_CHANGED_EVENT_SELECTOR } from './xerc20-abi.js';
16
17
  chai.use(chaiAsPromised);
@@ -47,6 +48,527 @@ describe('EvmWarpRouteReader', () => {
47
48
  }
48
49
  expect(thrown).to.equal(transientError);
49
50
  });
51
+ describe('fetchTokenFee', () => {
52
+ function stubFeeRecipient(feeRecipient) {
53
+ sandbox.stub(TokenRouter__factory, 'connect').returns({
54
+ feeRecipient,
55
+ });
56
+ }
57
+ it('skips feeRecipient for routers without the token fee interface', async () => {
58
+ const feeRecipient = sandbox.stub().rejects(panicRevertError());
59
+ stubFeeRecipient(feeRecipient);
60
+ sandbox.stub(reader, 'fetchPackageVersion').resolves('8.1.2');
61
+ const result = await reader.fetchTokenFee(randomAddress());
62
+ expect(result).to.equal(undefined);
63
+ expect(feeRecipient.called).to.equal(false);
64
+ });
65
+ it('treats an LSP17 no-extension revert from feeRecipient as no token fee', async () => {
66
+ stubFeeRecipient(sandbox.stub().rejects(lsp17NoExtensionError()));
67
+ sandbox.stub(reader, 'fetchPackageVersion').resolves('10.0.0');
68
+ expect(await reader.fetchTokenFee(randomAddress())).to.equal(undefined);
69
+ });
70
+ const failureCases = [
71
+ { name: 'a network error', error: networkError },
72
+ {
73
+ name: 'an unrecognised custom revert',
74
+ error: unrecognisedCustomRevertError,
75
+ },
76
+ ];
77
+ for (const c of failureCases) {
78
+ it(`rejects when feeRecipient fails with ${c.name} on a fee-capable router`, async () => {
79
+ const error = c.error();
80
+ stubFeeRecipient(sandbox.stub().rejects(error));
81
+ sandbox.stub(reader, 'fetchPackageVersion').resolves('10.0.0');
82
+ await expect(reader.fetchTokenFee(randomAddress())).to.be.rejectedWith(error.message);
83
+ });
84
+ }
85
+ });
86
+ describe('fetchFeeHook', () => {
87
+ const feeHookSelector = TokenRouter__factory.createInterface()
88
+ .getSighash('feeHook()')
89
+ .slice(2);
90
+ function stubProxyProvider(implBytecode) {
91
+ const provider = multiProvider.getProvider(TestChainName.test1);
92
+ const impl = randomAddress();
93
+ const getCode = sandbox
94
+ .stub(provider, 'getCode')
95
+ .callsFake(async (address) => (await address) === ethers.utils.getAddress(impl)
96
+ ? implBytecode
97
+ : '0x60');
98
+ sandbox
99
+ .stub(provider, 'getStorageAt')
100
+ .callsFake(async (address) => (await address) === ethers.utils.getAddress(impl)
101
+ ? `0x${'00'.repeat(32)}`
102
+ : `0x${'00'.repeat(12)}${impl.slice(2)}`);
103
+ const call = sandbox
104
+ .stub(provider, 'call')
105
+ .rejects(unrecognisedCustomRevertError());
106
+ return { call, getCode };
107
+ }
108
+ it('skips feeHook() when bytecode has no feeHook() selector', async () => {
109
+ const { call } = stubProxyProvider('0x6080604052deadbeef');
110
+ expect(await reader.fetchFeeHook(randomAddress())).to.equal(undefined);
111
+ expect(call.called).to.equal(false);
112
+ });
113
+ it('rejects an unrecognised revert when bytecode has the feeHook() selector', async () => {
114
+ const { call } = stubProxyProvider(`0x6080604052${feeHookSelector}`);
115
+ await expect(reader.fetchFeeHook(randomAddress())).to.be.rejectedWith('call revert exception');
116
+ expect(call.called).to.equal(true);
117
+ });
118
+ it('treats an LSP17 no-extension revert as a missing feeHook() selector', async () => {
119
+ const { call } = stubProxyProvider(`0x6080604052${feeHookSelector}`);
120
+ call.rejects(lsp17NoExtensionError());
121
+ expect(await reader.fetchFeeHook(randomAddress())).to.equal(undefined);
122
+ expect(call.called).to.equal(true);
123
+ });
124
+ it('makes the call when bytecode is empty', async () => {
125
+ const { call } = stubProxyProvider('0x');
126
+ await expect(reader.fetchFeeHook(randomAddress())).to.be.rejectedWith('call revert exception');
127
+ expect(call.called).to.equal(true);
128
+ });
129
+ it('caches implementation bytecode per address', async () => {
130
+ const { getCode } = stubProxyProvider('0x6080604052deadbeef');
131
+ const router = randomAddress();
132
+ await reader.fetchFeeHook(router);
133
+ const callsAfterFirst = getCode.callCount;
134
+ await reader.fetchFeeHook(router.toLowerCase());
135
+ expect(getCode.callCount).to.equal(callsAfterFirst);
136
+ });
137
+ });
138
+ describe('implementation bytecode resolution', () => {
139
+ const feeHookSelector = TokenRouter__factory.createInterface()
140
+ .getSighash('feeHook()')
141
+ .slice(2);
142
+ const ZERO_SLOT = `0x${'00'.repeat(32)}`;
143
+ const WITH_SELECTOR = `0x6080604052${feeHookSelector}`;
144
+ const WITHOUT_SELECTOR = '0x6080604052deadbeef';
145
+ const WITHOUT_SELECTOR_WITH_DELEGATECALL = '0x6080604052f4deadbeef';
146
+ const router = randomAddress();
147
+ const impl = ethers.utils.getAddress(randomAddress());
148
+ const addressSlot = (address) => `0x${'00'.repeat(12)}${address.slice(2).toLowerCase()}`;
149
+ const minimalProxyCode = (address) => `0x363d3d373d3d3d363d73${address.slice(2).toLowerCase()}5af43d82803e903d91602b57fd5bf3`;
150
+ const cases = [
151
+ {
152
+ name: 'reads the EIP-1967 implementation without the selector',
153
+ routerCode: '0x60',
154
+ implCode: WITHOUT_SELECTOR,
155
+ implSlot: addressSlot(impl),
156
+ beaconSlot: ZERO_SLOT,
157
+ expectCall: false,
158
+ },
159
+ {
160
+ name: 'reads the EIP-1967 implementation with the selector',
161
+ routerCode: '0x60',
162
+ implCode: WITH_SELECTOR,
163
+ implSlot: addressSlot(impl),
164
+ beaconSlot: ZERO_SLOT,
165
+ expectCall: true,
166
+ },
167
+ {
168
+ name: 'uses the own code of a non-proxy without the selector',
169
+ routerCode: WITHOUT_SELECTOR,
170
+ implSlot: ZERO_SLOT,
171
+ beaconSlot: ZERO_SLOT,
172
+ expectCall: false,
173
+ },
174
+ {
175
+ name: 'uses the own code of a non-proxy with the selector',
176
+ routerCode: WITH_SELECTOR,
177
+ implSlot: '0x0',
178
+ beaconSlot: '0x',
179
+ expectCall: true,
180
+ },
181
+ {
182
+ name: 'probes an address without code',
183
+ routerCode: '0x',
184
+ implSlot: ZERO_SLOT,
185
+ beaconSlot: ZERO_SLOT,
186
+ expectCall: true,
187
+ },
188
+ {
189
+ name: 'resolves an EIP-1167 minimal proxy without the selector',
190
+ routerCode: minimalProxyCode(impl),
191
+ implCode: WITHOUT_SELECTOR,
192
+ implSlot: ZERO_SLOT,
193
+ beaconSlot: ZERO_SLOT,
194
+ expectCall: false,
195
+ },
196
+ {
197
+ name: 'resolves an EIP-1167 minimal proxy with the selector',
198
+ routerCode: minimalProxyCode(impl),
199
+ implCode: WITH_SELECTOR,
200
+ implSlot: ZERO_SLOT,
201
+ beaconSlot: ZERO_SLOT,
202
+ expectCall: true,
203
+ },
204
+ {
205
+ name: 'probes a DELEGATECALL-containing EIP-1967 implementation without the selector',
206
+ routerCode: '0x60',
207
+ implCode: WITHOUT_SELECTOR_WITH_DELEGATECALL,
208
+ implSlot: addressSlot(impl),
209
+ beaconSlot: ZERO_SLOT,
210
+ expectCall: true,
211
+ },
212
+ {
213
+ name: 'probes a DELEGATECALL-containing EIP-1167 target without the selector',
214
+ routerCode: minimalProxyCode(impl),
215
+ implCode: WITHOUT_SELECTOR_WITH_DELEGATECALL,
216
+ implSlot: ZERO_SLOT,
217
+ beaconSlot: ZERO_SLOT,
218
+ expectCall: true,
219
+ },
220
+ {
221
+ name: 'probes the own forwarding code of a non-proxy without the selector',
222
+ routerCode: WITHOUT_SELECTOR_WITH_DELEGATECALL,
223
+ implSlot: ZERO_SLOT,
224
+ beaconSlot: ZERO_SLOT,
225
+ expectCall: true,
226
+ },
227
+ {
228
+ name: 'probes a beacon proxy',
229
+ routerCode: WITHOUT_SELECTOR,
230
+ implSlot: ZERO_SLOT,
231
+ beaconSlot: addressSlot(impl),
232
+ expectCall: true,
233
+ },
234
+ {
235
+ name: 'probes when the implementation slot read fails',
236
+ routerCode: WITHOUT_SELECTOR,
237
+ implSlot: new Error('rpc unavailable'),
238
+ beaconSlot: ZERO_SLOT,
239
+ expectCall: true,
240
+ },
241
+ {
242
+ name: 'probes when the beacon slot read fails',
243
+ routerCode: WITHOUT_SELECTOR,
244
+ implSlot: ZERO_SLOT,
245
+ beaconSlot: new Error('rpc unavailable'),
246
+ expectCall: true,
247
+ },
248
+ {
249
+ name: 'probes when reading the own code fails',
250
+ routerCode: new Error('rpc unavailable'),
251
+ implSlot: ZERO_SLOT,
252
+ beaconSlot: ZERO_SLOT,
253
+ expectCall: true,
254
+ },
255
+ {
256
+ name: 'probes when reading the implementation code fails',
257
+ routerCode: '0x60',
258
+ implCode: undefined,
259
+ implSlot: addressSlot(impl),
260
+ beaconSlot: ZERO_SLOT,
261
+ expectCall: true,
262
+ },
263
+ ];
264
+ function stubProvider(c) {
265
+ const provider = multiProvider.getProvider(TestChainName.test1);
266
+ const getCode = sandbox
267
+ .stub(provider, 'getCode')
268
+ .callsFake(async (address) => {
269
+ const resolved = await address;
270
+ const code = resolved.toLowerCase() === router.toLowerCase()
271
+ ? c.routerCode
272
+ : c.implCode;
273
+ if (code === undefined)
274
+ throw new Error('rpc unavailable');
275
+ if (code instanceof Error)
276
+ throw code;
277
+ return code;
278
+ });
279
+ sandbox
280
+ .stub(provider, 'getStorageAt')
281
+ .callsFake(async (address, slot) => {
282
+ if ((await address).toLowerCase() !== router.toLowerCase()) {
283
+ return ZERO_SLOT;
284
+ }
285
+ const value = slot === EIP1967_BEACON_SLOT ? c.beaconSlot : c.implSlot;
286
+ if (value instanceof Error)
287
+ throw value;
288
+ return value;
289
+ });
290
+ const call = sandbox
291
+ .stub(provider, 'call')
292
+ .rejects(unrecognisedCustomRevertError());
293
+ return { call, getCode };
294
+ }
295
+ for (const c of cases) {
296
+ it(c.name, async () => {
297
+ const { call } = stubProvider(c);
298
+ if (c.expectCall) {
299
+ await expect(reader.fetchFeeHook(router)).to.be.rejectedWith('call revert exception');
300
+ }
301
+ else {
302
+ expect(await reader.fetchFeeHook(router)).to.equal(undefined);
303
+ }
304
+ expect(call.called).to.equal(c.expectCall);
305
+ });
306
+ }
307
+ it('does not cache unknown bytecode', async () => {
308
+ const c = cases.find((x) => x.name.includes('implementation slot read'));
309
+ assert(c, 'case exists');
310
+ const { getCode } = stubProvider(c);
311
+ await expect(reader.fetchFeeHook(router)).to.be.rejectedWith('call revert exception');
312
+ const callsAfterFirst = getCode.callCount;
313
+ await expect(reader.fetchFeeHook(router)).to.be.rejectedWith('call revert exception');
314
+ expect(getCode.callCount).to.be.greaterThan(callsAfterFirst);
315
+ });
316
+ it('shares one bytecode read between deriveTokenType and the getters', async () => {
317
+ const { getCode } = stubProvider(cases[2]);
318
+ await reader.deriveTokenType(router).catch(() => undefined);
319
+ const callsAfterDerive = getCode.callCount;
320
+ await reader.fetchFeeHook(router);
321
+ expect(getCode.callCount).to.equal(callsAfterDerive);
322
+ });
323
+ });
324
+ describe('fetchScale legacy scale() read', () => {
325
+ const scaleSelector = new ethers.utils.Interface([
326
+ 'function scale() view returns (uint256)',
327
+ ])
328
+ .getSighash('scale()')
329
+ .slice(2);
330
+ function stubProxyProvider(implBytecode, error) {
331
+ const provider = multiProvider.getProvider(TestChainName.test1);
332
+ const impl = randomAddress();
333
+ sandbox
334
+ .stub(provider, 'getCode')
335
+ .callsFake(async (address) => (await address) === ethers.utils.getAddress(impl)
336
+ ? implBytecode
337
+ : '0x60');
338
+ sandbox
339
+ .stub(provider, 'getStorageAt')
340
+ .callsFake(async (address) => (await address) === ethers.utils.getAddress(impl)
341
+ ? `0x${'00'.repeat(32)}`
342
+ : `0x${'00'.repeat(12)}${impl.slice(2)}`);
343
+ sandbox.stub(reader, 'fetchPackageVersion').resolves('8.0.0');
344
+ return sandbox.stub(provider, 'call').rejects(error);
345
+ }
346
+ it('skips scale() when bytecode has no scale() selector and no DELEGATECALL', async () => {
347
+ const call = stubProxyProvider('0x6080604052deadbeef', new Error('Invalid response from provider'));
348
+ expect(await reader.fetchScale(randomAddress())).to.equal(undefined);
349
+ expect(call.called).to.equal(false);
350
+ });
351
+ const revert = () => ethersCallExceptionWithNestedError({
352
+ code: 3,
353
+ message: 'execution reverted',
354
+ });
355
+ const transport = () => ethersCallExceptionWithNestedError(Object.assign(new Error('Too Many Requests'), {
356
+ code: 'SERVER_ERROR',
357
+ status: 429,
358
+ data: '0x',
359
+ }));
360
+ const empty = () => new Error('Invalid response from provider');
361
+ const statuses = [
362
+ {
363
+ status: 'present',
364
+ bytecode: `0x6080604052${scaleSelector}`,
365
+ identityOn: [],
366
+ },
367
+ {
368
+ status: 'forwarding',
369
+ bytecode: '0x6080604052f4deadbeef',
370
+ identityOn: ['a revert', 'an LSP17 revert', 'an empty response'],
371
+ },
372
+ {
373
+ status: 'unresolved',
374
+ bytecode: '0x',
375
+ identityOn: ['a revert', 'an LSP17 revert'],
376
+ },
377
+ ];
378
+ const errors = [
379
+ { name: 'a revert', error: revert },
380
+ { name: 'an LSP17 revert', error: lsp17NoExtensionError },
381
+ { name: 'an empty response', error: empty },
382
+ { name: 'a transport error', error: transport },
383
+ ];
384
+ const cases = statuses.flatMap((s) => errors.map((e) => ({
385
+ status: s.status,
386
+ bytecode: s.bytecode,
387
+ errorName: e.name,
388
+ error: e.error,
389
+ identity: s.identityOn.includes(e.name),
390
+ })));
391
+ for (const c of cases) {
392
+ it(`${c.identity ? 'reads identity' : 'rejects'} for ${c.errorName} from a ${c.status} implementation`, async () => {
393
+ const error = c.error();
394
+ const call = stubProxyProvider(c.bytecode, error);
395
+ if (c.identity) {
396
+ expect(await reader.fetchScale(randomAddress())).to.equal(undefined);
397
+ }
398
+ else {
399
+ await expect(reader.fetchScale(randomAddress())).to.be.rejectedWith(error.message);
400
+ }
401
+ expect(call.called).to.equal(true);
402
+ });
403
+ }
404
+ });
405
+ describe('forwarding implementations without the selector', () => {
406
+ const iface = new ethers.utils.Interface([
407
+ 'function scale() view returns (uint256)',
408
+ 'function feeHook() view returns (address)',
409
+ ]);
410
+ const FORWARDING_CODE = '0x6080604052f4deadbeef';
411
+ const feeHookAddress = ethers.utils.getAddress(randomAddress());
412
+ const scale = 10n ** 12n;
413
+ function stubForwarder(kind) {
414
+ const provider = multiProvider.getProvider(TestChainName.test1);
415
+ const impl = ethers.utils.getAddress(randomAddress());
416
+ const router = ethers.utils.getAddress(randomAddress());
417
+ const routerCode = kind === 'EIP-1167'
418
+ ? `0x363d3d373d3d3d363d73${impl.slice(2).toLowerCase()}5af43d82803e903d91602b57fd5bf3`
419
+ : '0x60';
420
+ sandbox
421
+ .stub(provider, 'getCode')
422
+ .callsFake(async (address) => (await address) === impl ? FORWARDING_CODE : routerCode);
423
+ sandbox
424
+ .stub(provider, 'getStorageAt')
425
+ .callsFake(async (address) => kind === 'EIP-1967' && (await address) === router
426
+ ? `0x${'00'.repeat(12)}${impl.slice(2).toLowerCase()}`
427
+ : `0x${'00'.repeat(32)}`);
428
+ sandbox.stub(reader, 'fetchPackageVersion').resolves('8.0.0');
429
+ return { call: sandbox.stub(provider, 'call'), router };
430
+ }
431
+ const kinds = ['EIP-1967', 'EIP-1167'];
432
+ const reverts = [
433
+ {
434
+ name: 'a code 3 revert with empty data',
435
+ error: () => ethersCallExceptionWithNestedError({
436
+ code: 3,
437
+ message: 'execution reverted',
438
+ data: '0x',
439
+ }),
440
+ },
441
+ { name: 'an LSP17 no-extension revert', error: lsp17NoExtensionError },
442
+ ];
443
+ for (const kind of kinds) {
444
+ it(`returns the feeHook() value of an ${kind} target`, async () => {
445
+ const { call, router } = stubForwarder(kind);
446
+ call.resolves(iface.encodeFunctionResult('feeHook', [feeHookAddress]));
447
+ expect(await reader.fetchFeeHook(router)).to.equal(feeHookAddress);
448
+ expect(call.called).to.equal(true);
449
+ });
450
+ it(`returns the scale() value of an ${kind} target`, async () => {
451
+ const { call, router } = stubForwarder(kind);
452
+ call.resolves(iface.encodeFunctionResult('scale', [scale]));
453
+ expect(await reader.fetchScale(router)).to.deep.equal({
454
+ numerator: scale,
455
+ denominator: 1n,
456
+ });
457
+ expect(call.called).to.equal(true);
458
+ });
459
+ for (const revert of reverts) {
460
+ it(`tolerates ${revert.name} from feeHook() of an ${kind} target`, async () => {
461
+ const { call, router } = stubForwarder(kind);
462
+ call.rejects(revert.error());
463
+ expect(await reader.fetchFeeHook(router)).to.equal(undefined);
464
+ expect(call.called).to.equal(true);
465
+ });
466
+ it(`tolerates ${revert.name} from scale() of an ${kind} target`, async () => {
467
+ const { call, router } = stubForwarder(kind);
468
+ call.rejects(revert.error());
469
+ expect(await reader.fetchScale(router)).to.equal(undefined);
470
+ expect(call.called).to.equal(true);
471
+ });
472
+ }
473
+ }
474
+ });
475
+ describe('deriveTokenType xERC20 probe', () => {
476
+ async function deriveWithXERC20Probe(probeError, wrappedTokenCode) {
477
+ const wrappedTokenSelector = HypERC20Collateral__factory.createInterface()
478
+ .getSighash('wrappedToken')
479
+ .slice(2);
480
+ const xerc20Selector = IXERC20__factory.createInterface()
481
+ .getSighash('mintingCurrentLimitOf(address)')
482
+ .slice(2);
483
+ const wrappedToken = randomAddress();
484
+ const provider = multiProvider.getProvider(TestChainName.test1);
485
+ sandbox
486
+ .stub(provider, 'getCode')
487
+ .callsFake(async (address) => (await address).toLowerCase() === wrappedToken.toLowerCase()
488
+ ? (wrappedTokenCode ?? `0x${xerc20Selector}`)
489
+ : `0x${wrappedTokenSelector}`);
490
+ sandbox.stub(provider, 'getStorageAt').resolves(`0x${'00'.repeat(32)}`);
491
+ sandbox.stub(HypERC20Collateral__factory, 'connect').returns({
492
+ wrappedToken: sandbox.stub().resolves(wrappedToken),
493
+ });
494
+ const probe = sandbox.stub();
495
+ if (probeError)
496
+ probe.rejects(probeError);
497
+ else
498
+ probe.resolves(42);
499
+ sandbox.stub(IXERC20__factory, 'connect').returns({
500
+ 'mintingCurrentLimitOf(address)': probe,
501
+ });
502
+ sandbox.stub(IFiatToken__factory, 'connect').returns({
503
+ callStatic: { mint: sandbox.stub().rejects(missingSelectorError()) },
504
+ });
505
+ sandbox.stub(EverclearTokenBridge__factory, 'connect').returns({
506
+ callStatic: {
507
+ everclearAdapter: sandbox.stub().rejects(missingSelectorError()),
508
+ },
509
+ });
510
+ sandbox.stub(CrossCollateralRouter__factory, 'connect').returns({
511
+ getCrossCollateralRouters: sandbox
512
+ .stub()
513
+ .rejects(missingSelectorError()),
514
+ });
515
+ return reader.deriveTokenType(randomAddress());
516
+ }
517
+ it('skips the probe when a legacy wrapped token lacks the xERC20 selector', async () => {
518
+ const invalidOpcodeError = Object.assign(new Error('missing revert data in call exception'), {
519
+ code: 'CALL_EXCEPTION',
520
+ data: '0x',
521
+ error: { code: -32003, message: 'EVM error: InvalidFEOpcode' },
522
+ });
523
+ expect(await deriveWithXERC20Probe(invalidOpcodeError, '0x6080604052deadbeef')).to.equal(TokenType.collateral);
524
+ });
525
+ it('probes an xERC20 behind an unresolved PUSH0 clone', async () => {
526
+ const implementation = randomAddress().slice(2).toLowerCase();
527
+ const push0Clone = `0x5f5f365f5f37365f73${implementation}5af43d5f5f3e6029573d5ffd5b3d5ff3`;
528
+ expect(await deriveWithXERC20Probe(undefined, push0Clone)).to.equal(TokenType.XERC20);
529
+ });
530
+ const fallThroughCases = [
531
+ { name: 'a panic revert', error: panicRevertError },
532
+ { name: 'a missing selector', error: missingSelectorError },
533
+ { name: 'an LSP17 no-extension revert', error: lsp17NoExtensionError },
534
+ ];
535
+ for (const c of fallThroughCases) {
536
+ it(`treats ${c.name} as not xERC20`, async () => {
537
+ expect(await deriveWithXERC20Probe(c.error())).to.equal(TokenType.collateral);
538
+ });
539
+ }
540
+ const surfacedCases = [
541
+ { name: 'an Error(string) revert', error: errorStringRevertError },
542
+ {
543
+ name: 'an unrecognised custom revert',
544
+ error: unrecognisedCustomRevertError,
545
+ },
546
+ ];
547
+ for (const c of surfacedCases) {
548
+ it(`rethrows ${c.name} from the xERC20 probe`, async () => {
549
+ const error = c.error();
550
+ let thrown;
551
+ try {
552
+ await deriveWithXERC20Probe(error);
553
+ }
554
+ catch (e) {
555
+ thrown = e;
556
+ }
557
+ expect(thrown).to.equal(error);
558
+ });
559
+ }
560
+ it('rethrows transient xERC20 probe failures', async () => {
561
+ const error = networkError();
562
+ let thrown;
563
+ try {
564
+ await deriveWithXERC20Probe(error);
565
+ }
566
+ catch (e) {
567
+ thrown = e;
568
+ }
569
+ expect(thrown).to.equal(error);
570
+ });
571
+ });
50
572
  describe('fetchXERC20Config', () => {
51
573
  // A mainnet router, one of the bridges its token holds limits for, and
52
574
  // that token. Real addresses so the checksummed casing below is the casing
@@ -198,7 +720,10 @@ describe('EvmWarpRouteReader', () => {
198
720
  const provider = multiProvider.getProvider(TestChainName.test1);
199
721
  sandbox
200
722
  .stub(provider, 'getStorageAt')
201
- .callsFake(async (_address, position) => {
723
+ .callsFake(async (address, position) => {
724
+ if ((await address) === IMPLEMENTATION) {
725
+ return ethers.utils.hexZeroPad('0x00', 32);
726
+ }
202
727
  const slot = await position;
203
728
  assert(slot === EIP1967_IMPLEMENTATION_SLOT, `Read storage slot ${slot}, which a UUPS proxy does not populate`);
204
729
  return ethers.utils.hexZeroPad(IMPLEMENTATION, 32);
@@ -1 +1 @@
1
- {"version":3,"file":"EvmWarpRouteReader.test.js","sourceRoot":"","sources":["../../src/token/EvmWarpRouteReader.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"EvmWarpRouteReader.test.js","sourceRoot":"","sources":["../../src/token/EvmWarpRouteReader.test.ts"],"names":[],"mappings":"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"}
@@ -9,7 +9,7 @@ export declare const WarpRouteDeployConfigSchemaErrors: {
9
9
  NO_SYNTHETIC_ONLY: string;
10
10
  };
11
11
  export declare const contractVersionMatchesDependency: (version: string) => boolean;
12
- export declare const VERSION_ERROR_MESSAGE = "Contract version must match the @hyperlane-xyz/core dependency version (12.1.0)";
12
+ export declare const VERSION_ERROR_MESSAGE = "Contract version must match the @hyperlane-xyz/core dependency version (12.2.0)";
13
13
  export declare const TokenMetadataSchema: z.ZodObject<{
14
14
  name: z.ZodString;
15
15
  symbol: z.ZodString;