@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.
- package/dist/index.js +85 -82
- package/dist/index.mjs +29 -26
- 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
|
|
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}-${
|
|
250
|
+
return `${id}-${buyChainId}-${sellChainId}-${(0, import_sdk_common.getAddressKey)(tokenAddress)}`;
|
|
250
251
|
};
|
|
251
252
|
|
|
252
253
|
// src/BridgingSdk/getQuoteWithoutBridge.ts
|
|
253
|
-
var
|
|
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,
|
|
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
|
|
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
|
|
277
|
+
var import_sdk_common3 = require("@cowprotocol/sdk-common");
|
|
277
278
|
async function getBridgeSignedHook(provider, bridgeRequest, { signer, hookGasLimit, swapResult, validToOverride }) {
|
|
278
|
-
const adapter = (0,
|
|
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
|
|
313
|
+
var import_sdk_common6 = require("@cowprotocol/sdk-common");
|
|
313
314
|
|
|
314
315
|
// src/BridgingSdk/determineIntermediateToken.ts
|
|
315
|
-
var
|
|
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
|
-
"
|
|
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(
|
|
381
|
+
return chainTokens.has((0, import_sdk_common4.getAddressKey)(tokenAddress));
|
|
380
382
|
}
|
|
381
383
|
function isCorrelatedToken(tokenAddress, correlatedTokens) {
|
|
382
|
-
return correlatedTokens.has(
|
|
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,
|
|
397
|
-
const filteredTokens = allowIntermediateEqSellToken ? intermediateTokens : intermediateTokens.filter((token) => !(0,
|
|
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,
|
|
400
|
-
if ((0,
|
|
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,
|
|
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) =>
|
|
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,
|
|
461
|
+
const adapter = (0, import_sdk_common6.getGlobalAdapter)();
|
|
460
462
|
const signer = signerLike ? adapter.createSigner(signerLike) : adapter.signer;
|
|
461
|
-
(0,
|
|
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,
|
|
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,
|
|
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,
|
|
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
|
-
|
|
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,
|
|
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,
|
|
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,
|
|
737
|
+
(0, import_sdk_common7.log)(`Bridge hook for swap: ${JSON.stringify(bridgeHook)}`);
|
|
736
738
|
swapResult.tradeParameters.receiver = bridgeHook.recipient;
|
|
737
|
-
(0,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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
|
|
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
|
|
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
|
|
1304
|
-
if (!tokens2.get(
|
|
1305
|
-
tokens2.set(
|
|
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
|
|
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,
|
|
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
|
|
1543
|
+
var import_sdk_common10 = require("@cowprotocol/sdk-common");
|
|
1542
1544
|
var ACROSS_DEPOSIT_EVENT_INTERFACE = () => {
|
|
1543
|
-
return (0,
|
|
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,
|
|
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
|
|
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,
|
|
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
|
|
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
|
|
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,
|
|
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
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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
|
|
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,
|
|
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
|
|
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,
|
|
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
|
|
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,
|
|
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 =
|
|
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,
|
|
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
|
|
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
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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
|
|
4735
|
+
var import_sdk_common17 = require("@cowprotocol/sdk-common");
|
|
4733
4736
|
async function createBungeeDepositCall(params) {
|
|
4734
|
-
const adapter = (0,
|
|
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
|
|
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
|
|
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,
|
|
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
|
|
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
|
|
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 (
|
|
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
|
|
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,
|
|
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,
|
|
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
|
|
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
|
|
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(
|
|
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
|
|
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,
|
|
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
|
|
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
|
-
"
|
|
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
|
|
324
|
+
return chainTokens.has(getAddressKey2(tokenAddress));
|
|
323
325
|
}
|
|
324
326
|
function isCorrelatedToken(tokenAddress, correlatedTokens) {
|
|
325
|
-
return correlatedTokens.has(tokenAddress
|
|
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
|
|
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
|
|
1247
|
-
if (!tokens2.get(
|
|
1248
|
-
tokens2.set(
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
5185
|
+
acc.sourceTokens.set(getAddressKey7(token.address), token);
|
|
5183
5186
|
}
|
|
5184
5187
|
if (token.chainId === buyTokenChainId) {
|
|
5185
|
-
acc.targetTokens.set(token.address
|
|
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
|
|
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
|
|
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.
|
|
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-
|
|
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-
|
|
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-
|
|
29
|
-
"@cowprotocol/sdk-
|
|
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-
|
|
48
|
-
"@cowprotocol/sdk-ethers-
|
|
49
|
-
"@cowprotocol/sdk-
|
|
50
|
-
"@cowprotocol/sdk-
|
|
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",
|