@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
package/dist/esm/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/esm/types.js
CHANGED
|
@@ -30,6 +30,8 @@ export var TradeQuoteError;
|
|
|
30
30
|
TradeQuoteError["UnsupportedChain"] = "UnsupportedChain";
|
|
31
31
|
// the swapper can't swap across chains
|
|
32
32
|
TradeQuoteError["CrossChainNotSupported"] = "CrossChainNotSupported";
|
|
33
|
+
// the swapper can quote this pair, but can't derive a sell amount from an exact buy amount
|
|
34
|
+
TradeQuoteError["ExactOutputNotSupported"] = "ExactOutputNotSupported";
|
|
33
35
|
// the swapper wasn't able to get a network fee estimate
|
|
34
36
|
TradeQuoteError["NetworkFeeEstimationFailed"] = "NetworkFeeEstimationFailed";
|
|
35
37
|
// 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;
|
|
@@ -158,3 +158,6 @@ export const getFullAppData = async (slippageTolerancePercentage, affiliateAppDa
|
|
|
158
158
|
const { fullAppData, appDataKeccak256 } = await generateAppDataFromDoc(appDataDoc);
|
|
159
159
|
return { appDataHash: appDataKeccak256, appData: fullAppData };
|
|
160
160
|
};
|
|
161
|
+
export const isLegacyAppData = (appData) => {
|
|
162
|
+
return appData.version === '0.4.0';
|
|
163
|
+
};
|
|
@@ -1,5 +1,14 @@
|
|
|
1
1
|
import type { AssetId, ChainId } from '@shapeshiftoss/caip';
|
|
2
|
+
import type { TradeAmount, TradeStepCommon } from '../types.js';
|
|
3
|
+
import { SwapperName } from '../types.js';
|
|
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,8 +1,12 @@
|
|
|
1
1
|
import { arbitrumAssetId, avalancheAssetId, baseAssetId, bscAssetId, ethAssetId, fromAssetId, gnosisAssetId, katanaAssetId, monadAssetId, optimismAssetId, plasmaAssetId, polygonAssetId, } from '@shapeshiftoss/caip';
|
|
2
2
|
import { KnownChainIds } from '@shapeshiftoss/types';
|
|
3
3
|
import { DAO_TREASURY_ARBITRUM, DAO_TREASURY_AVALANCHE, DAO_TREASURY_BASE, DAO_TREASURY_BITCOIN, DAO_TREASURY_BOB, DAO_TREASURY_BSC, DAO_TREASURY_ETHEREUM_MAINNET, DAO_TREASURY_GNOSIS, DAO_TREASURY_HYPEREVM, DAO_TREASURY_MONAD, DAO_TREASURY_OPTIMISM, DAO_TREASURY_POLYGON, DAO_TREASURY_SOLANA, DAO_TREASURY_STARKNET, DAO_TREASURY_TON, isTreasuryChainId, } from '@shapeshiftoss/utils';
|
|
4
|
+
import { SwapperName } from '../types.js';
|
|
4
5
|
// Deadline for providers without their own expiry - short enough to keep priced amounts honest
|
|
5
6
|
export const FALLBACK_QUOTE_DEADLINE_MS = 60_000;
|
|
7
|
+
export const getTradeAmount = (input) => 'buyAmountCryptoBaseUnit' in input
|
|
8
|
+
? { direction: 'exactOut', cryptoBaseUnit: input.buyAmountCryptoBaseUnit }
|
|
9
|
+
: { direction: 'exactIn', cryptoBaseUnit: input.sellAmountIncludingProtocolFeesCryptoBaseUnit };
|
|
6
10
|
// Bands are unambiguous for any realistic date: unix s land ~2e9, ms ~2e12, µs ~2e15, ns ~2e18
|
|
7
11
|
export const normalizeEpochToMs = (value) => {
|
|
8
12
|
if (value < 1e12)
|
|
@@ -68,3 +72,19 @@ export const getTreasuryAddressFromChainId = (chainId) => {
|
|
|
68
72
|
throw new Error(`[getTreasuryAddressFromChainId] - Unsupported chainId: ${chainId}`);
|
|
69
73
|
return treasuryAddress;
|
|
70
74
|
};
|
|
75
|
+
export const getDepositAddress = (step, swapperName) => {
|
|
76
|
+
switch (swapperName) {
|
|
77
|
+
case SwapperName.Chainflip:
|
|
78
|
+
return step.chainflipSpecific?.depositAddress || undefined;
|
|
79
|
+
case SwapperName.NearIntents: {
|
|
80
|
+
if (step.swapperMetadata?.name !== 'nearIntents')
|
|
81
|
+
return;
|
|
82
|
+
const { depositAddress, depositMemo } = step.swapperMetadata;
|
|
83
|
+
if (depositMemo)
|
|
84
|
+
return;
|
|
85
|
+
return depositAddress || undefined;
|
|
86
|
+
}
|
|
87
|
+
default:
|
|
88
|
+
return;
|
|
89
|
+
}
|
|
90
|
+
};
|
|
@@ -2,7 +2,9 @@ import { thorchainChainId } from '@shapeshiftoss/caip';
|
|
|
2
2
|
import { KnownChainIds } from '@shapeshiftoss/types';
|
|
3
3
|
import { treasuryChainIds } from '@shapeshiftoss/utils';
|
|
4
4
|
import { describe, expect, it } from 'vitest';
|
|
5
|
-
import {
|
|
5
|
+
import { swappers } from '../constants.js';
|
|
6
|
+
import { SwapperName } from '../types.js';
|
|
7
|
+
import { getDepositAddress, getTreasuryAddressFromChainId, normalizeEpochToMs } from './helpers.js';
|
|
6
8
|
describe('getTreasuryAddressFromChainId', () => {
|
|
7
9
|
// Affiliate and fee recipient addresses for every swapper flow through here, so pin the values
|
|
8
10
|
// rather than the wiring - a chain pointing at another chain's treasury misroutes revenue silently
|
|
@@ -47,3 +49,42 @@ describe('normalizeEpochToMs', () => {
|
|
|
47
49
|
expect(normalizeEpochToMs(epochMs * 1e6)).toBe(epochMs);
|
|
48
50
|
});
|
|
49
51
|
});
|
|
52
|
+
const makeStep = (step) => step;
|
|
53
|
+
describe('getDepositAddress', () => {
|
|
54
|
+
it('reads the chainflip deposit address', () => {
|
|
55
|
+
const step = makeStep({ chainflipSpecific: { depositAddress: 'bc1qdeposit' } });
|
|
56
|
+
expect(getDepositAddress(step, SwapperName.Chainflip)).toBe('bc1qdeposit');
|
|
57
|
+
});
|
|
58
|
+
it('returns undefined when chainflip has no deposit address', () => {
|
|
59
|
+
expect(getDepositAddress(makeStep({}), SwapperName.Chainflip)).toBeUndefined();
|
|
60
|
+
});
|
|
61
|
+
it('reads the near intents deposit address', () => {
|
|
62
|
+
const step = makeStep({
|
|
63
|
+
swapperMetadata: { name: 'nearIntents', depositAddress: '0xdeposit' },
|
|
64
|
+
});
|
|
65
|
+
expect(getDepositAddress(step, SwapperName.NearIntents)).toBe('0xdeposit');
|
|
66
|
+
});
|
|
67
|
+
it('rejects a memo-bound near intents deposit address', () => {
|
|
68
|
+
const step = makeStep({
|
|
69
|
+
swapperMetadata: { name: 'nearIntents', depositAddress: 'EQdeposit', depositMemo: '12345' },
|
|
70
|
+
});
|
|
71
|
+
expect(getDepositAddress(step, SwapperName.NearIntents)).toBeUndefined();
|
|
72
|
+
});
|
|
73
|
+
it('rejects an empty near intents deposit address', () => {
|
|
74
|
+
const step = makeStep({ swapperMetadata: { name: 'nearIntents', depositAddress: '' } });
|
|
75
|
+
expect(getDepositAddress(step, SwapperName.NearIntents)).toBeUndefined();
|
|
76
|
+
});
|
|
77
|
+
it('returns undefined for swappers that do not use deposit addresses', () => {
|
|
78
|
+
const step = makeStep({ chainflipSpecific: { depositAddress: 'bc1qdeposit' } });
|
|
79
|
+
expect(getDepositAddress(step, SwapperName.Relay)).toBeUndefined();
|
|
80
|
+
});
|
|
81
|
+
});
|
|
82
|
+
describe('supportsExternalPayment', () => {
|
|
83
|
+
it('is flagged on exactly the externally paid swappers', () => {
|
|
84
|
+
const flagged = Object.entries(swappers)
|
|
85
|
+
.filter(([, swapper]) => swapper?.supportsExternalPayment)
|
|
86
|
+
.map(([name]) => name)
|
|
87
|
+
.sort();
|
|
88
|
+
expect(flagged).toEqual([SwapperName.Chainflip, SwapperName.NearIntents].sort());
|
|
89
|
+
});
|
|
90
|
+
});
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@shapeshiftoss/swapper",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "20.1.0",
|
|
4
4
|
"repository": "https://github.com/shapeshift/web",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
"@coral-xyz/anchor": "0.29.0",
|
|
29
29
|
"@cowprotocol/app-data": "^2.3.0",
|
|
30
30
|
"@defuse-protocol/one-click-sdk-typescript": "^0.1.1-0.2",
|
|
31
|
-
"@gobob/bob-sdk": "5.
|
|
31
|
+
"@gobob/bob-sdk": "5.11.1",
|
|
32
32
|
"@mysten/sui": "^1.45.2",
|
|
33
33
|
"@shapeshiftoss/bitcoinjs-lib": "7.0.0-shapeshift.0",
|
|
34
34
|
"@sniptt/monads": "^0.5.10",
|
|
@@ -52,11 +52,11 @@
|
|
|
52
52
|
"viem": "2.55.11",
|
|
53
53
|
"@shapeshiftoss/caip": "^8.16.10",
|
|
54
54
|
"@shapeshiftoss/hdwallet-core": "^1.62.41",
|
|
55
|
-
"@shapeshiftoss/types": "^9.0.0",
|
|
56
|
-
"@shapeshiftoss/unchained-client": "^10.14.11",
|
|
57
55
|
"@shapeshiftoss/contracts": "^1.0.7",
|
|
58
|
-
"@shapeshiftoss/
|
|
59
|
-
"@shapeshiftoss/chain-adapters": "^11.5.1"
|
|
56
|
+
"@shapeshiftoss/types": "^9.0.1",
|
|
57
|
+
"@shapeshiftoss/chain-adapters": "^11.5.1",
|
|
58
|
+
"@shapeshiftoss/utils": "^1.1.1",
|
|
59
|
+
"@shapeshiftoss/unchained-client": "^10.14.11"
|
|
60
60
|
},
|
|
61
61
|
"devDependencies": {
|
|
62
62
|
"@types/lodash": "^4.14.178",
|