@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
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import type { AssetId, ChainId } from '@shapeshiftoss/caip';
|
|
2
2
|
import type { TradeAmount, TradeStepCommon } from '../types.js';
|
|
3
3
|
import { SwapperName } from '../types.js';
|
|
4
|
-
export declare const FALLBACK_QUOTE_DEADLINE_MS = 60000;
|
|
5
4
|
export declare const getTradeAmount: (input: {
|
|
6
5
|
sellAmountIncludingProtocolFeesCryptoBaseUnit: string;
|
|
7
6
|
} | {
|
|
@@ -10,5 +9,5 @@ export declare const getTradeAmount: (input: {
|
|
|
10
9
|
export declare const normalizeEpochToMs: (value: number) => number;
|
|
11
10
|
export declare const isNativeEvmAsset: (assetId: AssetId) => boolean;
|
|
12
11
|
export declare const getTreasuryAddressFromChainId: (chainId: ChainId) => string;
|
|
13
|
-
export type DepositAddressStep = Pick<TradeStepCommon, '
|
|
12
|
+
export type DepositAddressStep = Pick<TradeStepCommon, 'swapperMetadata'>;
|
|
14
13
|
export declare const getDepositAddress: (step: DepositAddressStep, swapperName: SwapperName) => string | undefined;
|
|
@@ -1,9 +1,7 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { CHAIN_NAMESPACE, fromAssetId } from '@shapeshiftoss/caip';
|
|
2
2
|
import { KnownChainIds } from '@shapeshiftoss/types';
|
|
3
|
-
import { DAO_TREASURY_ARBITRUM, DAO_TREASURY_AVALANCHE, DAO_TREASURY_BASE, DAO_TREASURY_BITCOIN, DAO_TREASURY_BOB, DAO_TREASURY_BSC, DAO_TREASURY_ETHEREUM_MAINNET, DAO_TREASURY_GNOSIS, DAO_TREASURY_HYPEREVM, DAO_TREASURY_MEGAETH, DAO_TREASURY_MONAD, DAO_TREASURY_OPTIMISM, DAO_TREASURY_PLASMA, DAO_TREASURY_POLYGON, DAO_TREASURY_ROBINHOOD, DAO_TREASURY_SOLANA, DAO_TREASURY_STARKNET, DAO_TREASURY_TON, isTreasuryChainId, } from '@shapeshiftoss/utils';
|
|
3
|
+
import { chainIdToFeeAssetId, DAO_TREASURY_ARBITRUM, DAO_TREASURY_AVALANCHE, DAO_TREASURY_BASE, DAO_TREASURY_BITCOIN, DAO_TREASURY_BOB, DAO_TREASURY_BSC, DAO_TREASURY_ETHEREUM_MAINNET, DAO_TREASURY_GNOSIS, DAO_TREASURY_HYPEREVM, DAO_TREASURY_MEGAETH, DAO_TREASURY_MONAD, DAO_TREASURY_OPTIMISM, DAO_TREASURY_PLASMA, DAO_TREASURY_POLYGON, DAO_TREASURY_ROBINHOOD, DAO_TREASURY_SOLANA, DAO_TREASURY_STARKNET, DAO_TREASURY_TON, isTreasuryChainId, } from '@shapeshiftoss/utils';
|
|
4
4
|
import { SwapperName } from '../types.js';
|
|
5
|
-
// Deadline for providers without their own expiry - short enough to keep priced amounts honest
|
|
6
|
-
export const FALLBACK_QUOTE_DEADLINE_MS = 60_000;
|
|
7
5
|
export const getTradeAmount = (input) => 'buyAmountCryptoBaseUnit' in input
|
|
8
6
|
? { direction: 'exactOut', cryptoBaseUnit: input.buyAmountCryptoBaseUnit }
|
|
9
7
|
: { direction: 'exactIn', cryptoBaseUnit: input.sellAmountIncludingProtocolFeesCryptoBaseUnit };
|
|
@@ -18,33 +16,8 @@ export const normalizeEpochToMs = (value) => {
|
|
|
18
16
|
return Math.floor(value / 1e6);
|
|
19
17
|
};
|
|
20
18
|
export const isNativeEvmAsset = (assetId) => {
|
|
21
|
-
const { chainId } = fromAssetId(assetId);
|
|
22
|
-
|
|
23
|
-
case KnownChainIds.EthereumMainnet:
|
|
24
|
-
return assetId === ethAssetId;
|
|
25
|
-
case KnownChainIds.AvalancheMainnet:
|
|
26
|
-
return assetId === avalancheAssetId;
|
|
27
|
-
case KnownChainIds.OptimismMainnet:
|
|
28
|
-
return assetId === optimismAssetId;
|
|
29
|
-
case KnownChainIds.BnbSmartChainMainnet:
|
|
30
|
-
return assetId === bscAssetId;
|
|
31
|
-
case KnownChainIds.PolygonMainnet:
|
|
32
|
-
return assetId === polygonAssetId;
|
|
33
|
-
case KnownChainIds.GnosisMainnet:
|
|
34
|
-
return assetId === gnosisAssetId;
|
|
35
|
-
case KnownChainIds.ArbitrumMainnet:
|
|
36
|
-
return assetId === arbitrumAssetId;
|
|
37
|
-
case KnownChainIds.BaseMainnet:
|
|
38
|
-
return assetId === baseAssetId;
|
|
39
|
-
case KnownChainIds.MonadMainnet:
|
|
40
|
-
return assetId === monadAssetId;
|
|
41
|
-
case KnownChainIds.PlasmaMainnet:
|
|
42
|
-
return assetId === plasmaAssetId;
|
|
43
|
-
case KnownChainIds.KatanaMainnet:
|
|
44
|
-
return assetId === katanaAssetId;
|
|
45
|
-
default:
|
|
46
|
-
return false;
|
|
47
|
-
}
|
|
19
|
+
const { chainId, chainNamespace } = fromAssetId(assetId);
|
|
20
|
+
return chainNamespace === CHAIN_NAMESPACE.Evm && assetId === chainIdToFeeAssetId(chainId);
|
|
48
21
|
};
|
|
49
22
|
const DAO_TREASURY_BY_CHAIN_ID = {
|
|
50
23
|
[KnownChainIds.EthereumMainnet]: DAO_TREASURY_ETHEREUM_MAINNET,
|
|
@@ -77,8 +50,11 @@ export const getTreasuryAddressFromChainId = (chainId) => {
|
|
|
77
50
|
};
|
|
78
51
|
export const getDepositAddress = (step, swapperName) => {
|
|
79
52
|
switch (swapperName) {
|
|
80
|
-
case SwapperName.Chainflip:
|
|
81
|
-
|
|
53
|
+
case SwapperName.Chainflip: {
|
|
54
|
+
if (step.swapperMetadata?.name !== 'chainflip')
|
|
55
|
+
return;
|
|
56
|
+
return step.swapperMetadata.depositAddress || undefined;
|
|
57
|
+
}
|
|
82
58
|
case SwapperName.NearIntents: {
|
|
83
59
|
if (step.swapperMetadata?.name !== 'nearIntents')
|
|
84
60
|
return;
|
|
@@ -55,7 +55,9 @@ describe('normalizeEpochToMs', () => {
|
|
|
55
55
|
const makeStep = (step) => step;
|
|
56
56
|
describe('getDepositAddress', () => {
|
|
57
57
|
it('reads the chainflip deposit address', () => {
|
|
58
|
-
const step = makeStep({
|
|
58
|
+
const step = makeStep({
|
|
59
|
+
swapperMetadata: { name: 'chainflip', swapId: 1, depositAddress: 'bc1qdeposit' },
|
|
60
|
+
});
|
|
59
61
|
expect(getDepositAddress(step, SwapperName.Chainflip)).toBe('bc1qdeposit');
|
|
60
62
|
});
|
|
61
63
|
it('returns undefined when chainflip has no deposit address', () => {
|
|
@@ -78,7 +80,9 @@ describe('getDepositAddress', () => {
|
|
|
78
80
|
expect(getDepositAddress(step, SwapperName.NearIntents)).toBeUndefined();
|
|
79
81
|
});
|
|
80
82
|
it('returns undefined for swappers that do not use deposit addresses', () => {
|
|
81
|
-
const step = makeStep({
|
|
83
|
+
const step = makeStep({
|
|
84
|
+
swapperMetadata: { name: 'chainflip', swapId: 1, depositAddress: 'bc1qdeposit' },
|
|
85
|
+
});
|
|
82
86
|
expect(getDepositAddress(step, SwapperName.Relay)).toBeUndefined();
|
|
83
87
|
});
|
|
84
88
|
});
|
|
@@ -2,7 +2,6 @@ import { CHAIN_NAMESPACE, cosmosAssetId, fromAssetId, fromChainId, mayachainAsse
|
|
|
2
2
|
import { THOR_ROUTER_CONTRACT_MAINNET, TS_AGGREGATOR_TOKEN_TRANSFER_PROXY_CONTRACT_MAINNET, } from '@shapeshiftoss/contracts';
|
|
3
3
|
import { contractAddressOrUndefined } from '@shapeshiftoss/utils';
|
|
4
4
|
import { Err, Ok } from '@sniptt/monads';
|
|
5
|
-
import { TronWeb } from 'tronweb';
|
|
6
5
|
import { getAddress, zeroAddress } from 'viem';
|
|
7
6
|
import { TradeQuoteError } from '../../types.js';
|
|
8
7
|
import { makeNetworkFeeEstimationFailedErr, makeSwapErrorRight } from '../../utils/index.js';
|
|
@@ -269,58 +268,42 @@ export async function getThorStepData({ type, input, from, deps, swapperName, tr
|
|
|
269
268
|
}
|
|
270
269
|
case CHAIN_NAMESPACE.Tron: {
|
|
271
270
|
const { vault } = await getThorTxData({ sellAsset, config, swapperName });
|
|
272
|
-
const
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
const bandwidthPrice = params.find(p => p.key === 'getTransactionFee')?.value ?? 1000;
|
|
288
|
-
const energyPrice = params.find(p => p.key === 'getEnergyFee')?.value ?? 100;
|
|
289
|
-
if (contractAddress) {
|
|
290
|
-
// TRC20: Estimate energy with actual recipient
|
|
291
|
-
try {
|
|
292
|
-
const result = await tronWeb.transactionBuilder.triggerConstantContract(contractAddress, 'transfer(address,uint256)', {}, [
|
|
293
|
-
{ type: 'address', value: vault },
|
|
294
|
-
{ type: 'uint256', value: sellAmountCryptoBaseUnit },
|
|
295
|
-
], input.receiveAddress);
|
|
296
|
-
const energyUsed = result.energy_used ?? 65000;
|
|
297
|
-
const energyFee = energyUsed * energyPrice * 1.5; // 1.5x safety margin
|
|
298
|
-
const bandwidthFee = 276 * bandwidthPrice; // TRC20 bandwidth
|
|
299
|
-
return String(Math.ceil(energyFee + bandwidthFee));
|
|
300
|
-
}
|
|
301
|
-
catch {
|
|
302
|
-
// Fallback: Conservative estimate
|
|
303
|
-
return String(13_000_000); // 13 TRX worst case
|
|
304
|
-
}
|
|
305
|
-
}
|
|
306
|
-
// TRX transfer bandwidth: Base tx + memo bytes
|
|
307
|
-
const baseBytes = 198;
|
|
308
|
-
const memoBytes = rawMemo ? Buffer.from(rawMemo, 'utf8').length : 0;
|
|
309
|
-
const totalBandwidth = baseBytes + memoBytes;
|
|
310
|
-
return String(totalBandwidth * bandwidthPrice);
|
|
311
|
-
}
|
|
312
|
-
catch {
|
|
313
|
-
// Leave as undefined if estimation fails
|
|
314
|
-
return undefined;
|
|
315
|
-
}
|
|
316
|
-
})();
|
|
271
|
+
const adapter = deps.assertGetTronChainAdapter(sellAsset.chainId);
|
|
272
|
+
const contractAddress = contractAddressOrUndefined(sellAsset.assetId);
|
|
273
|
+
const estimate = async (txMemo) => {
|
|
274
|
+
const { fast } = await adapter.getFeeData({
|
|
275
|
+
to: vault,
|
|
276
|
+
value: sellAmountCryptoBaseUnit,
|
|
277
|
+
chainSpecific: {
|
|
278
|
+
from,
|
|
279
|
+
contractAddress,
|
|
280
|
+
memo: txMemo,
|
|
281
|
+
requireEnergyShare: type === 'quote',
|
|
282
|
+
},
|
|
283
|
+
});
|
|
284
|
+
return fast.txFee;
|
|
285
|
+
};
|
|
317
286
|
if (type === 'rate') {
|
|
287
|
+
// Rates size the memo with the raw thornode memo (processed memo is '' for rates)
|
|
288
|
+
const networkFeeCryptoBaseUnit = await (async () => {
|
|
289
|
+
try {
|
|
290
|
+
return await estimate(rawMemo);
|
|
291
|
+
}
|
|
292
|
+
catch { }
|
|
293
|
+
})();
|
|
318
294
|
const stepData = { networkFeeCryptoBaseUnit };
|
|
319
295
|
return Ok(stepData);
|
|
320
296
|
}
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
297
|
+
try {
|
|
298
|
+
const stepData = {
|
|
299
|
+
transactionData: { type: 'tron', to: vault, value: sellAmountCryptoBaseUnit, memo },
|
|
300
|
+
networkFeeCryptoBaseUnit: await estimate(memo),
|
|
301
|
+
};
|
|
302
|
+
return Ok(stepData);
|
|
303
|
+
}
|
|
304
|
+
catch (error) {
|
|
305
|
+
return Err(makeNetworkFeeEstimationFailedErr('getThorStepData', error));
|
|
306
|
+
}
|
|
324
307
|
}
|
|
325
308
|
default:
|
|
326
309
|
return Err(makeSwapErrorRight({
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import { tronChainId } from '@shapeshiftoss/caip';
|
|
2
|
+
import { describe, expect, it, vi } from 'vitest';
|
|
3
|
+
import { SwapperName } from '../../types.js';
|
|
4
|
+
import { ETH } from '../test-data/assets.js';
|
|
5
|
+
import { getThorStepData } from './getThorStepData.js';
|
|
6
|
+
import { TradeType } from './types.js';
|
|
7
|
+
vi.mock('./getThorTxData', () => ({
|
|
8
|
+
getThorTxData: vi.fn().mockResolvedValue({ vault: 'TVault' }),
|
|
9
|
+
getThorRouterAndVault: vi.fn(),
|
|
10
|
+
}));
|
|
11
|
+
const USDT = 'TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t';
|
|
12
|
+
const USDT_TRON = { ...ETH, assetId: `${tronChainId}/trc20:${USDT}`, chainId: tronChainId };
|
|
13
|
+
const FROM = 'TT2T17KZhoDu47i2E4FWxfG79zdkEWkU9N';
|
|
14
|
+
const tronAdapter = (txFee = '9000000') => ({
|
|
15
|
+
getFeeData: vi.fn().mockResolvedValue({ fast: { txFee } }),
|
|
16
|
+
});
|
|
17
|
+
const makeDeps = (tron) => ({ config: {}, assertGetTronChainAdapter: () => tron });
|
|
18
|
+
const baseArgs = {
|
|
19
|
+
swapperName: SwapperName.Thorchain,
|
|
20
|
+
tradeType: TradeType.L1ToL1,
|
|
21
|
+
sellAsset: USDT_TRON,
|
|
22
|
+
sellAmountCryptoBaseUnit: '100000000',
|
|
23
|
+
expiry: 0,
|
|
24
|
+
rawMemo: '=:ETH.ETH:0xabc:1',
|
|
25
|
+
};
|
|
26
|
+
describe('getThorStepData tron', () => {
|
|
27
|
+
it('carries the vault transfer as transactionData and estimates it for a quote', async () => {
|
|
28
|
+
const adapter = tronAdapter();
|
|
29
|
+
const actual = await getThorStepData({
|
|
30
|
+
...baseArgs,
|
|
31
|
+
type: 'quote',
|
|
32
|
+
input: {},
|
|
33
|
+
deps: makeDeps(adapter),
|
|
34
|
+
from: FROM,
|
|
35
|
+
memo: '=:ETH.ETH:0xabc:1/1/0:ss:55',
|
|
36
|
+
});
|
|
37
|
+
expect(actual.unwrap()).toEqual({
|
|
38
|
+
transactionData: {
|
|
39
|
+
type: 'tron',
|
|
40
|
+
to: 'TVault',
|
|
41
|
+
value: '100000000',
|
|
42
|
+
memo: '=:ETH.ETH:0xabc:1/1/0:ss:55',
|
|
43
|
+
},
|
|
44
|
+
networkFeeCryptoBaseUnit: '9000000',
|
|
45
|
+
});
|
|
46
|
+
expect(adapter.getFeeData).toHaveBeenCalledWith({
|
|
47
|
+
to: 'TVault',
|
|
48
|
+
value: '100000000',
|
|
49
|
+
chainSpecific: {
|
|
50
|
+
from: FROM,
|
|
51
|
+
contractAddress: USDT,
|
|
52
|
+
memo: '=:ETH.ETH:0xabc:1/1/0:ss:55',
|
|
53
|
+
requireEnergyShare: true,
|
|
54
|
+
},
|
|
55
|
+
});
|
|
56
|
+
});
|
|
57
|
+
it('fails the quote when estimation fails', async () => {
|
|
58
|
+
const adapter = tronAdapter();
|
|
59
|
+
adapter.getFeeData.mockRejectedValue(new Error('rpc down'));
|
|
60
|
+
const actual = await getThorStepData({
|
|
61
|
+
...baseArgs,
|
|
62
|
+
type: 'quote',
|
|
63
|
+
input: {},
|
|
64
|
+
deps: makeDeps(adapter),
|
|
65
|
+
from: FROM,
|
|
66
|
+
memo: '=:ETH.ETH:0xabc:1/1/0:ss:55',
|
|
67
|
+
});
|
|
68
|
+
expect(actual.isErr()).toBe(true);
|
|
69
|
+
});
|
|
70
|
+
it('sizes a rate with the raw memo and no sender', async () => {
|
|
71
|
+
const adapter = tronAdapter();
|
|
72
|
+
const actual = await getThorStepData({
|
|
73
|
+
...baseArgs,
|
|
74
|
+
type: 'rate',
|
|
75
|
+
input: {},
|
|
76
|
+
deps: makeDeps(adapter),
|
|
77
|
+
memo: '',
|
|
78
|
+
});
|
|
79
|
+
expect(actual.unwrap()).toEqual({ networkFeeCryptoBaseUnit: '9000000' });
|
|
80
|
+
expect(adapter.getFeeData).toHaveBeenCalledWith({
|
|
81
|
+
to: 'TVault',
|
|
82
|
+
value: '100000000',
|
|
83
|
+
chainSpecific: {
|
|
84
|
+
from: undefined,
|
|
85
|
+
contractAddress: USDT,
|
|
86
|
+
memo: '=:ETH.ETH:0xabc:1',
|
|
87
|
+
requireEnergyShare: false,
|
|
88
|
+
},
|
|
89
|
+
});
|
|
90
|
+
});
|
|
91
|
+
});
|
|
@@ -15,7 +15,6 @@ export * from './getThorL1TradeContexts.js';
|
|
|
15
15
|
export * from './getThorL1TradeQuote.js';
|
|
16
16
|
export * from './getThorL1TradeRate.js';
|
|
17
17
|
export * from './getPoolDetails.js';
|
|
18
|
-
export * as tron from './tron/index.js';
|
|
19
18
|
export declare const getChainIdBySwapper: (swapperName: SwapperName) => import("@shapeshiftoss/caip").ChainId;
|
|
20
19
|
export declare const isThorTradeRate: (quote: TradeRate | undefined) => quote is ThorTradeRate;
|
|
21
20
|
export declare const isThorTradeQuote: (quote: TradeQuote | undefined) => quote is ThorTradeQuote;
|
|
@@ -15,7 +15,6 @@ export * from './getThorL1TradeContexts.js';
|
|
|
15
15
|
export * from './getThorL1TradeQuote.js';
|
|
16
16
|
export * from './getThorL1TradeRate.js';
|
|
17
17
|
export * from './getPoolDetails.js';
|
|
18
|
-
export * as tron from './tron/index.js';
|
|
19
18
|
export const getChainIdBySwapper = (swapperName) => {
|
|
20
19
|
switch (swapperName) {
|
|
21
20
|
case SwapperName.Thorchain:
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const TRON_PLACEHOLDER_ADDRESS = "TT2T17KZhoDu47i2E4FWxfG79zdkEWkU9N";
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { tron } from '@shapeshiftoss/chain-adapters';
|
|
2
|
+
import type { Asset } from '@shapeshiftoss/types';
|
|
3
|
+
import type { TxBuildData } from '../../types.js';
|
|
4
|
+
export type TronContractCall = Omit<Extract<TxBuildData, {
|
|
5
|
+
type: 'tron';
|
|
6
|
+
}>, 'type' | 'data' | 'memo'> & {
|
|
7
|
+
data: string;
|
|
8
|
+
};
|
|
9
|
+
type GetTronContractCallFallbackFeeArgs = {
|
|
10
|
+
adapter: tron.ChainAdapter;
|
|
11
|
+
energy: string;
|
|
12
|
+
bandwidthBytes: number;
|
|
13
|
+
contractAddress?: string;
|
|
14
|
+
fullEnergyOnShareLookupFailure?: boolean;
|
|
15
|
+
};
|
|
16
|
+
export declare const getTronContractCallFallbackFeeCryptoBaseUnit: ({ adapter, energy, bandwidthBytes, contractAddress, fullEnergyOnShareLookupFailure, }: GetTronContractCallFallbackFeeArgs) => Promise<string>;
|
|
17
|
+
type GetTronContractCallNetworkFeeArgs = {
|
|
18
|
+
adapter: tron.ChainAdapter;
|
|
19
|
+
transactionData: TronContractCall;
|
|
20
|
+
from: string;
|
|
21
|
+
sellAsset: Asset;
|
|
22
|
+
sellAmountCryptoBaseUnit: string;
|
|
23
|
+
spenderAddress: string;
|
|
24
|
+
fallbackEnergy: string;
|
|
25
|
+
};
|
|
26
|
+
export declare const getTronContractCallNetworkFeeCryptoBaseUnit: ({ adapter, transactionData, from, sellAsset, sellAmountCryptoBaseUnit, spenderAddress, fallbackEnergy, }: GetTronContractCallNetworkFeeArgs) => Promise<string>;
|
|
27
|
+
export {};
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { fromAssetId } from '@shapeshiftoss/caip';
|
|
2
|
+
import { tron } from '@shapeshiftoss/chain-adapters';
|
|
3
|
+
import { tron as unchainedTron } from '@shapeshiftoss/unchained-client';
|
|
4
|
+
import { bn, isToken } from '@shapeshiftoss/utils';
|
|
5
|
+
// A measured worst-case energy under the adapter's margin, at live prices
|
|
6
|
+
export const getTronContractCallFallbackFeeCryptoBaseUnit = async ({ adapter, energy, bandwidthBytes, contractAddress, fullEnergyOnShareLookupFailure = false, }) => {
|
|
7
|
+
const { httpProvider } = adapter;
|
|
8
|
+
const [{ energyPrice, bandwidthPrice }, share] = await Promise.all([
|
|
9
|
+
httpProvider.getChainPrices(),
|
|
10
|
+
contractAddress
|
|
11
|
+
? httpProvider.getContractEnergyShare(tron.toTronBase58(contractAddress)).catch(error => {
|
|
12
|
+
if (!fullEnergyOnShareLookupFailure)
|
|
13
|
+
throw error;
|
|
14
|
+
return undefined;
|
|
15
|
+
})
|
|
16
|
+
: undefined,
|
|
17
|
+
]);
|
|
18
|
+
const callerEnergy = share ? unchainedTron.getCallerEnergy(Number(energy), share) : energy;
|
|
19
|
+
return bn(callerEnergy)
|
|
20
|
+
.times(tron.TRON_ENERGY_SAFETY_MARGIN)
|
|
21
|
+
.times(energyPrice)
|
|
22
|
+
.plus(bn(bandwidthBytes).times(bandwidthPrice))
|
|
23
|
+
.toFixed(0);
|
|
24
|
+
};
|
|
25
|
+
// Quote arm: a funded token sell that reverts for want of its allowance prices the measured worst case, anything else throws
|
|
26
|
+
export const getTronContractCallNetworkFeeCryptoBaseUnit = async ({ adapter, transactionData, from, sellAsset, sellAmountCryptoBaseUnit, spenderAddress, fallbackEnergy, }) => {
|
|
27
|
+
const { to, value, data } = transactionData;
|
|
28
|
+
try {
|
|
29
|
+
const { fast } = await adapter.getFeeData({
|
|
30
|
+
to,
|
|
31
|
+
value,
|
|
32
|
+
chainSpecific: { from, data, requireEnergyShare: true },
|
|
33
|
+
});
|
|
34
|
+
return fast.txFee;
|
|
35
|
+
}
|
|
36
|
+
catch (error) {
|
|
37
|
+
if (!isToken(sellAsset.assetId))
|
|
38
|
+
throw error;
|
|
39
|
+
const contractAddress = fromAssetId(sellAsset.assetId).assetReference;
|
|
40
|
+
const { httpProvider } = adapter;
|
|
41
|
+
const [allowance, balance] = await Promise.all([
|
|
42
|
+
httpProvider.getTrc20Allowance({
|
|
43
|
+
contractAddress,
|
|
44
|
+
owner: from,
|
|
45
|
+
spender: tron.toTronBase58(spenderAddress),
|
|
46
|
+
}),
|
|
47
|
+
httpProvider.getTrc20Balance({ contractAddress, address: from }),
|
|
48
|
+
]);
|
|
49
|
+
const sellAmount = BigInt(sellAmountCryptoBaseUnit);
|
|
50
|
+
if (BigInt(allowance) >= sellAmount || BigInt(balance) < sellAmount)
|
|
51
|
+
throw error;
|
|
52
|
+
return getTronContractCallFallbackFeeCryptoBaseUnit({
|
|
53
|
+
adapter,
|
|
54
|
+
energy: fallbackEnergy,
|
|
55
|
+
bandwidthBytes: tron.getTronContractCallBandwidthBytes(data),
|
|
56
|
+
contractAddress: to,
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
import { tronChainId } from '@shapeshiftoss/caip';
|
|
2
|
+
import { describe, expect, it, vi } from 'vitest';
|
|
3
|
+
import { ETH } from '../test-data/assets.js';
|
|
4
|
+
import { getTronContractCallFallbackFeeCryptoBaseUnit, getTronContractCallNetworkFeeCryptoBaseUnit, } from './getTronNetworkFeeCryptoBaseUnit.js';
|
|
5
|
+
const USDT = 'TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t';
|
|
6
|
+
const TRX = { ...ETH, assetId: `${tronChainId}/slip44:195`, chainId: tronChainId };
|
|
7
|
+
const USDT_TRON = { ...ETH, assetId: `${tronChainId}/trc20:${USDT}`, chainId: tronChainId };
|
|
8
|
+
const FROM = 'TT2T17KZhoDu47i2E4FWxfG79zdkEWkU9N';
|
|
9
|
+
const SPENDER_HEX = '4107a39ae4c49dee86e892450b20881f32cd5d500d';
|
|
10
|
+
const SPENDER = 'TAfbit1ENsRmtZbPQfYU3srURpfYuWYS7K';
|
|
11
|
+
const transactionData = { to: SPENDER, data: '0x2213bc0b', value: '0' };
|
|
12
|
+
const makeAdapter = ({ allowance = '0', balance = '100000000', simulation = 'ok', } = {}) => {
|
|
13
|
+
const getFeeData = simulation === 'ok'
|
|
14
|
+
? vi.fn().mockResolvedValue({ fast: { txFee: '9000000' } })
|
|
15
|
+
: vi.fn().mockRejectedValue(new Error('REVERT opcode executed'));
|
|
16
|
+
const getTrc20Allowance = vi.fn().mockResolvedValue(allowance);
|
|
17
|
+
const getTrc20Balance = vi.fn().mockResolvedValue(balance);
|
|
18
|
+
const getContractEnergyShare = vi.fn().mockResolvedValue({
|
|
19
|
+
callerPercent: 100,
|
|
20
|
+
originEnergyLimit: 0,
|
|
21
|
+
originEnergyAvailable: 0,
|
|
22
|
+
});
|
|
23
|
+
const adapter = {
|
|
24
|
+
getFeeData,
|
|
25
|
+
httpProvider: {
|
|
26
|
+
getTrc20Allowance,
|
|
27
|
+
getTrc20Balance,
|
|
28
|
+
getContractEnergyShare,
|
|
29
|
+
getChainPrices: () => Promise.resolve({ energyPrice: 100, bandwidthPrice: 1000 }),
|
|
30
|
+
},
|
|
31
|
+
};
|
|
32
|
+
return {
|
|
33
|
+
adapter: adapter,
|
|
34
|
+
getFeeData,
|
|
35
|
+
getTrc20Allowance,
|
|
36
|
+
getTrc20Balance,
|
|
37
|
+
getContractEnergyShare,
|
|
38
|
+
};
|
|
39
|
+
};
|
|
40
|
+
const baseArgs = {
|
|
41
|
+
transactionData,
|
|
42
|
+
from: FROM,
|
|
43
|
+
sellAmountCryptoBaseUnit: '100000000',
|
|
44
|
+
spenderAddress: SPENDER_HEX,
|
|
45
|
+
fallbackEnergy: '400000',
|
|
46
|
+
};
|
|
47
|
+
// 400000 energy * 1.2 margin * 100 sun + (4 calldata + 279 envelope) bytes * 1000 sun
|
|
48
|
+
const FALLBACK_FEE = '48283000';
|
|
49
|
+
describe('getTronContractCallFallbackFeeCryptoBaseUnit', () => {
|
|
50
|
+
it('prices the energy under the adapter margin at live prices plus the bandwidth', async () => {
|
|
51
|
+
const { adapter, getContractEnergyShare } = makeAdapter();
|
|
52
|
+
expect(await getTronContractCallFallbackFeeCryptoBaseUnit({
|
|
53
|
+
adapter,
|
|
54
|
+
energy: '400000',
|
|
55
|
+
bandwidthBytes: 283,
|
|
56
|
+
})).toBe(FALLBACK_FEE);
|
|
57
|
+
expect(getContractEnergyShare).not.toHaveBeenCalled();
|
|
58
|
+
});
|
|
59
|
+
it('bills the caller only their share of a contract whose deployer covers the rest', async () => {
|
|
60
|
+
const { adapter, getContractEnergyShare } = makeAdapter();
|
|
61
|
+
getContractEnergyShare.mockResolvedValue({
|
|
62
|
+
callerPercent: 5,
|
|
63
|
+
originEnergyLimit: 10_000_000,
|
|
64
|
+
originEnergyAvailable: 5_000_000,
|
|
65
|
+
});
|
|
66
|
+
// 20000 caller energy * 1.2 margin * 100 sun + 283 bytes * 1000 sun
|
|
67
|
+
expect(await getTronContractCallFallbackFeeCryptoBaseUnit({
|
|
68
|
+
adapter,
|
|
69
|
+
energy: '400000',
|
|
70
|
+
bandwidthBytes: 283,
|
|
71
|
+
contractAddress: SPENDER,
|
|
72
|
+
})).toBe('2683000');
|
|
73
|
+
expect(getContractEnergyShare).toHaveBeenCalledWith(SPENDER);
|
|
74
|
+
});
|
|
75
|
+
});
|
|
76
|
+
describe('getTronContractCallFallbackFeeCryptoBaseUnit share lookup failure', () => {
|
|
77
|
+
it('rejects by default', async () => {
|
|
78
|
+
const { adapter, getContractEnergyShare } = makeAdapter();
|
|
79
|
+
getContractEnergyShare.mockRejectedValue(new Error('429'));
|
|
80
|
+
await expect(getTronContractCallFallbackFeeCryptoBaseUnit({
|
|
81
|
+
adapter,
|
|
82
|
+
energy: '400000',
|
|
83
|
+
bandwidthBytes: 283,
|
|
84
|
+
contractAddress: SPENDER,
|
|
85
|
+
})).rejects.toThrow('429');
|
|
86
|
+
});
|
|
87
|
+
it('prices the caller in full when the caller opts in', async () => {
|
|
88
|
+
const { adapter, getContractEnergyShare } = makeAdapter();
|
|
89
|
+
getContractEnergyShare.mockRejectedValue(new Error('429'));
|
|
90
|
+
expect(await getTronContractCallFallbackFeeCryptoBaseUnit({
|
|
91
|
+
adapter,
|
|
92
|
+
energy: '400000',
|
|
93
|
+
bandwidthBytes: 283,
|
|
94
|
+
contractAddress: SPENDER,
|
|
95
|
+
fullEnergyOnShareLookupFailure: true,
|
|
96
|
+
})).toBe(FALLBACK_FEE);
|
|
97
|
+
});
|
|
98
|
+
});
|
|
99
|
+
describe('getTronContractCallNetworkFeeCryptoBaseUnit', () => {
|
|
100
|
+
it('prices a successful simulation without reading the allowance', async () => {
|
|
101
|
+
const { adapter, getFeeData, getTrc20Allowance } = makeAdapter();
|
|
102
|
+
const actual = await getTronContractCallNetworkFeeCryptoBaseUnit({
|
|
103
|
+
...baseArgs,
|
|
104
|
+
adapter,
|
|
105
|
+
sellAsset: USDT_TRON,
|
|
106
|
+
});
|
|
107
|
+
expect(actual).toBe('9000000');
|
|
108
|
+
expect(getFeeData).toHaveBeenCalledWith({
|
|
109
|
+
to: SPENDER,
|
|
110
|
+
value: '0',
|
|
111
|
+
chainSpecific: { from: FROM, data: '0x2213bc0b', requireEnergyShare: true },
|
|
112
|
+
});
|
|
113
|
+
expect(getTrc20Allowance).not.toHaveBeenCalled();
|
|
114
|
+
});
|
|
115
|
+
it('prices the measured worst case when a funded token sell reverts without its allowance', async () => {
|
|
116
|
+
const { adapter, getTrc20Allowance, getTrc20Balance, getContractEnergyShare } = makeAdapter({
|
|
117
|
+
simulation: 'revert',
|
|
118
|
+
allowance: '0',
|
|
119
|
+
});
|
|
120
|
+
const actual = await getTronContractCallNetworkFeeCryptoBaseUnit({
|
|
121
|
+
...baseArgs,
|
|
122
|
+
adapter,
|
|
123
|
+
sellAsset: USDT_TRON,
|
|
124
|
+
});
|
|
125
|
+
expect(actual).toBe(FALLBACK_FEE);
|
|
126
|
+
expect(getTrc20Allowance).toHaveBeenCalledWith({
|
|
127
|
+
contractAddress: USDT,
|
|
128
|
+
owner: FROM,
|
|
129
|
+
spender: SPENDER,
|
|
130
|
+
});
|
|
131
|
+
expect(getTrc20Balance).toHaveBeenCalledWith({ contractAddress: USDT, address: FROM });
|
|
132
|
+
expect(getContractEnergyShare).toHaveBeenCalledWith(SPENDER);
|
|
133
|
+
});
|
|
134
|
+
it('fails the quote rather than guessing when the share lookup fails', async () => {
|
|
135
|
+
const { adapter, getContractEnergyShare } = makeAdapter({
|
|
136
|
+
simulation: 'revert',
|
|
137
|
+
allowance: '0',
|
|
138
|
+
});
|
|
139
|
+
getContractEnergyShare.mockRejectedValue(new Error('429'));
|
|
140
|
+
await expect(getTronContractCallNetworkFeeCryptoBaseUnit({ ...baseArgs, adapter, sellAsset: USDT_TRON })).rejects.toThrow('429');
|
|
141
|
+
});
|
|
142
|
+
it('throws when a token sell reverts with a sufficient allowance', async () => {
|
|
143
|
+
const { adapter } = makeAdapter({ simulation: 'revert', allowance: '100000000' });
|
|
144
|
+
await expect(getTronContractCallNetworkFeeCryptoBaseUnit({ ...baseArgs, adapter, sellAsset: USDT_TRON })).rejects.toThrow('REVERT opcode executed');
|
|
145
|
+
});
|
|
146
|
+
it('throws when the token balance cannot cover the sell', async () => {
|
|
147
|
+
const { adapter } = makeAdapter({ simulation: 'revert', allowance: '0', balance: '1' });
|
|
148
|
+
await expect(getTronContractCallNetworkFeeCryptoBaseUnit({ ...baseArgs, adapter, sellAsset: USDT_TRON })).rejects.toThrow('REVERT opcode executed');
|
|
149
|
+
});
|
|
150
|
+
it('throws when a native sell reverts', async () => {
|
|
151
|
+
const { adapter, getTrc20Allowance } = makeAdapter({ simulation: 'revert' });
|
|
152
|
+
await expect(getTronContractCallNetworkFeeCryptoBaseUnit({ ...baseArgs, adapter, sellAsset: TRX })).rejects.toThrow('REVERT opcode executed');
|
|
153
|
+
expect(getTrc20Allowance).not.toHaveBeenCalled();
|
|
154
|
+
});
|
|
155
|
+
});
|
|
@@ -1,2 +1,3 @@
|
|
|
1
|
+
import { tron } from '@shapeshiftoss/chain-adapters';
|
|
1
2
|
import type { GetUnsignedTronTransactionArgs } from '../../types.js';
|
|
2
|
-
export declare const getUnsignedTronTransaction: ({ stepIndex, tradeQuote, from, assertGetTronChainAdapter, }: GetUnsignedTronTransactionArgs) => Promise<
|
|
3
|
+
export declare const getUnsignedTronTransaction: ({ stepIndex, tradeQuote, from, assertGetTronChainAdapter, }: GetUnsignedTronTransactionArgs) => Promise<tron.TronSignTx>;
|
|
@@ -1,61 +1,27 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { tron } from '@shapeshiftoss/chain-adapters';
|
|
2
2
|
import { contractAddressOrUndefined } from '@shapeshiftoss/utils';
|
|
3
|
-
import { TronWeb } from 'tronweb';
|
|
4
3
|
import { getExecutableTradeStep, isExecutableTradeQuote } from '../../utils/index.js';
|
|
5
4
|
export const getUnsignedTronTransaction = ({ stepIndex, tradeQuote, from, assertGetTronChainAdapter, }) => {
|
|
6
5
|
if (!isExecutableTradeQuote(tradeQuote))
|
|
7
|
-
throw new Error('Unable to execute a trade rate
|
|
6
|
+
throw new Error('Unable to execute a trade rate');
|
|
8
7
|
const step = getExecutableTradeStep(tradeQuote, stepIndex);
|
|
9
|
-
const { accountNumber, sellAsset,
|
|
8
|
+
const { accountNumber, sellAsset, transactionData, feeData } = step;
|
|
9
|
+
if (transactionData?.type !== 'tron')
|
|
10
|
+
throw new Error('Missing tron transactionData');
|
|
10
11
|
const adapter = assertGetTronChainAdapter(sellAsset.chainId);
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
if (!data)
|
|
16
|
-
throw new Error('Missing Butter swap transaction data');
|
|
17
|
-
// Use Butter's value field which includes swap fees for same-chain swaps
|
|
18
|
-
// For native TRX sells, also include the sell amount
|
|
19
|
-
const isNativeTron = sellAsset.assetId === tronAssetId;
|
|
20
|
-
const value = isNativeTron ? step.sellAmountIncludingProtocolFeesCryptoBaseUnit : butterValue;
|
|
21
|
-
return adapter.buildCustomApiTx({
|
|
22
|
-
from,
|
|
23
|
-
to,
|
|
24
|
-
accountNumber,
|
|
25
|
-
data,
|
|
26
|
-
value,
|
|
27
|
-
method,
|
|
28
|
-
args,
|
|
29
|
-
});
|
|
30
|
-
}
|
|
31
|
-
if (relayTransactionMetadata?.data) {
|
|
32
|
-
if (!relayTransactionMetadata.to) {
|
|
33
|
-
throw new Error('Missing Relay transaction destination address');
|
|
34
|
-
}
|
|
35
|
-
const to = TronWeb.address.fromHex(relayTransactionMetadata.to);
|
|
36
|
-
const isNativeTron = sellAsset.assetId === tronAssetId;
|
|
37
|
-
const value = isNativeTron ? step.sellAmountIncludingProtocolFeesCryptoBaseUnit : '0';
|
|
38
|
-
return adapter.buildCustomApiTx({
|
|
39
|
-
from,
|
|
40
|
-
to,
|
|
41
|
-
accountNumber,
|
|
42
|
-
data: relayTransactionMetadata.data,
|
|
43
|
-
value,
|
|
44
|
-
});
|
|
45
|
-
}
|
|
46
|
-
const nearIntentsDepositAddress = step.swapperMetadata?.name === 'nearIntents' ? step.swapperMetadata.depositAddress : undefined;
|
|
47
|
-
const to = relayTransactionMetadata?.to ?? nearIntentsDepositAddress;
|
|
48
|
-
if (!to)
|
|
49
|
-
throw new Error('Missing transaction destination address');
|
|
50
|
-
const value = step.sellAmountIncludingProtocolFeesCryptoBaseUnit;
|
|
51
|
-
const contractAddress = contractAddressOrUndefined(sellAsset.assetId);
|
|
12
|
+
const { to, value, data, memo } = transactionData;
|
|
13
|
+
const feeLimit = tron.getTronFeeLimit(feeData.networkFeeCryptoBaseUnit);
|
|
14
|
+
if (data)
|
|
15
|
+
return adapter.buildCustomApiTx({ from, to, accountNumber, data, value, feeLimit });
|
|
52
16
|
return adapter.buildSendApiTransaction({
|
|
53
|
-
to,
|
|
54
17
|
from,
|
|
55
|
-
|
|
18
|
+
to,
|
|
56
19
|
accountNumber,
|
|
20
|
+
value,
|
|
57
21
|
chainSpecific: {
|
|
58
|
-
contractAddress,
|
|
22
|
+
contractAddress: contractAddressOrUndefined(sellAsset.assetId),
|
|
23
|
+
memo,
|
|
24
|
+
feeLimit,
|
|
59
25
|
},
|
|
60
26
|
});
|
|
61
27
|
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|