@hyperlane-xyz/sdk 3.8.0-beta0 → 3.8.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 (111) hide show
  1. package/dist/consts/chainMetadata.d.ts +0 -5
  2. package/dist/consts/chainMetadata.d.ts.map +1 -1
  3. package/dist/consts/chainMetadata.js +6 -121
  4. package/dist/consts/chainMetadata.js.map +1 -1
  5. package/dist/consts/chains.d.ts +0 -5
  6. package/dist/consts/chains.d.ts.map +1 -1
  7. package/dist/consts/chains.js +0 -10
  8. package/dist/consts/chains.js.map +1 -1
  9. package/dist/consts/environments/index.d.ts +1 -73
  10. package/dist/consts/environments/index.d.ts.map +1 -1
  11. package/dist/consts/environments/testnet.json +0 -72
  12. package/dist/consts/multisigIsm.d.ts.map +1 -1
  13. package/dist/consts/multisigIsm.js +4 -44
  14. package/dist/consts/multisigIsm.js.map +1 -1
  15. package/dist/core/MultiProtocolCore.d.ts +5 -1
  16. package/dist/core/MultiProtocolCore.d.ts.map +1 -1
  17. package/dist/core/MultiProtocolCore.js +3 -0
  18. package/dist/core/MultiProtocolCore.js.map +1 -1
  19. package/dist/core/adapters/CosmWasmCoreAdapter.d.ts.map +1 -1
  20. package/dist/core/adapters/CosmWasmCoreAdapter.js +20 -2
  21. package/dist/core/adapters/CosmWasmCoreAdapter.js.map +1 -1
  22. package/dist/core/adapters/CosmWasmCoreAdapter.test.d.ts +2 -0
  23. package/dist/core/adapters/CosmWasmCoreAdapter.test.d.ts.map +1 -0
  24. package/dist/core/adapters/CosmWasmCoreAdapter.test.js +25 -0
  25. package/dist/core/adapters/CosmWasmCoreAdapter.test.js.map +1 -0
  26. package/dist/core/adapters/SealevelCoreAdapter.d.ts.map +1 -1
  27. package/dist/core/adapters/SealevelCoreAdapter.js +0 -2
  28. package/dist/core/adapters/SealevelCoreAdapter.js.map +1 -1
  29. package/dist/deploy/HyperlaneDeployer.d.ts +1 -1
  30. package/dist/deploy/HyperlaneDeployer.d.ts.map +1 -1
  31. package/dist/deploy/HyperlaneDeployer.js.map +1 -1
  32. package/dist/deploy/verify/ContractVerifier.d.ts.map +1 -1
  33. package/dist/deploy/verify/ContractVerifier.js +6 -0
  34. package/dist/deploy/verify/ContractVerifier.js.map +1 -1
  35. package/dist/hook/HyperlaneHookDeployer.d.ts.map +1 -1
  36. package/dist/hook/HyperlaneHookDeployer.js +7 -5
  37. package/dist/hook/HyperlaneHookDeployer.js.map +1 -1
  38. package/dist/index.d.ts +6 -5
  39. package/dist/index.d.ts.map +1 -1
  40. package/dist/index.js +10 -4
  41. package/dist/index.js.map +1 -1
  42. package/dist/ism/HyperlaneIsmFactory.d.ts.map +1 -1
  43. package/dist/ism/HyperlaneIsmFactory.js +8 -2
  44. package/dist/ism/HyperlaneIsmFactory.js.map +1 -1
  45. package/dist/metadata/agentConfig.d.ts +82 -41
  46. package/dist/metadata/agentConfig.d.ts.map +1 -1
  47. package/dist/metadata/chainMetadata.test.js +1 -1
  48. package/dist/metadata/chainMetadata.test.js.map +1 -1
  49. package/dist/metadata/chainMetadataTypes.d.ts +36 -16
  50. package/dist/metadata/chainMetadataTypes.d.ts.map +1 -1
  51. package/dist/metadata/chainMetadataTypes.js +11 -2
  52. package/dist/metadata/chainMetadataTypes.js.map +1 -1
  53. package/dist/middleware/account/accounts.hardhat-test.js +1 -1
  54. package/dist/middleware/account/accounts.hardhat-test.js.map +1 -1
  55. package/dist/providers/MultiProtocolProvider.d.ts +9 -1
  56. package/dist/providers/MultiProtocolProvider.d.ts.map +1 -1
  57. package/dist/providers/MultiProtocolProvider.js +12 -0
  58. package/dist/providers/MultiProtocolProvider.js.map +1 -1
  59. package/dist/providers/SmartProvider/SmartProvider.test.js +10 -10
  60. package/dist/providers/SmartProvider/SmartProvider.test.js.map +1 -1
  61. package/dist/providers/transactionFeeEstimators.d.ts +50 -0
  62. package/dist/providers/transactionFeeEstimators.d.ts.map +1 -0
  63. package/dist/providers/transactionFeeEstimators.js +169 -0
  64. package/dist/providers/transactionFeeEstimators.js.map +1 -0
  65. package/dist/token/IToken.d.ts +2 -2
  66. package/dist/token/IToken.d.ts.map +1 -1
  67. package/dist/token/Token.d.ts +11 -7
  68. package/dist/token/Token.d.ts.map +1 -1
  69. package/dist/token/Token.js +29 -12
  70. package/dist/token/Token.js.map +1 -1
  71. package/dist/token/Token.test.js +5 -5
  72. package/dist/token/Token.test.js.map +1 -1
  73. package/dist/token/TokenConnection.d.ts +7 -1
  74. package/dist/token/TokenConnection.d.ts.map +1 -1
  75. package/dist/token/TokenConnection.js +14 -1
  76. package/dist/token/TokenConnection.js.map +1 -1
  77. package/dist/token/TokenStandard.d.ts +2 -0
  78. package/dist/token/TokenStandard.d.ts.map +1 -1
  79. package/dist/token/TokenStandard.js +11 -1
  80. package/dist/token/TokenStandard.js.map +1 -1
  81. package/dist/token/adapters/CosmWasmTokenAdapter.d.ts +2 -2
  82. package/dist/token/adapters/CosmWasmTokenAdapter.d.ts.map +1 -1
  83. package/dist/token/adapters/CosmWasmTokenAdapter.js +6 -6
  84. package/dist/token/adapters/CosmWasmTokenAdapter.js.map +1 -1
  85. package/dist/token/adapters/CosmosTokenAdapter.d.ts +2 -2
  86. package/dist/token/adapters/CosmosTokenAdapter.d.ts.map +1 -1
  87. package/dist/token/adapters/CosmosTokenAdapter.js +2 -2
  88. package/dist/token/adapters/CosmosTokenAdapter.js.map +1 -1
  89. package/dist/token/adapters/EvmTokenAdapter.d.ts +2 -1
  90. package/dist/token/adapters/EvmTokenAdapter.d.ts.map +1 -1
  91. package/dist/token/adapters/EvmTokenAdapter.js +7 -4
  92. package/dist/token/adapters/EvmTokenAdapter.js.map +1 -1
  93. package/dist/token/adapters/ITokenAdapter.d.ts +1 -1
  94. package/dist/token/adapters/ITokenAdapter.d.ts.map +1 -1
  95. package/dist/token/adapters/SealevelTokenAdapter.d.ts +1 -1
  96. package/dist/token/adapters/SealevelTokenAdapter.d.ts.map +1 -1
  97. package/dist/token/adapters/SealevelTokenAdapter.js +1 -1
  98. package/dist/token/adapters/SealevelTokenAdapter.js.map +1 -1
  99. package/dist/warp/WarpCore.d.ts +76 -10
  100. package/dist/warp/WarpCore.d.ts.map +1 -1
  101. package/dist/warp/WarpCore.js +169 -35
  102. package/dist/warp/WarpCore.js.map +1 -1
  103. package/dist/warp/WarpCore.test.js +72 -21
  104. package/dist/warp/WarpCore.test.js.map +1 -1
  105. package/dist/warp/types.d.ts +82 -25
  106. package/dist/warp/types.d.ts.map +1 -1
  107. package/dist/warp/types.js +15 -15
  108. package/dist/warp/types.js.map +1 -1
  109. package/logos/black/plume.svg +1 -6
  110. package/logos/color/plume.svg +1 -1
  111. package/package.json +3 -3
@@ -6,19 +6,27 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.WarpCore = void 0;
7
7
  const debug_1 = __importDefault(require("debug"));
8
8
  const utils_1 = require("@hyperlane-xyz/utils");
9
+ const transactionFeeEstimators_1 = require("../providers/transactionFeeEstimators");
9
10
  const Token_1 = require("../token/Token");
10
11
  const TokenAmount_1 = require("../token/TokenAmount");
12
+ const TokenConnection_1 = require("../token/TokenConnection");
11
13
  const TokenStandard_1 = require("../token/TokenStandard");
14
+ const EvmTokenAdapter_1 = require("../token/adapters/EvmTokenAdapter");
12
15
  const types_1 = require("./types");
13
16
  class WarpCore {
14
17
  constructor(multiProvider, tokens, options) {
15
18
  this.multiProvider = multiProvider;
16
19
  this.tokens = tokens;
17
- this.igpQuoteConstants = options?.igpQuoteConstants || [];
20
+ this.localFeeConstants = options?.localFeeConstants || [];
21
+ this.interchainFeeConstants = options?.interchainFeeConstants || [];
18
22
  this.routeBlacklist = options?.routeBlacklist || [];
19
23
  this.logger = (0, debug_1.default)(options?.loggerName || 'hyperlane:WarpCore');
20
24
  }
21
- // Takes the serialized representation of a complete warp config and returns a WarpCore instance
25
+ /**
26
+ * Takes the serialized representation of a warp config and returns a WarpCore instance
27
+ * @param multiProvider the MultiProtocolProvider containing chain metadata
28
+ * @param config the config object of type WarpCoreConfig
29
+ */
22
30
  static FromConfig(multiProvider, config) {
23
31
  // Validate and parse config data
24
32
  const parsedConfig = types_1.WarpCoreConfigSchema.parse(config);
@@ -32,10 +40,9 @@ class WarpCore {
32
40
  parsedConfig.tokens.forEach((config, i) => {
33
41
  for (const connection of config.connections || []) {
34
42
  const token1 = tokens[i];
35
- // TODO see https://github.com/hyperlane-xyz/hyperlane-monorepo/issues/3298
36
- const [_protocol, chainName, addrOrDenom] = connection.token.split('|');
37
- const token2 = tokens.find((t) => t.chainName === chainName && t.addressOrDenom === addrOrDenom);
38
- (0, utils_1.assert)(token2, `Connected token not found: ${chainName} ${addrOrDenom}`);
43
+ const { chainName, addressOrDenom } = (0, TokenConnection_1.parseTokenConnectionId)(connection.token);
44
+ const token2 = tokens.find((t) => t.chainName === chainName && t.addressOrDenom === addressOrDenom);
45
+ (0, utils_1.assert)(token2, `Connected token not found: ${chainName} ${addressOrDenom}`);
39
46
  token1.addConnection({
40
47
  ...connection,
41
48
  token: token2,
@@ -43,18 +50,19 @@ class WarpCore {
43
50
  }
44
51
  });
45
52
  // Create new Warp
46
- return new WarpCore(multiProvider, tokens, {
47
- igpQuoteConstants: parsedConfig.options?.igpQuoteConstants,
48
- routeBlacklist: parsedConfig.options?.routeBlacklist,
49
- });
53
+ return new WarpCore(multiProvider, tokens, parsedConfig.options);
50
54
  }
51
- async getTransferGasQuote(originToken, destination) {
55
+ /**
56
+ * Queries the token router for an interchain gas quote (i.e. IGP fee)
57
+ */
58
+ async getInterchainTransferFee({ originToken, destination, }) {
59
+ this.logger(`Fetching interchain transfer quote to ${destination}`);
52
60
  const { chainName: originName } = originToken;
53
61
  const destinationName = this.multiProvider.getChainName(destination);
54
62
  let gasAmount;
55
63
  let gasAddressOrDenom;
56
64
  // Check constant quotes first
57
- const defaultQuote = this.igpQuoteConstants.find((q) => q.origin === originName && q.destination === destinationName);
65
+ const defaultQuote = this.interchainFeeConstants.find((q) => q.origin === originName && q.destination === destinationName);
58
66
  if (defaultQuote) {
59
67
  gasAmount = BigInt(defaultQuote.amount.toString());
60
68
  gasAddressOrDenom = defaultQuote.addressOrDenom;
@@ -63,7 +71,7 @@ class WarpCore {
63
71
  // Otherwise, compute IGP quote via the adapter
64
72
  const hypAdapter = originToken.getHypAdapter(this.multiProvider, destinationName);
65
73
  const destinationDomainId = this.multiProvider.getDomainId(destination);
66
- const quote = await hypAdapter.quoteGasPayment(destinationDomainId);
74
+ const quote = await hypAdapter.quoteTransferRemoteGas(destinationDomainId);
67
75
  gasAmount = BigInt(quote.amount);
68
76
  gasAddressOrDenom = quote.addressOrDenom;
69
77
  }
@@ -74,20 +82,69 @@ class WarpCore {
74
82
  }
75
83
  else {
76
84
  const searchResult = this.findToken(originName, gasAddressOrDenom);
77
- (0, utils_1.assert)(searchResult, `IGP token ${gasAddressOrDenom} is unknown`);
85
+ (0, utils_1.assert)(searchResult, `Fee token ${gasAddressOrDenom} is unknown`);
78
86
  igpToken = searchResult;
79
87
  }
80
- this.logger(`Quoted igp gas payment: ${gasAmount} ${igpToken.symbol}`);
88
+ this.logger(`Quoted interchain transfer fee: ${gasAmount} ${igpToken.symbol}`);
81
89
  return new TokenAmount_1.TokenAmount(gasAmount, igpToken);
82
90
  }
83
- async getTransferRemoteTxs(originTokenAmount, destination, sender, recipient) {
91
+ /**
92
+ * Simulates a transfer to estimate 'local' gas fees on the origin chain
93
+ */
94
+ async getLocalTransferFee({ originToken, destination, sender, senderPubKey, interchainFee, }) {
95
+ const originMetadata = this.multiProvider.getChainMetadata(originToken.chainName);
96
+ const destinationMetadata = this.multiProvider.getChainMetadata(destination);
97
+ // Check constant quotes first
98
+ const defaultQuote = this.localFeeConstants.find((q) => q.origin === originMetadata.name &&
99
+ q.destination === destinationMetadata.name);
100
+ if (defaultQuote) {
101
+ return { gasUnits: 0, gasPrice: 0, fee: Number(defaultQuote.amount) };
102
+ }
103
+ // Form transactions to estimate local gas with
104
+ const recipient = (0, utils_1.convertToProtocolAddress)(sender, destinationMetadata.protocol, destinationMetadata.bech32Prefix);
105
+ const txs = await this.getTransferRemoteTxs({
106
+ originTokenAmount: originToken.amount(1),
107
+ destination,
108
+ sender,
109
+ recipient,
110
+ interchainFee,
111
+ });
112
+ // Typically the transfers require a single transaction
113
+ if (txs.length === 1) {
114
+ return this.multiProvider.estimateTransactionFee({
115
+ chainNameOrId: originMetadata.name,
116
+ transaction: txs[0],
117
+ sender,
118
+ senderPubKey,
119
+ });
120
+ }
121
+ // On ethereum, sometimes 2 txs are required (one approve, one transferRemote)
122
+ else if (txs.length === 2 &&
123
+ originToken.protocol === utils_1.ProtocolType.Ethereum) {
124
+ const provider = this.multiProvider.getEthersV5Provider(originMetadata.name);
125
+ // We use a hard-coded const as an estimate for the transferRemote because we
126
+ // cannot reliably simulate the tx when an approval tx is required first
127
+ return (0, transactionFeeEstimators_1.estimateTransactionFeeEthersV5ForGasUnits)({
128
+ provider,
129
+ gasUnits: EvmTokenAdapter_1.EVM_TRANSFER_REMOTE_GAS_ESTIMATE,
130
+ });
131
+ }
132
+ else {
133
+ throw new Error('Cannot estimate local gas for multiple transactions');
134
+ }
135
+ }
136
+ /**
137
+ * Gets a list of populated transactions required to transfer a token to a remote chain
138
+ * Typically just 1 transaction but sometimes more, like when an approval is required first
139
+ */
140
+ async getTransferRemoteTxs({ originTokenAmount, destination, sender, recipient, interchainFee, }) {
84
141
  const transactions = [];
85
142
  const { token, amount } = originTokenAmount;
86
143
  const destinationName = this.multiProvider.getChainName(destination);
87
144
  const destinationDomainId = this.multiProvider.getDomainId(destination);
88
145
  const providerType = TokenStandard_1.TOKEN_STANDARD_TO_PROVIDER_TYPE[token.standard];
89
146
  const hypAdapter = token.getHypAdapter(this.multiProvider, destinationName);
90
- if (await this.isApproveRequired(originTokenAmount, sender)) {
147
+ if (await this.isApproveRequired({ originTokenAmount, owner: sender })) {
91
148
  this.logger(`Approval required for transfer of ${token.symbol}`);
92
149
  const approveTxReq = await hypAdapter.populateApproveTx({
93
150
  weiAmountOrId: amount.toString(),
@@ -101,15 +158,20 @@ class WarpCore {
101
158
  };
102
159
  transactions.push(approveTx);
103
160
  }
104
- const interchainGasAmount = await this.getTransferGasQuote(token, destination);
161
+ if (!interchainFee) {
162
+ interchainFee = await this.getInterchainTransferFee({
163
+ originToken: token,
164
+ destination,
165
+ });
166
+ }
105
167
  const transferTxReq = await hypAdapter.populateTransferRemoteTx({
106
168
  weiAmountOrId: amount.toString(),
107
169
  destination: destinationDomainId,
108
170
  fromAccountOwner: sender,
109
171
  recipient,
110
172
  interchainGas: {
111
- amount: interchainGasAmount.amount,
112
- addressOrDenom: interchainGasAmount.token.addressOrDenom,
173
+ amount: interchainFee.amount,
174
+ addressOrDenom: interchainFee.token.addressOrDenom,
113
175
  },
114
176
  });
115
177
  this.logger(`Remote transfer tx for ${token.symbol} populated`);
@@ -121,10 +183,69 @@ class WarpCore {
121
183
  transactions.push(transferTx);
122
184
  return transactions;
123
185
  }
186
+ /**
187
+ * Fetch local and interchain fee estimates for a remote transfer
188
+ */
189
+ async estimateTransferRemoteFees({ originToken, destination, sender, senderPubKey, }) {
190
+ this.logger('Fetching remote transfer fee estimates');
191
+ // First get interchain gas quote (aka IGP quote)
192
+ // Start with this because it's used in the local fee estimation
193
+ const interchainQuote = await this.getInterchainTransferFee({
194
+ originToken,
195
+ destination,
196
+ });
197
+ const originMetadata = this.multiProvider.getChainMetadata(originToken.chainName);
198
+ // If there's no native token, we can't represent local gas
199
+ if (!originMetadata.nativeToken)
200
+ throw new Error(`No native token found for ${originMetadata.name}`);
201
+ // Next, get the local gas quote
202
+ const localFee = await this.getLocalTransferFee({
203
+ originToken,
204
+ destination,
205
+ sender,
206
+ senderPubKey,
207
+ interchainFee: interchainQuote,
208
+ });
209
+ // Get the local gas token. This assumes the chain's native token will pay for local gas
210
+ // This will need to be smarter if more complex scenarios on Cosmos are supported
211
+ const localGasToken = Token_1.Token.FromChainMetadataNativeToken(originMetadata);
212
+ const localQuote = localGasToken.amount(localFee.fee);
213
+ return {
214
+ interchainQuote,
215
+ localQuote,
216
+ };
217
+ }
218
+ /**
219
+ * Computes the max transferrable amount of the from the given
220
+ * token balance, accounting for local and interchain gas fees
221
+ */
222
+ async getMaxTransferAmount({ balance, destination, sender, senderPubKey, feeEstimate, }) {
223
+ const originToken = balance.token;
224
+ if (!feeEstimate) {
225
+ feeEstimate = await this.estimateTransferRemoteFees({
226
+ originToken,
227
+ destination,
228
+ sender,
229
+ senderPubKey,
230
+ });
231
+ }
232
+ const { localQuote, interchainQuote } = feeEstimate;
233
+ let maxAmount = balance;
234
+ if (originToken.isFungibleWith(localQuote.token)) {
235
+ maxAmount = maxAmount.minus(localQuote.amount);
236
+ }
237
+ if (originToken.isFungibleWith(interchainQuote.token)) {
238
+ maxAmount = maxAmount.minus(interchainQuote.amount);
239
+ }
240
+ if (maxAmount.amount > 0)
241
+ return maxAmount;
242
+ else
243
+ return originToken.amount(0);
244
+ }
124
245
  /**
125
246
  * Checks if destination chain's collateral is sufficient to cover the transfer
126
247
  */
127
- async isDestinationCollateralSufficient(originTokenAmount, destination) {
248
+ async isDestinationCollateralSufficient({ originTokenAmount, destination, }) {
128
249
  const { token: originToken, amount } = originTokenAmount;
129
250
  const destinationName = this.multiProvider.getChainName(destination);
130
251
  this.logger(`Checking collateral for ${originToken.symbol} to ${destination}`);
@@ -144,7 +265,7 @@ class WarpCore {
144
265
  /**
145
266
  * Checks if a token transfer requires an approval tx first
146
267
  */
147
- async isApproveRequired(originTokenAmount, owner) {
268
+ async isApproveRequired({ originTokenAmount, owner, }) {
148
269
  const { token, amount } = originTokenAmount;
149
270
  const adapter = token.getAdapter(this.multiProvider);
150
271
  const isRequired = await adapter.isApproveRequired(owner, token.addressOrDenom, amount);
@@ -154,7 +275,7 @@ class WarpCore {
154
275
  /**
155
276
  * Ensure the remote token transfer would be valid for the given chains, amount, sender, and recipient
156
277
  */
157
- async validateTransfer(originTokenAmount, destination, sender, recipient) {
278
+ async validateTransfer({ originTokenAmount, destination, recipient, sender, senderPubKey, }) {
158
279
  const chainError = this.validateChains(originTokenAmount.token.chainName, destination);
159
280
  if (chainError)
160
281
  return chainError;
@@ -164,7 +285,7 @@ class WarpCore {
164
285
  const amountError = this.validateAmount(originTokenAmount);
165
286
  if (amountError)
166
287
  return amountError;
167
- const balancesError = await this.validateTokenBalances(originTokenAmount, destination, sender);
288
+ const balancesError = await this.validateTokenBalances(originTokenAmount, destination, sender, senderPubKey);
168
289
  if (balancesError)
169
290
  return balancesError;
170
291
  return null;
@@ -224,23 +345,36 @@ class WarpCore {
224
345
  /**
225
346
  * Ensure the sender has sufficient balances for transfer and interchain gas
226
347
  */
227
- async validateTokenBalances(originTokenAmount, destination, sender) {
348
+ async validateTokenBalances(originTokenAmount, destination, sender, senderPubKey) {
228
349
  const { token, amount } = originTokenAmount;
229
350
  const { amount: senderBalance } = await token.getBalance(this.multiProvider, sender);
351
+ const senderBalanceAmount = originTokenAmount.token.amount(senderBalance);
230
352
  // First check basic token balance
231
353
  if (amount > senderBalance)
232
354
  return { amount: 'Insufficient balance' };
233
- // Next, ensure balances can cover IGP fees
234
- const igpQuote = await this.getTransferGasQuote(token, destination);
235
- if (token.equals(igpQuote.token) || token.collateralizes(igpQuote.token)) {
236
- const total = amount + igpQuote.amount;
237
- if (senderBalance < total)
238
- return { amount: 'Insufficient balance for gas and transfer' };
355
+ // Next, ensure balances can cover the COMBINED amount and fees
356
+ const feeEstimate = await this.estimateTransferRemoteFees({
357
+ originToken: token,
358
+ destination,
359
+ sender,
360
+ senderPubKey,
361
+ });
362
+ const maxTransfer = await this.getMaxTransferAmount({
363
+ balance: senderBalanceAmount,
364
+ destination,
365
+ sender,
366
+ senderPubKey,
367
+ feeEstimate,
368
+ });
369
+ if (amount > maxTransfer.amount) {
370
+ return { amount: 'Insufficient balance for gas and transfer' };
239
371
  }
240
- else {
241
- const igpTokenBalance = await igpQuote.token.getBalance(this.multiProvider, sender);
242
- if (igpTokenBalance.amount < igpQuote.amount)
243
- return { amount: `Insufficient ${igpQuote.token.symbol} for gas` };
372
+ // Finally, ensure there's sufficient balance for the IGP fee, which may
373
+ // be a different token than the transfer token
374
+ const igpQuote = feeEstimate.interchainQuote;
375
+ const igpTokenBalance = await igpQuote.token.getBalance(this.multiProvider, sender);
376
+ if (igpTokenBalance.amount < igpQuote.amount) {
377
+ return { amount: `Insufficient ${igpQuote.token.symbol} for gas` };
244
378
  }
245
379
  return null;
246
380
  }
@@ -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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"}
@@ -17,7 +17,8 @@ const Token_1 = require("../token/Token");
17
17
  const TokenStandard_1 = require("../token/TokenStandard");
18
18
  const WarpCore_1 = require("./WarpCore");
19
19
  const types_1 = require("./types");
20
- const MOCK_QUOTE = { amount: 20000n };
20
+ const MOCK_LOCAL_QUOTE = { gasUnits: 2000n, gasPrice: 100, fee: 200000n };
21
+ const MOCK_INTERCHAIN_QUOTE = { amount: 20000n };
21
22
  const TRANSFER_AMOUNT = BigInt('1000000000000000000'); // 1 units @ 18 decimals
22
23
  const BIG_TRANSFER_AMOUNT = BigInt('100000000000000000000'); // 100 units @ 18 decimals
23
24
  const MOCK_BALANCE = BigInt('10000000000000000000'); // 10 units @ 18 decimals
@@ -30,6 +31,10 @@ describe('WarpCore', () => {
30
31
  let cwHypCollateral;
31
32
  let cw20;
32
33
  let cosmosIbc;
34
+ // Stub MultiProvider fee estimation to avoid real network calls
35
+ sinon_1.default
36
+ .stub(multiProvider, 'estimateTransactionFee')
37
+ .returns(Promise.resolve(MOCK_LOCAL_QUOTE));
33
38
  it('Constructs', () => {
34
39
  const fromArgs = new WarpCore_1.WarpCore(multiProvider, [
35
40
  Token_1.Token.FromChainMetadataNativeToken(chainMetadata_1.chainMetadata[chains_1.Chains.ethereum]),
@@ -56,12 +61,20 @@ describe('WarpCore', () => {
56
61
  });
57
62
  it('Gets transfer gas quote', async () => {
58
63
  const stubs = warpCore.tokens.map((t) => sinon_1.default.stub(t, 'getHypAdapter').returns({
59
- quoteGasPayment: () => Promise.resolve(MOCK_QUOTE),
64
+ quoteTransferRemoteGas: () => Promise.resolve(MOCK_INTERCHAIN_QUOTE),
65
+ isApproveRequired: () => Promise.resolve(false),
66
+ populateTransferRemoteTx: () => Promise.resolve({}),
60
67
  }));
61
- const testQuote = async (token, chain, standard, quote = MOCK_QUOTE) => {
62
- const result = await warpCore.getTransferGasQuote(token, chain);
63
- (0, chai_1.expect)(result.token.standard, `token standard check for ${token.chainName} to ${chain}`).equals(standard);
64
- (0, chai_1.expect)(result.amount, `token amount check for ${token.chainName} to ${chain}`).to.equal(quote.amount);
68
+ const testQuote = async (token, destination, standard, interchainQuote = MOCK_INTERCHAIN_QUOTE) => {
69
+ const result = await warpCore.estimateTransferRemoteFees({
70
+ originToken: token,
71
+ destination,
72
+ sender: ethers_1.ethers.constants.AddressZero,
73
+ });
74
+ (0, chai_1.expect)(result.localQuote.token.standard, `token local standard check for ${token.chainName} to ${destination}`).equals(standard);
75
+ (0, chai_1.expect)(result.localQuote.amount, `token local amount check for ${token.chainName} to ${destination}`).to.equal(MOCK_LOCAL_QUOTE.fee);
76
+ (0, chai_1.expect)(result.interchainQuote.token.standard, `token interchain standard check for ${token.chainName} to ${destination}`).equals(standard);
77
+ (0, chai_1.expect)(result.interchainQuote.amount, `token interchain amount check for ${token.chainName} to ${destination}`).to.equal(interchainQuote.amount);
65
78
  };
66
79
  await testQuote(evmHypNative, chains_1.Chains.arbitrum, TokenStandard_1.TokenStandard.EvmNative);
67
80
  await testQuote(evmHypNative, chains_1.Chains.neutron, TokenStandard_1.TokenStandard.EvmNative);
@@ -80,11 +93,17 @@ describe('WarpCore', () => {
80
93
  const stubs = warpCore.tokens.map((t) => sinon_1.default.stub(t, 'getHypAdapter').returns({
81
94
  getBalance: () => Promise.resolve(MOCK_BALANCE),
82
95
  }));
83
- const testCollateral = async (token, chain, expectedBigResult = true) => {
84
- const smallResult = await warpCore.isDestinationCollateralSufficient(token.amount(TRANSFER_AMOUNT), chain);
85
- (0, chai_1.expect)(smallResult, `small collateral check for ${token.chainName} to ${chain}`).to.be.true;
86
- const bigResult = await warpCore.isDestinationCollateralSufficient(token.amount(BIG_TRANSFER_AMOUNT), chain);
87
- (0, chai_1.expect)(bigResult, `big collateral check for ${token.chainName} to ${chain}`).to.equal(expectedBigResult);
96
+ const testCollateral = async (token, destination, expectedBigResult = true) => {
97
+ const smallResult = await warpCore.isDestinationCollateralSufficient({
98
+ originTokenAmount: token.amount(TRANSFER_AMOUNT),
99
+ destination,
100
+ });
101
+ (0, chai_1.expect)(smallResult, `small collateral check for ${token.chainName} to ${destination}`).to.be.true;
102
+ const bigResult = await warpCore.isDestinationCollateralSufficient({
103
+ originTokenAmount: token.amount(BIG_TRANSFER_AMOUNT),
104
+ destination,
105
+ });
106
+ (0, chai_1.expect)(bigResult, `big collateral check for ${token.chainName} to ${destination}`).to.equal(expectedBigResult);
88
107
  };
89
108
  await testCollateral(evmHypNative, chains_1.Chains.arbitrum);
90
109
  await testCollateral(evmHypNative, chains_1.Chains.neutron, false);
@@ -97,17 +116,44 @@ describe('WarpCore', () => {
97
116
  .stub(t, 'getBalance')
98
117
  .returns(Promise.resolve({ amount: MOCK_BALANCE })));
99
118
  const quoteStubs = warpCore.tokens.map((t) => sinon_1.default.stub(t, 'getHypAdapter').returns({
100
- quoteGasPayment: () => Promise.resolve(MOCK_QUOTE),
119
+ quoteTransferRemoteGas: () => Promise.resolve(MOCK_INTERCHAIN_QUOTE),
120
+ isApproveRequired: () => Promise.resolve(false),
121
+ populateTransferRemoteTx: () => Promise.resolve({}),
101
122
  }));
102
- const validResult = await warpCore.validateTransfer(evmHypNative.amount(TRANSFER_AMOUNT), chains_1.Chains.arbitrum, ethers_1.ethers.constants.AddressZero, ethers_1.ethers.constants.AddressZero);
123
+ const validResult = await warpCore.validateTransfer({
124
+ originTokenAmount: evmHypNative.amount(TRANSFER_AMOUNT),
125
+ destination: chains_1.Chains.arbitrum,
126
+ recipient: ethers_1.ethers.constants.AddressZero,
127
+ sender: ethers_1.ethers.constants.AddressZero,
128
+ });
103
129
  (0, chai_1.expect)(validResult).to.be.null;
104
- const invalidChain = await warpCore.validateTransfer(evmHypNative.amount(TRANSFER_AMOUNT), 'fakechain', ethers_1.ethers.constants.AddressZero, ethers_1.ethers.constants.AddressZero);
130
+ const invalidChain = await warpCore.validateTransfer({
131
+ originTokenAmount: evmHypNative.amount(TRANSFER_AMOUNT),
132
+ destination: 'fakechain',
133
+ recipient: ethers_1.ethers.constants.AddressZero,
134
+ sender: ethers_1.ethers.constants.AddressZero,
135
+ });
105
136
  (0, chai_1.expect)(Object.keys(invalidChain || {})[0]).to.equal('destination');
106
- const invalidRecipient = await warpCore.validateTransfer(evmHypNative.amount(TRANSFER_AMOUNT), chains_1.Chains.neutron, ethers_1.ethers.constants.AddressZero, ethers_1.ethers.constants.AddressZero);
137
+ const invalidRecipient = await warpCore.validateTransfer({
138
+ originTokenAmount: evmHypNative.amount(TRANSFER_AMOUNT),
139
+ destination: chains_1.Chains.neutron,
140
+ recipient: ethers_1.ethers.constants.AddressZero,
141
+ sender: ethers_1.ethers.constants.AddressZero,
142
+ });
107
143
  (0, chai_1.expect)(Object.keys(invalidRecipient || {})[0]).to.equal('recipient');
108
- const invalidAmount = await warpCore.validateTransfer(evmHypNative.amount(-10), chains_1.Chains.arbitrum, ethers_1.ethers.constants.AddressZero, ethers_1.ethers.constants.AddressZero);
144
+ const invalidAmount = await warpCore.validateTransfer({
145
+ originTokenAmount: evmHypNative.amount(-10),
146
+ destination: chains_1.Chains.arbitrum,
147
+ recipient: ethers_1.ethers.constants.AddressZero,
148
+ sender: ethers_1.ethers.constants.AddressZero,
149
+ });
109
150
  (0, chai_1.expect)(Object.keys(invalidAmount || {})[0]).to.equal('amount');
110
- const insufficientBalance = await warpCore.validateTransfer(evmHypNative.amount(BIG_TRANSFER_AMOUNT), chains_1.Chains.arbitrum, ethers_1.ethers.constants.AddressZero, ethers_1.ethers.constants.AddressZero);
151
+ const insufficientBalance = await warpCore.validateTransfer({
152
+ originTokenAmount: evmHypNative.amount(BIG_TRANSFER_AMOUNT),
153
+ destination: chains_1.Chains.arbitrum,
154
+ recipient: ethers_1.ethers.constants.AddressZero,
155
+ sender: ethers_1.ethers.constants.AddressZero,
156
+ });
111
157
  (0, chai_1.expect)(Object.keys(insufficientBalance || {})[0]).to.equal('amount');
112
158
  balanceStubs.forEach((s) => s.restore());
113
159
  quoteStubs.forEach((s) => s.restore());
@@ -117,13 +163,18 @@ describe('WarpCore', () => {
117
163
  .stub(warpCore, 'isApproveRequired')
118
164
  .returns(Promise.resolve(false));
119
165
  const adapterStubs = warpCore.tokens.map((t) => sinon_1.default.stub(t, 'getHypAdapter').returns({
120
- quoteGasPayment: () => Promise.resolve(MOCK_QUOTE),
166
+ quoteTransferRemoteGas: () => Promise.resolve(MOCK_INTERCHAIN_QUOTE),
121
167
  populateTransferRemoteTx: () => Promise.resolve({}),
122
168
  }));
123
- const testGetTxs = async (token, chain, providerType = ProviderType_1.ProviderType.EthersV5) => {
124
- const result = await warpCore.getTransferRemoteTxs(token.amount(TRANSFER_AMOUNT), chain, ethers_1.ethers.constants.AddressZero, ethers_1.ethers.constants.AddressZero);
169
+ const testGetTxs = async (token, destination, providerType = ProviderType_1.ProviderType.EthersV5) => {
170
+ const result = await warpCore.getTransferRemoteTxs({
171
+ originTokenAmount: token.amount(TRANSFER_AMOUNT),
172
+ destination,
173
+ sender: ethers_1.ethers.constants.AddressZero,
174
+ recipient: ethers_1.ethers.constants.AddressZero,
175
+ });
125
176
  (0, chai_1.expect)(result.length).to.equal(1);
126
- (0, chai_1.expect)(result[0], `transfer tx for ${token.chainName} to ${chain}`).to.eql({
177
+ (0, chai_1.expect)(result[0], `transfer tx for ${token.chainName} to ${destination}`).to.eql({
127
178
  category: types_1.WarpTxCategory.Transfer,
128
179
  transaction: {},
129
180
  type: providerType,
@@ -1 +1 @@
1
- {"version":3,"file":"WarpCore.test.js","sourceRoot":"","sources":["../../src/warp/WarpCore.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"WarpCore.test.js","sourceRoot":"","sources":["../../src/warp/WarpCore.test.ts"],"names":[],"mappings":"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"}