@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
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { contractAddressOrUndefined } from '@shapeshiftoss/utils';
|
|
2
|
+
import { PublicKey, SystemProgram, TransactionInstruction } from '@solana/web3.js';
|
|
3
|
+
import { getExecutableTradeStep, isExecutableTradeQuote } from '../../utils.js';
|
|
4
|
+
import { getThorTxData } from './getThorTxData.js';
|
|
5
|
+
const MEMO_PROGRAM_ID = 'MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr';
|
|
6
|
+
export const getSolanaTransactionFees = async (args, swapperName) => {
|
|
7
|
+
const { tradeQuote, stepIndex, from, assertGetSolanaChainAdapter, config } = args;
|
|
8
|
+
if (!isExecutableTradeQuote(tradeQuote))
|
|
9
|
+
throw new Error('Unable to execute a trade rate quote');
|
|
10
|
+
const { memo } = tradeQuote;
|
|
11
|
+
if (!memo)
|
|
12
|
+
throw new Error('Memo is required');
|
|
13
|
+
const step = getExecutableTradeStep(tradeQuote, stepIndex);
|
|
14
|
+
const { sellAmountIncludingProtocolFeesCryptoBaseUnit, sellAsset } = step;
|
|
15
|
+
const { vault } = await getThorTxData({ sellAsset, config, swapperName });
|
|
16
|
+
const adapter = assertGetSolanaChainAdapter(sellAsset.chainId);
|
|
17
|
+
const memoInstruction = new TransactionInstruction({
|
|
18
|
+
keys: [],
|
|
19
|
+
programId: new PublicKey(MEMO_PROGRAM_ID),
|
|
20
|
+
data: Buffer.from(memo, 'utf8'),
|
|
21
|
+
});
|
|
22
|
+
const transferInstruction = SystemProgram.transfer({
|
|
23
|
+
fromPubkey: new PublicKey(from),
|
|
24
|
+
toPubkey: new PublicKey(vault),
|
|
25
|
+
lamports: BigInt(sellAmountIncludingProtocolFeesCryptoBaseUnit),
|
|
26
|
+
});
|
|
27
|
+
const { fast } = await adapter.getFeeData({
|
|
28
|
+
to: vault,
|
|
29
|
+
value: '0',
|
|
30
|
+
chainSpecific: {
|
|
31
|
+
from,
|
|
32
|
+
tokenId: contractAddressOrUndefined(sellAsset.assetId),
|
|
33
|
+
instructions: [memoInstruction, transferInstruction],
|
|
34
|
+
},
|
|
35
|
+
});
|
|
36
|
+
return fast.txFee;
|
|
37
|
+
};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { Asset } from '@shapeshiftoss/types';
|
|
2
|
+
import type { SwapperConfig, SwapperName } from '../../types.js';
|
|
3
|
+
type GetThorTxDataArgs = {
|
|
4
|
+
sellAsset: Asset;
|
|
5
|
+
config: SwapperConfig;
|
|
6
|
+
swapperName: SwapperName;
|
|
7
|
+
};
|
|
8
|
+
type GetThorTxDataReturn = {
|
|
9
|
+
vault: string;
|
|
10
|
+
};
|
|
11
|
+
export declare const getThorTxData: ({ sellAsset, config, swapperName, }: GetThorTxDataArgs) => Promise<GetThorTxDataReturn>;
|
|
12
|
+
export {};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { getInboundAddressDataForChain } from '../getInboundAddressDataForChain.js';
|
|
2
|
+
import { getDaemonUrl } from '../index.js';
|
|
3
|
+
export const getThorTxData = async ({ sellAsset, config, swapperName, }) => {
|
|
4
|
+
const daemonUrl = getDaemonUrl(config, swapperName);
|
|
5
|
+
const res = await getInboundAddressDataForChain(daemonUrl, sellAsset.assetId, false, swapperName);
|
|
6
|
+
if (res.isErr())
|
|
7
|
+
throw res.unwrapErr();
|
|
8
|
+
const { address: vault } = res.unwrap();
|
|
9
|
+
return { vault };
|
|
10
|
+
};
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import type { SolanaSignTx } from '@shapeshiftoss/hdwallet-core';
|
|
2
|
+
import type { GetUnsignedSolanaTransactionArgs, SwapperName } from '../../types.js';
|
|
3
|
+
export declare const getUnsignedSolanaTransaction: (args: GetUnsignedSolanaTransactionArgs, swapperName: SwapperName) => Promise<SolanaSignTx>;
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { contractAddressOrUndefined } from '@shapeshiftoss/utils';
|
|
2
|
+
import { PublicKey, SystemProgram, TransactionInstruction } from '@solana/web3.js';
|
|
3
|
+
import { getExecutableTradeStep, isExecutableTradeQuote } from '../../utils.js';
|
|
4
|
+
import { getThorTxData } from './getThorTxData.js';
|
|
5
|
+
const MEMO_PROGRAM_ID = 'MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr';
|
|
6
|
+
// Each ComputeBudgetProgram instruction (setComputeUnitLimit, setComputeUnitPrice) costs 150 CU.
|
|
7
|
+
// Fee estimation doesn't include these, so we add a fixed buffer to cover them.
|
|
8
|
+
const COMPUTE_BUDGET_INSTRUCTION_OVERHEAD_CU = 300;
|
|
9
|
+
export const getUnsignedSolanaTransaction = async (args, swapperName) => {
|
|
10
|
+
const { tradeQuote, stepIndex, from, assertGetSolanaChainAdapter, config } = args;
|
|
11
|
+
if (!isExecutableTradeQuote(tradeQuote))
|
|
12
|
+
throw new Error('Unable to execute a trade rate quote');
|
|
13
|
+
const { memo } = tradeQuote;
|
|
14
|
+
if (!memo)
|
|
15
|
+
throw new Error('Memo is required');
|
|
16
|
+
const step = getExecutableTradeStep(tradeQuote, stepIndex);
|
|
17
|
+
const { accountNumber, sellAmountIncludingProtocolFeesCryptoBaseUnit, sellAsset } = step;
|
|
18
|
+
const { vault } = await getThorTxData({
|
|
19
|
+
sellAsset,
|
|
20
|
+
config,
|
|
21
|
+
swapperName,
|
|
22
|
+
});
|
|
23
|
+
const adapter = assertGetSolanaChainAdapter(sellAsset.chainId);
|
|
24
|
+
const memoInstruction = new TransactionInstruction({
|
|
25
|
+
keys: [],
|
|
26
|
+
programId: new PublicKey(MEMO_PROGRAM_ID),
|
|
27
|
+
data: Buffer.from(memo, 'utf8'),
|
|
28
|
+
});
|
|
29
|
+
const transferInstruction = SystemProgram.transfer({
|
|
30
|
+
fromPubkey: new PublicKey(from),
|
|
31
|
+
toPubkey: new PublicKey(vault),
|
|
32
|
+
lamports: BigInt(sellAmountIncludingProtocolFeesCryptoBaseUnit),
|
|
33
|
+
});
|
|
34
|
+
const { fast } = await adapter.getFeeData({
|
|
35
|
+
to: vault,
|
|
36
|
+
value: '0',
|
|
37
|
+
chainSpecific: {
|
|
38
|
+
from,
|
|
39
|
+
tokenId: contractAddressOrUndefined(sellAsset.assetId),
|
|
40
|
+
instructions: [memoInstruction, transferInstruction],
|
|
41
|
+
},
|
|
42
|
+
});
|
|
43
|
+
const memoHdwalletInstruction = {
|
|
44
|
+
keys: [],
|
|
45
|
+
programId: MEMO_PROGRAM_ID,
|
|
46
|
+
data: Buffer.from(memo, 'utf8'),
|
|
47
|
+
};
|
|
48
|
+
return adapter.buildSendApiTransaction({
|
|
49
|
+
from,
|
|
50
|
+
to: vault,
|
|
51
|
+
value: sellAmountIncludingProtocolFeesCryptoBaseUnit,
|
|
52
|
+
accountNumber,
|
|
53
|
+
chainSpecific: {
|
|
54
|
+
instructions: [memoHdwalletInstruction],
|
|
55
|
+
computeUnitLimit: String(Number(fast.chainSpecific.computeUnits) + COMPUTE_BUDGET_INSTRUCTION_OVERHEAD_CU),
|
|
56
|
+
computeUnitPrice: fast.chainSpecific.priorityFee,
|
|
57
|
+
tokenId: contractAddressOrUndefined(sellAsset.assetId),
|
|
58
|
+
},
|
|
59
|
+
});
|
|
60
|
+
};
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { tronAssetId } from '@shapeshiftoss/caip';
|
|
2
2
|
import { contractAddressOrUndefined } from '@shapeshiftoss/utils';
|
|
3
|
+
import { TronWeb } from 'tronweb';
|
|
3
4
|
import { getExecutableTradeStep, isExecutableTradeQuote } from '../utils.js';
|
|
4
5
|
export const getUnsignedTronTransaction = ({ stepIndex, tradeQuote, from, assertGetTronChainAdapter, }) => {
|
|
5
6
|
if (!isExecutableTradeQuote(tradeQuote))
|
|
@@ -27,6 +28,21 @@ export const getUnsignedTronTransaction = ({ stepIndex, tradeQuote, from, assert
|
|
|
27
28
|
args,
|
|
28
29
|
});
|
|
29
30
|
}
|
|
31
|
+
if (relayTransactionMetadata?.data) {
|
|
32
|
+
if (!relayTransactionMetadata.to) {
|
|
33
|
+
throw new Error('Missing Relay transaction destination address');
|
|
34
|
+
}
|
|
35
|
+
const to = TronWeb.address.fromHex(relayTransactionMetadata.to);
|
|
36
|
+
const isNativeTron = sellAsset.assetId === tronAssetId;
|
|
37
|
+
const value = isNativeTron ? step.sellAmountIncludingProtocolFeesCryptoBaseUnit : '0';
|
|
38
|
+
return adapter.buildCustomApiTx({
|
|
39
|
+
from,
|
|
40
|
+
to,
|
|
41
|
+
accountNumber,
|
|
42
|
+
data: relayTransactionMetadata.data,
|
|
43
|
+
value,
|
|
44
|
+
});
|
|
45
|
+
}
|
|
30
46
|
const to = relayTransactionMetadata?.to ?? nearIntentsSpecific?.depositAddress;
|
|
31
47
|
if (!to)
|
|
32
48
|
throw new Error('Missing transaction destination address');
|
package/dist/esm/types.d.ts
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
import type { QuoteResponse } from '@jup-ag/api';
|
|
2
1
|
import type { AccountId, AssetId, ChainId, Nominal } from '@shapeshiftoss/caip';
|
|
3
2
|
import type { ChainAdapter, CosmosSdkChainAdapter, EvmChainAdapter, near, SignTx, solana, starknet, sui, ton, tron, UtxoChainAdapter } from '@shapeshiftoss/chain-adapters';
|
|
4
3
|
import type { HDWallet, SolanaSignTx, StarknetSignTx, SuiSignTx } from '@shapeshiftoss/hdwallet-core';
|
|
5
|
-
import type { AccountMetadata, Asset, AssetsByIdPartial, CosmosSdkChainId, EvmChainId, KnownChainIds, NearChainId, OrderQuoteResponse, PartialRecord, TonChainId, TronChainId, UtxoAccountType, UtxoChainId } from '@shapeshiftoss/types';
|
|
4
|
+
import type { AccountMetadata, Asset, AssetsByIdPartial, CosmosSdkChainId, EvmChainId, KnownChainIds, NearChainId, OrderQuoteResponse, PartialRecord, SolanaChainId, TonChainId, TronChainId, UtxoAccountType, UtxoChainId } from '@shapeshiftoss/types';
|
|
6
5
|
import type { TxStatus } from '@shapeshiftoss/unchained-client';
|
|
7
6
|
import type { Result } from '@sniptt/monads';
|
|
8
7
|
import type { TransactionInstruction } from '@solana/web3.js';
|
|
@@ -13,6 +12,7 @@ import type { InterpolationOptions } from 'node-polyglot';
|
|
|
13
12
|
import type { Address, Hex } from 'viem';
|
|
14
13
|
import type { AcrossTransactionMetadata } from './swappers/AcrossSwapper/utils/types.js';
|
|
15
14
|
import type { CowMessageToSign } from './swappers/CowSwapper/types.js';
|
|
15
|
+
import type { DebridgeTransactionMetadata } from './swappers/DebridgeSwapper/utils/types.js';
|
|
16
16
|
import type { RelayTransactionMetadata } from './swappers/RelaySwapper/utils/types.js';
|
|
17
17
|
import type { makeSwapperAxiosServiceMonadic } from './utils.js';
|
|
18
18
|
export type SwapperConfig = {
|
|
@@ -40,7 +40,6 @@ export type SwapperConfig = {
|
|
|
40
40
|
VITE_CHAINFLIP_API_KEY: string;
|
|
41
41
|
VITE_CHAINFLIP_API_URL: string;
|
|
42
42
|
VITE_FEATURE_CHAINFLIP_SWAP_DCA: boolean;
|
|
43
|
-
VITE_JUPITER_API_URL: string;
|
|
44
43
|
VITE_RELAY_API_URL: string;
|
|
45
44
|
VITE_BEBOP_API_KEY: string;
|
|
46
45
|
VITE_NEAR_INTENTS_API_KEY: string;
|
|
@@ -50,6 +49,7 @@ export type SwapperConfig = {
|
|
|
50
49
|
VITE_SUI_NODE_URL: string;
|
|
51
50
|
VITE_ACROSS_API_URL: string;
|
|
52
51
|
VITE_ACROSS_INTEGRATOR_ID: string;
|
|
52
|
+
VITE_DEBRIDGE_API_URL: string;
|
|
53
53
|
};
|
|
54
54
|
export declare enum SwapperName {
|
|
55
55
|
Thorchain = "THORChain",
|
|
@@ -60,7 +60,6 @@ export declare enum SwapperName {
|
|
|
60
60
|
ArbitrumBridge = "Arbitrum Bridge",
|
|
61
61
|
Portals = "Portals",
|
|
62
62
|
Chainflip = "Chainflip",
|
|
63
|
-
Jupiter = "Jupiter",
|
|
64
63
|
Relay = "Relay",
|
|
65
64
|
ButterSwap = "ButterSwap",
|
|
66
65
|
Bebop = "Bebop",
|
|
@@ -69,7 +68,8 @@ export declare enum SwapperName {
|
|
|
69
68
|
Sunio = "Sun.io",
|
|
70
69
|
Avnu = "AVNU",
|
|
71
70
|
Stonfi = "STON.fi",
|
|
72
|
-
Across = "Across"
|
|
71
|
+
Across = "Across",
|
|
72
|
+
Debridge = "deBridge"
|
|
73
73
|
}
|
|
74
74
|
export type SwapSource = SwapperName | `${SwapperName} • ${string}`;
|
|
75
75
|
export type SwapErrorRight = {
|
|
@@ -133,6 +133,7 @@ type CommonTradeInputBase = {
|
|
|
133
133
|
buyAsset: Asset;
|
|
134
134
|
sellAmountIncludingProtocolFeesCryptoBaseUnit: string;
|
|
135
135
|
affiliateBps: string;
|
|
136
|
+
affiliateAddress?: string;
|
|
136
137
|
allowMultiHop: boolean;
|
|
137
138
|
slippageTolerancePercentageDecimal?: string;
|
|
138
139
|
};
|
|
@@ -197,6 +198,15 @@ export type GetTonTradeQuoteInput = CommonTradeInput & {
|
|
|
197
198
|
export type GetTonTradeRateInput = CommonTradeRateInput & {
|
|
198
199
|
chainId: TonChainId;
|
|
199
200
|
};
|
|
201
|
+
export type GetSolanaTradeQuoteInputBase = CommonTradeInput & {
|
|
202
|
+
chainId: SolanaChainId;
|
|
203
|
+
};
|
|
204
|
+
export type GetSolanaTradeQuoteInput = CommonTradeInput & {
|
|
205
|
+
chainId: SolanaChainId;
|
|
206
|
+
};
|
|
207
|
+
export type GetSolanaTradeRateInput = CommonTradeRateInput & {
|
|
208
|
+
chainId: SolanaChainId;
|
|
209
|
+
};
|
|
200
210
|
type GetUtxoTradeQuoteWithWallet = CommonTradeQuoteInput & {
|
|
201
211
|
chainId: UtxoChainId;
|
|
202
212
|
accountType: UtxoAccountType;
|
|
@@ -210,9 +220,9 @@ export type GetUtxoTradeRateInput = CommonTradeRateInput & {
|
|
|
210
220
|
xpub: string | undefined;
|
|
211
221
|
};
|
|
212
222
|
export type GetUtxoTradeQuoteInput = GetUtxoTradeQuoteWithWallet;
|
|
213
|
-
export type GetTradeQuoteInput = GetUtxoTradeQuoteInput | GetEvmTradeQuoteInput | GetCosmosSdkTradeQuoteInput | GetTronTradeQuoteInput | GetNearTradeQuoteInput | GetTonTradeQuoteInput;
|
|
214
|
-
export type GetTradeRateInput = GetEvmTradeRateInput | GetCosmosSdkTradeRateInput | GetUtxoTradeRateInput | GetTronTradeRateInput | GetNearTradeRateInput | GetTonTradeRateInput;
|
|
215
|
-
export type GetTradeQuoteInputWithWallet = GetUtxoTradeQuoteWithWallet | GetEvmTradeQuoteInputBase | GetCosmosSdkTradeQuoteInputBase | GetTronTradeQuoteInputBase | GetNearTradeQuoteInputBase | GetTonTradeQuoteInputBase;
|
|
223
|
+
export type GetTradeQuoteInput = GetUtxoTradeQuoteInput | GetEvmTradeQuoteInput | GetCosmosSdkTradeQuoteInput | GetTronTradeQuoteInput | GetNearTradeQuoteInput | GetTonTradeQuoteInput | GetSolanaTradeQuoteInput;
|
|
224
|
+
export type GetTradeRateInput = GetEvmTradeRateInput | GetCosmosSdkTradeRateInput | GetUtxoTradeRateInput | GetTronTradeRateInput | GetNearTradeRateInput | GetTonTradeRateInput | GetSolanaTradeRateInput;
|
|
225
|
+
export type GetTradeQuoteInputWithWallet = GetUtxoTradeQuoteWithWallet | GetEvmTradeQuoteInputBase | GetCosmosSdkTradeQuoteInputBase | GetTronTradeQuoteInputBase | GetNearTradeQuoteInputBase | GetTonTradeQuoteInputBase | GetSolanaTradeQuoteInputBase;
|
|
216
226
|
export type EvmSwapperDeps = {
|
|
217
227
|
assertGetEvmChainAdapter: (chainId: ChainId) => EvmChainAdapter;
|
|
218
228
|
fetchIsSmartContractAddressQuery: (userAddress: string, chainId: ChainId) => Promise<boolean>;
|
|
@@ -247,6 +257,12 @@ export type SwapperDeps = {
|
|
|
247
257
|
mixPanel: Mixpanel | undefined;
|
|
248
258
|
assertGetChainAdapter: (chainId: ChainId) => ChainAdapter<KnownChainIds>;
|
|
249
259
|
} & EvmSwapperDeps & UtxoSwapperDeps & CosmosSdkSwapperDeps & SolanaSwapperDeps & TronSwapperDeps & SuiSwapperDeps & NearSwapperDeps & StarknetSwapperDeps & TonSwapperDeps;
|
|
260
|
+
export type AffiliateFee = {
|
|
261
|
+
assetId: AssetId;
|
|
262
|
+
amountCryptoBaseUnit: string;
|
|
263
|
+
asset: Asset;
|
|
264
|
+
isEstimate?: boolean;
|
|
265
|
+
};
|
|
250
266
|
export type TradeQuoteStep = {
|
|
251
267
|
buyAmountBeforeFeesCryptoBaseUnit: string;
|
|
252
268
|
buyAmountAfterFeesCryptoBaseUnit: string;
|
|
@@ -286,14 +302,17 @@ export type TradeQuoteStep = {
|
|
|
286
302
|
value: Hex;
|
|
287
303
|
gas?: string;
|
|
288
304
|
};
|
|
289
|
-
|
|
305
|
+
bebopSolanaSerializedTx?: string;
|
|
306
|
+
bebopQuoteId?: string;
|
|
290
307
|
solanaTransactionMetadata?: {
|
|
291
308
|
addressLookupTableAddresses: string[];
|
|
292
309
|
instructions?: TransactionInstruction[];
|
|
310
|
+
/** True when the serialized tx exceeds the 1232-byte Solana limit and needs Jito bundle splitting */
|
|
311
|
+
isOversized?: boolean;
|
|
293
312
|
};
|
|
294
313
|
cowswapQuoteResponse?: OrderQuoteResponse;
|
|
295
314
|
chainflipSpecific?: {
|
|
296
|
-
chainflipSwapId?: number;
|
|
315
|
+
chainflipSwapId?: number | string;
|
|
297
316
|
chainflipDepositAddress?: string;
|
|
298
317
|
chainflipNumberOfChunks?: number;
|
|
299
318
|
chainflipChunkIntervalBlocks?: number;
|
|
@@ -376,6 +395,8 @@ export type TradeQuoteStep = {
|
|
|
376
395
|
params?: unknown;
|
|
377
396
|
};
|
|
378
397
|
acrossTransactionMetadata?: AcrossTransactionMetadata;
|
|
398
|
+
debridgeTransactionMetadata?: DebridgeTransactionMetadata;
|
|
399
|
+
affiliateFee?: AffiliateFee;
|
|
379
400
|
};
|
|
380
401
|
export type TradeRateStep = Omit<TradeQuoteStep, 'accountNumber'> & {
|
|
381
402
|
accountNumber: undefined;
|
|
@@ -421,7 +442,7 @@ export type SwapExecutionMetadata = {
|
|
|
421
442
|
inboundAddress?: string;
|
|
422
443
|
};
|
|
423
444
|
export type SwapperSpecificMetadata = {
|
|
424
|
-
chainflipSwapId: number | undefined;
|
|
445
|
+
chainflipSwapId: number | string | undefined;
|
|
425
446
|
nearIntentsSpecific?: {
|
|
426
447
|
depositAddress: string;
|
|
427
448
|
depositMemo?: string;
|
|
@@ -430,6 +451,7 @@ export type SwapperSpecificMetadata = {
|
|
|
430
451
|
};
|
|
431
452
|
relayTransactionMetadata: RelayTransactionMetadata | undefined;
|
|
432
453
|
acrossTransactionMetadata: AcrossTransactionMetadata | undefined;
|
|
454
|
+
debridgeTransactionMetadata: DebridgeTransactionMetadata | undefined;
|
|
433
455
|
relayerExplorerTxLink: string | undefined;
|
|
434
456
|
relayerTxHash: string | undefined;
|
|
435
457
|
stepIndex: SupportedTradeQuoteStepIndex;
|
|
@@ -522,6 +544,15 @@ export type CosmosSdkTransactionExecutionProps = {
|
|
|
522
544
|
};
|
|
523
545
|
export type SolanaTransactionExecutionProps = {
|
|
524
546
|
signAndBroadcastTransaction: (txToSign: SolanaSignTx) => Promise<string>;
|
|
547
|
+
/** Sign-only callback for Jito bundle flow (sign without broadcasting) */
|
|
548
|
+
signTransaction?: (txToSign: SolanaSignTx) => Promise<string>;
|
|
549
|
+
};
|
|
550
|
+
export type SolanaMessageToSign = {
|
|
551
|
+
serializedTx: string;
|
|
552
|
+
quoteId: string;
|
|
553
|
+
};
|
|
554
|
+
export type SolanaMessageExecutionProps = {
|
|
555
|
+
signSerializedTransaction: (serializedTx: string) => Promise<string[]>;
|
|
525
556
|
};
|
|
526
557
|
export type TronTransactionExecutionProps = {
|
|
527
558
|
signAndBroadcastTransaction: (txToSign: tron.TronSignTx) => Promise<string>;
|
|
@@ -585,6 +616,7 @@ type TonAccountMetadata = {
|
|
|
585
616
|
};
|
|
586
617
|
export type GetUnsignedTonTransactionArgs = CommonGetUnsignedTransactionArgs & TonAccountMetadata & TonSwapperDeps;
|
|
587
618
|
export type GetUnsignedEvmMessageArgs = CommonGetUnsignedTransactionArgs & EvmAccountMetadata & Omit<EvmSwapperDeps, 'fetchIsSmartContractAddressQuery'>;
|
|
619
|
+
export type GetUnsignedSolanaMessageArgs = CommonGetUnsignedTransactionArgs;
|
|
588
620
|
export type GetUnsignedUtxoTransactionArgs = CommonGetUnsignedTransactionArgs & UtxoAccountMetadata & UtxoSwapperDeps;
|
|
589
621
|
export type GetUnsignedCosmosSdkTransactionArgs = CommonGetUnsignedTransactionArgs & CosmosSdkAccountMetadata & CosmosSdkSwapperDeps;
|
|
590
622
|
export type UnsignedTx = Nominal<Record<string, any>, 'UnsignedTx'>;
|
|
@@ -610,6 +642,7 @@ export type TradeStatus = {
|
|
|
610
642
|
relayerExplorerTxLink?: string | undefined;
|
|
611
643
|
message: string | [string, InterpolationOptions] | undefined;
|
|
612
644
|
actualBuyAmountCryptoBaseUnit?: string;
|
|
645
|
+
chainflipSwapId?: number | string;
|
|
613
646
|
};
|
|
614
647
|
export type TradeQuoteResult = Result<TradeQuote[], SwapErrorRight>;
|
|
615
648
|
export type TradeRateResult = Result<TradeRate[], SwapErrorRight>;
|
|
@@ -621,6 +654,7 @@ export type Swapper = {
|
|
|
621
654
|
executeUtxoTransaction?: (txToSign: SignTx<UtxoChainId>, callbacks: UtxoTransactionExecutionProps) => Promise<string>;
|
|
622
655
|
executeCosmosSdkTransaction?: (txToSign: SignTx<CosmosSdkChainId>, callbacks: CosmosSdkTransactionExecutionProps) => Promise<string>;
|
|
623
656
|
executeSolanaTransaction?: (txToSign: SolanaSignTx, callbacks: SolanaTransactionExecutionProps) => Promise<string>;
|
|
657
|
+
executeSolanaMessage?: (messageData: SolanaMessageToSign, callbacks: SolanaMessageExecutionProps, config: SwapperConfig) => Promise<string>;
|
|
624
658
|
executeTronTransaction?: (txToSign: tron.TronSignTx, callbacks: TronTransactionExecutionProps) => Promise<string>;
|
|
625
659
|
executeSuiTransaction?: (txToSign: SuiSignTx, callbacks: SuiTransactionExecutionProps) => Promise<string>;
|
|
626
660
|
executeNearTransaction?: (txToSign: near.NearSignTx, callbacks: NearTransactionExecutionProps) => Promise<string>;
|
|
@@ -637,6 +671,7 @@ export type SwapperApi = {
|
|
|
637
671
|
getUnsignedUtxoTransaction?: (input: GetUnsignedUtxoTransactionArgs) => Promise<SignTx<UtxoChainId>>;
|
|
638
672
|
getUnsignedCosmosSdkTransaction?: (input: GetUnsignedCosmosSdkTransactionArgs) => Promise<SignTx<CosmosSdkChainId>>;
|
|
639
673
|
getUnsignedSolanaTransaction?: (input: GetUnsignedSolanaTransactionArgs) => Promise<SolanaSignTx>;
|
|
674
|
+
getUnsignedSolanaMessage?: (input: GetUnsignedSolanaMessageArgs) => Promise<SolanaMessageToSign>;
|
|
640
675
|
getUnsignedTronTransaction?: (input: GetUnsignedTronTransactionArgs) => Promise<tron.TronSignTx>;
|
|
641
676
|
getUnsignedSuiTransaction?: (input: GetUnsignedSuiTransactionArgs) => Promise<SuiSignTx>;
|
|
642
677
|
getUnsignedNearTransaction?: (input: GetUnsignedNearTransactionArgs) => Promise<near.NearSignTx>;
|
|
@@ -673,6 +708,7 @@ export type EvmMessageExecutionInput = CommonTradeExecutionInput & EvmMessageExe
|
|
|
673
708
|
export type UtxoTransactionExecutionInput = CommonTradeExecutionInput & UtxoTransactionExecutionProps & UtxoAccountMetadata;
|
|
674
709
|
export type CosmosSdkTransactionExecutionInput = CommonTradeExecutionInput & CosmosSdkTransactionExecutionProps & CosmosSdkAccountMetadata;
|
|
675
710
|
export type SolanaTransactionExecutionInput = CommonTradeExecutionInput & SolanaTransactionExecutionProps & SolanaAccountMetadata;
|
|
711
|
+
export type SolanaMessageExecutionInput = CommonTradeExecutionInput & SolanaMessageExecutionProps;
|
|
676
712
|
export type TronTransactionExecutionInput = CommonTradeExecutionInput & TronTransactionExecutionProps & TronAccountMetadata;
|
|
677
713
|
export type SuiTransactionExecutionInput = CommonTradeExecutionInput & SuiTransactionExecutionProps & SuiAccountMetadata;
|
|
678
714
|
export type NearTransactionExecutionInput = CommonTradeExecutionInput & NearTransactionExecutionProps & NearAccountMetadata;
|
package/dist/esm/types.js
CHANGED
|
@@ -8,7 +8,6 @@ export var SwapperName;
|
|
|
8
8
|
SwapperName["ArbitrumBridge"] = "Arbitrum Bridge";
|
|
9
9
|
SwapperName["Portals"] = "Portals";
|
|
10
10
|
SwapperName["Chainflip"] = "Chainflip";
|
|
11
|
-
SwapperName["Jupiter"] = "Jupiter";
|
|
12
11
|
SwapperName["Relay"] = "Relay";
|
|
13
12
|
SwapperName["ButterSwap"] = "ButterSwap";
|
|
14
13
|
SwapperName["Bebop"] = "Bebop";
|
|
@@ -18,6 +17,7 @@ export var SwapperName;
|
|
|
18
17
|
SwapperName["Avnu"] = "AVNU";
|
|
19
18
|
SwapperName["Stonfi"] = "STON.fi";
|
|
20
19
|
SwapperName["Across"] = "Across";
|
|
20
|
+
SwapperName["Debridge"] = "deBridge";
|
|
21
21
|
})(SwapperName || (SwapperName = {}));
|
|
22
22
|
export var TradeQuoteError;
|
|
23
23
|
(function (TradeQuoteError) {
|
package/dist/esm/utils.d.ts
CHANGED
|
@@ -75,3 +75,6 @@ export declare const checkStarknetSwapStatus: ({ txHash, assertGetStarknetChainA
|
|
|
75
75
|
txHash: string;
|
|
76
76
|
assertGetStarknetChainAdapter: (chainId: ChainId) => starknet.ChainAdapter;
|
|
77
77
|
}) => Promise<TradeStatus>;
|
|
78
|
+
export declare class SolanaLogsError extends Error {
|
|
79
|
+
constructor(name: string);
|
|
80
|
+
}
|
package/dist/esm/utils.js
CHANGED
|
@@ -169,8 +169,7 @@ export const checkEvmSwapStatus = async ({ txHash, chainId, address, assertGetEv
|
|
|
169
169
|
message: undefined,
|
|
170
170
|
};
|
|
171
171
|
}
|
|
172
|
-
catch
|
|
173
|
-
console.error(e);
|
|
172
|
+
catch {
|
|
174
173
|
return createDefaultStatusResponse(txHash);
|
|
175
174
|
}
|
|
176
175
|
};
|
|
@@ -287,3 +286,9 @@ export const checkStarknetSwapStatus = async ({ txHash, assertGetStarknetChainAd
|
|
|
287
286
|
return createDefaultStatusResponse(txHash);
|
|
288
287
|
}
|
|
289
288
|
};
|
|
289
|
+
export class SolanaLogsError extends Error {
|
|
290
|
+
constructor(name) {
|
|
291
|
+
super(name);
|
|
292
|
+
this.name = name;
|
|
293
|
+
}
|
|
294
|
+
}
|
package/package.json
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@shapeshiftoss/swapper",
|
|
3
|
-
"version": "17.
|
|
4
|
-
"packageManager": "yarn@3.5.0",
|
|
3
|
+
"version": "17.7.0",
|
|
5
4
|
"repository": "https://github.com/shapeshift/web",
|
|
6
5
|
"license": "MIT",
|
|
7
6
|
"type": "module",
|
|
@@ -21,30 +20,16 @@
|
|
|
21
20
|
"publishConfig": {
|
|
22
21
|
"access": "public"
|
|
23
22
|
},
|
|
24
|
-
"scripts": {
|
|
25
|
-
"build": "yarn clean && yarn run -T tsc --build && yarn postbuild",
|
|
26
|
-
"clean": "rm -rf dist",
|
|
27
|
-
"dev": "yarn run -T tsc --build --watch",
|
|
28
|
-
"postbuild": "yarn postbuild:esm && yarn postbuild:cjs",
|
|
29
|
-
"postbuild:esm": "yarn run -T tsc-esm-fix --target=dist/esm --ext=.js",
|
|
30
|
-
"postbuild:cjs": "echo '{\"type\": \"commonjs\"}' > dist/cjs/package.json"
|
|
31
|
-
},
|
|
32
23
|
"dependencies": {
|
|
33
24
|
"@arbitrum/sdk": "^4.0.1",
|
|
34
25
|
"@avnu/avnu-sdk": "^4.0.1",
|
|
26
|
+
"@cetusprotocol/aggregator-sdk": "^1.4.2",
|
|
27
|
+
"@cetusprotocol/cetus-sui-clmm-sdk": "5.4.0",
|
|
35
28
|
"@coral-xyz/anchor": "0.29.0",
|
|
36
29
|
"@cowprotocol/app-data": "^2.3.0",
|
|
37
30
|
"@defuse-protocol/one-click-sdk-typescript": "^0.1.1-0.2",
|
|
38
|
-
"@jup-ag/api": "^6.0.30",
|
|
39
31
|
"@mysten/sui": "^1.45.2",
|
|
40
32
|
"@shapeshiftoss/bitcoinjs-lib": "7.0.0-shapeshift.0",
|
|
41
|
-
"@shapeshiftoss/caip": "^8.16.7",
|
|
42
|
-
"@shapeshiftoss/chain-adapters": "^11.3.9",
|
|
43
|
-
"@shapeshiftoss/contracts": "^1.0.6",
|
|
44
|
-
"@shapeshiftoss/hdwallet-core": "^1.62.41",
|
|
45
|
-
"@shapeshiftoss/types": "^8.6.7",
|
|
46
|
-
"@shapeshiftoss/unchained-client": "^10.14.10",
|
|
47
|
-
"@shapeshiftoss/utils": "^1.0.6",
|
|
48
33
|
"@sniptt/monads": "^0.5.10",
|
|
49
34
|
"@solana/web3.js": "1.98.0",
|
|
50
35
|
"@ston-fi/omniston-sdk": "^0.7.8",
|
|
@@ -63,7 +48,14 @@
|
|
|
63
48
|
"qs": "^6.14.2",
|
|
64
49
|
"retry-axios": "^2.6.0",
|
|
65
50
|
"uuid": "^9.0.0",
|
|
66
|
-
"viem": "2.43.5"
|
|
51
|
+
"viem": "2.43.5",
|
|
52
|
+
"@shapeshiftoss/types": "^8.6.7",
|
|
53
|
+
"@shapeshiftoss/caip": "^8.16.7",
|
|
54
|
+
"@shapeshiftoss/utils": "^1.0.5",
|
|
55
|
+
"@shapeshiftoss/unchained-client": "^10.14.10",
|
|
56
|
+
"@shapeshiftoss/chain-adapters": "^11.3.9",
|
|
57
|
+
"@shapeshiftoss/hdwallet-core": "^1.62.41",
|
|
58
|
+
"@shapeshiftoss/contracts": "^1.0.5-coderabbit-fix.2"
|
|
67
59
|
},
|
|
68
60
|
"devDependencies": {
|
|
69
61
|
"@types/lodash": "^4.14.178",
|
|
@@ -71,5 +63,13 @@
|
|
|
71
63
|
"@types/node-polyglot": "^2.4.2",
|
|
72
64
|
"@types/qs": "^6.9.18",
|
|
73
65
|
"@types/uuid": "^9.0.5"
|
|
66
|
+
},
|
|
67
|
+
"scripts": {
|
|
68
|
+
"build": "rm -rf dist && pnpm exec tsc --build && pnpm run postbuild",
|
|
69
|
+
"clean": "rm -rf dist node_modules",
|
|
70
|
+
"dev": "pnpm exec tsc --build --watch",
|
|
71
|
+
"postbuild": "pnpm run postbuild:esm && pnpm run postbuild:cjs",
|
|
72
|
+
"postbuild:esm": "pnpm exec tsc-esm-fix --target=dist/esm --ext=.js",
|
|
73
|
+
"postbuild:cjs": "echo '{\"type\": \"commonjs\"}' > dist/cjs/package.json"
|
|
74
74
|
}
|
|
75
75
|
}
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.jupiterSwapper = void 0;
|
|
4
|
-
const __1 = require("../..");
|
|
5
|
-
const errorPatterns_1 = require("./errorPatterns");
|
|
6
|
-
exports.jupiterSwapper = {
|
|
7
|
-
executeSolanaTransaction: async (txToSign, callbacks) => {
|
|
8
|
-
try {
|
|
9
|
-
const txid = await (0, __1.executeSolanaTransaction)(txToSign, callbacks);
|
|
10
|
-
return txid;
|
|
11
|
-
}
|
|
12
|
-
catch (e) {
|
|
13
|
-
if (e instanceof Error) {
|
|
14
|
-
const errorMessage = e.message;
|
|
15
|
-
const swapperErrorType = Object.keys(errorPatterns_1.JUPITER_ERRORS).reduce((acc, errorPattern) => {
|
|
16
|
-
if (errorMessage.includes(errorPattern)) {
|
|
17
|
-
acc = errorPatterns_1.JUPITER_ERRORS[errorPattern];
|
|
18
|
-
}
|
|
19
|
-
return acc;
|
|
20
|
-
}, undefined);
|
|
21
|
-
if (swapperErrorType)
|
|
22
|
-
throw new errorPatterns_1.SolanaLogsError(swapperErrorType);
|
|
23
|
-
}
|
|
24
|
-
throw e;
|
|
25
|
-
}
|
|
26
|
-
},
|
|
27
|
-
};
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.jupiterApi = void 0;
|
|
4
|
-
const getSolanaTransactionFees_1 = require("../../solana-utils/getSolanaTransactionFees");
|
|
5
|
-
const getUnsignedSolanaTransaction_1 = require("../../solana-utils/getUnsignedSolanaTransaction");
|
|
6
|
-
const utils_1 = require("../../utils");
|
|
7
|
-
const getTradeQuote_1 = require("./swapperApi/getTradeQuote");
|
|
8
|
-
const getTradeRate_1 = require("./swapperApi/getTradeRate");
|
|
9
|
-
exports.jupiterApi = {
|
|
10
|
-
getTradeRate: getTradeRate_1.getTradeRate,
|
|
11
|
-
getTradeQuote: getTradeQuote_1.getTradeQuote,
|
|
12
|
-
getUnsignedSolanaTransaction: getUnsignedSolanaTransaction_1.getUnsignedSolanaTransaction,
|
|
13
|
-
getSolanaTransactionFees: getSolanaTransactionFees_1.getSolanaTransactionFees,
|
|
14
|
-
checkTradeStatus: utils_1.checkSolanaSwapStatus,
|
|
15
|
-
};
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
export declare class SolanaLogsError extends Error {
|
|
2
|
-
constructor(name: string);
|
|
3
|
-
}
|
|
4
|
-
export declare enum JUPITER_ERROR_PATTERNS {
|
|
5
|
-
SLIPPAGE_TOLERANCE_EXCEEDED = "SlippageToleranceExceeded",
|
|
6
|
-
JUPITER_SLIPPAGE_ERROR_CODE = "0x1771",
|
|
7
|
-
UNDER_MINIMUM_AMOUNT = "RequireGteViolated",
|
|
8
|
-
CONSUMED_MORE_FEES = "exceeded CUs meter"
|
|
9
|
-
}
|
|
10
|
-
export declare enum JUPITER_ERROR_NAME {
|
|
11
|
-
SLIPPAGE_TOLERANCE_EXCEEDED = "SlippageToleranceExceeded",
|
|
12
|
-
UNDER_MINIMUM_AMOUNT = "UnderMinimumAmount",
|
|
13
|
-
CONSUMED_MORE_FEES = "ConsumedMoreFees"
|
|
14
|
-
}
|
|
15
|
-
export declare const JUPITER_ERRORS: Record<JUPITER_ERROR_PATTERNS | string, string>;
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.JUPITER_ERRORS = exports.JUPITER_ERROR_NAME = exports.JUPITER_ERROR_PATTERNS = exports.SolanaLogsError = void 0;
|
|
4
|
-
class SolanaLogsError extends Error {
|
|
5
|
-
constructor(name) {
|
|
6
|
-
super(name);
|
|
7
|
-
this.name = name;
|
|
8
|
-
}
|
|
9
|
-
}
|
|
10
|
-
exports.SolanaLogsError = SolanaLogsError;
|
|
11
|
-
var JUPITER_ERROR_PATTERNS;
|
|
12
|
-
(function (JUPITER_ERROR_PATTERNS) {
|
|
13
|
-
JUPITER_ERROR_PATTERNS["SLIPPAGE_TOLERANCE_EXCEEDED"] = "SlippageToleranceExceeded";
|
|
14
|
-
JUPITER_ERROR_PATTERNS["JUPITER_SLIPPAGE_ERROR_CODE"] = "0x1771";
|
|
15
|
-
JUPITER_ERROR_PATTERNS["UNDER_MINIMUM_AMOUNT"] = "RequireGteViolated";
|
|
16
|
-
JUPITER_ERROR_PATTERNS["CONSUMED_MORE_FEES"] = "exceeded CUs meter";
|
|
17
|
-
})(JUPITER_ERROR_PATTERNS || (exports.JUPITER_ERROR_PATTERNS = JUPITER_ERROR_PATTERNS = {}));
|
|
18
|
-
var JUPITER_ERROR_NAME;
|
|
19
|
-
(function (JUPITER_ERROR_NAME) {
|
|
20
|
-
JUPITER_ERROR_NAME["SLIPPAGE_TOLERANCE_EXCEEDED"] = "SlippageToleranceExceeded";
|
|
21
|
-
JUPITER_ERROR_NAME["UNDER_MINIMUM_AMOUNT"] = "UnderMinimumAmount";
|
|
22
|
-
JUPITER_ERROR_NAME["CONSUMED_MORE_FEES"] = "ConsumedMoreFees";
|
|
23
|
-
})(JUPITER_ERROR_NAME || (exports.JUPITER_ERROR_NAME = JUPITER_ERROR_NAME = {}));
|
|
24
|
-
exports.JUPITER_ERRORS = {
|
|
25
|
-
[JUPITER_ERROR_PATTERNS.SLIPPAGE_TOLERANCE_EXCEEDED]: JUPITER_ERROR_NAME.SLIPPAGE_TOLERANCE_EXCEEDED,
|
|
26
|
-
[JUPITER_ERROR_PATTERNS.JUPITER_SLIPPAGE_ERROR_CODE]: JUPITER_ERROR_NAME.SLIPPAGE_TOLERANCE_EXCEEDED,
|
|
27
|
-
[JUPITER_ERROR_PATTERNS.UNDER_MINIMUM_AMOUNT]: JUPITER_ERROR_NAME.UNDER_MINIMUM_AMOUNT,
|
|
28
|
-
[JUPITER_ERROR_PATTERNS.CONSUMED_MORE_FEES]: JUPITER_ERROR_NAME.CONSUMED_MORE_FEES,
|
|
29
|
-
};
|