@shapeshiftoss/swapper 20.2.0 → 20.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/.tsbuildinfo +1 -1
- package/dist/cjs/constants.js +15 -0
- package/dist/cjs/index.d.ts +2 -0
- package/dist/cjs/index.js +2 -0
- package/dist/cjs/swappers/ArbitrumBridgeSwapper/getTradeQuote/getTradeQuote.js +0 -2
- package/dist/cjs/swappers/AvnuSwapper/swapperApi/getTradeQuote.js +1 -2
- package/dist/cjs/swappers/BebopSwapper/utils/fetchFromBebop.d.ts +2 -1
- package/dist/cjs/swappers/BebopSwapper/utils/fetchFromBebop.js +21 -15
- package/dist/cjs/swappers/BebopSwapper/utils/getBebopSolanaTradeContext.js +1 -0
- package/dist/cjs/swappers/BobGatewaySwapper/BobGatewaySwapper.js +10 -1
- package/dist/cjs/swappers/BobGatewaySwapper/endpoints.js +2 -33
- package/dist/cjs/swappers/BobGatewaySwapper/swapperApi/getTradeQuote.js +5 -10
- package/dist/cjs/swappers/BobGatewaySwapper/swapperApi/getTradeRate.js +1 -2
- package/dist/cjs/swappers/BobGatewaySwapper/types.d.ts +3 -3
- package/dist/cjs/swappers/BobGatewaySwapper/utils/constants.d.ts +3 -2
- package/dist/cjs/swappers/BobGatewaySwapper/utils/constants.js +8 -5
- package/dist/cjs/swappers/BobGatewaySwapper/utils/getBobGatewayStepData.d.ts +2 -2
- package/dist/cjs/swappers/BobGatewaySwapper/utils/getBobGatewayStepData.js +30 -34
- package/dist/cjs/swappers/BobGatewaySwapper/utils/getBobGatewayStepData.test.d.ts +1 -0
- package/dist/cjs/swappers/BobGatewaySwapper/utils/getBobGatewayStepData.test.js +117 -0
- package/dist/cjs/swappers/BobGatewaySwapper/utils/getBobGatewayTradeContext.js +1 -2
- package/dist/cjs/swappers/BobGatewaySwapper/utils/helpers.d.ts +8 -11
- package/dist/cjs/swappers/BobGatewaySwapper/utils/helpers.js +36 -31
- package/dist/cjs/swappers/ButterSwap/swapperApi/getTradeQuote.js +2 -5
- package/dist/cjs/swappers/ButterSwap/types.d.ts +0 -11
- package/dist/cjs/swappers/ButterSwap/utils/constants.d.ts +2 -0
- package/dist/cjs/swappers/ButterSwap/utils/constants.js +4 -1
- package/dist/cjs/swappers/ButterSwap/utils/getButterSwapStepData.d.ts +2 -3
- package/dist/cjs/swappers/ButterSwap/utils/getButterSwapStepData.js +42 -14
- package/dist/cjs/swappers/ButterSwap/utils/getButterSwapStepData.test.js +120 -17
- package/dist/cjs/swappers/ButterSwap/utils/helpers.js +1 -2
- package/dist/cjs/swappers/ButterSwap/xhr.js +3 -3
- package/dist/cjs/swappers/CetusSwapper/swapperApi/getTradeQuote.js +0 -2
- package/dist/cjs/swappers/ChainflipSwapper/endpoints.js +3 -19
- package/dist/cjs/swappers/ChainflipSwapper/swapperApi/getTradeQuote.js +1 -2
- package/dist/cjs/swappers/ChainflipSwapper/types.d.ts +1 -0
- package/dist/cjs/swappers/ChainflipSwapper/utils/getChainflipStepData.d.ts +1 -1
- package/dist/cjs/swappers/ChainflipSwapper/utils/getChainflipStepData.js +31 -12
- package/dist/cjs/swappers/DebridgeSwapper/getTradeQuote/getTradeQuote.js +0 -2
- package/dist/cjs/swappers/FyndSwapper/FyndSwapper.d.ts +2 -0
- package/dist/cjs/swappers/FyndSwapper/FyndSwapper.js +5 -0
- package/dist/cjs/swappers/FyndSwapper/endpoints.d.ts +2 -0
- package/dist/cjs/swappers/FyndSwapper/endpoints.js +14 -0
- package/dist/cjs/swappers/FyndSwapper/getTradeQuote/getTradeQuote.d.ts +4 -0
- package/dist/cjs/swappers/FyndSwapper/getTradeQuote/getTradeQuote.js +43 -0
- package/dist/cjs/swappers/FyndSwapper/getTradeRate/getTradeRate.d.ts +4 -0
- package/dist/cjs/swappers/FyndSwapper/getTradeRate/getTradeRate.js +34 -0
- package/dist/cjs/swappers/FyndSwapper/index.d.ts +2 -0
- package/dist/cjs/swappers/FyndSwapper/index.js +7 -0
- package/dist/cjs/swappers/FyndSwapper/types.d.ts +41 -0
- package/dist/cjs/swappers/FyndSwapper/types.js +2 -0
- package/dist/cjs/swappers/FyndSwapper/utils/constants.d.ts +33 -0
- package/dist/cjs/swappers/FyndSwapper/utils/constants.js +38 -0
- package/dist/cjs/swappers/FyndSwapper/utils/fetchFromFynd.d.ts +13 -0
- package/dist/cjs/swappers/FyndSwapper/utils/fetchFromFynd.js +42 -0
- package/dist/cjs/swappers/FyndSwapper/utils/fyndService.d.ts +5 -0
- package/dist/cjs/swappers/FyndSwapper/utils/fyndService.js +9 -0
- package/dist/cjs/swappers/FyndSwapper/utils/getFyndStepData.d.ts +25 -0
- package/dist/cjs/swappers/FyndSwapper/utils/getFyndStepData.js +48 -0
- package/dist/cjs/swappers/FyndSwapper/utils/getFyndTradeContext.d.ts +18 -0
- package/dist/cjs/swappers/FyndSwapper/utils/getFyndTradeContext.js +94 -0
- package/dist/cjs/swappers/FyndSwapper/utils/helpers.d.ts +24 -0
- package/dist/cjs/swappers/FyndSwapper/utils/helpers.js +174 -0
- package/dist/cjs/swappers/FyndSwapper/utils/helpers.test.d.ts +1 -0
- package/dist/cjs/swappers/FyndSwapper/utils/helpers.test.js +101 -0
- package/dist/cjs/swappers/MayachainSwapper/generated/generatedTradableAssetMap.json +0 -1
- package/dist/cjs/swappers/NearIntentsSwapper/constants.d.ts +1 -0
- package/dist/cjs/swappers/NearIntentsSwapper/constants.js +3 -1
- package/dist/cjs/swappers/NearIntentsSwapper/utils/getNearIntentsStepData.js +10 -5
- package/dist/cjs/swappers/NearIntentsSwapper/utils/helpers.js +1 -1
- package/dist/cjs/swappers/PortalsSwapper/endpoints.js +4 -1
- package/dist/cjs/swappers/PortalsSwapper/getPortalsTradeQuote/getPortalsTradeQuote.js +1 -1
- package/dist/cjs/swappers/RelaySwapper/constant.d.ts +1 -1
- package/dist/cjs/swappers/RelaySwapper/constant.js +3 -2
- package/dist/cjs/swappers/RelaySwapper/getTradeQuote/getTradeQuote.js +3 -5
- package/dist/cjs/swappers/RelaySwapper/utils/getRelayAssetAddress.js +2 -1
- package/dist/cjs/swappers/RelaySwapper/utils/getRelayStepData.d.ts +2 -3
- package/dist/cjs/swappers/RelaySwapper/utils/getRelayStepData.js +46 -13
- package/dist/cjs/swappers/RelaySwapper/utils/getRelayStepData.test.d.ts +1 -0
- package/dist/cjs/swappers/RelaySwapper/utils/getRelayStepData.test.js +139 -0
- package/dist/cjs/swappers/RelaySwapper/utils/getRelayTradeContext.d.ts +1 -0
- package/dist/cjs/swappers/RelaySwapper/utils/getRelayTradeContext.js +4 -0
- package/dist/cjs/swappers/RelaySwapper/utils/helpers.js +1 -2
- package/dist/cjs/swappers/RelaySwapper/utils/relayStatus.js +3 -3
- package/dist/cjs/swappers/RelaySwapper/utils/relayTokenToAssetId.js +1 -1
- package/dist/cjs/swappers/RelaySwapper/utils/types.d.ts +10 -8
- package/dist/cjs/swappers/SunioSwapper/endpoints.js +3 -63
- package/dist/cjs/swappers/SunioSwapper/getSunioTradeQuote/getSunioTradeQuote.js +3 -4
- package/dist/cjs/swappers/SunioSwapper/getSunioTradeRate/getSunioTradeRate.js +7 -1
- package/dist/cjs/swappers/SunioSwapper/types.d.ts +0 -3
- package/dist/cjs/swappers/SunioSwapper/utils/buildSwapContractCall.d.ts +11 -6
- package/dist/cjs/swappers/SunioSwapper/utils/buildSwapContractCall.js +33 -30
- package/dist/cjs/swappers/SunioSwapper/utils/constants.d.ts +3 -3
- package/dist/cjs/swappers/SunioSwapper/utils/constants.js +5 -9
- package/dist/cjs/swappers/SunioSwapper/utils/getSunioStepData.d.ts +8 -3
- package/dist/cjs/swappers/SunioSwapper/utils/getSunioStepData.js +54 -20
- package/dist/cjs/swappers/SunioSwapper/utils/getSunioStepData.test.d.ts +1 -0
- package/dist/cjs/swappers/SunioSwapper/utils/getSunioStepData.test.js +177 -0
- package/dist/cjs/swappers/SunioSwapper/utils/getSunioTradeContext.js +3 -2
- package/dist/cjs/swappers/SunioSwapper/utils/helpers.js +2 -1
- package/dist/cjs/swappers/SymbiosisSwapper/SymbiosisSwapper.d.ts +2 -0
- package/dist/cjs/swappers/SymbiosisSwapper/SymbiosisSwapper.js +8 -0
- package/dist/cjs/swappers/SymbiosisSwapper/endpoints.d.ts +2 -0
- package/dist/cjs/swappers/SymbiosisSwapper/endpoints.js +66 -0
- package/dist/cjs/swappers/SymbiosisSwapper/getTradeQuote/getTradeQuote.d.ts +4 -0
- package/dist/cjs/swappers/SymbiosisSwapper/getTradeQuote/getTradeQuote.js +42 -0
- package/dist/cjs/swappers/SymbiosisSwapper/getTradeRate/getTradeRate.d.ts +4 -0
- package/dist/cjs/swappers/SymbiosisSwapper/getTradeRate/getTradeRate.js +34 -0
- package/dist/cjs/swappers/SymbiosisSwapper/index.d.ts +2 -0
- package/dist/cjs/swappers/SymbiosisSwapper/index.js +7 -0
- package/dist/cjs/swappers/SymbiosisSwapper/utils/constants.d.ts +19 -0
- package/dist/cjs/swappers/SymbiosisSwapper/utils/constants.js +64 -0
- package/dist/cjs/swappers/SymbiosisSwapper/utils/getSymbiosisStepData.d.ts +26 -0
- package/dist/cjs/swappers/SymbiosisSwapper/utils/getSymbiosisStepData.js +106 -0
- package/dist/cjs/swappers/SymbiosisSwapper/utils/getSymbiosisStepData.test.d.ts +1 -0
- package/dist/cjs/swappers/SymbiosisSwapper/utils/getSymbiosisStepData.test.js +161 -0
- package/dist/cjs/swappers/SymbiosisSwapper/utils/getSymbiosisTradeContext.d.ts +17 -0
- package/dist/cjs/swappers/SymbiosisSwapper/utils/getSymbiosisTradeContext.js +146 -0
- package/dist/cjs/swappers/SymbiosisSwapper/utils/helpers.d.ts +38 -0
- package/dist/cjs/swappers/SymbiosisSwapper/utils/helpers.js +172 -0
- package/dist/cjs/swappers/SymbiosisSwapper/utils/helpers.test.d.ts +1 -0
- package/dist/cjs/swappers/SymbiosisSwapper/utils/helpers.test.js +151 -0
- package/dist/cjs/swappers/SymbiosisSwapper/utils/symbiosisService.d.ts +5 -0
- package/dist/cjs/swappers/SymbiosisSwapper/utils/symbiosisService.js +18 -0
- package/dist/cjs/swappers/SymbiosisSwapper/utils/types.d.ts +83 -0
- package/dist/cjs/swappers/SymbiosisSwapper/utils/types.js +11 -0
- package/dist/cjs/swappers/ThorchainSwapper/endpoints.js +3 -4
- package/dist/cjs/swappers/ThorchainSwapper/generated/generatedThorLongtailTokens.json +1 -0
- package/dist/cjs/swappers/ThorchainSwapper/generated/generatedTradableAssetMap.json +1 -0
- package/dist/cjs/swappers/ThorchainSwapper/utils/addL1ToLongtailPartsToMemo/addL1ToLongtailPartsToMemo.js +6 -1
- package/dist/cjs/swappers/ThorchainSwapper/utils/addL1ToLongtailPartsToMemo/addL1ToLongtailPartsToMemo.test.js +15 -0
- package/dist/cjs/swappers/ThorchainSwapper/utils/assertValidLongtailTrade.js +7 -0
- package/dist/cjs/swappers/ThorchainSwapper/utils/getL1ToLongtailQuote.js +0 -2
- package/dist/cjs/swappers/ThorchainSwapper/utils/getL1ToLongtailRate.js +0 -2
- package/dist/cjs/swappers/ThorchainSwapper/utils/getLongtailQuote.js +1 -1
- package/dist/cjs/swappers/ThorchainSwapper/utils/getUniqueAddressSubstring/getUniqueAddressSubstring.d.ts +1 -1
- package/dist/cjs/swappers/ThorchainSwapper/utils/getUniqueAddressSubstring/getUniqueAddressSubstring.js +17 -20
- package/dist/cjs/swappers/ThorchainSwapper/utils/getUniqueAddressSubstring/getUniqueAddressSubstring.test.js +31 -0
- package/dist/cjs/swappers/ZrxSwapper/getZrxTradeQuote/getZrxTradeQuote.js +24 -1
- package/dist/cjs/swappers/ZrxSwapper/getZrxTradeQuote/getZrxTradeQuote.test.d.ts +1 -0
- package/dist/cjs/swappers/ZrxSwapper/getZrxTradeQuote/getZrxTradeQuote.test.js +110 -0
- package/dist/cjs/swappers/ZrxSwapper/types.d.ts +2 -1
- package/dist/cjs/swappers/ZrxSwapper/utils/getZrxNativeCheckDeadline.d.ts +1 -0
- package/dist/cjs/swappers/ZrxSwapper/utils/getZrxNativeCheckDeadline.js +26 -0
- package/dist/cjs/types.d.ts +15 -13
- package/dist/cjs/types.js +2 -0
- package/dist/cjs/utils/helpers.d.ts +1 -2
- package/dist/cjs/utils/helpers.js +8 -32
- package/dist/cjs/utils/helpers.test.js +6 -2
- package/dist/cjs/utils/thorchain/getThorStepData.js +32 -49
- package/dist/cjs/utils/thorchain/getThorStepData.tron.test.d.ts +1 -0
- package/dist/cjs/utils/thorchain/getThorStepData.tron.test.js +93 -0
- package/dist/cjs/utils/thorchain/index.d.ts +0 -1
- package/dist/cjs/utils/thorchain/index.js +1 -14
- package/dist/cjs/utils/tron/constants.d.ts +1 -0
- package/dist/cjs/utils/tron/constants.js +5 -0
- package/dist/cjs/utils/tron/getTronNetworkFeeCryptoBaseUnit.d.ts +27 -0
- package/dist/cjs/utils/tron/getTronNetworkFeeCryptoBaseUnit.js +64 -0
- package/dist/cjs/utils/tron/getTronNetworkFeeCryptoBaseUnit.test.d.ts +1 -0
- package/dist/cjs/utils/tron/getTronNetworkFeeCryptoBaseUnit.test.js +157 -0
- package/dist/cjs/utils/tron/getUnsignedTronTransaction.d.ts +2 -1
- package/dist/cjs/utils/tron/getUnsignedTronTransaction.js +14 -48
- package/dist/cjs/utils/tron/getUnsignedTronTransaction.test.d.ts +1 -0
- package/dist/cjs/utils/tron/getUnsignedTronTransaction.test.js +76 -0
- package/dist/cjs/utils/tron/index.d.ts +2 -0
- package/dist/cjs/utils/tron/index.js +2 -0
- package/dist/esm/.tsbuildinfo +1 -1
- package/dist/esm/constants.js +15 -0
- package/dist/esm/index.d.ts +2 -0
- package/dist/esm/index.js +2 -0
- package/dist/esm/swappers/ArbitrumBridgeSwapper/getTradeQuote/getTradeQuote.js +0 -2
- package/dist/esm/swappers/AvnuSwapper/swapperApi/getTradeQuote.js +1 -2
- package/dist/esm/swappers/BebopSwapper/utils/fetchFromBebop.d.ts +2 -1
- package/dist/esm/swappers/BebopSwapper/utils/fetchFromBebop.js +21 -15
- package/dist/esm/swappers/BebopSwapper/utils/getBebopSolanaTradeContext.js +1 -0
- package/dist/esm/swappers/BobGatewaySwapper/BobGatewaySwapper.js +11 -2
- package/dist/esm/swappers/BobGatewaySwapper/endpoints.js +5 -36
- package/dist/esm/swappers/BobGatewaySwapper/swapperApi/getTradeQuote.js +5 -10
- package/dist/esm/swappers/BobGatewaySwapper/swapperApi/getTradeRate.js +1 -2
- package/dist/esm/swappers/BobGatewaySwapper/types.d.ts +3 -3
- package/dist/esm/swappers/BobGatewaySwapper/utils/constants.d.ts +3 -2
- package/dist/esm/swappers/BobGatewaySwapper/utils/constants.js +8 -7
- package/dist/esm/swappers/BobGatewaySwapper/utils/getBobGatewayStepData.d.ts +2 -2
- package/dist/esm/swappers/BobGatewaySwapper/utils/getBobGatewayStepData.js +21 -25
- package/dist/esm/swappers/BobGatewaySwapper/utils/getBobGatewayStepData.test.d.ts +1 -0
- package/dist/esm/swappers/BobGatewaySwapper/utils/getBobGatewayStepData.test.js +115 -0
- package/dist/esm/swappers/BobGatewaySwapper/utils/getBobGatewayTradeContext.js +1 -2
- package/dist/esm/swappers/BobGatewaySwapper/utils/helpers.d.ts +8 -11
- package/dist/esm/swappers/BobGatewaySwapper/utils/helpers.js +13 -30
- package/dist/esm/swappers/ButterSwap/swapperApi/getTradeQuote.js +2 -5
- package/dist/esm/swappers/ButterSwap/types.d.ts +0 -11
- package/dist/esm/swappers/ButterSwap/utils/constants.d.ts +2 -0
- package/dist/esm/swappers/ButterSwap/utils/constants.js +3 -0
- package/dist/esm/swappers/ButterSwap/utils/getButterSwapStepData.d.ts +2 -3
- package/dist/esm/swappers/ButterSwap/utils/getButterSwapStepData.js +42 -14
- package/dist/esm/swappers/ButterSwap/utils/getButterSwapStepData.test.js +120 -17
- package/dist/esm/swappers/ButterSwap/utils/helpers.js +1 -2
- package/dist/esm/swappers/ButterSwap/xhr.js +3 -3
- package/dist/esm/swappers/CetusSwapper/swapperApi/getTradeQuote.js +0 -2
- package/dist/esm/swappers/ChainflipSwapper/endpoints.js +3 -19
- package/dist/esm/swappers/ChainflipSwapper/swapperApi/getTradeQuote.js +1 -2
- package/dist/esm/swappers/ChainflipSwapper/types.d.ts +1 -0
- package/dist/esm/swappers/ChainflipSwapper/utils/getChainflipStepData.d.ts +1 -1
- package/dist/esm/swappers/ChainflipSwapper/utils/getChainflipStepData.js +32 -13
- package/dist/esm/swappers/DebridgeSwapper/getTradeQuote/getTradeQuote.js +0 -2
- package/dist/esm/swappers/FyndSwapper/FyndSwapper.d.ts +2 -0
- package/dist/esm/swappers/FyndSwapper/FyndSwapper.js +2 -0
- package/dist/esm/swappers/FyndSwapper/endpoints.d.ts +2 -0
- package/dist/esm/swappers/FyndSwapper/endpoints.js +11 -0
- package/dist/esm/swappers/FyndSwapper/getTradeQuote/getTradeQuote.d.ts +4 -0
- package/dist/esm/swappers/FyndSwapper/getTradeQuote/getTradeQuote.js +39 -0
- package/dist/esm/swappers/FyndSwapper/getTradeRate/getTradeRate.d.ts +4 -0
- package/dist/esm/swappers/FyndSwapper/getTradeRate/getTradeRate.js +30 -0
- package/dist/esm/swappers/FyndSwapper/index.d.ts +2 -0
- package/dist/esm/swappers/FyndSwapper/index.js +2 -0
- package/dist/esm/swappers/FyndSwapper/types.d.ts +41 -0
- package/dist/esm/swappers/FyndSwapper/types.js +1 -0
- package/dist/esm/swappers/FyndSwapper/utils/constants.d.ts +33 -0
- package/dist/esm/swappers/FyndSwapper/utils/constants.js +35 -0
- package/dist/esm/swappers/FyndSwapper/utils/fetchFromFynd.d.ts +13 -0
- package/dist/esm/swappers/FyndSwapper/utils/fetchFromFynd.js +38 -0
- package/dist/esm/swappers/FyndSwapper/utils/fyndService.d.ts +5 -0
- package/dist/esm/swappers/FyndSwapper/utils/fyndService.js +3 -0
- package/dist/esm/swappers/FyndSwapper/utils/getFyndStepData.d.ts +25 -0
- package/dist/esm/swappers/FyndSwapper/utils/getFyndStepData.js +44 -0
- package/dist/esm/swappers/FyndSwapper/utils/getFyndTradeContext.d.ts +18 -0
- package/dist/esm/swappers/FyndSwapper/utils/getFyndTradeContext.js +90 -0
- package/dist/esm/swappers/FyndSwapper/utils/helpers.d.ts +24 -0
- package/dist/esm/swappers/FyndSwapper/utils/helpers.js +162 -0
- package/dist/esm/swappers/FyndSwapper/utils/helpers.test.d.ts +1 -0
- package/dist/esm/swappers/FyndSwapper/utils/helpers.test.js +99 -0
- package/dist/esm/swappers/MayachainSwapper/generated/generatedTradableAssetMap.json +0 -1
- package/dist/esm/swappers/NearIntentsSwapper/constants.d.ts +1 -0
- package/dist/esm/swappers/NearIntentsSwapper/constants.js +2 -0
- package/dist/esm/swappers/NearIntentsSwapper/utils/getNearIntentsStepData.js +10 -5
- package/dist/esm/swappers/NearIntentsSwapper/utils/helpers.js +2 -2
- package/dist/esm/swappers/PortalsSwapper/endpoints.js +4 -1
- package/dist/esm/swappers/PortalsSwapper/getPortalsTradeQuote/getPortalsTradeQuote.js +2 -2
- package/dist/esm/swappers/RelaySwapper/constant.d.ts +1 -1
- package/dist/esm/swappers/RelaySwapper/constant.js +2 -1
- package/dist/esm/swappers/RelaySwapper/getTradeQuote/getTradeQuote.js +3 -5
- package/dist/esm/swappers/RelaySwapper/utils/getRelayAssetAddress.js +3 -2
- package/dist/esm/swappers/RelaySwapper/utils/getRelayStepData.d.ts +2 -3
- package/dist/esm/swappers/RelaySwapper/utils/getRelayStepData.js +46 -13
- package/dist/esm/swappers/RelaySwapper/utils/getRelayStepData.test.d.ts +1 -0
- package/dist/esm/swappers/RelaySwapper/utils/getRelayStepData.test.js +137 -0
- package/dist/esm/swappers/RelaySwapper/utils/getRelayTradeContext.d.ts +1 -0
- package/dist/esm/swappers/RelaySwapper/utils/getRelayTradeContext.js +5 -1
- package/dist/esm/swappers/RelaySwapper/utils/helpers.js +1 -2
- package/dist/esm/swappers/RelaySwapper/utils/relayStatus.js +3 -3
- package/dist/esm/swappers/RelaySwapper/utils/relayTokenToAssetId.js +3 -3
- package/dist/esm/swappers/RelaySwapper/utils/types.d.ts +10 -8
- package/dist/esm/swappers/SunioSwapper/endpoints.js +5 -65
- package/dist/esm/swappers/SunioSwapper/getSunioTradeQuote/getSunioTradeQuote.js +3 -4
- package/dist/esm/swappers/SunioSwapper/getSunioTradeRate/getSunioTradeRate.js +7 -1
- package/dist/esm/swappers/SunioSwapper/types.d.ts +0 -3
- package/dist/esm/swappers/SunioSwapper/utils/buildSwapContractCall.d.ts +11 -6
- package/dist/esm/swappers/SunioSwapper/utils/buildSwapContractCall.js +31 -28
- package/dist/esm/swappers/SunioSwapper/utils/constants.d.ts +3 -3
- package/dist/esm/swappers/SunioSwapper/utils/constants.js +4 -8
- package/dist/esm/swappers/SunioSwapper/utils/getSunioStepData.d.ts +8 -3
- package/dist/esm/swappers/SunioSwapper/utils/getSunioStepData.js +52 -18
- package/dist/esm/swappers/SunioSwapper/utils/getSunioStepData.test.d.ts +1 -0
- package/dist/esm/swappers/SunioSwapper/utils/getSunioStepData.test.js +175 -0
- package/dist/esm/swappers/SunioSwapper/utils/getSunioTradeContext.js +2 -1
- package/dist/esm/swappers/SunioSwapper/utils/helpers.js +3 -2
- package/dist/esm/swappers/SymbiosisSwapper/SymbiosisSwapper.d.ts +2 -0
- package/dist/esm/swappers/SymbiosisSwapper/SymbiosisSwapper.js +5 -0
- package/dist/esm/swappers/SymbiosisSwapper/endpoints.d.ts +2 -0
- package/dist/esm/swappers/SymbiosisSwapper/endpoints.js +63 -0
- package/dist/esm/swappers/SymbiosisSwapper/getTradeQuote/getTradeQuote.d.ts +4 -0
- package/dist/esm/swappers/SymbiosisSwapper/getTradeQuote/getTradeQuote.js +38 -0
- package/dist/esm/swappers/SymbiosisSwapper/getTradeRate/getTradeRate.d.ts +4 -0
- package/dist/esm/swappers/SymbiosisSwapper/getTradeRate/getTradeRate.js +30 -0
- package/dist/esm/swappers/SymbiosisSwapper/index.d.ts +2 -0
- package/dist/esm/swappers/SymbiosisSwapper/index.js +2 -0
- package/dist/esm/swappers/SymbiosisSwapper/utils/constants.d.ts +19 -0
- package/dist/esm/swappers/SymbiosisSwapper/utils/constants.js +61 -0
- package/dist/esm/swappers/SymbiosisSwapper/utils/getSymbiosisStepData.d.ts +26 -0
- package/dist/esm/swappers/SymbiosisSwapper/utils/getSymbiosisStepData.js +102 -0
- package/dist/esm/swappers/SymbiosisSwapper/utils/getSymbiosisStepData.test.d.ts +1 -0
- package/dist/esm/swappers/SymbiosisSwapper/utils/getSymbiosisStepData.test.js +159 -0
- package/dist/esm/swappers/SymbiosisSwapper/utils/getSymbiosisTradeContext.d.ts +17 -0
- package/dist/esm/swappers/SymbiosisSwapper/utils/getSymbiosisTradeContext.js +139 -0
- package/dist/esm/swappers/SymbiosisSwapper/utils/helpers.d.ts +38 -0
- package/dist/esm/swappers/SymbiosisSwapper/utils/helpers.js +156 -0
- package/dist/esm/swappers/SymbiosisSwapper/utils/helpers.test.d.ts +1 -0
- package/dist/esm/swappers/SymbiosisSwapper/utils/helpers.test.js +149 -0
- package/dist/esm/swappers/SymbiosisSwapper/utils/symbiosisService.d.ts +5 -0
- package/dist/esm/swappers/SymbiosisSwapper/utils/symbiosisService.js +12 -0
- package/dist/esm/swappers/SymbiosisSwapper/utils/types.d.ts +83 -0
- package/dist/esm/swappers/SymbiosisSwapper/utils/types.js +8 -0
- package/dist/esm/swappers/ThorchainSwapper/endpoints.js +4 -5
- package/dist/esm/swappers/ThorchainSwapper/generated/generatedThorLongtailTokens.json +1 -0
- package/dist/esm/swappers/ThorchainSwapper/generated/generatedTradableAssetMap.json +1 -0
- package/dist/esm/swappers/ThorchainSwapper/utils/addL1ToLongtailPartsToMemo/addL1ToLongtailPartsToMemo.js +6 -1
- package/dist/esm/swappers/ThorchainSwapper/utils/addL1ToLongtailPartsToMemo/addL1ToLongtailPartsToMemo.test.js +15 -0
- package/dist/esm/swappers/ThorchainSwapper/utils/assertValidLongtailTrade.js +7 -0
- package/dist/esm/swappers/ThorchainSwapper/utils/getL1ToLongtailQuote.js +0 -2
- package/dist/esm/swappers/ThorchainSwapper/utils/getL1ToLongtailRate.js +0 -2
- package/dist/esm/swappers/ThorchainSwapper/utils/getLongtailQuote.js +1 -1
- package/dist/esm/swappers/ThorchainSwapper/utils/getUniqueAddressSubstring/getUniqueAddressSubstring.d.ts +1 -1
- package/dist/esm/swappers/ThorchainSwapper/utils/getUniqueAddressSubstring/getUniqueAddressSubstring.js +17 -20
- package/dist/esm/swappers/ThorchainSwapper/utils/getUniqueAddressSubstring/getUniqueAddressSubstring.test.js +29 -1
- package/dist/esm/swappers/ZrxSwapper/getZrxTradeQuote/getZrxTradeQuote.js +25 -2
- package/dist/esm/swappers/ZrxSwapper/getZrxTradeQuote/getZrxTradeQuote.test.d.ts +1 -0
- package/dist/esm/swappers/ZrxSwapper/getZrxTradeQuote/getZrxTradeQuote.test.js +108 -0
- package/dist/esm/swappers/ZrxSwapper/types.d.ts +2 -1
- package/dist/esm/swappers/ZrxSwapper/utils/getZrxNativeCheckDeadline.d.ts +1 -0
- package/dist/esm/swappers/ZrxSwapper/utils/getZrxNativeCheckDeadline.js +22 -0
- package/dist/esm/types.d.ts +15 -13
- package/dist/esm/types.js +2 -0
- package/dist/esm/utils/helpers.d.ts +1 -2
- package/dist/esm/utils/helpers.js +9 -33
- package/dist/esm/utils/helpers.test.js +6 -2
- package/dist/esm/utils/thorchain/getThorStepData.js +32 -49
- package/dist/esm/utils/thorchain/getThorStepData.tron.test.d.ts +1 -0
- package/dist/esm/utils/thorchain/getThorStepData.tron.test.js +91 -0
- package/dist/esm/utils/thorchain/index.d.ts +0 -1
- package/dist/esm/utils/thorchain/index.js +0 -1
- package/dist/esm/utils/tron/constants.d.ts +1 -0
- package/dist/esm/utils/tron/constants.js +2 -0
- package/dist/esm/utils/tron/getTronNetworkFeeCryptoBaseUnit.d.ts +27 -0
- package/dist/esm/utils/tron/getTronNetworkFeeCryptoBaseUnit.js +59 -0
- package/dist/esm/utils/tron/getTronNetworkFeeCryptoBaseUnit.test.d.ts +1 -0
- package/dist/esm/utils/tron/getTronNetworkFeeCryptoBaseUnit.test.js +155 -0
- package/dist/esm/utils/tron/getUnsignedTronTransaction.d.ts +2 -1
- package/dist/esm/utils/tron/getUnsignedTronTransaction.js +14 -48
- package/dist/esm/utils/tron/getUnsignedTronTransaction.test.d.ts +1 -0
- package/dist/esm/utils/tron/getUnsignedTronTransaction.test.js +74 -0
- package/dist/esm/utils/tron/index.d.ts +2 -0
- package/dist/esm/utils/tron/index.js +2 -0
- package/package.json +8 -8
- package/dist/cjs/swappers/SunioSwapper/utils/buildSwapRouteParameters.d.ts +0 -14
- package/dist/cjs/swappers/SunioSwapper/utils/buildSwapRouteParameters.js +0 -32
- package/dist/cjs/swappers/SunioSwapper/utils/estimateSunioNetworkFee.d.ts +0 -12
- package/dist/cjs/swappers/SunioSwapper/utils/estimateSunioNetworkFee.js +0 -78
- package/dist/cjs/swappers/SunioSwapper/utils/getSunioTransactionFees.d.ts +0 -2
- package/dist/cjs/swappers/SunioSwapper/utils/getSunioTransactionFees.js +0 -36
- package/dist/cjs/utils/thorchain/tron/getTronTransactionFees.d.ts +0 -2
- package/dist/cjs/utils/thorchain/tron/getTronTransactionFees.js +0 -68
- package/dist/cjs/utils/thorchain/tron/getUnsignedTronTransaction.d.ts +0 -3
- package/dist/cjs/utils/thorchain/tron/getUnsignedTronTransaction.js +0 -35
- package/dist/cjs/utils/thorchain/tron/index.d.ts +0 -2
- package/dist/cjs/utils/thorchain/tron/index.js +0 -18
- package/dist/esm/swappers/SunioSwapper/utils/buildSwapRouteParameters.d.ts +0 -14
- package/dist/esm/swappers/SunioSwapper/utils/buildSwapRouteParameters.js +0 -28
- package/dist/esm/swappers/SunioSwapper/utils/estimateSunioNetworkFee.d.ts +0 -12
- package/dist/esm/swappers/SunioSwapper/utils/estimateSunioNetworkFee.js +0 -74
- package/dist/esm/swappers/SunioSwapper/utils/getSunioTransactionFees.d.ts +0 -2
- package/dist/esm/swappers/SunioSwapper/utils/getSunioTransactionFees.js +0 -32
- package/dist/esm/utils/thorchain/tron/getTronTransactionFees.d.ts +0 -2
- package/dist/esm/utils/thorchain/tron/getTronTransactionFees.js +0 -64
- package/dist/esm/utils/thorchain/tron/getUnsignedTronTransaction.d.ts +0 -3
- package/dist/esm/utils/thorchain/tron/getUnsignedTronTransaction.js +0 -31
- package/dist/esm/utils/thorchain/tron/index.d.ts +0 -2
- package/dist/esm/utils/thorchain/tron/index.js +0 -2
- /package/dist/cjs/swappers/SunioSwapper/utils/{fetchFromSunio.d.ts → fetchSunioQuote.d.ts} +0 -0
- /package/dist/cjs/swappers/SunioSwapper/utils/{fetchFromSunio.js → fetchSunioQuote.js} +0 -0
- /package/dist/esm/swappers/SunioSwapper/utils/{fetchFromSunio.d.ts → fetchSunioQuote.d.ts} +0 -0
- /package/dist/esm/swappers/SunioSwapper/utils/{fetchFromSunio.js → fetchSunioQuote.js} +0 -0
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
import { tronChainId } from '@shapeshiftoss/caip';
|
|
2
|
+
import { tron } from '@shapeshiftoss/chain-adapters';
|
|
3
|
+
import { describe, expect, it, vi } from 'vitest';
|
|
4
|
+
import { ETH } from '../../../utils/test-data/assets.js';
|
|
5
|
+
import { buildSunioSwapCalldata } from './buildSwapContractCall.js';
|
|
6
|
+
import { SUNIO_FALLBACK_SWAP_ENERGY_NATIVE, SUNIO_FALLBACK_SWAP_ENERGY_TRC20, SUNIO_SMART_ROUTER_CONTRACT, } from './constants.js';
|
|
7
|
+
import { getSunioStepData } from './getSunioStepData.js';
|
|
8
|
+
const USDT = 'TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t';
|
|
9
|
+
const TRX = { ...ETH, assetId: `${tronChainId}/slip44:195`, chainId: tronChainId };
|
|
10
|
+
const USDT_TRON = { ...ETH, assetId: `${tronChainId}/trc20:${USDT}`, chainId: tronChainId };
|
|
11
|
+
const FROM = 'TT2T17KZhoDu47i2E4FWxfG79zdkEWkU9N';
|
|
12
|
+
const route = {
|
|
13
|
+
tokens: ['T9yD14Nj9j7xAB4dbGeiX9h8unkKHxuWwb', USDT],
|
|
14
|
+
poolVersions: ['v2'],
|
|
15
|
+
poolFees: ['0'],
|
|
16
|
+
};
|
|
17
|
+
const tronAdapter = ({ txFee = '9000000', allowance = '0' } = {}) => ({
|
|
18
|
+
getFeeData: vi.fn().mockResolvedValue({ fast: { txFee } }),
|
|
19
|
+
httpProvider: {
|
|
20
|
+
getChainPrices: () => Promise.resolve({ energyPrice: 100, bandwidthPrice: 1000 }),
|
|
21
|
+
getTrc20Allowance: vi.fn().mockResolvedValue(allowance),
|
|
22
|
+
getTrc20Balance: vi.fn().mockResolvedValue('100000000'),
|
|
23
|
+
getContractEnergyShare: vi.fn().mockResolvedValue({
|
|
24
|
+
callerPercent: 100,
|
|
25
|
+
originEnergyLimit: 0,
|
|
26
|
+
originEnergyAvailable: 0,
|
|
27
|
+
}),
|
|
28
|
+
},
|
|
29
|
+
});
|
|
30
|
+
const makeDeps = (tron) => ({ assertGetTronChainAdapter: () => tron });
|
|
31
|
+
const baseArgs = {
|
|
32
|
+
route,
|
|
33
|
+
sellAmountCryptoBaseUnit: '100000000',
|
|
34
|
+
buyAmountCryptoBaseUnit: '30000000',
|
|
35
|
+
};
|
|
36
|
+
// The calldata is fixed-width ABI, so its size doesn't depend on the recipient or deadline
|
|
37
|
+
const calldataBandwidthBytes = tron.getTronContractCallBandwidthBytes(buildSunioSwapCalldata({
|
|
38
|
+
route,
|
|
39
|
+
sellAmountCryptoBaseUnit: '100000000',
|
|
40
|
+
minBuyAmountCryptoBaseUnit: '30000000',
|
|
41
|
+
recipient: FROM,
|
|
42
|
+
slippageTolerancePercentageDecimal: '0.005',
|
|
43
|
+
deadline: 0,
|
|
44
|
+
}));
|
|
45
|
+
const fallbackFee = (energy) => String(Number(energy) * 1.2 * 100 + calldataBandwidthBytes * 1000);
|
|
46
|
+
describe('getSunioStepData', () => {
|
|
47
|
+
describe('quote', () => {
|
|
48
|
+
it('carries the router call as transactionData and simulates it', async () => {
|
|
49
|
+
const adapter = tronAdapter();
|
|
50
|
+
const actual = await getSunioStepData({
|
|
51
|
+
...baseArgs,
|
|
52
|
+
type: 'quote',
|
|
53
|
+
input: {
|
|
54
|
+
receiveAddress: FROM,
|
|
55
|
+
slippageTolerancePercentageDecimal: '0.01',
|
|
56
|
+
},
|
|
57
|
+
deps: makeDeps(adapter),
|
|
58
|
+
sellAsset: TRX,
|
|
59
|
+
from: FROM,
|
|
60
|
+
});
|
|
61
|
+
const { transactionData, networkFeeCryptoBaseUnit, deadline } = actual.unwrap();
|
|
62
|
+
expect(transactionData).toMatchObject({
|
|
63
|
+
type: 'tron',
|
|
64
|
+
to: SUNIO_SMART_ROUTER_CONTRACT,
|
|
65
|
+
value: '100000000',
|
|
66
|
+
});
|
|
67
|
+
// swapExactInput selector
|
|
68
|
+
expect(transactionData.data).toMatch(/^0x[0-9a-f]{8}/);
|
|
69
|
+
expect(networkFeeCryptoBaseUnit).toBe('9000000');
|
|
70
|
+
expect(deadline).toBeGreaterThan(Date.now());
|
|
71
|
+
expect(adapter.getFeeData).toHaveBeenCalledWith({
|
|
72
|
+
to: SUNIO_SMART_ROUTER_CONTRACT,
|
|
73
|
+
value: '100000000',
|
|
74
|
+
chainSpecific: { from: FROM, data: transactionData.data, requireEnergyShare: true },
|
|
75
|
+
});
|
|
76
|
+
});
|
|
77
|
+
it('sends no value for a token sell', async () => {
|
|
78
|
+
const actual = await getSunioStepData({
|
|
79
|
+
...baseArgs,
|
|
80
|
+
type: 'quote',
|
|
81
|
+
input: { receiveAddress: FROM },
|
|
82
|
+
deps: makeDeps(tronAdapter()),
|
|
83
|
+
sellAsset: USDT_TRON,
|
|
84
|
+
from: FROM,
|
|
85
|
+
});
|
|
86
|
+
expect(actual.unwrap().transactionData.value).toBe('0');
|
|
87
|
+
});
|
|
88
|
+
it('fails a native quote when the simulation fails', async () => {
|
|
89
|
+
const adapter = tronAdapter();
|
|
90
|
+
adapter.getFeeData.mockRejectedValue(new Error('REVERT opcode executed'));
|
|
91
|
+
const actual = await getSunioStepData({
|
|
92
|
+
...baseArgs,
|
|
93
|
+
type: 'quote',
|
|
94
|
+
input: { receiveAddress: FROM },
|
|
95
|
+
deps: makeDeps(adapter),
|
|
96
|
+
sellAsset: TRX,
|
|
97
|
+
from: FROM,
|
|
98
|
+
});
|
|
99
|
+
expect(actual.isErr()).toBe(true);
|
|
100
|
+
});
|
|
101
|
+
it('prices the token worst case when the allowance is not granted yet', async () => {
|
|
102
|
+
const adapter = tronAdapter({ allowance: '0' });
|
|
103
|
+
adapter.getFeeData.mockRejectedValue(new Error('REVERT opcode executed'));
|
|
104
|
+
const actual = await getSunioStepData({
|
|
105
|
+
...baseArgs,
|
|
106
|
+
type: 'quote',
|
|
107
|
+
input: { receiveAddress: FROM },
|
|
108
|
+
deps: makeDeps(adapter),
|
|
109
|
+
sellAsset: USDT_TRON,
|
|
110
|
+
from: FROM,
|
|
111
|
+
});
|
|
112
|
+
const { transactionData, networkFeeCryptoBaseUnit } = actual.unwrap();
|
|
113
|
+
expect(transactionData.to).toBe(SUNIO_SMART_ROUTER_CONTRACT);
|
|
114
|
+
expect(networkFeeCryptoBaseUnit).toBe(fallbackFee(SUNIO_FALLBACK_SWAP_ENERGY_TRC20));
|
|
115
|
+
expect(adapter.httpProvider.getTrc20Allowance).toHaveBeenCalledWith({
|
|
116
|
+
contractAddress: USDT,
|
|
117
|
+
owner: FROM,
|
|
118
|
+
spender: SUNIO_SMART_ROUTER_CONTRACT,
|
|
119
|
+
});
|
|
120
|
+
});
|
|
121
|
+
it('fails a token quote that reverts with its allowance in place', async () => {
|
|
122
|
+
const adapter = tronAdapter({ allowance: '100000000' });
|
|
123
|
+
adapter.getFeeData.mockRejectedValue(new Error('REVERT opcode executed'));
|
|
124
|
+
const actual = await getSunioStepData({
|
|
125
|
+
...baseArgs,
|
|
126
|
+
type: 'quote',
|
|
127
|
+
input: { receiveAddress: FROM },
|
|
128
|
+
deps: makeDeps(adapter),
|
|
129
|
+
sellAsset: USDT_TRON,
|
|
130
|
+
from: FROM,
|
|
131
|
+
});
|
|
132
|
+
expect(actual.isErr()).toBe(true);
|
|
133
|
+
});
|
|
134
|
+
});
|
|
135
|
+
describe('rate', () => {
|
|
136
|
+
it('simulates from the receive address when present', async () => {
|
|
137
|
+
const actual = await getSunioStepData({
|
|
138
|
+
...baseArgs,
|
|
139
|
+
type: 'rate',
|
|
140
|
+
input: { receiveAddress: FROM },
|
|
141
|
+
deps: makeDeps(tronAdapter()),
|
|
142
|
+
sellAsset: TRX,
|
|
143
|
+
from: FROM,
|
|
144
|
+
});
|
|
145
|
+
expect(actual.unwrap()).toEqual({ networkFeeCryptoBaseUnit: '9000000' });
|
|
146
|
+
});
|
|
147
|
+
it('prices the measured worst case without an address to simulate from', async () => {
|
|
148
|
+
const actual = await getSunioStepData({
|
|
149
|
+
...baseArgs,
|
|
150
|
+
type: 'rate',
|
|
151
|
+
input: {},
|
|
152
|
+
deps: makeDeps(tronAdapter()),
|
|
153
|
+
sellAsset: TRX,
|
|
154
|
+
});
|
|
155
|
+
expect(actual.unwrap()).toEqual({
|
|
156
|
+
networkFeeCryptoBaseUnit: fallbackFee(SUNIO_FALLBACK_SWAP_ENERGY_NATIVE),
|
|
157
|
+
});
|
|
158
|
+
});
|
|
159
|
+
it('prices the token worst case when a pre-approval simulation reverts', async () => {
|
|
160
|
+
const adapter = tronAdapter();
|
|
161
|
+
adapter.getFeeData.mockRejectedValue(new Error('REVERT opcode executed'));
|
|
162
|
+
const actual = await getSunioStepData({
|
|
163
|
+
...baseArgs,
|
|
164
|
+
type: 'rate',
|
|
165
|
+
input: { receiveAddress: FROM },
|
|
166
|
+
deps: makeDeps(adapter),
|
|
167
|
+
sellAsset: USDT_TRON,
|
|
168
|
+
from: FROM,
|
|
169
|
+
});
|
|
170
|
+
expect(actual.unwrap()).toEqual({
|
|
171
|
+
networkFeeCryptoBaseUnit: fallbackFee(SUNIO_FALLBACK_SWAP_ENERGY_TRC20),
|
|
172
|
+
});
|
|
173
|
+
});
|
|
174
|
+
});
|
|
175
|
+
});
|
|
@@ -4,7 +4,7 @@ import { SwapperName, TradeQuoteError } from '../../../types.js';
|
|
|
4
4
|
import { getInputOutputRate, makeSwapErrorRight } from '../../../utils/index.js';
|
|
5
5
|
import { buildAffiliateFee } from '../../../utils/affiliateFee.js';
|
|
6
6
|
import { DEFAULT_SLIPPAGE_PERCENTAGE, SUNIO_SMART_ROUTER_CONTRACT } from './constants.js';
|
|
7
|
-
import { fetchSunioQuote } from './
|
|
7
|
+
import { fetchSunioQuote } from './fetchSunioQuote.js';
|
|
8
8
|
import { assertValidTrade } from './helpers.js';
|
|
9
9
|
import { sunioServiceFactory } from './sunioService.js';
|
|
10
10
|
export const getSunioTradeContext = async ({ input, deps, }) => {
|
|
@@ -84,6 +84,7 @@ export const getSunioTradeContext = async ({ input, deps, }) => {
|
|
|
84
84
|
deps,
|
|
85
85
|
sellAsset,
|
|
86
86
|
sellAmountCryptoBaseUnit: sellAmountIncludingProtocolFeesCryptoBaseUnit,
|
|
87
|
+
buyAmountCryptoBaseUnit,
|
|
87
88
|
route: bestRoute,
|
|
88
89
|
},
|
|
89
90
|
});
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { fromAssetId, tronChainId } from '@shapeshiftoss/caip';
|
|
2
|
+
import { tron } from '@shapeshiftoss/chain-adapters';
|
|
2
3
|
import { isToken } from '@shapeshiftoss/utils';
|
|
3
4
|
import { Err, Ok } from '@sniptt/monads';
|
|
4
5
|
import { SwapperName, TradeQuoteError } from '../../../types.js';
|
|
5
6
|
import { makeSwapErrorRight } from '../../../utils/index.js';
|
|
6
|
-
import { SUNIO_SUPPORTED_CHAIN_IDS
|
|
7
|
+
import { SUNIO_SUPPORTED_CHAIN_IDS } from './constants.js';
|
|
7
8
|
export const isSupportedChainId = (chainId) => {
|
|
8
9
|
return SUNIO_SUPPORTED_CHAIN_IDS.includes(chainId);
|
|
9
10
|
};
|
|
@@ -12,7 +13,7 @@ export const assetIdToTronToken = (assetId) => {
|
|
|
12
13
|
const { assetReference } = fromAssetId(assetId);
|
|
13
14
|
return assetReference;
|
|
14
15
|
}
|
|
15
|
-
return
|
|
16
|
+
return tron.TRON_ZERO_ADDRESS;
|
|
16
17
|
};
|
|
17
18
|
export const assertValidTrade = ({ sellAsset, buyAsset, }) => {
|
|
18
19
|
if (!isSupportedChainId(sellAsset.chainId)) {
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { tronChainId } from '@shapeshiftoss/caip';
|
|
2
|
+
import { isEvmChainId } from '@shapeshiftoss/chain-adapters';
|
|
3
|
+
import { TxStatus } from '@shapeshiftoss/unchained-client';
|
|
4
|
+
import { checkEvmSwapStatus } from '../../utils/index.js';
|
|
5
|
+
import { getEvmTransactionFees, getUnsignedEvmTransaction } from '../../utils/evm/index.js';
|
|
6
|
+
import { getTronTransactionFees, getUnsignedTronTransaction } from '../../utils/tron/index.js';
|
|
7
|
+
import { getTradeQuote } from './getTradeQuote/getTradeQuote.js';
|
|
8
|
+
import { getTradeRate } from './getTradeRate/getTradeRate.js';
|
|
9
|
+
import { chainIdToSymbiosisChainId, SYMBIOSIS_EXPLORER_URL } from './utils/constants.js';
|
|
10
|
+
import { getSymbiosisTradeStatus, isTronSourceTxFailed } from './utils/helpers.js';
|
|
11
|
+
import { symbiosisService } from './utils/symbiosisService.js';
|
|
12
|
+
export const symbiosisApi = {
|
|
13
|
+
getTradeQuote: (input, deps) => getTradeQuote(input, deps),
|
|
14
|
+
getTradeRate: (input, deps) => getTradeRate(input, deps),
|
|
15
|
+
getEvmTransactionFees,
|
|
16
|
+
getUnsignedEvmTransaction,
|
|
17
|
+
getTronTransactionFees,
|
|
18
|
+
getUnsignedTronTransaction,
|
|
19
|
+
checkTradeStatus: async ({ txHash, chainId, address, config, swap, fetchIsSmartContractAddressQuery, assertGetEvmChainAdapter, assertGetTronChainAdapter, }) => {
|
|
20
|
+
if (!swap)
|
|
21
|
+
throw new Error('Missing swap');
|
|
22
|
+
const evmSourceTxStatus = isEvmChainId(chainId)
|
|
23
|
+
? await checkEvmSwapStatus({
|
|
24
|
+
txHash,
|
|
25
|
+
chainId,
|
|
26
|
+
address,
|
|
27
|
+
assertGetEvmChainAdapter,
|
|
28
|
+
fetchIsSmartContractAddressQuery,
|
|
29
|
+
})
|
|
30
|
+
: undefined;
|
|
31
|
+
if (evmSourceTxStatus && evmSourceTxStatus.status !== TxStatus.Confirmed) {
|
|
32
|
+
return evmSourceTxStatus;
|
|
33
|
+
}
|
|
34
|
+
const sourceTxHash = evmSourceTxStatus?.buyTxHash ?? txHash;
|
|
35
|
+
if (chainId === tronChainId) {
|
|
36
|
+
const sourceTx = await assertGetTronChainAdapter(chainId)
|
|
37
|
+
.httpProvider.getTransaction({ txid: sourceTxHash })
|
|
38
|
+
.catch(() => null);
|
|
39
|
+
if (!sourceTx?.confirmations) {
|
|
40
|
+
return { buyTxHash: undefined, status: TxStatus.Pending, message: undefined };
|
|
41
|
+
}
|
|
42
|
+
if (isTronSourceTxFailed(sourceTx)) {
|
|
43
|
+
return { buyTxHash: undefined, status: TxStatus.Failed, message: undefined };
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
const sellSymbiosisChainId = chainIdToSymbiosisChainId[chainId];
|
|
47
|
+
const buySymbiosisChainId = chainIdToSymbiosisChainId[swap.buyAsset.chainId];
|
|
48
|
+
const maybeStatusResponse = await symbiosisService.get(`${config.VITE_SYMBIOSIS_API_URL}/v2/tx/${sellSymbiosisChainId}/${sourceTxHash}`);
|
|
49
|
+
if (maybeStatusResponse.isErr()) {
|
|
50
|
+
return {
|
|
51
|
+
buyTxHash: undefined,
|
|
52
|
+
status: TxStatus.Unknown,
|
|
53
|
+
message: undefined,
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
const { data: response } = maybeStatusResponse.unwrap();
|
|
57
|
+
return {
|
|
58
|
+
...getSymbiosisTradeStatus({ response, buySymbiosisChainId }),
|
|
59
|
+
swapperTxId: sourceTxHash,
|
|
60
|
+
swapperTxLink: `${SYMBIOSIS_EXPLORER_URL}/transactions/${sellSymbiosisChainId}/${sourceTxHash}`,
|
|
61
|
+
};
|
|
62
|
+
},
|
|
63
|
+
};
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { Result } from '@sniptt/monads';
|
|
2
|
+
import type { SwapErrorRight, SwapperDeps, TradeQuote } from '../../../types.js';
|
|
3
|
+
import type { SymbiosisTradeQuoteInput } from '../utils/types.js';
|
|
4
|
+
export declare const getTradeQuote: (input: SymbiosisTradeQuoteInput, deps: SwapperDeps) => Promise<Result<TradeQuote[], SwapErrorRight>>;
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { Err, Ok } from '@sniptt/monads';
|
|
2
|
+
import { assertQuoteAddresses } from '../../../utils/index.js';
|
|
3
|
+
import { getSymbiosisStepData } from '../utils/getSymbiosisStepData.js';
|
|
4
|
+
import { getSymbiosisTradeContext } from '../utils/getSymbiosisTradeContext.js';
|
|
5
|
+
export const getTradeQuote = async (input, deps) => {
|
|
6
|
+
const { accountNumber } = input;
|
|
7
|
+
const maybeAddresses = assertQuoteAddresses(input);
|
|
8
|
+
if (maybeAddresses.isErr())
|
|
9
|
+
return Err(maybeAddresses.unwrapErr());
|
|
10
|
+
const { sendAddress, receiveAddress } = maybeAddresses.unwrap();
|
|
11
|
+
const maybeContext = await getSymbiosisTradeContext({
|
|
12
|
+
input,
|
|
13
|
+
deps,
|
|
14
|
+
from: sendAddress,
|
|
15
|
+
to: receiveAddress,
|
|
16
|
+
});
|
|
17
|
+
if (maybeContext.isErr())
|
|
18
|
+
return Err(maybeContext.unwrapErr());
|
|
19
|
+
const { tradeCommon, stepCommon, protocolFees, stepDataArgs } = maybeContext.unwrap();
|
|
20
|
+
const maybeStepData = await getSymbiosisStepData({ ...stepDataArgs, type: 'quote', input });
|
|
21
|
+
if (maybeStepData.isErr())
|
|
22
|
+
return Err(maybeStepData.unwrapErr());
|
|
23
|
+
const { transactionData, networkFeeCryptoBaseUnit } = maybeStepData.unwrap();
|
|
24
|
+
const tradeQuote = {
|
|
25
|
+
...tradeCommon,
|
|
26
|
+
quoteOrRate: 'quote',
|
|
27
|
+
receiveAddress,
|
|
28
|
+
steps: [
|
|
29
|
+
{
|
|
30
|
+
...stepCommon,
|
|
31
|
+
accountNumber,
|
|
32
|
+
transactionData,
|
|
33
|
+
feeData: { networkFeeCryptoBaseUnit, protocolFees },
|
|
34
|
+
},
|
|
35
|
+
],
|
|
36
|
+
};
|
|
37
|
+
return Ok([tradeQuote]);
|
|
38
|
+
};
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { Result } from '@sniptt/monads';
|
|
2
|
+
import type { SwapErrorRight, SwapperDeps, TradeRate } from '../../../types.js';
|
|
3
|
+
import type { SymbiosisTradeRateInput } from '../utils/types.js';
|
|
4
|
+
export declare const getTradeRate: (input: SymbiosisTradeRateInput, deps: SwapperDeps) => Promise<Result<TradeRate[], SwapErrorRight>>;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { Err, Ok } from '@sniptt/monads';
|
|
2
|
+
import { getSymbiosisStepData } from '../utils/getSymbiosisStepData.js';
|
|
3
|
+
import { getSymbiosisTradeContext } from '../utils/getSymbiosisTradeContext.js';
|
|
4
|
+
import { getDefaultUserAddress } from '../utils/helpers.js';
|
|
5
|
+
export const getTradeRate = async (input, deps) => {
|
|
6
|
+
const { accountNumber, sellAsset, buyAsset, sendAddress, receiveAddress } = input;
|
|
7
|
+
const from = sendAddress ?? getDefaultUserAddress(sellAsset.chainId);
|
|
8
|
+
const to = receiveAddress ?? getDefaultUserAddress(buyAsset.chainId);
|
|
9
|
+
const maybeContext = await getSymbiosisTradeContext({ input, deps, from, to });
|
|
10
|
+
if (maybeContext.isErr())
|
|
11
|
+
return Err(maybeContext.unwrapErr());
|
|
12
|
+
const { tradeCommon, stepCommon, protocolFees, stepDataArgs } = maybeContext.unwrap();
|
|
13
|
+
const maybeStepData = await getSymbiosisStepData({ ...stepDataArgs, type: 'rate', input });
|
|
14
|
+
if (maybeStepData.isErr())
|
|
15
|
+
return Err(maybeStepData.unwrapErr());
|
|
16
|
+
const { networkFeeCryptoBaseUnit } = maybeStepData.unwrap();
|
|
17
|
+
const tradeRate = {
|
|
18
|
+
...tradeCommon,
|
|
19
|
+
quoteOrRate: 'rate',
|
|
20
|
+
receiveAddress: to,
|
|
21
|
+
steps: [
|
|
22
|
+
{
|
|
23
|
+
...stepCommon,
|
|
24
|
+
accountNumber,
|
|
25
|
+
feeData: { networkFeeCryptoBaseUnit, protocolFees },
|
|
26
|
+
},
|
|
27
|
+
],
|
|
28
|
+
};
|
|
29
|
+
return Ok([tradeRate]);
|
|
30
|
+
};
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { ChainId } from '@shapeshiftoss/caip';
|
|
2
|
+
export declare const chainIdToSymbiosisChainId: Partial<Record<ChainId, number>>;
|
|
3
|
+
export declare const symbiosisChainIdToChainId: Partial<Record<number, ChainId>>;
|
|
4
|
+
export declare const SYMBIOSIS_DISABLED_PROVIDERS = "chainflip-bridge,thorchain-bridge,changelly,intent-solver";
|
|
5
|
+
export declare const SYMBIOSIS_CROSSCHAIN_SWAP_KIND = "crosschain-swap";
|
|
6
|
+
export declare const SYMBIOSIS_SRC_CHAIN_SWAP_LABEL = "src-chain-swap";
|
|
7
|
+
export declare const SYMBIOSIS_PARTNER_SWAP_LABEL = "partner-swap";
|
|
8
|
+
export declare const SYMBIOSIS_SEMI_CENTRALIZED_LABEL = "semi-centralized";
|
|
9
|
+
export declare const SYMBIOSIS_MIN_SLIPPAGE_BPS = 10;
|
|
10
|
+
export declare const SYMBIOSIS_MAX_SLIPPAGE_BPS = 1000;
|
|
11
|
+
export declare const SYMBIOSIS_PARTNER_ADDRESS = "0xF5AA59151bE6515C4Ca68A0282CF68B3eA4846fC";
|
|
12
|
+
export declare const SYMBIOSIS_PARTNER_FEE_BPS = "60";
|
|
13
|
+
export declare const SYMBIOSIS_PARTNER_FEE_DESCRIPTION = "Partner fee";
|
|
14
|
+
export declare const SYMBIOSIS_PARTNER_ID = "shapeshift";
|
|
15
|
+
export declare const DEFAULT_SYMBIOSIS_EVM_USER_ADDRESS = "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045";
|
|
16
|
+
export declare const DEFAULT_SYMBIOSIS_TRON_USER_ADDRESS = "TLa2f6VPqDgRE67v1736s7bJ8Ray5wYjU7";
|
|
17
|
+
export declare const SYMBIOSIS_TRON_BRIDGE_ENERGY = "470000";
|
|
18
|
+
export declare const SYMBIOSIS_TRON_SOURCE_SWAP_ENERGY = "580000";
|
|
19
|
+
export declare const SYMBIOSIS_EXPLORER_URL = "https://explorer.symbiosis.finance";
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { abstractChainId, arbitrumChainId, avalancheChainId, baseChainId, berachainChainId, bscChainId, cronosChainId, ethChainId, fromChainId, gnosisChainId, hyperEvmChainId, katanaChainId, lineaChainId, mantleChainId, modeChainId, monadChainId, optimismChainId, plasmaChainId, polygonChainId, robinhoodChainId, scrollChainId, seiChainId, soneiumChainId, sonicChainId, tronChainId, unichainChainId, zkSyncEraChainId, } from '@shapeshiftoss/caip';
|
|
2
|
+
const SYMBIOSIS_TRON_CHAIN_ID = 728126428;
|
|
3
|
+
const SYMBIOSIS_SUPPORTED_EVM_CHAIN_IDS = [
|
|
4
|
+
ethChainId,
|
|
5
|
+
bscChainId,
|
|
6
|
+
polygonChainId,
|
|
7
|
+
avalancheChainId,
|
|
8
|
+
arbitrumChainId,
|
|
9
|
+
optimismChainId,
|
|
10
|
+
baseChainId,
|
|
11
|
+
gnosisChainId,
|
|
12
|
+
zkSyncEraChainId,
|
|
13
|
+
lineaChainId,
|
|
14
|
+
scrollChainId,
|
|
15
|
+
mantleChainId,
|
|
16
|
+
modeChainId,
|
|
17
|
+
seiChainId,
|
|
18
|
+
cronosChainId,
|
|
19
|
+
sonicChainId,
|
|
20
|
+
abstractChainId,
|
|
21
|
+
berachainChainId,
|
|
22
|
+
unichainChainId,
|
|
23
|
+
soneiumChainId,
|
|
24
|
+
hyperEvmChainId,
|
|
25
|
+
katanaChainId,
|
|
26
|
+
plasmaChainId,
|
|
27
|
+
monadChainId,
|
|
28
|
+
robinhoodChainId,
|
|
29
|
+
];
|
|
30
|
+
// Symbiosis uses the EVM chain reference as its chain id, and its own id for Tron
|
|
31
|
+
const SYMBIOSIS_CHAIN_ID_ENTRIES = [
|
|
32
|
+
...SYMBIOSIS_SUPPORTED_EVM_CHAIN_IDS.map((chainId) => [
|
|
33
|
+
chainId,
|
|
34
|
+
Number(fromChainId(chainId).chainReference),
|
|
35
|
+
]),
|
|
36
|
+
[tronChainId, SYMBIOSIS_TRON_CHAIN_ID],
|
|
37
|
+
];
|
|
38
|
+
export const chainIdToSymbiosisChainId = Object.fromEntries(SYMBIOSIS_CHAIN_ID_ENTRIES);
|
|
39
|
+
export const symbiosisChainIdToChainId = Object.fromEntries(SYMBIOSIS_CHAIN_ID_ENTRIES.map(([chainId, symbiosisChainId]) => [symbiosisChainId, chainId]));
|
|
40
|
+
// Disabled liquidity providers: bridges we integrate directly, custodial Changelly, and intent routes that skip the partner fee
|
|
41
|
+
export const SYMBIOSIS_DISABLED_PROVIDERS = 'chainflip-bridge,thorchain-bridge,changelly,intent-solver';
|
|
42
|
+
export const SYMBIOSIS_CROSSCHAIN_SWAP_KIND = 'crosschain-swap';
|
|
43
|
+
export const SYMBIOSIS_SRC_CHAIN_SWAP_LABEL = 'src-chain-swap';
|
|
44
|
+
// Labels on routes with a leg outside Symbiosis
|
|
45
|
+
export const SYMBIOSIS_PARTNER_SWAP_LABEL = 'partner-swap';
|
|
46
|
+
export const SYMBIOSIS_SEMI_CENTRALIZED_LABEL = 'semi-centralized';
|
|
47
|
+
// /v2/quote answers 'Slippage is too low' under 10 and 'too high' over 1000
|
|
48
|
+
export const SYMBIOSIS_MIN_SLIPPAGE_BPS = 10;
|
|
49
|
+
export const SYMBIOSIS_MAX_SLIPPAGE_BPS = 1000;
|
|
50
|
+
// Our registered partner address and the fixed fee rate Symbiosis has configured for it
|
|
51
|
+
export const SYMBIOSIS_PARTNER_ADDRESS = '0xF5AA59151bE6515C4Ca68A0282CF68B3eA4846fC';
|
|
52
|
+
export const SYMBIOSIS_PARTNER_FEE_BPS = '60';
|
|
53
|
+
export const SYMBIOSIS_PARTNER_FEE_DESCRIPTION = 'Partner fee';
|
|
54
|
+
// Sent as X-Partner-Id so Symbiosis attributes our swaps to this client id in its explorer and metrics
|
|
55
|
+
export const SYMBIOSIS_PARTNER_ID = 'shapeshift';
|
|
56
|
+
export const DEFAULT_SYMBIOSIS_EVM_USER_ADDRESS = '0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045';
|
|
57
|
+
export const DEFAULT_SYMBIOSIS_TRON_USER_ADDRESS = 'TLa2f6VPqDgRE67v1736s7bJ8Ray5wYjU7';
|
|
58
|
+
// metaRoute energy over 31 mainnet calls on 2026-10-05: up to 467,826 bridging the sell token, up to 578,456 with a source swap first
|
|
59
|
+
export const SYMBIOSIS_TRON_BRIDGE_ENERGY = '470000';
|
|
60
|
+
export const SYMBIOSIS_TRON_SOURCE_SWAP_ENERGY = '580000';
|
|
61
|
+
export const SYMBIOSIS_EXPLORER_URL = 'https://explorer.symbiosis.finance';
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { Result } from '@sniptt/monads';
|
|
2
|
+
import type { StepDataArgs, SwapErrorRight, TxBuildData } from '../../../types.js';
|
|
3
|
+
import type { SymbiosisSwapTx } from './types.js';
|
|
4
|
+
type BaseArgs = {
|
|
5
|
+
swapTx: SymbiosisSwapTx;
|
|
6
|
+
sellAmountCryptoBaseUnit: string;
|
|
7
|
+
spenderAddress: string;
|
|
8
|
+
tronFallbackEnergy: string;
|
|
9
|
+
};
|
|
10
|
+
export type GetSymbiosisStepDataArgs = StepDataArgs<BaseArgs, {
|
|
11
|
+
from: string;
|
|
12
|
+
}>;
|
|
13
|
+
type SymbiosisRateStepData = {
|
|
14
|
+
networkFeeCryptoBaseUnit: string | undefined;
|
|
15
|
+
};
|
|
16
|
+
type SymbiosisQuoteStepData = {
|
|
17
|
+
transactionData: TxBuildData;
|
|
18
|
+
networkFeeCryptoBaseUnit: string;
|
|
19
|
+
};
|
|
20
|
+
export declare function getSymbiosisStepData(args: Extract<GetSymbiosisStepDataArgs, {
|
|
21
|
+
type: 'rate';
|
|
22
|
+
}>): Promise<Result<SymbiosisRateStepData, SwapErrorRight>>;
|
|
23
|
+
export declare function getSymbiosisStepData(args: Extract<GetSymbiosisStepDataArgs, {
|
|
24
|
+
type: 'quote';
|
|
25
|
+
}>): Promise<Result<SymbiosisQuoteStepData, SwapErrorRight>>;
|
|
26
|
+
export {};
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import { fromChainId } from '@shapeshiftoss/caip';
|
|
2
|
+
import { tron } from '@shapeshiftoss/chain-adapters';
|
|
3
|
+
import { bnOrZero, isToken } from '@shapeshiftoss/utils';
|
|
4
|
+
import { Err, Ok } from '@sniptt/monads';
|
|
5
|
+
import { makeNetworkFeeEstimationFailedErr, makeTradeStepBuildFailedErr } from '../../../utils/index.js';
|
|
6
|
+
import { getEvmNetworkFeeCryptoBaseUnit } from '../../../utils/evm/index.js';
|
|
7
|
+
import { getTronContractCallFallbackFeeCryptoBaseUnit, getTronContractCallNetworkFeeCryptoBaseUnit, } from '../../../utils/tron/index.js';
|
|
8
|
+
import { chainIdToSymbiosisChainId } from './constants.js';
|
|
9
|
+
import { buildSymbiosisTronCallData } from './helpers.js';
|
|
10
|
+
export async function getSymbiosisStepData(args) {
|
|
11
|
+
const { swapTx, sellAsset, sellAmountCryptoBaseUnit, spenderAddress, tronFallbackEnergy, from, type, input, deps, } = args;
|
|
12
|
+
// Symbiosis adds its own fee to the native value on other route kinds - a step must send exactly the sell amount
|
|
13
|
+
const expectedValue = isToken(sellAsset.assetId) ? '0' : sellAmountCryptoBaseUnit;
|
|
14
|
+
if (!bnOrZero(swapTx.tx.value).eq(expectedValue)) {
|
|
15
|
+
return Err(makeTradeStepBuildFailedErr('getSymbiosisStepData'));
|
|
16
|
+
}
|
|
17
|
+
if (swapTx.tx.chainId !== chainIdToSymbiosisChainId[sellAsset.chainId]) {
|
|
18
|
+
return Err(makeTradeStepBuildFailedErr('getSymbiosisStepData'));
|
|
19
|
+
}
|
|
20
|
+
switch (swapTx.type) {
|
|
21
|
+
case 'evm': {
|
|
22
|
+
const { tx } = swapTx;
|
|
23
|
+
const adapter = deps.assertGetEvmChainAdapter(sellAsset.chainId);
|
|
24
|
+
const supportsEIP1559 = 'supportsEIP1559' in input ? input.supportsEIP1559 : false;
|
|
25
|
+
const transactionData = {
|
|
26
|
+
type: 'evm',
|
|
27
|
+
chainId: Number(fromChainId(sellAsset.chainId).chainReference),
|
|
28
|
+
to: tx.to,
|
|
29
|
+
data: tx.data,
|
|
30
|
+
value: tx.value ?? '0',
|
|
31
|
+
};
|
|
32
|
+
const stateOverride = { sellAsset, sellAmountCryptoBaseUnit, spenderAddress };
|
|
33
|
+
if (type === 'rate') {
|
|
34
|
+
const networkFeeCryptoBaseUnit = await getEvmNetworkFeeCryptoBaseUnit({
|
|
35
|
+
adapter,
|
|
36
|
+
transactionData,
|
|
37
|
+
from,
|
|
38
|
+
supportsEIP1559,
|
|
39
|
+
stateOverride,
|
|
40
|
+
}).catch(() => undefined);
|
|
41
|
+
const stepData = { networkFeeCryptoBaseUnit };
|
|
42
|
+
return Ok(stepData);
|
|
43
|
+
}
|
|
44
|
+
try {
|
|
45
|
+
const networkFeeCryptoBaseUnit = await getEvmNetworkFeeCryptoBaseUnit({
|
|
46
|
+
adapter,
|
|
47
|
+
transactionData,
|
|
48
|
+
from,
|
|
49
|
+
supportsEIP1559,
|
|
50
|
+
stateOverride,
|
|
51
|
+
});
|
|
52
|
+
const stepData = { transactionData, networkFeeCryptoBaseUnit };
|
|
53
|
+
return Ok(stepData);
|
|
54
|
+
}
|
|
55
|
+
catch (error) {
|
|
56
|
+
return Err(makeNetworkFeeEstimationFailedErr('getSymbiosisStepData', error));
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
case 'tron': {
|
|
60
|
+
const { tx } = swapTx;
|
|
61
|
+
if (!tx.functionSelector)
|
|
62
|
+
return Err(makeTradeStepBuildFailedErr('getSymbiosisStepData'));
|
|
63
|
+
const adapter = deps.assertGetTronChainAdapter(sellAsset.chainId);
|
|
64
|
+
const call = {
|
|
65
|
+
to: tx.to,
|
|
66
|
+
data: buildSymbiosisTronCallData({ functionSelector: tx.functionSelector, data: tx.data }),
|
|
67
|
+
value: tx.value ?? '0',
|
|
68
|
+
};
|
|
69
|
+
if (type === 'rate') {
|
|
70
|
+
const networkFeeCryptoBaseUnit = await getTronContractCallFallbackFeeCryptoBaseUnit({
|
|
71
|
+
adapter,
|
|
72
|
+
energy: tronFallbackEnergy,
|
|
73
|
+
bandwidthBytes: tron.getTronContractCallBandwidthBytes(call.data),
|
|
74
|
+
contractAddress: call.to,
|
|
75
|
+
fullEnergyOnShareLookupFailure: true,
|
|
76
|
+
}).catch(() => undefined);
|
|
77
|
+
const stepData = { networkFeeCryptoBaseUnit };
|
|
78
|
+
return Ok(stepData);
|
|
79
|
+
}
|
|
80
|
+
try {
|
|
81
|
+
const stepData = {
|
|
82
|
+
transactionData: { type: 'tron', ...call },
|
|
83
|
+
networkFeeCryptoBaseUnit: await getTronContractCallNetworkFeeCryptoBaseUnit({
|
|
84
|
+
adapter,
|
|
85
|
+
transactionData: call,
|
|
86
|
+
from,
|
|
87
|
+
sellAsset,
|
|
88
|
+
sellAmountCryptoBaseUnit,
|
|
89
|
+
spenderAddress,
|
|
90
|
+
fallbackEnergy: tronFallbackEnergy,
|
|
91
|
+
}),
|
|
92
|
+
};
|
|
93
|
+
return Ok(stepData);
|
|
94
|
+
}
|
|
95
|
+
catch (error) {
|
|
96
|
+
return Err(makeNetworkFeeEstimationFailedErr('getSymbiosisStepData', error));
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
default:
|
|
100
|
+
return Err(makeTradeStepBuildFailedErr('getSymbiosisStepData'));
|
|
101
|
+
}
|
|
102
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|