@shapeshiftoss/swapper 20.6.0 → 20.6.2
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/constants.js +8 -0
- package/dist/cjs/index.d.ts +1 -0
- package/dist/cjs/index.js +1 -0
- package/dist/cjs/swappers/AcrossSwapper/constant.js +0 -7
- package/dist/cjs/swappers/BobGatewaySwapper/utils/constants.d.ts +1 -1
- package/dist/cjs/swappers/BobGatewaySwapper/utils/constants.js +0 -1
- package/dist/cjs/swappers/ChainflipSwapper/constants.d.ts +1 -1
- package/dist/cjs/swappers/ChainflipSwapper/constants.js +11 -1
- package/dist/cjs/swappers/ChainflipSwapper/types.d.ts +2 -1
- package/dist/cjs/swappers/ChainflipSwapper/types.js +1 -0
- package/dist/cjs/swappers/ChainflipSwapper/utils/helpers.d.ts +2 -2
- package/dist/cjs/swappers/DebridgeSwapper/constant.js +0 -4
- package/dist/cjs/swappers/FyndSwapper/utils/fyndService.js +1 -1
- package/dist/cjs/swappers/KyberSwapper/utils/kyberService.js +1 -1
- package/dist/cjs/swappers/PanoraSwapper/PanoraSwapper.d.ts +2 -0
- package/dist/cjs/swappers/PanoraSwapper/PanoraSwapper.js +5 -0
- package/dist/cjs/swappers/PanoraSwapper/endpoints.d.ts +2 -0
- package/dist/cjs/swappers/PanoraSwapper/endpoints.js +13 -0
- package/dist/cjs/swappers/PanoraSwapper/index.d.ts +2 -0
- package/dist/cjs/swappers/PanoraSwapper/index.js +7 -0
- package/dist/cjs/swappers/PanoraSwapper/swapperApi/getPanoraTradeQuote.d.ts +4 -0
- package/dist/cjs/swappers/PanoraSwapper/swapperApi/getPanoraTradeQuote.js +42 -0
- package/dist/cjs/swappers/PanoraSwapper/swapperApi/getPanoraTradeRate.d.ts +4 -0
- package/dist/cjs/swappers/PanoraSwapper/swapperApi/getPanoraTradeRate.js +36 -0
- package/dist/cjs/swappers/PanoraSwapper/types.d.ts +35 -0
- package/dist/cjs/swappers/PanoraSwapper/types.js +2 -0
- package/dist/cjs/swappers/PanoraSwapper/utils/constants.d.ts +2 -0
- package/dist/cjs/swappers/PanoraSwapper/utils/constants.js +6 -0
- package/dist/cjs/swappers/PanoraSwapper/utils/fetchFromPanora.d.ts +7 -0
- package/dist/cjs/swappers/PanoraSwapper/utils/fetchFromPanora.js +15 -0
- package/dist/cjs/swappers/PanoraSwapper/utils/getPanoraStepData.d.ts +19 -0
- package/dist/cjs/swappers/PanoraSwapper/utils/getPanoraStepData.js +41 -0
- package/dist/cjs/swappers/PanoraSwapper/utils/getPanoraTradeContext.d.ts +17 -0
- package/dist/cjs/swappers/PanoraSwapper/utils/getPanoraTradeContext.js +63 -0
- package/dist/cjs/swappers/PanoraSwapper/utils/helpers.d.ts +25 -0
- package/dist/cjs/swappers/PanoraSwapper/utils/helpers.js +129 -0
- package/dist/cjs/swappers/PanoraSwapper/utils/helpers.test.d.ts +1 -0
- package/dist/cjs/swappers/PanoraSwapper/utils/helpers.test.js +40 -0
- package/dist/cjs/swappers/PanoraSwapper/utils/panoraService.d.ts +5 -0
- package/dist/cjs/swappers/PanoraSwapper/utils/panoraService.js +10 -0
- package/dist/cjs/swappers/RelaySwapper/constant.js +0 -14
- package/dist/cjs/swappers/RelaySwapper/utils/relayTokenToAssetId.js +0 -70
- package/dist/cjs/swappers/SymbiosisSwapper/utils/constants.d.ts +0 -1
- package/dist/cjs/swappers/SymbiosisSwapper/utils/constants.js +1 -10
- package/dist/cjs/swappers/SymbiosisSwapper/utils/symbiosisService.js +1 -3
- package/dist/cjs/swappers/ZrxSwapper/utils/zrxService.js +1 -1
- package/dist/cjs/types.d.ts +3 -1
- package/dist/cjs/types.js +1 -0
- package/dist/cjs/utils/aptos/checkAptosSwapStatus.d.ts +4 -0
- package/dist/cjs/utils/aptos/checkAptosSwapStatus.js +27 -0
- package/dist/cjs/utils/aptos/getAptosNetworkFeeCryptoBaseUnit.d.ts +11 -0
- package/dist/cjs/utils/aptos/getAptosNetworkFeeCryptoBaseUnit.js +12 -0
- package/dist/cjs/utils/aptos/index.d.ts +2 -0
- package/dist/cjs/utils/aptos/index.js +2 -0
- package/dist/cjs/utils/cowswap/constants.js +0 -1
- package/dist/cjs/utils/cowswap/index.js +0 -2
- package/dist/cjs/utils/helpers.js +1 -0
- package/dist/cjs/utils/helpers.test.js +1 -0
- package/dist/esm/.tsbuildinfo +1 -1
- package/dist/esm/constants.js +8 -0
- package/dist/esm/index.d.ts +1 -0
- package/dist/esm/index.js +1 -0
- package/dist/esm/swappers/AcrossSwapper/constant.js +2 -9
- package/dist/esm/swappers/BobGatewaySwapper/utils/constants.d.ts +1 -1
- package/dist/esm/swappers/BobGatewaySwapper/utils/constants.js +1 -2
- package/dist/esm/swappers/ChainflipSwapper/constants.d.ts +1 -1
- package/dist/esm/swappers/ChainflipSwapper/constants.js +12 -2
- package/dist/esm/swappers/ChainflipSwapper/types.d.ts +2 -1
- package/dist/esm/swappers/ChainflipSwapper/types.js +1 -0
- package/dist/esm/swappers/ChainflipSwapper/utils/helpers.d.ts +2 -2
- package/dist/esm/swappers/DebridgeSwapper/constant.js +2 -6
- package/dist/esm/swappers/FyndSwapper/utils/fyndService.js +1 -1
- package/dist/esm/swappers/KyberSwapper/utils/kyberService.js +1 -1
- package/dist/esm/swappers/PanoraSwapper/PanoraSwapper.d.ts +2 -0
- package/dist/esm/swappers/PanoraSwapper/PanoraSwapper.js +2 -0
- package/dist/esm/swappers/PanoraSwapper/endpoints.d.ts +2 -0
- package/dist/esm/swappers/PanoraSwapper/endpoints.js +10 -0
- package/dist/esm/swappers/PanoraSwapper/index.d.ts +2 -0
- package/dist/esm/swappers/PanoraSwapper/index.js +2 -0
- package/dist/esm/swappers/PanoraSwapper/swapperApi/getPanoraTradeQuote.d.ts +4 -0
- package/dist/esm/swappers/PanoraSwapper/swapperApi/getPanoraTradeQuote.js +38 -0
- package/dist/esm/swappers/PanoraSwapper/swapperApi/getPanoraTradeRate.d.ts +4 -0
- package/dist/esm/swappers/PanoraSwapper/swapperApi/getPanoraTradeRate.js +32 -0
- package/dist/esm/swappers/PanoraSwapper/types.d.ts +35 -0
- package/dist/esm/swappers/PanoraSwapper/types.js +1 -0
- package/dist/esm/swappers/PanoraSwapper/utils/constants.d.ts +2 -0
- package/dist/esm/swappers/PanoraSwapper/utils/constants.js +3 -0
- package/dist/esm/swappers/PanoraSwapper/utils/fetchFromPanora.d.ts +7 -0
- package/dist/esm/swappers/PanoraSwapper/utils/fetchFromPanora.js +11 -0
- package/dist/esm/swappers/PanoraSwapper/utils/getPanoraStepData.d.ts +19 -0
- package/dist/esm/swappers/PanoraSwapper/utils/getPanoraStepData.js +37 -0
- package/dist/esm/swappers/PanoraSwapper/utils/getPanoraTradeContext.d.ts +17 -0
- package/dist/esm/swappers/PanoraSwapper/utils/getPanoraTradeContext.js +59 -0
- package/dist/esm/swappers/PanoraSwapper/utils/helpers.d.ts +25 -0
- package/dist/esm/swappers/PanoraSwapper/utils/helpers.js +117 -0
- package/dist/esm/swappers/PanoraSwapper/utils/helpers.test.d.ts +1 -0
- package/dist/esm/swappers/PanoraSwapper/utils/helpers.test.js +38 -0
- package/dist/esm/swappers/PanoraSwapper/utils/panoraService.d.ts +5 -0
- package/dist/esm/swappers/PanoraSwapper/utils/panoraService.js +4 -0
- package/dist/esm/swappers/RelaySwapper/constant.js +2 -16
- package/dist/esm/swappers/RelaySwapper/utils/relayTokenToAssetId.js +0 -70
- package/dist/esm/swappers/SymbiosisSwapper/utils/constants.d.ts +0 -1
- package/dist/esm/swappers/SymbiosisSwapper/utils/constants.js +1 -10
- package/dist/esm/swappers/SymbiosisSwapper/utils/symbiosisService.js +1 -3
- package/dist/esm/swappers/ZrxSwapper/utils/zrxService.js +1 -1
- package/dist/esm/types.d.ts +3 -1
- package/dist/esm/types.js +1 -0
- package/dist/esm/utils/aptos/checkAptosSwapStatus.d.ts +4 -0
- package/dist/esm/utils/aptos/checkAptosSwapStatus.js +23 -0
- package/dist/esm/utils/aptos/getAptosNetworkFeeCryptoBaseUnit.d.ts +11 -0
- package/dist/esm/utils/aptos/getAptosNetworkFeeCryptoBaseUnit.js +8 -0
- package/dist/esm/utils/aptos/index.d.ts +2 -0
- package/dist/esm/utils/aptos/index.js +2 -0
- package/dist/esm/utils/cowswap/constants.js +0 -1
- package/dist/esm/utils/cowswap/index.js +0 -2
- package/dist/esm/utils/helpers.js +2 -1
- package/dist/esm/utils/helpers.test.js +1 -0
- package/package.json +6 -6
package/dist/esm/constants.js
CHANGED
|
@@ -13,6 +13,7 @@ import { fyndApi, fyndSwapper } from './swappers/FyndSwapper/index.js';
|
|
|
13
13
|
import { kyberApi, kyberSwapper } from './swappers/KyberSwapper/index.js';
|
|
14
14
|
import { mayachainApi, mayachainSwapper } from './swappers/MayachainSwapper/index.js';
|
|
15
15
|
import { nearIntentsApi, nearIntentsSwapper } from './swappers/NearIntentsSwapper/index.js';
|
|
16
|
+
import { panoraApi, panoraSwapper } from './swappers/PanoraSwapper/index.js';
|
|
16
17
|
import { portalsApi, portalsSwapper } from './swappers/PortalsSwapper/index.js';
|
|
17
18
|
import { relayApi, relaySwapper } from './swappers/RelaySwapper/index.js';
|
|
18
19
|
import { stonfiApi, stonfiSwapper } from './swappers/StonfiSwapper/index.js';
|
|
@@ -114,6 +115,10 @@ export const swappers = {
|
|
|
114
115
|
...kyberSwapper,
|
|
115
116
|
...kyberApi,
|
|
116
117
|
},
|
|
118
|
+
[SwapperName.Panora]: {
|
|
119
|
+
...panoraSwapper,
|
|
120
|
+
...panoraApi,
|
|
121
|
+
},
|
|
117
122
|
[SwapperName.Test]: undefined,
|
|
118
123
|
};
|
|
119
124
|
const DEFAULT_SLIPPAGE_DECIMAL_PERCENTAGE = '0.002';
|
|
@@ -135,6 +140,7 @@ const DEFAULT_DEBRIDGE_SLIPPAGE_DECIMAL_PERCENTAGE = '0.03';
|
|
|
135
140
|
const DEFAULT_BOB_GATEWAY_SLIPPAGE_DECIMAL_PERCENTAGE = '0.03';
|
|
136
141
|
// Symbiosis splits the tolerance across up to three legs, and a destination leg over its share pays out the transit token instead of reverting
|
|
137
142
|
const DEFAULT_SYMBIOSIS_SLIPPAGE_DECIMAL_PERCENTAGE = '0.01';
|
|
143
|
+
const DEFAULT_PANORA_SLIPPAGE_DECIMAL_PERCENTAGE = '0.005';
|
|
138
144
|
export const getDefaultSlippageDecimalPercentageForSwapper = (swapperName) => {
|
|
139
145
|
if (swapperName === undefined)
|
|
140
146
|
return DEFAULT_SLIPPAGE_DECIMAL_PERCENTAGE;
|
|
@@ -163,6 +169,8 @@ export const getDefaultSlippageDecimalPercentageForSwapper = (swapperName) => {
|
|
|
163
169
|
throw new Error('Default slippage not supported by Across');
|
|
164
170
|
case SwapperName.Debridge:
|
|
165
171
|
return DEFAULT_DEBRIDGE_SLIPPAGE_DECIMAL_PERCENTAGE;
|
|
172
|
+
case SwapperName.Panora:
|
|
173
|
+
return DEFAULT_PANORA_SLIPPAGE_DECIMAL_PERCENTAGE;
|
|
166
174
|
case SwapperName.ButterSwap:
|
|
167
175
|
return DEFAULT_BUTTERSWAP_SLIPPAGE_DECIMAL_PERCENTAGE;
|
|
168
176
|
case SwapperName.NearIntents:
|
package/dist/esm/index.d.ts
CHANGED
|
@@ -17,6 +17,7 @@ export * from './swappers/CowSwapper/index.js';
|
|
|
17
17
|
export * from './swappers/DebridgeSwapper/index.js';
|
|
18
18
|
export * from './swappers/FyndSwapper/index.js';
|
|
19
19
|
export * from './swappers/KyberSwapper/index.js';
|
|
20
|
+
export * from './swappers/PanoraSwapper/index.js';
|
|
20
21
|
export * from './swappers/PortalsSwapper/index.js';
|
|
21
22
|
export * from './swappers/ThorchainSwapper/index.js';
|
|
22
23
|
export * from './swappers/MayachainSwapper/index.js';
|
package/dist/esm/index.js
CHANGED
|
@@ -17,6 +17,7 @@ export * from './swappers/CowSwapper/index.js';
|
|
|
17
17
|
export * from './swappers/DebridgeSwapper/index.js';
|
|
18
18
|
export * from './swappers/FyndSwapper/index.js';
|
|
19
19
|
export * from './swappers/KyberSwapper/index.js';
|
|
20
|
+
export * from './swappers/PanoraSwapper/index.js';
|
|
20
21
|
export * from './swappers/PortalsSwapper/index.js';
|
|
21
22
|
export * from './swappers/ThorchainSwapper/index.js';
|
|
22
23
|
export * from './swappers/MayachainSwapper/index.js';
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { arbitrumChainId, baseChainId,
|
|
1
|
+
import { arbitrumChainId, baseChainId, bscChainId, ethChainId, hyperEvmChainId, inkChainId, megaethChainId, monadChainId, optimismChainId, plasmaChainId, polygonChainId, robinhoodChainId, solanaChainId, unichainChainId, } from '@shapeshiftoss/caip';
|
|
2
2
|
import invert from 'lodash/invert';
|
|
3
3
|
import { zeroAddress } from 'viem';
|
|
4
|
-
import { arbitrum, base,
|
|
4
|
+
import { arbitrum, base, bsc, hyperEvm, ink, mainnet as ethereum, megaeth, monad, optimism, plasma, polygon, robinhood, unichain, } from 'viem/chains';
|
|
5
5
|
import { TradeQuoteError } from '../../types.js';
|
|
6
6
|
import { AcrossErrorCode } from './utils/types.js';
|
|
7
7
|
export const chainIdToAcrossChainId = {
|
|
@@ -14,17 +14,10 @@ export const chainIdToAcrossChainId = {
|
|
|
14
14
|
[monadChainId]: monad.id,
|
|
15
15
|
[hyperEvmChainId]: hyperEvm.id,
|
|
16
16
|
[inkChainId]: ink.id,
|
|
17
|
-
[lineaChainId]: linea.id,
|
|
18
|
-
[modeChainId]: mode.id,
|
|
19
17
|
[plasmaChainId]: plasma.id,
|
|
20
|
-
[zkSyncEraChainId]: zksync.id,
|
|
21
|
-
[blastChainId]: blast.id,
|
|
22
|
-
[worldChainChainId]: worldchain.id,
|
|
23
18
|
[unichainChainId]: unichain.id,
|
|
24
|
-
[soneiumChainId]: soneium.id,
|
|
25
19
|
// Across uses a custom Solana chain ID
|
|
26
20
|
[solanaChainId]: 34268394551451,
|
|
27
|
-
[scrollChainId]: scroll.id,
|
|
28
21
|
[megaethChainId]: megaeth.id,
|
|
29
22
|
[robinhoodChainId]: robinhood.id,
|
|
30
23
|
};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { ChainId } from '@shapeshiftoss/caip';
|
|
2
2
|
export declare const BOB_GATEWAY_BASE_URL = "https://gateway-api-mainnet.gobob.xyz";
|
|
3
3
|
export declare const chainIdToBobGatewayChainName: {
|
|
4
|
-
readonly [x: string]: "ethereum" | "polygon" | "arbitrum" | "base" | "avalanche" | "bsc" | "robinhood" | "bob" | "plasma" | "tron" | "
|
|
4
|
+
readonly [x: string]: "ethereum" | "polygon" | "arbitrum" | "base" | "avalanche" | "bsc" | "robinhood" | "bob" | "plasma" | "tron" | "bitcoin" | "sei" | "sonic" | "unichain" | "hyperevm";
|
|
5
5
|
};
|
|
6
6
|
export declare const bobGatewayChainNameToChainId: Record<BobGatewayChainName, ChainId>;
|
|
7
7
|
export type BobGatewayChainName = (typeof chainIdToBobGatewayChainName)[keyof typeof chainIdToBobGatewayChainName];
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { arbitrumChainId, avalancheChainId, baseChainId,
|
|
1
|
+
import { arbitrumChainId, avalancheChainId, baseChainId, bobChainId, bscChainId, btcChainId, ethChainId, hyperEvmChainId, plasmaChainId, polygonChainId, robinhoodChainId, seiChainId, sonicChainId, tronChainId, unichainChainId, } from '@shapeshiftoss/caip';
|
|
2
2
|
export const BOB_GATEWAY_BASE_URL = 'https://gateway-api-mainnet.gobob.xyz';
|
|
3
3
|
// Chain name strings expected by the BOB Gateway API
|
|
4
4
|
// https://gateway-api-mainnet.gobob.xyz/v4/get-routes
|
|
@@ -6,7 +6,6 @@ export const chainIdToBobGatewayChainName = {
|
|
|
6
6
|
[arbitrumChainId]: 'arbitrum',
|
|
7
7
|
[avalancheChainId]: 'avalanche',
|
|
8
8
|
[baseChainId]: 'base',
|
|
9
|
-
[berachainChainId]: 'bera',
|
|
10
9
|
[btcChainId]: 'bitcoin',
|
|
11
10
|
[bobChainId]: 'bob',
|
|
12
11
|
[bscChainId]: 'bsc',
|
|
@@ -6,7 +6,7 @@ import { ChainflipNetwork } from './types.js';
|
|
|
6
6
|
export declare const CHAINFLIP_REGULAR_QUOTE: "regular";
|
|
7
7
|
export declare const CHAINFLIP_DCA_QUOTE: "dca";
|
|
8
8
|
export declare const CHAINFLIP_CHANNEL_DEADLINE_MS: number;
|
|
9
|
-
export declare const ChainflipSupportedChainIds: readonly [KnownChainIds.EthereumMainnet, KnownChainIds.ArbitrumMainnet, KnownChainIds.BitcoinMainnet, KnownChainIds.SolanaMainnet, KnownChainIds.TronMainnet];
|
|
9
|
+
export declare const ChainflipSupportedChainIds: readonly [KnownChainIds.EthereumMainnet, KnownChainIds.ArbitrumMainnet, KnownChainIds.BitcoinMainnet, KnownChainIds.SolanaMainnet, KnownChainIds.TronMainnet, KnownChainIds.BnbSmartChainMainnet];
|
|
10
10
|
export type ChainflipSupportedChainId = (typeof ChainflipSupportedChainIds)[number];
|
|
11
11
|
export declare const ChainflipSupportedAssetIdsByChainId: Partial<Record<KnownChainIds, AssetId[]>>;
|
|
12
12
|
export declare const chainIdToChainflipNetwork: Partial<Record<ChainId, ChainflipNetwork>>;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { arbitrumAssetId, btcAssetId, ethAssetId, flipAssetId, solAssetId, tronAssetId, usdcAssetId, usdcOnArbitrumOneAssetId, usdcOnSolanaAssetId, usdtAssetId, usdtOnArbitrumOneAssetId, usdtOnSolanaAssetId, usdtOnTronAssetId, wbtcAssetId, } from '@shapeshiftoss/caip';
|
|
1
|
+
import { arbitrumAssetId, bscAssetId, btcAssetId, cbbtcAssetId, ethAssetId, flipAssetId, solAssetId, tronAssetId, usdcAssetId, usdcOnArbitrumOneAssetId, usdcOnSolanaAssetId, usdtAssetId, usdtOnArbitrumOneAssetId, usdtOnBscAssetId, usdtOnSolanaAssetId, usdtOnTronAssetId, wbtcAssetId, } from '@shapeshiftoss/caip';
|
|
2
2
|
import { KnownChainIds } from '@shapeshiftoss/types';
|
|
3
3
|
import { SwapperName } from '../../types.js';
|
|
4
4
|
import { ChainflipNetwork } from './types.js';
|
|
@@ -12,9 +12,17 @@ export const ChainflipSupportedChainIds = [
|
|
|
12
12
|
KnownChainIds.BitcoinMainnet,
|
|
13
13
|
KnownChainIds.SolanaMainnet,
|
|
14
14
|
KnownChainIds.TronMainnet,
|
|
15
|
+
KnownChainIds.BnbSmartChainMainnet,
|
|
15
16
|
];
|
|
16
17
|
export const ChainflipSupportedAssetIdsByChainId = {
|
|
17
|
-
[KnownChainIds.EthereumMainnet]: [
|
|
18
|
+
[KnownChainIds.EthereumMainnet]: [
|
|
19
|
+
ethAssetId,
|
|
20
|
+
flipAssetId,
|
|
21
|
+
usdcAssetId,
|
|
22
|
+
usdtAssetId,
|
|
23
|
+
wbtcAssetId,
|
|
24
|
+
cbbtcAssetId,
|
|
25
|
+
],
|
|
18
26
|
[KnownChainIds.ArbitrumMainnet]: [
|
|
19
27
|
arbitrumAssetId,
|
|
20
28
|
usdcOnArbitrumOneAssetId,
|
|
@@ -23,6 +31,7 @@ export const ChainflipSupportedAssetIdsByChainId = {
|
|
|
23
31
|
[KnownChainIds.BitcoinMainnet]: [btcAssetId],
|
|
24
32
|
[KnownChainIds.SolanaMainnet]: [solAssetId, usdcOnSolanaAssetId, usdtOnSolanaAssetId],
|
|
25
33
|
[KnownChainIds.TronMainnet]: [tronAssetId, usdtOnTronAssetId],
|
|
34
|
+
[KnownChainIds.BnbSmartChainMainnet]: [bscAssetId, usdtOnBscAssetId],
|
|
26
35
|
};
|
|
27
36
|
export const chainIdToChainflipNetwork = {
|
|
28
37
|
[KnownChainIds.EthereumMainnet]: ChainflipNetwork.Ethereum,
|
|
@@ -30,6 +39,7 @@ export const chainIdToChainflipNetwork = {
|
|
|
30
39
|
[KnownChainIds.BitcoinMainnet]: ChainflipNetwork.Bitcoin,
|
|
31
40
|
[KnownChainIds.SolanaMainnet]: ChainflipNetwork.Solana,
|
|
32
41
|
[KnownChainIds.TronMainnet]: ChainflipNetwork.Tron,
|
|
42
|
+
[KnownChainIds.BnbSmartChainMainnet]: ChainflipNetwork.Bsc,
|
|
33
43
|
};
|
|
34
44
|
export const CHAINFLIP_SWAP_SOURCE = SwapperName.Chainflip;
|
|
35
45
|
export const CHAINFLIP_BOOST_SWAP_SOURCE = `${SwapperName.Chainflip} • Boost`;
|
|
@@ -21,8 +21,8 @@ type GetChainFlipSwapArgs = ChainFlipBrokerBaseArgs & {
|
|
|
21
21
|
numberOfChunks?: number;
|
|
22
22
|
chunkIntervalBlocks?: number;
|
|
23
23
|
};
|
|
24
|
-
export declare const isSupportedChainId: (chainId: ChainId) => chainId is import("@shapeshiftoss/types").KnownChainIds.EthereumMainnet | import("@shapeshiftoss/types").KnownChainIds.ArbitrumMainnet | import("@shapeshiftoss/types").KnownChainIds.BitcoinMainnet | import("@shapeshiftoss/types").KnownChainIds.SolanaMainnet | import("@shapeshiftoss/types").KnownChainIds.TronMainnet;
|
|
25
|
-
export declare const isSupportedAssetId: (chainId: ChainId, assetId: AssetId) => chainId is import("@shapeshiftoss/types").KnownChainIds.EthereumMainnet | import("@shapeshiftoss/types").KnownChainIds.ArbitrumMainnet | import("@shapeshiftoss/types").KnownChainIds.BitcoinMainnet | import("@shapeshiftoss/types").KnownChainIds.SolanaMainnet | import("@shapeshiftoss/types").KnownChainIds.TronMainnet;
|
|
24
|
+
export declare const isSupportedChainId: (chainId: ChainId) => chainId is import("@shapeshiftoss/types").KnownChainIds.EthereumMainnet | import("@shapeshiftoss/types").KnownChainIds.BnbSmartChainMainnet | import("@shapeshiftoss/types").KnownChainIds.ArbitrumMainnet | import("@shapeshiftoss/types").KnownChainIds.BitcoinMainnet | import("@shapeshiftoss/types").KnownChainIds.SolanaMainnet | import("@shapeshiftoss/types").KnownChainIds.TronMainnet;
|
|
25
|
+
export declare const isSupportedAssetId: (chainId: ChainId, assetId: AssetId) => chainId is import("@shapeshiftoss/types").KnownChainIds.EthereumMainnet | import("@shapeshiftoss/types").KnownChainIds.BnbSmartChainMainnet | import("@shapeshiftoss/types").KnownChainIds.ArbitrumMainnet | import("@shapeshiftoss/types").KnownChainIds.BitcoinMainnet | import("@shapeshiftoss/types").KnownChainIds.SolanaMainnet | import("@shapeshiftoss/types").KnownChainIds.TronMainnet;
|
|
26
26
|
export declare const assertValidTrade: ({ sellAsset, buyAsset, }: {
|
|
27
27
|
sellAsset: Asset;
|
|
28
28
|
buyAsset: Asset;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { arbitrumChainId, avalancheChainId, baseChainId,
|
|
1
|
+
import { arbitrumChainId, avalancheChainId, baseChainId, bobChainId, bscChainId, cronosChainId, ethChainId, gnosisChainId, hyperEvmChainId, mantleChainId, megaethChainId, monadChainId, optimismChainId, plasmaChainId, polygonChainId, robinhoodChainId, seiChainId, sonicChainId, } from '@shapeshiftoss/caip';
|
|
2
2
|
import invert from 'lodash/invert';
|
|
3
3
|
import { zeroAddress } from 'viem';
|
|
4
|
-
import { arbitrum, avalanche, base, bsc,
|
|
4
|
+
import { arbitrum, avalanche, base, bsc, mainnet as ethereum, optimism, polygon, robinhood, } from 'viem/chains';
|
|
5
5
|
export const chainIdToDebridgeChainId = {
|
|
6
6
|
[ethChainId]: ethereum.id,
|
|
7
7
|
[optimismChainId]: optimism.id,
|
|
@@ -17,12 +17,8 @@ export const chainIdToDebridgeChainId = {
|
|
|
17
17
|
[avalancheChainId]: avalanche.id,
|
|
18
18
|
[mantleChainId]: 100000023,
|
|
19
19
|
[cronosChainId]: 100000019,
|
|
20
|
-
[berachainChainId]: 100000020,
|
|
21
|
-
[lineaChainId]: linea.id,
|
|
22
20
|
[bobChainId]: 100000021,
|
|
23
21
|
[sonicChainId]: 100000014,
|
|
24
|
-
[storyChainId]: 100000013,
|
|
25
|
-
[flowEvmChainId]: 100000009,
|
|
26
22
|
[megaethChainId]: 100000031,
|
|
27
23
|
[robinhoodChainId]: robinhood.id,
|
|
28
24
|
};
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import axios from 'axios';
|
|
2
2
|
import { makeSwapperAxiosServiceMonadic } from '../../../utils/index.js';
|
|
3
|
-
export const fyndService = makeSwapperAxiosServiceMonadic(axios.create({ timeout:
|
|
3
|
+
export const fyndService = makeSwapperAxiosServiceMonadic(axios.create({ timeout: 15_000 }));
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import axios from 'axios';
|
|
2
2
|
import { makeSwapperAxiosServiceMonadic } from '../../../utils/index.js';
|
|
3
|
-
export const kyberService = makeSwapperAxiosServiceMonadic(axios.create({ timeout:
|
|
3
|
+
export const kyberService = makeSwapperAxiosServiceMonadic(axios.create({ timeout: 15_000 }));
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { checkAptosSwapStatus, getAptosTransactionFees, getUnsignedAptosTransaction, } from '../../utils/aptos/index.js';
|
|
2
|
+
import { getPanoraTradeQuote } from './swapperApi/getPanoraTradeQuote.js';
|
|
3
|
+
import { getPanoraTradeRate } from './swapperApi/getPanoraTradeRate.js';
|
|
4
|
+
export const panoraApi = {
|
|
5
|
+
getTradeQuote: (input, deps) => getPanoraTradeQuote(input, deps),
|
|
6
|
+
getTradeRate: (input, deps) => getPanoraTradeRate(input, deps),
|
|
7
|
+
getUnsignedAptosTransaction,
|
|
8
|
+
getAptosTransactionFees,
|
|
9
|
+
checkTradeStatus: checkAptosSwapStatus,
|
|
10
|
+
};
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { Result } from '@sniptt/monads';
|
|
2
|
+
import type { SwapErrorRight, SwapperDeps, TradeQuote } from '../../../types.js';
|
|
3
|
+
import type { PanoraTradeQuoteInput } from '../types.js';
|
|
4
|
+
export declare const getPanoraTradeQuote: (input: PanoraTradeQuoteInput, deps: SwapperDeps) => Promise<Result<TradeQuote[], SwapErrorRight>>;
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { Err, Ok } from '@sniptt/monads';
|
|
2
|
+
import { assertQuoteAddresses } from '../../../utils/index.js';
|
|
3
|
+
import { getPanoraStepData } from '../utils/getPanoraStepData.js';
|
|
4
|
+
import { getPanoraTradeContext } from '../utils/getPanoraTradeContext.js';
|
|
5
|
+
export const getPanoraTradeQuote = async (input, deps) => {
|
|
6
|
+
const { accountNumber } = input;
|
|
7
|
+
const maybeAddresses = assertQuoteAddresses(input);
|
|
8
|
+
if (maybeAddresses.isErr())
|
|
9
|
+
return Err(maybeAddresses.unwrapErr());
|
|
10
|
+
const { sendAddress, receiveAddress } = maybeAddresses.unwrap();
|
|
11
|
+
const maybeContext = await getPanoraTradeContext({ input, deps });
|
|
12
|
+
if (maybeContext.isErr())
|
|
13
|
+
return Err(maybeContext.unwrapErr());
|
|
14
|
+
const { tradeCommon, stepCommon, protocolFees, stepDataArgs } = maybeContext.unwrap();
|
|
15
|
+
const maybeStepData = await getPanoraStepData({
|
|
16
|
+
...stepDataArgs,
|
|
17
|
+
type: 'quote',
|
|
18
|
+
input,
|
|
19
|
+
from: sendAddress,
|
|
20
|
+
});
|
|
21
|
+
if (maybeStepData.isErr())
|
|
22
|
+
return Err(maybeStepData.unwrapErr());
|
|
23
|
+
const { transactionData, networkFeeCryptoBaseUnit } = maybeStepData.unwrap();
|
|
24
|
+
const tradeQuote = {
|
|
25
|
+
...tradeCommon,
|
|
26
|
+
quoteOrRate: 'quote',
|
|
27
|
+
receiveAddress,
|
|
28
|
+
steps: [
|
|
29
|
+
{
|
|
30
|
+
...stepCommon,
|
|
31
|
+
accountNumber,
|
|
32
|
+
transactionData,
|
|
33
|
+
feeData: { networkFeeCryptoBaseUnit, protocolFees },
|
|
34
|
+
},
|
|
35
|
+
],
|
|
36
|
+
};
|
|
37
|
+
return Ok([tradeQuote]);
|
|
38
|
+
};
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { Result } from '@sniptt/monads';
|
|
2
|
+
import type { SwapErrorRight, SwapperDeps, TradeRate } from '../../../types.js';
|
|
3
|
+
import type { PanoraTradeRateInput } from '../types.js';
|
|
4
|
+
export declare const getPanoraTradeRate: (input: PanoraTradeRateInput, deps: SwapperDeps) => Promise<Result<TradeRate[], SwapErrorRight>>;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { Err, Ok } from '@sniptt/monads';
|
|
2
|
+
import { getPanoraStepData } from '../utils/getPanoraStepData.js';
|
|
3
|
+
import { getPanoraTradeContext } from '../utils/getPanoraTradeContext.js';
|
|
4
|
+
export const getPanoraTradeRate = async (input, deps) => {
|
|
5
|
+
const { accountNumber, receiveAddress, sendAddress } = input;
|
|
6
|
+
const maybeContext = await getPanoraTradeContext({ input, deps });
|
|
7
|
+
if (maybeContext.isErr())
|
|
8
|
+
return Err(maybeContext.unwrapErr());
|
|
9
|
+
const { tradeCommon, stepCommon, protocolFees, stepDataArgs } = maybeContext.unwrap();
|
|
10
|
+
const maybeStepData = await getPanoraStepData({
|
|
11
|
+
...stepDataArgs,
|
|
12
|
+
type: 'rate',
|
|
13
|
+
input,
|
|
14
|
+
from: sendAddress,
|
|
15
|
+
});
|
|
16
|
+
if (maybeStepData.isErr())
|
|
17
|
+
return Err(maybeStepData.unwrapErr());
|
|
18
|
+
const { networkFeeCryptoBaseUnit } = maybeStepData.unwrap();
|
|
19
|
+
const tradeRate = {
|
|
20
|
+
...tradeCommon,
|
|
21
|
+
quoteOrRate: 'rate',
|
|
22
|
+
receiveAddress,
|
|
23
|
+
steps: [
|
|
24
|
+
{
|
|
25
|
+
...stepCommon,
|
|
26
|
+
accountNumber,
|
|
27
|
+
feeData: { networkFeeCryptoBaseUnit, protocolFees },
|
|
28
|
+
},
|
|
29
|
+
],
|
|
30
|
+
};
|
|
31
|
+
return Ok([tradeRate]);
|
|
32
|
+
};
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type { GetAptosTradeQuoteInput, GetAptosTradeRateInput } from '../../types.js';
|
|
2
|
+
export type PanoraTradeQuoteInput = GetAptosTradeQuoteInput;
|
|
3
|
+
export type PanoraTradeRateInput = GetAptosTradeRateInput;
|
|
4
|
+
export type PanoraSwapRequest = {
|
|
5
|
+
fromTokenAddress: string;
|
|
6
|
+
toTokenAddress: string;
|
|
7
|
+
fromTokenAmount: string;
|
|
8
|
+
toWalletAddress: string;
|
|
9
|
+
slippagePercentage: number;
|
|
10
|
+
integratorFeePercentage?: number;
|
|
11
|
+
integratorFeeAddress?: string;
|
|
12
|
+
};
|
|
13
|
+
export type PanoraToken = {
|
|
14
|
+
address: string;
|
|
15
|
+
symbol: string | null;
|
|
16
|
+
decimals: number | null;
|
|
17
|
+
};
|
|
18
|
+
export type PanoraQuote = {
|
|
19
|
+
toTokenAmount: string;
|
|
20
|
+
minToTokenAmount: string;
|
|
21
|
+
feeTokenAmount: string;
|
|
22
|
+
rawTransaction: {
|
|
23
|
+
bcs: string;
|
|
24
|
+
};
|
|
25
|
+
};
|
|
26
|
+
export type PanoraSwapResponse = {
|
|
27
|
+
fromToken: PanoraToken;
|
|
28
|
+
toToken: PanoraToken;
|
|
29
|
+
feeToken: PanoraToken;
|
|
30
|
+
quotes: PanoraQuote[];
|
|
31
|
+
};
|
|
32
|
+
export type PanoraErrorResponse = {
|
|
33
|
+
statusCode?: number;
|
|
34
|
+
message: string;
|
|
35
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { Result } from '@sniptt/monads';
|
|
2
|
+
import type { SwapErrorRight } from '../../../types.js';
|
|
3
|
+
import type { PanoraSwapRequest, PanoraSwapResponse } from '../types.js';
|
|
4
|
+
export declare const fetchPanoraSwap: ({ request, apiKey, }: {
|
|
5
|
+
request: PanoraSwapRequest;
|
|
6
|
+
apiKey: string;
|
|
7
|
+
}) => Promise<Result<PanoraSwapResponse, SwapErrorRight>>;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { Err, Ok } from '@sniptt/monads';
|
|
2
|
+
import { getPanoraRequestError } from './helpers.js';
|
|
3
|
+
import { panoraService } from './panoraService.js';
|
|
4
|
+
export const fetchPanoraSwap = async ({ request, apiKey, }) => {
|
|
5
|
+
const maybeResponse = await panoraService.post('/swap', request, {
|
|
6
|
+
headers: { 'x-api-key': apiKey },
|
|
7
|
+
});
|
|
8
|
+
if (maybeResponse.isErr())
|
|
9
|
+
return Err(getPanoraRequestError(maybeResponse.unwrapErr()));
|
|
10
|
+
return Ok(maybeResponse.unwrap().data);
|
|
11
|
+
};
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { Result } from '@sniptt/monads';
|
|
2
|
+
import type { StepDataArgs, SwapErrorRight, TxBuildData } from '../../../types.js';
|
|
3
|
+
export type GetPanoraStepDataArgs = StepDataArgs<{
|
|
4
|
+
payload: string;
|
|
5
|
+
}>;
|
|
6
|
+
type PanoraRateStepData = {
|
|
7
|
+
networkFeeCryptoBaseUnit: string;
|
|
8
|
+
};
|
|
9
|
+
type PanoraQuoteStepData = {
|
|
10
|
+
transactionData: TxBuildData;
|
|
11
|
+
networkFeeCryptoBaseUnit: string;
|
|
12
|
+
};
|
|
13
|
+
export declare function getPanoraStepData(args: Extract<GetPanoraStepDataArgs, {
|
|
14
|
+
type: 'rate';
|
|
15
|
+
}>): Promise<Result<PanoraRateStepData, SwapErrorRight>>;
|
|
16
|
+
export declare function getPanoraStepData(args: Extract<GetPanoraStepDataArgs, {
|
|
17
|
+
type: 'quote';
|
|
18
|
+
}>): Promise<Result<PanoraQuoteStepData, SwapErrorRight>>;
|
|
19
|
+
export {};
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { Err, Ok } from '@sniptt/monads';
|
|
2
|
+
import { makeNetworkFeeEstimationFailedErr } from '../../../utils/index.js';
|
|
3
|
+
import { getAptosNetworkFeeCryptoBaseUnit } from '../../../utils/aptos/index.js';
|
|
4
|
+
import { PANORA_FALLBACK_NETWORK_FEE_CRYPTO_BASE_UNIT } from './constants.js';
|
|
5
|
+
export async function getPanoraStepData(args) {
|
|
6
|
+
const { sellAsset, payload, from, deps } = args;
|
|
7
|
+
const adapter = deps.assertGetAptosChainAdapter(sellAsset.chainId);
|
|
8
|
+
if (args.type === 'rate') {
|
|
9
|
+
const networkFeeCryptoBaseUnit = from
|
|
10
|
+
? await getAptosNetworkFeeCryptoBaseUnit({ adapter, from, payload })
|
|
11
|
+
.then(({ networkFeeCryptoBaseUnit }) => networkFeeCryptoBaseUnit)
|
|
12
|
+
.catch(() => PANORA_FALLBACK_NETWORK_FEE_CRYPTO_BASE_UNIT)
|
|
13
|
+
: PANORA_FALLBACK_NETWORK_FEE_CRYPTO_BASE_UNIT;
|
|
14
|
+
const stepData = { networkFeeCryptoBaseUnit };
|
|
15
|
+
return Ok(stepData);
|
|
16
|
+
}
|
|
17
|
+
try {
|
|
18
|
+
const { networkFeeCryptoBaseUnit, feeData } = await getAptosNetworkFeeCryptoBaseUnit({
|
|
19
|
+
adapter,
|
|
20
|
+
from: args.from,
|
|
21
|
+
payload,
|
|
22
|
+
});
|
|
23
|
+
const stepData = {
|
|
24
|
+
transactionData: {
|
|
25
|
+
type: 'aptos',
|
|
26
|
+
payload,
|
|
27
|
+
gasUnitPrice: feeData.chainSpecific.gasUnitPrice,
|
|
28
|
+
maxGasAmount: feeData.chainSpecific.maxGasAmount,
|
|
29
|
+
},
|
|
30
|
+
networkFeeCryptoBaseUnit,
|
|
31
|
+
};
|
|
32
|
+
return Ok(stepData);
|
|
33
|
+
}
|
|
34
|
+
catch (error) {
|
|
35
|
+
return Err(makeNetworkFeeEstimationFailedErr('getPanoraStepData', error));
|
|
36
|
+
}
|
|
37
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { Result } from '@sniptt/monads';
|
|
2
|
+
import type { QuoteFeeData, SwapErrorRight, SwapperDeps, TradeCommon, TradeStepCommon } from '../../../types.js';
|
|
3
|
+
import type { PanoraTradeQuoteInput, PanoraTradeRateInput } from '../types.js';
|
|
4
|
+
import type { GetPanoraStepDataArgs } from './getPanoraStepData.js';
|
|
5
|
+
type PanoraTradeContext = {
|
|
6
|
+
tradeCommon: TradeCommon & {
|
|
7
|
+
slippageTolerancePercentageDecimal: string;
|
|
8
|
+
};
|
|
9
|
+
stepCommon: Omit<TradeStepCommon, 'feeData'>;
|
|
10
|
+
protocolFees: QuoteFeeData['protocolFees'];
|
|
11
|
+
stepDataArgs: Omit<GetPanoraStepDataArgs, 'type' | 'input' | 'from'>;
|
|
12
|
+
};
|
|
13
|
+
export declare const getPanoraTradeContext: ({ input, deps, }: {
|
|
14
|
+
input: PanoraTradeQuoteInput | PanoraTradeRateInput;
|
|
15
|
+
deps: SwapperDeps;
|
|
16
|
+
}) => Promise<Result<PanoraTradeContext, SwapErrorRight>>;
|
|
17
|
+
export {};
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { bnOrZero, fromBaseUnit } from '@shapeshiftoss/utils';
|
|
2
|
+
import { Err, Ok } from '@sniptt/monads';
|
|
3
|
+
import { v4 as uuid } from 'uuid';
|
|
4
|
+
import { getDefaultSlippageDecimalPercentageForSwapper } from '../../../constants.js';
|
|
5
|
+
import { SwapperName } from '../../../types.js';
|
|
6
|
+
import { APTOS_PLACEHOLDER_ADDRESS } from '../../../utils/aptos/index.js';
|
|
7
|
+
import { fetchPanoraSwap } from './fetchFromPanora.js';
|
|
8
|
+
import { assertValidTrade, assetIdToPanoraToken, getPanoraFeeParams, getPanoraTradeAmounts, validatePanoraSwap, } from './helpers.js';
|
|
9
|
+
export const getPanoraTradeContext = async ({ input, deps, }) => {
|
|
10
|
+
const { sellAsset, buyAsset, sellAmountIncludingProtocolFeesCryptoBaseUnit, sendAddress, receiveAddress, affiliateBps, } = input;
|
|
11
|
+
const maybeValidTrade = assertValidTrade({ sellAsset, buyAsset });
|
|
12
|
+
if (maybeValidTrade.isErr())
|
|
13
|
+
return Err(maybeValidTrade.unwrapErr());
|
|
14
|
+
const slippageTolerancePercentageDecimal = input.slippageTolerancePercentageDecimal ??
|
|
15
|
+
getDefaultSlippageDecimalPercentageForSwapper(SwapperName.Panora);
|
|
16
|
+
const maybeResponse = await fetchPanoraSwap({
|
|
17
|
+
request: {
|
|
18
|
+
fromTokenAddress: assetIdToPanoraToken(sellAsset.assetId),
|
|
19
|
+
toTokenAddress: assetIdToPanoraToken(buyAsset.assetId),
|
|
20
|
+
fromTokenAmount: fromBaseUnit(sellAmountIncludingProtocolFeesCryptoBaseUnit, sellAsset.precision),
|
|
21
|
+
// The router pays out to toWalletAddress, which a walletless rate has to fill with a placeholder
|
|
22
|
+
toWalletAddress: receiveAddress ?? sendAddress ?? APTOS_PLACEHOLDER_ADDRESS,
|
|
23
|
+
slippagePercentage: bnOrZero(slippageTolerancePercentageDecimal).times(100).toNumber(),
|
|
24
|
+
...getPanoraFeeParams(affiliateBps),
|
|
25
|
+
},
|
|
26
|
+
apiKey: deps.config.VITE_PANORA_API_KEY,
|
|
27
|
+
});
|
|
28
|
+
if (maybeResponse.isErr())
|
|
29
|
+
return Err(maybeResponse.unwrapErr());
|
|
30
|
+
const maybeSwap = validatePanoraSwap({
|
|
31
|
+
response: maybeResponse.unwrap(),
|
|
32
|
+
sellAsset,
|
|
33
|
+
buyAsset,
|
|
34
|
+
});
|
|
35
|
+
if (maybeSwap.isErr())
|
|
36
|
+
return Err(maybeSwap.unwrapErr());
|
|
37
|
+
const { quote, payload } = maybeSwap.unwrap();
|
|
38
|
+
const tradeAmounts = getPanoraTradeAmounts({ input, quote });
|
|
39
|
+
return Ok({
|
|
40
|
+
tradeCommon: {
|
|
41
|
+
id: uuid(),
|
|
42
|
+
rate: tradeAmounts.rate,
|
|
43
|
+
swapperName: SwapperName.Panora,
|
|
44
|
+
affiliateBps,
|
|
45
|
+
slippageTolerancePercentageDecimal,
|
|
46
|
+
},
|
|
47
|
+
stepCommon: {
|
|
48
|
+
estimatedExecutionTimeMs: undefined,
|
|
49
|
+
allowanceContract: '',
|
|
50
|
+
sellAsset,
|
|
51
|
+
buyAsset,
|
|
52
|
+
sellAmountIncludingProtocolFeesCryptoBaseUnit,
|
|
53
|
+
...tradeAmounts,
|
|
54
|
+
source: SwapperName.Panora,
|
|
55
|
+
},
|
|
56
|
+
protocolFees: {},
|
|
57
|
+
stepDataArgs: { deps, sellAsset, payload },
|
|
58
|
+
});
|
|
59
|
+
};
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { AssetId } from '@shapeshiftoss/caip';
|
|
2
|
+
import type { Asset } from '@shapeshiftoss/types';
|
|
3
|
+
import type { Result } from '@sniptt/monads';
|
|
4
|
+
import type { SwapErrorRight, TradeStepCommon } from '../../../types.js';
|
|
5
|
+
import type { PanoraQuote, PanoraSwapRequest, PanoraSwapResponse, PanoraTradeQuoteInput, PanoraTradeRateInput } from '../types.js';
|
|
6
|
+
export declare const assertValidTrade: ({ sellAsset, buyAsset, }: {
|
|
7
|
+
sellAsset: Asset;
|
|
8
|
+
buyAsset: Asset;
|
|
9
|
+
}) => Result<true, SwapErrorRight>;
|
|
10
|
+
export declare const assetIdToPanoraToken: (assetId: AssetId) => string;
|
|
11
|
+
export declare const getPanoraFeeParams: (affiliateBps: string) => Pick<PanoraSwapRequest, 'integratorFeePercentage' | 'integratorFeeAddress'>;
|
|
12
|
+
export declare const getPanoraRequestError: (error: SwapErrorRight) => SwapErrorRight;
|
|
13
|
+
export type ValidatedPanoraSwap = {
|
|
14
|
+
quote: PanoraQuote;
|
|
15
|
+
payload: string;
|
|
16
|
+
};
|
|
17
|
+
export declare const validatePanoraSwap: ({ response, sellAsset, buyAsset, }: {
|
|
18
|
+
response: PanoraSwapResponse;
|
|
19
|
+
sellAsset: Asset;
|
|
20
|
+
buyAsset: Asset;
|
|
21
|
+
}) => Result<ValidatedPanoraSwap, SwapErrorRight>;
|
|
22
|
+
export declare const getPanoraTradeAmounts: ({ input, quote, }: {
|
|
23
|
+
input: PanoraTradeQuoteInput | PanoraTradeRateInput;
|
|
24
|
+
quote: PanoraQuote;
|
|
25
|
+
}) => Pick<TradeStepCommon, 'rate' | 'buyAmountBeforeFeesCryptoBaseUnit' | 'buyAmountAfterFeesCryptoBaseUnit' | 'affiliateFee'>;
|