@hyperlane-xyz/sdk 25.5.0 → 26.0.0

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 (184) hide show
  1. package/dist/app/MultiProtocolApp.d.ts +5 -1
  2. package/dist/app/MultiProtocolApp.d.ts.map +1 -1
  3. package/dist/app/MultiProtocolApp.js +6 -0
  4. package/dist/app/MultiProtocolApp.js.map +1 -1
  5. package/dist/app/MultiProtocolApp.test.js +2 -2
  6. package/dist/app/MultiProtocolApp.test.js.map +1 -1
  7. package/dist/consts/igp.d.ts.map +1 -1
  8. package/dist/consts/igp.js +2 -0
  9. package/dist/consts/igp.js.map +1 -1
  10. package/dist/contracts/contracts.d.ts.map +1 -1
  11. package/dist/contracts/contracts.js +13 -6
  12. package/dist/contracts/contracts.js.map +1 -1
  13. package/dist/core/EvmCoreModule.d.ts +1 -0
  14. package/dist/core/EvmCoreModule.d.ts.map +1 -1
  15. package/dist/core/EvmCoreModule.js +2 -1
  16. package/dist/core/EvmCoreModule.js.map +1 -1
  17. package/dist/core/MultiProtocolCore.d.ts.map +1 -1
  18. package/dist/core/MultiProtocolCore.js +2 -2
  19. package/dist/core/MultiProtocolCore.js.map +1 -1
  20. package/dist/core/adapters/EvmCoreAdapter.d.ts.map +1 -1
  21. package/dist/core/adapters/EvmCoreAdapter.js +2 -1
  22. package/dist/core/adapters/EvmCoreAdapter.js.map +1 -1
  23. package/dist/deploy/HyperlaneDeployer.d.ts.map +1 -1
  24. package/dist/deploy/HyperlaneDeployer.js +3 -4
  25. package/dist/deploy/HyperlaneDeployer.js.map +1 -1
  26. package/dist/deploy/warp.d.ts.map +1 -1
  27. package/dist/deploy/warp.js +4 -0
  28. package/dist/deploy/warp.js.map +1 -1
  29. package/dist/fee/EvmTokenFeeModule.d.ts +1 -0
  30. package/dist/fee/EvmTokenFeeModule.d.ts.map +1 -1
  31. package/dist/fee/EvmTokenFeeModule.js +2 -1
  32. package/dist/fee/EvmTokenFeeModule.js.map +1 -1
  33. package/dist/gas/utils.d.ts.map +1 -1
  34. package/dist/gas/utils.js +1 -0
  35. package/dist/gas/utils.js.map +1 -1
  36. package/dist/hook/EvmHookModule.d.ts +1 -0
  37. package/dist/hook/EvmHookModule.d.ts.map +1 -1
  38. package/dist/hook/EvmHookModule.js +2 -1
  39. package/dist/hook/EvmHookModule.js.map +1 -1
  40. package/dist/index.d.ts +2 -1
  41. package/dist/index.d.ts.map +1 -1
  42. package/dist/index.js +1 -1
  43. package/dist/index.js.map +1 -1
  44. package/dist/ism/EvmIsmModule.d.ts +1 -0
  45. package/dist/ism/EvmIsmModule.d.ts.map +1 -1
  46. package/dist/ism/EvmIsmModule.js +2 -1
  47. package/dist/ism/EvmIsmModule.js.map +1 -1
  48. package/dist/metadata/ChainMetadataManager.d.ts.map +1 -1
  49. package/dist/metadata/ChainMetadataManager.js +3 -3
  50. package/dist/metadata/ChainMetadataManager.js.map +1 -1
  51. package/dist/metadata/agentConfig.d.ts.map +1 -1
  52. package/dist/metadata/agentConfig.js +1 -0
  53. package/dist/metadata/agentConfig.js.map +1 -1
  54. package/dist/metadata/blockExplorer.js +2 -2
  55. package/dist/metadata/blockExplorer.js.map +1 -1
  56. package/dist/metadata/chainMetadataTypes.d.ts +0 -1
  57. package/dist/metadata/chainMetadataTypes.d.ts.map +1 -1
  58. package/dist/metadata/chainMetadataTypes.js +0 -1
  59. package/dist/metadata/chainMetadataTypes.js.map +1 -1
  60. package/dist/metadata/warpRouteConfig.d.ts +10 -8
  61. package/dist/metadata/warpRouteConfig.d.ts.map +1 -1
  62. package/dist/providers/MultiProtocolProvider.d.ts +2 -1
  63. package/dist/providers/MultiProtocolProvider.d.ts.map +1 -1
  64. package/dist/providers/MultiProtocolProvider.js +3 -0
  65. package/dist/providers/MultiProtocolProvider.js.map +1 -1
  66. package/dist/providers/MultiProvider.d.ts.map +1 -1
  67. package/dist/providers/MultiProvider.js +5 -5
  68. package/dist/providers/MultiProvider.js.map +1 -1
  69. package/dist/providers/ProviderType.d.ts +25 -5
  70. package/dist/providers/ProviderType.d.ts.map +1 -1
  71. package/dist/providers/ProviderType.js +2 -0
  72. package/dist/providers/ProviderType.js.map +1 -1
  73. package/dist/providers/explorerHealthTest.d.ts.map +1 -1
  74. package/dist/providers/explorerHealthTest.js +1 -0
  75. package/dist/providers/explorerHealthTest.js.map +1 -1
  76. package/dist/providers/providerBuilders.d.ts +2 -1
  77. package/dist/providers/providerBuilders.d.ts.map +1 -1
  78. package/dist/providers/providerBuilders.js +9 -0
  79. package/dist/providers/providerBuilders.js.map +1 -1
  80. package/dist/providers/rpcHealthTest.d.ts.map +1 -1
  81. package/dist/providers/rpcHealthTest.js +2 -0
  82. package/dist/providers/rpcHealthTest.js.map +1 -1
  83. package/dist/providers/transactionFeeEstimators.d.ts +4 -3
  84. package/dist/providers/transactionFeeEstimators.d.ts.map +1 -1
  85. package/dist/providers/transactionFeeEstimators.js +19 -6
  86. package/dist/providers/transactionFeeEstimators.js.map +1 -1
  87. package/dist/providers/transactions/submitter/submitterBuilderGetter.d.ts.map +1 -1
  88. package/dist/providers/transactions/submitter/submitterBuilderGetter.js +1 -0
  89. package/dist/providers/transactions/submitter/submitterBuilderGetter.js.map +1 -1
  90. package/dist/router/MultiProtocolRouterApps.d.ts.map +1 -1
  91. package/dist/router/MultiProtocolRouterApps.js +3 -3
  92. package/dist/router/MultiProtocolRouterApps.js.map +1 -1
  93. package/dist/signers/cosmos/cosmjs.d.ts +2 -1
  94. package/dist/signers/cosmos/cosmjs.d.ts.map +1 -1
  95. package/dist/signers/cosmos/cosmjs.js +1 -1
  96. package/dist/signers/cosmos/cosmjs.js.map +1 -1
  97. package/dist/signers/evm/ethersv5.d.ts +2 -1
  98. package/dist/signers/evm/ethersv5.d.ts.map +1 -1
  99. package/dist/signers/evm/ethersv5.js +5 -5
  100. package/dist/signers/evm/ethersv5.js.map +1 -1
  101. package/dist/signers/radix/radix-toolkit.d.ts +2 -1
  102. package/dist/signers/radix/radix-toolkit.d.ts.map +1 -1
  103. package/dist/signers/radix/radix-toolkit.js +1 -1
  104. package/dist/signers/radix/radix-toolkit.js.map +1 -1
  105. package/dist/signers/signers.d.ts.map +1 -1
  106. package/dist/signers/signers.js +1 -0
  107. package/dist/signers/signers.js.map +1 -1
  108. package/dist/signers/starknet/starknetjs.d.ts +2 -1
  109. package/dist/signers/starknet/starknetjs.d.ts.map +1 -1
  110. package/dist/signers/starknet/starknetjs.js +1 -1
  111. package/dist/signers/starknet/starknetjs.js.map +1 -1
  112. package/dist/signers/svm/solana-web3js.d.ts +2 -1
  113. package/dist/signers/svm/solana-web3js.d.ts.map +1 -1
  114. package/dist/signers/svm/solana-web3js.js +1 -1
  115. package/dist/signers/svm/solana-web3js.js.map +1 -1
  116. package/dist/signers/types.d.ts +2 -1
  117. package/dist/signers/types.d.ts.map +1 -1
  118. package/dist/token/EvmWarpModule.d.ts +9 -0
  119. package/dist/token/EvmWarpModule.d.ts.map +1 -1
  120. package/dist/token/EvmWarpModule.hardhat-test.js +56 -1
  121. package/dist/token/EvmWarpModule.hardhat-test.js.map +1 -1
  122. package/dist/token/EvmWarpModule.js +92 -3
  123. package/dist/token/EvmWarpModule.js.map +1 -1
  124. package/dist/token/EvmWarpRouteReader.d.ts +4 -0
  125. package/dist/token/EvmWarpRouteReader.d.ts.map +1 -1
  126. package/dist/token/EvmWarpRouteReader.hardhat-test.js +56 -0
  127. package/dist/token/EvmWarpRouteReader.hardhat-test.js.map +1 -1
  128. package/dist/token/EvmWarpRouteReader.js +41 -0
  129. package/dist/token/EvmWarpRouteReader.js.map +1 -1
  130. package/dist/token/IToken.d.ts +1 -0
  131. package/dist/token/IToken.d.ts.map +1 -1
  132. package/dist/token/Token.d.ts +1 -0
  133. package/dist/token/Token.d.ts.map +1 -1
  134. package/dist/token/Token.js +36 -13
  135. package/dist/token/Token.js.map +1 -1
  136. package/dist/token/Token.test.js +19 -0
  137. package/dist/token/Token.test.js.map +1 -1
  138. package/dist/token/TokenStandard.d.ts +21 -1
  139. package/dist/token/TokenStandard.d.ts.map +1 -1
  140. package/dist/token/TokenStandard.js +98 -0
  141. package/dist/token/TokenStandard.js.map +1 -1
  142. package/dist/token/adapters/EvmMultiCollateralAdapter.d.ts +45 -0
  143. package/dist/token/adapters/EvmMultiCollateralAdapter.d.ts.map +1 -0
  144. package/dist/token/adapters/EvmMultiCollateralAdapter.js +66 -0
  145. package/dist/token/adapters/EvmMultiCollateralAdapter.js.map +1 -0
  146. package/dist/token/adapters/EvmMultiCollateralAdapter.test.d.ts +2 -0
  147. package/dist/token/adapters/EvmMultiCollateralAdapter.test.d.ts.map +1 -0
  148. package/dist/token/adapters/EvmMultiCollateralAdapter.test.js +147 -0
  149. package/dist/token/adapters/EvmMultiCollateralAdapter.test.js.map +1 -0
  150. package/dist/token/adapters/EvmTokenAdapter.d.ts.map +1 -1
  151. package/dist/token/adapters/EvmTokenAdapter.js +24 -22
  152. package/dist/token/adapters/EvmTokenAdapter.js.map +1 -1
  153. package/dist/token/config.d.ts +2 -0
  154. package/dist/token/config.d.ts.map +1 -1
  155. package/dist/token/config.js +3 -0
  156. package/dist/token/config.js.map +1 -1
  157. package/dist/token/configUtils.d.ts.map +1 -1
  158. package/dist/token/configUtils.js +5 -3
  159. package/dist/token/configUtils.js.map +1 -1
  160. package/dist/token/contracts.d.ts +3 -0
  161. package/dist/token/contracts.d.ts.map +1 -1
  162. package/dist/token/contracts.js +3 -0
  163. package/dist/token/contracts.js.map +1 -1
  164. package/dist/token/deploy.d.ts +1 -0
  165. package/dist/token/deploy.d.ts.map +1 -1
  166. package/dist/token/deploy.js +36 -5
  167. package/dist/token/deploy.js.map +1 -1
  168. package/dist/token/nativeTokenMetadata.d.ts.map +1 -1
  169. package/dist/token/nativeTokenMetadata.js +6 -0
  170. package/dist/token/nativeTokenMetadata.js.map +1 -1
  171. package/dist/token/tokenMetadataUtils.d.ts.map +1 -1
  172. package/dist/token/tokenMetadataUtils.js +4 -3
  173. package/dist/token/tokenMetadataUtils.js.map +1 -1
  174. package/dist/token/types.d.ts +1268 -94
  175. package/dist/token/types.d.ts.map +1 -1
  176. package/dist/token/types.js +18 -1
  177. package/dist/token/types.js.map +1 -1
  178. package/dist/warp/WarpCore.d.ts +53 -12
  179. package/dist/warp/WarpCore.d.ts.map +1 -1
  180. package/dist/warp/WarpCore.js +262 -57
  181. package/dist/warp/WarpCore.js.map +1 -1
  182. package/dist/warp/WarpCore.test.js +422 -0
  183. package/dist/warp/WarpCore.test.js.map +1 -1
  184. package/package.json +12 -11
@@ -1 +1 @@
1
- {"version":3,"file":"WarpCore.js","sourceRoot":"","sources":["../../src/warp/WarpCore.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"WarpCore.js","sourceRoot":"","sources":["../../src/warp/WarpCore.ts"],"names":[],"mappings":"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"}
@@ -247,9 +247,431 @@ describe('WarpCore', () => {
247
247
  sender: MOCK_ADDRESS,
248
248
  });
249
249
  expect(Object.values(invalidCollateralXERC20LockboxToken || {})[0]).to.equal('Insufficient collateral on destination');
250
+ balanceStubs.forEach((s) => {
251
+ s.restore();
252
+ });
253
+ quoteStubs.forEach((s) => {
254
+ s.restore();
255
+ });
256
+ });
257
+ it('Validates destination token routing', async () => {
258
+ const balanceStubs = warpCore.tokens.map((t) => sinon.stub(t, 'getBalance').resolves({ amount: MOCK_BALANCE }));
259
+ const minimumTransferAmount = 10n;
260
+ const quoteStubs = warpCore.tokens.map((t) => sinon.stub(t, 'getHypAdapter').returns({
261
+ quoteTransferRemoteGas: () => Promise.resolve({ igpQuote: MOCK_INTERCHAIN_QUOTE }),
262
+ isApproveRequired: () => Promise.resolve(false),
263
+ populateTransferRemoteTx: () => Promise.resolve({}),
264
+ getMinimumTransferAmount: () => Promise.resolve(minimumTransferAmount),
265
+ getBalance: () => Promise.resolve(MOCK_BALANCE),
266
+ getBridgedSupply: () => Promise.resolve(MOCK_BALANCE),
267
+ getMintLimit: () => Promise.resolve(MEDIUM_MOCK_BALANCE),
268
+ getMintMaxLimit: () => Promise.resolve(MEDIUM_MOCK_BALANCE),
269
+ isRevokeApprovalRequired: () => Promise.resolve(false),
270
+ }));
271
+ const invalidDestinationToken = await warpCore.validateTransfer({
272
+ originTokenAmount: evmHypNative.amount(TRANSFER_AMOUNT),
273
+ destination: test2.name,
274
+ recipient: MOCK_ADDRESS,
275
+ sender: MOCK_ADDRESS,
276
+ destinationToken: evmHypCollateralFiat,
277
+ });
278
+ expect(Object.values(invalidDestinationToken || {})[0]).to.equal(`Destination token chain mismatch for ${test2.name}`);
279
+ const validDestinationToken = await warpCore.validateTransfer({
280
+ originTokenAmount: evmHypNative.amount(TRANSFER_AMOUNT),
281
+ destination: test2.name,
282
+ recipient: MOCK_ADDRESS,
283
+ sender: MOCK_ADDRESS,
284
+ destinationToken: evmHypSynthetic,
285
+ });
286
+ expect(validDestinationToken).to.be.null;
287
+ balanceStubs.forEach((s) => {
288
+ s.restore();
289
+ });
290
+ quoteStubs.forEach((s) => {
291
+ s.restore();
292
+ });
293
+ });
294
+ it('Requires explicit destination token for ambiguous routes', async () => {
295
+ const ambiguousConfig = yamlParse(fs.readFileSync('./src/warp/test-warp-core-config.yaml', 'utf-8'));
296
+ const extraTest2Address = '0x9876543210987654321098765432109876543219';
297
+ const test1Token = ambiguousConfig.tokens.find((token) => token.chainName === test1.name &&
298
+ token.addressOrDenom === evmHypNative.addressOrDenom);
299
+ test1Token.connections.push({
300
+ token: `ethereum|${test2.name}|${extraTest2Address}`,
301
+ });
302
+ ambiguousConfig.tokens.push({
303
+ chainName: test2.name,
304
+ standard: TokenStandard.EvmHypSynthetic,
305
+ decimals: 18,
306
+ symbol: 'ETH2',
307
+ name: 'Ether 2',
308
+ addressOrDenom: extraTest2Address,
309
+ connections: [
310
+ {
311
+ token: `ethereum|${test1.name}|${evmHypNative.addressOrDenom}`,
312
+ },
313
+ ],
314
+ });
315
+ const ambiguousWarpCore = WarpCore.FromConfig(multiProvider, ambiguousConfig);
316
+ const ambiguousOrigin = ambiguousWarpCore.findToken(test1.name, evmHypNative.addressOrDenom);
317
+ const extraDestination = ambiguousWarpCore.findToken(test2.name, extraTest2Address);
318
+ expect(ambiguousOrigin).to.not.be.null;
319
+ expect(extraDestination).to.not.be.null;
320
+ const balanceStubs = ambiguousWarpCore.tokens.map((t) => sinon.stub(t, 'getBalance').resolves({ amount: MOCK_BALANCE }));
321
+ const minimumTransferAmount = 10n;
322
+ const quoteStubs = ambiguousWarpCore.tokens.map((t) => sinon.stub(t, 'getHypAdapter').returns({
323
+ quoteTransferRemoteGas: () => Promise.resolve({ igpQuote: MOCK_INTERCHAIN_QUOTE }),
324
+ isApproveRequired: () => Promise.resolve(false),
325
+ populateTransferRemoteTx: () => Promise.resolve({}),
326
+ getMinimumTransferAmount: () => Promise.resolve(minimumTransferAmount),
327
+ getBalance: () => Promise.resolve(MOCK_BALANCE),
328
+ getBridgedSupply: () => Promise.resolve(MOCK_BALANCE),
329
+ getMintLimit: () => Promise.resolve(MEDIUM_MOCK_BALANCE),
330
+ getMintMaxLimit: () => Promise.resolve(MEDIUM_MOCK_BALANCE),
331
+ isRevokeApprovalRequired: () => Promise.resolve(false),
332
+ }));
333
+ const ambiguousValidation = await ambiguousWarpCore.validateTransfer({
334
+ originTokenAmount: ambiguousOrigin.amount(TRANSFER_AMOUNT),
335
+ destination: test2.name,
336
+ recipient: MOCK_ADDRESS,
337
+ sender: MOCK_ADDRESS,
338
+ });
339
+ expect(Object.values(ambiguousValidation || {})[0]).to.equal(`Ambiguous route to ${test2.name}; specify destination token`);
340
+ const explicitValidation = await ambiguousWarpCore.validateTransfer({
341
+ originTokenAmount: ambiguousOrigin.amount(TRANSFER_AMOUNT),
342
+ destination: test2.name,
343
+ recipient: MOCK_ADDRESS,
344
+ sender: MOCK_ADDRESS,
345
+ destinationToken: extraDestination,
346
+ });
347
+ expect(explicitValidation).to.be.null;
250
348
  balanceStubs.forEach((s) => s.restore());
251
349
  quoteStubs.forEach((s) => s.restore());
252
350
  });
351
+ it('Includes token fee in MultiCollateral approval debit', async () => {
352
+ const tokenFeeAmount = 123n;
353
+ const originalCollateralAddress = evmHypNative.collateralAddressOrDenom;
354
+ evmHypNative.collateralAddressOrDenom =
355
+ evmHypNative.addressOrDenom;
356
+ const originMultiStub = sinon
357
+ .stub(evmHypNative, 'isMultiCollateralToken')
358
+ .returns(true);
359
+ const destinationMultiStub = sinon
360
+ .stub(evmHypSynthetic, 'isMultiCollateralToken')
361
+ .returns(true);
362
+ const quoteTransferRemoteToGas = sinon.stub().resolves({
363
+ igpQuote: { amount: 1n },
364
+ tokenFeeQuote: {
365
+ addressOrDenom: evmHypNative.addressOrDenom,
366
+ amount: tokenFeeAmount,
367
+ },
368
+ });
369
+ const isApproveRequired = sinon.stub().resolves(true);
370
+ const populateApproveTx = sinon.stub().resolves({});
371
+ const populateTransferRemoteToTx = sinon.stub().resolves({});
372
+ const adapterStub = sinon.stub(evmHypNative, 'getHypAdapter').returns({
373
+ quoteTransferRemoteToGas,
374
+ isApproveRequired,
375
+ populateApproveTx,
376
+ populateTransferRemoteToTx,
377
+ isRevokeApprovalRequired: () => Promise.resolve(false),
378
+ });
379
+ try {
380
+ const result = await warpCore.getTransferRemoteTxs({
381
+ originTokenAmount: evmHypNative.amount(TRANSFER_AMOUNT),
382
+ destination: test2.name,
383
+ sender: MOCK_ADDRESS,
384
+ recipient: MOCK_ADDRESS,
385
+ destinationToken: evmHypSynthetic,
386
+ });
387
+ expect(result.length).to.equal(2);
388
+ sinon.assert.calledWithExactly(isApproveRequired, MOCK_ADDRESS, evmHypNative.addressOrDenom, TRANSFER_AMOUNT + tokenFeeAmount);
389
+ sinon.assert.calledWithMatch(populateApproveTx, {
390
+ weiAmountOrId: TRANSFER_AMOUNT + tokenFeeAmount,
391
+ recipient: evmHypNative.addressOrDenom,
392
+ });
393
+ }
394
+ finally {
395
+ adapterStub.restore();
396
+ originMultiStub.restore();
397
+ destinationMultiStub.restore();
398
+ evmHypNative.collateralAddressOrDenom =
399
+ originalCollateralAddress;
400
+ }
401
+ });
402
+ it('Rejects MultiCollateral transfer tx generation when IGP fee denom is non-native', async () => {
403
+ const originalCollateralAddress = evmHypNative.collateralAddressOrDenom;
404
+ evmHypNative.collateralAddressOrDenom =
405
+ evmHypNative.addressOrDenom;
406
+ const originMultiStub = sinon
407
+ .stub(evmHypNative, 'isMultiCollateralToken')
408
+ .returns(true);
409
+ const destinationMultiStub = sinon
410
+ .stub(evmHypSynthetic, 'isMultiCollateralToken')
411
+ .returns(true);
412
+ const adapterStub = sinon.stub(evmHypNative, 'getHypAdapter').returns({
413
+ quoteTransferRemoteToGas: sinon.stub().resolves({
414
+ igpQuote: {
415
+ amount: 1n,
416
+ addressOrDenom: evmHypNative.addressOrDenom,
417
+ },
418
+ tokenFeeQuote: {
419
+ addressOrDenom: evmHypNative.addressOrDenom,
420
+ amount: 0n,
421
+ },
422
+ }),
423
+ isApproveRequired: sinon.stub().resolves(false),
424
+ isRevokeApprovalRequired: sinon.stub().resolves(false),
425
+ populateTransferRemoteToTx: sinon.stub().resolves({}),
426
+ });
427
+ try {
428
+ let thrown;
429
+ try {
430
+ await warpCore.getTransferRemoteTxs({
431
+ originTokenAmount: evmHypNative.amount(TRANSFER_AMOUNT),
432
+ destination: test2.name,
433
+ sender: MOCK_ADDRESS,
434
+ recipient: MOCK_ADDRESS,
435
+ destinationToken: evmHypSynthetic,
436
+ });
437
+ }
438
+ catch (error) {
439
+ thrown = error;
440
+ }
441
+ expect(thrown).to.not.equal(undefined);
442
+ expect(thrown.message).to.contain('MultiCollateral transferRemoteTo requires native IGP fee');
443
+ }
444
+ finally {
445
+ adapterStub.restore();
446
+ originMultiStub.restore();
447
+ destinationMultiStub.restore();
448
+ evmHypNative.collateralAddressOrDenom =
449
+ originalCollateralAddress;
450
+ }
451
+ });
452
+ it('Checks destination collateral for MultiCollateral route using explicit destination token', async () => {
453
+ const originMultiStub = sinon
454
+ .stub(evmHypNative, 'isMultiCollateralToken')
455
+ .returns(true);
456
+ const destinationMultiStub = sinon
457
+ .stub(cwHypCollateral, 'isMultiCollateralToken')
458
+ .returns(true);
459
+ const destinationAdapterStub = sinon
460
+ .stub(cwHypCollateral, 'getAdapter')
461
+ .returns({
462
+ getBalance: sinon.stub().resolves(10n),
463
+ });
464
+ try {
465
+ const smallResult = await warpCore.isDestinationCollateralSufficient({
466
+ originTokenAmount: evmHypNative.amount(9n),
467
+ destination: cwHypCollateral.chainName,
468
+ destinationToken: cwHypCollateral,
469
+ });
470
+ expect(smallResult).to.equal(true);
471
+ const bigResult = await warpCore.isDestinationCollateralSufficient({
472
+ originTokenAmount: evmHypNative.amount(11n),
473
+ destination: cwHypCollateral.chainName,
474
+ destinationToken: cwHypCollateral,
475
+ });
476
+ expect(bigResult).to.equal(false);
477
+ }
478
+ finally {
479
+ destinationAdapterStub.restore();
480
+ originMultiStub.restore();
481
+ destinationMultiStub.restore();
482
+ }
483
+ });
484
+ it('Adds revoke before approval for MultiCollateral when allowance must be reset', async () => {
485
+ const tokenFeeAmount = 123n;
486
+ const originalCollateralAddress = evmHypNative.collateralAddressOrDenom;
487
+ evmHypNative.collateralAddressOrDenom =
488
+ evmHypNative.addressOrDenom;
489
+ const originMultiStub = sinon
490
+ .stub(evmHypNative, 'isMultiCollateralToken')
491
+ .returns(true);
492
+ const destinationMultiStub = sinon
493
+ .stub(evmHypSynthetic, 'isMultiCollateralToken')
494
+ .returns(true);
495
+ const quoteTransferRemoteToGas = sinon.stub().resolves({
496
+ igpQuote: { amount: 1n },
497
+ tokenFeeQuote: {
498
+ addressOrDenom: evmHypNative.addressOrDenom,
499
+ amount: tokenFeeAmount,
500
+ },
501
+ });
502
+ const isApproveRequired = sinon.stub().resolves(true);
503
+ const isRevokeApprovalRequired = sinon.stub().resolves(true);
504
+ const populateApproveTx = sinon.stub().resolves({});
505
+ const populateTransferRemoteToTx = sinon.stub().resolves({});
506
+ const adapterStub = sinon.stub(evmHypNative, 'getHypAdapter').returns({
507
+ quoteTransferRemoteToGas,
508
+ isApproveRequired,
509
+ isRevokeApprovalRequired,
510
+ populateApproveTx,
511
+ populateTransferRemoteToTx,
512
+ });
513
+ try {
514
+ const result = await warpCore.getTransferRemoteTxs({
515
+ originTokenAmount: evmHypNative.amount(TRANSFER_AMOUNT),
516
+ destination: test2.name,
517
+ sender: MOCK_ADDRESS,
518
+ recipient: MOCK_ADDRESS,
519
+ destinationToken: evmHypSynthetic,
520
+ });
521
+ expect(result.length).to.equal(3);
522
+ expect(result[0].category).to.equal(WarpTxCategory.Revoke);
523
+ expect(result[1].category).to.equal(WarpTxCategory.Approval);
524
+ expect(result[2].category).to.equal(WarpTxCategory.Transfer);
525
+ sinon.assert.calledWithMatch(populateApproveTx.firstCall, {
526
+ weiAmountOrId: 0,
527
+ });
528
+ sinon.assert.calledWithMatch(populateApproveTx.secondCall, {
529
+ weiAmountOrId: TRANSFER_AMOUNT + tokenFeeAmount,
530
+ });
531
+ }
532
+ finally {
533
+ adapterStub.restore();
534
+ originMultiStub.restore();
535
+ destinationMultiStub.restore();
536
+ evmHypNative.collateralAddressOrDenom =
537
+ originalCollateralAddress;
538
+ }
539
+ });
540
+ it('Uses destination router-aware quote for MultiCollateral fees', async () => {
541
+ const originMultiStub = sinon
542
+ .stub(evmHypNative, 'isMultiCollateralToken')
543
+ .returns(true);
544
+ const destinationMultiStub = sinon
545
+ .stub(evmHypSynthetic, 'isMultiCollateralToken')
546
+ .returns(true);
547
+ const quoteTransferRemoteToGas = sinon.stub().resolves({
548
+ igpQuote: { amount: 42n },
549
+ tokenFeeQuote: {
550
+ addressOrDenom: evmHypNative.addressOrDenom,
551
+ amount: 11n,
552
+ },
553
+ });
554
+ const adapterStub = sinon.stub(evmHypNative, 'getHypAdapter').returns({
555
+ quoteTransferRemoteToGas,
556
+ });
557
+ try {
558
+ const quote = await warpCore.getInterchainTransferFee({
559
+ originTokenAmount: evmHypNative.amount(TRANSFER_AMOUNT),
560
+ destination: test2.name,
561
+ sender: MOCK_ADDRESS,
562
+ recipient: MOCK_ADDRESS,
563
+ destinationToken: evmHypSynthetic,
564
+ });
565
+ expect(quote.igpQuote.amount).to.equal(42n);
566
+ expect(quote.tokenFeeQuote?.amount).to.equal(11n);
567
+ sinon.assert.calledWithMatch(quoteTransferRemoteToGas, {
568
+ destination: test2.domainId,
569
+ recipient: MOCK_ADDRESS,
570
+ amount: TRANSFER_AMOUNT,
571
+ targetRouter: evmHypSynthetic.addressOrDenom,
572
+ });
573
+ }
574
+ finally {
575
+ adapterStub.restore();
576
+ originMultiStub.restore();
577
+ destinationMultiStub.restore();
578
+ }
579
+ });
580
+ it('uses quoted interchain fee token for MultiCollateral estimateTransferRemoteFees', async () => {
581
+ const originMultiStub = sinon
582
+ .stub(evmHypNative, 'isMultiCollateralToken')
583
+ .returns(true);
584
+ const destinationMultiStub = sinon
585
+ .stub(evmHypSynthetic, 'isMultiCollateralToken')
586
+ .returns(true);
587
+ const quoteTransferRemoteToGas = sinon.stub().resolves({
588
+ igpQuote: {
589
+ amount: 42n,
590
+ addressOrDenom: evmHypNative.addressOrDenom,
591
+ },
592
+ });
593
+ const adapterStub = sinon.stub(evmHypNative, 'getHypAdapter').returns({
594
+ quoteTransferRemoteToGas,
595
+ });
596
+ const localFeeAmountStub = sinon
597
+ .stub(warpCore, 'getLocalTransferFeeAmount')
598
+ .resolves(evmHypNative.amount(7n));
599
+ try {
600
+ const quote = await warpCore.estimateTransferRemoteFees({
601
+ originTokenAmount: evmHypNative.amount(TRANSFER_AMOUNT),
602
+ destination: test2.name,
603
+ sender: MOCK_ADDRESS,
604
+ recipient: MOCK_ADDRESS,
605
+ destinationToken: evmHypSynthetic,
606
+ });
607
+ expect(quote.interchainQuote.amount).to.equal(42n);
608
+ expect(quote.interchainQuote.token.addressOrDenom).to.equal(evmHypNative.addressOrDenom);
609
+ expect(quote.localQuote.amount).to.equal(7n);
610
+ }
611
+ finally {
612
+ localFeeAmountStub.restore();
613
+ adapterStub.restore();
614
+ destinationMultiStub.restore();
615
+ originMultiStub.restore();
616
+ }
617
+ });
618
+ it('Rejects non-connected destination token for MultiCollateral fee quote', async () => {
619
+ const originMultiStub = sinon
620
+ .stub(evmHypNative, 'isMultiCollateralToken')
621
+ .returns(true);
622
+ const quoteTransferRemoteToGas = sinon.stub().resolves({
623
+ igpQuote: { amount: 42n },
624
+ });
625
+ const adapterStub = sinon.stub(evmHypNative, 'getHypAdapter').returns({
626
+ quoteTransferRemoteToGas,
627
+ });
628
+ const invalidDestinationToken = new Token({
629
+ ...evmHypSynthetic,
630
+ addressOrDenom: '0x9999999999999999999999999999999999999999',
631
+ });
632
+ const invalidDestinationMultiStub = sinon
633
+ .stub(invalidDestinationToken, 'isMultiCollateralToken')
634
+ .returns(true);
635
+ try {
636
+ let error;
637
+ try {
638
+ await warpCore.getInterchainTransferFee({
639
+ originTokenAmount: evmHypNative.amount(TRANSFER_AMOUNT),
640
+ destination: test2.name,
641
+ sender: MOCK_ADDRESS,
642
+ recipient: MOCK_ADDRESS,
643
+ destinationToken: invalidDestinationToken,
644
+ });
645
+ }
646
+ catch (e) {
647
+ error = e;
648
+ }
649
+ expect(error).to.exist;
650
+ expect(error.message).to.contain('is not connected');
651
+ expect(quoteTransferRemoteToGas.called).to.equal(false);
652
+ }
653
+ finally {
654
+ invalidDestinationMultiStub.restore();
655
+ adapterStub.restore();
656
+ originMultiStub.restore();
657
+ }
658
+ });
659
+ it('Converts destination minimum transfer amount into origin decimals correctly', async () => {
660
+ const destinationAdapterStub = sinon
661
+ .stub(sealevelHypSynthetic, 'getAdapter')
662
+ .returns({
663
+ getMinimumTransferAmount: () => Promise.resolve(1000000000n),
664
+ });
665
+ try {
666
+ const belowMinimum = await warpCore.validateAmount(evmHypNative.amount(500000000000000000n), testSealevelChain.name, MOCK_ADDRESS, sealevelHypSynthetic);
667
+ expect(belowMinimum?.amount).to.contain('Minimum transfer amount');
668
+ const atMinimum = await warpCore.validateAmount(evmHypNative.amount(1000000000000000000n), testSealevelChain.name, MOCK_ADDRESS, sealevelHypSynthetic);
669
+ expect(atMinimum).to.be.null;
670
+ }
671
+ finally {
672
+ destinationAdapterStub.restore();
673
+ }
674
+ });
253
675
  it('Gets transfer remote txs', async () => {
254
676
  const coreStub = sinon
255
677
  .stub(warpCore, 'isApproveRequired')