@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
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { KnownChainIds } from '@shapeshiftoss/types';
|
|
2
|
+
import type { Result } from '@sniptt/monads';
|
|
3
|
+
import type { Quote } from '@ston-fi/omniston-sdk';
|
|
4
|
+
import type { SwapErrorRight } from '../../types.js';
|
|
5
|
+
export type StonfiSupportedChainId = typeof KnownChainIds.TonMainnet;
|
|
6
|
+
export declare const stonfiSupportedChainIds: readonly [KnownChainIds.TonMainnet];
|
|
7
|
+
export type OmnistonAssetAddress = {
|
|
8
|
+
blockchain: number;
|
|
9
|
+
address: string;
|
|
10
|
+
};
|
|
11
|
+
export type TonAssetValidationResult = {
|
|
12
|
+
isValid: true;
|
|
13
|
+
bidAssetAddress: OmnistonAssetAddress;
|
|
14
|
+
askAssetAddress: OmnistonAssetAddress;
|
|
15
|
+
} | {
|
|
16
|
+
isValid: false;
|
|
17
|
+
error: Result<never, SwapErrorRight>;
|
|
18
|
+
};
|
|
19
|
+
export type QuoteResult = {
|
|
20
|
+
type: 'success';
|
|
21
|
+
quote: Quote;
|
|
22
|
+
} | {
|
|
23
|
+
type: 'noQuote';
|
|
24
|
+
} | {
|
|
25
|
+
type: 'timeout';
|
|
26
|
+
} | {
|
|
27
|
+
type: 'error';
|
|
28
|
+
error: unknown;
|
|
29
|
+
};
|
|
30
|
+
export type StonfiQuote = {
|
|
31
|
+
quoteId: string;
|
|
32
|
+
resolverId: string;
|
|
33
|
+
resolverName: string;
|
|
34
|
+
bidAssetAddress: string;
|
|
35
|
+
askAssetAddress: string;
|
|
36
|
+
bidUnits: string;
|
|
37
|
+
askUnits: string;
|
|
38
|
+
gasBudget: string;
|
|
39
|
+
estimatedGasConsumption: string;
|
|
40
|
+
tradeStartDeadline: number;
|
|
41
|
+
};
|
|
42
|
+
export type StonfiTradeSpecific = {
|
|
43
|
+
quoteId: string;
|
|
44
|
+
resolverId: string;
|
|
45
|
+
resolverName: string;
|
|
46
|
+
tradeStartDeadline: number;
|
|
47
|
+
gasBudget: string;
|
|
48
|
+
bidAssetAddress: OmnistonAssetAddress;
|
|
49
|
+
askAssetAddress: OmnistonAssetAddress;
|
|
50
|
+
bidUnits: string;
|
|
51
|
+
askUnits: string;
|
|
52
|
+
referrerAddress?: OmnistonAssetAddress;
|
|
53
|
+
referrerFeeAsset?: OmnistonAssetAddress;
|
|
54
|
+
referrerFeeUnits: string;
|
|
55
|
+
protocolFeeAsset?: OmnistonAssetAddress;
|
|
56
|
+
protocolFeeUnits: string;
|
|
57
|
+
quoteTimestamp: number;
|
|
58
|
+
estimatedGasConsumption: string;
|
|
59
|
+
params?: unknown;
|
|
60
|
+
};
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { KnownChainIds } from '@shapeshiftoss/types';
|
|
2
|
+
export declare const STONFI_SUPPORTED_CHAIN_IDS: readonly [KnownChainIds.TonMainnet];
|
|
3
|
+
export declare const STONFI_WEBSOCKET_URL = "wss://omni-ws.ston.fi";
|
|
4
|
+
export declare const STONFI_DEFAULT_SLIPPAGE_BPS = 100;
|
|
5
|
+
export declare const STONFI_QUOTE_TIMEOUT_MS = 30000;
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { KnownChainIds } from '@shapeshiftoss/types';
|
|
2
|
+
export const STONFI_SUPPORTED_CHAIN_IDS = [KnownChainIds.TonMainnet];
|
|
3
|
+
export const STONFI_WEBSOCKET_URL = 'wss://omni-ws.ston.fi';
|
|
4
|
+
export const STONFI_DEFAULT_SLIPPAGE_BPS = 100;
|
|
5
|
+
export const STONFI_QUOTE_TIMEOUT_MS = 30000;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { Asset } from '@shapeshiftoss/types';
|
|
2
|
+
import type { Omniston, QuoteRequest } from '@ston-fi/omniston-sdk';
|
|
3
|
+
import type { OmnistonAssetAddress, QuoteResult, TonAssetValidationResult } from '../types.js';
|
|
4
|
+
export declare const isTonAsset: (asset: Asset) => boolean;
|
|
5
|
+
export declare const assetToOmnistonAddress: (asset: Asset) => OmnistonAssetAddress | null;
|
|
6
|
+
export declare const validateTonAssets: (sellAsset: Asset, buyAsset: Asset) => TonAssetValidationResult;
|
|
7
|
+
export declare const calculateRate: (buyAmountCryptoBaseUnit: string, sellAmountCryptoBaseUnit: string, buyAssetPrecision: number, sellAssetPrecision: number) => string;
|
|
8
|
+
export declare const slippageDecimalToBps: (slippageTolerancePercentageDecimal: string | undefined, defaultSlippageBps: number) => number;
|
|
9
|
+
export declare const tonAddressToOmnistonAddress: (address: string) => OmnistonAssetAddress;
|
|
10
|
+
export declare const affiliateBpsToNumber: (affiliateBps: string | undefined) => number;
|
|
11
|
+
export declare const waitForQuote: (omniston: Omniston, request: QuoteRequest, timeoutMs: number) => Promise<QuoteResult>;
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
import { fromAssetId } from '@shapeshiftoss/caip';
|
|
2
|
+
import { KnownChainIds } from '@shapeshiftoss/types';
|
|
3
|
+
import { bn, convertPrecision } from '@shapeshiftoss/utils';
|
|
4
|
+
import { Err } from '@sniptt/monads';
|
|
5
|
+
import { Blockchain } from '@ston-fi/omniston-sdk';
|
|
6
|
+
import { TradeQuoteError } from '../../../types.js';
|
|
7
|
+
import { makeSwapErrorRight } from '../../../utils.js';
|
|
8
|
+
export const isTonAsset = (asset) => {
|
|
9
|
+
return asset.chainId === KnownChainIds.TonMainnet;
|
|
10
|
+
};
|
|
11
|
+
export const assetToOmnistonAddress = (asset) => {
|
|
12
|
+
if (!isTonAsset(asset))
|
|
13
|
+
return null;
|
|
14
|
+
const { assetNamespace, assetReference } = fromAssetId(asset.assetId);
|
|
15
|
+
if (assetNamespace === 'slip44') {
|
|
16
|
+
return {
|
|
17
|
+
blockchain: Blockchain.TON,
|
|
18
|
+
address: 'EQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAM9c',
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
if (assetNamespace === 'jetton') {
|
|
22
|
+
return { blockchain: Blockchain.TON, address: assetReference };
|
|
23
|
+
}
|
|
24
|
+
return null;
|
|
25
|
+
};
|
|
26
|
+
export const validateTonAssets = (sellAsset, buyAsset) => {
|
|
27
|
+
if (sellAsset.chainId !== KnownChainIds.TonMainnet) {
|
|
28
|
+
return {
|
|
29
|
+
isValid: false,
|
|
30
|
+
error: Err(makeSwapErrorRight({
|
|
31
|
+
message: `[Stonfi] Unsupported sell asset chain: ${sellAsset.chainId}`,
|
|
32
|
+
code: TradeQuoteError.UnsupportedChain,
|
|
33
|
+
})),
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
if (buyAsset.chainId !== KnownChainIds.TonMainnet) {
|
|
37
|
+
return {
|
|
38
|
+
isValid: false,
|
|
39
|
+
error: Err(makeSwapErrorRight({
|
|
40
|
+
message: `[Stonfi] Cross-chain swaps not supported`,
|
|
41
|
+
code: TradeQuoteError.CrossChainNotSupported,
|
|
42
|
+
})),
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
const bidAssetAddress = assetToOmnistonAddress(sellAsset);
|
|
46
|
+
const askAssetAddress = assetToOmnistonAddress(buyAsset);
|
|
47
|
+
if (!bidAssetAddress || !askAssetAddress) {
|
|
48
|
+
return {
|
|
49
|
+
isValid: false,
|
|
50
|
+
error: Err(makeSwapErrorRight({
|
|
51
|
+
message: `[Stonfi] Unable to convert assets to Omniston addresses`,
|
|
52
|
+
code: TradeQuoteError.UnsupportedTradePair,
|
|
53
|
+
})),
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
return {
|
|
57
|
+
isValid: true,
|
|
58
|
+
bidAssetAddress,
|
|
59
|
+
askAssetAddress,
|
|
60
|
+
};
|
|
61
|
+
};
|
|
62
|
+
export const calculateRate = (buyAmountCryptoBaseUnit, sellAmountCryptoBaseUnit, buyAssetPrecision, sellAssetPrecision) => {
|
|
63
|
+
if (bn(buyAmountCryptoBaseUnit).gt(0) && bn(sellAmountCryptoBaseUnit).gt(0)) {
|
|
64
|
+
return convertPrecision({
|
|
65
|
+
value: buyAmountCryptoBaseUnit,
|
|
66
|
+
inputExponent: buyAssetPrecision,
|
|
67
|
+
outputExponent: sellAssetPrecision,
|
|
68
|
+
})
|
|
69
|
+
.dividedBy(bn(sellAmountCryptoBaseUnit))
|
|
70
|
+
.toFixed();
|
|
71
|
+
}
|
|
72
|
+
return '0';
|
|
73
|
+
};
|
|
74
|
+
export const slippageDecimalToBps = (slippageTolerancePercentageDecimal, defaultSlippageBps) => {
|
|
75
|
+
if (!slippageTolerancePercentageDecimal) {
|
|
76
|
+
return defaultSlippageBps;
|
|
77
|
+
}
|
|
78
|
+
const parsed = parseFloat(slippageTolerancePercentageDecimal);
|
|
79
|
+
if (Number.isNaN(parsed) || !Number.isFinite(parsed) || parsed < 0) {
|
|
80
|
+
return defaultSlippageBps;
|
|
81
|
+
}
|
|
82
|
+
return Math.round(parsed * 10000);
|
|
83
|
+
};
|
|
84
|
+
export const tonAddressToOmnistonAddress = (address) => {
|
|
85
|
+
return {
|
|
86
|
+
blockchain: Blockchain.TON,
|
|
87
|
+
address,
|
|
88
|
+
};
|
|
89
|
+
};
|
|
90
|
+
export const affiliateBpsToNumber = (affiliateBps) => {
|
|
91
|
+
if (!affiliateBps)
|
|
92
|
+
return 0;
|
|
93
|
+
const parsed = parseInt(affiliateBps, 10);
|
|
94
|
+
if (Number.isNaN(parsed) || !Number.isFinite(parsed) || parsed < 0)
|
|
95
|
+
return 0;
|
|
96
|
+
return parsed;
|
|
97
|
+
};
|
|
98
|
+
export const waitForQuote = (omniston, request, timeoutMs) => {
|
|
99
|
+
return new Promise(resolve => {
|
|
100
|
+
const timer = setTimeout(() => {
|
|
101
|
+
subscription.unsubscribe();
|
|
102
|
+
resolve({ type: 'timeout' });
|
|
103
|
+
}, timeoutMs);
|
|
104
|
+
const subscription = omniston.requestForQuote(request).subscribe({
|
|
105
|
+
next: (event) => {
|
|
106
|
+
if (event.type === 'quoteUpdated' && event.quote) {
|
|
107
|
+
clearTimeout(timer);
|
|
108
|
+
subscription.unsubscribe();
|
|
109
|
+
resolve({ type: 'success', quote: event.quote });
|
|
110
|
+
}
|
|
111
|
+
else if (event.type === 'noQuote') {
|
|
112
|
+
clearTimeout(timer);
|
|
113
|
+
subscription.unsubscribe();
|
|
114
|
+
resolve({ type: 'noQuote' });
|
|
115
|
+
}
|
|
116
|
+
},
|
|
117
|
+
error: err => {
|
|
118
|
+
clearTimeout(timer);
|
|
119
|
+
subscription.unsubscribe();
|
|
120
|
+
resolve({ type: 'error', error: err });
|
|
121
|
+
},
|
|
122
|
+
});
|
|
123
|
+
});
|
|
124
|
+
};
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { Omniston } from '@ston-fi/omniston-sdk';
|
|
2
|
+
import { STONFI_WEBSOCKET_URL } from './constants.js';
|
|
3
|
+
let cachedOmniston = null;
|
|
4
|
+
export const omnistonManager = {
|
|
5
|
+
getInstance: () => {
|
|
6
|
+
if (!cachedOmniston) {
|
|
7
|
+
cachedOmniston = new Omniston({ apiUrl: STONFI_WEBSOCKET_URL });
|
|
8
|
+
}
|
|
9
|
+
return cachedOmniston;
|
|
10
|
+
},
|
|
11
|
+
disconnect: () => {
|
|
12
|
+
if (cachedOmniston) {
|
|
13
|
+
cachedOmniston.close();
|
|
14
|
+
cachedOmniston = null;
|
|
15
|
+
}
|
|
16
|
+
},
|
|
17
|
+
};
|
|
@@ -43,7 +43,7 @@ export const sunioApi = {
|
|
|
43
43
|
const tronWeb = new TronWeb({
|
|
44
44
|
fullHost: rpcUrl,
|
|
45
45
|
});
|
|
46
|
-
const routeParams = buildSwapRouteParameters(sunioMetadata.route, step.sellAmountIncludingProtocolFeesCryptoBaseUnit, step.buyAmountAfterFeesCryptoBaseUnit,
|
|
46
|
+
const routeParams = buildSwapRouteParameters(sunioMetadata.route, step.sellAmountIncludingProtocolFeesCryptoBaseUnit, step.buyAmountAfterFeesCryptoBaseUnit, tradeQuote.receiveAddress, slippageTolerancePercentageDecimal);
|
|
47
47
|
const parameters = [
|
|
48
48
|
{ type: 'address[]', value: routeParams.path },
|
|
49
49
|
{ type: 'string[]', value: routeParams.poolVersion },
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { tronChainId } from '@shapeshiftoss/caip';
|
|
2
|
-
import { bn, contractAddressOrUndefined } from '@shapeshiftoss/utils';
|
|
2
|
+
import { BigAmount, bn, contractAddressOrUndefined } from '@shapeshiftoss/utils';
|
|
3
3
|
import { Err, Ok } from '@sniptt/monads';
|
|
4
4
|
import { TronWeb } from 'tronweb';
|
|
5
5
|
import { SwapperName, TradeQuoteError } from '../../../types.js';
|
|
6
6
|
import { getInputOutputRate, makeSwapErrorRight } from '../../../utils.js';
|
|
7
|
+
import { buildAffiliateFee } from '../../utils/affiliateFee.js';
|
|
7
8
|
import { DEFAULT_SLIPPAGE_PERCENTAGE, SUNIO_SMART_ROUTER_CONTRACT } from './constants.js';
|
|
8
9
|
import { fetchSunioQuote } from './fetchFromSunio.js';
|
|
9
10
|
import { isSupportedChainId } from './helpers/helpers.js';
|
|
@@ -133,9 +134,10 @@ export async function getQuoteOrRate(input, deps) {
|
|
|
133
134
|
}
|
|
134
135
|
}
|
|
135
136
|
}
|
|
136
|
-
const buyAmountCryptoBaseUnit =
|
|
137
|
-
.
|
|
138
|
-
.
|
|
137
|
+
const buyAmountCryptoBaseUnit = BigAmount.fromPrecision({
|
|
138
|
+
value: bestRoute.amountOut,
|
|
139
|
+
precision: buyAsset.precision,
|
|
140
|
+
}).toBaseUnit();
|
|
139
141
|
// Calculate protocol fees only for quotes
|
|
140
142
|
const protocolFeeCryptoBaseUnit = isQuote
|
|
141
143
|
? bn(bestRoute.fee).times(sellAmountIncludingProtocolFeesCryptoBaseUnit).toFixed(0)
|
|
@@ -183,6 +185,15 @@ export async function getQuoteOrRate(input, deps) {
|
|
|
183
185
|
route: bestRoute,
|
|
184
186
|
},
|
|
185
187
|
}),
|
|
188
|
+
affiliateFee: buildAffiliateFee({
|
|
189
|
+
strategy: 'buy_asset',
|
|
190
|
+
affiliateBps,
|
|
191
|
+
sellAsset,
|
|
192
|
+
buyAsset,
|
|
193
|
+
sellAmountCryptoBaseUnit: sellAmountIncludingProtocolFeesCryptoBaseUnit,
|
|
194
|
+
buyAmountCryptoBaseUnit: buyAmountAfterFeesCryptoBaseUnit,
|
|
195
|
+
isEstimate: true,
|
|
196
|
+
}),
|
|
186
197
|
},
|
|
187
198
|
],
|
|
188
199
|
swapperName: SwapperName.Sunio,
|
|
@@ -7,6 +7,9 @@ export const thorchainSwapper = {
|
|
|
7
7
|
executeUtxoTransaction: (txToSign, { signAndBroadcastTransaction }) => {
|
|
8
8
|
return signAndBroadcastTransaction(txToSign);
|
|
9
9
|
},
|
|
10
|
+
executeSolanaTransaction: (txToSign, { signAndBroadcastTransaction }) => {
|
|
11
|
+
return signAndBroadcastTransaction(txToSign);
|
|
12
|
+
},
|
|
10
13
|
executeTronTransaction: (txToSign, { signAndBroadcastTransaction }) => {
|
|
11
14
|
return signAndBroadcastTransaction(txToSign);
|
|
12
15
|
},
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { cosmosAssetId, rujiAssetId, tcyAssetId, thorchainAssetId } from '@shapeshiftoss/caip';
|
|
2
|
-
import { checkTradeStatus, cosmossdk, evm, getInboundAddressDataForChain, tron, utxo, } from '../../thorchain-utils/index.js';
|
|
2
|
+
import { checkTradeStatus, cosmossdk, evm, getInboundAddressDataForChain, solana, tron, utxo, } from '../../thorchain-utils/index.js';
|
|
3
3
|
import { SwapperName } from '../../types.js';
|
|
4
4
|
import { getExecutableTradeStep, isExecutableTradeQuote } from '../../utils.js';
|
|
5
5
|
import { getTradeQuote } from './getTradeQuote/getTradeQuote.js';
|
|
@@ -12,6 +12,8 @@ export const thorchainApi = {
|
|
|
12
12
|
getEvmTransactionFees: input => evm.getEvmTransactionFees(input, swapperName),
|
|
13
13
|
getUnsignedUtxoTransaction: input => utxo.getUnsignedUtxoTransaction(input, swapperName),
|
|
14
14
|
getUtxoTransactionFees: input => utxo.getUtxoTransactionFees(input, swapperName),
|
|
15
|
+
getUnsignedSolanaTransaction: input => solana.getUnsignedSolanaTransaction(input, swapperName),
|
|
16
|
+
getSolanaTransactionFees: input => solana.getSolanaTransactionFees(input, swapperName),
|
|
15
17
|
getUnsignedTronTransaction: input => tron.getUnsignedTronTransaction(input, swapperName),
|
|
16
18
|
getTronTransactionFees: input => tron.getTronTransactionFees(input, swapperName),
|
|
17
19
|
getUnsignedCosmosSdkTransaction: async ({ tradeQuote, stepIndex, from, config, assertGetCosmosSdkChainAdapter, }) => {
|
|
@@ -37,6 +37,7 @@
|
|
|
37
37
|
"ETH.YFI-0X0BC529C00C6401AEF6D220BE8C6EA1667F6AD93E": "eip155:1/erc20:0x0bc529c00c6401aef6d220be8c6ea1667f6ad93e",
|
|
38
38
|
"GAIA.ATOM": "cosmos:cosmoshub-4/slip44:118",
|
|
39
39
|
"LTC.LTC": "bip122:12a765e31ffd4059bada1e25190f6e98/slip44:2",
|
|
40
|
+
"SOL.SOL": "solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp/slip44:501",
|
|
40
41
|
"THOR.RUJI": "cosmos:thorchain-1/slip44:ruji",
|
|
41
42
|
"THOR.TCY": "cosmos:thorchain-1/slip44:tcy",
|
|
42
43
|
"TRON.TRX": "tron:0x2b6653dc/slip44:195",
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { AssetId } from '@shapeshiftoss/caip';
|
|
2
|
-
export declare const assetIdToThorPoolAssetIdMap:
|
|
2
|
+
export declare const assetIdToThorPoolAssetIdMap: Record<string, string>;
|
|
3
3
|
export declare const thorPoolAssetIdToAssetId: (id: string) => AssetId | undefined;
|
|
4
4
|
export declare const assetIdToThorPoolAssetId: ({ assetId }: {
|
|
5
5
|
assetId: AssetId;
|
|
@@ -2,5 +2,6 @@ import invert from 'lodash/invert';
|
|
|
2
2
|
import generatedTradableAssetMap from '../../generated/generatedTradableAssetMap.json';
|
|
3
3
|
const thorPoolIdAssetIdSymbolMap = generatedTradableAssetMap;
|
|
4
4
|
export const assetIdToThorPoolAssetIdMap = invert(thorPoolIdAssetIdSymbolMap);
|
|
5
|
+
const assetIdToThorPoolAssetIdMapLower = Object.fromEntries(Object.entries(assetIdToThorPoolAssetIdMap).map(([k, v]) => [k.toLowerCase(), v]));
|
|
5
6
|
export const thorPoolAssetIdToAssetId = (id) => thorPoolIdAssetIdSymbolMap[id.toUpperCase()];
|
|
6
|
-
export const assetIdToThorPoolAssetId = ({ assetId }) =>
|
|
7
|
+
export const assetIdToThorPoolAssetId = ({ assetId }) => assetIdToThorPoolAssetIdMapLower[assetId.toLowerCase()];
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { btcAssetId, ethAssetId } from '@shapeshiftoss/caip';
|
|
1
|
+
import { btcAssetId, ethAssetId, solAssetId } from '@shapeshiftoss/caip';
|
|
2
2
|
import { describe, expect, it } from 'vitest';
|
|
3
3
|
import { assetIdToThorPoolAssetId, thorPoolAssetIdToAssetId } from './poolAssetHelpers.js';
|
|
4
4
|
describe('poolAssetHelpers', () => {
|
|
@@ -16,6 +16,10 @@ describe('poolAssetHelpers', () => {
|
|
|
16
16
|
const result = thorPoolAssetIdToAssetId('ETH.USDC-0XA0B86991C6218B36C1D19D4A2E9EB0CE3606EB48');
|
|
17
17
|
expect(result).toEqual(usdcAssetId);
|
|
18
18
|
});
|
|
19
|
+
it('returns Solana assetId when poolAssetId is SOL.SOL', () => {
|
|
20
|
+
const result = thorPoolAssetIdToAssetId('SOL.SOL');
|
|
21
|
+
expect(result).toEqual(solAssetId);
|
|
22
|
+
});
|
|
19
23
|
it('returns undefined for an asset we dont support', () => {
|
|
20
24
|
const result = thorPoolAssetIdToAssetId('BNB.AVA-645');
|
|
21
25
|
expect(result).toEqual(undefined);
|
|
@@ -44,6 +48,12 @@ describe('poolAssetHelpers', () => {
|
|
|
44
48
|
const poolAssetId = 'ETH.USDC-0XA0B86991C6218B36C1D19D4A2E9EB0CE3606EB48';
|
|
45
49
|
expect(result).toEqual(poolAssetId);
|
|
46
50
|
});
|
|
51
|
+
it('returns SOL pool when assetId is solAssetId (base58 case-sensitive)', () => {
|
|
52
|
+
const assetId = solAssetId;
|
|
53
|
+
const result = assetIdToThorPoolAssetId({ assetId });
|
|
54
|
+
const poolAssetId = 'SOL.SOL';
|
|
55
|
+
expect(result).toEqual(poolAssetId);
|
|
56
|
+
});
|
|
47
57
|
it('returns undefined for an unsupported asset', () => {
|
|
48
58
|
const assetId = 'foobar';
|
|
49
59
|
const result = assetIdToThorPoolAssetId({ assetId });
|
|
@@ -6,6 +6,7 @@ import { v4 as uuid } from 'uuid';
|
|
|
6
6
|
import { getDefaultSlippageDecimalPercentageForSwapper } from '../../../constants.js';
|
|
7
7
|
import { SwapperName, TradeQuoteError } from '../../../types.js';
|
|
8
8
|
import { makeSwapErrorRight } from '../../../utils.js';
|
|
9
|
+
import { buildAffiliateFee } from '../../utils/affiliateFee.js';
|
|
9
10
|
import { isNativeEvmAsset } from '../../utils/helpers/helpers.js';
|
|
10
11
|
import { fetchZrxQuote } from '../utils/fetchFromZrx.js';
|
|
11
12
|
import { assertValidTrade, calculateBuyAmountBeforeFeesCryptoBaseUnit, calculateRate, getProtocolFees, } from '../utils/helpers/helpers.js';
|
|
@@ -96,6 +97,14 @@ export async function getZrxTradeQuote(input, assertGetEvmChainAdapter, assetsBy
|
|
|
96
97
|
buyAmountAfterFeesCryptoBaseUnit: buyAmount,
|
|
97
98
|
sellAmountIncludingProtocolFeesCryptoBaseUnit,
|
|
98
99
|
source: SwapperName.Zrx,
|
|
100
|
+
affiliateFee: buildAffiliateFee({
|
|
101
|
+
strategy: 'buy_asset',
|
|
102
|
+
affiliateBps,
|
|
103
|
+
sellAsset,
|
|
104
|
+
buyAsset,
|
|
105
|
+
sellAmountCryptoBaseUnit: sellAmountIncludingProtocolFeesCryptoBaseUnit,
|
|
106
|
+
buyAmountCryptoBaseUnit: buyAmount,
|
|
107
|
+
}),
|
|
99
108
|
permit2Eip712: permit2Eip712,
|
|
100
109
|
zrxTransactionMetadata: transactionMetadata,
|
|
101
110
|
},
|
|
@@ -3,6 +3,7 @@ import { Err, Ok } from '@sniptt/monads';
|
|
|
3
3
|
import { v4 as uuid } from 'uuid';
|
|
4
4
|
import { getDefaultSlippageDecimalPercentageForSwapper } from '../../../constants.js';
|
|
5
5
|
import { SwapperName } from '../../../types.js';
|
|
6
|
+
import { buildAffiliateFee } from '../../utils/affiliateFee.js';
|
|
6
7
|
import { isNativeEvmAsset } from '../../utils/helpers/helpers.js';
|
|
7
8
|
import { fetchZrxPrice } from '../utils/fetchFromZrx.js';
|
|
8
9
|
import { assertValidTrade, calculateBuyAmountBeforeFeesCryptoBaseUnit, calculateRate, getProtocolFees, } from '../utils/helpers/helpers.js';
|
|
@@ -62,6 +63,14 @@ export async function getZrxTradeRate(input, assetsById, zrxBaseUrl) {
|
|
|
62
63
|
buyAmountAfterFeesCryptoBaseUnit: buyAmount,
|
|
63
64
|
sellAmountIncludingProtocolFeesCryptoBaseUnit,
|
|
64
65
|
source: SwapperName.Zrx,
|
|
66
|
+
affiliateFee: buildAffiliateFee({
|
|
67
|
+
strategy: 'buy_asset',
|
|
68
|
+
affiliateBps,
|
|
69
|
+
sellAsset,
|
|
70
|
+
buyAsset,
|
|
71
|
+
sellAmountCryptoBaseUnit: sellAmountIncludingProtocolFeesCryptoBaseUnit,
|
|
72
|
+
buyAmountCryptoBaseUnit: buyAmount,
|
|
73
|
+
}),
|
|
65
74
|
},
|
|
66
75
|
],
|
|
67
76
|
});
|
|
@@ -8,7 +8,7 @@ export declare const isSupportedChainId: (chainId: ChainId) => chainId is KnownC
|
|
|
8
8
|
export declare const assertValidTrade: ({ buyAsset, sellAsset, }: {
|
|
9
9
|
buyAsset: Asset;
|
|
10
10
|
sellAsset: Asset;
|
|
11
|
-
}) => import("@sniptt/monads/build/result/result").
|
|
11
|
+
}) => import("@sniptt/monads/build/result/result").ResErr<unknown, import("../../../../types.js").SwapErrorRight> | import("@sniptt/monads/build/result/result").ResOk<boolean, never>;
|
|
12
12
|
export declare const calculateRate: ({ buyAmount, sellAmount, buyAsset, sellAsset, }: {
|
|
13
13
|
buyAmount: string;
|
|
14
14
|
sellAmount: string;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { AssetId } from '@shapeshiftoss/caip';
|
|
2
|
+
import type { Asset } from '@shapeshiftoss/types';
|
|
3
|
+
import type { AffiliateFee } from '../../types.js';
|
|
4
|
+
export type AffiliateFeeStrategy = 'buy_asset' | 'sell_asset' | 'fixed_asset';
|
|
5
|
+
type BuildAffiliateFeeParams = {
|
|
6
|
+
strategy: AffiliateFeeStrategy;
|
|
7
|
+
affiliateBps: string;
|
|
8
|
+
sellAsset: Asset;
|
|
9
|
+
buyAsset: Asset;
|
|
10
|
+
sellAmountCryptoBaseUnit: string;
|
|
11
|
+
buyAmountCryptoBaseUnit: string;
|
|
12
|
+
fixedAsset?: Asset;
|
|
13
|
+
fixedAssetId?: AssetId;
|
|
14
|
+
isEstimate?: boolean;
|
|
15
|
+
};
|
|
16
|
+
export declare const buildAffiliateFee: (params: BuildAffiliateFeeParams) => AffiliateFee | undefined;
|
|
17
|
+
export {};
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { bn, bnOrZero } from '@shapeshiftoss/utils';
|
|
2
|
+
export const buildAffiliateFee = (params) => {
|
|
3
|
+
const { strategy, affiliateBps, sellAsset, buyAsset, sellAmountCryptoBaseUnit, buyAmountCryptoBaseUnit, fixedAsset, fixedAssetId, isEstimate, } = params;
|
|
4
|
+
if (bnOrZero(affiliateBps).lte(0))
|
|
5
|
+
return undefined;
|
|
6
|
+
const bpsDecimal = bn(affiliateBps).div(10000);
|
|
7
|
+
switch (strategy) {
|
|
8
|
+
case 'buy_asset': {
|
|
9
|
+
const feeAmount = bnOrZero(buyAmountCryptoBaseUnit).times(bpsDecimal).toFixed(0);
|
|
10
|
+
return {
|
|
11
|
+
assetId: buyAsset.assetId,
|
|
12
|
+
amountCryptoBaseUnit: feeAmount,
|
|
13
|
+
asset: buyAsset,
|
|
14
|
+
isEstimate,
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
case 'sell_asset': {
|
|
18
|
+
const feeAmount = bnOrZero(sellAmountCryptoBaseUnit).times(bpsDecimal).toFixed(0);
|
|
19
|
+
return {
|
|
20
|
+
assetId: sellAsset.assetId,
|
|
21
|
+
amountCryptoBaseUnit: feeAmount,
|
|
22
|
+
asset: sellAsset,
|
|
23
|
+
isEstimate,
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
case 'fixed_asset': {
|
|
27
|
+
if (!fixedAsset || !fixedAssetId)
|
|
28
|
+
return undefined;
|
|
29
|
+
return {
|
|
30
|
+
assetId: fixedAssetId,
|
|
31
|
+
amountCryptoBaseUnit: '0',
|
|
32
|
+
asset: fixedAsset,
|
|
33
|
+
isEstimate: true,
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
default:
|
|
37
|
+
return undefined;
|
|
38
|
+
}
|
|
39
|
+
};
|
package/dist/esm/swappers/utils/filterBuyAssetsBySellAssetId/filterBuyAssetsBySellAssetId.js
CHANGED
|
@@ -1,14 +1,11 @@
|
|
|
1
|
-
import { arbitrumNovaChainId } from '@shapeshiftoss/caip';
|
|
2
1
|
import { isEvmChainId } from '@shapeshiftoss/chain-adapters';
|
|
3
2
|
const _filterEvmBuyAssetsBySellAssetId = ({ assets, sellAsset }, chainIdPredicate) => {
|
|
4
3
|
// evm only
|
|
5
4
|
if (!isEvmChainId(sellAsset.chainId))
|
|
6
5
|
return [];
|
|
7
6
|
return assets.filter(buyAsset => {
|
|
8
|
-
// evm only AND chain id predicate
|
|
9
|
-
return
|
|
10
|
-
chainIdPredicate(buyAsset.chainId, sellAsset.chainId) &&
|
|
11
|
-
buyAsset.chainId !== arbitrumNovaChainId);
|
|
7
|
+
// evm only AND chain id predicate
|
|
8
|
+
return isEvmChainId(buyAsset.chainId) && chainIdPredicate(buyAsset.chainId, sellAsset.chainId);
|
|
12
9
|
});
|
|
13
10
|
};
|
|
14
11
|
export const filterSameChainEvmBuyAssetsBySellAssetId = (input) => {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { arbitrumAssetId, avalancheAssetId, baseAssetId, bscAssetId, ethAssetId, fromAssetId, gnosisAssetId, katanaAssetId, monadAssetId, optimismAssetId, plasmaAssetId, polygonAssetId, } from '@shapeshiftoss/caip';
|
|
2
2
|
import { KnownChainIds } from '@shapeshiftoss/types';
|
|
3
|
-
import { DAO_TREASURY_ARBITRUM, DAO_TREASURY_AVALANCHE, DAO_TREASURY_BASE, DAO_TREASURY_BITCOIN, DAO_TREASURY_BSC, DAO_TREASURY_ETHEREUM_MAINNET, DAO_TREASURY_GNOSIS, DAO_TREASURY_OPTIMISM, DAO_TREASURY_POLYGON, DAO_TREASURY_SOLANA, DAO_TREASURY_STARKNET, isTreasuryChainId, } from '@shapeshiftoss/utils';
|
|
3
|
+
import { DAO_TREASURY_ARBITRUM, DAO_TREASURY_AVALANCHE, DAO_TREASURY_BASE, DAO_TREASURY_BITCOIN, DAO_TREASURY_BSC, DAO_TREASURY_ETHEREUM_MAINNET, DAO_TREASURY_GNOSIS, DAO_TREASURY_HYPEREVM, DAO_TREASURY_MONAD, DAO_TREASURY_OPTIMISM, DAO_TREASURY_POLYGON, DAO_TREASURY_SOLANA, DAO_TREASURY_STARKNET, DAO_TREASURY_TON, isTreasuryChainId, } from '@shapeshiftoss/utils';
|
|
4
4
|
export const isNativeEvmAsset = (assetId) => {
|
|
5
5
|
const { chainId } = fromAssetId(assetId);
|
|
6
6
|
switch (chainId) {
|
|
@@ -42,6 +42,9 @@ const DAO_TREASURY_BY_CHAIN_ID = {
|
|
|
42
42
|
[KnownChainIds.SolanaMainnet]: DAO_TREASURY_SOLANA,
|
|
43
43
|
[KnownChainIds.BitcoinMainnet]: DAO_TREASURY_BITCOIN,
|
|
44
44
|
[KnownChainIds.StarknetMainnet]: DAO_TREASURY_STARKNET,
|
|
45
|
+
[KnownChainIds.TonMainnet]: DAO_TREASURY_TON,
|
|
46
|
+
[KnownChainIds.MonadMainnet]: DAO_TREASURY_MONAD,
|
|
47
|
+
[KnownChainIds.HyperEvmMainnet]: DAO_TREASURY_HYPEREVM,
|
|
45
48
|
};
|
|
46
49
|
export const getTreasuryAddressFromChainId = (chainId) => {
|
|
47
50
|
const maybeTreasuryChainId = isTreasuryChainId(chainId) ? chainId : undefined;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { Asset } from '@shapeshiftoss/types';
|
|
2
2
|
import type { SwapperConfig, SwapperName } from '../types.js';
|
|
3
3
|
import type { ThorEvmTradeQuote } from './types.js';
|
|
4
|
-
export declare const getCallDataFromQuote: ({ tradeType, data, sellAsset, sellAmountIncludingProtocolFeesCryptoBaseUnit, memo: tcMemo, expiry, config, longtailData, slippageTolerancePercentageDecimal, vault, swapperName, }: Pick<ThorEvmTradeQuote, "data" | "slippageTolerancePercentageDecimal" | "memo" | "
|
|
4
|
+
export declare const getCallDataFromQuote: ({ tradeType, data, sellAsset, sellAmountIncludingProtocolFeesCryptoBaseUnit, memo: tcMemo, expiry, config, longtailData, slippageTolerancePercentageDecimal, vault, swapperName, }: Pick<ThorEvmTradeQuote, "data" | "slippageTolerancePercentageDecimal" | "memo" | "expiry" | "tradeType" | "aggregator" | "vault" | "longtailData"> & {
|
|
5
5
|
sellAmountIncludingProtocolFeesCryptoBaseUnit: string;
|
|
6
6
|
config: SwapperConfig;
|
|
7
7
|
sellAsset: Asset;
|