@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 +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +57 -58
- package/dist/index.mjs +40 -41
- package/package.json +9 -9
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
|
|
|
@@ -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,
|
|
1072
|
+
const { provider, onQuoteResult, results, index } = context;
|
|
1041
1073
|
return (async () => {
|
|
1042
1074
|
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
|
-
};
|
|
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,
|
|
1131
|
+
const { provider, onQuoteResult, bestResult, bestError } = context;
|
|
1116
1132
|
return (async () => {
|
|
1117
1133
|
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
|
-
};
|
|
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
|
|
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
|
|
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 ===
|
|
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,
|
|
1603
|
+
const sellAmountBeforeFeeBig = (0, import_sdk_order_book4.getBigNumber)(amount, sellTokenDecimals);
|
|
1605
1604
|
const sellAmountBeforeFee = sellAmountBeforeFeeBig.big;
|
|
1606
|
-
const buyAmountBeforeFee = (0,
|
|
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
|
|
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 !==
|
|
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
|
|
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
|
|
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 ===
|
|
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,
|
|
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,
|
|
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 !==
|
|
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
|
|
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 !==
|
|
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 ===
|
|
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,
|
|
1015
|
+
const { provider, onQuoteResult, results, index } = context;
|
|
984
1016
|
return (async () => {
|
|
985
1017
|
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
|
-
};
|
|
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,
|
|
1074
|
+
const { provider, onQuoteResult, bestResult, bestError } = context;
|
|
1059
1075
|
return (async () => {
|
|
1060
1076
|
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
|
-
};
|
|
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.
|
|
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.
|
|
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.
|
|
24
|
-
"@cowprotocol/sdk-
|
|
25
|
-
"@cowprotocol/sdk-trading": "0.7.
|
|
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-
|
|
44
|
-
"@cowprotocol/sdk-order-signing": "0.1.
|
|
45
|
-
"@cowprotocol/sdk-
|
|
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",
|