@cowprotocol/sdk-bridging 1.0.0 → 1.1.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.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
 
@@ -885,6 +885,7 @@ var SingleQuoteStrategy = class extends BaseSingleQuoteStrategy {
885
885
  };
886
886
 
887
887
  // src/BridgingSdk/utils.ts
888
+ var import_sdk_order_book2 = require("@cowprotocol/sdk-order-book");
888
889
  function validateCrossChainRequest(sellTokenChainId, buyTokenChainId) {
889
890
  if (sellTokenChainId === buyTokenChainId) {
890
891
  throw new BridgeProviderError(
@@ -971,6 +972,9 @@ function resolveProvidersToQuery(providerDappIds, providers) {
971
972
  function getErrorPriority(error) {
972
973
  if (!error)
973
974
  return 0;
975
+ if (error instanceof import_sdk_order_book2.OrderBookApiError) {
976
+ return 10;
977
+ }
974
978
  if (error instanceof BridgeProviderQuoteError) {
975
979
  return BridgeQuoteErrorPriorities[error.message] ?? 0;
976
980
  }
@@ -988,6 +992,34 @@ function isBetterError(error1, error2) {
988
992
  return priority1 > priority2;
989
993
  }
990
994
 
995
+ // src/BridgingSdk/strategies/utils.ts
996
+ async function fetchMultiQuote(context, tradingSdk, intermediateTokensCache) {
997
+ const { provider, quoteBridgeRequest, advancedSettings, providerTimeout } = context;
998
+ const supportedNetworks = await provider.getNetworks();
999
+ const destinationNetwork = supportedNetworks.find((i) => i.id === quoteBridgeRequest.buyTokenChainId);
1000
+ if (!destinationNetwork)
1001
+ return;
1002
+ const baseParams = {
1003
+ swapAndBridgeRequest: quoteBridgeRequest,
1004
+ advancedSettings,
1005
+ tradingSdk,
1006
+ quoteSigner: advancedSettings?.quoteSigner
1007
+ };
1008
+ const request = intermediateTokensCache ? {
1009
+ ...baseParams,
1010
+ intermediateTokensCache
1011
+ } : baseParams;
1012
+ const quote = await Promise.race([
1013
+ getQuoteWithBridge(provider, request),
1014
+ createBridgeRequestTimeoutPromise(providerTimeout, `Provider ${provider.info.dappId}`)
1015
+ ]);
1016
+ return {
1017
+ providerDappId: provider.info.dappId,
1018
+ quote,
1019
+ error: void 0
1020
+ };
1021
+ }
1022
+
991
1023
  // src/BridgingSdk/strategies/MultiQuoteStrategy.ts
992
1024
  var DEFAULT_TOTAL_TIMEOUT_MS = 4e4;
993
1025
  var DEFAULT_PROVIDER_TIMEOUT_MS = 2e4;
@@ -1037,28 +1069,12 @@ var MultiQuoteStrategy = class extends BaseMultiQuoteStrategy {
1037
1069
  return results;
1038
1070
  }
1039
1071
  createProviderQuotePromise(context, tradingSdk) {
1040
- const { provider, quoteBridgeRequest, advancedSettings, providerTimeout, onQuoteResult, results, index } = context;
1072
+ const { provider, onQuoteResult, results, index } = context;
1041
1073
  return (async () => {
1042
1074
  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
- };
1075
+ const result = await fetchMultiQuote(context, tradingSdk, this.intermediateTokensCache);
1076
+ if (!result)
1077
+ return;
1062
1078
  results[index] = result;
1063
1079
  safeCallProgressiveCallback(onQuoteResult, result);
1064
1080
  } catch (error) {
@@ -1112,29 +1128,12 @@ var BestQuoteStrategy = class extends BaseBestQuoteStrategy {
1112
1128
  return bestResult.current || bestError.current;
1113
1129
  }
1114
1130
  createBestQuoteProviderPromise(context, tradingSdk) {
1115
- const { provider, quoteBridgeRequest, advancedSettings, providerTimeout, onQuoteResult, bestResult, bestError } = context;
1131
+ const { provider, onQuoteResult, bestResult, bestError } = context;
1116
1132
  return (async () => {
1117
1133
  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
- };
1134
+ const result = await fetchMultiQuote(context, tradingSdk, this.intermediateTokensCache);
1135
+ if (!result)
1136
+ return;
1138
1137
  if (isBetterQuote(result, bestResult.current)) {
1139
1138
  bestResult.current = result;
1140
1139
  safeCallBestQuoteCallback(onQuoteResult, result);
@@ -1185,7 +1184,7 @@ var BridgingSdk = class {
1185
1184
  (0, import_sdk_common5.enableLogging)(options.enableLogging);
1186
1185
  }
1187
1186
  const tradingSdk = options.tradingSdk ?? new import_sdk_trading2.TradingSdk();
1188
- const orderBookApi = tradingSdk?.options.orderBookApi ?? new import_sdk_order_book2.OrderBookApi();
1187
+ const orderBookApi = tradingSdk?.options.orderBookApi ?? new import_sdk_order_book3.OrderBookApi();
1189
1188
  this.config = {
1190
1189
  ...restOptions,
1191
1190
  providers,
@@ -1578,13 +1577,13 @@ var ACROSS_MATH_CONTRACT_ADDRESSES = {
1578
1577
 
1579
1578
  // src/providers/across/util.ts
1580
1579
  var import_sdk_config5 = require("@cowprotocol/sdk-config");
1581
- var import_sdk_order_book3 = require("@cowprotocol/sdk-order-book");
1580
+ var import_sdk_order_book4 = require("@cowprotocol/sdk-order-book");
1582
1581
  var import_sdk_common8 = require("@cowprotocol/sdk-common");
1583
1582
  var PCT_100_PERCENT = 10n ** 18n;
1584
1583
  function toBridgeQuoteResult(request, slippageBps, suggestedFees) {
1585
1584
  const { kind } = request;
1586
1585
  return {
1587
- isSell: kind === import_sdk_order_book3.OrderKind.SELL,
1586
+ isSell: kind === import_sdk_order_book4.OrderKind.SELL,
1588
1587
  amountsAndCosts: toAmountsAndCosts(request, slippageBps, suggestedFees),
1589
1588
  quoteTimestamp: Number(suggestedFees.timestamp),
1590
1589
  expectedFillTimeSeconds: Number(suggestedFees.estimatedFillTimeSec),
@@ -1601,9 +1600,9 @@ function toBridgeQuoteResult(request, slippageBps, suggestedFees) {
1601
1600
  }
1602
1601
  function toAmountsAndCosts(request, slippageBps, suggestedFees) {
1603
1602
  const { amount, sellTokenDecimals, buyTokenDecimals } = request;
1604
- const sellAmountBeforeFeeBig = (0, import_sdk_order_book3.getBigNumber)(amount, sellTokenDecimals);
1603
+ const sellAmountBeforeFeeBig = (0, import_sdk_order_book4.getBigNumber)(amount, sellTokenDecimals);
1605
1604
  const sellAmountBeforeFee = sellAmountBeforeFeeBig.big;
1606
- const buyAmountBeforeFee = (0, import_sdk_order_book3.getBigNumber)(sellAmountBeforeFeeBig.num, buyTokenDecimals).big;
1605
+ const buyAmountBeforeFee = (0, import_sdk_order_book4.getBigNumber)(sellAmountBeforeFeeBig.num, buyTokenDecimals).big;
1607
1606
  const totalRelayerFeePct = BigInt(suggestedFees.totalRelayFee.pct);
1608
1607
  const buyAmountAfterFee = applyPctFee(buyAmountBeforeFee, totalRelayerFeePct);
1609
1608
  const feeSellToken = sellAmountBeforeFee - applyPctFee(sellAmountBeforeFee, totalRelayerFeePct);
@@ -3644,7 +3643,7 @@ async function getGasLimitEstimationForHook({
3644
3643
  var import_sdk_common12 = require("@cowprotocol/sdk-common");
3645
3644
  var import_sdk_config6 = require("@cowprotocol/sdk-config");
3646
3645
  var import_sdk_cow_shed = require("@cowprotocol/sdk-cow-shed");
3647
- var import_sdk_order_book4 = require("@cowprotocol/sdk-order-book");
3646
+ var import_sdk_order_book5 = require("@cowprotocol/sdk-order-book");
3648
3647
  var ACROSS_HOOK_DAPP_ID = `${HOOK_DAPP_BRIDGE_PROVIDER_PREFIX}/across`;
3649
3648
  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
3649
  var SLIPPAGE_TOLERANCE_BPS = 0;
@@ -3681,7 +3680,7 @@ var AcrossBridgeProvider = class {
3681
3680
  };
3682
3681
  }
3683
3682
  async getIntermediateTokens(request) {
3684
- if (request.kind !== import_sdk_order_book4.OrderKind.SELL) {
3683
+ if (request.kind !== import_sdk_order_book5.OrderKind.SELL) {
3685
3684
  throw new BridgeProviderQuoteError("ONLY_SELL_ORDER_SUPPORTED" /* ONLY_SELL_ORDER_SUPPORTED */, { kind: request.kind });
3686
3685
  }
3687
3686
  const { sellTokenChainId, buyTokenChainId, buyTokenAddress } = request;
@@ -3802,7 +3801,7 @@ var AcrossBridgeProvider = class {
3802
3801
  };
3803
3802
 
3804
3803
  // src/providers/bungee/BungeeBridgeProvider.ts
3805
- var import_sdk_order_book6 = require("@cowprotocol/sdk-order-book");
3804
+ var import_sdk_order_book7 = require("@cowprotocol/sdk-order-book");
3806
3805
 
3807
3806
  // src/providers/bungee/const/misc.ts
3808
3807
  var HOOK_DAPP_BRIDGE_PROVIDER_PREFIX2 = "cow-sdk://bridging/providers";
@@ -3888,13 +3887,13 @@ var BungeeBridgeNames = {
3888
3887
  };
3889
3888
 
3890
3889
  // src/providers/bungee/util.ts
3891
- var import_sdk_order_book5 = require("@cowprotocol/sdk-order-book");
3890
+ var import_sdk_order_book6 = require("@cowprotocol/sdk-order-book");
3892
3891
  function toBridgeQuoteResult2(request, slippageBps, bungeeQuoteWithBuildTx) {
3893
3892
  const { kind } = request;
3894
3893
  const { bungeeQuote, buildTx } = bungeeQuoteWithBuildTx;
3895
3894
  return {
3896
3895
  id: bungeeQuoteWithBuildTx.bungeeQuote.route.quoteId.toString(),
3897
- isSell: kind === import_sdk_order_book5.OrderKind.SELL,
3896
+ isSell: kind === import_sdk_order_book6.OrderKind.SELL,
3898
3897
  amountsAndCosts: toAmountsAndCosts2(request, slippageBps, bungeeQuote),
3899
3898
  quoteTimestamp: Number(bungeeQuote.quoteTimestamp),
3900
3899
  expectedFillTimeSeconds: Number(bungeeQuote.route.estimatedTime),
@@ -3916,10 +3915,10 @@ function toBridgeQuoteResult2(request, slippageBps, bungeeQuoteWithBuildTx) {
3916
3915
  }
3917
3916
  function toAmountsAndCosts2(request, slippageBps, bungeeQuote) {
3918
3917
  const { amount, sellTokenDecimals, buyTokenDecimals } = request;
3919
- const sellAmountBeforeFeeBig = (0, import_sdk_order_book5.getBigNumber)(amount, sellTokenDecimals);
3918
+ const sellAmountBeforeFeeBig = (0, import_sdk_order_book6.getBigNumber)(amount, sellTokenDecimals);
3920
3919
  const sellAmountBeforeFee = sellAmountBeforeFeeBig.big;
3921
3920
  const buyAmountFromBungeeQuote = bungeeQuote.route.output.amount;
3922
- const buyAmountBeforeFee = (0, import_sdk_order_book5.getBigNumber)(buyAmountFromBungeeQuote, buyTokenDecimals).big;
3921
+ const buyAmountBeforeFee = (0, import_sdk_order_book6.getBigNumber)(buyAmountFromBungeeQuote, buyTokenDecimals).big;
3923
3922
  const buyAmountAfterFee = buyAmountBeforeFee;
3924
3923
  const feeSellToken = bungeeQuote.route.routeDetails.routeFee.amount;
3925
3924
  const feeBuyToken = sellAmountBeforeFee > 0n ? BigInt(feeSellToken) * buyAmountBeforeFee / sellAmountBeforeFee : 0n;
@@ -4820,7 +4819,7 @@ var BungeeBridgeProvider = class {
4820
4819
  };
4821
4820
  }
4822
4821
  async getIntermediateTokens(request) {
4823
- if (request.kind !== import_sdk_order_book6.OrderKind.SELL) {
4822
+ if (request.kind !== import_sdk_order_book7.OrderKind.SELL) {
4824
4823
  throw new BridgeProviderQuoteError("ONLY_SELL_ORDER_SUPPORTED" /* ONLY_SELL_ORDER_SUPPORTED */, { kind: request.kind });
4825
4824
  }
4826
4825
  return this.api.getIntermediateTokens({
@@ -4948,7 +4947,7 @@ var BungeeBridgeProvider = class {
4948
4947
  var import_sdk_common17 = require("@cowprotocol/sdk-common");
4949
4948
  var import_sdk_config12 = require("@cowprotocol/sdk-config");
4950
4949
  var import_sdk_cow_shed3 = require("@cowprotocol/sdk-cow-shed");
4951
- var import_sdk_order_book7 = require("@cowprotocol/sdk-order-book");
4950
+ var import_sdk_order_book8 = require("@cowprotocol/sdk-order-book");
4952
4951
  var import_one_click_sdk_typescript2 = require("@defuse-protocol/one-click-sdk-typescript");
4953
4952
 
4954
4953
  // src/providers/near-intents/NearIntentsApi.ts
@@ -5159,7 +5158,7 @@ var NearIntentsBridgeProvider = class {
5159
5158
  };
5160
5159
  }
5161
5160
  async getIntermediateTokens(request) {
5162
- if (request.kind !== import_sdk_order_book7.OrderKind.SELL) {
5161
+ if (request.kind !== import_sdk_order_book8.OrderKind.SELL) {
5163
5162
  throw new BridgeProviderQuoteError("ONLY_SELL_ORDER_SUPPORTED" /* ONLY_SELL_ORDER_SUPPORTED */, { kind: request.kind });
5164
5163
  }
5165
5164
  const { sellTokenChainId, buyTokenChainId, buyTokenAddress, sellTokenAddress } = request;
@@ -5232,7 +5231,7 @@ var NearIntentsBridgeProvider = class {
5232
5231
  return {
5233
5232
  id: recoveredDepositAddress.quoteHash,
5234
5233
  signature: quoteResponse.signature,
5235
- isSell: request.kind === import_sdk_order_book7.OrderKind.SELL,
5234
+ isSell: request.kind === import_sdk_order_book8.OrderKind.SELL,
5236
5235
  depositAddress: quote.depositAddress,
5237
5236
  quoteTimestamp: new Date(isoDate).getTime(),
5238
5237
  expectedFillTimeSeconds: quote.timeEstimate,
package/dist/index.mjs CHANGED
@@ -828,6 +828,7 @@ var SingleQuoteStrategy = class extends BaseSingleQuoteStrategy {
828
828
  };
829
829
 
830
830
  // src/BridgingSdk/utils.ts
831
+ import { OrderBookApiError } from "@cowprotocol/sdk-order-book";
831
832
  function validateCrossChainRequest(sellTokenChainId, buyTokenChainId) {
832
833
  if (sellTokenChainId === buyTokenChainId) {
833
834
  throw new BridgeProviderError(
@@ -914,6 +915,9 @@ function resolveProvidersToQuery(providerDappIds, providers) {
914
915
  function getErrorPriority(error) {
915
916
  if (!error)
916
917
  return 0;
918
+ if (error instanceof OrderBookApiError) {
919
+ return 10;
920
+ }
917
921
  if (error instanceof BridgeProviderQuoteError) {
918
922
  return BridgeQuoteErrorPriorities[error.message] ?? 0;
919
923
  }
@@ -931,6 +935,34 @@ function isBetterError(error1, error2) {
931
935
  return priority1 > priority2;
932
936
  }
933
937
 
938
+ // src/BridgingSdk/strategies/utils.ts
939
+ async function fetchMultiQuote(context, tradingSdk, intermediateTokensCache) {
940
+ const { provider, quoteBridgeRequest, advancedSettings, providerTimeout } = context;
941
+ const supportedNetworks = await provider.getNetworks();
942
+ const destinationNetwork = supportedNetworks.find((i) => i.id === quoteBridgeRequest.buyTokenChainId);
943
+ if (!destinationNetwork)
944
+ return;
945
+ const baseParams = {
946
+ swapAndBridgeRequest: quoteBridgeRequest,
947
+ advancedSettings,
948
+ tradingSdk,
949
+ quoteSigner: advancedSettings?.quoteSigner
950
+ };
951
+ const request = intermediateTokensCache ? {
952
+ ...baseParams,
953
+ intermediateTokensCache
954
+ } : baseParams;
955
+ const quote = await Promise.race([
956
+ getQuoteWithBridge(provider, request),
957
+ createBridgeRequestTimeoutPromise(providerTimeout, `Provider ${provider.info.dappId}`)
958
+ ]);
959
+ return {
960
+ providerDappId: provider.info.dappId,
961
+ quote,
962
+ error: void 0
963
+ };
964
+ }
965
+
934
966
  // src/BridgingSdk/strategies/MultiQuoteStrategy.ts
935
967
  var DEFAULT_TOTAL_TIMEOUT_MS = 4e4;
936
968
  var DEFAULT_PROVIDER_TIMEOUT_MS = 2e4;
@@ -980,28 +1012,12 @@ var MultiQuoteStrategy = class extends BaseMultiQuoteStrategy {
980
1012
  return results;
981
1013
  }
982
1014
  createProviderQuotePromise(context, tradingSdk) {
983
- const { provider, quoteBridgeRequest, advancedSettings, providerTimeout, onQuoteResult, results, index } = context;
1015
+ const { provider, onQuoteResult, results, index } = context;
984
1016
  return (async () => {
985
1017
  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
- };
1018
+ const result = await fetchMultiQuote(context, tradingSdk, this.intermediateTokensCache);
1019
+ if (!result)
1020
+ return;
1005
1021
  results[index] = result;
1006
1022
  safeCallProgressiveCallback(onQuoteResult, result);
1007
1023
  } catch (error) {
@@ -1055,29 +1071,12 @@ var BestQuoteStrategy = class extends BaseBestQuoteStrategy {
1055
1071
  return bestResult.current || bestError.current;
1056
1072
  }
1057
1073
  createBestQuoteProviderPromise(context, tradingSdk) {
1058
- const { provider, quoteBridgeRequest, advancedSettings, providerTimeout, onQuoteResult, bestResult, bestError } = context;
1074
+ const { provider, onQuoteResult, bestResult, bestError } = context;
1059
1075
  return (async () => {
1060
1076
  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
- };
1077
+ const result = await fetchMultiQuote(context, tradingSdk, this.intermediateTokensCache);
1078
+ if (!result)
1079
+ return;
1081
1080
  if (isBetterQuote(result, bestResult.current)) {
1082
1081
  bestResult.current = result;
1083
1082
  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.0",
4
4
  "description": "Bridging for CoW Protocol",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.mjs",
@@ -16,14 +16,14 @@
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",
19
+ "@cowprotocol/sdk-app-data": "4.4.0",
20
+ "@cowprotocol/sdk-common": "0.4.0",
20
21
  "@cowprotocol/sdk-config": "0.6.2",
21
22
  "@cowprotocol/sdk-contracts-ts": "1.0.0",
22
23
  "@cowprotocol/sdk-cow-shed": "0.2.9",
23
- "@cowprotocol/sdk-order-book": "0.4.4",
24
- "@cowprotocol/sdk-common": "0.4.0",
25
- "@cowprotocol/sdk-trading": "0.7.2",
26
- "@cowprotocol/sdk-weiroll": "0.1.11"
24
+ "@cowprotocol/sdk-order-book": "0.5.0",
25
+ "@cowprotocol/sdk-weiroll": "0.1.11",
26
+ "@cowprotocol/sdk-trading": "0.7.3"
27
27
  },
28
28
  "devDependencies": {
29
29
  "@types/jest": "^29.4.0",
@@ -40,9 +40,9 @@
40
40
  "viem": "^2.28.4",
41
41
  "@cow-sdk/typescript-config": "0.0.0-beta.0",
42
42
  "@cowprotocol/sdk-ethers-v5-adapter": "0.3.0",
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"
43
+ "@cowprotocol/sdk-viem-adapter": "0.3.0",
44
+ "@cowprotocol/sdk-order-signing": "0.1.23",
45
+ "@cowprotocol/sdk-ethers-v6-adapter": "0.3.0"
46
46
  },
47
47
  "scripts": {
48
48
  "build": "tsup src/index.ts --format esm,cjs --dts",