@cowprotocol/sdk-bridging 3.1.2 → 3.2.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 (3) hide show
  1. package/dist/index.js +85 -82
  2. package/dist/index.mjs +29 -26
  3. package/package.json +11 -11
package/dist/index.js CHANGED
@@ -237,20 +237,21 @@ async function getCrossChainOrder(params) {
237
237
  var import_sdk_trading2 = require("@cowprotocol/sdk-trading");
238
238
  var import_sdk_order_book3 = require("@cowprotocol/sdk-order-book");
239
239
  var import_sdk_config3 = require("@cowprotocol/sdk-config");
240
- var import_sdk_common6 = require("@cowprotocol/sdk-common");
240
+ var import_sdk_common8 = require("@cowprotocol/sdk-common");
241
241
 
242
242
  // src/BridgingSdk/helpers.ts
243
+ var import_sdk_common = require("@cowprotocol/sdk-common");
243
244
  var getCacheKey = ({
244
245
  id,
245
246
  buyChainId,
246
247
  sellChainId = "noSellChainID",
247
248
  tokenAddress = "noTokenAddress"
248
249
  }) => {
249
- return `${id}-${buyChainId}-${sellChainId}-${tokenAddress.toLowerCase()}`;
250
+ return `${id}-${buyChainId}-${sellChainId}-${(0, import_sdk_common.getAddressKey)(tokenAddress)}`;
250
251
  };
251
252
 
252
253
  // src/BridgingSdk/getQuoteWithoutBridge.ts
253
- var import_sdk_common = require("@cowprotocol/sdk-common");
254
+ var import_sdk_common2 = require("@cowprotocol/sdk-common");
254
255
  function getQuoteWithoutBridge(params) {
255
256
  const { quoteBridgeRequest, advancedSettings, tradingSdk } = params;
256
257
  const { sellTokenAddress, buyTokenAddress, amount, swapSlippageBps, ...rest } = quoteBridgeRequest;
@@ -263,19 +264,19 @@ function getQuoteWithoutBridge(params) {
263
264
  amount: amount.toString()
264
265
  };
265
266
  const { signer: _, ...paramsToLog } = swapParams;
266
- (0, import_sdk_common.log)(`Single-chain swap: Delegate to trading SDK with params ${JSON.stringify(paramsToLog, import_sdk_common.jsonWithBigintReplacer)}`);
267
+ (0, import_sdk_common2.log)(`Single-chain swap: Delegate to trading SDK with params ${JSON.stringify(paramsToLog, import_sdk_common2.jsonWithBigintReplacer)}`);
267
268
  return tradingSdk.getQuote(swapParams, advancedSettings);
268
269
  }
269
270
 
270
271
  // src/BridgingSdk/getQuoteWithBridge.ts
271
272
  var import_sdk_trading = require("@cowprotocol/sdk-trading");
272
- var import_sdk_common5 = require("@cowprotocol/sdk-common");
273
+ var import_sdk_common7 = require("@cowprotocol/sdk-common");
273
274
  var import_sdk_order_book = require("@cowprotocol/sdk-order-book");
274
275
 
275
276
  // src/BridgingSdk/getBridgeSignedHook.ts
276
- var import_sdk_common2 = require("@cowprotocol/sdk-common");
277
+ var import_sdk_common3 = require("@cowprotocol/sdk-common");
277
278
  async function getBridgeSignedHook(provider, bridgeRequest, { signer, hookGasLimit, swapResult, validToOverride }) {
278
- const adapter = (0, import_sdk_common2.getGlobalAdapter)();
279
+ const adapter = (0, import_sdk_common3.getGlobalAdapter)();
279
280
  const bridgingQuote = await provider.getQuote(bridgeRequest);
280
281
  const unsignedBridgeCall = await provider.getUnsignedBridgeCall(bridgeRequest, bridgingQuote);
281
282
  const deadline = BigInt(validToOverride ?? swapResult.orderToSign.validTo);
@@ -309,13 +310,14 @@ function getHookMockForCostEstimation(gasLimit) {
309
310
  }
310
311
 
311
312
  // src/BridgingSdk/getIntermediateSwapResult.ts
312
- var import_sdk_common4 = require("@cowprotocol/sdk-common");
313
+ var import_sdk_common6 = require("@cowprotocol/sdk-common");
313
314
 
314
315
  // src/BridgingSdk/determineIntermediateToken.ts
315
- var import_sdk_common3 = require("@cowprotocol/sdk-common");
316
+ var import_sdk_common5 = require("@cowprotocol/sdk-common");
316
317
 
317
318
  // src/BridgingSdk/tokenPriority.ts
318
319
  var import_sdk_config2 = require("@cowprotocol/sdk-config");
320
+ var import_sdk_common4 = require("@cowprotocol/sdk-common");
319
321
  var PRIORITY_STABLECOIN_TOKENS = {
320
322
  [import_sdk_config2.SupportedChainId.MAINNET]: /* @__PURE__ */ new Set([
321
323
  "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",
@@ -364,7 +366,7 @@ var PRIORITY_STABLECOIN_TOKENS = {
364
366
  [import_sdk_config2.SupportedChainId.LINEA]: /* @__PURE__ */ new Set([
365
367
  "0x176211869ca2b568f2a7d4ee941e073a821ee1ff",
366
368
  // USDC
367
- "0xA219439258ca9da29E9Cc4cE5596924745e12B93"
369
+ "0xa219439258ca9da29e9cc4ce5596924745e12b93"
368
370
  // USDT
369
371
  ]),
370
372
  [import_sdk_config2.SupportedChainId.SEPOLIA]: /* @__PURE__ */ new Set([
@@ -376,10 +378,10 @@ function isStablecoinPriorityToken(chainId, tokenAddress) {
376
378
  const chainTokens = PRIORITY_STABLECOIN_TOKENS[chainId];
377
379
  if (!chainTokens)
378
380
  return false;
379
- return chainTokens.has(tokenAddress.toLowerCase());
381
+ return chainTokens.has((0, import_sdk_common4.getAddressKey)(tokenAddress));
380
382
  }
381
383
  function isCorrelatedToken(tokenAddress, correlatedTokens) {
382
- return correlatedTokens.has(tokenAddress.toLowerCase());
384
+ return correlatedTokens.has((0, import_sdk_common4.getAddressKey)(tokenAddress));
383
385
  }
384
386
 
385
387
  // src/BridgingSdk/determineIntermediateToken.ts
@@ -393,11 +395,11 @@ async function determineIntermediateToken(sourceChainId, sourceTokenAddress, int
393
395
  }
394
396
  const correlatedTokens = await resolveCorrelatedTokens(sourceChainId, getCorrelatedTokens);
395
397
  const sellTokenLike = { chainId: sourceChainId, address: sourceTokenAddress };
396
- const isSellNativeOrWrapped = (0, import_sdk_common3.isNativeToken)(sellTokenLike) || (0, import_sdk_common3.isWrappedNativeToken)(sellTokenLike);
397
- const filteredTokens = allowIntermediateEqSellToken ? intermediateTokens : intermediateTokens.filter((token) => !(0, import_sdk_common3.areAddressesEqual)(token.address, sourceTokenAddress));
398
+ const isSellNativeOrWrapped = (0, import_sdk_common5.isNativeToken)(sellTokenLike) || (0, import_sdk_common5.isWrappedNativeToken)(sellTokenLike);
399
+ const filteredTokens = allowIntermediateEqSellToken ? intermediateTokens : intermediateTokens.filter((token) => !(0, import_sdk_common5.areAddressesEqual)(token.address, sourceTokenAddress));
398
400
  const tokensWithPriority = filteredTokens.map((token) => {
399
- const isNativeOrWrapped = (0, import_sdk_common3.isNativeToken)(token) || (0, import_sdk_common3.isWrappedNativeToken)(token);
400
- if ((0, import_sdk_common3.areAddressesEqual)(token.address, sourceTokenAddress)) {
401
+ const isNativeOrWrapped = (0, import_sdk_common5.isNativeToken)(token) || (0, import_sdk_common5.isWrappedNativeToken)(token);
402
+ if ((0, import_sdk_common5.areAddressesEqual)(token.address, sourceTokenAddress)) {
401
403
  if (!(isSellNativeOrWrapped && isNativeOrWrapped)) {
402
404
  return { token, priority: 5 /* HIGHEST */ };
403
405
  }
@@ -408,7 +410,7 @@ async function determineIntermediateToken(sourceChainId, sourceTokenAddress, int
408
410
  if (isCorrelatedToken(token.address, correlatedTokens)) {
409
411
  return { token, priority: 3 /* MEDIUM */ };
410
412
  }
411
- if ((0, import_sdk_common3.isNativeToken)(token) && !isSellNativeOrWrapped) {
413
+ if ((0, import_sdk_common5.isNativeToken)(token) && !isSellNativeOrWrapped) {
412
414
  return { token, priority: 2 /* LOW */ };
413
415
  }
414
416
  return { token, priority: 1 /* LOWEST */ };
@@ -429,7 +431,7 @@ async function resolveCorrelatedTokens(sourceChainId, getCorrelatedTokens) {
429
431
  if (getCorrelatedTokens) {
430
432
  try {
431
433
  const tokens = await getCorrelatedTokens(sourceChainId);
432
- return new Set(tokens.map((t) => t.toLowerCase()));
434
+ return new Set(tokens.map((t) => (0, import_sdk_common5.getAddressKey)(t)));
433
435
  } catch (error) {
434
436
  console.warn(
435
437
  "[determineIntermediateToken] Failed to fetch correlated tokens, falling back to basic priority",
@@ -456,9 +458,9 @@ async function getIntermediateSwapResult({
456
458
  amount,
457
459
  signer: signerLike
458
460
  } = swapAndBridgeRequest;
459
- const adapter = (0, import_sdk_common4.getGlobalAdapter)();
461
+ const adapter = (0, import_sdk_common6.getGlobalAdapter)();
460
462
  const signer = signerLike ? adapter.createSigner(signerLike) : adapter.signer;
461
- (0, import_sdk_common4.log)(
463
+ (0, import_sdk_common6.log)(
462
464
  `Cross-chain ${kind} ${amount} ${sellTokenAddress} (source chain ${sellTokenChainId}) for ${buyTokenAddress} (target chain ${buyTokenChainId})`
463
465
  );
464
466
  const intermediateTokens = await getIntermediateTokens({
@@ -473,7 +475,7 @@ async function getIntermediateSwapResult({
473
475
  params.advancedSettings?.getCorrelatedTokens,
474
476
  allowIntermediateEqSellToken
475
477
  );
476
- (0, import_sdk_common4.log)(`Using ${intermediateToken?.name ?? intermediateToken?.address} as intermediate tokens`);
478
+ (0, import_sdk_common6.log)(`Using ${intermediateToken?.name ?? intermediateToken?.address} as intermediate tokens`);
477
479
  const bridgeRequestWithoutAmount = {
478
480
  ...swapAndBridgeRequest,
479
481
  sellTokenAddress: intermediateToken.address,
@@ -508,7 +510,7 @@ async function getIntermediateSwapResult({
508
510
  signer
509
511
  });
510
512
  const intermediateTokenAmount = swapResult.amountsAndCosts.afterSlippage.buyAmount;
511
- (0, import_sdk_common4.log)(
513
+ (0, import_sdk_common6.log)(
512
514
  `Expected to receive ${intermediateTokenAmount} of the intermediate token (${(intermediateTokenAmount / 10n ** BigInt(intermediaryTokenDecimals)).toString()} formatted)`
513
515
  );
514
516
  return {
@@ -570,10 +572,10 @@ async function getSwapQuote(params) {
570
572
  signer
571
573
  };
572
574
  const { signer: _, ...swapParamsToLog } = swapParams;
573
- (0, import_sdk_common4.log)(
575
+ (0, import_sdk_common6.log)(
574
576
  `Getting a quote for the swap (sell token to buy intermediate token). Delegate to trading SDK with params: ${JSON.stringify(
575
577
  swapParamsToLog,
576
- import_sdk_common4.jsonWithBigintReplacer
578
+ import_sdk_common6.jsonWithBigintReplacer
577
579
  )}`
578
580
  );
579
581
  const { result: swapResult, orderBookApi } = await tradingSdk.getQuoteResults(swapParams, advancedSettings);
@@ -659,7 +661,7 @@ async function getQuoteWithReceiverAccountBridge(provider, params) {
659
661
  bridgeRequestWithoutAmount,
660
662
  intermediateTokenAmount
661
663
  });
662
- (0, import_sdk_common5.log)(`Bridge receiver override: ${bridgeReceiverOverride}`);
664
+ (0, import_sdk_common7.log)(`Bridge receiver override: ${bridgeReceiverOverride}`);
663
665
  swapResult.tradeParameters.receiver = bridgeReceiverOverride;
664
666
  swapResult.appDataInfo = await (0, import_sdk_trading.mergeAppDataDoc)(swapResult.appDataInfo.doc, {
665
667
  metadata: {
@@ -706,7 +708,7 @@ async function getQuoteWithHookBridge(provider, params) {
706
708
  getBridgeHook: async (bridgeRequestWithoutAmount2) => {
707
709
  const hookEstimatedGasLimit2 = await provider.getGasLimitEstimationForHook(bridgeRequestWithoutAmount2);
708
710
  const mockedHook = getHookMockForCostEstimation(hookEstimatedGasLimit2);
709
- (0, import_sdk_common5.log)(`Using mocked hook for swap gas estimation: ${JSON.stringify(mockedHook)}`);
711
+ (0, import_sdk_common7.log)(`Using mocked hook for swap gas estimation: ${JSON.stringify(mockedHook)}`);
710
712
  return mockedHook;
711
713
  }
712
714
  });
@@ -732,9 +734,9 @@ async function getQuoteWithHookBridge(provider, params) {
732
734
  validToOverride,
733
735
  hookGasLimit
734
736
  });
735
- (0, import_sdk_common5.log)(`Bridge hook for swap: ${JSON.stringify(bridgeHook)}`);
737
+ (0, import_sdk_common7.log)(`Bridge hook for swap: ${JSON.stringify(bridgeHook)}`);
736
738
  swapResult.tradeParameters.receiver = bridgeHook.recipient;
737
- (0, import_sdk_common5.log)(`App data for swap: appDataKeccak256=${appDataKeccak256}, fullAppData="${fullAppData}"`);
739
+ (0, import_sdk_common7.log)(`App data for swap: appDataKeccak256=${appDataKeccak256}, fullAppData="${fullAppData}"`);
738
740
  swapResult.appDataInfo = {
739
741
  fullAppData,
740
742
  appDataKeccak256,
@@ -751,10 +753,10 @@ async function getQuoteWithHookBridge(provider, params) {
751
753
  }
752
754
  };
753
755
  }
754
- (0, import_sdk_common5.log)(`Using gas limit: ${hookEstimatedGasLimit}`);
756
+ (0, import_sdk_common7.log)(`Using gas limit: ${hookEstimatedGasLimit}`);
755
757
  const result = await getBridgeProviderQuote(
756
758
  // Sign the hooks with quoteSigner if provided
757
- quoteSigner ? (0, import_sdk_common5.getGlobalAdapter)().createSigner(quoteSigner) : signer,
759
+ quoteSigner ? (0, import_sdk_common7.getGlobalAdapter)().createSigner(quoteSigner) : signer,
758
760
  // Use estimated hook gas limit if quoteSigner is provided, so we don't have to estimate the hook gas limit twice
759
761
  // Moreover, since quoteSigner is not the real signer, the estimation will fail
760
762
  hookEstimatedGasLimit
@@ -1196,14 +1198,14 @@ var BridgingSdk = class {
1196
1198
  constructor(options, adapter) {
1197
1199
  this.options = options;
1198
1200
  if (adapter) {
1199
- (0, import_sdk_common6.setGlobalAdapter)(adapter);
1201
+ (0, import_sdk_common8.setGlobalAdapter)(adapter);
1200
1202
  }
1201
1203
  const { providers, cacheConfig, ...restOptions } = options;
1202
1204
  if (!providers || providers.length === 0) {
1203
1205
  throw new Error("At least one bridge provider is required");
1204
1206
  }
1205
1207
  if (options.enableLogging !== void 0) {
1206
- (0, import_sdk_common6.enableLogging)(options.enableLogging);
1208
+ (0, import_sdk_common8.enableLogging)(options.enableLogging);
1207
1209
  }
1208
1210
  const tradingSdk = options.tradingSdk ?? new import_sdk_trading2.TradingSdk({}, { enableLogging: options.enableLogging });
1209
1211
  const orderBookApi = tradingSdk?.options.orderBookApi ?? new import_sdk_order_book3.OrderBookApi();
@@ -1214,12 +1216,12 @@ var BridgingSdk = class {
1214
1216
  orderBookApi
1215
1217
  };
1216
1218
  this.cacheConfig = { ...DEFAULT_CACHE_CONFIG, ...cacheConfig };
1217
- this.intermediateTokensCache = new import_sdk_common6.TTLCache(
1219
+ this.intermediateTokensCache = new import_sdk_common8.TTLCache(
1218
1220
  "bridging-intermediate-tokens",
1219
1221
  this.cacheConfig.enabled,
1220
1222
  this.cacheConfig.intermediateTokensTtl
1221
1223
  );
1222
- this.buyTokensCache = new import_sdk_common6.TTLCache(
1224
+ this.buyTokensCache = new import_sdk_common8.TTLCache(
1223
1225
  "bridging-buy-tokens",
1224
1226
  this.cacheConfig.enabled,
1225
1227
  this.cacheConfig.buyTokensTtl
@@ -1300,9 +1302,9 @@ var BridgingSdk = class {
1300
1302
  const tokens = results.reduce((tokens2, result) => {
1301
1303
  if (result.status === "fulfilled" && result.value.tokens) {
1302
1304
  result.value.tokens.forEach((token) => {
1303
- const addressLower = token.address.toLowerCase();
1304
- if (!tokens2.get(addressLower)) {
1305
- tokens2.set(addressLower, token);
1305
+ const addressKey = (0, import_sdk_common8.getAddressKey)(token.address);
1306
+ if (!tokens2.get(addressKey)) {
1307
+ tokens2.set(addressKey, token);
1306
1308
  }
1307
1309
  });
1308
1310
  }
@@ -1433,7 +1435,7 @@ var BridgingSdk = class {
1433
1435
  };
1434
1436
 
1435
1437
  // src/providers/across/AcrossApi.ts
1436
- var import_sdk_common7 = require("@cowprotocol/sdk-common");
1438
+ var import_sdk_common9 = require("@cowprotocol/sdk-common");
1437
1439
  var ACROSS_API_URL = "https://app.across.to/api";
1438
1440
  var AcrossApi = class {
1439
1441
  constructor(options = {}) {
@@ -1499,7 +1501,7 @@ var AcrossApi = class {
1499
1501
  async fetchApi(path, params, isValidResponse) {
1500
1502
  const baseUrl = this.options.apiBaseUrl || ACROSS_API_URL;
1501
1503
  const url = `${baseUrl}${path}?${new URLSearchParams(params).toString()}`;
1502
- (0, import_sdk_common7.log)(`Fetching Across API: GET ${url}. Params: ${JSON.stringify(params)}`);
1504
+ (0, import_sdk_common9.log)(`Fetching Across API: GET ${url}. Params: ${JSON.stringify(params)}`);
1503
1505
  const response = await fetch(url, {
1504
1506
  method: "GET"
1505
1507
  });
@@ -1538,14 +1540,14 @@ function isValidRoute(item) {
1538
1540
  }
1539
1541
 
1540
1542
  // src/providers/across/const/interfaces.ts
1541
- var import_sdk_common8 = require("@cowprotocol/sdk-common");
1543
+ var import_sdk_common10 = require("@cowprotocol/sdk-common");
1542
1544
  var ACROSS_DEPOSIT_EVENT_INTERFACE = () => {
1543
- return (0, import_sdk_common8.getGlobalAdapter)().utils.createInterface([
1545
+ return (0, import_sdk_common10.getGlobalAdapter)().utils.createInterface([
1544
1546
  "event FundsDeposited(bytes32 inputToken, bytes32 outputToken, uint256 inputAmount, uint256 outputAmount, uint256 indexed destinationChainId, uint256 indexed depositId, uint32 quoteTimestamp, uint32 fillDeadline, uint32 exclusivityDeadline, bytes32 indexed depositor, bytes32 recipient, bytes32 exclusiveRelayer, bytes message)"
1545
1547
  ]);
1546
1548
  };
1547
1549
  var COW_TRADE_EVENT_INTERFACE = () => {
1548
- return (0, import_sdk_common8.getGlobalAdapter)().utils.createInterface([
1550
+ return (0, import_sdk_common10.getGlobalAdapter)().utils.createInterface([
1549
1551
  "event Trade(address indexed owner, address sellToken, address buyToken, uint256 sellAmount, uint256 buyAmount, uint256 feeAmount, bytes orderUid)"
1550
1552
  ]);
1551
1553
  };
@@ -1605,7 +1607,7 @@ var ACROSS_MATH_CONTRACT_ADDRESSES = {
1605
1607
 
1606
1608
  // src/providers/across/util.ts
1607
1609
  var import_sdk_order_book4 = require("@cowprotocol/sdk-order-book");
1608
- var import_sdk_common9 = require("@cowprotocol/sdk-common");
1610
+ var import_sdk_common11 = require("@cowprotocol/sdk-common");
1609
1611
  var import_json_stable_stringify = __toESM(require("json-stable-stringify"));
1610
1612
  var PCT_100_PERCENT = 10n ** 18n;
1611
1613
  function toBridgeQuoteResult(request, slippageBps, suggestedFees) {
@@ -1663,7 +1665,7 @@ function toAmountsAndCosts(request, slippageBps, suggestedFees) {
1663
1665
  };
1664
1666
  }
1665
1667
  function bytes32ToAddress(address) {
1666
- return (0, import_sdk_common9.getGlobalAdapter)().utils.decodeAbi(["address"], address).toString();
1668
+ return (0, import_sdk_common11.getGlobalAdapter)().utils.decodeAbi(["address"], address).toString();
1667
1669
  }
1668
1670
  function assertValidPct(pct) {
1669
1671
  if (pct > PCT_100_PERCENT || pct < 0n) {
@@ -1692,14 +1694,15 @@ function mapAcrossStatusToBridgeStatus(status) {
1692
1694
  return AcrossStatusToBridgeStatus[status];
1693
1695
  }
1694
1696
  function getAcrossDepositEvents(chainId, logs) {
1695
- const spookContractAddress = ACROSS_SPOOK_CONTRACT_ADDRESSES[chainId]?.toLowerCase();
1697
+ const addr = ACROSS_SPOOK_CONTRACT_ADDRESSES[chainId];
1698
+ const spookContractAddress = addr ? (0, import_sdk_common11.getAddressKey)(addr) : void 0;
1696
1699
  if (!spookContractAddress) {
1697
1700
  return [];
1698
1701
  }
1699
1702
  const acrossDepositInterface = ACROSS_DEPOSIT_EVENT_INTERFACE();
1700
1703
  const ACROSS_DEPOSIT_EVENT_TOPIC = acrossDepositInterface.getEventTopic("FundsDeposited");
1701
1704
  const depositEvents = logs.filter((log7) => {
1702
- return log7.address.toLocaleLowerCase() === spookContractAddress && log7.topics[0] === ACROSS_DEPOSIT_EVENT_TOPIC;
1705
+ return (0, import_sdk_common11.getAddressKey)(log7.address) === spookContractAddress && log7.topics[0] === ACROSS_DEPOSIT_EVENT_TOPIC;
1703
1706
  });
1704
1707
  return depositEvents.map((event) => {
1705
1708
  const parsedLog = acrossDepositInterface.parseLog(event);
@@ -1741,7 +1744,7 @@ function getAcrossDepositEvents(chainId, logs) {
1741
1744
  function getCowTradeEvents(chainId, logs, settlementContractOverride) {
1742
1745
  const COW_TRADE_EVENT_TOPIC = COW_TRADE_EVENT_INTERFACE().getEventTopic("Trade");
1743
1746
  const cowTradeEvents = logs.filter((log7) => {
1744
- return ((0, import_sdk_common9.isCoWSettlementContract)(log7.address, chainId) || (0, import_sdk_common9.areAddressesEqual)(settlementContractOverride?.[chainId], log7.address)) && log7.topics[0] === COW_TRADE_EVENT_TOPIC;
1747
+ return ((0, import_sdk_common11.isCoWSettlementContract)(log7.address, chainId) || (0, import_sdk_common11.areAddressesEqual)(settlementContractOverride?.[chainId], log7.address)) && log7.topics[0] === COW_TRADE_EVENT_TOPIC;
1745
1748
  });
1746
1749
  return cowTradeEvents.map((event) => {
1747
1750
  const parsedLog = COW_TRADE_EVENT_INTERFACE().parseLog(event);
@@ -3541,11 +3544,11 @@ var ACROSS_SPOKE_POOL_ABI = [
3541
3544
  ];
3542
3545
 
3543
3546
  // src/providers/across/createAcrossDepositCall.ts
3544
- var import_sdk_common10 = require("@cowprotocol/sdk-common");
3547
+ var import_sdk_common12 = require("@cowprotocol/sdk-common");
3545
3548
  var ERC20_BALANCE_OF_ABI = ["function balanceOf(address account) external view returns (uint256)"];
3546
3549
  var ERC20_APPROVE_OF_ABI = ["function approve(address spender, uint256 amount) external returns (bool)"];
3547
3550
  function getSpookPoolContract(sellTokenChainId) {
3548
- const adapter = (0, import_sdk_common10.getGlobalAdapter)();
3551
+ const adapter = (0, import_sdk_common12.getGlobalAdapter)();
3549
3552
  const spokePoolAddress = ACROSS_SPOOK_CONTRACT_ADDRESSES[sellTokenChainId];
3550
3553
  if (!spokePoolAddress) {
3551
3554
  throw new Error("Spoke pool address not found for chain: " + sellTokenChainId);
@@ -3556,7 +3559,7 @@ function getSpookPoolContract(sellTokenChainId) {
3556
3559
  );
3557
3560
  }
3558
3561
  function getMathContract(sellTokenChainId) {
3559
- const adapter = (0, import_sdk_common10.getGlobalAdapter)();
3562
+ const adapter = (0, import_sdk_common12.getGlobalAdapter)();
3560
3563
  const mathContractAddress = ACROSS_MATH_CONTRACT_ADDRESSES[sellTokenChainId];
3561
3564
  if (!mathContractAddress) {
3562
3565
  throw new Error("Math contract address not found for chain: " + sellTokenChainId);
@@ -3567,14 +3570,14 @@ function getMathContract(sellTokenChainId) {
3567
3570
  );
3568
3571
  }
3569
3572
  function getBalanceOfSellTokenContract(sellTokenAddress) {
3570
- const adapter = (0, import_sdk_common10.getGlobalAdapter)();
3573
+ const adapter = (0, import_sdk_common12.getGlobalAdapter)();
3571
3574
  return (0, import_sdk_weiroll.createWeirollContract)(
3572
3575
  adapter.getContract(sellTokenAddress, ERC20_BALANCE_OF_ABI),
3573
3576
  import_sdk_weiroll.WeirollCommandFlags.STATICCALL
3574
3577
  );
3575
3578
  }
3576
3579
  function getApproveSellTokenContract(sellTokenAddress) {
3577
- const adapter = (0, import_sdk_common10.getGlobalAdapter)();
3580
+ const adapter = (0, import_sdk_common12.getGlobalAdapter)();
3578
3581
  return (0, import_sdk_weiroll.createWeirollContract)(adapter.getContract(sellTokenAddress, ERC20_APPROVE_OF_ABI), import_sdk_weiroll.WeirollCommandFlags.CALL);
3579
3582
  }
3580
3583
  function createAcrossDepositCall(params) {
@@ -3619,7 +3622,7 @@ function createAcrossDepositCall(params) {
3619
3622
  }
3620
3623
 
3621
3624
  // src/providers/across/getDepositParams.ts
3622
- var import_sdk_common11 = require("@cowprotocol/sdk-common");
3625
+ var import_sdk_common13 = require("@cowprotocol/sdk-common");
3623
3626
  async function getDepositParams(chainId, orderId, txReceipt, settlementContractOverride) {
3624
3627
  const depositEvents = getAcrossDepositEvents(chainId, txReceipt.logs);
3625
3628
  if (depositEvents.length === 0) {
@@ -3631,7 +3634,7 @@ async function getDepositParams(chainId, orderId, txReceipt, settlementContractO
3631
3634
  return null;
3632
3635
  const depositEvent = depositEvents[orderTradeIndex];
3633
3636
  if (!depositEvent) {
3634
- (0, import_sdk_common11.log)(`Trade event found at index ${orderTradeIndex} but only ${depositEvents.length} deposit events available`);
3637
+ (0, import_sdk_common13.log)(`Trade event found at index ${orderTradeIndex} but only ${depositEvents.length} deposit events available`);
3635
3638
  return null;
3636
3639
  }
3637
3640
  return {
@@ -3650,14 +3653,14 @@ async function getDepositParams(chainId, orderId, txReceipt, settlementContractO
3650
3653
  }
3651
3654
 
3652
3655
  // src/providers/utils/getGasLimitEstimationForHook.ts
3653
- var import_sdk_common12 = require("@cowprotocol/sdk-common");
3656
+ var import_sdk_common14 = require("@cowprotocol/sdk-common");
3654
3657
  async function getGasLimitEstimationForHook({
3655
3658
  cowShedSdk,
3656
3659
  request,
3657
3660
  extraGas,
3658
3661
  extraGasProxyCreation
3659
3662
  }) {
3660
- const adapter = (0, import_sdk_common12.getGlobalAdapter)();
3663
+ const adapter = (0, import_sdk_common14.getGlobalAdapter)();
3661
3664
  const proxyAddress = cowShedSdk.getCowShedAccount(request.sellTokenChainId, request.owner || request.account);
3662
3665
  const proxyCode = await adapter.getCode(proxyAddress);
3663
3666
  if (!proxyCode || proxyCode === "0x") {
@@ -3668,7 +3671,7 @@ async function getGasLimitEstimationForHook({
3668
3671
  }
3669
3672
 
3670
3673
  // src/providers/across/AcrossBridgeProvider.ts
3671
- var import_sdk_common13 = require("@cowprotocol/sdk-common");
3674
+ var import_sdk_common15 = require("@cowprotocol/sdk-common");
3672
3675
  var import_sdk_config5 = require("@cowprotocol/sdk-config");
3673
3676
  var import_sdk_cow_shed = require("@cowprotocol/sdk-cow-shed");
3674
3677
  var import_sdk_order_book5 = require("@cowprotocol/sdk-order-book");
@@ -3684,7 +3687,7 @@ var AcrossBridgeProvider = class {
3684
3687
  constructor(options = {}, _adapter) {
3685
3688
  const adapter = _adapter || options.cowShedOptions?.adapter;
3686
3689
  if (adapter) {
3687
- (0, import_sdk_common13.setGlobalAdapter)(adapter);
3690
+ (0, import_sdk_common15.setGlobalAdapter)(adapter);
3688
3691
  }
3689
3692
  this.api = new AcrossApi(options.apiOptions);
3690
3693
  this.cowShedSdk = new import_sdk_cow_shed.CowShedSdk(adapter, options.cowShedOptions?.factoryOptions);
@@ -3713,7 +3716,7 @@ var AcrossBridgeProvider = class {
3713
3716
  }
3714
3717
  const { sellTokenChainId, buyTokenChainId, buyTokenAddress } = request;
3715
3718
  const supportedTokensState = await this.getSupportedTokensState();
3716
- const buyTokenAddressLower = buyTokenAddress.toLowerCase();
3719
+ const buyTokenAddressLower = (0, import_sdk_common15.getAddressKey)(buyTokenAddress);
3717
3720
  const sourceTokens = supportedTokensState[sellTokenChainId];
3718
3721
  const targetTokens = supportedTokensState[buyTokenChainId];
3719
3722
  const targetTokenSymbol = targetTokens && targetTokens[buyTokenAddressLower]?.symbol?.toLowerCase();
@@ -3784,7 +3787,7 @@ var AcrossBridgeProvider = class {
3784
3787
  return null;
3785
3788
  }
3786
3789
  const orderUid = order.uid;
3787
- const adapter = (0, import_sdk_common13.getGlobalAdapter)();
3790
+ const adapter = (0, import_sdk_common15.getGlobalAdapter)();
3788
3791
  const txReceipt = await adapter.getTransactionReceipt(txHash);
3789
3792
  if (!txReceipt)
3790
3793
  return null;
@@ -3820,7 +3823,7 @@ var AcrossBridgeProvider = class {
3820
3823
  if (!this.supportedTokens) {
3821
3824
  const supportedTokens = (await this.api.getSupportedTokens()).reduce((acc, val) => {
3822
3825
  const data = acc[val.chainId] || {};
3823
- data[val.address.toLowerCase()] = val;
3826
+ data[(0, import_sdk_common15.getAddressKey)(val.address)] = val;
3824
3827
  acc[val.chainId] = data;
3825
3828
  return acc;
3826
3829
  }, {});
@@ -4302,7 +4305,7 @@ var BUNGEE_APPROVE_AND_BRIDGE_V1_ABI = [
4302
4305
  ];
4303
4306
 
4304
4307
  // src/providers/bungee/BungeeApi.ts
4305
- var import_sdk_common14 = require("@cowprotocol/sdk-common");
4308
+ var import_sdk_common16 = require("@cowprotocol/sdk-common");
4306
4309
 
4307
4310
  // src/providers/bungee/consts.ts
4308
4311
  var BUNGEE_API_PATH = "/api/v1/bungee";
@@ -4576,7 +4579,7 @@ var BungeeApi = class {
4576
4579
  * @returns True if the bungee tx data is valid, false otherwise
4577
4580
  */
4578
4581
  async verifyBungeeBuildTxData(originChainId, txData, routeId, expectedSocketRequest) {
4579
- const adapter = (0, import_sdk_common14.getGlobalAdapter)();
4582
+ const adapter = (0, import_sdk_common16.getGlobalAdapter)();
4580
4583
  const socketVerifierAddress = SocketVerifierAddresses[originChainId];
4581
4584
  if (!socketVerifierAddress) {
4582
4585
  throw new BridgeProviderQuoteError("TX_BUILD_ERROR" /* TX_BUILD_ERROR */, {
@@ -4697,13 +4700,13 @@ var BungeeApi = class {
4697
4700
  if (this.shouldAddAffiliate(apiType, baseUrl) && this.options.affiliate) {
4698
4701
  headers["affiliate"] = this.options.affiliate;
4699
4702
  }
4700
- (0, import_sdk_common14.log)(`Fetching ${apiType} API: GET ${url}. Params: ${JSON.stringify(params)}`);
4703
+ (0, import_sdk_common16.log)(`Fetching ${apiType} API: GET ${url}. Params: ${JSON.stringify(params)}`);
4701
4704
  try {
4702
4705
  const response = await fetch(url, { method: "GET", headers });
4703
4706
  if (!response.ok) {
4704
4707
  if (isInfrastructureError(response.status) && !useFallback) {
4705
4708
  this.enableFallback(apiType);
4706
- (0, import_sdk_common14.log)(
4709
+ (0, import_sdk_common16.log)(
4707
4710
  `Infrastructure error (${response.status}) detected for ${apiType} API. Enabling fallback for ${this.fallbackTimeoutMs}ms`
4708
4711
  );
4709
4712
  return this.makeApiCall(apiType, path, params, isValidResponse);
@@ -4719,7 +4722,7 @@ var BungeeApi = class {
4719
4722
  } catch (error) {
4720
4723
  if (!useFallback && isClientFetchError(error)) {
4721
4724
  this.enableFallback(apiType);
4722
- (0, import_sdk_common14.log)(`Network error detected for ${apiType} API. Enabling fallback for ${this.fallbackTimeoutMs}ms`);
4725
+ (0, import_sdk_common16.log)(`Network error detected for ${apiType} API. Enabling fallback for ${this.fallbackTimeoutMs}ms`);
4723
4726
  return this.makeApiCall(apiType, path, params, isValidResponse);
4724
4727
  }
4725
4728
  throw error;
@@ -4729,9 +4732,9 @@ var BungeeApi = class {
4729
4732
 
4730
4733
  // src/providers/bungee/createBungeeDepositCall.ts
4731
4734
  var import_sdk_config7 = require("@cowprotocol/sdk-config");
4732
- var import_sdk_common15 = require("@cowprotocol/sdk-common");
4735
+ var import_sdk_common17 = require("@cowprotocol/sdk-common");
4733
4736
  async function createBungeeDepositCall(params) {
4734
- const adapter = (0, import_sdk_common15.getGlobalAdapter)();
4737
+ const adapter = (0, import_sdk_common17.getGlobalAdapter)();
4735
4738
  const { request, quote } = params;
4736
4739
  const { bungeeQuote, buildTx } = quote;
4737
4740
  const bridge = bungeeQuote.routeBridge;
@@ -4769,7 +4772,7 @@ async function createBungeeDepositCall(params) {
4769
4772
  fullData
4770
4773
  // data
4771
4774
  ]);
4772
- const value = request.sellTokenAddress.toLowerCase() === import_sdk_config7.ETH_ADDRESS.toLowerCase() ? BigInt(bridgeInputAmount) : 0n;
4775
+ const value = (0, import_sdk_common17.areAddressesEqual)(request.sellTokenAddress, import_sdk_config7.ETH_ADDRESS) ? BigInt(bridgeInputAmount) : 0n;
4773
4776
  const finalValue = value + nativeTokenExtraFee;
4774
4777
  const to = BungeeApproveAndBridgeV1Addresses[request.sellTokenChainId];
4775
4778
  if (!to) {
@@ -4820,7 +4823,7 @@ async function getBridgingStatusFromEvents(events, getAcrossStatus) {
4820
4823
  // src/providers/bungee/BungeeBridgeProvider.ts
4821
4824
  var import_sdk_config8 = require("@cowprotocol/sdk-config");
4822
4825
  var import_sdk_cow_shed2 = require("@cowprotocol/sdk-cow-shed");
4823
- var import_sdk_common16 = require("@cowprotocol/sdk-common");
4826
+ var import_sdk_common18 = require("@cowprotocol/sdk-common");
4824
4827
  var BUNGEE_HOOK_DAPP_ID = `${HOOK_DAPP_BRIDGE_PROVIDER_PREFIX2}/bungee`;
4825
4828
  var BUNGEE_SUPPORTED_NETWORKS = [import_sdk_config8.mainnet, import_sdk_config8.polygon, import_sdk_config8.arbitrumOne, import_sdk_config8.base, import_sdk_config8.optimism, import_sdk_config8.avalanche, import_sdk_config8.gnosisChain];
4826
4829
  var SLIPPAGE_TOLERANCE_BPS2 = 0;
@@ -4830,7 +4833,7 @@ var BungeeBridgeProvider = class {
4830
4833
  this.options = options;
4831
4834
  const adapter = _adapter || options.cowShedOptions?.adapter;
4832
4835
  if (adapter) {
4833
- (0, import_sdk_common16.setGlobalAdapter)(adapter);
4836
+ (0, import_sdk_common18.setGlobalAdapter)(adapter);
4834
4837
  }
4835
4838
  this.api = new BungeeApi(options.apiOptions);
4836
4839
  this.cowShedSdk = new import_sdk_cow_shed2.CowShedSdk(adapter, options.cowShedOptions?.factoryOptions);
@@ -4982,7 +4985,7 @@ var BungeeBridgeProvider = class {
4982
4985
  };
4983
4986
 
4984
4987
  // src/providers/near-intents/NearIntentsBridgeProvider.ts
4985
- var import_sdk_common18 = require("@cowprotocol/sdk-common");
4988
+ var import_sdk_common20 = require("@cowprotocol/sdk-common");
4986
4989
  var import_sdk_config11 = require("@cowprotocol/sdk-config");
4987
4990
  var import_sdk_cow_shed3 = require("@cowprotocol/sdk-cow-shed");
4988
4991
  var import_sdk_order_book8 = require("@cowprotocol/sdk-order-book");
@@ -5084,7 +5087,7 @@ var ATTESTATOR_ADDRESS = "0x0073DD100b51C555E41B2a452E5933ef76F42790";
5084
5087
 
5085
5088
  // src/providers/near-intents/util.ts
5086
5089
  var import_json_stable_stringify3 = __toESM(require("json-stable-stringify"));
5087
- var import_sdk_common17 = require("@cowprotocol/sdk-common");
5090
+ var import_sdk_common19 = require("@cowprotocol/sdk-common");
5088
5091
  var import_sdk_config10 = require("@cowprotocol/sdk-config");
5089
5092
  var calculateDeadline = (seconds) => {
5090
5093
  const secs = Number(seconds);
@@ -5125,11 +5128,11 @@ var getTokenByAddressAndChainId = (tokens, targetTokenAddress, targetTokenChainI
5125
5128
  const chainId = NEAR_INTENTS_BLOCKCHAIN_CHAIN_IDS[token.blockchain];
5126
5129
  if (!chainId)
5127
5130
  return false;
5128
- if (targetTokenAddress.toLowerCase() === import_sdk_config10.ETH_ADDRESS.toLowerCase()) {
5131
+ if ((0, import_sdk_common19.areAddressesEqual)(targetTokenAddress, import_sdk_config10.ETH_ADDRESS)) {
5129
5132
  return chainId === targetTokenChainId && !token.contractAddress;
5130
5133
  }
5131
5134
  const tokenAddress = token.contractAddress || import_sdk_config10.ETH_ADDRESS;
5132
- return tokenAddress?.toLowerCase() === targetTokenAddress.toLowerCase() && chainId === targetTokenChainId;
5135
+ return (0, import_sdk_common19.areAddressesEqual)(tokenAddress, targetTokenAddress) && chainId === targetTokenChainId;
5133
5136
  });
5134
5137
  };
5135
5138
  var hashQuote = ({
@@ -5137,7 +5140,7 @@ var hashQuote = ({
5137
5140
  quoteRequest,
5138
5141
  timestamp
5139
5142
  }) => {
5140
- const adapter = (0, import_sdk_common17.getGlobalAdapter)();
5143
+ const adapter = (0, import_sdk_common19.getGlobalAdapter)();
5141
5144
  const stringifiedQuote = (0, import_json_stable_stringify3.default)({
5142
5145
  dry: false,
5143
5146
  swapType: quoteRequest.swapType,
@@ -5195,7 +5198,7 @@ var NearIntentsBridgeProvider = class {
5195
5198
  constructor(options, _adapter) {
5196
5199
  const adapter = _adapter || options?.cowShedOptions?.adapter;
5197
5200
  if (adapter) {
5198
- (0, import_sdk_common18.setGlobalAdapter)(adapter);
5201
+ (0, import_sdk_common20.setGlobalAdapter)(adapter);
5199
5202
  }
5200
5203
  this.api = new NearIntentsApi(options?.apiKey);
5201
5204
  this.cowShedSdk = new import_sdk_cow_shed3.CowShedSdk(adapter, options?.cowShedOptions?.factoryOptions);
@@ -5220,10 +5223,10 @@ var NearIntentsBridgeProvider = class {
5220
5223
  const { sourceTokens, targetTokens } = tokens.reduce(
5221
5224
  (acc, token) => {
5222
5225
  if (token.chainId === sellTokenChainId) {
5223
- acc.sourceTokens.set(token.address.toLowerCase(), token);
5226
+ acc.sourceTokens.set((0, import_sdk_common20.getAddressKey)(token.address), token);
5224
5227
  }
5225
5228
  if (token.chainId === buyTokenChainId) {
5226
- acc.targetTokens.set(token.address.toLowerCase(), token);
5229
+ acc.targetTokens.set((0, import_sdk_common20.getAddressKey)(token.address), token);
5227
5230
  }
5228
5231
  return acc;
5229
5232
  },
@@ -5232,7 +5235,7 @@ var NearIntentsBridgeProvider = class {
5232
5235
  targetTokens: /* @__PURE__ */ new Map()
5233
5236
  }
5234
5237
  );
5235
- const targetToken = targetTokens.get(buyTokenAddress.toLowerCase());
5238
+ const targetToken = targetTokens.get((0, import_sdk_common20.getAddressKey)(buyTokenAddress));
5236
5239
  if (!targetToken)
5237
5240
  return [];
5238
5241
  return Array.from(sourceTokens.values());
@@ -5270,7 +5273,7 @@ var NearIntentsBridgeProvider = class {
5270
5273
  referral: REFERRAL
5271
5274
  });
5272
5275
  const recoveredDepositAddress = await this.recoverDepositAddress(quoteResponse);
5273
- if (recoveredDepositAddress?.address.toLowerCase() !== ATTESTATOR_ADDRESS.toLowerCase()) {
5276
+ if (!recoveredDepositAddress || !(0, import_sdk_common20.areAddressesEqual)(recoveredDepositAddress.address, ATTESTATOR_ADDRESS)) {
5274
5277
  throw new BridgeProviderQuoteError("QUOTE_DOES_NOT_MATCH_DEPOSIT_ADDRESS" /* QUOTE_DOES_NOT_MATCH_DEPOSIT_ADDRESS */);
5275
5278
  }
5276
5279
  const { quote, timestamp: isoDate } = quoteResponse;
@@ -5406,7 +5409,7 @@ var NearIntentsBridgeProvider = class {
5406
5409
  try {
5407
5410
  if (!quote?.depositAddress)
5408
5411
  return null;
5409
- const utils = (0, import_sdk_common18.getGlobalAdapter)().utils;
5412
+ const utils = (0, import_sdk_common20.getGlobalAdapter)().utils;
5410
5413
  const { hash: quoteHash, stringifiedQuote } = hashQuote({ quote, quoteRequest, timestamp });
5411
5414
  const depositAddr = utils.getChecksumAddress(quote.depositAddress);
5412
5415
  const { signature } = await this.api.getAttestation({
package/dist/index.mjs CHANGED
@@ -176,16 +176,17 @@ async function getCrossChainOrder(params) {
176
176
  import { TradingSdk } from "@cowprotocol/sdk-trading";
177
177
  import { OrderBookApi as OrderBookApi2 } from "@cowprotocol/sdk-order-book";
178
178
  import { ALL_SUPPORTED_CHAINS } from "@cowprotocol/sdk-config";
179
- import { enableLogging, setGlobalAdapter, TTLCache as TTLCache2 } from "@cowprotocol/sdk-common";
179
+ import { enableLogging, getAddressKey as getAddressKey4, setGlobalAdapter, TTLCache as TTLCache2 } from "@cowprotocol/sdk-common";
180
180
 
181
181
  // src/BridgingSdk/helpers.ts
182
+ import { getAddressKey } from "@cowprotocol/sdk-common";
182
183
  var getCacheKey = ({
183
184
  id,
184
185
  buyChainId,
185
186
  sellChainId = "noSellChainID",
186
187
  tokenAddress = "noTokenAddress"
187
188
  }) => {
188
- return `${id}-${buyChainId}-${sellChainId}-${tokenAddress.toLowerCase()}`;
189
+ return `${id}-${buyChainId}-${sellChainId}-${getAddressKey(tokenAddress)}`;
189
190
  };
190
191
 
191
192
  // src/BridgingSdk/getQuoteWithoutBridge.ts
@@ -255,10 +256,11 @@ function getHookMockForCostEstimation(gasLimit) {
255
256
  import { getGlobalAdapter as getGlobalAdapter2, jsonWithBigintReplacer as jsonWithBigintReplacer2, log as log2 } from "@cowprotocol/sdk-common";
256
257
 
257
258
  // src/BridgingSdk/determineIntermediateToken.ts
258
- import { areAddressesEqual, isNativeToken, isWrappedNativeToken } from "@cowprotocol/sdk-common";
259
+ import { areAddressesEqual, getAddressKey as getAddressKey3, isNativeToken, isWrappedNativeToken } from "@cowprotocol/sdk-common";
259
260
 
260
261
  // src/BridgingSdk/tokenPriority.ts
261
262
  import { SupportedChainId } from "@cowprotocol/sdk-config";
263
+ import { getAddressKey as getAddressKey2 } from "@cowprotocol/sdk-common";
262
264
  var PRIORITY_STABLECOIN_TOKENS = {
263
265
  [SupportedChainId.MAINNET]: /* @__PURE__ */ new Set([
264
266
  "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",
@@ -307,7 +309,7 @@ var PRIORITY_STABLECOIN_TOKENS = {
307
309
  [SupportedChainId.LINEA]: /* @__PURE__ */ new Set([
308
310
  "0x176211869ca2b568f2a7d4ee941e073a821ee1ff",
309
311
  // USDC
310
- "0xA219439258ca9da29E9Cc4cE5596924745e12B93"
312
+ "0xa219439258ca9da29e9cc4ce5596924745e12b93"
311
313
  // USDT
312
314
  ]),
313
315
  [SupportedChainId.SEPOLIA]: /* @__PURE__ */ new Set([
@@ -319,10 +321,10 @@ function isStablecoinPriorityToken(chainId, tokenAddress) {
319
321
  const chainTokens = PRIORITY_STABLECOIN_TOKENS[chainId];
320
322
  if (!chainTokens)
321
323
  return false;
322
- return chainTokens.has(tokenAddress.toLowerCase());
324
+ return chainTokens.has(getAddressKey2(tokenAddress));
323
325
  }
324
326
  function isCorrelatedToken(tokenAddress, correlatedTokens) {
325
- return correlatedTokens.has(tokenAddress.toLowerCase());
327
+ return correlatedTokens.has(getAddressKey2(tokenAddress));
326
328
  }
327
329
 
328
330
  // src/BridgingSdk/determineIntermediateToken.ts
@@ -372,7 +374,7 @@ async function resolveCorrelatedTokens(sourceChainId, getCorrelatedTokens) {
372
374
  if (getCorrelatedTokens) {
373
375
  try {
374
376
  const tokens = await getCorrelatedTokens(sourceChainId);
375
- return new Set(tokens.map((t) => t.toLowerCase()));
377
+ return new Set(tokens.map((t) => getAddressKey3(t)));
376
378
  } catch (error) {
377
379
  console.warn(
378
380
  "[determineIntermediateToken] Failed to fetch correlated tokens, falling back to basic priority",
@@ -1243,9 +1245,9 @@ var BridgingSdk = class {
1243
1245
  const tokens = results.reduce((tokens2, result) => {
1244
1246
  if (result.status === "fulfilled" && result.value.tokens) {
1245
1247
  result.value.tokens.forEach((token) => {
1246
- const addressLower = token.address.toLowerCase();
1247
- if (!tokens2.get(addressLower)) {
1248
- tokens2.set(addressLower, token);
1248
+ const addressKey = getAddressKey4(token.address);
1249
+ if (!tokens2.get(addressKey)) {
1250
+ tokens2.set(addressKey, token);
1249
1251
  }
1250
1252
  });
1251
1253
  }
@@ -1548,7 +1550,7 @@ var ACROSS_MATH_CONTRACT_ADDRESSES = {
1548
1550
 
1549
1551
  // src/providers/across/util.ts
1550
1552
  import { OrderKind as OrderKind2 } from "@cowprotocol/sdk-order-book";
1551
- import { areAddressesEqual as areAddressesEqual2, getGlobalAdapter as getGlobalAdapter5, isCoWSettlementContract } from "@cowprotocol/sdk-common";
1553
+ import { areAddressesEqual as areAddressesEqual2, getAddressKey as getAddressKey5, getGlobalAdapter as getGlobalAdapter5, isCoWSettlementContract } from "@cowprotocol/sdk-common";
1552
1554
  import stringify from "json-stable-stringify";
1553
1555
  var PCT_100_PERCENT = 10n ** 18n;
1554
1556
  function toBridgeQuoteResult(request, slippageBps, suggestedFees) {
@@ -1635,14 +1637,15 @@ function mapAcrossStatusToBridgeStatus(status) {
1635
1637
  return AcrossStatusToBridgeStatus[status];
1636
1638
  }
1637
1639
  function getAcrossDepositEvents(chainId, logs) {
1638
- const spookContractAddress = ACROSS_SPOOK_CONTRACT_ADDRESSES[chainId]?.toLowerCase();
1640
+ const addr = ACROSS_SPOOK_CONTRACT_ADDRESSES[chainId];
1641
+ const spookContractAddress = addr ? getAddressKey5(addr) : void 0;
1639
1642
  if (!spookContractAddress) {
1640
1643
  return [];
1641
1644
  }
1642
1645
  const acrossDepositInterface = ACROSS_DEPOSIT_EVENT_INTERFACE();
1643
1646
  const ACROSS_DEPOSIT_EVENT_TOPIC = acrossDepositInterface.getEventTopic("FundsDeposited");
1644
1647
  const depositEvents = logs.filter((log7) => {
1645
- return log7.address.toLocaleLowerCase() === spookContractAddress && log7.topics[0] === ACROSS_DEPOSIT_EVENT_TOPIC;
1648
+ return getAddressKey5(log7.address) === spookContractAddress && log7.topics[0] === ACROSS_DEPOSIT_EVENT_TOPIC;
1646
1649
  });
1647
1650
  return depositEvents.map((event) => {
1648
1651
  const parsedLog = acrossDepositInterface.parseLog(event);
@@ -3611,7 +3614,7 @@ async function getGasLimitEstimationForHook({
3611
3614
  }
3612
3615
 
3613
3616
  // src/providers/across/AcrossBridgeProvider.ts
3614
- import { getGlobalAdapter as getGlobalAdapter8, setGlobalAdapter as setGlobalAdapter2 } from "@cowprotocol/sdk-common";
3617
+ import { getAddressKey as getAddressKey6, getGlobalAdapter as getGlobalAdapter8, setGlobalAdapter as setGlobalAdapter2 } from "@cowprotocol/sdk-common";
3615
3618
  import {
3616
3619
  arbitrumOne,
3617
3620
  base,
@@ -3663,7 +3666,7 @@ var AcrossBridgeProvider = class {
3663
3666
  }
3664
3667
  const { sellTokenChainId, buyTokenChainId, buyTokenAddress } = request;
3665
3668
  const supportedTokensState = await this.getSupportedTokensState();
3666
- const buyTokenAddressLower = buyTokenAddress.toLowerCase();
3669
+ const buyTokenAddressLower = getAddressKey6(buyTokenAddress);
3667
3670
  const sourceTokens = supportedTokensState[sellTokenChainId];
3668
3671
  const targetTokens = supportedTokensState[buyTokenChainId];
3669
3672
  const targetTokenSymbol = targetTokens && targetTokens[buyTokenAddressLower]?.symbol?.toLowerCase();
@@ -3770,7 +3773,7 @@ var AcrossBridgeProvider = class {
3770
3773
  if (!this.supportedTokens) {
3771
3774
  const supportedTokens = (await this.api.getSupportedTokens()).reduce((acc, val) => {
3772
3775
  const data = acc[val.chainId] || {};
3773
- data[val.address.toLowerCase()] = val;
3776
+ data[getAddressKey6(val.address)] = val;
3774
3777
  acc[val.chainId] = data;
3775
3778
  return acc;
3776
3779
  }, {});
@@ -4679,7 +4682,7 @@ var BungeeApi = class {
4679
4682
 
4680
4683
  // src/providers/bungee/createBungeeDepositCall.ts
4681
4684
  import { ETH_ADDRESS } from "@cowprotocol/sdk-config";
4682
- import { getGlobalAdapter as getGlobalAdapter10 } from "@cowprotocol/sdk-common";
4685
+ import { areAddressesEqual as areAddressesEqual3, getGlobalAdapter as getGlobalAdapter10 } from "@cowprotocol/sdk-common";
4683
4686
  async function createBungeeDepositCall(params) {
4684
4687
  const adapter = getGlobalAdapter10();
4685
4688
  const { request, quote } = params;
@@ -4719,7 +4722,7 @@ async function createBungeeDepositCall(params) {
4719
4722
  fullData
4720
4723
  // data
4721
4724
  ]);
4722
- const value = request.sellTokenAddress.toLowerCase() === ETH_ADDRESS.toLowerCase() ? BigInt(bridgeInputAmount) : 0n;
4725
+ const value = areAddressesEqual3(request.sellTokenAddress, ETH_ADDRESS) ? BigInt(bridgeInputAmount) : 0n;
4723
4726
  const finalValue = value + nativeTokenExtraFee;
4724
4727
  const to = BungeeApproveAndBridgeV1Addresses[request.sellTokenChainId];
4725
4728
  if (!to) {
@@ -4941,7 +4944,7 @@ var BungeeBridgeProvider = class {
4941
4944
  };
4942
4945
 
4943
4946
  // src/providers/near-intents/NearIntentsBridgeProvider.ts
4944
- import { getGlobalAdapter as getGlobalAdapter12, setGlobalAdapter as setGlobalAdapter4 } from "@cowprotocol/sdk-common";
4947
+ import { areAddressesEqual as areAddressesEqual5, getAddressKey as getAddressKey7, getGlobalAdapter as getGlobalAdapter12, setGlobalAdapter as setGlobalAdapter4 } from "@cowprotocol/sdk-common";
4945
4948
  import { ETH_ADDRESS as ETH_ADDRESS3 } from "@cowprotocol/sdk-config";
4946
4949
  import { CowShedSdk as CowShedSdk3 } from "@cowprotocol/sdk-cow-shed";
4947
4950
  import { OrderKind as OrderKind6 } from "@cowprotocol/sdk-order-book";
@@ -5043,7 +5046,7 @@ var ATTESTATOR_ADDRESS = "0x0073DD100b51C555E41B2a452E5933ef76F42790";
5043
5046
 
5044
5047
  // src/providers/near-intents/util.ts
5045
5048
  import stringify3 from "json-stable-stringify";
5046
- import { getGlobalAdapter as getGlobalAdapter11 } from "@cowprotocol/sdk-common";
5049
+ import { areAddressesEqual as areAddressesEqual4, getGlobalAdapter as getGlobalAdapter11 } from "@cowprotocol/sdk-common";
5047
5050
  import { ETH_ADDRESS as ETH_ADDRESS2, isEvmChain } from "@cowprotocol/sdk-config";
5048
5051
  var calculateDeadline = (seconds) => {
5049
5052
  const secs = Number(seconds);
@@ -5084,11 +5087,11 @@ var getTokenByAddressAndChainId = (tokens, targetTokenAddress, targetTokenChainI
5084
5087
  const chainId = NEAR_INTENTS_BLOCKCHAIN_CHAIN_IDS[token.blockchain];
5085
5088
  if (!chainId)
5086
5089
  return false;
5087
- if (targetTokenAddress.toLowerCase() === ETH_ADDRESS2.toLowerCase()) {
5090
+ if (areAddressesEqual4(targetTokenAddress, ETH_ADDRESS2)) {
5088
5091
  return chainId === targetTokenChainId && !token.contractAddress;
5089
5092
  }
5090
5093
  const tokenAddress = token.contractAddress || ETH_ADDRESS2;
5091
- return tokenAddress?.toLowerCase() === targetTokenAddress.toLowerCase() && chainId === targetTokenChainId;
5094
+ return areAddressesEqual4(tokenAddress, targetTokenAddress) && chainId === targetTokenChainId;
5092
5095
  });
5093
5096
  };
5094
5097
  var hashQuote = ({
@@ -5179,10 +5182,10 @@ var NearIntentsBridgeProvider = class {
5179
5182
  const { sourceTokens, targetTokens } = tokens.reduce(
5180
5183
  (acc, token) => {
5181
5184
  if (token.chainId === sellTokenChainId) {
5182
- acc.sourceTokens.set(token.address.toLowerCase(), token);
5185
+ acc.sourceTokens.set(getAddressKey7(token.address), token);
5183
5186
  }
5184
5187
  if (token.chainId === buyTokenChainId) {
5185
- acc.targetTokens.set(token.address.toLowerCase(), token);
5188
+ acc.targetTokens.set(getAddressKey7(token.address), token);
5186
5189
  }
5187
5190
  return acc;
5188
5191
  },
@@ -5191,7 +5194,7 @@ var NearIntentsBridgeProvider = class {
5191
5194
  targetTokens: /* @__PURE__ */ new Map()
5192
5195
  }
5193
5196
  );
5194
- const targetToken = targetTokens.get(buyTokenAddress.toLowerCase());
5197
+ const targetToken = targetTokens.get(getAddressKey7(buyTokenAddress));
5195
5198
  if (!targetToken)
5196
5199
  return [];
5197
5200
  return Array.from(sourceTokens.values());
@@ -5229,7 +5232,7 @@ var NearIntentsBridgeProvider = class {
5229
5232
  referral: REFERRAL
5230
5233
  });
5231
5234
  const recoveredDepositAddress = await this.recoverDepositAddress(quoteResponse);
5232
- if (recoveredDepositAddress?.address.toLowerCase() !== ATTESTATOR_ADDRESS.toLowerCase()) {
5235
+ if (!recoveredDepositAddress || !areAddressesEqual5(recoveredDepositAddress.address, ATTESTATOR_ADDRESS)) {
5233
5236
  throw new BridgeProviderQuoteError("QUOTE_DOES_NOT_MATCH_DEPOSIT_ADDRESS" /* QUOTE_DOES_NOT_MATCH_DEPOSIT_ADDRESS */);
5234
5237
  }
5235
5238
  const { quote, timestamp: isoDate } = quoteResponse;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cowprotocol/sdk-bridging",
3
- "version": "3.1.2",
3
+ "version": "3.2.0",
4
4
  "description": "Bridging for CoW Protocol",
5
5
  "repository": {
6
6
  "type": "git",
@@ -21,14 +21,14 @@
21
21
  "dependencies": {
22
22
  "@defuse-protocol/one-click-sdk-typescript": "0.1.1-0.2",
23
23
  "json-stable-stringify": "^1.3.0",
24
- "@cowprotocol/sdk-app-data": "4.6.11",
24
+ "@cowprotocol/sdk-common": "0.8.2",
25
+ "@cowprotocol/sdk-app-data": "4.6.12",
25
26
  "@cowprotocol/sdk-config": "1.1.2",
26
- "@cowprotocol/sdk-contracts-ts": "2.1.2",
27
+ "@cowprotocol/sdk-cow-shed": "0.3.3",
28
+ "@cowprotocol/sdk-contracts-ts": "2.2.0",
27
29
  "@cowprotocol/sdk-order-book": "2.0.3",
28
- "@cowprotocol/sdk-common": "0.8.2",
29
- "@cowprotocol/sdk-cow-shed": "0.3.2",
30
- "@cowprotocol/sdk-weiroll": "0.1.25",
31
- "@cowprotocol/sdk-trading": "1.1.2"
30
+ "@cowprotocol/sdk-trading": "1.2.0",
31
+ "@cowprotocol/sdk-weiroll": "0.1.26"
32
32
  },
33
33
  "devDependencies": {
34
34
  "@types/jest": "^29.4.0",
@@ -44,10 +44,10 @@
44
44
  "typescript": "^5.2.2",
45
45
  "viem": "^2.28.4",
46
46
  "@cow-sdk/typescript-config": "0.0.0-beta.0",
47
- "@cowprotocol/sdk-ethers-v5-adapter": "0.3.14",
48
- "@cowprotocol/sdk-ethers-v6-adapter": "0.3.14",
49
- "@cowprotocol/sdk-order-signing": "0.2.2",
50
- "@cowprotocol/sdk-viem-adapter": "0.3.14"
47
+ "@cowprotocol/sdk-ethers-v6-adapter": "0.4.0",
48
+ "@cowprotocol/sdk-ethers-v5-adapter": "0.4.0",
49
+ "@cowprotocol/sdk-viem-adapter": "0.3.14",
50
+ "@cowprotocol/sdk-order-signing": "0.2.3"
51
51
  },
52
52
  "scripts": {
53
53
  "build": "tsup src/index.ts --format esm,cjs --dts",