@shapeshiftoss/swapper 19.0.0 → 20.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/cjs/.tsbuildinfo +1 -1
- package/dist/cjs/exactOutputFiltering.test.d.ts +1 -0
- package/dist/cjs/exactOutputFiltering.test.js +70 -0
- package/dist/cjs/swapper.d.ts +3 -3
- package/dist/cjs/swapper.js +29 -6
- package/dist/cjs/swappers/AcrossSwapper/utils/getAcrossStepData.d.ts +1 -0
- package/dist/cjs/swappers/AcrossSwapper/utils/getAcrossStepData.js +2 -2
- package/dist/cjs/swappers/AcrossSwapper/utils/getAcrossTradeContext.js +1 -0
- package/dist/cjs/swappers/BebopSwapper/utils/getBebopStepData.d.ts +1 -0
- package/dist/cjs/swappers/BebopSwapper/utils/getBebopStepData.js +2 -2
- package/dist/cjs/swappers/BebopSwapper/utils/getBebopTradeContext.js +1 -0
- package/dist/cjs/swappers/BobGatewaySwapper/swapperApi/getTradeQuote.js +5 -1
- package/dist/cjs/swappers/BobGatewaySwapper/swapperApi/getTradeRate.js +11 -2
- package/dist/cjs/swappers/BobGatewaySwapper/utils/getBobGatewayTradeContext.d.ts +2 -1
- package/dist/cjs/swappers/BobGatewaySwapper/utils/getBobGatewayTradeContext.js +2 -1
- package/dist/cjs/swappers/BobGatewaySwapper/utils/helpers.d.ts +2 -1
- package/dist/cjs/swappers/BobGatewaySwapper/utils/helpers.js +2 -1
- package/dist/cjs/swappers/ChainflipSwapper/ChainflipSwapper.js +1 -0
- package/dist/cjs/swappers/ChainflipSwapper/checkTradeStatus.test.d.ts +1 -0
- package/dist/cjs/swappers/ChainflipSwapper/checkTradeStatus.test.js +48 -0
- package/dist/cjs/swappers/ChainflipSwapper/endpoints.js +5 -2
- package/dist/cjs/swappers/ChainflipSwapper/types.d.ts +3 -0
- package/dist/cjs/swappers/DebridgeSwapper/utils/getDebridgeStepData.d.ts +1 -0
- package/dist/cjs/swappers/DebridgeSwapper/utils/getDebridgeStepData.js +2 -2
- package/dist/cjs/swappers/DebridgeSwapper/utils/getDebridgeTradeContext.js +1 -0
- package/dist/cjs/swappers/NearIntentsSwapper/NearIntentsSwapper.js +1 -0
- package/dist/cjs/swappers/NearIntentsSwapper/checkTradeStatus.test.d.ts +1 -0
- package/dist/cjs/swappers/NearIntentsSwapper/checkTradeStatus.test.js +52 -0
- package/dist/cjs/swappers/NearIntentsSwapper/constants.d.ts +1 -1
- package/dist/cjs/swappers/NearIntentsSwapper/constants.js +4 -3
- package/dist/cjs/swappers/NearIntentsSwapper/endpoints.js +4 -1
- package/dist/cjs/swappers/NearIntentsSwapper/swapperApi/getTradeQuote.d.ts +2 -1
- package/dist/cjs/swappers/NearIntentsSwapper/swapperApi/getTradeQuote.js +14 -9
- package/dist/cjs/swappers/NearIntentsSwapper/swapperApi/getTradeRate.d.ts +2 -1
- package/dist/cjs/swappers/NearIntentsSwapper/swapperApi/getTradeRate.js +14 -9
- package/dist/cjs/swappers/NearIntentsSwapper/types.d.ts +3 -1
- package/dist/cjs/swappers/NearIntentsSwapper/utils/exactOutput.test.d.ts +1 -0
- package/dist/cjs/swappers/NearIntentsSwapper/utils/exactOutput.test.js +61 -0
- package/dist/cjs/swappers/NearIntentsSwapper/utils/getNearIntentsTradeContext.d.ts +2 -2
- package/dist/cjs/swappers/NearIntentsSwapper/utils/getNearIntentsTradeContext.js +4 -2
- package/dist/cjs/swappers/NearIntentsSwapper/utils/helpers.d.ts +5 -5
- package/dist/cjs/swappers/NearIntentsSwapper/utils/helpers.js +30 -26
- package/dist/cjs/swappers/NearIntentsSwapper/utils/quoteDeadline.test.d.ts +1 -0
- package/dist/cjs/swappers/NearIntentsSwapper/utils/quoteDeadline.test.js +28 -0
- package/dist/cjs/swappers/PortalsSwapper/endpoints.js +51 -47
- package/dist/cjs/swappers/PortalsSwapper/getPortalsTradeQuote/getPortalsTradeQuote.js +1 -1
- package/dist/cjs/swappers/PortalsSwapper/getPortalsTradeRate/getPortalsTradeRate.js +1 -1
- package/dist/cjs/swappers/PortalsSwapper/utils/fetchAxelarscanStatus.d.ts +0 -1
- package/dist/cjs/swappers/PortalsSwapper/utils/fetchAxelarscanStatus.js +3 -6
- package/dist/cjs/swappers/PortalsSwapper/utils/fetchPortalsTradeOrder.js +6 -3
- package/dist/cjs/swappers/PortalsSwapper/utils/fetchSquidStatus.d.ts +0 -1
- package/dist/cjs/swappers/PortalsSwapper/utils/fetchSquidStatus.js +1 -8
- package/dist/cjs/swappers/PortalsSwapper/utils/getPortalsStepData.d.ts +1 -0
- package/dist/cjs/swappers/PortalsSwapper/utils/getPortalsStepData.js +16 -8
- package/dist/cjs/swappers/PortalsSwapper/utils/getPortalsStepData.test.d.ts +1 -0
- package/dist/cjs/swappers/PortalsSwapper/utils/getPortalsStepData.test.js +70 -0
- package/dist/cjs/swappers/PortalsSwapper/utils/getPortalsTradeContext.d.ts +3 -2
- package/dist/cjs/swappers/PortalsSwapper/utils/getPortalsTradeContext.js +34 -16
- package/dist/cjs/swappers/PortalsSwapper/utils/getPortalsTradeContext.test.d.ts +1 -0
- package/dist/cjs/swappers/PortalsSwapper/utils/getPortalsTradeContext.test.js +93 -0
- package/dist/cjs/swappers/RelaySwapper/endpoints.js +9 -18
- package/dist/cjs/swappers/RelaySwapper/getTradeQuote/getTradeQuote.d.ts +2 -1
- package/dist/cjs/swappers/RelaySwapper/getTradeQuote/getTradeQuote.js +5 -2
- package/dist/cjs/swappers/RelaySwapper/getTradeRate/getTradeRate.d.ts +2 -1
- package/dist/cjs/swappers/RelaySwapper/getTradeRate/getTradeRate.js +5 -2
- package/dist/cjs/swappers/RelaySwapper/utils/getRelayTradeContext.d.ts +2 -2
- package/dist/cjs/swappers/RelaySwapper/utils/getRelayTradeContext.js +22 -10
- package/dist/cjs/swappers/RelaySwapper/utils/helpers.d.ts +2 -2
- package/dist/cjs/swappers/RelaySwapper/utils/relayStatus.d.ts +8 -0
- package/dist/cjs/swappers/RelaySwapper/utils/relayStatus.js +39 -0
- package/dist/cjs/swappers/RelaySwapper/utils/types.d.ts +18 -1
- package/dist/cjs/swappers/SunioSwapper/utils/getSunioStepData.d.ts +1 -0
- package/dist/cjs/swappers/SunioSwapper/utils/getSunioStepData.js +2 -2
- package/dist/cjs/swappers/SunioSwapper/utils/getSunioTradeContext.js +6 -1
- package/dist/cjs/swappers/ThorchainSwapper/generated/generatedThorLongtailTokens.json +1 -0
- package/dist/cjs/types.d.ts +21 -2
- package/dist/cjs/types.js +2 -0
- package/dist/cjs/utils/cowswap/index.d.ts +4 -1
- package/dist/cjs/utils/cowswap/index.js +5 -1
- package/dist/cjs/utils/helpers.d.ts +9 -0
- package/dist/cjs/utils/helpers.js +23 -1
- package/dist/cjs/utils/helpers.test.js +41 -0
- package/dist/esm/.tsbuildinfo +1 -1
- package/dist/esm/exactOutputFiltering.test.d.ts +1 -0
- package/dist/esm/exactOutputFiltering.test.js +68 -0
- package/dist/esm/swapper.d.ts +3 -3
- package/dist/esm/swapper.js +29 -6
- package/dist/esm/swappers/AcrossSwapper/utils/getAcrossStepData.d.ts +1 -0
- package/dist/esm/swappers/AcrossSwapper/utils/getAcrossStepData.js +2 -2
- package/dist/esm/swappers/AcrossSwapper/utils/getAcrossTradeContext.js +1 -0
- package/dist/esm/swappers/BebopSwapper/utils/getBebopStepData.d.ts +1 -0
- package/dist/esm/swappers/BebopSwapper/utils/getBebopStepData.js +2 -2
- package/dist/esm/swappers/BebopSwapper/utils/getBebopTradeContext.js +1 -0
- package/dist/esm/swappers/BobGatewaySwapper/swapperApi/getTradeQuote.js +5 -1
- package/dist/esm/swappers/BobGatewaySwapper/swapperApi/getTradeRate.js +11 -2
- package/dist/esm/swappers/BobGatewaySwapper/utils/getBobGatewayTradeContext.d.ts +2 -1
- package/dist/esm/swappers/BobGatewaySwapper/utils/getBobGatewayTradeContext.js +2 -1
- package/dist/esm/swappers/BobGatewaySwapper/utils/helpers.d.ts +2 -1
- package/dist/esm/swappers/BobGatewaySwapper/utils/helpers.js +2 -1
- package/dist/esm/swappers/ChainflipSwapper/ChainflipSwapper.js +1 -0
- package/dist/esm/swappers/ChainflipSwapper/checkTradeStatus.test.d.ts +1 -0
- package/dist/esm/swappers/ChainflipSwapper/checkTradeStatus.test.js +46 -0
- package/dist/esm/swappers/ChainflipSwapper/endpoints.js +5 -2
- package/dist/esm/swappers/ChainflipSwapper/types.d.ts +3 -0
- package/dist/esm/swappers/DebridgeSwapper/utils/getDebridgeStepData.d.ts +1 -0
- package/dist/esm/swappers/DebridgeSwapper/utils/getDebridgeStepData.js +2 -2
- package/dist/esm/swappers/DebridgeSwapper/utils/getDebridgeTradeContext.js +1 -0
- package/dist/esm/swappers/NearIntentsSwapper/NearIntentsSwapper.js +1 -0
- package/dist/esm/swappers/NearIntentsSwapper/checkTradeStatus.test.d.ts +1 -0
- package/dist/esm/swappers/NearIntentsSwapper/checkTradeStatus.test.js +50 -0
- package/dist/esm/swappers/NearIntentsSwapper/constants.d.ts +1 -1
- package/dist/esm/swappers/NearIntentsSwapper/constants.js +3 -2
- package/dist/esm/swappers/NearIntentsSwapper/endpoints.js +6 -3
- package/dist/esm/swappers/NearIntentsSwapper/swapperApi/getTradeQuote.d.ts +2 -1
- package/dist/esm/swappers/NearIntentsSwapper/swapperApi/getTradeQuote.js +7 -3
- package/dist/esm/swappers/NearIntentsSwapper/swapperApi/getTradeRate.d.ts +2 -1
- package/dist/esm/swappers/NearIntentsSwapper/swapperApi/getTradeRate.js +7 -3
- package/dist/esm/swappers/NearIntentsSwapper/types.d.ts +3 -1
- package/dist/esm/swappers/NearIntentsSwapper/utils/exactOutput.test.d.ts +1 -0
- package/dist/esm/swappers/NearIntentsSwapper/utils/exactOutput.test.js +59 -0
- package/dist/esm/swappers/NearIntentsSwapper/utils/getNearIntentsTradeContext.d.ts +2 -2
- package/dist/esm/swappers/NearIntentsSwapper/utils/getNearIntentsTradeContext.js +4 -2
- package/dist/esm/swappers/NearIntentsSwapper/utils/helpers.d.ts +5 -5
- package/dist/esm/swappers/NearIntentsSwapper/utils/helpers.js +32 -28
- package/dist/esm/swappers/NearIntentsSwapper/utils/quoteDeadline.test.d.ts +1 -0
- package/dist/esm/swappers/NearIntentsSwapper/utils/quoteDeadline.test.js +26 -0
- package/dist/esm/swappers/PortalsSwapper/endpoints.js +53 -49
- package/dist/esm/swappers/PortalsSwapper/getPortalsTradeQuote/getPortalsTradeQuote.js +1 -1
- package/dist/esm/swappers/PortalsSwapper/getPortalsTradeRate/getPortalsTradeRate.js +1 -1
- package/dist/esm/swappers/PortalsSwapper/utils/fetchAxelarscanStatus.d.ts +0 -1
- package/dist/esm/swappers/PortalsSwapper/utils/fetchAxelarscanStatus.js +2 -4
- package/dist/esm/swappers/PortalsSwapper/utils/fetchPortalsTradeOrder.js +6 -3
- package/dist/esm/swappers/PortalsSwapper/utils/fetchSquidStatus.d.ts +0 -1
- package/dist/esm/swappers/PortalsSwapper/utils/fetchSquidStatus.js +0 -6
- package/dist/esm/swappers/PortalsSwapper/utils/getPortalsStepData.d.ts +1 -0
- package/dist/esm/swappers/PortalsSwapper/utils/getPortalsStepData.js +13 -5
- package/dist/esm/swappers/PortalsSwapper/utils/getPortalsStepData.test.d.ts +1 -0
- package/dist/esm/swappers/PortalsSwapper/utils/getPortalsStepData.test.js +68 -0
- package/dist/esm/swappers/PortalsSwapper/utils/getPortalsTradeContext.d.ts +3 -2
- package/dist/esm/swappers/PortalsSwapper/utils/getPortalsTradeContext.js +35 -17
- package/dist/esm/swappers/PortalsSwapper/utils/getPortalsTradeContext.test.d.ts +1 -0
- package/dist/esm/swappers/PortalsSwapper/utils/getPortalsTradeContext.test.js +91 -0
- package/dist/esm/swappers/RelaySwapper/endpoints.js +11 -20
- package/dist/esm/swappers/RelaySwapper/getTradeQuote/getTradeQuote.d.ts +2 -1
- package/dist/esm/swappers/RelaySwapper/getTradeQuote/getTradeQuote.js +3 -1
- package/dist/esm/swappers/RelaySwapper/getTradeRate/getTradeRate.d.ts +2 -1
- package/dist/esm/swappers/RelaySwapper/getTradeRate/getTradeRate.js +3 -1
- package/dist/esm/swappers/RelaySwapper/utils/getRelayTradeContext.d.ts +2 -2
- package/dist/esm/swappers/RelaySwapper/utils/getRelayTradeContext.js +23 -11
- package/dist/esm/swappers/RelaySwapper/utils/helpers.d.ts +2 -2
- package/dist/esm/swappers/RelaySwapper/utils/relayStatus.d.ts +8 -0
- package/dist/esm/swappers/RelaySwapper/utils/relayStatus.js +32 -0
- package/dist/esm/swappers/RelaySwapper/utils/types.d.ts +18 -1
- package/dist/esm/swappers/SunioSwapper/utils/getSunioStepData.d.ts +1 -0
- package/dist/esm/swappers/SunioSwapper/utils/getSunioStepData.js +2 -2
- package/dist/esm/swappers/SunioSwapper/utils/getSunioTradeContext.js +6 -1
- package/dist/esm/swappers/ThorchainSwapper/generated/generatedThorLongtailTokens.json +1 -0
- package/dist/esm/types.d.ts +21 -2
- package/dist/esm/types.js +2 -0
- package/dist/esm/utils/cowswap/index.d.ts +4 -1
- package/dist/esm/utils/cowswap/index.js +3 -0
- package/dist/esm/utils/helpers.d.ts +9 -0
- package/dist/esm/utils/helpers.js +20 -0
- package/dist/esm/utils/helpers.test.js +42 -1
- package/package.json +6 -6
|
@@ -1,6 +1,8 @@
|
|
|
1
|
-
import type { GetEvmTradeQuoteInput, GetEvmTradeRateInput, GetSolanaTradeQuoteInput, GetSolanaTradeRateInput, GetTronTradeQuoteInput, GetTronTradeRateInput, GetUtxoTradeQuoteInput, GetUtxoTradeRateInput } from '../../../types';
|
|
1
|
+
import type { GetEvmTradeQuoteInput, GetEvmTradeRateInput, GetSolanaTradeQuoteInput, GetSolanaTradeRateInput, GetTronTradeQuoteInput, GetTronTradeRateInput, GetUtxoTradeQuoteInput, GetUtxoTradeRateInput, WithExactBuyAmount } from '../../../types';
|
|
2
2
|
export type RelayTradeQuoteInput = GetEvmTradeQuoteInput | GetUtxoTradeQuoteInput | GetSolanaTradeQuoteInput | GetTronTradeQuoteInput;
|
|
3
3
|
export type RelayTradeRateInput = GetEvmTradeRateInput | GetUtxoTradeRateInput | GetSolanaTradeRateInput | GetTronTradeRateInput;
|
|
4
|
+
export type RelayExactOutputTradeQuoteInput = WithExactBuyAmount<RelayTradeQuoteInput>;
|
|
5
|
+
export type RelayExactOutputTradeRateInput = WithExactBuyAmount<RelayTradeRateInput>;
|
|
4
6
|
export type RelayTransactionMetadata = {
|
|
5
7
|
to?: string;
|
|
6
8
|
data?: string;
|
|
@@ -10,6 +12,20 @@ export type RelayMetadata = {
|
|
|
10
12
|
relayId: string;
|
|
11
13
|
data?: string;
|
|
12
14
|
};
|
|
15
|
+
export type RelayRequestTransaction = {
|
|
16
|
+
hash?: string;
|
|
17
|
+
chainId?: number;
|
|
18
|
+
};
|
|
19
|
+
export type RelayRequestData = {
|
|
20
|
+
failReason?: string;
|
|
21
|
+
refundFailReason?: string;
|
|
22
|
+
inTxs?: RelayRequestTransaction[];
|
|
23
|
+
outTxs?: RelayRequestTransaction[];
|
|
24
|
+
};
|
|
25
|
+
export type RelayRequest = {
|
|
26
|
+
status?: RelayStatus['status'];
|
|
27
|
+
data?: RelayRequestData;
|
|
28
|
+
};
|
|
13
29
|
export type RelayStatus = {
|
|
14
30
|
status: 'success' | 'failure' | 'pending' | 'submitted' | 'depositing' | 'refund' | 'delayed' | 'waiting';
|
|
15
31
|
details?: string;
|
|
@@ -64,6 +80,7 @@ export type RelayFees = {
|
|
|
64
80
|
app: RelayCurrencyData;
|
|
65
81
|
};
|
|
66
82
|
export type QuoteDetails = {
|
|
83
|
+
currencyIn: RelayCurrencyData;
|
|
67
84
|
currencyOut: RelayCurrencyData;
|
|
68
85
|
rate: string;
|
|
69
86
|
slippageTolerance: {
|
|
@@ -3,6 +3,7 @@ import type { StepDataArgs, SwapErrorRight } from '../../../types';
|
|
|
3
3
|
import type { SunioRoute, SunioTransactionData } from '../types';
|
|
4
4
|
type BaseArgs = {
|
|
5
5
|
route: SunioRoute;
|
|
6
|
+
sellAmountCryptoBaseUnit: string;
|
|
6
7
|
};
|
|
7
8
|
export type GetSunioStepDataArgs = StepDataArgs<BaseArgs>;
|
|
8
9
|
type SunioRateStepData = {
|
|
@@ -6,12 +6,12 @@ const monads_1 = require("@sniptt/monads");
|
|
|
6
6
|
const utils_2 = require("../../../utils");
|
|
7
7
|
const estimateSunioNetworkFee_1 = require("./estimateSunioNetworkFee");
|
|
8
8
|
async function getSunioStepData(args) {
|
|
9
|
-
const { type, route, sellAsset, from, input, deps } = args;
|
|
9
|
+
const { type, route, sellAsset, sellAmountCryptoBaseUnit, from, input, deps } = args;
|
|
10
10
|
const estimateArgs = {
|
|
11
11
|
rpcUrl: deps.config.VITE_TRON_NODE_URL,
|
|
12
12
|
apiKey: deps.config.VITE_TRON_GRID_API_KEY,
|
|
13
13
|
route,
|
|
14
|
-
sellAmountCryptoBaseUnit
|
|
14
|
+
sellAmountCryptoBaseUnit,
|
|
15
15
|
isSellingNativeTrx: !(0, utils_1.contractAddressOrUndefined)(sellAsset.assetId),
|
|
16
16
|
address: from,
|
|
17
17
|
slippageTolerancePercentageDecimal: input.slippageTolerancePercentageDecimal,
|
|
@@ -83,7 +83,12 @@ const getSunioTradeContext = async ({ input, deps, }) => {
|
|
|
83
83
|
}),
|
|
84
84
|
},
|
|
85
85
|
protocolFees,
|
|
86
|
-
stepDataArgs: {
|
|
86
|
+
stepDataArgs: {
|
|
87
|
+
deps,
|
|
88
|
+
sellAsset,
|
|
89
|
+
sellAmountCryptoBaseUnit: sellAmountIncludingProtocolFeesCryptoBaseUnit,
|
|
90
|
+
route: bestRoute,
|
|
91
|
+
},
|
|
87
92
|
});
|
|
88
93
|
}
|
|
89
94
|
catch (error) {
|
|
@@ -1016,6 +1016,7 @@
|
|
|
1016
1016
|
"eip155:1/erc20:0x826180541412d574cf1336d22c0c0a287822678a",
|
|
1017
1017
|
"eip155:1/erc20:0x2c06ba9e7f0daccbc1f6a33ea67e85bb68fbee3a",
|
|
1018
1018
|
"eip155:1/erc20:0xcbb8f1bda10b9696c57e13bc128fe674769dcec0",
|
|
1019
|
+
"eip155:1/erc20:0x72dfb2e44f59c5ad2bafe84314e5b99a7cd5075e",
|
|
1019
1020
|
"eip155:43114/erc20:0xc891eb4cbdeff6e073e859e987815ed1505c2acd",
|
|
1020
1021
|
"eip155:43114/erc20:0xd24c2ad096400b6fbcd2ad8b24e7acbc21a1da64",
|
|
1021
1022
|
"eip155:43114/erc20:0x47c3118ad183712acd42648e9e522e13690f29a0",
|
package/dist/cjs/types.d.ts
CHANGED
|
@@ -93,6 +93,7 @@ export declare enum TradeQuoteError {
|
|
|
93
93
|
NoRouteFound = "NoRouteFound",
|
|
94
94
|
UnsupportedChain = "UnsupportedChain",
|
|
95
95
|
CrossChainNotSupported = "CrossChainNotSupported",
|
|
96
|
+
ExactOutputNotSupported = "ExactOutputNotSupported",
|
|
96
97
|
NetworkFeeEstimationFailed = "NetworkFeeEstimationFailed",
|
|
97
98
|
TradingHalted = "TradingHalted",
|
|
98
99
|
SellAmountBelowMinimum = "SellAmountBelowMinimum",
|
|
@@ -212,17 +213,30 @@ export type GetUtxoTradeRateInput = CommonTradeRateInput & {
|
|
|
212
213
|
export type GetUtxoTradeQuoteInput = GetUtxoTradeQuoteWithWallet;
|
|
213
214
|
export type GetTradeQuoteInput = GetUtxoTradeQuoteInput | GetEvmTradeQuoteInput | GetCosmosSdkTradeQuoteInput | GetTronTradeQuoteInput | GetNearTradeQuoteInput | GetTonTradeQuoteInput | GetSolanaTradeQuoteInput | GetStarknetTradeQuoteInput | GetSuiTradeQuoteInput;
|
|
214
215
|
export type GetTradeRateInput = GetEvmTradeRateInput | GetCosmosSdkTradeRateInput | GetUtxoTradeRateInput | GetTronTradeRateInput | GetNearTradeRateInput | GetTonTradeRateInput | GetSolanaTradeRateInput | GetStarknetTradeRateInput | GetSuiTradeRateInput;
|
|
216
|
+
export type WithExactBuyAmount<T extends {
|
|
217
|
+
sellAmountIncludingProtocolFeesCryptoBaseUnit: string;
|
|
218
|
+
}> = T extends unknown ? Omit<T, 'sellAmountIncludingProtocolFeesCryptoBaseUnit'> & {
|
|
219
|
+
buyAmountCryptoBaseUnit: string;
|
|
220
|
+
} : never;
|
|
221
|
+
export type GetExactOutputTradeQuoteInput = WithExactBuyAmount<GetTradeQuoteInput>;
|
|
222
|
+
export type GetExactOutputTradeRateInput = WithExactBuyAmount<GetTradeRateInput>;
|
|
223
|
+
export type TradeAmount = {
|
|
224
|
+
direction: 'exactIn' | 'exactOut';
|
|
225
|
+
cryptoBaseUnit: string;
|
|
226
|
+
};
|
|
215
227
|
type StepDataBaseArgs = {
|
|
216
228
|
deps: SwapperDeps;
|
|
217
229
|
sellAsset: Asset;
|
|
218
230
|
};
|
|
231
|
+
type StepDataRateInput = GetTradeRateInput | GetExactOutputTradeRateInput;
|
|
232
|
+
type StepDataQuoteInput = GetTradeQuoteInput | GetExactOutputTradeQuoteInput;
|
|
219
233
|
export type StepDataArgs<Base, Rate = unknown, Quote = unknown> = (StepDataBaseArgs & Base & {
|
|
220
234
|
type: 'rate';
|
|
221
|
-
input:
|
|
235
|
+
input: StepDataRateInput;
|
|
222
236
|
from?: string;
|
|
223
237
|
} & Rate) | (StepDataBaseArgs & Base & {
|
|
224
238
|
type: 'quote';
|
|
225
|
-
input:
|
|
239
|
+
input: StepDataQuoteInput;
|
|
226
240
|
from: string;
|
|
227
241
|
} & Quote);
|
|
228
242
|
export type EvmSwapperDeps = {
|
|
@@ -355,6 +369,7 @@ export type TradeCommon = {
|
|
|
355
369
|
slippageTolerancePercentageDecimal: string | undefined;
|
|
356
370
|
isLongtail?: boolean;
|
|
357
371
|
swapperName: SwapperName;
|
|
372
|
+
isExactOutput?: boolean;
|
|
358
373
|
};
|
|
359
374
|
type TradeQuoteBase = TradeCommon & {
|
|
360
375
|
receiveAddress: string | undefined;
|
|
@@ -559,6 +574,7 @@ export type CheckTradeStatusInput = {
|
|
|
559
574
|
export type TradeStatus = {
|
|
560
575
|
status: TxStatus;
|
|
561
576
|
buyTxHash: string | undefined;
|
|
577
|
+
sellTxHash?: string | undefined;
|
|
562
578
|
swapperTxId?: string | undefined;
|
|
563
579
|
swapperTxLink?: string | undefined;
|
|
564
580
|
message: string | [string, InterpolationOptions] | undefined;
|
|
@@ -568,6 +584,7 @@ export type TradeQuoteResult = Result<TradeQuote[], SwapErrorRight>;
|
|
|
568
584
|
export type TradeRateResult = Result<TradeRate[], SwapErrorRight>;
|
|
569
585
|
export type EvmMessageToSign = CowMessageToSign;
|
|
570
586
|
export type Swapper = {
|
|
587
|
+
supportsExternalPayment?: boolean;
|
|
571
588
|
executeEvmTransaction?: (txToSign: SignTx<EvmChainId>, callbacks: EvmTransactionExecutionProps) => Promise<string>;
|
|
572
589
|
executeEvmMessage?: (txMetaToSign: EvmMessageToSign, callbacks: EvmMessageExecutionProps, config: SwapperConfig) => Promise<string>;
|
|
573
590
|
executeUtxoTransaction?: (txToSign: SignTx<UtxoChainId>, callbacks: UtxoTransactionExecutionProps) => Promise<string>;
|
|
@@ -584,6 +601,8 @@ export type SwapperApi = {
|
|
|
584
601
|
checkTradeStatus: (input: CheckTradeStatusInput) => Promise<TradeStatus>;
|
|
585
602
|
getTradeQuote: (input: GetTradeQuoteInput, deps: SwapperDeps) => Promise<TradeQuoteResult>;
|
|
586
603
|
getTradeRate: (input: GetTradeRateInput, deps: SwapperDeps) => Promise<TradeRateResult>;
|
|
604
|
+
getExactOutputTradeQuote?: (input: GetExactOutputTradeQuoteInput, deps: SwapperDeps) => Promise<TradeQuoteResult>;
|
|
605
|
+
getExactOutputTradeRate?: (input: GetExactOutputTradeRateInput, deps: SwapperDeps) => Promise<TradeRateResult>;
|
|
587
606
|
getUnsignedEvmTransaction?: (input: GetUnsignedEvmTransactionArgs) => Promise<SignTx<EvmChainId>>;
|
|
588
607
|
getUnsignedEvmMessage?: (input: GetUnsignedEvmMessageArgs) => Promise<EvmMessageToSign>;
|
|
589
608
|
getUnsignedUtxoTransaction?: (input: GetUnsignedUtxoTransactionArgs) => Promise<SignTx<UtxoChainId>>;
|
package/dist/cjs/types.js
CHANGED
|
@@ -33,6 +33,8 @@ var TradeQuoteError;
|
|
|
33
33
|
TradeQuoteError["UnsupportedChain"] = "UnsupportedChain";
|
|
34
34
|
// the swapper can't swap across chains
|
|
35
35
|
TradeQuoteError["CrossChainNotSupported"] = "CrossChainNotSupported";
|
|
36
|
+
// the swapper can quote this pair, but can't derive a sell amount from an exact buy amount
|
|
37
|
+
TradeQuoteError["ExactOutputNotSupported"] = "ExactOutputNotSupported";
|
|
36
38
|
// the swapper wasn't able to get a network fee estimate
|
|
37
39
|
TradeQuoteError["NetworkFeeEstimationFailed"] = "NetworkFeeEstimationFailed";
|
|
38
40
|
// trading has been halted upstream
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { AppDataRootSchema as AppDataRootSchemaLegacy } from '@cowprotocol/app-data/dist/generatedTypes/v0.4.0';
|
|
2
|
+
import type { AppDataRootSchema as AppDataRootSchemaLatest, OrderClass1 } from '@cowprotocol/app-data/dist/generatedTypes/v1.3.0';
|
|
2
3
|
import type { ChainId } from '@shapeshiftoss/caip';
|
|
3
4
|
import type { EvmChainAdapter } from '@shapeshiftoss/chain-adapters';
|
|
4
5
|
import type { HDWallet } from '@shapeshiftoss/hdwallet-core';
|
|
@@ -22,3 +23,5 @@ export declare const getFullAppData: (slippageTolerancePercentage: string, affil
|
|
|
22
23
|
appDataHash: string;
|
|
23
24
|
appData: string;
|
|
24
25
|
}>;
|
|
26
|
+
export type ParsedAppData = AppDataRootSchemaLatest | AppDataRootSchemaLegacy;
|
|
27
|
+
export declare const isLegacyAppData: (appData: ParsedAppData) => appData is AppDataRootSchemaLegacy;
|
|
@@ -14,7 +14,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
exports.getFullAppData = exports.getAffiliateAppDataFragmentByChainId = exports.cowSwapTokenToAssetId = exports.signCowOrderCancellation = exports.signCowOrder = exports.signCowMessage = exports.assertGetCowNetwork = exports.getCowNetwork = void 0;
|
|
17
|
+
exports.isLegacyAppData = exports.getFullAppData = exports.getAffiliateAppDataFragmentByChainId = exports.cowSwapTokenToAssetId = exports.signCowOrderCancellation = exports.signCowOrder = exports.signCowMessage = exports.assertGetCowNetwork = exports.getCowNetwork = void 0;
|
|
18
18
|
const app_data_1 = require("@cowprotocol/app-data");
|
|
19
19
|
const caip_1 = require("@shapeshiftoss/caip");
|
|
20
20
|
const chain_adapters_1 = require("@shapeshiftoss/chain-adapters");
|
|
@@ -183,3 +183,7 @@ const getFullAppData = async (slippageTolerancePercentage, affiliateAppDataFragm
|
|
|
183
183
|
return { appDataHash: appDataKeccak256, appData: fullAppData };
|
|
184
184
|
};
|
|
185
185
|
exports.getFullAppData = getFullAppData;
|
|
186
|
+
const isLegacyAppData = (appData) => {
|
|
187
|
+
return appData.version === '0.4.0';
|
|
188
|
+
};
|
|
189
|
+
exports.isLegacyAppData = isLegacyAppData;
|
|
@@ -1,5 +1,14 @@
|
|
|
1
1
|
import type { AssetId, ChainId } from '@shapeshiftoss/caip';
|
|
2
|
+
import type { TradeAmount, TradeStepCommon } from '../types';
|
|
3
|
+
import { SwapperName } from '../types';
|
|
2
4
|
export declare const FALLBACK_QUOTE_DEADLINE_MS = 60000;
|
|
5
|
+
export declare const getTradeAmount: (input: {
|
|
6
|
+
sellAmountIncludingProtocolFeesCryptoBaseUnit: string;
|
|
7
|
+
} | {
|
|
8
|
+
buyAmountCryptoBaseUnit: string;
|
|
9
|
+
}) => TradeAmount;
|
|
3
10
|
export declare const normalizeEpochToMs: (value: number) => number;
|
|
4
11
|
export declare const isNativeEvmAsset: (assetId: AssetId) => boolean;
|
|
5
12
|
export declare const getTreasuryAddressFromChainId: (chainId: ChainId) => string;
|
|
13
|
+
export type DepositAddressStep = Pick<TradeStepCommon, 'chainflipSpecific' | 'swapperMetadata'>;
|
|
14
|
+
export declare const getDepositAddress: (step: DepositAddressStep, swapperName: SwapperName) => string | undefined;
|
|
@@ -1,11 +1,16 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getTreasuryAddressFromChainId = exports.isNativeEvmAsset = exports.normalizeEpochToMs = exports.FALLBACK_QUOTE_DEADLINE_MS = void 0;
|
|
3
|
+
exports.getDepositAddress = exports.getTreasuryAddressFromChainId = exports.isNativeEvmAsset = exports.normalizeEpochToMs = exports.getTradeAmount = exports.FALLBACK_QUOTE_DEADLINE_MS = void 0;
|
|
4
4
|
const caip_1 = require("@shapeshiftoss/caip");
|
|
5
5
|
const types_1 = require("@shapeshiftoss/types");
|
|
6
6
|
const utils_1 = require("@shapeshiftoss/utils");
|
|
7
|
+
const types_2 = require("../types");
|
|
7
8
|
// Deadline for providers without their own expiry - short enough to keep priced amounts honest
|
|
8
9
|
exports.FALLBACK_QUOTE_DEADLINE_MS = 60_000;
|
|
10
|
+
const getTradeAmount = (input) => 'buyAmountCryptoBaseUnit' in input
|
|
11
|
+
? { direction: 'exactOut', cryptoBaseUnit: input.buyAmountCryptoBaseUnit }
|
|
12
|
+
: { direction: 'exactIn', cryptoBaseUnit: input.sellAmountIncludingProtocolFeesCryptoBaseUnit };
|
|
13
|
+
exports.getTradeAmount = getTradeAmount;
|
|
9
14
|
// Bands are unambiguous for any realistic date: unix s land ~2e9, ms ~2e12, µs ~2e15, ns ~2e18
|
|
10
15
|
const normalizeEpochToMs = (value) => {
|
|
11
16
|
if (value < 1e12)
|
|
@@ -74,3 +79,20 @@ const getTreasuryAddressFromChainId = (chainId) => {
|
|
|
74
79
|
return treasuryAddress;
|
|
75
80
|
};
|
|
76
81
|
exports.getTreasuryAddressFromChainId = getTreasuryAddressFromChainId;
|
|
82
|
+
const getDepositAddress = (step, swapperName) => {
|
|
83
|
+
switch (swapperName) {
|
|
84
|
+
case types_2.SwapperName.Chainflip:
|
|
85
|
+
return step.chainflipSpecific?.depositAddress || undefined;
|
|
86
|
+
case types_2.SwapperName.NearIntents: {
|
|
87
|
+
if (step.swapperMetadata?.name !== 'nearIntents')
|
|
88
|
+
return;
|
|
89
|
+
const { depositAddress, depositMemo } = step.swapperMetadata;
|
|
90
|
+
if (depositMemo)
|
|
91
|
+
return;
|
|
92
|
+
return depositAddress || undefined;
|
|
93
|
+
}
|
|
94
|
+
default:
|
|
95
|
+
return;
|
|
96
|
+
}
|
|
97
|
+
};
|
|
98
|
+
exports.getDepositAddress = getDepositAddress;
|
|
@@ -4,6 +4,8 @@ const caip_1 = require("@shapeshiftoss/caip");
|
|
|
4
4
|
const types_1 = require("@shapeshiftoss/types");
|
|
5
5
|
const utils_1 = require("@shapeshiftoss/utils");
|
|
6
6
|
const vitest_1 = require("vitest");
|
|
7
|
+
const constants_1 = require("../constants");
|
|
8
|
+
const types_2 = require("../types");
|
|
7
9
|
const helpers_1 = require("./helpers");
|
|
8
10
|
(0, vitest_1.describe)('getTreasuryAddressFromChainId', () => {
|
|
9
11
|
// Affiliate and fee recipient addresses for every swapper flow through here, so pin the values
|
|
@@ -49,3 +51,42 @@ const helpers_1 = require("./helpers");
|
|
|
49
51
|
(0, vitest_1.expect)((0, helpers_1.normalizeEpochToMs)(epochMs * 1e6)).toBe(epochMs);
|
|
50
52
|
});
|
|
51
53
|
});
|
|
54
|
+
const makeStep = (step) => step;
|
|
55
|
+
(0, vitest_1.describe)('getDepositAddress', () => {
|
|
56
|
+
(0, vitest_1.it)('reads the chainflip deposit address', () => {
|
|
57
|
+
const step = makeStep({ chainflipSpecific: { depositAddress: 'bc1qdeposit' } });
|
|
58
|
+
(0, vitest_1.expect)((0, helpers_1.getDepositAddress)(step, types_2.SwapperName.Chainflip)).toBe('bc1qdeposit');
|
|
59
|
+
});
|
|
60
|
+
(0, vitest_1.it)('returns undefined when chainflip has no deposit address', () => {
|
|
61
|
+
(0, vitest_1.expect)((0, helpers_1.getDepositAddress)(makeStep({}), types_2.SwapperName.Chainflip)).toBeUndefined();
|
|
62
|
+
});
|
|
63
|
+
(0, vitest_1.it)('reads the near intents deposit address', () => {
|
|
64
|
+
const step = makeStep({
|
|
65
|
+
swapperMetadata: { name: 'nearIntents', depositAddress: '0xdeposit' },
|
|
66
|
+
});
|
|
67
|
+
(0, vitest_1.expect)((0, helpers_1.getDepositAddress)(step, types_2.SwapperName.NearIntents)).toBe('0xdeposit');
|
|
68
|
+
});
|
|
69
|
+
(0, vitest_1.it)('rejects a memo-bound near intents deposit address', () => {
|
|
70
|
+
const step = makeStep({
|
|
71
|
+
swapperMetadata: { name: 'nearIntents', depositAddress: 'EQdeposit', depositMemo: '12345' },
|
|
72
|
+
});
|
|
73
|
+
(0, vitest_1.expect)((0, helpers_1.getDepositAddress)(step, types_2.SwapperName.NearIntents)).toBeUndefined();
|
|
74
|
+
});
|
|
75
|
+
(0, vitest_1.it)('rejects an empty near intents deposit address', () => {
|
|
76
|
+
const step = makeStep({ swapperMetadata: { name: 'nearIntents', depositAddress: '' } });
|
|
77
|
+
(0, vitest_1.expect)((0, helpers_1.getDepositAddress)(step, types_2.SwapperName.NearIntents)).toBeUndefined();
|
|
78
|
+
});
|
|
79
|
+
(0, vitest_1.it)('returns undefined for swappers that do not use deposit addresses', () => {
|
|
80
|
+
const step = makeStep({ chainflipSpecific: { depositAddress: 'bc1qdeposit' } });
|
|
81
|
+
(0, vitest_1.expect)((0, helpers_1.getDepositAddress)(step, types_2.SwapperName.Relay)).toBeUndefined();
|
|
82
|
+
});
|
|
83
|
+
});
|
|
84
|
+
(0, vitest_1.describe)('supportsExternalPayment', () => {
|
|
85
|
+
(0, vitest_1.it)('is flagged on exactly the externally paid swappers', () => {
|
|
86
|
+
const flagged = Object.entries(constants_1.swappers)
|
|
87
|
+
.filter(([, swapper]) => swapper?.supportsExternalPayment)
|
|
88
|
+
.map(([name]) => name)
|
|
89
|
+
.sort();
|
|
90
|
+
(0, vitest_1.expect)(flagged).toEqual([types_2.SwapperName.Chainflip, types_2.SwapperName.NearIntents].sort());
|
|
91
|
+
});
|
|
92
|
+
});
|