@shapeshiftoss/swapper 17.6.10 → 17.7.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/LICENSE.md +21 -0
- package/dist/cjs/.tsbuildinfo +1 -1
- package/dist/cjs/constants.js +11 -10
- package/dist/cjs/cowswap-utils/constants.js +3 -0
- package/dist/cjs/cowswap-utils/index.js +6 -0
- package/dist/cjs/index.d.ts +1 -1
- package/dist/cjs/index.js +1 -1
- package/dist/cjs/solana-utils/getUnsignedSolanaTransaction.js +4 -2
- package/dist/cjs/swappers/AcrossSwapper/constant.js +2 -0
- package/dist/cjs/swappers/AcrossSwapper/utils/getTrade.js +15 -1
- package/dist/cjs/swappers/AvnuSwapper/swapperApi/getTradeQuote.js +12 -1
- package/dist/cjs/swappers/AvnuSwapper/swapperApi/getTradeRate.js +9 -0
- package/dist/cjs/swappers/BebopSwapper/BebopSwapper.js +2 -0
- package/dist/cjs/swappers/BebopSwapper/endpoints.js +35 -2
- package/dist/cjs/swappers/BebopSwapper/executeSolanaMessage.d.ts +2 -0
- package/dist/cjs/swappers/BebopSwapper/executeSolanaMessage.js +47 -0
- package/dist/cjs/swappers/BebopSwapper/getBebopSolanaTradeQuote/getBebopSolanaTradeQuote.d.ts +4 -0
- package/dist/cjs/swappers/BebopSwapper/getBebopSolanaTradeQuote/getBebopSolanaTradeQuote.js +91 -0
- package/dist/cjs/swappers/BebopSwapper/getBebopSolanaTradeRate/getBebopSolanaTradeRate.d.ts +4 -0
- package/dist/cjs/swappers/BebopSwapper/getBebopSolanaTradeRate/getBebopSolanaTradeRate.js +88 -0
- package/dist/cjs/swappers/BebopSwapper/getBebopTradeQuote/getBebopTradeQuote.js +10 -0
- package/dist/cjs/swappers/BebopSwapper/getBebopTradeRate/getBebopTradeRate.js +10 -0
- package/dist/cjs/swappers/BebopSwapper/types.d.ts +49 -1
- package/dist/cjs/swappers/BebopSwapper/types.js +9 -2
- package/dist/cjs/swappers/BebopSwapper/utils/fetchFromBebop.d.ts +19 -1
- package/dist/cjs/swappers/BebopSwapper/utils/fetchFromBebop.js +86 -1
- package/dist/cjs/swappers/BebopSwapper/utils/helpers/helpers.d.ts +13 -1
- package/dist/cjs/swappers/BebopSwapper/utils/helpers/helpers.js +47 -1
- package/dist/cjs/swappers/ButterSwap/swapperApi/getTradeQuote.js +17 -1
- package/dist/cjs/swappers/ButterSwap/swapperApi/getTradeRate.js +10 -0
- package/dist/cjs/swappers/CetusSwapper/swapperApi/getTradeQuote.js +10 -0
- package/dist/cjs/swappers/CetusSwapper/swapperApi/getTradeRate.js +10 -0
- package/dist/cjs/swappers/CetusSwapper/utils/helpers.d.ts +1 -1
- package/dist/cjs/swappers/CetusSwapper/utils/helpers.js +1 -1
- package/dist/cjs/swappers/ChainflipSwapper/constants.js +7 -3
- package/dist/cjs/swappers/ChainflipSwapper/endpoints.js +14 -4
- package/dist/cjs/swappers/ChainflipSwapper/types.d.ts +1 -0
- package/dist/cjs/swappers/ChainflipSwapper/utils/getQuoteOrRate.js +17 -0
- package/dist/cjs/swappers/CowSwapper/getCowSwapTradeQuote/getCowSwapTradeQuote.js +10 -0
- package/dist/cjs/swappers/CowSwapper/getCowSwapTradeRate/getCowSwapTradeRate.js +9 -0
- package/dist/cjs/swappers/DebridgeSwapper/DebridgeSwapper.d.ts +2 -0
- package/dist/cjs/swappers/DebridgeSwapper/DebridgeSwapper.js +7 -0
- package/dist/cjs/swappers/DebridgeSwapper/constant.d.ts +5 -0
- package/dist/cjs/swappers/DebridgeSwapper/constant.js +36 -0
- package/dist/cjs/swappers/{JupiterSwapper → DebridgeSwapper}/endpoints.d.ts +1 -1
- package/dist/cjs/swappers/DebridgeSwapper/endpoints.js +217 -0
- package/dist/cjs/swappers/DebridgeSwapper/getTradeQuote/getTradeQuote.js +31 -0
- package/dist/cjs/swappers/DebridgeSwapper/getTradeRate/getTradeRate.js +19 -0
- package/dist/cjs/swappers/DebridgeSwapper/index.d.ts +1 -0
- package/dist/cjs/swappers/DebridgeSwapper/index.js +5 -0
- package/dist/cjs/swappers/{JupiterSwapper/utils/jupiterService.d.ts → DebridgeSwapper/utils/debridgeService.d.ts} +1 -1
- package/dist/cjs/swappers/DebridgeSwapper/utils/debridgeService.js +17 -0
- package/dist/cjs/swappers/DebridgeSwapper/utils/fetchDebridgeSingleChainTrade.d.ts +16 -0
- package/dist/cjs/swappers/DebridgeSwapper/utils/fetchDebridgeSingleChainTrade.js +23 -0
- package/dist/cjs/swappers/DebridgeSwapper/utils/fetchDebridgeTrade.d.ts +20 -0
- package/dist/cjs/swappers/DebridgeSwapper/utils/fetchDebridgeTrade.js +29 -0
- package/dist/cjs/swappers/DebridgeSwapper/utils/getTrade.d.ts +11 -0
- package/dist/cjs/swappers/DebridgeSwapper/utils/getTrade.js +367 -0
- package/dist/cjs/swappers/DebridgeSwapper/utils/types.d.ts +155 -0
- package/dist/cjs/swappers/DebridgeSwapper/utils/types.js +9 -0
- package/dist/cjs/swappers/MayachainSwapper/utils/poolAssetHelpers/poolAssetHelpers.js +1 -1
- package/dist/cjs/swappers/NearIntentsSwapper/swapperApi/getTradeQuote.js +12 -0
- package/dist/cjs/swappers/NearIntentsSwapper/swapperApi/getTradeRate.js +12 -0
- package/dist/cjs/swappers/PortalsSwapper/getPortalsTradeQuote/getPortalsTradeQuote.js +10 -0
- package/dist/cjs/swappers/RelaySwapper/constant.js +7 -10
- package/dist/cjs/swappers/RelaySwapper/endpoints.js +1 -1
- package/dist/cjs/swappers/RelaySwapper/utils/getTrade.js +56 -7
- package/dist/cjs/swappers/RelaySwapper/utils/relayTokenToAssetId.js +22 -7
- package/dist/cjs/swappers/StonfiSwapper/swapperApi/getTradeQuote.js +12 -1
- package/dist/cjs/swappers/StonfiSwapper/swapperApi/getTradeRate.js +10 -0
- package/dist/cjs/swappers/SunioSwapper/utils/getQuoteOrRate.js +10 -0
- package/dist/cjs/swappers/ThorchainSwapper/ThorchainSwapper.js +3 -0
- package/dist/cjs/swappers/ThorchainSwapper/endpoints.js +2 -0
- package/dist/cjs/swappers/ThorchainSwapper/generated/generatedTradableAssetMap.json +1 -0
- package/dist/cjs/swappers/ThorchainSwapper/utils/poolAssetHelpers/poolAssetHelpers.d.ts +1 -1
- package/dist/cjs/swappers/ThorchainSwapper/utils/poolAssetHelpers/poolAssetHelpers.js +2 -1
- package/dist/cjs/swappers/ThorchainSwapper/utils/poolAssetHelpers/poolAssetHelpers.test.js +10 -0
- package/dist/cjs/swappers/ZrxSwapper/getZrxTradeQuote/getZrxTradeQuote.js +9 -0
- package/dist/cjs/swappers/ZrxSwapper/getZrxTradeRate/getZrxTradeRate.js +9 -0
- package/dist/cjs/swappers/utils/affiliateFee.d.ts +17 -0
- package/dist/cjs/swappers/utils/affiliateFee.js +43 -0
- package/dist/cjs/thorchain-utils/getL1RateOrQuote.js +57 -4
- package/dist/cjs/thorchain-utils/index.d.ts +2 -1
- package/dist/cjs/thorchain-utils/index.js +2 -1
- package/dist/cjs/thorchain-utils/solana/constants.d.ts +1 -0
- package/dist/cjs/thorchain-utils/solana/constants.js +6 -0
- package/dist/cjs/thorchain-utils/solana/getSolanaTransactionFees.d.ts +2 -0
- package/dist/cjs/thorchain-utils/solana/getSolanaTransactionFees.js +41 -0
- package/dist/cjs/thorchain-utils/solana/getThorTxData.d.ts +12 -0
- package/dist/cjs/thorchain-utils/solana/getThorTxData.js +14 -0
- package/dist/cjs/thorchain-utils/solana/getUnsignedSolanaTransaction.d.ts +3 -0
- package/dist/cjs/thorchain-utils/solana/getUnsignedSolanaTransaction.js +64 -0
- package/dist/cjs/thorchain-utils/solana/index.d.ts +3 -0
- package/dist/cjs/{swappers/JupiterSwapper → thorchain-utils/solana}/index.js +3 -2
- package/dist/cjs/tron-utils/getUnsignedTronTransaction.js +16 -0
- package/dist/cjs/types.d.ts +47 -11
- package/dist/cjs/types.js +1 -1
- package/dist/cjs/utils.d.ts +3 -0
- package/dist/cjs/utils.js +9 -3
- package/dist/esm/.tsbuildinfo +1 -1
- package/dist/esm/constants.js +11 -10
- package/dist/esm/cowswap-utils/constants.js +3 -0
- package/dist/esm/cowswap-utils/index.js +6 -0
- package/dist/esm/index.d.ts +1 -1
- package/dist/esm/index.js +1 -1
- package/dist/esm/solana-utils/getUnsignedSolanaTransaction.js +3 -1
- package/dist/esm/swappers/AcrossSwapper/constant.js +4 -2
- package/dist/esm/swappers/AcrossSwapper/utils/getTrade.js +15 -1
- package/dist/esm/swappers/AvnuSwapper/swapperApi/getTradeQuote.js +12 -1
- package/dist/esm/swappers/AvnuSwapper/swapperApi/getTradeRate.js +9 -0
- package/dist/esm/swappers/BebopSwapper/BebopSwapper.js +2 -0
- package/dist/esm/swappers/BebopSwapper/endpoints.js +36 -3
- package/dist/esm/swappers/BebopSwapper/executeSolanaMessage.d.ts +2 -0
- package/dist/esm/swappers/BebopSwapper/executeSolanaMessage.js +40 -0
- package/dist/esm/swappers/BebopSwapper/getBebopSolanaTradeQuote/getBebopSolanaTradeQuote.d.ts +4 -0
- package/dist/esm/swappers/BebopSwapper/getBebopSolanaTradeQuote/getBebopSolanaTradeQuote.js +87 -0
- package/dist/esm/swappers/BebopSwapper/getBebopSolanaTradeRate/getBebopSolanaTradeRate.d.ts +4 -0
- package/dist/esm/swappers/BebopSwapper/getBebopSolanaTradeRate/getBebopSolanaTradeRate.js +84 -0
- package/dist/esm/swappers/BebopSwapper/getBebopTradeQuote/getBebopTradeQuote.js +10 -0
- package/dist/esm/swappers/BebopSwapper/getBebopTradeRate/getBebopTradeRate.js +10 -0
- package/dist/esm/swappers/BebopSwapper/types.d.ts +49 -1
- package/dist/esm/swappers/BebopSwapper/types.js +8 -1
- package/dist/esm/swappers/BebopSwapper/utils/fetchFromBebop.d.ts +19 -1
- package/dist/esm/swappers/BebopSwapper/utils/fetchFromBebop.js +85 -2
- package/dist/esm/swappers/BebopSwapper/utils/helpers/helpers.d.ts +13 -1
- package/dist/esm/swappers/BebopSwapper/utils/helpers/helpers.js +44 -1
- package/dist/esm/swappers/ButterSwap/swapperApi/getTradeQuote.js +17 -1
- package/dist/esm/swappers/ButterSwap/swapperApi/getTradeRate.js +10 -0
- package/dist/esm/swappers/CetusSwapper/swapperApi/getTradeQuote.js +10 -0
- package/dist/esm/swappers/CetusSwapper/swapperApi/getTradeRate.js +10 -0
- package/dist/esm/swappers/CetusSwapper/utils/helpers.d.ts +1 -1
- package/dist/esm/swappers/CetusSwapper/utils/helpers.js +1 -1
- package/dist/esm/swappers/ChainflipSwapper/constants.js +8 -4
- package/dist/esm/swappers/ChainflipSwapper/endpoints.js +14 -4
- package/dist/esm/swappers/ChainflipSwapper/types.d.ts +1 -0
- package/dist/esm/swappers/ChainflipSwapper/utils/getQuoteOrRate.js +17 -0
- package/dist/esm/swappers/CowSwapper/getCowSwapTradeQuote/getCowSwapTradeQuote.js +10 -0
- package/dist/esm/swappers/CowSwapper/getCowSwapTradeRate/getCowSwapTradeRate.js +9 -0
- package/dist/esm/swappers/{JupiterSwapper/JupiterSwapper.d.ts → DebridgeSwapper/DebridgeSwapper.d.ts} +1 -1
- package/dist/esm/swappers/DebridgeSwapper/DebridgeSwapper.js +4 -0
- package/dist/esm/swappers/DebridgeSwapper/constant.d.ts +5 -0
- package/dist/esm/swappers/DebridgeSwapper/constant.js +30 -0
- package/dist/esm/swappers/{JupiterSwapper → DebridgeSwapper}/endpoints.d.ts +1 -1
- package/dist/esm/swappers/DebridgeSwapper/endpoints.js +211 -0
- package/dist/esm/swappers/DebridgeSwapper/getTradeQuote/getTradeQuote.js +27 -0
- package/dist/esm/swappers/DebridgeSwapper/getTradeRate/getTradeRate.js +15 -0
- package/dist/esm/swappers/DebridgeSwapper/index.d.ts +1 -0
- package/dist/esm/swappers/DebridgeSwapper/index.js +1 -0
- package/dist/esm/swappers/{JupiterSwapper/utils/jupiterService.d.ts → DebridgeSwapper/utils/debridgeService.d.ts} +1 -1
- package/dist/esm/swappers/DebridgeSwapper/utils/debridgeService.js +11 -0
- package/dist/esm/swappers/DebridgeSwapper/utils/fetchDebridgeSingleChainTrade.d.ts +16 -0
- package/dist/esm/swappers/DebridgeSwapper/utils/fetchDebridgeSingleChainTrade.js +19 -0
- package/dist/esm/swappers/DebridgeSwapper/utils/fetchDebridgeTrade.d.ts +20 -0
- package/dist/esm/swappers/DebridgeSwapper/utils/fetchDebridgeTrade.js +25 -0
- package/dist/esm/swappers/DebridgeSwapper/utils/getTrade.d.ts +11 -0
- package/dist/esm/swappers/DebridgeSwapper/utils/getTrade.js +360 -0
- package/dist/esm/swappers/DebridgeSwapper/utils/types.d.ts +155 -0
- package/dist/esm/swappers/DebridgeSwapper/utils/types.js +5 -0
- package/dist/esm/swappers/MayachainSwapper/utils/poolAssetHelpers/poolAssetHelpers.js +1 -1
- package/dist/esm/swappers/NearIntentsSwapper/swapperApi/getTradeQuote.js +14 -2
- package/dist/esm/swappers/NearIntentsSwapper/swapperApi/getTradeRate.js +14 -2
- package/dist/esm/swappers/PortalsSwapper/getPortalsTradeQuote/getPortalsTradeQuote.js +10 -0
- package/dist/esm/swappers/RelaySwapper/constant.js +9 -12
- package/dist/esm/swappers/RelaySwapper/endpoints.js +2 -2
- package/dist/esm/swappers/RelaySwapper/utils/getTrade.js +59 -10
- package/dist/esm/swappers/RelaySwapper/utils/relayTokenToAssetId.js +22 -7
- package/dist/esm/swappers/StonfiSwapper/swapperApi/getTradeQuote.js +12 -1
- package/dist/esm/swappers/StonfiSwapper/swapperApi/getTradeRate.js +10 -0
- package/dist/esm/swappers/SunioSwapper/utils/getQuoteOrRate.js +10 -0
- package/dist/esm/swappers/ThorchainSwapper/ThorchainSwapper.js +3 -0
- package/dist/esm/swappers/ThorchainSwapper/endpoints.js +3 -1
- package/dist/esm/swappers/ThorchainSwapper/generated/generatedTradableAssetMap.json +1 -0
- package/dist/esm/swappers/ThorchainSwapper/utils/poolAssetHelpers/poolAssetHelpers.d.ts +1 -1
- package/dist/esm/swappers/ThorchainSwapper/utils/poolAssetHelpers/poolAssetHelpers.js +2 -1
- package/dist/esm/swappers/ThorchainSwapper/utils/poolAssetHelpers/poolAssetHelpers.test.js +11 -1
- package/dist/esm/swappers/ZrxSwapper/getZrxTradeQuote/getZrxTradeQuote.js +9 -0
- package/dist/esm/swappers/ZrxSwapper/getZrxTradeRate/getZrxTradeRate.js +9 -0
- package/dist/esm/swappers/utils/affiliateFee.d.ts +17 -0
- package/dist/esm/swappers/utils/affiliateFee.js +39 -0
- package/dist/esm/thorchain-utils/getL1RateOrQuote.js +57 -4
- package/dist/esm/thorchain-utils/index.d.ts +2 -1
- package/dist/esm/thorchain-utils/index.js +1 -0
- package/dist/esm/thorchain-utils/solana/constants.d.ts +1 -0
- package/dist/esm/thorchain-utils/solana/constants.js +3 -0
- package/dist/esm/thorchain-utils/solana/getSolanaTransactionFees.d.ts +2 -0
- package/dist/esm/thorchain-utils/solana/getSolanaTransactionFees.js +37 -0
- package/dist/esm/thorchain-utils/solana/getThorTxData.d.ts +12 -0
- package/dist/esm/thorchain-utils/solana/getThorTxData.js +10 -0
- package/dist/esm/thorchain-utils/solana/getUnsignedSolanaTransaction.d.ts +3 -0
- package/dist/esm/thorchain-utils/solana/getUnsignedSolanaTransaction.js +60 -0
- package/dist/esm/thorchain-utils/solana/index.d.ts +3 -0
- package/dist/esm/thorchain-utils/solana/index.js +3 -0
- package/dist/esm/tron-utils/getUnsignedTronTransaction.js +16 -0
- package/dist/esm/types.d.ts +47 -11
- package/dist/esm/types.js +1 -1
- package/dist/esm/utils.d.ts +3 -0
- package/dist/esm/utils.js +7 -2
- package/package.json +19 -19
- package/dist/cjs/swappers/JupiterSwapper/JupiterSwapper.d.ts +0 -2
- package/dist/cjs/swappers/JupiterSwapper/JupiterSwapper.js +0 -27
- package/dist/cjs/swappers/JupiterSwapper/endpoints.js +0 -15
- package/dist/cjs/swappers/JupiterSwapper/errorPatterns.d.ts +0 -15
- package/dist/cjs/swappers/JupiterSwapper/errorPatterns.js +0 -29
- package/dist/cjs/swappers/JupiterSwapper/idls/referral.d.ts +0 -739
- package/dist/cjs/swappers/JupiterSwapper/idls/referral.js +0 -741
- package/dist/cjs/swappers/JupiterSwapper/index.d.ts +0 -2
- package/dist/cjs/swappers/JupiterSwapper/swapperApi/getTradeQuote.js +0 -191
- package/dist/cjs/swappers/JupiterSwapper/swapperApi/getTradeRate.js +0 -172
- package/dist/cjs/swappers/JupiterSwapper/utils/constants.d.ts +0 -9
- package/dist/cjs/swappers/JupiterSwapper/utils/constants.js +0 -14
- package/dist/cjs/swappers/JupiterSwapper/utils/helpers.d.ts +0 -56
- package/dist/cjs/swappers/JupiterSwapper/utils/helpers.js +0 -178
- package/dist/cjs/swappers/JupiterSwapper/utils/jupiterService.js +0 -15
- package/dist/esm/swappers/JupiterSwapper/JupiterSwapper.js +0 -24
- package/dist/esm/swappers/JupiterSwapper/endpoints.js +0 -12
- package/dist/esm/swappers/JupiterSwapper/errorPatterns.d.ts +0 -15
- package/dist/esm/swappers/JupiterSwapper/errorPatterns.js +0 -25
- package/dist/esm/swappers/JupiterSwapper/idls/referral.d.ts +0 -739
- package/dist/esm/swappers/JupiterSwapper/idls/referral.js +0 -738
- package/dist/esm/swappers/JupiterSwapper/index.d.ts +0 -2
- package/dist/esm/swappers/JupiterSwapper/index.js +0 -2
- package/dist/esm/swappers/JupiterSwapper/swapperApi/getTradeQuote.js +0 -187
- package/dist/esm/swappers/JupiterSwapper/swapperApi/getTradeRate.js +0 -168
- package/dist/esm/swappers/JupiterSwapper/utils/constants.d.ts +0 -9
- package/dist/esm/swappers/JupiterSwapper/utils/constants.js +0 -11
- package/dist/esm/swappers/JupiterSwapper/utils/helpers.d.ts +0 -56
- package/dist/esm/swappers/JupiterSwapper/utils/helpers.js +0 -169
- package/dist/esm/swappers/JupiterSwapper/utils/jupiterService.js +0 -12
- /package/dist/cjs/swappers/{JupiterSwapper/swapperApi → DebridgeSwapper/getTradeQuote}/getTradeQuote.d.ts +0 -0
- /package/dist/cjs/swappers/{JupiterSwapper/swapperApi → DebridgeSwapper/getTradeRate}/getTradeRate.d.ts +0 -0
- /package/dist/esm/swappers/{JupiterSwapper/swapperApi → DebridgeSwapper/getTradeQuote}/getTradeQuote.d.ts +0 -0
- /package/dist/esm/swappers/{JupiterSwapper/swapperApi → DebridgeSwapper/getTradeRate}/getTradeRate.d.ts +0 -0
package/dist/cjs/constants.js
CHANGED
|
@@ -18,8 +18,8 @@ const ChainflipSwapper_1 = require("./swappers/ChainflipSwapper/ChainflipSwapper
|
|
|
18
18
|
const endpoints_7 = require("./swappers/ChainflipSwapper/endpoints");
|
|
19
19
|
const CowSwapper_1 = require("./swappers/CowSwapper/CowSwapper");
|
|
20
20
|
const endpoints_8 = require("./swappers/CowSwapper/endpoints");
|
|
21
|
-
const
|
|
22
|
-
const
|
|
21
|
+
const DebridgeSwapper_1 = require("./swappers/DebridgeSwapper");
|
|
22
|
+
const endpoints_9 = require("./swappers/DebridgeSwapper/endpoints");
|
|
23
23
|
const endpoints_10 = require("./swappers/MayachainSwapper/endpoints");
|
|
24
24
|
const MayachainSwapper_1 = require("./swappers/MayachainSwapper/MayachainSwapper");
|
|
25
25
|
const endpoints_11 = require("./swappers/NearIntentsSwapper/endpoints");
|
|
@@ -74,10 +74,6 @@ exports.swappers = {
|
|
|
74
74
|
...ChainflipSwapper_1.chainflipSwapper,
|
|
75
75
|
...endpoints_7.chainflipApi,
|
|
76
76
|
},
|
|
77
|
-
[types_1.SwapperName.Jupiter]: {
|
|
78
|
-
...JupiterSwapper_1.jupiterSwapper,
|
|
79
|
-
...endpoints_9.jupiterApi,
|
|
80
|
-
},
|
|
81
77
|
[types_1.SwapperName.Relay]: {
|
|
82
78
|
...RelaySwapper_1.relaySwapper,
|
|
83
79
|
...endpoints_13.relayApi,
|
|
@@ -114,6 +110,10 @@ exports.swappers = {
|
|
|
114
110
|
...AcrossSwapper_1.acrossSwapper,
|
|
115
111
|
...endpoints_1.acrossApi,
|
|
116
112
|
},
|
|
113
|
+
[types_1.SwapperName.Debridge]: {
|
|
114
|
+
...DebridgeSwapper_1.debridgeSwapper,
|
|
115
|
+
...endpoints_9.debridgeApi,
|
|
116
|
+
},
|
|
117
117
|
[types_1.SwapperName.Test]: undefined,
|
|
118
118
|
};
|
|
119
119
|
const DEFAULT_SLIPPAGE_DECIMAL_PERCENTAGE = '0.002';
|
|
@@ -130,6 +130,8 @@ const DEFAULT_SUNIO_SLIPPAGE_DECIMAL_PERCENTAGE = '0.005';
|
|
|
130
130
|
// Starknet swaps can have more latency, so use higher default slippage
|
|
131
131
|
const DEFAULT_AVNU_SLIPPAGE_DECIMAL_PERCENTAGE = '0.02';
|
|
132
132
|
const DEFAULT_STONFI_SLIPPAGE_DECIMAL_PERCENTAGE = '0.01';
|
|
133
|
+
// deBridge API off-chain simulation overestimates output on some chains (e.g. SEI ~2.4%), so auto slippage (1%) is insufficient
|
|
134
|
+
const DEFAULT_DEBRIDGE_SLIPPAGE_DECIMAL_PERCENTAGE = '0.03';
|
|
133
135
|
const getDefaultSlippageDecimalPercentageForSwapper = (swapperName) => {
|
|
134
136
|
if (swapperName === undefined)
|
|
135
137
|
return DEFAULT_SLIPPAGE_DECIMAL_PERCENTAGE;
|
|
@@ -150,12 +152,12 @@ const getDefaultSlippageDecimalPercentageForSwapper = (swapperName) => {
|
|
|
150
152
|
return DEFAULT_ARBITRUM_BRIDGE_SLIPPAGE_DECIMAL_PERCENTAGE;
|
|
151
153
|
case types_1.SwapperName.Chainflip:
|
|
152
154
|
return DEFAULT_CHAINFLIP_SLIPPAGE_DECIMAL_PERCENTAGE;
|
|
153
|
-
case types_1.SwapperName.Jupiter:
|
|
154
|
-
throw new Error('Default slippage not supported by Jupiter');
|
|
155
155
|
case types_1.SwapperName.Relay:
|
|
156
156
|
throw new Error('Default slippage not supported by Relay');
|
|
157
157
|
case types_1.SwapperName.Across:
|
|
158
158
|
throw new Error('Default slippage not supported by Across');
|
|
159
|
+
case types_1.SwapperName.Debridge:
|
|
160
|
+
return DEFAULT_DEBRIDGE_SLIPPAGE_DECIMAL_PERCENTAGE;
|
|
159
161
|
case types_1.SwapperName.ButterSwap:
|
|
160
162
|
return DEFAULT_BUTTERSWAP_SLIPPAGE_DECIMAL_PERCENTAGE;
|
|
161
163
|
case types_1.SwapperName.NearIntents:
|
|
@@ -175,10 +177,9 @@ const getDefaultSlippageDecimalPercentageForSwapper = (swapperName) => {
|
|
|
175
177
|
exports.getDefaultSlippageDecimalPercentageForSwapper = getDefaultSlippageDecimalPercentageForSwapper;
|
|
176
178
|
const isAutoSlippageSupportedBySwapper = (swapperName) => {
|
|
177
179
|
switch (swapperName) {
|
|
178
|
-
case types_1.SwapperName.Jupiter:
|
|
179
|
-
return true;
|
|
180
180
|
case types_1.SwapperName.Relay:
|
|
181
181
|
case types_1.SwapperName.Across:
|
|
182
|
+
case types_1.SwapperName.Debridge:
|
|
182
183
|
return true;
|
|
183
184
|
default:
|
|
184
185
|
return false;
|
|
@@ -27,6 +27,9 @@ exports.SUPPORTED_CHAIN_IDS = [
|
|
|
27
27
|
types_1.KnownChainIds.AvalancheMainnet,
|
|
28
28
|
types_1.KnownChainIds.PolygonMainnet,
|
|
29
29
|
types_1.KnownChainIds.BnbSmartChainMainnet,
|
|
30
|
+
types_1.KnownChainIds.PlasmaMainnet,
|
|
31
|
+
types_1.KnownChainIds.LineaMainnet,
|
|
32
|
+
types_1.KnownChainIds.InkMainnet,
|
|
30
33
|
];
|
|
31
34
|
exports.COW_SWAP_VAULT_RELAYER_ADDRESS = '0xc92e8bdf79f0507f65a392b0ab4667716bfe0110';
|
|
32
35
|
exports.COW_SWAP_SETTLEMENT_ADDRESS = '0x9008D19f58AAbD9eD0D60971565AA8510560ab41';
|
|
@@ -41,6 +41,12 @@ const getCowNetwork = (chainId) => {
|
|
|
41
41
|
return types_1.CowNetwork.Polygon;
|
|
42
42
|
case types_1.KnownChainIds.BnbSmartChainMainnet:
|
|
43
43
|
return types_1.CowNetwork.Bnb;
|
|
44
|
+
case types_1.KnownChainIds.PlasmaMainnet:
|
|
45
|
+
return types_1.CowNetwork.Plasma;
|
|
46
|
+
case types_1.KnownChainIds.LineaMainnet:
|
|
47
|
+
return types_1.CowNetwork.Linea;
|
|
48
|
+
case types_1.KnownChainIds.InkMainnet:
|
|
49
|
+
return types_1.CowNetwork.Ink;
|
|
44
50
|
default:
|
|
45
51
|
return;
|
|
46
52
|
}
|
package/dist/cjs/index.d.ts
CHANGED
|
@@ -9,7 +9,7 @@ export * from './swappers/CetusSwapper';
|
|
|
9
9
|
export * from './swappers/ChainflipSwapper';
|
|
10
10
|
export * from './swappers/SunioSwapper';
|
|
11
11
|
export * from './swappers/CowSwapper';
|
|
12
|
-
export * from './swappers/
|
|
12
|
+
export * from './swappers/DebridgeSwapper';
|
|
13
13
|
export * from './swappers/PortalsSwapper';
|
|
14
14
|
export * from './swappers/ThorchainSwapper';
|
|
15
15
|
export * from './swappers/MayachainSwapper';
|
package/dist/cjs/index.js
CHANGED
|
@@ -38,7 +38,7 @@ __exportStar(require("./swappers/CetusSwapper"), exports);
|
|
|
38
38
|
__exportStar(require("./swappers/ChainflipSwapper"), exports);
|
|
39
39
|
__exportStar(require("./swappers/SunioSwapper"), exports);
|
|
40
40
|
__exportStar(require("./swappers/CowSwapper"), exports);
|
|
41
|
-
__exportStar(require("./swappers/
|
|
41
|
+
__exportStar(require("./swappers/DebridgeSwapper"), exports);
|
|
42
42
|
__exportStar(require("./swappers/PortalsSwapper"), exports);
|
|
43
43
|
__exportStar(require("./swappers/ThorchainSwapper"), exports);
|
|
44
44
|
__exportStar(require("./swappers/MayachainSwapper"), exports);
|
|
@@ -2,8 +2,10 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.getUnsignedSolanaTransaction = void 0;
|
|
4
4
|
const utils_1 = require("@shapeshiftoss/utils");
|
|
5
|
-
const JupiterSwapper_1 = require("../swappers/JupiterSwapper");
|
|
6
5
|
const utils_2 = require("../utils");
|
|
6
|
+
// Jupiter (and Relay which uses Jupiter under the hood) use 40% as a compute unit margin while
|
|
7
|
+
// calculating them, some TX reverts without this. For stability purposes we add 60% margin.
|
|
8
|
+
const COMPUTE_UNIT_MARGIN_MULTIPLIER = 1.6;
|
|
7
9
|
const getUnsignedSolanaTransaction = async ({ stepIndex, tradeQuote, from, assertGetSolanaChainAdapter, }) => {
|
|
8
10
|
if (!(0, utils_2.isExecutableTradeQuote)(tradeQuote))
|
|
9
11
|
throw new Error('Unable to execute a trade rate quote');
|
|
@@ -30,7 +32,7 @@ const getUnsignedSolanaTransaction = async ({ stepIndex, tradeQuote, from, asser
|
|
|
30
32
|
instructions: solanaInstructions,
|
|
31
33
|
// As always, as relay uses jupiter under the hood, we need to add the compute unit safety margin
|
|
32
34
|
computeUnitLimit: (0, utils_1.bnOrZero)(fast.chainSpecific.computeUnits)
|
|
33
|
-
.times(
|
|
35
|
+
.times(COMPUTE_UNIT_MARGIN_MULTIPLIER)
|
|
34
36
|
.toFixed(0),
|
|
35
37
|
computeUnitPrice: fast.chainSpecific.priorityFee,
|
|
36
38
|
},
|
|
@@ -30,6 +30,8 @@ exports.chainIdToAcrossChainId = {
|
|
|
30
30
|
[caip_1.soneiumChainId]: chains_1.soneium.id,
|
|
31
31
|
// Across uses a custom Solana chain ID
|
|
32
32
|
[caip_1.solanaChainId]: 34268394551451,
|
|
33
|
+
[caip_1.scrollChainId]: chains_1.scroll.id,
|
|
34
|
+
[caip_1.megaethChainId]: 4326,
|
|
33
35
|
};
|
|
34
36
|
exports.acrossChainIdToChainId = (0, invert_1.default)(exports.chainIdToAcrossChainId);
|
|
35
37
|
exports.ACROSS_SUPPORTED_CHAIN_IDS = Object.keys(exports.chainIdToAcrossChainId);
|
|
@@ -13,6 +13,7 @@ const axios_1 = __importDefault(require("axios"));
|
|
|
13
13
|
const viem_1 = require("viem");
|
|
14
14
|
const types_1 = require("../../../types");
|
|
15
15
|
const utils_2 = require("../../../utils");
|
|
16
|
+
const affiliateFee_1 = require("../../utils/affiliateFee");
|
|
16
17
|
const helpers_1 = require("../../utils/helpers/helpers");
|
|
17
18
|
const constant_1 = require("../constant");
|
|
18
19
|
const fetchAcrossTrade_1 = require("./fetchAcrossTrade");
|
|
@@ -184,7 +185,9 @@ async function getTrade({ input, deps, }) {
|
|
|
184
185
|
if (quote.swapTx.ecosystem !== 'svm')
|
|
185
186
|
return (0, monads_1.Ok)(undefined);
|
|
186
187
|
try {
|
|
187
|
-
const
|
|
188
|
+
const txBytes = Buffer.from(quote.swapTx.data, 'base64');
|
|
189
|
+
const isOversized = txBytes.length > 1232;
|
|
190
|
+
const versionedTransaction = web3_js_1.VersionedTransaction.deserialize(new Uint8Array(txBytes));
|
|
188
191
|
const adapter = deps.assertGetSolanaChainAdapter(sellAsset.chainId);
|
|
189
192
|
const addressLookupTableAccountKeys = versionedTransaction.message.addressTableLookups.map(lookup => lookup.accountKey.toString());
|
|
190
193
|
const addressLookupTableAccountsInfos = await adapter.getAddressLookupTableAccounts(addressLookupTableAccountKeys);
|
|
@@ -200,6 +203,7 @@ async function getTrade({ input, deps, }) {
|
|
|
200
203
|
return (0, monads_1.Ok)({
|
|
201
204
|
instructions: instructionsWithoutComputeBudget,
|
|
202
205
|
addressLookupTableAddresses: addressLookupTableAccountKeys,
|
|
206
|
+
isOversized,
|
|
203
207
|
});
|
|
204
208
|
}
|
|
205
209
|
catch (e) {
|
|
@@ -301,6 +305,16 @@ async function getTrade({ input, deps, }) {
|
|
|
301
305
|
estimatedExecutionTimeMs: quote.expectedFillTime * 1000,
|
|
302
306
|
acrossTransactionMetadata,
|
|
303
307
|
solanaTransactionMetadata,
|
|
308
|
+
affiliateFee: appFee !== undefined && appFeeRecipient !== undefined
|
|
309
|
+
? (0, affiliateFee_1.buildAffiliateFee)({
|
|
310
|
+
strategy: 'buy_asset',
|
|
311
|
+
affiliateBps,
|
|
312
|
+
sellAsset,
|
|
313
|
+
buyAsset,
|
|
314
|
+
sellAmountCryptoBaseUnit: sellAmountIncludingProtocolFeesCryptoBaseUnit,
|
|
315
|
+
buyAmountCryptoBaseUnit: buyAmountAfterFeesCryptoBaseUnit,
|
|
316
|
+
})
|
|
317
|
+
: undefined,
|
|
304
318
|
};
|
|
305
319
|
const baseQuoteOrRate = {
|
|
306
320
|
id: quote.id,
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.getTradeQuote = void 0;
|
|
4
4
|
const avnu_sdk_1 = require("@avnu/avnu-sdk");
|
|
5
|
+
const caip_1 = require("@shapeshiftoss/caip");
|
|
5
6
|
const utils_1 = require("@shapeshiftoss/utils");
|
|
6
7
|
const monads_1 = require("@sniptt/monads");
|
|
7
8
|
const starknet_1 = require("starknet");
|
|
@@ -9,6 +10,7 @@ const uuid_1 = require("uuid");
|
|
|
9
10
|
const constants_1 = require("../../../constants");
|
|
10
11
|
const types_1 = require("../../../types");
|
|
11
12
|
const utils_2 = require("../../../utils");
|
|
13
|
+
const affiliateFee_1 = require("../../utils/affiliateFee");
|
|
12
14
|
const helpers_1 = require("../../utils/helpers/helpers");
|
|
13
15
|
const constants_2 = require("../utils/constants");
|
|
14
16
|
const helpers_2 = require("../utils/helpers");
|
|
@@ -58,7 +60,8 @@ const getTradeQuote = async (input, deps) => {
|
|
|
58
60
|
takerAddress: normalizedSendAddress,
|
|
59
61
|
size: 1,
|
|
60
62
|
integratorFees: affiliateBps ? BigInt(affiliateBps) : undefined,
|
|
61
|
-
integratorFeeRecipient: (0, helpers_1.getTreasuryAddressFromChainId)(
|
|
63
|
+
integratorFeeRecipient: (0, helpers_1.getTreasuryAddressFromChainId)(caip_1.starknetChainId),
|
|
64
|
+
integratorName: 'shapeshift',
|
|
62
65
|
});
|
|
63
66
|
if (!quotes || quotes.length === 0) {
|
|
64
67
|
return (0, monads_1.Err)((0, utils_2.makeSwapErrorRight)({
|
|
@@ -131,6 +134,14 @@ const getTradeQuote = async (input, deps) => {
|
|
|
131
134
|
quoteId: bestQuote.quoteId,
|
|
132
135
|
routes: bestQuote.routes,
|
|
133
136
|
},
|
|
137
|
+
affiliateFee: (0, affiliateFee_1.buildAffiliateFee)({
|
|
138
|
+
strategy: 'buy_asset',
|
|
139
|
+
affiliateBps,
|
|
140
|
+
sellAsset,
|
|
141
|
+
buyAsset,
|
|
142
|
+
sellAmountCryptoBaseUnit: sellAmount,
|
|
143
|
+
buyAmountCryptoBaseUnit: buyAmountAfterFeesCryptoBaseUnit,
|
|
144
|
+
}),
|
|
134
145
|
},
|
|
135
146
|
],
|
|
136
147
|
};
|
|
@@ -9,6 +9,7 @@ const uuid_1 = require("uuid");
|
|
|
9
9
|
const constants_1 = require("../../../constants");
|
|
10
10
|
const types_1 = require("../../../types");
|
|
11
11
|
const utils_2 = require("../../../utils");
|
|
12
|
+
const affiliateFee_1 = require("../../utils/affiliateFee");
|
|
12
13
|
const helpers_1 = require("../../utils/helpers/helpers");
|
|
13
14
|
const constants_2 = require("../utils/constants");
|
|
14
15
|
const helpers_2 = require("../utils/helpers");
|
|
@@ -108,6 +109,14 @@ const getTradeRate = async (input, deps) => {
|
|
|
108
109
|
sellAsset,
|
|
109
110
|
source: types_1.SwapperName.Avnu,
|
|
110
111
|
estimatedExecutionTimeMs: undefined,
|
|
112
|
+
affiliateFee: (0, affiliateFee_1.buildAffiliateFee)({
|
|
113
|
+
strategy: 'buy_asset',
|
|
114
|
+
affiliateBps,
|
|
115
|
+
sellAsset,
|
|
116
|
+
buyAsset,
|
|
117
|
+
sellAmountCryptoBaseUnit: sellAmount,
|
|
118
|
+
buyAmountCryptoBaseUnit: buyAmountAfterFeesCryptoBaseUnit,
|
|
119
|
+
}),
|
|
111
120
|
},
|
|
112
121
|
],
|
|
113
122
|
};
|
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.bebopSwapper = void 0;
|
|
4
4
|
const utils_1 = require("../../utils");
|
|
5
|
+
const executeSolanaMessage_1 = require("./executeSolanaMessage");
|
|
5
6
|
exports.bebopSwapper = {
|
|
6
7
|
executeEvmTransaction: utils_1.executeEvmTransaction,
|
|
8
|
+
executeSolanaMessage: executeSolanaMessage_1.executeSolanaMessage,
|
|
7
9
|
};
|
|
@@ -4,18 +4,30 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.bebopApi = void 0;
|
|
7
|
+
const caip_1 = require("@shapeshiftoss/caip");
|
|
7
8
|
const chain_adapters_1 = require("@shapeshiftoss/chain-adapters");
|
|
8
9
|
const bignumber_js_1 = __importDefault(require("bignumber.js"));
|
|
9
10
|
const viem_1 = require("viem");
|
|
10
11
|
const utils_1 = require("../../utils");
|
|
12
|
+
const getBebopSolanaTradeQuote_1 = require("./getBebopSolanaTradeQuote/getBebopSolanaTradeQuote");
|
|
13
|
+
const getBebopSolanaTradeRate_1 = require("./getBebopSolanaTradeRate/getBebopSolanaTradeRate");
|
|
11
14
|
const getBebopTradeQuote_1 = require("./getBebopTradeQuote/getBebopTradeQuote");
|
|
12
15
|
const getBebopTradeRate_1 = require("./getBebopTradeRate/getBebopTradeRate");
|
|
16
|
+
const helpers_1 = require("./utils/helpers/helpers");
|
|
13
17
|
exports.bebopApi = {
|
|
14
18
|
getTradeQuote: async (input, { assertGetEvmChainAdapter, assetsById, config }) => {
|
|
19
|
+
if ((0, helpers_1.isSolanaChainId)(input.sellAsset.chainId)) {
|
|
20
|
+
const tradeQuoteResult = await (0, getBebopSolanaTradeQuote_1.getBebopSolanaTradeQuote)(input, assetsById, config.VITE_BEBOP_API_KEY);
|
|
21
|
+
return tradeQuoteResult.map(tradeQuote => [tradeQuote]);
|
|
22
|
+
}
|
|
15
23
|
const tradeQuoteResult = await (0, getBebopTradeQuote_1.getBebopTradeQuote)(input, assertGetEvmChainAdapter, assetsById, config.VITE_BEBOP_API_KEY);
|
|
16
24
|
return tradeQuoteResult.map(tradeQuote => [tradeQuote]);
|
|
17
25
|
},
|
|
18
26
|
getTradeRate: async (input, { assertGetEvmChainAdapter, assetsById, config }) => {
|
|
27
|
+
if ((0, helpers_1.isSolanaChainId)(input.sellAsset.chainId)) {
|
|
28
|
+
const tradeRateResult = await (0, getBebopSolanaTradeRate_1.getBebopSolanaTradeRate)(input, assetsById, config.VITE_BEBOP_API_KEY);
|
|
29
|
+
return tradeRateResult.map(tradeRate => [tradeRate]);
|
|
30
|
+
}
|
|
19
31
|
const tradeRateResult = await (0, getBebopTradeRate_1.getBebopTradeRate)(input, assertGetEvmChainAdapter, assetsById, config.VITE_BEBOP_API_KEY);
|
|
20
32
|
return tradeRateResult.map(tradeRate => [tradeRate]);
|
|
21
33
|
},
|
|
@@ -40,10 +52,22 @@ exports.bebopApi = {
|
|
|
40
52
|
to,
|
|
41
53
|
value,
|
|
42
54
|
...feeData,
|
|
43
|
-
// Use the higher amount of the node or the API, as the node doesn't always provide enough gas padding
|
|
44
55
|
gasLimit: bignumber_js_1.default.max(feeData.gasLimit, gas).toFixed(),
|
|
45
56
|
});
|
|
46
57
|
},
|
|
58
|
+
getUnsignedSolanaMessage: ({ tradeQuote, stepIndex }) => {
|
|
59
|
+
if (!(0, utils_1.isExecutableTradeQuote)(tradeQuote))
|
|
60
|
+
throw new Error('Unable to execute a trade rate quote');
|
|
61
|
+
const step = (0, utils_1.getExecutableTradeStep)(tradeQuote, stepIndex);
|
|
62
|
+
const { bebopSolanaSerializedTx, bebopQuoteId } = step;
|
|
63
|
+
if (!bebopSolanaSerializedTx || !bebopQuoteId) {
|
|
64
|
+
throw new Error('Bebop Solana transaction metadata is required');
|
|
65
|
+
}
|
|
66
|
+
return Promise.resolve({
|
|
67
|
+
serializedTx: bebopSolanaSerializedTx,
|
|
68
|
+
quoteId: bebopQuoteId,
|
|
69
|
+
});
|
|
70
|
+
},
|
|
47
71
|
getEvmTransactionFees: async ({ from, stepIndex, tradeQuote, supportsEIP1559, assertGetEvmChainAdapter, }) => {
|
|
48
72
|
if (!(0, utils_1.isExecutableTradeQuote)(tradeQuote))
|
|
49
73
|
throw new Error('Unable to execute a trade rate quote');
|
|
@@ -57,5 +81,14 @@ exports.bebopApi = {
|
|
|
57
81
|
const feeData = await chain_adapters_1.evm.getFees({ adapter, data, to, value, from, supportsEIP1559 });
|
|
58
82
|
return feeData.networkFeeCryptoBaseUnit;
|
|
59
83
|
},
|
|
60
|
-
checkTradeStatus:
|
|
84
|
+
checkTradeStatus: input => {
|
|
85
|
+
if (input.chainId === caip_1.solanaChainId) {
|
|
86
|
+
return (0, utils_1.checkSolanaSwapStatus)({
|
|
87
|
+
txHash: input.txHash,
|
|
88
|
+
address: input.address,
|
|
89
|
+
assertGetSolanaChainAdapter: input.assertGetSolanaChainAdapter,
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
return (0, utils_1.checkEvmSwapStatus)(input);
|
|
93
|
+
},
|
|
61
94
|
};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import type { SolanaMessageExecutionProps, SolanaMessageToSign, SwapperConfig } from '../../types';
|
|
2
|
+
export declare const executeSolanaMessage: (messageData: SolanaMessageToSign, { signSerializedTransaction }: SolanaMessageExecutionProps, config: SwapperConfig) => Promise<string>;
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.executeSolanaMessage = void 0;
|
|
7
|
+
const bs58_1 = __importDefault(require("bs58"));
|
|
8
|
+
const bebopService_1 = require("./utils/bebopService");
|
|
9
|
+
const executeSolanaMessage = async (messageData, { signSerializedTransaction }, config) => {
|
|
10
|
+
const { serializedTx, quoteId } = messageData;
|
|
11
|
+
if (!serializedTx || !quoteId) {
|
|
12
|
+
throw new Error('Missing serializedTx or quoteId in message data');
|
|
13
|
+
}
|
|
14
|
+
const signatures = await signSerializedTransaction(serializedTx);
|
|
15
|
+
if (!signatures.length) {
|
|
16
|
+
throw new Error('No signatures returned from wallet');
|
|
17
|
+
}
|
|
18
|
+
// Find the actual non-zero user signature (skip empty placeholder slots from co-signers)
|
|
19
|
+
const nonZeroSigIndex = signatures.findIndex(sig => {
|
|
20
|
+
const bytes = Buffer.from(sig, 'base64');
|
|
21
|
+
return !bytes.every(b => b === 0);
|
|
22
|
+
});
|
|
23
|
+
if (nonZeroSigIndex === -1) {
|
|
24
|
+
throw new Error('No non-zero signatures found after signing');
|
|
25
|
+
}
|
|
26
|
+
const userSignatureBase64 = signatures[nonZeroSigIndex];
|
|
27
|
+
const userSignatureBytes = Buffer.from(userSignatureBase64, 'base64');
|
|
28
|
+
const userSignatureBase58 = bs58_1.default.encode(userSignatureBytes);
|
|
29
|
+
const bebopService = (0, bebopService_1.bebopServiceFactory)({ apiKey: config.VITE_BEBOP_API_KEY });
|
|
30
|
+
const maybeOrderResponse = await bebopService.post('https://api.bebop.xyz/pmm/solana/v3/order', {
|
|
31
|
+
quote_id: quoteId,
|
|
32
|
+
signature: userSignatureBase58,
|
|
33
|
+
});
|
|
34
|
+
if (maybeOrderResponse.isErr()) {
|
|
35
|
+
const error = maybeOrderResponse.unwrapErr();
|
|
36
|
+
throw new Error(`Bebop order submission failed: ${error.cause ?? error.message}`);
|
|
37
|
+
}
|
|
38
|
+
const { data: orderResponse } = maybeOrderResponse.unwrap();
|
|
39
|
+
if (orderResponse.error) {
|
|
40
|
+
throw new Error(`Bebop order failed: ${orderResponse.error.message} (code ${orderResponse.error.errorCode})`);
|
|
41
|
+
}
|
|
42
|
+
if (!orderResponse.txHash) {
|
|
43
|
+
throw new Error(`Bebop order response missing txHash: ${JSON.stringify(orderResponse)}`);
|
|
44
|
+
}
|
|
45
|
+
return orderResponse.txHash;
|
|
46
|
+
};
|
|
47
|
+
exports.executeSolanaMessage = executeSolanaMessage;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { AssetsByIdPartial } from '@shapeshiftoss/types';
|
|
2
|
+
import type { Result } from '@sniptt/monads';
|
|
3
|
+
import type { GetSolanaTradeQuoteInput, SwapErrorRight, TradeQuote } from '../../../types';
|
|
4
|
+
export declare function getBebopSolanaTradeQuote(input: GetSolanaTradeQuoteInput, _assetsById: AssetsByIdPartial, apiKey: string): Promise<Result<TradeQuote, SwapErrorRight>>;
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getBebopSolanaTradeQuote = void 0;
|
|
4
|
+
const monads_1 = require("@sniptt/monads");
|
|
5
|
+
const uuid_1 = require("uuid");
|
|
6
|
+
const constants_1 = require("../../../constants");
|
|
7
|
+
const types_1 = require("../../../types");
|
|
8
|
+
const utils_1 = require("../../../utils");
|
|
9
|
+
const fetchFromBebop_1 = require("../utils/fetchFromBebop");
|
|
10
|
+
const helpers_1 = require("../utils/helpers/helpers");
|
|
11
|
+
async function getBebopSolanaTradeQuote(input, _assetsById, apiKey) {
|
|
12
|
+
const { sellAsset, buyAsset, accountNumber, sendAddress, receiveAddress, affiliateBps, sellAmountIncludingProtocolFeesCryptoBaseUnit, } = input;
|
|
13
|
+
const assertion = (0, helpers_1.assertValidTrade)({ buyAsset, sellAsset });
|
|
14
|
+
if (assertion.isErr())
|
|
15
|
+
return (0, monads_1.Err)(assertion.unwrapErr());
|
|
16
|
+
const takerAddress = sendAddress || receiveAddress;
|
|
17
|
+
if (!takerAddress) {
|
|
18
|
+
return (0, monads_1.Err)((0, utils_1.makeSwapErrorRight)({
|
|
19
|
+
message: 'Cannot execute quote without a wallet address',
|
|
20
|
+
code: types_1.TradeQuoteError.UnknownError,
|
|
21
|
+
}));
|
|
22
|
+
}
|
|
23
|
+
const slippageTolerancePercentageDecimal = input.slippageTolerancePercentageDecimal ??
|
|
24
|
+
(0, constants_1.getDefaultSlippageDecimalPercentageForSwapper)(types_1.SwapperName.Bebop);
|
|
25
|
+
const maybeBebopQuoteResponse = await (0, fetchFromBebop_1.fetchBebopSolanaQuote)({
|
|
26
|
+
buyAsset,
|
|
27
|
+
sellAsset,
|
|
28
|
+
sellAmountIncludingProtocolFeesCryptoBaseUnit,
|
|
29
|
+
takerAddress,
|
|
30
|
+
receiverAddress: receiveAddress ?? takerAddress,
|
|
31
|
+
slippageTolerancePercentageDecimal,
|
|
32
|
+
affiliateBps,
|
|
33
|
+
apiKey,
|
|
34
|
+
});
|
|
35
|
+
if (maybeBebopQuoteResponse.isErr())
|
|
36
|
+
return (0, monads_1.Err)(maybeBebopQuoteResponse.unwrapErr());
|
|
37
|
+
const bebopQuoteResponse = maybeBebopQuoteResponse.unwrap();
|
|
38
|
+
const sellTokenAddress = Object.keys(bebopQuoteResponse.sellTokens)[0];
|
|
39
|
+
const buyTokenAddress = Object.keys(bebopQuoteResponse.buyTokens)[0];
|
|
40
|
+
if (!sellTokenAddress || !buyTokenAddress) {
|
|
41
|
+
return (0, monads_1.Err)((0, utils_1.makeSwapErrorRight)({
|
|
42
|
+
message: 'Invalid token addresses in response',
|
|
43
|
+
code: types_1.TradeQuoteError.InvalidResponse,
|
|
44
|
+
}));
|
|
45
|
+
}
|
|
46
|
+
if (bebopQuoteResponse.solana_tx &&
|
|
47
|
+
!(0, helpers_1.isBebopSolanaTxSafe)(bebopQuoteResponse.solana_tx, takerAddress)) {
|
|
48
|
+
return (0, monads_1.Err)((0, utils_1.makeSwapErrorRight)({
|
|
49
|
+
message: 'Bebop signer index mismatch - taker not at expected position',
|
|
50
|
+
code: types_1.TradeQuoteError.NoRouteFound,
|
|
51
|
+
}));
|
|
52
|
+
}
|
|
53
|
+
const sellAmount = bebopQuoteResponse.sellTokens[sellTokenAddress].amount;
|
|
54
|
+
const buyAmount = bebopQuoteResponse.buyTokens[buyTokenAddress].amount;
|
|
55
|
+
const rate = (0, helpers_1.calculateRate)({ buyAmount, sellAmount, buyAsset, sellAsset });
|
|
56
|
+
const buyTokenData = bebopQuoteResponse.buyTokens[buyTokenAddress];
|
|
57
|
+
const buyAmountBeforeFeesCryptoBaseUnit = buyTokenData.amountBeforeFee || buyAmount;
|
|
58
|
+
const buyAmountAfterFeesCryptoBaseUnit = buyAmount;
|
|
59
|
+
// Bebop Solana is gasless - Bebop pays the network fees via co-signing
|
|
60
|
+
const networkFeeCryptoBaseUnit = '0';
|
|
61
|
+
return (0, monads_1.Ok)({
|
|
62
|
+
id: (0, uuid_1.v4)(),
|
|
63
|
+
quoteOrRate: 'quote',
|
|
64
|
+
receiveAddress: receiveAddress ?? takerAddress,
|
|
65
|
+
affiliateBps,
|
|
66
|
+
slippageTolerancePercentageDecimal,
|
|
67
|
+
rate,
|
|
68
|
+
swapperName: types_1.SwapperName.Bebop,
|
|
69
|
+
steps: [
|
|
70
|
+
{
|
|
71
|
+
estimatedExecutionTimeMs: 0,
|
|
72
|
+
allowanceContract: '0x0',
|
|
73
|
+
buyAsset,
|
|
74
|
+
sellAsset,
|
|
75
|
+
accountNumber,
|
|
76
|
+
rate,
|
|
77
|
+
feeData: {
|
|
78
|
+
protocolFees: {},
|
|
79
|
+
networkFeeCryptoBaseUnit,
|
|
80
|
+
},
|
|
81
|
+
buyAmountBeforeFeesCryptoBaseUnit,
|
|
82
|
+
buyAmountAfterFeesCryptoBaseUnit,
|
|
83
|
+
sellAmountIncludingProtocolFeesCryptoBaseUnit,
|
|
84
|
+
source: types_1.SwapperName.Bebop,
|
|
85
|
+
bebopSolanaSerializedTx: bebopQuoteResponse.solana_tx,
|
|
86
|
+
bebopQuoteId: bebopQuoteResponse.quoteId,
|
|
87
|
+
},
|
|
88
|
+
],
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
exports.getBebopSolanaTradeQuote = getBebopSolanaTradeQuote;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { AssetsByIdPartial } from '@shapeshiftoss/types';
|
|
2
|
+
import type { Result } from '@sniptt/monads';
|
|
3
|
+
import type { GetSolanaTradeRateInput, SwapErrorRight, TradeRate } from '../../../types';
|
|
4
|
+
export declare function getBebopSolanaTradeRate(input: GetSolanaTradeRateInput, _assetsById: AssetsByIdPartial, apiKey: string): Promise<Result<TradeRate, SwapErrorRight>>;
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getBebopSolanaTradeRate = void 0;
|
|
4
|
+
const monads_1 = require("@sniptt/monads");
|
|
5
|
+
const uuid_1 = require("uuid");
|
|
6
|
+
const constants_1 = require("../../../constants");
|
|
7
|
+
const types_1 = require("../../../types");
|
|
8
|
+
const utils_1 = require("../../../utils");
|
|
9
|
+
const fetchFromBebop_1 = require("../utils/fetchFromBebop");
|
|
10
|
+
const helpers_1 = require("../utils/helpers/helpers");
|
|
11
|
+
async function getBebopSolanaTradeRate(input, _assetsById, apiKey) {
|
|
12
|
+
const { sellAsset, buyAsset, accountNumber, receiveAddress, affiliateBps, sellAmountIncludingProtocolFeesCryptoBaseUnit, } = input;
|
|
13
|
+
const assertion = (0, helpers_1.assertValidTrade)({ buyAsset, sellAsset });
|
|
14
|
+
if (assertion.isErr())
|
|
15
|
+
return (0, monads_1.Err)(assertion.unwrapErr());
|
|
16
|
+
const slippageTolerancePercentageDecimal = input.slippageTolerancePercentageDecimal ??
|
|
17
|
+
(0, constants_1.getDefaultSlippageDecimalPercentageForSwapper)(types_1.SwapperName.Bebop);
|
|
18
|
+
const maybeBebopPriceResponse = await (0, fetchFromBebop_1.fetchBebopSolanaPrice)({
|
|
19
|
+
buyAsset,
|
|
20
|
+
sellAsset,
|
|
21
|
+
sellAmountIncludingProtocolFeesCryptoBaseUnit,
|
|
22
|
+
receiveAddress,
|
|
23
|
+
affiliateBps,
|
|
24
|
+
apiKey,
|
|
25
|
+
});
|
|
26
|
+
if (maybeBebopPriceResponse.isErr())
|
|
27
|
+
return (0, monads_1.Err)(maybeBebopPriceResponse.unwrapErr());
|
|
28
|
+
const bebopPriceResponse = maybeBebopPriceResponse.unwrap();
|
|
29
|
+
const sellTokenAddress = Object.keys(bebopPriceResponse.sellTokens)[0];
|
|
30
|
+
const buyTokenAddress = Object.keys(bebopPriceResponse.buyTokens)[0];
|
|
31
|
+
if (!sellTokenAddress || !buyTokenAddress) {
|
|
32
|
+
return (0, monads_1.Err)((0, utils_1.makeSwapErrorRight)({
|
|
33
|
+
message: 'Invalid token addresses in response',
|
|
34
|
+
code: types_1.TradeQuoteError.InvalidResponse,
|
|
35
|
+
}));
|
|
36
|
+
}
|
|
37
|
+
if (bebopPriceResponse.solana_tx) {
|
|
38
|
+
if (!receiveAddress) {
|
|
39
|
+
return (0, monads_1.Err)((0, utils_1.makeSwapErrorRight)({
|
|
40
|
+
message: 'Cannot validate Bebop Solana tx without a taker address',
|
|
41
|
+
code: types_1.TradeQuoteError.NoRouteFound,
|
|
42
|
+
}));
|
|
43
|
+
}
|
|
44
|
+
if (!(0, helpers_1.isBebopSolanaTxSafe)(bebopPriceResponse.solana_tx, receiveAddress)) {
|
|
45
|
+
return (0, monads_1.Err)((0, utils_1.makeSwapErrorRight)({
|
|
46
|
+
message: 'Bebop signer index mismatch - taker not at expected position',
|
|
47
|
+
code: types_1.TradeQuoteError.NoRouteFound,
|
|
48
|
+
}));
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
const sellAmount = bebopPriceResponse.sellTokens[sellTokenAddress].amount;
|
|
52
|
+
const buyAmount = bebopPriceResponse.buyTokens[buyTokenAddress].amount;
|
|
53
|
+
const rate = (0, helpers_1.calculateRate)({ buyAmount, sellAmount, buyAsset, sellAsset });
|
|
54
|
+
const buyTokenData = bebopPriceResponse.buyTokens[buyTokenAddress];
|
|
55
|
+
const buyAmountBeforeFeesCryptoBaseUnit = buyTokenData.amountBeforeFee || buyAmount;
|
|
56
|
+
const buyAmountAfterFeesCryptoBaseUnit = buyAmount;
|
|
57
|
+
// Bebop Solana is gasless - Bebop pays the network fees via co-signing
|
|
58
|
+
const networkFeeCryptoBaseUnit = '0';
|
|
59
|
+
return (0, monads_1.Ok)({
|
|
60
|
+
id: (0, uuid_1.v4)(),
|
|
61
|
+
quoteOrRate: 'rate',
|
|
62
|
+
accountNumber: undefined,
|
|
63
|
+
receiveAddress,
|
|
64
|
+
affiliateBps,
|
|
65
|
+
slippageTolerancePercentageDecimal,
|
|
66
|
+
rate,
|
|
67
|
+
swapperName: types_1.SwapperName.Bebop,
|
|
68
|
+
steps: [
|
|
69
|
+
{
|
|
70
|
+
estimatedExecutionTimeMs: 0,
|
|
71
|
+
allowanceContract: '0x0',
|
|
72
|
+
buyAsset,
|
|
73
|
+
sellAsset,
|
|
74
|
+
accountNumber,
|
|
75
|
+
rate,
|
|
76
|
+
feeData: {
|
|
77
|
+
protocolFees: {},
|
|
78
|
+
networkFeeCryptoBaseUnit,
|
|
79
|
+
},
|
|
80
|
+
buyAmountBeforeFeesCryptoBaseUnit,
|
|
81
|
+
buyAmountAfterFeesCryptoBaseUnit,
|
|
82
|
+
sellAmountIncludingProtocolFeesCryptoBaseUnit,
|
|
83
|
+
source: types_1.SwapperName.Bebop,
|
|
84
|
+
},
|
|
85
|
+
],
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
exports.getBebopSolanaTradeRate = getBebopSolanaTradeRate;
|
|
@@ -9,6 +9,7 @@ const viem_1 = require("viem");
|
|
|
9
9
|
const constants_1 = require("../../../constants");
|
|
10
10
|
const types_1 = require("../../../types");
|
|
11
11
|
const utils_2 = require("../../../utils");
|
|
12
|
+
const affiliateFee_1 = require("../../utils/affiliateFee");
|
|
12
13
|
const helpers_1 = require("../../utils/helpers/helpers");
|
|
13
14
|
const types_2 = require("../types");
|
|
14
15
|
const fetchFromBebop_1 = require("../utils/fetchFromBebop");
|
|
@@ -102,6 +103,15 @@ async function getBebopTradeQuote(input, assertGetEvmChainAdapter, _assetsById,
|
|
|
102
103
|
sellAmountIncludingProtocolFeesCryptoBaseUnit,
|
|
103
104
|
source: types_1.SwapperName.Bebop,
|
|
104
105
|
bebopTransactionMetadata: transactionMetadata,
|
|
106
|
+
affiliateFee: (0, affiliateFee_1.buildAffiliateFee)({
|
|
107
|
+
strategy: 'buy_asset',
|
|
108
|
+
affiliateBps,
|
|
109
|
+
sellAsset,
|
|
110
|
+
buyAsset,
|
|
111
|
+
sellAmountCryptoBaseUnit: sellAmountIncludingProtocolFeesCryptoBaseUnit,
|
|
112
|
+
buyAmountCryptoBaseUnit: buyAmountAfterFeesCryptoBaseUnit,
|
|
113
|
+
isEstimate: true,
|
|
114
|
+
}),
|
|
105
115
|
},
|
|
106
116
|
],
|
|
107
117
|
});
|
|
@@ -9,6 +9,7 @@ const viem_1 = require("viem");
|
|
|
9
9
|
const constants_1 = require("../../../constants");
|
|
10
10
|
const types_1 = require("../../../types");
|
|
11
11
|
const utils_2 = require("../../../utils");
|
|
12
|
+
const affiliateFee_1 = require("../../utils/affiliateFee");
|
|
12
13
|
const helpers_1 = require("../../utils/helpers/helpers");
|
|
13
14
|
const fetchFromBebop_1 = require("../utils/fetchFromBebop");
|
|
14
15
|
const helpers_2 = require("../utils/helpers/helpers");
|
|
@@ -85,6 +86,15 @@ async function getBebopTradeRate(input, assertGetEvmChainAdapter, _assetsById, a
|
|
|
85
86
|
buyAmountAfterFeesCryptoBaseUnit,
|
|
86
87
|
sellAmountIncludingProtocolFeesCryptoBaseUnit,
|
|
87
88
|
source: types_1.SwapperName.Bebop,
|
|
89
|
+
affiliateFee: (0, affiliateFee_1.buildAffiliateFee)({
|
|
90
|
+
strategy: 'buy_asset',
|
|
91
|
+
affiliateBps,
|
|
92
|
+
sellAsset,
|
|
93
|
+
buyAsset,
|
|
94
|
+
sellAmountCryptoBaseUnit: sellAmountIncludingProtocolFeesCryptoBaseUnit,
|
|
95
|
+
buyAmountCryptoBaseUnit: buyAmountAfterFeesCryptoBaseUnit,
|
|
96
|
+
isEstimate: true,
|
|
97
|
+
}),
|
|
88
98
|
},
|
|
89
99
|
],
|
|
90
100
|
});
|