@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 +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +59 -59
- package/dist/index.mjs +42 -42
- package/package.json +8 -8
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
|
|
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,
|
|
1073
|
+
const { provider, onQuoteResult, results, index } = context;
|
|
1041
1074
|
return (async () => {
|
|
1042
1075
|
try {
|
|
1043
|
-
const
|
|
1044
|
-
|
|
1045
|
-
|
|
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,
|
|
1132
|
+
const { provider, onQuoteResult, bestResult, bestError } = context;
|
|
1116
1133
|
return (async () => {
|
|
1117
1134
|
try {
|
|
1118
|
-
const
|
|
1119
|
-
|
|
1120
|
-
|
|
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
|
|
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
|
|
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 ===
|
|
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,
|
|
1604
|
+
const sellAmountBeforeFeeBig = (0, import_sdk_order_book4.getBigNumber)(amount, sellTokenDecimals);
|
|
1605
1605
|
const sellAmountBeforeFee = sellAmountBeforeFeeBig.big;
|
|
1606
|
-
const buyAmountBeforeFee = (0,
|
|
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
|
|
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 !==
|
|
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
|
|
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
|
|
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 ===
|
|
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,
|
|
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,
|
|
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 !==
|
|
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
|
|
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 !==
|
|
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 ===
|
|
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,
|
|
1016
|
+
const { provider, onQuoteResult, results, index } = context;
|
|
984
1017
|
return (async () => {
|
|
985
1018
|
try {
|
|
986
|
-
const
|
|
987
|
-
|
|
988
|
-
|
|
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,
|
|
1075
|
+
const { provider, onQuoteResult, bestResult, bestError } = context;
|
|
1059
1076
|
return (async () => {
|
|
1060
1077
|
try {
|
|
1061
|
-
const
|
|
1062
|
-
|
|
1063
|
-
|
|
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.
|
|
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.
|
|
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-
|
|
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-
|
|
45
|
-
"@cowprotocol/sdk-
|
|
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",
|