@cowprotocol/sdk-bridging 1.0.0 → 1.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.mts CHANGED
@@ -1301,4 +1301,4 @@ declare class NearIntentsBridgeProvider implements ReceiverAccountBridgeProvider
1301
1301
  } | null>;
1302
1302
  }
1303
1303
 
1304
- export { AcrossBridgeProvider, type AcrossBridgeProviderOptions, type AcrossQuoteResult, type BestQuoteProgressCallback, type BestQuoteProviderContext, type BridgeCallDetails, type BridgeCosts, type BridgeDeposit, type BridgeHook, BridgeOrderParsingError, type BridgeProvider, BridgeProviderError, type BridgeProviderInfo, BridgeProviderQuoteError, type BridgeProviderType, type BridgeQuoteAmountsAndCosts, type BridgeQuoteAndPost, BridgeQuoteErrorPriorities, BridgeQuoteErrors, type BridgeQuoteResult, type BridgeQuoteResults, BridgeStatus, type BridgeStatusResult, type BridgingDepositParams, BridgingSdk, BungeeBridgeProvider, type BungeeBridgeProviderOptions, type BungeeQuoteResult, type BuyTokensParams, COW_SHED_PROXY_CREATION_GAS, type CrossChainOrder, type CrossChainQuoteAndPost, DEFAULT_BRIDGE_SLIPPAGE_BPS, DEFAULT_EXTRA_GAS_FOR_HOOK_ESTIMATION, DEFAULT_EXTRA_GAS_PROXY_CREATION, DEFAULT_GAS_COST_FOR_HOOK_ESTIMATION, type DefaultBridgeProvider, type GetProviderBuyTokens, HOOK_DAPP_BRIDGE_PROVIDER_PREFIX, type HookBridgeProvider, type MultiQuoteOptions, type MultiQuoteProgressCallback, type MultiQuoteRequest, type MultiQuoteResult, NearIntentsBridgeProvider, type NearIntentsBridgeProviderOptions, type NearIntentsQuoteResult, type ProviderQuoteContext, type QuoteBridgeRequest, type QuoteBridgeRequestWithoutAmount, RAW_PROVIDERS_FILES_PATH, type ReceiverAccountBridgeProvider, assertIsBridgeQuoteAndPost, assertIsQuoteAndPost, getCrossChainOrder, getPostHooks, isAppDoc, isBridgeQuoteAndPost, isHookBridgeProvider, isQuoteAndPost, isReceiverAccountBridgeProvider };
1304
+ export { AcrossBridgeProvider, type AcrossBridgeProviderOptions, type AcrossQuoteResult, type BestQuoteProgressCallback, type BestQuoteProviderContext, type BridgeCallDetails, type BridgeCosts, type BridgeDeposit, type BridgeHook, BridgeOrderParsingError, type BridgeProvider, BridgeProviderError, type BridgeProviderInfo, BridgeProviderQuoteError, type BridgeProviderType, type BridgeQuoteAmountsAndCosts, type BridgeQuoteAndPost, BridgeQuoteErrorPriorities, BridgeQuoteErrors, type BridgeQuoteResult, type BridgeQuoteResults, BridgeStatus, type BridgeStatusResult, type BridgingDepositParams, BridgingSdk, BungeeBridgeProvider, type BungeeBridgeProviderOptions, type BungeeQuoteResult, type BuyTokensParams, COW_SHED_PROXY_CREATION_GAS, type CrossChainOrder, type CrossChainQuoteAndPost, DEFAULT_BRIDGE_SLIPPAGE_BPS, DEFAULT_EXTRA_GAS_FOR_HOOK_ESTIMATION, DEFAULT_EXTRA_GAS_PROXY_CREATION, DEFAULT_GAS_COST_FOR_HOOK_ESTIMATION, type DefaultBridgeProvider, type GetProviderBuyTokens, HOOK_DAPP_BRIDGE_PROVIDER_PREFIX, type HookBridgeProvider, type MultiQuoteContext, type MultiQuoteOptions, type MultiQuoteProgressCallback, type MultiQuoteRequest, type MultiQuoteResult, NearIntentsBridgeProvider, type NearIntentsBridgeProviderOptions, type NearIntentsQuoteResult, type ProviderQuoteContext, type QuoteBridgeRequest, type QuoteBridgeRequestWithoutAmount, RAW_PROVIDERS_FILES_PATH, type ReceiverAccountBridgeProvider, assertIsBridgeQuoteAndPost, assertIsQuoteAndPost, getCrossChainOrder, getPostHooks, isAppDoc, isBridgeQuoteAndPost, isHookBridgeProvider, isQuoteAndPost, isReceiverAccountBridgeProvider };
package/dist/index.d.ts CHANGED
@@ -1301,4 +1301,4 @@ declare class NearIntentsBridgeProvider implements ReceiverAccountBridgeProvider
1301
1301
  } | null>;
1302
1302
  }
1303
1303
 
1304
- export { AcrossBridgeProvider, type AcrossBridgeProviderOptions, type AcrossQuoteResult, type BestQuoteProgressCallback, type BestQuoteProviderContext, type BridgeCallDetails, type BridgeCosts, type BridgeDeposit, type BridgeHook, BridgeOrderParsingError, type BridgeProvider, BridgeProviderError, type BridgeProviderInfo, BridgeProviderQuoteError, type BridgeProviderType, type BridgeQuoteAmountsAndCosts, type BridgeQuoteAndPost, BridgeQuoteErrorPriorities, BridgeQuoteErrors, type BridgeQuoteResult, type BridgeQuoteResults, BridgeStatus, type BridgeStatusResult, type BridgingDepositParams, BridgingSdk, BungeeBridgeProvider, type BungeeBridgeProviderOptions, type BungeeQuoteResult, type BuyTokensParams, COW_SHED_PROXY_CREATION_GAS, type CrossChainOrder, type CrossChainQuoteAndPost, DEFAULT_BRIDGE_SLIPPAGE_BPS, DEFAULT_EXTRA_GAS_FOR_HOOK_ESTIMATION, DEFAULT_EXTRA_GAS_PROXY_CREATION, DEFAULT_GAS_COST_FOR_HOOK_ESTIMATION, type DefaultBridgeProvider, type GetProviderBuyTokens, HOOK_DAPP_BRIDGE_PROVIDER_PREFIX, type HookBridgeProvider, type MultiQuoteOptions, type MultiQuoteProgressCallback, type MultiQuoteRequest, type MultiQuoteResult, NearIntentsBridgeProvider, type NearIntentsBridgeProviderOptions, type NearIntentsQuoteResult, type ProviderQuoteContext, type QuoteBridgeRequest, type QuoteBridgeRequestWithoutAmount, RAW_PROVIDERS_FILES_PATH, type ReceiverAccountBridgeProvider, assertIsBridgeQuoteAndPost, assertIsQuoteAndPost, getCrossChainOrder, getPostHooks, isAppDoc, isBridgeQuoteAndPost, isHookBridgeProvider, isQuoteAndPost, isReceiverAccountBridgeProvider };
1304
+ export { AcrossBridgeProvider, type AcrossBridgeProviderOptions, type AcrossQuoteResult, type BestQuoteProgressCallback, type BestQuoteProviderContext, type BridgeCallDetails, type BridgeCosts, type BridgeDeposit, type BridgeHook, BridgeOrderParsingError, type BridgeProvider, BridgeProviderError, type BridgeProviderInfo, BridgeProviderQuoteError, type BridgeProviderType, type BridgeQuoteAmountsAndCosts, type BridgeQuoteAndPost, BridgeQuoteErrorPriorities, BridgeQuoteErrors, type BridgeQuoteResult, type BridgeQuoteResults, BridgeStatus, type BridgeStatusResult, type BridgingDepositParams, BridgingSdk, BungeeBridgeProvider, type BungeeBridgeProviderOptions, type BungeeQuoteResult, type BuyTokensParams, COW_SHED_PROXY_CREATION_GAS, type CrossChainOrder, type CrossChainQuoteAndPost, DEFAULT_BRIDGE_SLIPPAGE_BPS, DEFAULT_EXTRA_GAS_FOR_HOOK_ESTIMATION, DEFAULT_EXTRA_GAS_PROXY_CREATION, DEFAULT_GAS_COST_FOR_HOOK_ESTIMATION, type DefaultBridgeProvider, type GetProviderBuyTokens, HOOK_DAPP_BRIDGE_PROVIDER_PREFIX, type HookBridgeProvider, type MultiQuoteContext, type MultiQuoteOptions, type MultiQuoteProgressCallback, type MultiQuoteRequest, type MultiQuoteResult, NearIntentsBridgeProvider, type NearIntentsBridgeProviderOptions, type NearIntentsQuoteResult, type ProviderQuoteContext, type QuoteBridgeRequest, type QuoteBridgeRequestWithoutAmount, RAW_PROVIDERS_FILES_PATH, type ReceiverAccountBridgeProvider, assertIsBridgeQuoteAndPost, assertIsQuoteAndPost, getCrossChainOrder, getPostHooks, isAppDoc, isBridgeQuoteAndPost, isHookBridgeProvider, isQuoteAndPost, isReceiverAccountBridgeProvider };
package/dist/index.js CHANGED
@@ -235,7 +235,7 @@ async function getCrossChainOrder(params) {
235
235
 
236
236
  // src/BridgingSdk/BridgingSdk.ts
237
237
  var import_sdk_trading2 = require("@cowprotocol/sdk-trading");
238
- var import_sdk_order_book2 = require("@cowprotocol/sdk-order-book");
238
+ var import_sdk_order_book3 = require("@cowprotocol/sdk-order-book");
239
239
  var import_sdk_config3 = require("@cowprotocol/sdk-config");
240
240
  var import_sdk_common5 = require("@cowprotocol/sdk-common");
241
241
 
@@ -253,9 +253,10 @@ var getCacheKey = ({
253
253
  var import_sdk_common = require("@cowprotocol/sdk-common");
254
254
  function getQuoteWithoutBridge(params) {
255
255
  const { quoteBridgeRequest, advancedSettings, tradingSdk } = params;
256
- const { sellTokenAddress, buyTokenAddress, amount, ...rest } = quoteBridgeRequest;
256
+ const { sellTokenAddress, buyTokenAddress, amount, swapSlippageBps, ...rest } = quoteBridgeRequest;
257
257
  const swapParams = {
258
258
  ...rest,
259
+ slippageBps: swapSlippageBps,
259
260
  chainId: quoteBridgeRequest.sellTokenChainId,
260
261
  sellToken: sellTokenAddress,
261
262
  buyToken: buyTokenAddress,
@@ -885,6 +886,7 @@ var SingleQuoteStrategy = class extends BaseSingleQuoteStrategy {
885
886
  };
886
887
 
887
888
  // src/BridgingSdk/utils.ts
889
+ var import_sdk_order_book2 = require("@cowprotocol/sdk-order-book");
888
890
  function validateCrossChainRequest(sellTokenChainId, buyTokenChainId) {
889
891
  if (sellTokenChainId === buyTokenChainId) {
890
892
  throw new BridgeProviderError(
@@ -971,6 +973,9 @@ function resolveProvidersToQuery(providerDappIds, providers) {
971
973
  function getErrorPriority(error) {
972
974
  if (!error)
973
975
  return 0;
976
+ if (error instanceof import_sdk_order_book2.OrderBookApiError) {
977
+ return 10;
978
+ }
974
979
  if (error instanceof BridgeProviderQuoteError) {
975
980
  return BridgeQuoteErrorPriorities[error.message] ?? 0;
976
981
  }
@@ -988,6 +993,34 @@ function isBetterError(error1, error2) {
988
993
  return priority1 > priority2;
989
994
  }
990
995
 
996
+ // src/BridgingSdk/strategies/utils.ts
997
+ async function fetchMultiQuote(context, tradingSdk, intermediateTokensCache) {
998
+ const { provider, quoteBridgeRequest, advancedSettings, providerTimeout } = context;
999
+ const supportedNetworks = await provider.getNetworks();
1000
+ const destinationNetwork = supportedNetworks.find((i) => i.id === quoteBridgeRequest.buyTokenChainId);
1001
+ if (!destinationNetwork)
1002
+ return;
1003
+ const baseParams = {
1004
+ swapAndBridgeRequest: quoteBridgeRequest,
1005
+ advancedSettings,
1006
+ tradingSdk,
1007
+ quoteSigner: advancedSettings?.quoteSigner
1008
+ };
1009
+ const request = intermediateTokensCache ? {
1010
+ ...baseParams,
1011
+ intermediateTokensCache
1012
+ } : baseParams;
1013
+ const quote = await Promise.race([
1014
+ getQuoteWithBridge(provider, request),
1015
+ createBridgeRequestTimeoutPromise(providerTimeout, `Provider ${provider.info.dappId}`)
1016
+ ]);
1017
+ return {
1018
+ providerDappId: provider.info.dappId,
1019
+ quote,
1020
+ error: void 0
1021
+ };
1022
+ }
1023
+
991
1024
  // src/BridgingSdk/strategies/MultiQuoteStrategy.ts
992
1025
  var DEFAULT_TOTAL_TIMEOUT_MS = 4e4;
993
1026
  var DEFAULT_PROVIDER_TIMEOUT_MS = 2e4;
@@ -1037,28 +1070,12 @@ var MultiQuoteStrategy = class extends BaseMultiQuoteStrategy {
1037
1070
  return results;
1038
1071
  }
1039
1072
  createProviderQuotePromise(context, tradingSdk) {
1040
- const { provider, quoteBridgeRequest, advancedSettings, providerTimeout, onQuoteResult, results, index } = context;
1073
+ const { provider, onQuoteResult, results, index } = context;
1041
1074
  return (async () => {
1042
1075
  try {
1043
- const baseParams = {
1044
- swapAndBridgeRequest: quoteBridgeRequest,
1045
- advancedSettings,
1046
- tradingSdk,
1047
- quoteSigner: advancedSettings?.quoteSigner
1048
- };
1049
- const request = this.intermediateTokensCache ? {
1050
- ...baseParams,
1051
- intermediateTokensCache: this.intermediateTokensCache
1052
- } : baseParams;
1053
- const quote = await Promise.race([
1054
- getQuoteWithBridge(provider, request),
1055
- createBridgeRequestTimeoutPromise(providerTimeout, `Provider ${provider.info.dappId}`)
1056
- ]);
1057
- const result = {
1058
- providerDappId: provider.info.dappId,
1059
- quote,
1060
- error: void 0
1061
- };
1076
+ const result = await fetchMultiQuote(context, tradingSdk, this.intermediateTokensCache);
1077
+ if (!result)
1078
+ return;
1062
1079
  results[index] = result;
1063
1080
  safeCallProgressiveCallback(onQuoteResult, result);
1064
1081
  } catch (error) {
@@ -1112,29 +1129,12 @@ var BestQuoteStrategy = class extends BaseBestQuoteStrategy {
1112
1129
  return bestResult.current || bestError.current;
1113
1130
  }
1114
1131
  createBestQuoteProviderPromise(context, tradingSdk) {
1115
- const { provider, quoteBridgeRequest, advancedSettings, providerTimeout, onQuoteResult, bestResult, bestError } = context;
1132
+ const { provider, onQuoteResult, bestResult, bestError } = context;
1116
1133
  return (async () => {
1117
1134
  try {
1118
- const baseParams = {
1119
- swapAndBridgeRequest: quoteBridgeRequest,
1120
- advancedSettings,
1121
- tradingSdk,
1122
- provider,
1123
- quoteSigner: advancedSettings?.quoteSigner
1124
- };
1125
- const request = this.intermediateTokensCache ? {
1126
- ...baseParams,
1127
- intermediateTokensCache: this.intermediateTokensCache
1128
- } : baseParams;
1129
- const quote = await Promise.race([
1130
- getQuoteWithBridge(provider, request),
1131
- createBridgeRequestTimeoutPromise(providerTimeout, `Provider ${provider.info.dappId}`)
1132
- ]);
1133
- const result = {
1134
- providerDappId: provider.info.dappId,
1135
- quote,
1136
- error: void 0
1137
- };
1135
+ const result = await fetchMultiQuote(context, tradingSdk, this.intermediateTokensCache);
1136
+ if (!result)
1137
+ return;
1138
1138
  if (isBetterQuote(result, bestResult.current)) {
1139
1139
  bestResult.current = result;
1140
1140
  safeCallBestQuoteCallback(onQuoteResult, result);
@@ -1185,7 +1185,7 @@ var BridgingSdk = class {
1185
1185
  (0, import_sdk_common5.enableLogging)(options.enableLogging);
1186
1186
  }
1187
1187
  const tradingSdk = options.tradingSdk ?? new import_sdk_trading2.TradingSdk();
1188
- const orderBookApi = tradingSdk?.options.orderBookApi ?? new import_sdk_order_book2.OrderBookApi();
1188
+ const orderBookApi = tradingSdk?.options.orderBookApi ?? new import_sdk_order_book3.OrderBookApi();
1189
1189
  this.config = {
1190
1190
  ...restOptions,
1191
1191
  providers,
@@ -1578,13 +1578,13 @@ var ACROSS_MATH_CONTRACT_ADDRESSES = {
1578
1578
 
1579
1579
  // src/providers/across/util.ts
1580
1580
  var import_sdk_config5 = require("@cowprotocol/sdk-config");
1581
- var import_sdk_order_book3 = require("@cowprotocol/sdk-order-book");
1581
+ var import_sdk_order_book4 = require("@cowprotocol/sdk-order-book");
1582
1582
  var import_sdk_common8 = require("@cowprotocol/sdk-common");
1583
1583
  var PCT_100_PERCENT = 10n ** 18n;
1584
1584
  function toBridgeQuoteResult(request, slippageBps, suggestedFees) {
1585
1585
  const { kind } = request;
1586
1586
  return {
1587
- isSell: kind === import_sdk_order_book3.OrderKind.SELL,
1587
+ isSell: kind === import_sdk_order_book4.OrderKind.SELL,
1588
1588
  amountsAndCosts: toAmountsAndCosts(request, slippageBps, suggestedFees),
1589
1589
  quoteTimestamp: Number(suggestedFees.timestamp),
1590
1590
  expectedFillTimeSeconds: Number(suggestedFees.estimatedFillTimeSec),
@@ -1601,9 +1601,9 @@ function toBridgeQuoteResult(request, slippageBps, suggestedFees) {
1601
1601
  }
1602
1602
  function toAmountsAndCosts(request, slippageBps, suggestedFees) {
1603
1603
  const { amount, sellTokenDecimals, buyTokenDecimals } = request;
1604
- const sellAmountBeforeFeeBig = (0, import_sdk_order_book3.getBigNumber)(amount, sellTokenDecimals);
1604
+ const sellAmountBeforeFeeBig = (0, import_sdk_order_book4.getBigNumber)(amount, sellTokenDecimals);
1605
1605
  const sellAmountBeforeFee = sellAmountBeforeFeeBig.big;
1606
- const buyAmountBeforeFee = (0, import_sdk_order_book3.getBigNumber)(sellAmountBeforeFeeBig.num, buyTokenDecimals).big;
1606
+ const buyAmountBeforeFee = (0, import_sdk_order_book4.getBigNumber)(sellAmountBeforeFeeBig.num, buyTokenDecimals).big;
1607
1607
  const totalRelayerFeePct = BigInt(suggestedFees.totalRelayFee.pct);
1608
1608
  const buyAmountAfterFee = applyPctFee(buyAmountBeforeFee, totalRelayerFeePct);
1609
1609
  const feeSellToken = sellAmountBeforeFee - applyPctFee(sellAmountBeforeFee, totalRelayerFeePct);
@@ -3644,7 +3644,7 @@ async function getGasLimitEstimationForHook({
3644
3644
  var import_sdk_common12 = require("@cowprotocol/sdk-common");
3645
3645
  var import_sdk_config6 = require("@cowprotocol/sdk-config");
3646
3646
  var import_sdk_cow_shed = require("@cowprotocol/sdk-cow-shed");
3647
- var import_sdk_order_book4 = require("@cowprotocol/sdk-order-book");
3647
+ var import_sdk_order_book5 = require("@cowprotocol/sdk-order-book");
3648
3648
  var ACROSS_HOOK_DAPP_ID = `${HOOK_DAPP_BRIDGE_PROVIDER_PREFIX}/across`;
3649
3649
  var ACROSS_SUPPORTED_NETWORKS = [import_sdk_config6.mainnet, import_sdk_config6.polygon, import_sdk_config6.arbitrumOne, import_sdk_config6.base, import_sdk_config6.optimism];
3650
3650
  var SLIPPAGE_TOLERANCE_BPS = 0;
@@ -3681,7 +3681,7 @@ var AcrossBridgeProvider = class {
3681
3681
  };
3682
3682
  }
3683
3683
  async getIntermediateTokens(request) {
3684
- if (request.kind !== import_sdk_order_book4.OrderKind.SELL) {
3684
+ if (request.kind !== import_sdk_order_book5.OrderKind.SELL) {
3685
3685
  throw new BridgeProviderQuoteError("ONLY_SELL_ORDER_SUPPORTED" /* ONLY_SELL_ORDER_SUPPORTED */, { kind: request.kind });
3686
3686
  }
3687
3687
  const { sellTokenChainId, buyTokenChainId, buyTokenAddress } = request;
@@ -3802,7 +3802,7 @@ var AcrossBridgeProvider = class {
3802
3802
  };
3803
3803
 
3804
3804
  // src/providers/bungee/BungeeBridgeProvider.ts
3805
- var import_sdk_order_book6 = require("@cowprotocol/sdk-order-book");
3805
+ var import_sdk_order_book7 = require("@cowprotocol/sdk-order-book");
3806
3806
 
3807
3807
  // src/providers/bungee/const/misc.ts
3808
3808
  var HOOK_DAPP_BRIDGE_PROVIDER_PREFIX2 = "cow-sdk://bridging/providers";
@@ -3888,13 +3888,13 @@ var BungeeBridgeNames = {
3888
3888
  };
3889
3889
 
3890
3890
  // src/providers/bungee/util.ts
3891
- var import_sdk_order_book5 = require("@cowprotocol/sdk-order-book");
3891
+ var import_sdk_order_book6 = require("@cowprotocol/sdk-order-book");
3892
3892
  function toBridgeQuoteResult2(request, slippageBps, bungeeQuoteWithBuildTx) {
3893
3893
  const { kind } = request;
3894
3894
  const { bungeeQuote, buildTx } = bungeeQuoteWithBuildTx;
3895
3895
  return {
3896
3896
  id: bungeeQuoteWithBuildTx.bungeeQuote.route.quoteId.toString(),
3897
- isSell: kind === import_sdk_order_book5.OrderKind.SELL,
3897
+ isSell: kind === import_sdk_order_book6.OrderKind.SELL,
3898
3898
  amountsAndCosts: toAmountsAndCosts2(request, slippageBps, bungeeQuote),
3899
3899
  quoteTimestamp: Number(bungeeQuote.quoteTimestamp),
3900
3900
  expectedFillTimeSeconds: Number(bungeeQuote.route.estimatedTime),
@@ -3916,10 +3916,10 @@ function toBridgeQuoteResult2(request, slippageBps, bungeeQuoteWithBuildTx) {
3916
3916
  }
3917
3917
  function toAmountsAndCosts2(request, slippageBps, bungeeQuote) {
3918
3918
  const { amount, sellTokenDecimals, buyTokenDecimals } = request;
3919
- const sellAmountBeforeFeeBig = (0, import_sdk_order_book5.getBigNumber)(amount, sellTokenDecimals);
3919
+ const sellAmountBeforeFeeBig = (0, import_sdk_order_book6.getBigNumber)(amount, sellTokenDecimals);
3920
3920
  const sellAmountBeforeFee = sellAmountBeforeFeeBig.big;
3921
3921
  const buyAmountFromBungeeQuote = bungeeQuote.route.output.amount;
3922
- const buyAmountBeforeFee = (0, import_sdk_order_book5.getBigNumber)(buyAmountFromBungeeQuote, buyTokenDecimals).big;
3922
+ const buyAmountBeforeFee = (0, import_sdk_order_book6.getBigNumber)(buyAmountFromBungeeQuote, buyTokenDecimals).big;
3923
3923
  const buyAmountAfterFee = buyAmountBeforeFee;
3924
3924
  const feeSellToken = bungeeQuote.route.routeDetails.routeFee.amount;
3925
3925
  const feeBuyToken = sellAmountBeforeFee > 0n ? BigInt(feeSellToken) * buyAmountBeforeFee / sellAmountBeforeFee : 0n;
@@ -4820,7 +4820,7 @@ var BungeeBridgeProvider = class {
4820
4820
  };
4821
4821
  }
4822
4822
  async getIntermediateTokens(request) {
4823
- if (request.kind !== import_sdk_order_book6.OrderKind.SELL) {
4823
+ if (request.kind !== import_sdk_order_book7.OrderKind.SELL) {
4824
4824
  throw new BridgeProviderQuoteError("ONLY_SELL_ORDER_SUPPORTED" /* ONLY_SELL_ORDER_SUPPORTED */, { kind: request.kind });
4825
4825
  }
4826
4826
  return this.api.getIntermediateTokens({
@@ -4948,7 +4948,7 @@ var BungeeBridgeProvider = class {
4948
4948
  var import_sdk_common17 = require("@cowprotocol/sdk-common");
4949
4949
  var import_sdk_config12 = require("@cowprotocol/sdk-config");
4950
4950
  var import_sdk_cow_shed3 = require("@cowprotocol/sdk-cow-shed");
4951
- var import_sdk_order_book7 = require("@cowprotocol/sdk-order-book");
4951
+ var import_sdk_order_book8 = require("@cowprotocol/sdk-order-book");
4952
4952
  var import_one_click_sdk_typescript2 = require("@defuse-protocol/one-click-sdk-typescript");
4953
4953
 
4954
4954
  // src/providers/near-intents/NearIntentsApi.ts
@@ -5159,7 +5159,7 @@ var NearIntentsBridgeProvider = class {
5159
5159
  };
5160
5160
  }
5161
5161
  async getIntermediateTokens(request) {
5162
- if (request.kind !== import_sdk_order_book7.OrderKind.SELL) {
5162
+ if (request.kind !== import_sdk_order_book8.OrderKind.SELL) {
5163
5163
  throw new BridgeProviderQuoteError("ONLY_SELL_ORDER_SUPPORTED" /* ONLY_SELL_ORDER_SUPPORTED */, { kind: request.kind });
5164
5164
  }
5165
5165
  const { sellTokenChainId, buyTokenChainId, buyTokenAddress, sellTokenAddress } = request;
@@ -5232,7 +5232,7 @@ var NearIntentsBridgeProvider = class {
5232
5232
  return {
5233
5233
  id: recoveredDepositAddress.quoteHash,
5234
5234
  signature: quoteResponse.signature,
5235
- isSell: request.kind === import_sdk_order_book7.OrderKind.SELL,
5235
+ isSell: request.kind === import_sdk_order_book8.OrderKind.SELL,
5236
5236
  depositAddress: quote.depositAddress,
5237
5237
  quoteTimestamp: new Date(isoDate).getTime(),
5238
5238
  expectedFillTimeSeconds: quote.timeEstimate,
package/dist/index.mjs CHANGED
@@ -192,9 +192,10 @@ var getCacheKey = ({
192
192
  import { jsonWithBigintReplacer, log } from "@cowprotocol/sdk-common";
193
193
  function getQuoteWithoutBridge(params) {
194
194
  const { quoteBridgeRequest, advancedSettings, tradingSdk } = params;
195
- const { sellTokenAddress, buyTokenAddress, amount, ...rest } = quoteBridgeRequest;
195
+ const { sellTokenAddress, buyTokenAddress, amount, swapSlippageBps, ...rest } = quoteBridgeRequest;
196
196
  const swapParams = {
197
197
  ...rest,
198
+ slippageBps: swapSlippageBps,
198
199
  chainId: quoteBridgeRequest.sellTokenChainId,
199
200
  sellToken: sellTokenAddress,
200
201
  buyToken: buyTokenAddress,
@@ -828,6 +829,7 @@ var SingleQuoteStrategy = class extends BaseSingleQuoteStrategy {
828
829
  };
829
830
 
830
831
  // src/BridgingSdk/utils.ts
832
+ import { OrderBookApiError } from "@cowprotocol/sdk-order-book";
831
833
  function validateCrossChainRequest(sellTokenChainId, buyTokenChainId) {
832
834
  if (sellTokenChainId === buyTokenChainId) {
833
835
  throw new BridgeProviderError(
@@ -914,6 +916,9 @@ function resolveProvidersToQuery(providerDappIds, providers) {
914
916
  function getErrorPriority(error) {
915
917
  if (!error)
916
918
  return 0;
919
+ if (error instanceof OrderBookApiError) {
920
+ return 10;
921
+ }
917
922
  if (error instanceof BridgeProviderQuoteError) {
918
923
  return BridgeQuoteErrorPriorities[error.message] ?? 0;
919
924
  }
@@ -931,6 +936,34 @@ function isBetterError(error1, error2) {
931
936
  return priority1 > priority2;
932
937
  }
933
938
 
939
+ // src/BridgingSdk/strategies/utils.ts
940
+ async function fetchMultiQuote(context, tradingSdk, intermediateTokensCache) {
941
+ const { provider, quoteBridgeRequest, advancedSettings, providerTimeout } = context;
942
+ const supportedNetworks = await provider.getNetworks();
943
+ const destinationNetwork = supportedNetworks.find((i) => i.id === quoteBridgeRequest.buyTokenChainId);
944
+ if (!destinationNetwork)
945
+ return;
946
+ const baseParams = {
947
+ swapAndBridgeRequest: quoteBridgeRequest,
948
+ advancedSettings,
949
+ tradingSdk,
950
+ quoteSigner: advancedSettings?.quoteSigner
951
+ };
952
+ const request = intermediateTokensCache ? {
953
+ ...baseParams,
954
+ intermediateTokensCache
955
+ } : baseParams;
956
+ const quote = await Promise.race([
957
+ getQuoteWithBridge(provider, request),
958
+ createBridgeRequestTimeoutPromise(providerTimeout, `Provider ${provider.info.dappId}`)
959
+ ]);
960
+ return {
961
+ providerDappId: provider.info.dappId,
962
+ quote,
963
+ error: void 0
964
+ };
965
+ }
966
+
934
967
  // src/BridgingSdk/strategies/MultiQuoteStrategy.ts
935
968
  var DEFAULT_TOTAL_TIMEOUT_MS = 4e4;
936
969
  var DEFAULT_PROVIDER_TIMEOUT_MS = 2e4;
@@ -980,28 +1013,12 @@ var MultiQuoteStrategy = class extends BaseMultiQuoteStrategy {
980
1013
  return results;
981
1014
  }
982
1015
  createProviderQuotePromise(context, tradingSdk) {
983
- const { provider, quoteBridgeRequest, advancedSettings, providerTimeout, onQuoteResult, results, index } = context;
1016
+ const { provider, onQuoteResult, results, index } = context;
984
1017
  return (async () => {
985
1018
  try {
986
- const baseParams = {
987
- swapAndBridgeRequest: quoteBridgeRequest,
988
- advancedSettings,
989
- tradingSdk,
990
- quoteSigner: advancedSettings?.quoteSigner
991
- };
992
- const request = this.intermediateTokensCache ? {
993
- ...baseParams,
994
- intermediateTokensCache: this.intermediateTokensCache
995
- } : baseParams;
996
- const quote = await Promise.race([
997
- getQuoteWithBridge(provider, request),
998
- createBridgeRequestTimeoutPromise(providerTimeout, `Provider ${provider.info.dappId}`)
999
- ]);
1000
- const result = {
1001
- providerDappId: provider.info.dappId,
1002
- quote,
1003
- error: void 0
1004
- };
1019
+ const result = await fetchMultiQuote(context, tradingSdk, this.intermediateTokensCache);
1020
+ if (!result)
1021
+ return;
1005
1022
  results[index] = result;
1006
1023
  safeCallProgressiveCallback(onQuoteResult, result);
1007
1024
  } catch (error) {
@@ -1055,29 +1072,12 @@ var BestQuoteStrategy = class extends BaseBestQuoteStrategy {
1055
1072
  return bestResult.current || bestError.current;
1056
1073
  }
1057
1074
  createBestQuoteProviderPromise(context, tradingSdk) {
1058
- const { provider, quoteBridgeRequest, advancedSettings, providerTimeout, onQuoteResult, bestResult, bestError } = context;
1075
+ const { provider, onQuoteResult, bestResult, bestError } = context;
1059
1076
  return (async () => {
1060
1077
  try {
1061
- const baseParams = {
1062
- swapAndBridgeRequest: quoteBridgeRequest,
1063
- advancedSettings,
1064
- tradingSdk,
1065
- provider,
1066
- quoteSigner: advancedSettings?.quoteSigner
1067
- };
1068
- const request = this.intermediateTokensCache ? {
1069
- ...baseParams,
1070
- intermediateTokensCache: this.intermediateTokensCache
1071
- } : baseParams;
1072
- const quote = await Promise.race([
1073
- getQuoteWithBridge(provider, request),
1074
- createBridgeRequestTimeoutPromise(providerTimeout, `Provider ${provider.info.dappId}`)
1075
- ]);
1076
- const result = {
1077
- providerDappId: provider.info.dappId,
1078
- quote,
1079
- error: void 0
1080
- };
1078
+ const result = await fetchMultiQuote(context, tradingSdk, this.intermediateTokensCache);
1079
+ if (!result)
1080
+ return;
1081
1081
  if (isBetterQuote(result, bestResult.current)) {
1082
1082
  bestResult.current = result;
1083
1083
  safeCallBestQuoteCallback(onQuoteResult, result);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cowprotocol/sdk-bridging",
3
- "version": "1.0.0",
3
+ "version": "1.1.1",
4
4
  "description": "Bridging for CoW Protocol",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.mjs",
@@ -16,13 +16,13 @@
16
16
  "dependencies": {
17
17
  "@defuse-protocol/one-click-sdk-typescript": "0.1.1-0.2",
18
18
  "json-stable-stringify": "^1.3.0",
19
- "@cowprotocol/sdk-app-data": "4.3.6",
20
- "@cowprotocol/sdk-config": "0.6.2",
21
- "@cowprotocol/sdk-contracts-ts": "1.0.0",
19
+ "@cowprotocol/sdk-app-data": "4.4.0",
22
20
  "@cowprotocol/sdk-cow-shed": "0.2.9",
23
- "@cowprotocol/sdk-order-book": "0.4.4",
24
21
  "@cowprotocol/sdk-common": "0.4.0",
25
- "@cowprotocol/sdk-trading": "0.7.2",
22
+ "@cowprotocol/sdk-order-book": "0.5.0",
23
+ "@cowprotocol/sdk-contracts-ts": "1.0.0",
24
+ "@cowprotocol/sdk-trading": "0.7.3",
25
+ "@cowprotocol/sdk-config": "0.6.2",
26
26
  "@cowprotocol/sdk-weiroll": "0.1.11"
27
27
  },
28
28
  "devDependencies": {
@@ -41,8 +41,8 @@
41
41
  "@cow-sdk/typescript-config": "0.0.0-beta.0",
42
42
  "@cowprotocol/sdk-ethers-v5-adapter": "0.3.0",
43
43
  "@cowprotocol/sdk-ethers-v6-adapter": "0.3.0",
44
- "@cowprotocol/sdk-order-signing": "0.1.22",
45
- "@cowprotocol/sdk-viem-adapter": "0.3.0"
44
+ "@cowprotocol/sdk-viem-adapter": "0.3.0",
45
+ "@cowprotocol/sdk-order-signing": "0.1.23"
46
46
  },
47
47
  "scripts": {
48
48
  "build": "tsup src/index.ts --format esm,cjs --dts",