@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,11 +1,12 @@
|
|
|
1
|
-
import { CHAIN_NAMESPACE, fromAssetId } from '@shapeshiftoss/caip';
|
|
1
|
+
import { CHAIN_NAMESPACE, fromAssetId, nearChainId } from '@shapeshiftoss/caip';
|
|
2
2
|
import { evm } from '@shapeshiftoss/chain-adapters';
|
|
3
|
-
import { bn, bnOrZero, contractAddressOrUndefined, DAO_TREASURY_NEAR, isToken, } from '@shapeshiftoss/utils';
|
|
3
|
+
import { bn, bnOrZero, chainIdToFeeAssetId, contractAddressOrUndefined, DAO_TREASURY_NEAR, isToken, } from '@shapeshiftoss/utils';
|
|
4
4
|
import { Err, Ok } from '@sniptt/monads';
|
|
5
5
|
import { v4 as uuid } from 'uuid';
|
|
6
6
|
import { getDefaultSlippageDecimalPercentageForSwapper } from '../../../constants.js';
|
|
7
7
|
import { SwapperName, TradeQuoteError } from '../../../types.js';
|
|
8
8
|
import { createTradeAmountTooSmallErr, getInputOutputRate, makeSwapErrorRight, } from '../../../utils.js';
|
|
9
|
+
import { buildAffiliateFee } from '../../utils/affiliateFee.js';
|
|
9
10
|
import { isNativeEvmAsset } from '../../utils/helpers/helpers.js';
|
|
10
11
|
import { DEFAULT_QUOTE_DEADLINE_MS, DEFAULT_SLIPPAGE_BPS } from '../constants.js';
|
|
11
12
|
import { QuoteRequest } from '../types.js';
|
|
@@ -71,7 +72,27 @@ export const getTradeQuote = async (input, deps) => {
|
|
|
71
72
|
},
|
|
72
73
|
],
|
|
73
74
|
};
|
|
74
|
-
const
|
|
75
|
+
const maxRetries = 3;
|
|
76
|
+
let quoteResponse = null;
|
|
77
|
+
let lastError = null;
|
|
78
|
+
for (let attempt = 1; attempt <= maxRetries; attempt++) {
|
|
79
|
+
try {
|
|
80
|
+
quoteResponse = await OneClickService.getQuote(quoteRequest);
|
|
81
|
+
break;
|
|
82
|
+
}
|
|
83
|
+
catch (err) {
|
|
84
|
+
lastError = err instanceof Error ? err : new Error(String(err));
|
|
85
|
+
const isWebSocketError = lastError.message.includes('WebSocket is not ready');
|
|
86
|
+
if (isWebSocketError && attempt < maxRetries) {
|
|
87
|
+
await new Promise(resolve => setTimeout(resolve, 1000 * attempt));
|
|
88
|
+
continue;
|
|
89
|
+
}
|
|
90
|
+
throw lastError;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
if (!quoteResponse) {
|
|
94
|
+
throw lastError ?? new Error('Failed to get quote after retries');
|
|
95
|
+
}
|
|
75
96
|
const { quote } = quoteResponse;
|
|
76
97
|
if (!quote.depositAddress) {
|
|
77
98
|
throw new Error('Missing deposit address in quote response');
|
|
@@ -197,6 +218,21 @@ export const getTradeQuote = async (input, deps) => {
|
|
|
197
218
|
});
|
|
198
219
|
return { networkFeeCryptoBaseUnit: feeData.fast.txFee };
|
|
199
220
|
}
|
|
221
|
+
case CHAIN_NAMESPACE.Ton: {
|
|
222
|
+
const sellAdapter = deps.assertGetTonChainAdapter(sellAsset.chainId);
|
|
223
|
+
const contractAddress = isToken(sellAsset.assetId)
|
|
224
|
+
? fromAssetId(sellAsset.assetId).assetReference
|
|
225
|
+
: undefined;
|
|
226
|
+
const feeData = await sellAdapter.getFeeData({
|
|
227
|
+
to: depositAddress,
|
|
228
|
+
value: sellAmount,
|
|
229
|
+
chainSpecific: {
|
|
230
|
+
from,
|
|
231
|
+
contractAddress,
|
|
232
|
+
},
|
|
233
|
+
});
|
|
234
|
+
return { networkFeeCryptoBaseUnit: feeData.fast.txFee };
|
|
235
|
+
}
|
|
200
236
|
default:
|
|
201
237
|
throw new Error(`Unsupported chain namespace: ${chainNamespace}`);
|
|
202
238
|
}
|
|
@@ -240,6 +276,17 @@ export const getTradeQuote = async (input, deps) => {
|
|
|
240
276
|
timeEstimate: quote.timeEstimate,
|
|
241
277
|
deadline: quote.deadline ?? '',
|
|
242
278
|
},
|
|
279
|
+
affiliateFee: buildAffiliateFee({
|
|
280
|
+
strategy: 'fixed_asset',
|
|
281
|
+
affiliateBps,
|
|
282
|
+
sellAsset,
|
|
283
|
+
buyAsset,
|
|
284
|
+
sellAmountCryptoBaseUnit: quote.amountIn,
|
|
285
|
+
buyAmountCryptoBaseUnit: quote.amountOut,
|
|
286
|
+
fixedAssetId: chainIdToFeeAssetId(nearChainId),
|
|
287
|
+
fixedAsset: deps.assetsById[chainIdToFeeAssetId(nearChainId)],
|
|
288
|
+
isEstimate: true,
|
|
289
|
+
}),
|
|
243
290
|
},
|
|
244
291
|
],
|
|
245
292
|
};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { CHAIN_NAMESPACE, fromAssetId, monadChainId } from '@shapeshiftoss/caip';
|
|
1
|
+
import { CHAIN_NAMESPACE, fromAssetId, monadChainId, nearChainId } from '@shapeshiftoss/caip';
|
|
2
2
|
import { evm } from '@shapeshiftoss/chain-adapters';
|
|
3
|
-
import { bn, bnOrZero, contractAddressOrUndefined, DAO_TREASURY_NEAR, isToken, } from '@shapeshiftoss/utils';
|
|
3
|
+
import { bn, bnOrZero, chainIdToFeeAssetId, contractAddressOrUndefined, DAO_TREASURY_NEAR, isToken, } from '@shapeshiftoss/utils';
|
|
4
4
|
import { Err, Ok } from '@sniptt/monads';
|
|
5
5
|
import { v4 as uuid } from 'uuid';
|
|
6
6
|
import { getAddress } from 'viem';
|
|
@@ -8,6 +8,7 @@ import { getDefaultSlippageDecimalPercentageForSwapper } from '../../../constant
|
|
|
8
8
|
import { SwapperName, TradeQuoteError } from '../../../types.js';
|
|
9
9
|
import { createTradeAmountTooSmallErr, getInputOutputRate, makeSwapErrorRight, } from '../../../utils.js';
|
|
10
10
|
import { simulateWithStateOverrides } from '../../../utils/tenderly/index.js';
|
|
11
|
+
import { buildAffiliateFee } from '../../utils/affiliateFee.js';
|
|
11
12
|
import { isNativeEvmAsset } from '../../utils/helpers/helpers.js';
|
|
12
13
|
import { DEFAULT_QUOTE_DEADLINE_MS, DEFAULT_SLIPPAGE_BPS } from '../constants.js';
|
|
13
14
|
import { QuoteRequest } from '../types.js';
|
|
@@ -61,7 +62,27 @@ export const getTradeRate = async (input, deps) => {
|
|
|
61
62
|
},
|
|
62
63
|
],
|
|
63
64
|
};
|
|
64
|
-
const
|
|
65
|
+
const maxRetries = 3;
|
|
66
|
+
let quoteResponse = null;
|
|
67
|
+
let lastError = null;
|
|
68
|
+
for (let attempt = 1; attempt <= maxRetries; attempt++) {
|
|
69
|
+
try {
|
|
70
|
+
quoteResponse = await OneClickService.getQuote(quoteRequest);
|
|
71
|
+
break;
|
|
72
|
+
}
|
|
73
|
+
catch (err) {
|
|
74
|
+
lastError = err instanceof Error ? err : new Error(String(err));
|
|
75
|
+
const isWebSocketError = lastError.message.includes('WebSocket is not ready');
|
|
76
|
+
if (isWebSocketError && attempt < maxRetries) {
|
|
77
|
+
await new Promise(resolve => setTimeout(resolve, 1000 * attempt));
|
|
78
|
+
continue;
|
|
79
|
+
}
|
|
80
|
+
throw lastError;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
if (!quoteResponse) {
|
|
84
|
+
throw lastError ?? new Error('Failed to get quote after retries');
|
|
85
|
+
}
|
|
65
86
|
const { quote } = quoteResponse;
|
|
66
87
|
if (!quote.depositAddress) {
|
|
67
88
|
throw new Error('Missing deposit address in quote response');
|
|
@@ -238,6 +259,46 @@ export const getTradeRate = async (input, deps) => {
|
|
|
238
259
|
return '0';
|
|
239
260
|
}
|
|
240
261
|
}
|
|
262
|
+
case CHAIN_NAMESPACE.Near: {
|
|
263
|
+
try {
|
|
264
|
+
const sellAdapter = deps.assertGetNearChainAdapter(sellAsset.chainId);
|
|
265
|
+
if (!sendAddress) {
|
|
266
|
+
return '0';
|
|
267
|
+
}
|
|
268
|
+
const feeData = await sellAdapter.getFeeData({
|
|
269
|
+
to: depositAddress,
|
|
270
|
+
value: sellAmount,
|
|
271
|
+
chainSpecific: { from: sendAddress },
|
|
272
|
+
});
|
|
273
|
+
return feeData.fast.txFee;
|
|
274
|
+
}
|
|
275
|
+
catch (error) {
|
|
276
|
+
return '0';
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
case CHAIN_NAMESPACE.Ton: {
|
|
280
|
+
try {
|
|
281
|
+
const sellAdapter = deps.assertGetTonChainAdapter(sellAsset.chainId);
|
|
282
|
+
const contractAddress = isToken(sellAsset.assetId)
|
|
283
|
+
? fromAssetId(sellAsset.assetId).assetReference
|
|
284
|
+
: undefined;
|
|
285
|
+
if (!sendAddress) {
|
|
286
|
+
return '0';
|
|
287
|
+
}
|
|
288
|
+
const feeData = await sellAdapter.getFeeData({
|
|
289
|
+
to: depositAddress,
|
|
290
|
+
value: sellAmount,
|
|
291
|
+
chainSpecific: {
|
|
292
|
+
from: sendAddress,
|
|
293
|
+
contractAddress,
|
|
294
|
+
},
|
|
295
|
+
});
|
|
296
|
+
return feeData.fast.txFee;
|
|
297
|
+
}
|
|
298
|
+
catch (error) {
|
|
299
|
+
return '0';
|
|
300
|
+
}
|
|
301
|
+
}
|
|
241
302
|
default:
|
|
242
303
|
return undefined;
|
|
243
304
|
}
|
|
@@ -274,6 +335,17 @@ export const getTradeRate = async (input, deps) => {
|
|
|
274
335
|
sellAsset,
|
|
275
336
|
source: SwapperName.NearIntents,
|
|
276
337
|
estimatedExecutionTimeMs: quote.timeEstimate ? quote.timeEstimate * 1000 : undefined,
|
|
338
|
+
affiliateFee: buildAffiliateFee({
|
|
339
|
+
strategy: 'fixed_asset',
|
|
340
|
+
affiliateBps,
|
|
341
|
+
sellAsset,
|
|
342
|
+
buyAsset,
|
|
343
|
+
sellAmountCryptoBaseUnit: quote.amountIn,
|
|
344
|
+
buyAmountCryptoBaseUnit: quote.amountOut,
|
|
345
|
+
fixedAssetId: chainIdToFeeAssetId(nearChainId),
|
|
346
|
+
fixedAsset: deps.assetsById[chainIdToFeeAssetId(nearChainId)],
|
|
347
|
+
isEstimate: true,
|
|
348
|
+
}),
|
|
277
349
|
},
|
|
278
350
|
],
|
|
279
351
|
};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { KnownChainIds } from '@shapeshiftoss/types';
|
|
2
2
|
export { QuoteRequest } from '@defuse-protocol/one-click-sdk-typescript';
|
|
3
3
|
export type { GetExecutionStatusResponse, QuoteResponse, TokenResponse, } from '@defuse-protocol/one-click-sdk-typescript';
|
|
4
|
-
export declare const nearIntentsSupportedChainIds: readonly [KnownChainIds.EthereumMainnet, KnownChainIds.ArbitrumMainnet, KnownChainIds.BaseMainnet, KnownChainIds.GnosisMainnet, KnownChainIds.BnbSmartChainMainnet, KnownChainIds.PolygonMainnet, KnownChainIds.AvalancheMainnet, KnownChainIds.OptimismMainnet, KnownChainIds.BitcoinMainnet, KnownChainIds.DogecoinMainnet, KnownChainIds.ZcashMainnet, KnownChainIds.SolanaMainnet, KnownChainIds.TronMainnet, KnownChainIds.SuiMainnet, KnownChainIds.StarknetMainnet, KnownChainIds.MonadMainnet, KnownChainIds.NearMainnet];
|
|
4
|
+
export declare const nearIntentsSupportedChainIds: readonly [KnownChainIds.EthereumMainnet, KnownChainIds.ArbitrumMainnet, KnownChainIds.BaseMainnet, KnownChainIds.GnosisMainnet, KnownChainIds.BnbSmartChainMainnet, KnownChainIds.PolygonMainnet, KnownChainIds.AvalancheMainnet, KnownChainIds.OptimismMainnet, KnownChainIds.BitcoinMainnet, KnownChainIds.BitcoinCashMainnet, KnownChainIds.DogecoinMainnet, KnownChainIds.ZcashMainnet, KnownChainIds.SolanaMainnet, KnownChainIds.TronMainnet, KnownChainIds.SuiMainnet, KnownChainIds.StarknetMainnet, KnownChainIds.MonadMainnet, KnownChainIds.NearMainnet, KnownChainIds.PlasmaMainnet, KnownChainIds.TonMainnet];
|
|
5
5
|
export type NearIntentsSupportedChainId = (typeof nearIntentsSupportedChainIds)[number];
|
|
6
6
|
export declare const chainIdToNearIntentsChain: Record<NearIntentsSupportedChainId, string>;
|
|
@@ -10,6 +10,7 @@ export const nearIntentsSupportedChainIds = [
|
|
|
10
10
|
KnownChainIds.AvalancheMainnet,
|
|
11
11
|
KnownChainIds.OptimismMainnet,
|
|
12
12
|
KnownChainIds.BitcoinMainnet,
|
|
13
|
+
KnownChainIds.BitcoinCashMainnet,
|
|
13
14
|
KnownChainIds.DogecoinMainnet,
|
|
14
15
|
KnownChainIds.ZcashMainnet,
|
|
15
16
|
KnownChainIds.SolanaMainnet,
|
|
@@ -18,6 +19,8 @@ export const nearIntentsSupportedChainIds = [
|
|
|
18
19
|
KnownChainIds.StarknetMainnet,
|
|
19
20
|
KnownChainIds.MonadMainnet,
|
|
20
21
|
KnownChainIds.NearMainnet,
|
|
22
|
+
KnownChainIds.PlasmaMainnet,
|
|
23
|
+
KnownChainIds.TonMainnet,
|
|
21
24
|
];
|
|
22
25
|
export const chainIdToNearIntentsChain = {
|
|
23
26
|
[KnownChainIds.EthereumMainnet]: 'eth',
|
|
@@ -29,12 +32,15 @@ export const chainIdToNearIntentsChain = {
|
|
|
29
32
|
[KnownChainIds.AvalancheMainnet]: 'avax',
|
|
30
33
|
[KnownChainIds.OptimismMainnet]: 'op',
|
|
31
34
|
[KnownChainIds.BitcoinMainnet]: 'btc',
|
|
35
|
+
[KnownChainIds.BitcoinCashMainnet]: 'bch',
|
|
32
36
|
[KnownChainIds.DogecoinMainnet]: 'doge',
|
|
33
37
|
[KnownChainIds.ZcashMainnet]: 'zec',
|
|
38
|
+
[KnownChainIds.PlasmaMainnet]: 'plasma',
|
|
34
39
|
[KnownChainIds.SolanaMainnet]: 'sol',
|
|
35
40
|
[KnownChainIds.TronMainnet]: 'tron',
|
|
36
41
|
[KnownChainIds.SuiMainnet]: 'sui',
|
|
37
42
|
[KnownChainIds.StarknetMainnet]: 'starknet',
|
|
38
43
|
[KnownChainIds.MonadMainnet]: 'monad',
|
|
39
44
|
[KnownChainIds.NearMainnet]: 'near',
|
|
45
|
+
[KnownChainIds.TonMainnet]: 'ton',
|
|
40
46
|
};
|
|
@@ -5,6 +5,25 @@ import { bnOrZero, isToken } from '@shapeshiftoss/utils';
|
|
|
5
5
|
import { zeroAddress } from 'viem';
|
|
6
6
|
import { chainIdToNearIntentsChain } from '../../types.js';
|
|
7
7
|
import { OneClickService } from '../oneClickService.js';
|
|
8
|
+
const getTokensWithRetry = async () => {
|
|
9
|
+
const maxRetries = 3;
|
|
10
|
+
let lastError = null;
|
|
11
|
+
for (let attempt = 1; attempt <= maxRetries; attempt++) {
|
|
12
|
+
try {
|
|
13
|
+
return await OneClickService.getTokens();
|
|
14
|
+
}
|
|
15
|
+
catch (err) {
|
|
16
|
+
lastError = err instanceof Error ? err : new Error(String(err));
|
|
17
|
+
const isWebSocketError = lastError.message.includes('WebSocket is not ready');
|
|
18
|
+
if (isWebSocketError && attempt < maxRetries) {
|
|
19
|
+
await new Promise(resolve => setTimeout(resolve, 1000 * attempt));
|
|
20
|
+
continue;
|
|
21
|
+
}
|
|
22
|
+
throw lastError;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
throw lastError ?? new Error('Failed to get tokens after retries');
|
|
26
|
+
};
|
|
8
27
|
const ATA_RENT_LAMPORTS = 2040000;
|
|
9
28
|
export const calculateAccountCreationCosts = (instructions) => {
|
|
10
29
|
let totalCost = bnOrZero(0);
|
|
@@ -23,8 +42,8 @@ export const getNearIntentsAsset = ({ nearNetwork, contractAddress, }) => {
|
|
|
23
42
|
// ERC20 tokens: "nep141:eth-0x{address}.omft.near"
|
|
24
43
|
return `nep141:${nearNetwork}-${contractAddress.toLowerCase()}.omft.near`;
|
|
25
44
|
};
|
|
26
|
-
const NEP245_CHAINS = ['bsc', 'pol', 'avax', 'op', 'tron', 'monad'];
|
|
27
|
-
const TOKEN_LOOKUP_CHAINS = ['sui', 'starknet'];
|
|
45
|
+
const NEP245_CHAINS = ['bsc', 'pol', 'avax', 'op', 'tron', 'monad', 'plasma'];
|
|
46
|
+
const TOKEN_LOOKUP_CHAINS = ['sui', 'starknet', 'ton'];
|
|
28
47
|
const NEAR_CHAIN = 'near';
|
|
29
48
|
const WNEAR_CONTRACT_ADDRESS = 'wrap.near';
|
|
30
49
|
const isNep245Chain = (chain) => {
|
|
@@ -40,7 +59,7 @@ export const assetToNearIntentsAsset = async (asset) => {
|
|
|
40
59
|
// NEAR chain requires special handling
|
|
41
60
|
// Native NEAR maps to wNEAR (wrap.near)
|
|
42
61
|
if (nearNetwork === NEAR_CHAIN) {
|
|
43
|
-
const tokens = await
|
|
62
|
+
const tokens = await getTokensWithRetry();
|
|
44
63
|
const { assetNamespace, assetReference } = fromAssetId(asset.assetId);
|
|
45
64
|
const isNativeAsset = assetNamespace === 'slip44';
|
|
46
65
|
// Native NEAR maps to wNEAR, tokens use their contract address directly
|
|
@@ -56,7 +75,7 @@ export const assetToNearIntentsAsset = async (asset) => {
|
|
|
56
75
|
// Asset IDs use hashed format that can't be generated from contract addresses
|
|
57
76
|
const requiresLookup = isNep245Chain(nearNetwork) || isTokenLookupChain(nearNetwork) || asset.chainId === solanaChainId;
|
|
58
77
|
if (requiresLookup) {
|
|
59
|
-
const tokens = await
|
|
78
|
+
const tokens = await getTokensWithRetry();
|
|
60
79
|
const { assetNamespace, assetReference } = fromAssetId(asset.assetId);
|
|
61
80
|
const isNativeAsset = assetNamespace === 'slip44';
|
|
62
81
|
const contractAddress = !isNativeAsset ? assetReference.toLowerCase() : null;
|
|
@@ -6,6 +6,7 @@ import { zeroAddress } from 'viem';
|
|
|
6
6
|
import { getDefaultSlippageDecimalPercentageForSwapper } from '../../../index.js';
|
|
7
7
|
import { SwapperName, TradeQuoteError } from '../../../types.js';
|
|
8
8
|
import { getInputOutputRate, makeSwapErrorRight } from '../../../utils.js';
|
|
9
|
+
import { buildAffiliateFee } from '../../utils/affiliateFee.js';
|
|
9
10
|
import { getTreasuryAddressFromChainId, isNativeEvmAsset } from '../../utils/helpers/helpers.js';
|
|
10
11
|
import { chainIdToPortalsNetwork } from '../constants.js';
|
|
11
12
|
import { fetchPortalsTradeOrder, PortalsError } from '../utils/fetchPortalsTradeOrder.js';
|
|
@@ -201,6 +202,15 @@ export async function getPortalsTradeQuote(input, assertGetEvmChainAdapter, swap
|
|
|
201
202
|
steps: portalsTradeOrderResponse.context.steps,
|
|
202
203
|
route: portalsTradeOrderResponse.context.route,
|
|
203
204
|
},
|
|
205
|
+
affiliateFee: buildAffiliateFee({
|
|
206
|
+
strategy: 'buy_asset',
|
|
207
|
+
affiliateBps,
|
|
208
|
+
sellAsset,
|
|
209
|
+
buyAsset,
|
|
210
|
+
sellAmountCryptoBaseUnit: input.sellAmountIncludingProtocolFeesCryptoBaseUnit,
|
|
211
|
+
buyAmountCryptoBaseUnit: buyAmountAfterFeesCryptoBaseUnit,
|
|
212
|
+
isEstimate: true,
|
|
213
|
+
}),
|
|
204
214
|
},
|
|
205
215
|
],
|
|
206
216
|
};
|
|
@@ -14,7 +14,6 @@ import { fetchPortalsTradeEstimate, fetchPortalsTradeOrder } from '../utils/fetc
|
|
|
14
14
|
import { getPortalsRouterAddressByChainId, isSupportedChainId } from '../utils/helpers.js';
|
|
15
15
|
export async function getPortalsTradeRate(input, assertGetEvmChainAdapter, swapperConfig) {
|
|
16
16
|
const { sellAsset, buyAsset, accountNumber, affiliateBps, chainId, sellAmountIncludingProtocolFeesCryptoBaseUnit, receiveAddress, supportsEIP1559, } = input;
|
|
17
|
-
const adapter = assertGetEvmChainAdapter(chainId);
|
|
18
17
|
const sellAssetChainId = sellAsset.chainId;
|
|
19
18
|
const buyAssetChainId = buyAsset.chainId;
|
|
20
19
|
if (!isSupportedChainId(sellAssetChainId)) {
|
|
@@ -31,10 +30,16 @@ export async function getPortalsTradeRate(input, assertGetEvmChainAdapter, swapp
|
|
|
31
30
|
details: { chainId: sellAsset.chainId },
|
|
32
31
|
}));
|
|
33
32
|
}
|
|
33
|
+
if (!isSupportedChainId(chainId)) {
|
|
34
|
+
return Err(makeSwapErrorRight({
|
|
35
|
+
message: `unsupported chainId`,
|
|
36
|
+
code: TradeQuoteError.UnsupportedChain,
|
|
37
|
+
details: { chainId },
|
|
38
|
+
}));
|
|
39
|
+
}
|
|
40
|
+
const adapter = assertGetEvmChainAdapter(chainId);
|
|
34
41
|
const isCrossChain = sellAssetChainId !== buyAssetChainId;
|
|
35
42
|
try {
|
|
36
|
-
if (!isSupportedChainId(chainId))
|
|
37
|
-
throw new Error(`Unsupported chainId ${sellAsset.chainId}`);
|
|
38
43
|
const sellPortalsNetwork = chainIdToPortalsNetwork[sellAssetChainId];
|
|
39
44
|
const buyPortalsNetwork = chainIdToPortalsNetwork[buyAssetChainId];
|
|
40
45
|
if (!sellPortalsNetwork) {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { arbitrumChainId, avalancheChainId, baseChainId, bscChainId, btcChainId, ethChainId, gnosisChainId, hyperEvmChainId, katanaChainId, monadChainId, optimismChainId, plasmaChainId, polygonChainId, solanaChainId,
|
|
1
|
+
import { arbitrumChainId, avalancheChainId, baseChainId, berachainChainId, blastChainId, bobChainId, bscChainId, btcChainId, celoChainId, cronosChainId, ethChainId, etherealChainId, flowEvmChainId, gnosisChainId, hemiChainId, hyperEvmChainId, inkChainId, katanaChainId, lineaChainId, mantleChainId, megaethChainId, modeChainId, monadChainId, optimismChainId, plasmaChainId, plumeChainId, polygonChainId, scrollChainId, seiChainId, solanaChainId, soneiumChainId, sonicChainId, storyChainId, unichainChainId, worldChainChainId, zkSyncEraChainId, } from '@shapeshiftoss/caip';
|
|
2
2
|
import invert from 'lodash/invert';
|
|
3
3
|
import { zeroAddress } from 'viem';
|
|
4
|
-
import { arbitrum, avalanche, base, bsc, gnosis, hyperEvm, katana, mainnet as ethereum, monad, optimism, plasma, polygon, } from 'viem/chains';
|
|
4
|
+
import { arbitrum, avalanche, base, berachain, blast, bob, bsc, celo, cronos, flowMainnet, gnosis, hemi, hyperEvm, ink, katana, linea, mainnet as ethereum, mantle, mode, monad, optimism, plasma, plumeMainnet, polygon, scroll, sei, soneium, sonic, story, unichain, worldchain, zksync, } from 'viem/chains';
|
|
5
5
|
import { TradeQuoteError } from '../../types.js';
|
|
6
6
|
import { RelayErrorCode } from './utils/types.js';
|
|
7
7
|
export const chainIdToRelayChainId = {
|
|
@@ -17,11 +17,37 @@ export const chainIdToRelayChainId = {
|
|
|
17
17
|
[gnosisChainId]: gnosis.id,
|
|
18
18
|
[avalancheChainId]: avalanche.id,
|
|
19
19
|
[bscChainId]: bsc.id,
|
|
20
|
-
|
|
20
|
+
// DISABLED: Tron deposits are built as simple TRC20 transfers instead of depositErc20() vault calls,
|
|
21
|
+
// and the Relay indexer notification is never sent for non-EVM chains. This causes deposits to be
|
|
22
|
+
// untracked by Relay, resulting in stuck/lost funds. Re-enable once the Tron transaction building
|
|
23
|
+
// is verified to use the Relay quote calldata (depositErc20) correctly.
|
|
24
|
+
// [tronChainId]: 728126428,
|
|
21
25
|
[monadChainId]: monad.id,
|
|
22
26
|
[hyperEvmChainId]: hyperEvm.id,
|
|
27
|
+
[mantleChainId]: mantle.id,
|
|
28
|
+
[inkChainId]: ink.id,
|
|
29
|
+
[megaethChainId]: 4326,
|
|
23
30
|
[plasmaChainId]: plasma.id,
|
|
24
31
|
[katanaChainId]: katana.id,
|
|
32
|
+
[etherealChainId]: 5064014,
|
|
33
|
+
[celoChainId]: celo.id,
|
|
34
|
+
[flowEvmChainId]: flowMainnet.id,
|
|
35
|
+
[plumeChainId]: plumeMainnet.id,
|
|
36
|
+
[storyChainId]: story.id,
|
|
37
|
+
[zkSyncEraChainId]: zksync.id,
|
|
38
|
+
[blastChainId]: blast.id,
|
|
39
|
+
[worldChainChainId]: worldchain.id,
|
|
40
|
+
[hemiChainId]: hemi.id,
|
|
41
|
+
[lineaChainId]: linea.id,
|
|
42
|
+
[berachainChainId]: berachain.id,
|
|
43
|
+
[scrollChainId]: scroll.id,
|
|
44
|
+
[cronosChainId]: cronos.id,
|
|
45
|
+
[sonicChainId]: sonic.id,
|
|
46
|
+
[unichainChainId]: unichain.id,
|
|
47
|
+
[bobChainId]: bob.id,
|
|
48
|
+
[modeChainId]: mode.id,
|
|
49
|
+
[soneiumChainId]: soneium.id,
|
|
50
|
+
[seiChainId]: sei.id,
|
|
25
51
|
};
|
|
26
52
|
export var RelayStatusMessage;
|
|
27
53
|
(function (RelayStatusMessage) {
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import type { ChainId } from '@shapeshiftoss/caip';
|
|
2
|
-
export declare const getRelayDefaultUserAddress: (chainId: ChainId) => "0x000000000000000000000000000000000000dead" | "
|
|
2
|
+
export declare const getRelayDefaultUserAddress: (chainId: ChainId) => "0x000000000000000000000000000000000000dead" | "CbKGgVKLJFb8bBrf58DnAkdryX6ubewVytn7X957YwNr" | "bc1q4vxn43l44h30nkluqfxd9eckf45vr2awz38lwa" | "TLsV52sRDL79HXGGm9yzwKibb6BeruhUzy";
|
|
@@ -1,13 +1,14 @@
|
|
|
1
|
-
import { btcChainId, fromChainId, monadChainId, solanaChainId, tronChainId, } from '@shapeshiftoss/caip';
|
|
1
|
+
import { baseChainId, btcChainId, fromChainId, monadChainId, solanaChainId, tronChainId, } from '@shapeshiftoss/caip';
|
|
2
2
|
import { evm, isEvmChainId } from '@shapeshiftoss/chain-adapters';
|
|
3
|
-
import { bnOrZero, convertBasisPointsToPercentage, convertDecimalPercentageToBasisPoints, convertPrecision, DAO_TREASURY_BASE, } from '@shapeshiftoss/utils';
|
|
3
|
+
import { bnOrZero, chainIdToFeeAssetId, convertBasisPointsToPercentage, convertDecimalPercentageToBasisPoints, convertPrecision, DAO_TREASURY_BASE, } from '@shapeshiftoss/utils';
|
|
4
4
|
import { Err, Ok } from '@sniptt/monads';
|
|
5
|
-
import { PublicKey } from '@solana/web3.js';
|
|
5
|
+
import { AddressLookupTableAccount, MessageV0, PublicKey, VersionedTransaction, } from '@solana/web3.js';
|
|
6
6
|
import axios from 'axios';
|
|
7
7
|
import { getAddress, zeroAddress } from 'viem';
|
|
8
8
|
import { MixPanelEvent, SwapperName, TradeQuoteError } from '../../../types.js';
|
|
9
9
|
import { getInputOutputRate, makeSwapErrorRight } from '../../../utils.js';
|
|
10
10
|
import { simulateWithStateOverrides } from '../../../utils/tenderly/index.js';
|
|
11
|
+
import { buildAffiliateFee } from '../../utils/affiliateFee.js';
|
|
11
12
|
import { isNativeEvmAsset } from '../../utils/helpers/helpers.js';
|
|
12
13
|
import { MAXIMUM_SUPPORTED_RELAY_STEPS, relayErrorCodeToTradeQuoteError } from '../constant.js';
|
|
13
14
|
import { getRelayAssetAddress } from '../utils/getRelayAssetAddress.js';
|
|
@@ -136,6 +137,13 @@ export async function getTrade({ input, deps, relayChainMap, }) {
|
|
|
136
137
|
}));
|
|
137
138
|
}
|
|
138
139
|
const { data: quote } = maybeQuote.unwrap();
|
|
140
|
+
const orderId = quote.protocol?.v2?.orderId;
|
|
141
|
+
if (!orderId && sellAsset.chainId === btcChainId) {
|
|
142
|
+
return Err(makeSwapErrorRight({
|
|
143
|
+
message: 'Relay quote missing protocol.v2.orderId',
|
|
144
|
+
code: TradeQuoteError.UnknownError,
|
|
145
|
+
}));
|
|
146
|
+
}
|
|
139
147
|
const { slippageTolerance, currencyOut, timeEstimate } = quote.details;
|
|
140
148
|
const buyAmountAfterFeesCryptoBaseUnit = currencyOut.amount;
|
|
141
149
|
const rate = getInputOutputRate({
|
|
@@ -330,7 +338,7 @@ export async function getTrade({ input, deps, relayChainMap, }) {
|
|
|
330
338
|
value: sellAmountIncludingProtocolFeesCryptoBaseUnit,
|
|
331
339
|
chainSpecific: {
|
|
332
340
|
pubkey: xpub ?? getRelayDefaultUserAddress(sellAsset.chainId),
|
|
333
|
-
opReturnData:
|
|
341
|
+
opReturnData: orderId,
|
|
334
342
|
},
|
|
335
343
|
sendMax: false,
|
|
336
344
|
};
|
|
@@ -383,7 +391,7 @@ export async function getTrade({ input, deps, relayChainMap, }) {
|
|
|
383
391
|
// Fallback to Relay's gas amount
|
|
384
392
|
return quote.fees.gas.amount;
|
|
385
393
|
})();
|
|
386
|
-
const steps = swapSteps.map((quoteStep) => {
|
|
394
|
+
const steps = await Promise.all(swapSteps.map(async (quoteStep) => {
|
|
387
395
|
const selectedItem = quoteStep.items?.[0];
|
|
388
396
|
if (!selectedItem)
|
|
389
397
|
throw new Error('Relay quote step contains no items');
|
|
@@ -393,7 +401,7 @@ export async function getTrade({ input, deps, relayChainMap, }) {
|
|
|
393
401
|
.plus(relayerFeesBuyAssetCryptoBaseUnit)
|
|
394
402
|
.plus(appFeesBaseUnit)
|
|
395
403
|
.toFixed();
|
|
396
|
-
const { allowanceContract, relayTransactionMetadata, solanaTransactionMetadata } = (() => {
|
|
404
|
+
const { allowanceContract, relayTransactionMetadata, solanaTransactionMetadata } = await (async () => {
|
|
397
405
|
if (!selectedItem.data)
|
|
398
406
|
throw new Error('Relay quote step contains no data');
|
|
399
407
|
if (isRelayQuoteUtxoItemData(selectedItem.data)) {
|
|
@@ -405,9 +413,10 @@ export async function getTrade({ input, deps, relayChainMap, }) {
|
|
|
405
413
|
relayTransactionMetadata: {
|
|
406
414
|
from: sendAddress,
|
|
407
415
|
psbt: selectedItem.data.psbt,
|
|
408
|
-
opReturnData:
|
|
416
|
+
opReturnData: orderId,
|
|
409
417
|
to: relayer,
|
|
410
418
|
relayId: quote.steps[0].requestId,
|
|
419
|
+
orderId,
|
|
411
420
|
},
|
|
412
421
|
solanaTransactionMetadata: undefined,
|
|
413
422
|
};
|
|
@@ -425,19 +434,48 @@ export async function getTrade({ input, deps, relayChainMap, }) {
|
|
|
425
434
|
gasLimit: selectedItem.data?.gas,
|
|
426
435
|
chainId: Number(fromChainId(sellAsset.chainId).chainReference),
|
|
427
436
|
relayId: quote.steps[0].requestId,
|
|
437
|
+
orderId,
|
|
428
438
|
},
|
|
429
439
|
solanaTransactionMetadata: undefined,
|
|
430
440
|
};
|
|
431
441
|
}
|
|
432
442
|
if (isRelayQuoteSolanaItemData(selectedItem.data)) {
|
|
443
|
+
const solanaInstructions = selectedItem.data?.instructions?.map(convertSolanaInstruction);
|
|
444
|
+
const addressLookupTableAddresses = selectedItem.data?.addressLookupTableAddresses;
|
|
445
|
+
// Build a trial VersionedTransaction to check if it exceeds the 1232-byte Solana tx size limit
|
|
446
|
+
const isOversized = await (async () => {
|
|
447
|
+
if (!solanaInstructions?.length || !sendAddress)
|
|
448
|
+
return false;
|
|
449
|
+
try {
|
|
450
|
+
const adapter = deps.assertGetSolanaChainAdapter(sellAsset.chainId);
|
|
451
|
+
const lookupTableInfos = await adapter.getAddressLookupTableAccounts(addressLookupTableAddresses);
|
|
452
|
+
const lookupTableAccounts = lookupTableInfos.map(info => new AddressLookupTableAccount({
|
|
453
|
+
key: new PublicKey(info.key),
|
|
454
|
+
state: AddressLookupTableAccount.deserialize(new Uint8Array(info.data)),
|
|
455
|
+
}));
|
|
456
|
+
const messageV0 = MessageV0.compile({
|
|
457
|
+
payerKey: new PublicKey(sendAddress),
|
|
458
|
+
instructions: solanaInstructions,
|
|
459
|
+
recentBlockhash: PublicKey.default.toString(),
|
|
460
|
+
addressLookupTableAccounts: lookupTableAccounts,
|
|
461
|
+
});
|
|
462
|
+
const txBytes = new VersionedTransaction(messageV0).serialize();
|
|
463
|
+
return txBytes.length > 1232;
|
|
464
|
+
}
|
|
465
|
+
catch {
|
|
466
|
+
return false;
|
|
467
|
+
}
|
|
468
|
+
})();
|
|
433
469
|
return {
|
|
434
470
|
allowanceContract: '',
|
|
435
471
|
solanaTransactionMetadata: {
|
|
436
|
-
addressLookupTableAddresses
|
|
437
|
-
instructions:
|
|
472
|
+
addressLookupTableAddresses,
|
|
473
|
+
instructions: solanaInstructions,
|
|
474
|
+
isOversized,
|
|
438
475
|
},
|
|
439
476
|
relayTransactionMetadata: {
|
|
440
477
|
relayId: quote.steps[0].requestId,
|
|
478
|
+
orderId,
|
|
441
479
|
},
|
|
442
480
|
};
|
|
443
481
|
}
|
|
@@ -447,6 +485,7 @@ export async function getTrade({ input, deps, relayChainMap, }) {
|
|
|
447
485
|
solanaTransactionMetadata: undefined,
|
|
448
486
|
relayTransactionMetadata: {
|
|
449
487
|
relayId: quote.steps[0].requestId,
|
|
488
|
+
orderId,
|
|
450
489
|
to: selectedItem.data?.parameter?.contract_address,
|
|
451
490
|
},
|
|
452
491
|
};
|
|
@@ -477,8 +516,19 @@ export async function getTrade({ input, deps, relayChainMap, }) {
|
|
|
477
516
|
estimatedExecutionTimeMs: timeEstimate * 1000,
|
|
478
517
|
solanaTransactionMetadata,
|
|
479
518
|
relayTransactionMetadata,
|
|
519
|
+
affiliateFee: buildAffiliateFee({
|
|
520
|
+
strategy: 'fixed_asset',
|
|
521
|
+
affiliateBps,
|
|
522
|
+
sellAsset,
|
|
523
|
+
buyAsset,
|
|
524
|
+
sellAmountCryptoBaseUnit: sellAmountIncludingProtocolFeesCryptoBaseUnit,
|
|
525
|
+
buyAmountCryptoBaseUnit: buyAmountAfterFeesCryptoBaseUnit,
|
|
526
|
+
fixedAssetId: chainIdToFeeAssetId(baseChainId),
|
|
527
|
+
fixedAsset: deps.assetsById[chainIdToFeeAssetId(baseChainId)],
|
|
528
|
+
isEstimate: true,
|
|
529
|
+
}),
|
|
480
530
|
};
|
|
481
|
-
});
|
|
531
|
+
}));
|
|
482
532
|
const baseQuoteOrRate = {
|
|
483
533
|
id: quote.steps[0].requestId,
|
|
484
534
|
rate,
|