@shapeshiftoss/swapper 17.6.9 → 17.6.11
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 +72 -43
- 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 -0
- package/dist/cjs/index.js +1 -0
- package/dist/cjs/swappers/AcrossSwapper/AcrossSwapper.d.ts +2 -0
- package/dist/cjs/swappers/AcrossSwapper/AcrossSwapper.js +8 -0
- package/dist/cjs/swappers/AcrossSwapper/constant.d.ts +9 -0
- package/dist/cjs/swappers/AcrossSwapper/constant.js +50 -0
- package/dist/cjs/swappers/AcrossSwapper/endpoints.d.ts +2 -0
- package/dist/cjs/swappers/AcrossSwapper/endpoints.js +113 -0
- package/dist/cjs/swappers/AcrossSwapper/getTradeQuote/getTradeQuote.d.ts +3 -0
- package/dist/cjs/swappers/AcrossSwapper/getTradeQuote/getTradeQuote.js +31 -0
- package/dist/cjs/swappers/AcrossSwapper/getTradeRate/getTradeRate.d.ts +3 -0
- package/dist/cjs/swappers/AcrossSwapper/getTradeRate/getTradeRate.js +19 -0
- package/dist/cjs/swappers/AcrossSwapper/index.d.ts +1 -0
- package/dist/cjs/swappers/AcrossSwapper/index.js +5 -0
- package/dist/cjs/swappers/AcrossSwapper/utils/acrossService.d.ts +5 -0
- package/dist/cjs/swappers/AcrossSwapper/utils/acrossService.js +17 -0
- package/dist/cjs/swappers/AcrossSwapper/utils/fetchAcrossTrade.d.ts +19 -0
- package/dist/cjs/swappers/AcrossSwapper/utils/fetchAcrossTrade.js +27 -0
- package/dist/cjs/swappers/AcrossSwapper/utils/getTrade.d.ts +11 -0
- package/dist/cjs/swappers/AcrossSwapper/utils/getTrade.js +349 -0
- package/dist/cjs/swappers/AcrossSwapper/utils/types.d.ts +177 -0
- package/dist/cjs/swappers/AcrossSwapper/utils/types.js +17 -0
- package/dist/cjs/swappers/AvnuSwapper/endpoints.js +42 -14
- package/dist/cjs/swappers/AvnuSwapper/swapperApi/getTradeQuote.js +19 -5
- package/dist/cjs/swappers/AvnuSwapper/swapperApi/getTradeRate.js +17 -4
- 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 +14 -2
- package/dist/cjs/swappers/BebopSwapper/utils/helpers/helpers.js +47 -1
- package/dist/cjs/swappers/ButterSwap/ButterSwap.js +1 -0
- package/dist/cjs/swappers/ButterSwap/endpoints.js +56 -0
- package/dist/cjs/swappers/ButterSwap/swapperApi/checkTradeStatus.js +19 -0
- package/dist/cjs/swappers/ButterSwap/swapperApi/getTradeQuote.js +44 -15
- package/dist/cjs/swappers/ButterSwap/swapperApi/getTradeQuote.test.js +1 -0
- package/dist/cjs/swappers/ButterSwap/swapperApi/getTradeRate.js +33 -16
- package/dist/cjs/swappers/ButterSwap/swapperApi/getTradeRate.test.js +2 -0
- package/dist/cjs/swappers/ButterSwap/types.d.ts +1 -0
- package/dist/cjs/swappers/ButterSwap/utils/helpers.js +1 -0
- package/dist/cjs/swappers/ButterSwap/xhr.d.ts +2 -2
- package/dist/cjs/swappers/ButterSwap/xhr.js +7 -2
- package/dist/cjs/swappers/CetusSwapper/endpoints.js +3 -8
- package/dist/cjs/swappers/CetusSwapper/swapperApi/getTradeQuote.js +11 -1
- package/dist/cjs/swappers/CetusSwapper/swapperApi/getTradeRate.js +11 -1
- 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/utils/getQuoteOrRate.js +28 -5
- package/dist/cjs/swappers/ChainflipSwapper/utils/helpers.js +8 -2
- package/dist/cjs/swappers/CowSwapper/CowSwapper.js +1 -1
- package/dist/cjs/swappers/CowSwapper/getCowSwapTradeQuote/getCowSwapTradeQuote.js +11 -1
- package/dist/cjs/swappers/CowSwapper/getCowSwapTradeQuote/getCowSwapTradeQuote.test.js +5 -5
- package/dist/cjs/swappers/CowSwapper/getCowSwapTradeRate/getCowSwapTradeRate.js +10 -1
- package/dist/cjs/swappers/CowSwapper/utils/helpers/helpers.js +8 -2
- 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/DebridgeSwapper/endpoints.d.ts +2 -0
- package/dist/cjs/swappers/DebridgeSwapper/endpoints.js +217 -0
- package/dist/cjs/swappers/DebridgeSwapper/getTradeQuote/getTradeQuote.d.ts +3 -0
- package/dist/cjs/swappers/DebridgeSwapper/getTradeQuote/getTradeQuote.js +31 -0
- package/dist/cjs/swappers/DebridgeSwapper/getTradeRate/getTradeRate.d.ts +3 -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/DebridgeSwapper/utils/debridgeService.d.ts +5 -0
- 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 +369 -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/JupiterSwapper/swapperApi/getTradeQuote.js +32 -0
- package/dist/cjs/swappers/JupiterSwapper/swapperApi/getTradeRate.js +9 -0
- package/dist/cjs/swappers/MayachainSwapper/utils/poolAssetHelpers/poolAssetHelpers.js +1 -1
- package/dist/cjs/swappers/NearIntentsSwapper/NearIntentsSwapper.js +1 -0
- package/dist/cjs/swappers/NearIntentsSwapper/endpoints.js +31 -0
- package/dist/cjs/swappers/NearIntentsSwapper/swapperApi/getTradeQuote.js +48 -1
- package/dist/cjs/swappers/NearIntentsSwapper/swapperApi/getTradeRate.js +73 -1
- package/dist/cjs/swappers/NearIntentsSwapper/types.d.ts +1 -1
- package/dist/cjs/swappers/NearIntentsSwapper/types.js +6 -0
- package/dist/cjs/swappers/NearIntentsSwapper/utils/helpers/helpers.js +23 -4
- package/dist/cjs/swappers/PortalsSwapper/getPortalsTradeQuote/getPortalsTradeQuote.js +10 -0
- package/dist/cjs/swappers/PortalsSwapper/getPortalsTradeRate/getPortalsTradeRate.js +8 -3
- package/dist/cjs/swappers/RelaySwapper/constant.js +27 -1
- package/dist/cjs/swappers/RelaySwapper/utils/getRelayDefaultUserAddress.d.ts +1 -1
- package/dist/cjs/swappers/RelaySwapper/utils/getTrade.js +57 -7
- package/dist/cjs/swappers/RelaySwapper/utils/relayTokenToAssetId.js +110 -0
- package/dist/cjs/swappers/RelaySwapper/utils/types.d.ts +15 -0
- package/dist/cjs/swappers/StonfiSwapper/StonfiSwapper.d.ts +2 -0
- package/dist/cjs/swappers/StonfiSwapper/StonfiSwapper.js +8 -0
- package/dist/cjs/swappers/StonfiSwapper/endpoints.d.ts +2 -0
- package/dist/cjs/swappers/StonfiSwapper/endpoints.js +227 -0
- package/dist/cjs/swappers/StonfiSwapper/index.d.ts +4 -0
- package/dist/cjs/swappers/StonfiSwapper/index.js +25 -0
- package/dist/cjs/swappers/StonfiSwapper/swapperApi/getTradeQuote.d.ts +2 -0
- package/dist/cjs/swappers/StonfiSwapper/swapperApi/getTradeQuote.js +129 -0
- package/dist/cjs/swappers/StonfiSwapper/swapperApi/getTradeRate.d.ts +2 -0
- package/dist/cjs/swappers/StonfiSwapper/swapperApi/getTradeRate.js +115 -0
- package/dist/cjs/swappers/StonfiSwapper/types.d.ts +60 -0
- package/dist/cjs/swappers/StonfiSwapper/types.js +5 -0
- package/dist/cjs/swappers/StonfiSwapper/utils/constants.d.ts +5 -0
- package/dist/cjs/swappers/StonfiSwapper/utils/constants.js +8 -0
- package/dist/cjs/swappers/StonfiSwapper/utils/helpers.d.ts +11 -0
- package/dist/cjs/swappers/StonfiSwapper/utils/helpers.js +135 -0
- package/dist/cjs/swappers/StonfiSwapper/utils/omnistonManager.d.ts +5 -0
- package/dist/cjs/swappers/StonfiSwapper/utils/omnistonManager.js +20 -0
- package/dist/cjs/swappers/SunioSwapper/endpoints.js +1 -1
- package/dist/cjs/swappers/SunioSwapper/utils/getQuoteOrRate.js +14 -3
- 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/ZrxSwapper/utils/helpers/helpers.d.ts +1 -1
- package/dist/cjs/swappers/utils/affiliateFee.d.ts +17 -0
- package/dist/cjs/swappers/utils/affiliateFee.js +43 -0
- package/dist/cjs/swappers/utils/filterBuyAssetsBySellAssetId/filterBuyAssetsBySellAssetId.js +2 -5
- package/dist/cjs/swappers/utils/helpers/helpers.js +3 -0
- package/dist/cjs/thorchain-utils/getCallDataFromQuote.d.ts +1 -1
- package/dist/cjs/thorchain-utils/getL1RateOrQuote.js +87 -9
- package/dist/cjs/thorchain-utils/getQuote.js +8 -2
- 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/thorchain-utils/solana/index.js +19 -0
- package/dist/cjs/tron-utils/getUnsignedTronTransaction.js +22 -2
- package/dist/cjs/types.d.ts +118 -8
- package/dist/cjs/types.js +3 -0
- package/dist/cjs/utils.d.ts +4 -3
- package/dist/cjs/utils.js +35 -7
- package/dist/esm/.tsbuildinfo +1 -1
- package/dist/esm/constants.js +42 -13
- 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 -0
- package/dist/esm/index.js +1 -0
- package/dist/esm/swappers/AcrossSwapper/AcrossSwapper.d.ts +2 -0
- package/dist/esm/swappers/AcrossSwapper/AcrossSwapper.js +5 -0
- package/dist/esm/swappers/AcrossSwapper/constant.d.ts +9 -0
- package/dist/esm/swappers/AcrossSwapper/constant.js +44 -0
- package/dist/esm/swappers/AcrossSwapper/endpoints.d.ts +2 -0
- package/dist/esm/swappers/AcrossSwapper/endpoints.js +107 -0
- package/dist/esm/swappers/AcrossSwapper/getTradeQuote/getTradeQuote.d.ts +3 -0
- package/dist/esm/swappers/AcrossSwapper/getTradeQuote/getTradeQuote.js +27 -0
- package/dist/esm/swappers/AcrossSwapper/getTradeRate/getTradeRate.d.ts +3 -0
- package/dist/esm/swappers/AcrossSwapper/getTradeRate/getTradeRate.js +15 -0
- package/dist/esm/swappers/AcrossSwapper/index.d.ts +1 -0
- package/dist/esm/swappers/AcrossSwapper/index.js +1 -0
- package/dist/esm/swappers/AcrossSwapper/utils/acrossService.d.ts +5 -0
- package/dist/esm/swappers/AcrossSwapper/utils/acrossService.js +11 -0
- package/dist/esm/swappers/AcrossSwapper/utils/fetchAcrossTrade.d.ts +19 -0
- package/dist/esm/swappers/AcrossSwapper/utils/fetchAcrossTrade.js +23 -0
- package/dist/esm/swappers/AcrossSwapper/utils/getTrade.d.ts +11 -0
- package/dist/esm/swappers/AcrossSwapper/utils/getTrade.js +342 -0
- package/dist/esm/swappers/AcrossSwapper/utils/types.d.ts +177 -0
- package/dist/esm/swappers/AcrossSwapper/utils/types.js +13 -0
- package/dist/esm/swappers/AvnuSwapper/endpoints.js +43 -15
- package/dist/esm/swappers/AvnuSwapper/swapperApi/getTradeQuote.js +19 -5
- package/dist/esm/swappers/AvnuSwapper/swapperApi/getTradeRate.js +17 -4
- 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 +14 -2
- package/dist/esm/swappers/BebopSwapper/utils/helpers/helpers.js +44 -1
- package/dist/esm/swappers/ButterSwap/ButterSwap.js +2 -1
- package/dist/esm/swappers/ButterSwap/endpoints.js +56 -0
- package/dist/esm/swappers/ButterSwap/swapperApi/checkTradeStatus.js +20 -1
- package/dist/esm/swappers/ButterSwap/swapperApi/getTradeQuote.js +46 -17
- package/dist/esm/swappers/ButterSwap/swapperApi/getTradeQuote.test.js +1 -0
- package/dist/esm/swappers/ButterSwap/swapperApi/getTradeRate.js +35 -18
- package/dist/esm/swappers/ButterSwap/swapperApi/getTradeRate.test.js +2 -0
- package/dist/esm/swappers/ButterSwap/types.d.ts +1 -0
- package/dist/esm/swappers/ButterSwap/utils/helpers.js +1 -0
- package/dist/esm/swappers/ButterSwap/xhr.d.ts +2 -2
- package/dist/esm/swappers/ButterSwap/xhr.js +8 -3
- package/dist/esm/swappers/CetusSwapper/endpoints.js +3 -8
- package/dist/esm/swappers/CetusSwapper/swapperApi/getTradeQuote.js +11 -1
- package/dist/esm/swappers/CetusSwapper/swapperApi/getTradeRate.js +11 -1
- 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/utils/getQuoteOrRate.js +29 -6
- package/dist/esm/swappers/ChainflipSwapper/utils/helpers.js +9 -3
- package/dist/esm/swappers/CowSwapper/CowSwapper.js +1 -1
- package/dist/esm/swappers/CowSwapper/getCowSwapTradeQuote/getCowSwapTradeQuote.js +11 -1
- package/dist/esm/swappers/CowSwapper/getCowSwapTradeQuote/getCowSwapTradeQuote.test.js +5 -5
- package/dist/esm/swappers/CowSwapper/getCowSwapTradeRate/getCowSwapTradeRate.js +10 -1
- package/dist/esm/swappers/CowSwapper/utils/helpers/helpers.js +9 -3
- package/dist/esm/swappers/DebridgeSwapper/DebridgeSwapper.d.ts +2 -0
- 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/DebridgeSwapper/endpoints.d.ts +2 -0
- package/dist/esm/swappers/DebridgeSwapper/endpoints.js +211 -0
- package/dist/esm/swappers/DebridgeSwapper/getTradeQuote/getTradeQuote.d.ts +3 -0
- package/dist/esm/swappers/DebridgeSwapper/getTradeQuote/getTradeQuote.js +27 -0
- package/dist/esm/swappers/DebridgeSwapper/getTradeRate/getTradeRate.d.ts +3 -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/DebridgeSwapper/utils/debridgeService.d.ts +5 -0
- 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 +362 -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/JupiterSwapper/swapperApi/getTradeQuote.js +33 -1
- package/dist/esm/swappers/JupiterSwapper/swapperApi/getTradeRate.js +9 -0
- package/dist/esm/swappers/MayachainSwapper/utils/poolAssetHelpers/poolAssetHelpers.js +1 -1
- package/dist/esm/swappers/NearIntentsSwapper/NearIntentsSwapper.js +2 -1
- package/dist/esm/swappers/NearIntentsSwapper/endpoints.js +31 -0
- package/dist/esm/swappers/NearIntentsSwapper/swapperApi/getTradeQuote.js +50 -3
- package/dist/esm/swappers/NearIntentsSwapper/swapperApi/getTradeRate.js +75 -3
- package/dist/esm/swappers/NearIntentsSwapper/types.d.ts +1 -1
- package/dist/esm/swappers/NearIntentsSwapper/types.js +6 -0
- package/dist/esm/swappers/NearIntentsSwapper/utils/helpers/helpers.js +23 -4
- package/dist/esm/swappers/PortalsSwapper/getPortalsTradeQuote/getPortalsTradeQuote.js +10 -0
- package/dist/esm/swappers/PortalsSwapper/getPortalsTradeRate/getPortalsTradeRate.js +8 -3
- package/dist/esm/swappers/RelaySwapper/constant.js +29 -3
- package/dist/esm/swappers/RelaySwapper/utils/getRelayDefaultUserAddress.d.ts +1 -1
- package/dist/esm/swappers/RelaySwapper/utils/getTrade.js +60 -10
- package/dist/esm/swappers/RelaySwapper/utils/relayTokenToAssetId.js +110 -0
- package/dist/esm/swappers/RelaySwapper/utils/types.d.ts +15 -0
- package/dist/esm/swappers/StonfiSwapper/StonfiSwapper.d.ts +2 -0
- package/dist/esm/swappers/StonfiSwapper/StonfiSwapper.js +5 -0
- package/dist/esm/swappers/StonfiSwapper/endpoints.d.ts +2 -0
- package/dist/esm/swappers/StonfiSwapper/endpoints.js +224 -0
- package/dist/esm/swappers/StonfiSwapper/index.d.ts +4 -0
- package/dist/esm/swappers/StonfiSwapper/index.js +4 -0
- package/dist/esm/swappers/StonfiSwapper/swapperApi/getTradeQuote.d.ts +2 -0
- package/dist/esm/swappers/StonfiSwapper/swapperApi/getTradeQuote.js +125 -0
- package/dist/esm/swappers/StonfiSwapper/swapperApi/getTradeRate.d.ts +2 -0
- package/dist/esm/swappers/StonfiSwapper/swapperApi/getTradeRate.js +111 -0
- package/dist/esm/swappers/StonfiSwapper/types.d.ts +60 -0
- package/dist/esm/swappers/StonfiSwapper/types.js +2 -0
- package/dist/esm/swappers/StonfiSwapper/utils/constants.d.ts +5 -0
- package/dist/esm/swappers/StonfiSwapper/utils/constants.js +5 -0
- package/dist/esm/swappers/StonfiSwapper/utils/helpers.d.ts +11 -0
- package/dist/esm/swappers/StonfiSwapper/utils/helpers.js +124 -0
- package/dist/esm/swappers/StonfiSwapper/utils/omnistonManager.d.ts +5 -0
- package/dist/esm/swappers/StonfiSwapper/utils/omnistonManager.js +17 -0
- package/dist/esm/swappers/SunioSwapper/endpoints.js +1 -1
- package/dist/esm/swappers/SunioSwapper/utils/getQuoteOrRate.js +15 -4
- 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/ZrxSwapper/utils/helpers/helpers.d.ts +1 -1
- package/dist/esm/swappers/utils/affiliateFee.d.ts +17 -0
- package/dist/esm/swappers/utils/affiliateFee.js +39 -0
- package/dist/esm/swappers/utils/filterBuyAssetsBySellAssetId/filterBuyAssetsBySellAssetId.js +2 -5
- package/dist/esm/swappers/utils/helpers/helpers.js +4 -1
- package/dist/esm/thorchain-utils/getCallDataFromQuote.d.ts +1 -1
- package/dist/esm/thorchain-utils/getL1RateOrQuote.js +88 -10
- package/dist/esm/thorchain-utils/getQuote.js +9 -3
- 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 +22 -2
- package/dist/esm/types.d.ts +118 -8
- package/dist/esm/types.js +3 -0
- package/dist/esm/utils.d.ts +4 -3
- package/dist/esm/utils.js +34 -7
- package/package.json +27 -24
|
@@ -1,22 +1,26 @@
|
|
|
1
1
|
import { CHAIN_NAMESPACE, fromAssetId } from '@shapeshiftoss/caip';
|
|
2
2
|
import * as adapters from '@shapeshiftoss/chain-adapters';
|
|
3
|
-
import { assertUnreachable, bn, bnOrZero, contractAddressOrUndefined, convertDecimalPercentageToBasisPoints, convertPrecision,
|
|
3
|
+
import { assertUnreachable, BigAmount, bn, bnOrZero, contractAddressOrUndefined, convertDecimalPercentageToBasisPoints, convertPrecision, isFulfilled, isRejected, } from '@shapeshiftoss/utils';
|
|
4
4
|
import { Err, Ok } from '@sniptt/monads';
|
|
5
|
+
import { PublicKey, SystemProgram, TransactionInstruction } from '@solana/web3.js';
|
|
5
6
|
import { TronWeb } from 'tronweb';
|
|
6
7
|
import { v4 as uuid } from 'uuid';
|
|
7
8
|
import { getDefaultSlippageDecimalPercentageForSwapper } from '../index.js';
|
|
9
|
+
import { buildAffiliateFee } from '../swappers/utils/affiliateFee.js';
|
|
8
10
|
import { TradeQuoteError } from '../types.js';
|
|
9
11
|
import { getInputOutputRate, makeSwapErrorRight } from '../utils.js';
|
|
10
12
|
import * as evm from './evm/index.js';
|
|
11
13
|
import { getLimitWithManualSlippage } from './getLimitWithManualSlippage/getLimitWithManualSlippage.js';
|
|
12
14
|
import { getQuote } from './getQuote.js';
|
|
13
15
|
import { addLimitToMemo, assertAndProcessMemo, getAffiliate, getNativePrecision, getSwapSource, } from './index.js';
|
|
16
|
+
import * as solana from './solana/index.js';
|
|
14
17
|
import * as tron from './tron/index.js';
|
|
15
18
|
import * as utxo from './utxo/index.js';
|
|
16
19
|
const SAFE_GAS_LIMIT = '100000'; // depositWithExpiry()
|
|
20
|
+
const SOLANA_MEMO_PROGRAM_ID = 'MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr';
|
|
17
21
|
export const getL1RateOrQuote = async (input, deps, streamingInterval, tradeType, swapperName) => {
|
|
18
22
|
const { sellAsset, buyAsset, sellAmountIncludingProtocolFeesCryptoBaseUnit: sellAmountCryptoBaseUnit, accountNumber, receiveAddress, affiliateBps: requestedAffiliateBps, } = input;
|
|
19
|
-
const { config, assertGetEvmChainAdapter, assertGetUtxoChainAdapter, assertGetCosmosSdkChainAdapter, } = deps;
|
|
23
|
+
const { config, assertGetEvmChainAdapter, assertGetUtxoChainAdapter, assertGetCosmosSdkChainAdapter, assertGetSolanaChainAdapter, } = deps;
|
|
20
24
|
// "NativePrecision" is intended to indicate the base unit precision of the asset
|
|
21
25
|
// for the corresponding swapper network (THORChain or MAYAChain)
|
|
22
26
|
// (CACAO = 10, everything else = 8)
|
|
@@ -75,7 +79,13 @@ export const getL1RateOrQuote = async (input, deps, streamingInterval, tradeType
|
|
|
75
79
|
: '0';
|
|
76
80
|
const getRouteBuyAmountBeforeFeesCryptoBaseUnit = (quote) => {
|
|
77
81
|
const buyAmountBeforeFeesCryptoThorPrecision = bn(quote.expected_amount_out).plus(quote.fees.total);
|
|
78
|
-
return
|
|
82
|
+
return BigAmount.fromPrecision({
|
|
83
|
+
value: BigAmount.fromBaseUnit({
|
|
84
|
+
value: buyAmountBeforeFeesCryptoThorPrecision,
|
|
85
|
+
precision: buyAssetNativePrecision,
|
|
86
|
+
}).toPrecision(),
|
|
87
|
+
precision: buyAsset.precision,
|
|
88
|
+
}).toBaseUnit();
|
|
79
89
|
};
|
|
80
90
|
const getProtocolFees = (quote) => {
|
|
81
91
|
// Fees consist of liquidity, outbound, and affiliate fees
|
|
@@ -161,6 +171,14 @@ export const getL1RateOrQuote = async (input, deps, streamingInterval, tradeType
|
|
|
161
171
|
accountNumber,
|
|
162
172
|
allowanceContract,
|
|
163
173
|
feeData,
|
|
174
|
+
affiliateFee: buildAffiliateFee({
|
|
175
|
+
strategy: 'buy_asset',
|
|
176
|
+
affiliateBps: route.affiliateBps,
|
|
177
|
+
sellAsset,
|
|
178
|
+
buyAsset,
|
|
179
|
+
sellAmountCryptoBaseUnit,
|
|
180
|
+
buyAmountCryptoBaseUnit: buyAmountAfterFeesCryptoBaseUnit,
|
|
181
|
+
}),
|
|
164
182
|
thorchainSpecific: {
|
|
165
183
|
maxStreamingQuantity: route.quote.max_streaming_quantity,
|
|
166
184
|
},
|
|
@@ -215,7 +233,11 @@ export const getL1RateOrQuote = async (input, deps, streamingInterval, tradeType
|
|
|
215
233
|
const sellAdapter = assertGetUtxoChainAdapter(sellAsset.chainId);
|
|
216
234
|
const maybeRoutes = await Promise.allSettled(perRouteValues.map(async (route) => {
|
|
217
235
|
const memo = getMemo(route);
|
|
218
|
-
const { vault } = await utxo.getThorTxData({
|
|
236
|
+
const { vault } = await utxo.getThorTxData({
|
|
237
|
+
sellAsset,
|
|
238
|
+
config,
|
|
239
|
+
swapperName,
|
|
240
|
+
});
|
|
219
241
|
const feeData = await (async () => {
|
|
220
242
|
const protocolFees = getProtocolFees(route.quote);
|
|
221
243
|
// This is a rate without a wallet connected, so we can't get fees
|
|
@@ -269,10 +291,51 @@ export const getL1RateOrQuote = async (input, deps, streamingInterval, tradeType
|
|
|
269
291
|
}));
|
|
270
292
|
}
|
|
271
293
|
case CHAIN_NAMESPACE.Solana: {
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
294
|
+
const adapter = assertGetSolanaChainAdapter(sellAsset.chainId);
|
|
295
|
+
const sendAddress = input.sendAddress;
|
|
296
|
+
const maybeRoutes = await Promise.allSettled(perRouteValues.map(async (route) => {
|
|
297
|
+
const memo = getMemo(route);
|
|
298
|
+
const protocolFees = getProtocolFees(route.quote);
|
|
299
|
+
const feeData = await (async () => {
|
|
300
|
+
if (!sendAddress)
|
|
301
|
+
return { networkFeeCryptoBaseUnit: undefined, protocolFees };
|
|
302
|
+
const { vault } = await solana.getThorTxData({ sellAsset, config, swapperName });
|
|
303
|
+
const memoInstruction = new TransactionInstruction({
|
|
304
|
+
keys: [],
|
|
305
|
+
programId: new PublicKey(SOLANA_MEMO_PROGRAM_ID),
|
|
306
|
+
data: Buffer.from(memo, 'utf8'),
|
|
307
|
+
});
|
|
308
|
+
const transferInstruction = SystemProgram.transfer({
|
|
309
|
+
fromPubkey: new PublicKey(sendAddress),
|
|
310
|
+
toPubkey: new PublicKey(vault),
|
|
311
|
+
lamports: BigInt(sellAmountCryptoBaseUnit),
|
|
312
|
+
});
|
|
313
|
+
const { fast } = await adapter.getFeeData({
|
|
314
|
+
to: vault,
|
|
315
|
+
value: '0',
|
|
316
|
+
chainSpecific: {
|
|
317
|
+
from: sendAddress,
|
|
318
|
+
tokenId: contractAddressOrUndefined(sellAsset.assetId),
|
|
319
|
+
instructions: [memoInstruction, transferInstruction],
|
|
320
|
+
},
|
|
321
|
+
});
|
|
322
|
+
return { networkFeeCryptoBaseUnit: fast.txFee, protocolFees };
|
|
323
|
+
})();
|
|
324
|
+
return makeThorTradeRateOrQuote({
|
|
325
|
+
route,
|
|
326
|
+
allowanceContract: '0x0',
|
|
327
|
+
memo,
|
|
328
|
+
feeData,
|
|
329
|
+
});
|
|
275
330
|
}));
|
|
331
|
+
const routes = maybeRoutes.filter(isFulfilled).map(r => r.value);
|
|
332
|
+
if (!routes.length)
|
|
333
|
+
return Err(makeSwapErrorRight({
|
|
334
|
+
message: 'Unable to create any routes',
|
|
335
|
+
code: TradeQuoteError.UnsupportedTradePair,
|
|
336
|
+
cause: maybeRoutes.filter(isRejected).map(r => r.reason),
|
|
337
|
+
}));
|
|
338
|
+
return Ok(routes);
|
|
276
339
|
}
|
|
277
340
|
case CHAIN_NAMESPACE.Tron: {
|
|
278
341
|
const maybeRoutes = await Promise.allSettled(perRouteValues.map(async (route) => {
|
|
@@ -284,9 +347,15 @@ export const getL1RateOrQuote = async (input, deps, streamingInterval, tradeType
|
|
|
284
347
|
const { sellAsset, sellAmountIncludingProtocolFeesCryptoBaseUnit } = input;
|
|
285
348
|
const contractAddress = contractAddressOrUndefined(sellAsset.assetId);
|
|
286
349
|
// Get vault address
|
|
287
|
-
const { vault } = await tron.getThorTxData({
|
|
350
|
+
const { vault } = await tron.getThorTxData({
|
|
351
|
+
sellAsset,
|
|
352
|
+
config,
|
|
353
|
+
swapperName,
|
|
354
|
+
});
|
|
288
355
|
// Estimate fees using the receive address for accurate energy calculation
|
|
289
|
-
const tronWeb = new TronWeb({
|
|
356
|
+
const tronWeb = new TronWeb({
|
|
357
|
+
fullHost: deps.config.VITE_TRON_NODE_URL,
|
|
358
|
+
});
|
|
290
359
|
const params = await tronWeb.trx.getChainParameters();
|
|
291
360
|
const bandwidthPrice = params.find(p => p.key === 'getTransactionFee')?.value ?? 1000;
|
|
292
361
|
const energyPrice = params.find(p => p.key === 'getEnergyFee')?.value ?? 100;
|
|
@@ -296,7 +365,10 @@ export const getL1RateOrQuote = async (input, deps, streamingInterval, tradeType
|
|
|
296
365
|
try {
|
|
297
366
|
const result = await tronWeb.transactionBuilder.triggerConstantContract(contractAddress, 'transfer(address,uint256)', {}, [
|
|
298
367
|
{ type: 'address', value: vault },
|
|
299
|
-
{
|
|
368
|
+
{
|
|
369
|
+
type: 'uint256',
|
|
370
|
+
value: sellAmountIncludingProtocolFeesCryptoBaseUnit,
|
|
371
|
+
},
|
|
300
372
|
], input.receiveAddress);
|
|
301
373
|
const energyUsed = result.energy_used ?? 65000;
|
|
302
374
|
const energyFee = energyUsed * energyPrice * 1.5; // 1.5x safety margin
|
|
@@ -361,6 +433,12 @@ export const getL1RateOrQuote = async (input, deps, streamingInterval, tradeType
|
|
|
361
433
|
code: TradeQuoteError.UnsupportedTradePair,
|
|
362
434
|
}));
|
|
363
435
|
}
|
|
436
|
+
case CHAIN_NAMESPACE.Ton: {
|
|
437
|
+
return Err(makeSwapErrorRight({
|
|
438
|
+
message: 'TON is not supported',
|
|
439
|
+
code: TradeQuoteError.UnsupportedTradePair,
|
|
440
|
+
}));
|
|
441
|
+
}
|
|
364
442
|
default:
|
|
365
443
|
return assertUnreachable(chainNamespace);
|
|
366
444
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { bchAssetId } from '@shapeshiftoss/caip';
|
|
2
|
-
import {
|
|
2
|
+
import { BigAmount, bn } from '@shapeshiftoss/utils';
|
|
3
3
|
import { Err, Ok } from '@sniptt/monads';
|
|
4
4
|
import qs from 'qs';
|
|
5
5
|
import { TradeQuoteError } from '../types.js';
|
|
@@ -19,9 +19,15 @@ export const getQuote = async (input, deps) => {
|
|
|
19
19
|
});
|
|
20
20
|
const buyPoolId = getPoolAssetId({ assetId: buyAssetId, swapperName });
|
|
21
21
|
const sellPoolId = getPoolAssetId({ assetId: sellAsset.assetId, swapperName });
|
|
22
|
-
const sellAmountCryptoPrecision = fromBaseUnit(
|
|
22
|
+
const sellAmountCryptoPrecision = BigAmount.fromBaseUnit({
|
|
23
|
+
value: sellAmountCryptoBaseUnit,
|
|
24
|
+
precision: sellAsset.precision,
|
|
25
|
+
}).toPrecision();
|
|
23
26
|
// All pool amounts are native precision regardless of token precision
|
|
24
|
-
const sellAmountCryptoThorBaseUnit = bn(
|
|
27
|
+
const sellAmountCryptoThorBaseUnit = bn(BigAmount.fromPrecision({
|
|
28
|
+
value: sellAmountCryptoPrecision,
|
|
29
|
+
precision: getNativePrecision(sellAsset.assetId, swapperName),
|
|
30
|
+
}).toBaseUnit());
|
|
25
31
|
// The swap endpoint expects BCH receiveAddress's to be stripped of the "bitcoincash:" prefix
|
|
26
32
|
const parsedReceiveAddress = receiveAddress && buyAssetId === bchAssetId
|
|
27
33
|
? receiveAddress.replace('bitcoincash:', '')
|
|
@@ -13,6 +13,7 @@ export * from './getL1RateOrQuote.js';
|
|
|
13
13
|
export * from './getPoolDetails.js';
|
|
14
14
|
export * as cosmossdk from './cosmossdk/index.js';
|
|
15
15
|
export * as evm from './evm/index.js';
|
|
16
|
+
export * as solana from './solana/index.js';
|
|
16
17
|
export * as tron from './tron/index.js';
|
|
17
18
|
export * as utxo from './utxo/index.js';
|
|
18
19
|
export declare const getChainIdBySwapper: (swapperName: SwapperName) => import("@shapeshiftoss/caip").ChainId;
|
|
@@ -21,7 +22,7 @@ export declare const isThorTradeQuote: (quote: TradeQuote | undefined) => quote
|
|
|
21
22
|
export declare const getDaemonUrl: (config: SwapperConfig, swapperName: SwapperName) => string;
|
|
22
23
|
export declare const getMidgardUrl: (config: SwapperConfig, swapperName: SwapperName) => string;
|
|
23
24
|
export declare const isNativeAsset: (assetId: AssetId, swapperName: SwapperName) => boolean;
|
|
24
|
-
export declare const getNativePrecision: (assetId: AssetId, swapperName: SwapperName) =>
|
|
25
|
+
export declare const getNativePrecision: (assetId: AssetId, swapperName: SwapperName) => 8 | 10;
|
|
25
26
|
export declare const getNativeFee: (swapperName: SwapperName) => "2000000" | "2000000000";
|
|
26
27
|
export declare const getAffiliate: (swapperName: SwapperName) => "ss" | "ssmaya";
|
|
27
28
|
export declare const getPoolAssetId: ({ assetId, swapperName, }: {
|
|
@@ -14,6 +14,7 @@ export * from './getL1RateOrQuote.js';
|
|
|
14
14
|
export * from './getPoolDetails.js';
|
|
15
15
|
export * as cosmossdk from './cosmossdk/index.js';
|
|
16
16
|
export * as evm from './evm/index.js';
|
|
17
|
+
export * as solana from './solana/index.js';
|
|
17
18
|
export * as tron from './tron/index.js';
|
|
18
19
|
export * as utxo from './utxo/index.js';
|
|
19
20
|
export const getChainIdBySwapper = (swapperName) => {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const MEMO_PROGRAM_ID = "MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr";
|
|
@@ -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,16 +1,36 @@
|
|
|
1
|
+
import { tronAssetId } from '@shapeshiftoss/caip';
|
|
1
2
|
import { contractAddressOrUndefined } from '@shapeshiftoss/utils';
|
|
2
3
|
import { getExecutableTradeStep, isExecutableTradeQuote } from '../utils.js';
|
|
3
4
|
export const getUnsignedTronTransaction = ({ stepIndex, tradeQuote, from, assertGetTronChainAdapter, }) => {
|
|
4
5
|
if (!isExecutableTradeQuote(tradeQuote))
|
|
5
6
|
throw new Error('Unable to execute a trade rate quote');
|
|
6
7
|
const step = getExecutableTradeStep(tradeQuote, stepIndex);
|
|
7
|
-
const { accountNumber, sellAsset, relayTransactionMetadata, nearIntentsSpecific } = step;
|
|
8
|
+
const { accountNumber, sellAsset, relayTransactionMetadata, nearIntentsSpecific, butterSwapTransactionMetadata, } = step;
|
|
8
9
|
const adapter = assertGetTronChainAdapter(sellAsset.chainId);
|
|
10
|
+
if (butterSwapTransactionMetadata) {
|
|
11
|
+
const { to, data, method, args, value: butterValue } = butterSwapTransactionMetadata;
|
|
12
|
+
if (!to)
|
|
13
|
+
throw new Error('Missing Butter swap contract address');
|
|
14
|
+
if (!data)
|
|
15
|
+
throw new Error('Missing Butter swap transaction data');
|
|
16
|
+
// Use Butter's value field which includes swap fees for same-chain swaps
|
|
17
|
+
// For native TRX sells, also include the sell amount
|
|
18
|
+
const isNativeTron = sellAsset.assetId === tronAssetId;
|
|
19
|
+
const value = isNativeTron ? step.sellAmountIncludingProtocolFeesCryptoBaseUnit : butterValue;
|
|
20
|
+
return adapter.buildCustomApiTx({
|
|
21
|
+
from,
|
|
22
|
+
to,
|
|
23
|
+
accountNumber,
|
|
24
|
+
data,
|
|
25
|
+
value,
|
|
26
|
+
method,
|
|
27
|
+
args,
|
|
28
|
+
});
|
|
29
|
+
}
|
|
9
30
|
const to = relayTransactionMetadata?.to ?? nearIntentsSpecific?.depositAddress;
|
|
10
31
|
if (!to)
|
|
11
32
|
throw new Error('Missing transaction destination address');
|
|
12
33
|
const value = step.sellAmountIncludingProtocolFeesCryptoBaseUnit;
|
|
13
|
-
// Extract contract address for TRC20 tokens
|
|
14
34
|
const contractAddress = contractAddressOrUndefined(sellAsset.assetId);
|
|
15
35
|
return adapter.buildSendApiTransaction({
|
|
16
36
|
to,
|