@shapeshiftoss/swapper 20.3.0 → 20.5.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 +21 -0
- package/dist/cjs/index.d.ts +3 -0
- package/dist/cjs/index.js +3 -0
- package/dist/cjs/swappers/AcrossSwapper/utils/getAcrossStepData.js +7 -15
- package/dist/cjs/swappers/ArbitrumBridgeSwapper/getTradeQuote/getTradeQuote.js +0 -2
- package/dist/cjs/swappers/AvnuSwapper/endpoints.js +17 -12
- 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/BebopSwapper/utils/getBebopStepData.js +17 -22
- package/dist/cjs/swappers/BobGatewaySwapper/swapperApi/getTradeQuote.js +0 -2
- package/dist/cjs/swappers/ButterSwap/swapperApi/getTradeQuote.js +0 -2
- package/dist/cjs/swappers/ButterSwap/swapperApi/getTradeQuote.test.js +1 -0
- package/dist/cjs/swappers/ButterSwap/swapperApi/getTradeRate.test.js +1 -0
- package/dist/cjs/swappers/ButterSwap/utils/getButterSwapStepData.js +3 -4
- package/dist/cjs/swappers/ButterSwap/utils/getButterSwapStepData.test.js +2 -2
- package/dist/cjs/swappers/CetusSwapper/endpoints.js +2 -3
- package/dist/cjs/swappers/CetusSwapper/swapperApi/getCetusStepData.js +13 -8
- package/dist/cjs/swappers/CetusSwapper/swapperApi/getCetusTradeContext.js +1 -2
- package/dist/cjs/swappers/CetusSwapper/swapperApi/getTradeQuote.js +0 -2
- package/dist/cjs/swappers/CetusSwapper/utils/constants.d.ts +0 -1
- package/dist/cjs/swappers/CetusSwapper/utils/constants.js +1 -2
- package/dist/cjs/swappers/CetusSwapper/utils/helpers.d.ts +3 -3
- package/dist/cjs/swappers/CetusSwapper/utils/helpers.js +6 -17
- package/dist/cjs/swappers/ChainflipSwapper/swapperApi/getTradeQuote.js +1 -2
- package/dist/cjs/swappers/ChainflipSwapper/types.d.ts +1 -0
- package/dist/cjs/swappers/DebridgeSwapper/getTradeQuote/getTradeQuote.js +0 -2
- package/dist/cjs/swappers/DebridgeSwapper/utils/getDebridgeStepData.d.ts +0 -1
- package/dist/cjs/swappers/DebridgeSwapper/utils/getDebridgeStepData.js +9 -16
- package/dist/cjs/swappers/DebridgeSwapper/utils/getDebridgeTradeContext.js +0 -3
- 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 +46 -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/KyberSwapper/KyberSwapper.d.ts +2 -0
- package/dist/cjs/swappers/KyberSwapper/KyberSwapper.js +5 -0
- package/dist/cjs/swappers/KyberSwapper/endpoints.d.ts +2 -0
- package/dist/cjs/swappers/KyberSwapper/endpoints.js +14 -0
- package/dist/cjs/swappers/KyberSwapper/index.d.ts +2 -0
- package/dist/cjs/swappers/KyberSwapper/index.js +7 -0
- package/dist/cjs/swappers/KyberSwapper/swapperApi/getKyberTradeQuote.d.ts +4 -0
- package/dist/cjs/swappers/KyberSwapper/swapperApi/getKyberTradeQuote.js +64 -0
- package/dist/cjs/swappers/KyberSwapper/swapperApi/getKyberTradeRate.d.ts +4 -0
- package/dist/cjs/swappers/KyberSwapper/swapperApi/getKyberTradeRate.js +31 -0
- package/dist/cjs/swappers/KyberSwapper/types.d.ts +62 -0
- package/dist/cjs/swappers/KyberSwapper/types.js +2 -0
- package/dist/cjs/swappers/KyberSwapper/utils/constants.d.ts +21 -0
- package/dist/cjs/swappers/KyberSwapper/utils/constants.js +24 -0
- package/dist/cjs/swappers/KyberSwapper/utils/fetchFromKyber.d.ts +23 -0
- package/dist/cjs/swappers/KyberSwapper/utils/fetchFromKyber.js +38 -0
- package/dist/cjs/swappers/KyberSwapper/utils/getKyberStepData.d.ts +27 -0
- package/dist/cjs/swappers/KyberSwapper/utils/getKyberStepData.js +47 -0
- package/dist/cjs/swappers/KyberSwapper/utils/getKyberStepData.test.d.ts +1 -0
- package/dist/cjs/swappers/KyberSwapper/utils/getKyberStepData.test.js +92 -0
- package/dist/cjs/swappers/KyberSwapper/utils/getKyberTradeContext.d.ts +20 -0
- package/dist/cjs/swappers/KyberSwapper/utils/getKyberTradeContext.js +63 -0
- package/dist/cjs/swappers/KyberSwapper/utils/helpers.d.ts +27 -0
- package/dist/cjs/swappers/KyberSwapper/utils/helpers.js +172 -0
- package/dist/cjs/swappers/KyberSwapper/utils/helpers.test.d.ts +1 -0
- package/dist/cjs/swappers/KyberSwapper/utils/helpers.test.js +110 -0
- package/dist/cjs/swappers/KyberSwapper/utils/kyberService.d.ts +5 -0
- package/dist/cjs/swappers/KyberSwapper/utils/kyberService.js +9 -0
- package/dist/cjs/swappers/MayachainSwapper/generated/generatedTradableAssetMap.json +0 -1
- package/dist/cjs/swappers/NearIntentsSwapper/NearIntentsSwapper.js +1 -0
- package/dist/cjs/swappers/NearIntentsSwapper/endpoints.js +13 -14
- package/dist/cjs/swappers/NearIntentsSwapper/swapperApi/getTradeRate.js +1 -1
- package/dist/cjs/swappers/NearIntentsSwapper/types.d.ts +4 -4
- package/dist/cjs/swappers/NearIntentsSwapper/types.js +2 -0
- package/dist/cjs/swappers/NearIntentsSwapper/utils/getNearIntentsStepData.js +28 -0
- package/dist/cjs/swappers/NearIntentsSwapper/utils/helpers.js +2 -2
- package/dist/cjs/swappers/PortalsSwapper/endpoints.js +4 -1
- package/dist/cjs/swappers/PortalsSwapper/getPortalsTradeQuote/getPortalsTradeQuote.js +1 -1
- package/dist/cjs/swappers/PortalsSwapper/utils/getPortalsStepData.js +36 -55
- package/dist/cjs/swappers/PortalsSwapper/utils/getPortalsStepData.test.js +2 -2
- package/dist/cjs/swappers/RelaySwapper/getTradeQuote/getTradeQuote.js +2 -3
- package/dist/cjs/swappers/RelaySwapper/utils/getRelayStepData.js +7 -15
- 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/relayStatus.js +3 -3
- package/dist/cjs/swappers/RelaySwapper/utils/types.d.ts +9 -4
- 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/generated/generatedThorLongtailTokens.json +1 -0
- package/dist/cjs/swappers/ThorchainSwapper/generated/generatedTradableAssetMap.json +1 -0
- package/dist/cjs/swappers/ThorchainSwapper/getTradeQuote/getTradeQuote.test.js +2 -2
- package/dist/cjs/swappers/ThorchainSwapper/utils/getLongtailQuote.js +1 -1
- package/dist/cjs/swappers/ZrxSwapper/getZrxTradeQuote/getZrxTradeQuote.js +27 -2
- 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/swappers/ZrxSwapper/utils/getZrxStepData.d.ts +3 -1
- package/dist/cjs/swappers/ZrxSwapper/utils/getZrxStepData.js +29 -10
- package/dist/cjs/types.d.ts +41 -12
- package/dist/cjs/types.js +3 -0
- package/dist/cjs/utils/aptos/constants.d.ts +2 -0
- package/dist/cjs/utils/aptos/constants.js +7 -0
- package/dist/cjs/utils/aptos/getAptosTransactionFees.d.ts +2 -0
- package/dist/cjs/utils/aptos/getAptosTransactionFees.js +13 -0
- package/dist/cjs/utils/aptos/getUnsignedAptosTransaction.d.ts +2 -0
- package/dist/cjs/utils/aptos/getUnsignedAptosTransaction.js +16 -0
- package/dist/cjs/utils/aptos/index.d.ts +3 -0
- package/dist/cjs/utils/aptos/index.js +19 -0
- package/dist/cjs/utils/evm/getEvmNetworkFeeCryptoBaseUnit.d.ts +19 -6
- package/dist/cjs/utils/evm/getEvmNetworkFeeCryptoBaseUnit.js +45 -35
- package/dist/cjs/utils/evm/getEvmNetworkFeeCryptoBaseUnit.test.d.ts +1 -0
- package/dist/cjs/utils/evm/getEvmNetworkFeeCryptoBaseUnit.test.js +103 -0
- package/dist/cjs/utils/evm/stateOverride.d.ts +3 -0
- package/dist/cjs/utils/evm/stateOverride.js +10 -4
- package/dist/cjs/utils/helpers.d.ts +1 -2
- package/dist/cjs/utils/helpers.js +9 -32
- package/dist/cjs/utils/helpers.test.js +7 -2
- package/dist/cjs/utils/index.d.ts +3 -2
- package/dist/cjs/utils/index.js +11 -27
- package/dist/esm/.tsbuildinfo +1 -1
- package/dist/esm/constants.js +21 -0
- package/dist/esm/index.d.ts +3 -0
- package/dist/esm/index.js +3 -0
- package/dist/esm/swappers/AcrossSwapper/utils/getAcrossStepData.js +8 -16
- package/dist/esm/swappers/ArbitrumBridgeSwapper/getTradeQuote/getTradeQuote.js +0 -2
- package/dist/esm/swappers/AvnuSwapper/endpoints.js +18 -13
- 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/BebopSwapper/utils/getBebopStepData.js +18 -23
- package/dist/esm/swappers/BobGatewaySwapper/swapperApi/getTradeQuote.js +0 -2
- package/dist/esm/swappers/ButterSwap/swapperApi/getTradeQuote.js +0 -2
- package/dist/esm/swappers/ButterSwap/swapperApi/getTradeQuote.test.js +1 -0
- package/dist/esm/swappers/ButterSwap/swapperApi/getTradeRate.test.js +1 -0
- package/dist/esm/swappers/ButterSwap/utils/getButterSwapStepData.js +4 -5
- package/dist/esm/swappers/ButterSwap/utils/getButterSwapStepData.test.js +2 -2
- package/dist/esm/swappers/CetusSwapper/endpoints.js +3 -4
- package/dist/esm/swappers/CetusSwapper/swapperApi/getCetusStepData.js +13 -8
- package/dist/esm/swappers/CetusSwapper/swapperApi/getCetusTradeContext.js +2 -3
- package/dist/esm/swappers/CetusSwapper/swapperApi/getTradeQuote.js +0 -2
- package/dist/esm/swappers/CetusSwapper/utils/constants.d.ts +0 -1
- package/dist/esm/swappers/CetusSwapper/utils/constants.js +0 -1
- package/dist/esm/swappers/CetusSwapper/utils/helpers.d.ts +3 -3
- package/dist/esm/swappers/CetusSwapper/utils/helpers.js +4 -15
- package/dist/esm/swappers/ChainflipSwapper/swapperApi/getTradeQuote.js +1 -2
- package/dist/esm/swappers/ChainflipSwapper/types.d.ts +1 -0
- package/dist/esm/swappers/DebridgeSwapper/getTradeQuote/getTradeQuote.js +0 -2
- package/dist/esm/swappers/DebridgeSwapper/utils/getDebridgeStepData.d.ts +0 -1
- package/dist/esm/swappers/DebridgeSwapper/utils/getDebridgeStepData.js +9 -16
- package/dist/esm/swappers/DebridgeSwapper/utils/getDebridgeTradeContext.js +0 -3
- 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 +42 -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/KyberSwapper/KyberSwapper.d.ts +2 -0
- package/dist/esm/swappers/KyberSwapper/KyberSwapper.js +2 -0
- package/dist/esm/swappers/KyberSwapper/endpoints.d.ts +2 -0
- package/dist/esm/swappers/KyberSwapper/endpoints.js +11 -0
- package/dist/esm/swappers/KyberSwapper/index.d.ts +2 -0
- package/dist/esm/swappers/KyberSwapper/index.js +2 -0
- package/dist/esm/swappers/KyberSwapper/swapperApi/getKyberTradeQuote.d.ts +4 -0
- package/dist/esm/swappers/KyberSwapper/swapperApi/getKyberTradeQuote.js +60 -0
- package/dist/esm/swappers/KyberSwapper/swapperApi/getKyberTradeRate.d.ts +4 -0
- package/dist/esm/swappers/KyberSwapper/swapperApi/getKyberTradeRate.js +27 -0
- package/dist/esm/swappers/KyberSwapper/types.d.ts +62 -0
- package/dist/esm/swappers/KyberSwapper/types.js +1 -0
- package/dist/esm/swappers/KyberSwapper/utils/constants.d.ts +21 -0
- package/dist/esm/swappers/KyberSwapper/utils/constants.js +21 -0
- package/dist/esm/swappers/KyberSwapper/utils/fetchFromKyber.d.ts +23 -0
- package/dist/esm/swappers/KyberSwapper/utils/fetchFromKyber.js +33 -0
- package/dist/esm/swappers/KyberSwapper/utils/getKyberStepData.d.ts +27 -0
- package/dist/esm/swappers/KyberSwapper/utils/getKyberStepData.js +43 -0
- package/dist/esm/swappers/KyberSwapper/utils/getKyberStepData.test.d.ts +1 -0
- package/dist/esm/swappers/KyberSwapper/utils/getKyberStepData.test.js +90 -0
- package/dist/esm/swappers/KyberSwapper/utils/getKyberTradeContext.d.ts +20 -0
- package/dist/esm/swappers/KyberSwapper/utils/getKyberTradeContext.js +59 -0
- package/dist/esm/swappers/KyberSwapper/utils/helpers.d.ts +27 -0
- package/dist/esm/swappers/KyberSwapper/utils/helpers.js +158 -0
- package/dist/esm/swappers/KyberSwapper/utils/helpers.test.d.ts +1 -0
- package/dist/esm/swappers/KyberSwapper/utils/helpers.test.js +108 -0
- package/dist/esm/swappers/KyberSwapper/utils/kyberService.d.ts +5 -0
- package/dist/esm/swappers/KyberSwapper/utils/kyberService.js +3 -0
- package/dist/esm/swappers/MayachainSwapper/generated/generatedTradableAssetMap.json +0 -1
- package/dist/esm/swappers/NearIntentsSwapper/NearIntentsSwapper.js +2 -1
- package/dist/esm/swappers/NearIntentsSwapper/endpoints.js +13 -14
- package/dist/esm/swappers/NearIntentsSwapper/swapperApi/getTradeRate.js +1 -1
- package/dist/esm/swappers/NearIntentsSwapper/types.d.ts +4 -4
- package/dist/esm/swappers/NearIntentsSwapper/types.js +2 -0
- package/dist/esm/swappers/NearIntentsSwapper/utils/getNearIntentsStepData.js +29 -1
- 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/PortalsSwapper/utils/getPortalsStepData.js +34 -53
- package/dist/esm/swappers/PortalsSwapper/utils/getPortalsStepData.test.js +2 -2
- package/dist/esm/swappers/RelaySwapper/getTradeQuote/getTradeQuote.js +2 -3
- package/dist/esm/swappers/RelaySwapper/utils/getRelayStepData.js +9 -17
- 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/relayStatus.js +3 -3
- package/dist/esm/swappers/RelaySwapper/utils/types.d.ts +9 -4
- 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/generated/generatedThorLongtailTokens.json +1 -0
- package/dist/esm/swappers/ThorchainSwapper/generated/generatedTradableAssetMap.json +1 -0
- package/dist/esm/swappers/ThorchainSwapper/getTradeQuote/getTradeQuote.test.js +2 -2
- package/dist/esm/swappers/ThorchainSwapper/utils/getLongtailQuote.js +1 -1
- package/dist/esm/swappers/ZrxSwapper/getZrxTradeQuote/getZrxTradeQuote.js +28 -3
- 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/swappers/ZrxSwapper/utils/getZrxStepData.d.ts +3 -1
- package/dist/esm/swappers/ZrxSwapper/utils/getZrxStepData.js +31 -12
- package/dist/esm/types.d.ts +41 -12
- package/dist/esm/types.js +3 -0
- package/dist/esm/utils/aptos/constants.d.ts +2 -0
- package/dist/esm/utils/aptos/constants.js +4 -0
- package/dist/esm/utils/aptos/getAptosTransactionFees.d.ts +2 -0
- package/dist/esm/utils/aptos/getAptosTransactionFees.js +9 -0
- package/dist/esm/utils/aptos/getUnsignedAptosTransaction.d.ts +2 -0
- package/dist/esm/utils/aptos/getUnsignedAptosTransaction.js +12 -0
- package/dist/esm/utils/aptos/index.d.ts +3 -0
- package/dist/esm/utils/aptos/index.js +3 -0
- package/dist/esm/utils/evm/getEvmNetworkFeeCryptoBaseUnit.d.ts +19 -6
- package/dist/esm/utils/evm/getEvmNetworkFeeCryptoBaseUnit.js +42 -35
- package/dist/esm/utils/evm/getEvmNetworkFeeCryptoBaseUnit.test.d.ts +1 -0
- package/dist/esm/utils/evm/getEvmNetworkFeeCryptoBaseUnit.test.js +101 -0
- package/dist/esm/utils/evm/stateOverride.d.ts +3 -0
- package/dist/esm/utils/evm/stateOverride.js +8 -3
- package/dist/esm/utils/helpers.d.ts +1 -2
- package/dist/esm/utils/helpers.js +10 -33
- package/dist/esm/utils/helpers.test.js +7 -2
- package/dist/esm/utils/index.d.ts +3 -2
- package/dist/esm/utils/index.js +9 -26
- package/package.json +10 -11
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { contractAddressOrUndefined } from '@shapeshiftoss/utils';
|
|
2
2
|
import { createDefaultStatusResponse, getExecutableTradeStep, getSwapMetadata, isExecutableTradeQuote, } from '../../utils/index.js';
|
|
3
|
+
import { getAptosTransactionFees, getUnsignedAptosTransaction } from '../../utils/aptos/index.js';
|
|
3
4
|
import { getEvmTransactionFees, getUnsignedEvmTransaction } from '../../utils/evm/index.js';
|
|
4
5
|
import { getSolanaTransactionFees, getUnsignedSolanaTransaction } from '../../utils/solana/index.js';
|
|
5
6
|
import { getTronTransactionFees, getUnsignedTronTransaction } from '../../utils/tron/index.js';
|
|
@@ -84,7 +85,7 @@ export const nearIntentsApi = {
|
|
|
84
85
|
}
|
|
85
86
|
return Promise.resolve(step.feeData.networkFeeCryptoBaseUnit);
|
|
86
87
|
},
|
|
87
|
-
getUnsignedStarknetTransaction: async ({ stepIndex, tradeQuote, from, assertGetStarknetChainAdapter, }) => {
|
|
88
|
+
getUnsignedStarknetTransaction: async ({ stepIndex, tradeQuote, from, callsOnly, assertGetStarknetChainAdapter, }) => {
|
|
88
89
|
if (!isExecutableTradeQuote(tradeQuote))
|
|
89
90
|
throw new Error('Unable to execute a trade rate quote');
|
|
90
91
|
const step = getExecutableTradeStep(tradeQuote, stepIndex);
|
|
@@ -94,24 +95,20 @@ export const nearIntentsApi = {
|
|
|
94
95
|
const to = depositAddress;
|
|
95
96
|
const value = step.sellAmountIncludingProtocolFeesCryptoBaseUnit;
|
|
96
97
|
const tokenContractAddress = contractAddressOrUndefined(sellAsset.assetId);
|
|
97
|
-
const
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
tokenContractAddress,
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
});
|
|
98
|
+
const maxFee = callsOnly
|
|
99
|
+
? undefined
|
|
100
|
+
: (await adapter.getFeeData({
|
|
101
|
+
to,
|
|
102
|
+
value,
|
|
103
|
+
chainSpecific: { from, tokenContractAddress },
|
|
104
|
+
sendMax: false,
|
|
105
|
+
})).fast.chainSpecific.maxFee;
|
|
106
106
|
return adapter.buildSendApiTransaction({
|
|
107
107
|
from,
|
|
108
108
|
to,
|
|
109
109
|
value,
|
|
110
110
|
accountNumber,
|
|
111
|
-
chainSpecific: {
|
|
112
|
-
tokenContractAddress,
|
|
113
|
-
maxFee: fast.chainSpecific.maxFee,
|
|
114
|
-
},
|
|
111
|
+
chainSpecific: { tokenContractAddress, maxFee, callsOnly },
|
|
115
112
|
});
|
|
116
113
|
},
|
|
117
114
|
getStarknetTransactionFees: ({ tradeQuote, stepIndex }) => {
|
|
@@ -153,6 +150,8 @@ export const nearIntentsApi = {
|
|
|
153
150
|
}
|
|
154
151
|
return Promise.resolve(step.feeData.networkFeeCryptoBaseUnit);
|
|
155
152
|
},
|
|
153
|
+
getUnsignedAptosTransaction,
|
|
154
|
+
getAptosTransactionFees,
|
|
156
155
|
checkTradeStatus: async ({ config, swap }) => {
|
|
157
156
|
if (!swap)
|
|
158
157
|
throw new Error('Missing swap');
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { KnownChainIds } from '@shapeshiftoss/types';
|
|
2
|
-
import type { GetEvmTradeQuoteInput, GetEvmTradeRateInput, GetNearTradeQuoteInput, GetNearTradeRateInput, GetSolanaTradeQuoteInput, GetSolanaTradeRateInput, GetStarknetTradeQuoteInput, GetStarknetTradeRateInput, GetSuiTradeQuoteInput, GetSuiTradeRateInput, GetTonTradeQuoteInput, GetTonTradeRateInput, GetTronTradeQuoteInput, GetTronTradeRateInput, GetUtxoTradeQuoteInput, GetUtxoTradeRateInput, WithExactBuyAmount } from '../../types.js';
|
|
3
|
-
export type NearIntentsTradeQuoteInput = GetEvmTradeQuoteInput | GetUtxoTradeQuoteInput | GetSolanaTradeQuoteInput | GetTronTradeQuoteInput | GetSuiTradeQuoteInput | GetStarknetTradeQuoteInput | GetNearTradeQuoteInput | GetTonTradeQuoteInput;
|
|
4
|
-
export type NearIntentsTradeRateInput = GetEvmTradeRateInput | GetUtxoTradeRateInput | GetSolanaTradeRateInput | GetTronTradeRateInput | GetSuiTradeRateInput | GetStarknetTradeRateInput | GetNearTradeRateInput | GetTonTradeRateInput;
|
|
2
|
+
import type { GetAptosTradeQuoteInput, GetAptosTradeRateInput, GetEvmTradeQuoteInput, GetEvmTradeRateInput, GetNearTradeQuoteInput, GetNearTradeRateInput, GetSolanaTradeQuoteInput, GetSolanaTradeRateInput, GetStarknetTradeQuoteInput, GetStarknetTradeRateInput, GetSuiTradeQuoteInput, GetSuiTradeRateInput, GetTonTradeQuoteInput, GetTonTradeRateInput, GetTronTradeQuoteInput, GetTronTradeRateInput, GetUtxoTradeQuoteInput, GetUtxoTradeRateInput, WithExactBuyAmount } from '../../types.js';
|
|
3
|
+
export type NearIntentsTradeQuoteInput = GetEvmTradeQuoteInput | GetUtxoTradeQuoteInput | GetSolanaTradeQuoteInput | GetTronTradeQuoteInput | GetSuiTradeQuoteInput | GetStarknetTradeQuoteInput | GetNearTradeQuoteInput | GetTonTradeQuoteInput | GetAptosTradeQuoteInput;
|
|
4
|
+
export type NearIntentsTradeRateInput = GetEvmTradeRateInput | GetUtxoTradeRateInput | GetSolanaTradeRateInput | GetTronTradeRateInput | GetSuiTradeRateInput | GetStarknetTradeRateInput | GetNearTradeRateInput | GetTonTradeRateInput | GetAptosTradeRateInput;
|
|
5
5
|
export type NearIntentsExactOutputTradeQuoteInput = WithExactBuyAmount<NearIntentsTradeQuoteInput>;
|
|
6
6
|
export type NearIntentsExactOutputTradeRateInput = WithExactBuyAmount<NearIntentsTradeRateInput>;
|
|
7
7
|
export type NearIntentsMetadata = {
|
|
@@ -11,6 +11,6 @@ export type NearIntentsMetadata = {
|
|
|
11
11
|
};
|
|
12
12
|
export { QuoteRequest } from '@defuse-protocol/one-click-sdk-typescript';
|
|
13
13
|
export type { GetExecutionStatusResponse, QuoteResponse, TokenResponse, } from '@defuse-protocol/one-click-sdk-typescript';
|
|
14
|
-
export declare const nearIntentsSupportedChainIds: readonly [KnownChainIds.EthereumMainnet, KnownChainIds.ArbitrumMainnet, KnownChainIds.BaseMainnet, KnownChainIds.GnosisMainnet, KnownChainIds.BnbSmartChainMainnet, KnownChainIds.PolygonMainnet, KnownChainIds.AvalancheMainnet, KnownChainIds.OptimismMainnet, KnownChainIds.BitcoinMainnet, KnownChainIds.BitcoinCashMainnet, KnownChainIds.DogecoinMainnet, KnownChainIds.ZcashMainnet, KnownChainIds.SolanaMainnet, KnownChainIds.TronMainnet, KnownChainIds.SuiMainnet, KnownChainIds.StarknetMainnet, KnownChainIds.MonadMainnet, KnownChainIds.NearMainnet, KnownChainIds.PlasmaMainnet, KnownChainIds.TonMainnet];
|
|
14
|
+
export declare const nearIntentsSupportedChainIds: readonly [KnownChainIds.EthereumMainnet, KnownChainIds.ArbitrumMainnet, KnownChainIds.BaseMainnet, KnownChainIds.GnosisMainnet, KnownChainIds.BnbSmartChainMainnet, KnownChainIds.PolygonMainnet, KnownChainIds.AvalancheMainnet, KnownChainIds.OptimismMainnet, KnownChainIds.BitcoinMainnet, KnownChainIds.BitcoinCashMainnet, KnownChainIds.DogecoinMainnet, KnownChainIds.ZcashMainnet, KnownChainIds.SolanaMainnet, KnownChainIds.TronMainnet, KnownChainIds.SuiMainnet, KnownChainIds.StarknetMainnet, KnownChainIds.MonadMainnet, KnownChainIds.NearMainnet, KnownChainIds.PlasmaMainnet, KnownChainIds.TonMainnet, KnownChainIds.AptosMainnet];
|
|
15
15
|
export type NearIntentsSupportedChainId = (typeof nearIntentsSupportedChainIds)[number];
|
|
16
16
|
export declare const chainIdToNearIntentsChain: Record<NearIntentsSupportedChainId, string>;
|
|
@@ -21,6 +21,7 @@ export const nearIntentsSupportedChainIds = [
|
|
|
21
21
|
KnownChainIds.NearMainnet,
|
|
22
22
|
KnownChainIds.PlasmaMainnet,
|
|
23
23
|
KnownChainIds.TonMainnet,
|
|
24
|
+
KnownChainIds.AptosMainnet,
|
|
24
25
|
];
|
|
25
26
|
export const chainIdToNearIntentsChain = {
|
|
26
27
|
[KnownChainIds.EthereumMainnet]: 'eth',
|
|
@@ -43,4 +44,5 @@ export const chainIdToNearIntentsChain = {
|
|
|
43
44
|
[KnownChainIds.MonadMainnet]: 'monad',
|
|
44
45
|
[KnownChainIds.NearMainnet]: 'near',
|
|
45
46
|
[KnownChainIds.TonMainnet]: 'ton',
|
|
47
|
+
[KnownChainIds.AptosMainnet]: 'aptos',
|
|
46
48
|
};
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { CHAIN_NAMESPACE, fromAssetId, fromChainId } from '@shapeshiftoss/caip';
|
|
2
|
-
import { evm } from '@shapeshiftoss/chain-adapters';
|
|
2
|
+
import { aptos, evm } from '@shapeshiftoss/chain-adapters';
|
|
3
3
|
import { bn, contractAddressOrUndefined } from '@shapeshiftoss/utils';
|
|
4
4
|
import { Err, Ok } from '@sniptt/monads';
|
|
5
5
|
import { TradeQuoteError } from '../../../types.js';
|
|
6
6
|
import { makeNetworkFeeEstimationFailedErr, makeSwapErrorRight } from '../../../utils/index.js';
|
|
7
|
+
import { APTOS_PLACEHOLDER_ADDRESS, APTOS_RATE_SIMULATION_VALUE } from '../../../utils/aptos/index.js';
|
|
7
8
|
import { EVM_PLACEHOLDER_ADDRESS, getEvmNetworkFeeCryptoBaseUnit } from '../../../utils/evm/index.js';
|
|
8
9
|
import { isNativeEvmAsset } from '../../../utils/helpers.js';
|
|
9
10
|
import { ATA_RENT_LAMPORTS, getSolanaNetworkFeeCryptoBaseUnit, SOLANA_PLACEHOLDER_ADDRESS, withComputeUnitLimit, } from '../../../utils/solana/index.js';
|
|
@@ -218,6 +219,33 @@ export async function getNearIntentsStepData(args) {
|
|
|
218
219
|
const stepData = { networkFeeCryptoBaseUnit: fast.txFee };
|
|
219
220
|
return Ok(stepData);
|
|
220
221
|
}
|
|
222
|
+
case CHAIN_NAMESPACE.Aptos: {
|
|
223
|
+
const adapter = deps.assertGetAptosChainAdapter(sellAsset.chainId);
|
|
224
|
+
if (type === 'rate') {
|
|
225
|
+
const { fast } = await adapter.getFeeData({
|
|
226
|
+
to: depositAddress,
|
|
227
|
+
value: APTOS_RATE_SIMULATION_VALUE,
|
|
228
|
+
chainSpecific: { from: from ?? APTOS_PLACEHOLDER_ADDRESS, contractAddress },
|
|
229
|
+
});
|
|
230
|
+
const stepData = { networkFeeCryptoBaseUnit: fast.txFee };
|
|
231
|
+
return Ok(stepData);
|
|
232
|
+
}
|
|
233
|
+
const { fast } = await adapter.getFeeData({
|
|
234
|
+
to: depositAddress,
|
|
235
|
+
value: sellAmountCryptoBaseUnit,
|
|
236
|
+
chainSpecific: { from, contractAddress },
|
|
237
|
+
});
|
|
238
|
+
const stepData = {
|
|
239
|
+
transactionData: {
|
|
240
|
+
type: 'aptos',
|
|
241
|
+
payload: aptos.getSerializedTransferPayload(depositAddress, sellAmountCryptoBaseUnit, contractAddress),
|
|
242
|
+
gasUnitPrice: fast.chainSpecific.gasUnitPrice,
|
|
243
|
+
maxGasAmount: fast.chainSpecific.maxGasAmount,
|
|
244
|
+
},
|
|
245
|
+
networkFeeCryptoBaseUnit: fast.txFee,
|
|
246
|
+
};
|
|
247
|
+
return Ok(stepData);
|
|
248
|
+
}
|
|
221
249
|
default:
|
|
222
250
|
return Err(makeSwapErrorRight({
|
|
223
251
|
message: `[getNearIntentsStepData] unsupported chain namespace: ${chainNamespace}`,
|
|
@@ -36,7 +36,7 @@ export const getNearIntentsAsset = ({ nearNetwork, contractAddress, }) => {
|
|
|
36
36
|
return `nep141:${nearNetwork}-${contractAddress.toLowerCase()}.omft.near`;
|
|
37
37
|
};
|
|
38
38
|
const NEP245_CHAINS = ['bsc', 'pol', 'avax', 'op', 'tron', 'monad', 'plasma'];
|
|
39
|
-
const TOKEN_LOOKUP_CHAINS = ['sui', 'starknet', 'ton'];
|
|
39
|
+
const TOKEN_LOOKUP_CHAINS = ['sui', 'starknet', 'ton', 'aptos'];
|
|
40
40
|
const NEAR_CHAIN = 'near';
|
|
41
41
|
const BTC_CHAIN = 'btc';
|
|
42
42
|
const WNEAR_CONTRACT_ADDRESS = 'wrap.near';
|
|
@@ -68,7 +68,7 @@ export const assetToNearIntentsAsset = async (asset) => {
|
|
|
68
68
|
});
|
|
69
69
|
return match?.assetId ?? null;
|
|
70
70
|
}
|
|
71
|
-
// NEP-245 chains (BSC, Polygon, Avalanche, Optimism, TRON, Monad), Token lookup chains (Sui, Starknet), and Solana require token lookup
|
|
71
|
+
// NEP-245 chains (BSC, Polygon, Avalanche, Optimism, TRON, Monad), Token lookup chains (Sui, Starknet, TON, Aptos), and Solana require token lookup
|
|
72
72
|
// Asset IDs use hashed format that can't be generated from contract addresses
|
|
73
73
|
const requiresLookup = isNep245Chain(nearNetwork) || isTokenLookupChain(nearNetwork) || asset.chainId === solanaChainId;
|
|
74
74
|
if (requiresLookup) {
|
|
@@ -59,7 +59,7 @@ export const portalsApi = {
|
|
|
59
59
|
const txStatus = relayTxStatus === TxStatus.Unknown ? TxStatus.Pending : relayTxStatus;
|
|
60
60
|
return {
|
|
61
61
|
status: txStatus,
|
|
62
|
-
buyTxHash: relayRequest.data?.outTxs?.[0]?.
|
|
62
|
+
buyTxHash: relayRequest.data?.outTxs?.[0]?.txHash,
|
|
63
63
|
message: txStatus === TxStatus.Failed
|
|
64
64
|
? getRelayRequestFailureMessage(relayRequest)
|
|
65
65
|
: txStatus === TxStatus.Confirmed
|
|
@@ -68,6 +68,9 @@ export const portalsApi = {
|
|
|
68
68
|
};
|
|
69
69
|
}
|
|
70
70
|
}
|
|
71
|
+
else {
|
|
72
|
+
console.error('Failed to fetch relay request:', relayResult.unwrapErr());
|
|
73
|
+
}
|
|
71
74
|
const axelarscanResult = await fetchAxelarscanBridgeStatus(txHash);
|
|
72
75
|
if (axelarscanResult.isOk()) {
|
|
73
76
|
const bridgeStatus = axelarscanResult.unwrap();
|
|
@@ -2,7 +2,7 @@ import { BigNumber, bn } from '@shapeshiftoss/utils';
|
|
|
2
2
|
import { Err, Ok } from '@sniptt/monads';
|
|
3
3
|
import { TradeQuoteError } from '../../../types.js';
|
|
4
4
|
import { assertQuoteAddresses, makeSwapErrorRight, makeTradeStepBuildFailedErr, } from '../../../utils/index.js';
|
|
5
|
-
import {
|
|
5
|
+
import { getTreasuryAddressFromChainId, normalizeEpochToMs } from '../../../utils/helpers.js';
|
|
6
6
|
import { fetchPortalsTradeOrder, PortalsError } from '../utils/fetchPortalsTradeOrder.js';
|
|
7
7
|
import { getPortalsStepData } from '../utils/getPortalsStepData.js';
|
|
8
8
|
import { getPortalsTradeContext } from '../utils/getPortalsTradeContext.js';
|
|
@@ -138,7 +138,7 @@ export const getPortalsTradeQuote = async (input, deps) => {
|
|
|
138
138
|
const tradeQuote = {
|
|
139
139
|
...tradeCommon,
|
|
140
140
|
quoteOrRate: 'quote',
|
|
141
|
-
deadline: expiryMs
|
|
141
|
+
deadline: expiryMs,
|
|
142
142
|
receiveAddress,
|
|
143
143
|
steps: [
|
|
144
144
|
{
|
|
@@ -1,53 +1,47 @@
|
|
|
1
1
|
import { fromChainId } from '@shapeshiftoss/caip';
|
|
2
|
-
import { bnOrZero } from '@shapeshiftoss/utils';
|
|
3
2
|
import { Err, Ok } from '@sniptt/monads';
|
|
4
3
|
import { makeNetworkFeeEstimationFailedErr } from '../../../utils/index.js';
|
|
5
|
-
import {
|
|
4
|
+
import { getEvmNetworkFeeCryptoBaseUnit, getEvmRateNetworkFeeCryptoBaseUnit, } from '../../../utils/evm/index.js';
|
|
6
5
|
import { fetchPortalsTradeEstimate } from './fetchPortalsTradeOrder.js';
|
|
7
6
|
export async function getPortalsStepData(args) {
|
|
8
7
|
const { tx, sellAsset, sellAmountCryptoBaseUnit, spenderAddress, input, deps } = args;
|
|
9
8
|
const adapter = deps.assertGetEvmChainAdapter(sellAsset.chainId);
|
|
10
9
|
const supportsEIP1559 = 'supportsEIP1559' in input ? input.supportsEIP1559 : false;
|
|
10
|
+
const transactionData = {
|
|
11
|
+
type: 'evm',
|
|
12
|
+
chainId: Number(fromChainId(sellAsset.chainId).chainReference),
|
|
13
|
+
to: tx.to,
|
|
14
|
+
data: tx.data,
|
|
15
|
+
value: tx.value,
|
|
16
|
+
};
|
|
17
|
+
const stateOverride = {
|
|
18
|
+
sellAsset,
|
|
19
|
+
sellAmountCryptoBaseUnit,
|
|
20
|
+
spenderAddress,
|
|
21
|
+
};
|
|
11
22
|
if (args.type === 'rate') {
|
|
23
|
+
const getEstimateEndpointGasLimit = async () => {
|
|
24
|
+
const quoteEstimateResponse = await fetchPortalsTradeEstimate({
|
|
25
|
+
inputToken: args.inputToken,
|
|
26
|
+
outputToken: args.outputToken,
|
|
27
|
+
inputAmount: args.inputAmount,
|
|
28
|
+
slippageTolerancePercentage: args.slippageTolerancePercentage,
|
|
29
|
+
swapperConfig: deps.config,
|
|
30
|
+
});
|
|
31
|
+
return quoteEstimateResponse.context.gasLimit.toString();
|
|
32
|
+
};
|
|
12
33
|
try {
|
|
13
|
-
//
|
|
14
|
-
|
|
15
|
-
const gasLimit = await (async () => {
|
|
16
|
-
try {
|
|
17
|
-
const gasLimit = await estimateGasWithStateOverride({
|
|
18
|
-
sellAsset,
|
|
19
|
-
sellAmountCryptoBaseUnit,
|
|
20
|
-
from: tx.from,
|
|
21
|
-
spenderAddress,
|
|
22
|
-
to: tx.to,
|
|
23
|
-
data: tx.data,
|
|
24
|
-
value: tx.value,
|
|
25
|
-
});
|
|
26
|
-
return gasLimit;
|
|
27
|
-
}
|
|
28
|
-
catch {
|
|
29
|
-
// Portals only carry a tx gas limit on the bridge routes their estimate endpoint zeroes
|
|
30
|
-
const { gasLimit: txGasLimit } = tx;
|
|
31
|
-
if (txGasLimit && bnOrZero(txGasLimit).gt(0))
|
|
32
|
-
return txGasLimit;
|
|
33
|
-
const quoteEstimateResponse = await fetchPortalsTradeEstimate({
|
|
34
|
-
inputToken: args.inputToken,
|
|
35
|
-
outputToken: args.outputToken,
|
|
36
|
-
inputAmount: args.inputAmount,
|
|
37
|
-
slippageTolerancePercentage: args.slippageTolerancePercentage,
|
|
38
|
-
swapperConfig: deps.config,
|
|
39
|
-
});
|
|
40
|
-
const estimatedGasLimit = quoteEstimateResponse.context.gasLimit.toString();
|
|
41
|
-
if (bnOrZero(estimatedGasLimit).lte(0))
|
|
42
|
-
throw new Error('no Portals gas limit');
|
|
43
|
-
return estimatedGasLimit;
|
|
44
|
-
}
|
|
45
|
-
})();
|
|
46
|
-
const networkFeeCryptoBaseUnit = await getEvmNetworkFeeCryptoBaseUnit({
|
|
34
|
+
// Portals only set a tx gas limit on bridge routes, where their estimate endpoint is zero
|
|
35
|
+
const networkFeeCryptoBaseUnit = await getEvmRateNetworkFeeCryptoBaseUnit({
|
|
47
36
|
adapter,
|
|
48
37
|
supportsEIP1559,
|
|
49
|
-
gasLimit,
|
|
50
|
-
|
|
38
|
+
providerGasLimit: tx.gasLimit,
|
|
39
|
+
simulation: { transactionData, from: tx.from, stateOverride },
|
|
40
|
+
}).catch(async () => getEvmRateNetworkFeeCryptoBaseUnit({
|
|
41
|
+
adapter,
|
|
42
|
+
supportsEIP1559,
|
|
43
|
+
providerGasLimit: await getEstimateEndpointGasLimit(),
|
|
44
|
+
}));
|
|
51
45
|
const stepData = { networkFeeCryptoBaseUnit };
|
|
52
46
|
return Ok(stepData);
|
|
53
47
|
}
|
|
@@ -55,27 +49,14 @@ export async function getPortalsStepData(args) {
|
|
|
55
49
|
return Err(makeNetworkFeeEstimationFailedErr('getPortalsStepData', error));
|
|
56
50
|
}
|
|
57
51
|
}
|
|
58
|
-
const transactionData = {
|
|
59
|
-
type: 'evm',
|
|
60
|
-
chainId: Number(fromChainId(sellAsset.chainId).chainReference),
|
|
61
|
-
to: tx.to,
|
|
62
|
-
data: tx.data,
|
|
63
|
-
value: tx.value,
|
|
64
|
-
// Portals simulate and pad their gas limit when the order was validated, so no additional
|
|
65
|
-
// buffer - an unvalidated order carries no gas limit and estimates below instead
|
|
66
|
-
gasLimit: tx.gasLimit,
|
|
67
|
-
};
|
|
68
52
|
try {
|
|
69
53
|
const networkFeeCryptoBaseUnit = await getEvmNetworkFeeCryptoBaseUnit({
|
|
70
54
|
adapter,
|
|
71
55
|
transactionData,
|
|
72
56
|
from: args.from,
|
|
73
57
|
supportsEIP1559,
|
|
74
|
-
stateOverride
|
|
75
|
-
|
|
76
|
-
sellAmountCryptoBaseUnit,
|
|
77
|
-
spenderAddress,
|
|
78
|
-
},
|
|
58
|
+
stateOverride,
|
|
59
|
+
providerGasLimit: tx.gasLimit,
|
|
79
60
|
});
|
|
80
61
|
const stepData = { transactionData, networkFeeCryptoBaseUnit };
|
|
81
62
|
return Ok(stepData);
|
|
@@ -45,11 +45,11 @@ const estimateEndpointGasLimit = (gasLimit) => vi.mocked(fetchPortalsTradeEstima
|
|
|
45
45
|
});
|
|
46
46
|
describe('getPortalsStepData rate gas limit', () => {
|
|
47
47
|
beforeEach(() => vi.clearAllMocks());
|
|
48
|
-
it('
|
|
49
|
-
vi.mocked(estimateGasWithStateOverride).mockRejectedValue(new Error('execution reverted'));
|
|
48
|
+
it('prices the order gas limit on bridge routes without simulating', async () => {
|
|
50
49
|
estimateEndpointGasLimit(0);
|
|
51
50
|
const actual = await rate(tx('76384'));
|
|
52
51
|
expect(actual.unwrap()).toEqual({ networkFeeCryptoBaseUnit: '76384000000000' });
|
|
52
|
+
expect(estimateGasWithStateOverride).not.toHaveBeenCalled();
|
|
53
53
|
expect(fetchPortalsTradeEstimate).not.toHaveBeenCalled();
|
|
54
54
|
});
|
|
55
55
|
it('falls back to the estimate endpoint when the order carries no gas limit', async () => {
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { Err, Ok } from '@sniptt/monads';
|
|
2
2
|
import { assertQuoteAddresses } from '../../../utils/index.js';
|
|
3
|
-
import { FALLBACK_QUOTE_DEADLINE_MS } from '../../../utils/helpers.js';
|
|
4
3
|
import { getRelayStepData } from '../utils/getRelayStepData.js';
|
|
5
4
|
import { getRelayTradeContext } from '../utils/getRelayTradeContext.js';
|
|
6
5
|
const getQuote = async (input, deps, relayChainMap) => {
|
|
@@ -12,7 +11,7 @@ const getQuote = async (input, deps, relayChainMap) => {
|
|
|
12
11
|
const maybeContext = await getRelayTradeContext({ input, deps, relayChainMap });
|
|
13
12
|
if (maybeContext.isErr())
|
|
14
13
|
return Err(maybeContext.unwrapErr());
|
|
15
|
-
const { tradeCommon, stepCommon, protocolFees, relayStepInputs, stepDataArgs, relayId } = maybeContext.unwrap();
|
|
14
|
+
const { tradeCommon, stepCommon, protocolFees, relayStepInputs, stepDataArgs, relayId, deadline, } = maybeContext.unwrap();
|
|
16
15
|
const stepResults = await Promise.all(relayStepInputs.map(async ({ data, allowanceContract }) => {
|
|
17
16
|
const maybeStepData = await getRelayStepData({
|
|
18
17
|
...stepDataArgs,
|
|
@@ -42,7 +41,7 @@ const getQuote = async (input, deps, relayChainMap) => {
|
|
|
42
41
|
const tradeQuote = {
|
|
43
42
|
...tradeCommon,
|
|
44
43
|
quoteOrRate: 'quote',
|
|
45
|
-
deadline
|
|
44
|
+
deadline,
|
|
46
45
|
receiveAddress,
|
|
47
46
|
steps,
|
|
48
47
|
};
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { fromChainId } from '@shapeshiftoss/caip';
|
|
2
2
|
import { tron } from '@shapeshiftoss/chain-adapters';
|
|
3
|
-
import {
|
|
3
|
+
import { contractAddressOrUndefined, isToken } from '@shapeshiftoss/utils';
|
|
4
4
|
import { Err, Ok } from '@sniptt/monads';
|
|
5
5
|
import { makeNetworkFeeEstimationFailedErr, makeTradeStepBuildFailedErr } from '../../../utils/index.js';
|
|
6
|
-
import { getEvmNetworkFeeCryptoBaseUnit } from '../../../utils/evm/index.js';
|
|
6
|
+
import { getEvmNetworkFeeCryptoBaseUnit, getEvmRateNetworkFeeCryptoBaseUnit, } from '../../../utils/evm/index.js';
|
|
7
7
|
import { getSolanaNetworkFeeCryptoBaseUnit, omitComputeBudgetInstructions, withComputeUnitLimit, } from '../../../utils/solana/index.js';
|
|
8
8
|
import { getTronContractCallFallbackFeeCryptoBaseUnit, getTronContractCallNetworkFeeCryptoBaseUnit, } from '../../../utils/tron/index.js';
|
|
9
9
|
import { getUtxoNetworkFeeCryptoBaseUnit } from '../../../utils/utxo/index.js';
|
|
@@ -34,7 +34,6 @@ export async function getRelayStepData({ data, sellAsset, sellAmountCryptoBaseUn
|
|
|
34
34
|
to,
|
|
35
35
|
value,
|
|
36
36
|
data: callData,
|
|
37
|
-
gasLimit: bnOrZero(relayGasLimit).gt(0) ? relayGasLimit : undefined,
|
|
38
37
|
};
|
|
39
38
|
const adapter = deps.assertGetEvmChainAdapter(sellAsset.chainId);
|
|
40
39
|
const stateOverride = {
|
|
@@ -43,20 +42,12 @@ export async function getRelayStepData({ data, sellAsset, sellAmountCryptoBaseUn
|
|
|
43
42
|
spenderAddress,
|
|
44
43
|
};
|
|
45
44
|
if (type === 'rate') {
|
|
46
|
-
const networkFeeCryptoBaseUnit = await (
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
supportsEIP1559,
|
|
53
|
-
stateOverride,
|
|
54
|
-
});
|
|
55
|
-
}
|
|
56
|
-
catch {
|
|
57
|
-
return fallbackNetworkFeeCryptoBaseUnit;
|
|
58
|
-
}
|
|
59
|
-
})();
|
|
45
|
+
const networkFeeCryptoBaseUnit = await getEvmRateNetworkFeeCryptoBaseUnit({
|
|
46
|
+
adapter,
|
|
47
|
+
supportsEIP1559,
|
|
48
|
+
providerGasLimit: relayGasLimit,
|
|
49
|
+
simulation: { transactionData, from, stateOverride },
|
|
50
|
+
}).catch(() => fallbackNetworkFeeCryptoBaseUnit);
|
|
60
51
|
const stepData = { networkFeeCryptoBaseUnit };
|
|
61
52
|
return Ok(stepData);
|
|
62
53
|
}
|
|
@@ -68,6 +59,7 @@ export async function getRelayStepData({ data, sellAsset, sellAmountCryptoBaseUn
|
|
|
68
59
|
from,
|
|
69
60
|
supportsEIP1559,
|
|
70
61
|
stateOverride,
|
|
62
|
+
providerGasLimit: relayGasLimit,
|
|
71
63
|
});
|
|
72
64
|
const stepData = { transactionData, networkFeeCryptoBaseUnit };
|
|
73
65
|
return Ok(stepData);
|
|
@@ -13,6 +13,7 @@ type RelayTradeContext = {
|
|
|
13
13
|
}[];
|
|
14
14
|
stepDataArgs: Omit<GetRelayStepDataArgs, 'type' | 'input' | 'data' | 'spenderAddress'>;
|
|
15
15
|
relayId: string;
|
|
16
|
+
deadline: number | undefined;
|
|
16
17
|
};
|
|
17
18
|
export declare const getRelayTradeContext: ({ input, deps, relayChainMap, }: {
|
|
18
19
|
input: RelayTradeQuoteInput | RelayTradeRateInput | RelayExactOutputTradeQuoteInput | RelayExactOutputTradeRateInput;
|
|
@@ -7,7 +7,7 @@ import { zeroAddress } from 'viem';
|
|
|
7
7
|
import { MixPanelEvent, SwapperName, TradeQuoteError } from '../../../types.js';
|
|
8
8
|
import { getInputOutputRate, makeSwapErrorRight } from '../../../utils/index.js';
|
|
9
9
|
import { buildAffiliateFee } from '../../../utils/affiliateFee.js';
|
|
10
|
-
import { getTradeAmount, isNativeEvmAsset } from '../../../utils/helpers.js';
|
|
10
|
+
import { getTradeAmount, isNativeEvmAsset, normalizeEpochToMs } from '../../../utils/helpers.js';
|
|
11
11
|
import { MAXIMUM_SUPPORTED_RELAY_STEPS, relayErrorCodeToTradeQuoteError } from '../constant.js';
|
|
12
12
|
import { getRelayAssetAddress } from '../utils/getRelayAssetAddress.js';
|
|
13
13
|
import { relayTokenToAsset } from '../utils/relayTokenToAsset.js';
|
|
@@ -258,6 +258,9 @@ export const getRelayTradeContext = async ({ input, deps, relayChainMap, }) => {
|
|
|
258
258
|
.plus(appFeesBaseUnit)
|
|
259
259
|
.toFixed();
|
|
260
260
|
const relayId = quote.steps[0].requestId;
|
|
261
|
+
// Only cross-chain (protocol v2) orders carry an expiry; past it the solver submits a no-fill refund
|
|
262
|
+
const orderDeadline = quote.protocol?.v2?.orderData?.output?.deadline;
|
|
263
|
+
const deadline = orderDeadline === undefined ? undefined : normalizeEpochToMs(orderDeadline);
|
|
261
264
|
const relayStepInputs = swapSteps.map(step => {
|
|
262
265
|
const data = step.items?.[0]?.data;
|
|
263
266
|
return { data, allowanceContract: getRelayAllowanceContract(data) };
|
|
@@ -301,6 +304,7 @@ export const getRelayTradeContext = async ({ input, deps, relayChainMap, }) => {
|
|
|
301
304
|
...appFeesAsProtocolFee,
|
|
302
305
|
},
|
|
303
306
|
relayStepInputs,
|
|
307
|
+
deadline,
|
|
304
308
|
stepDataArgs: {
|
|
305
309
|
sellAsset,
|
|
306
310
|
sellAmountCryptoBaseUnit,
|
|
@@ -20,13 +20,13 @@ export const relayStatusToTxStatus = (status) => {
|
|
|
20
20
|
};
|
|
21
21
|
// Relay index requests by origin tx hash, resolving a swap we hold no relayId for
|
|
22
22
|
export const fetchRelayRequestByTxHash = async (txHash, config) => {
|
|
23
|
-
const maybeResponse = await relayService.get(`${config.VITE_RELAY_API_URL}/requests/
|
|
23
|
+
const maybeResponse = await relayService.get(`${config.VITE_RELAY_API_URL}/requests/v3?depositTxHash=${txHash}`, getRelayRequestConfig(config));
|
|
24
24
|
// Match the origin tx ourselves rather than trusting the listing to have filtered on it
|
|
25
|
-
return maybeResponse.map(({ data }) => data.requests?.find(({ data: request }) => request?.inTxs?.some(({ hash }) => hash?.toLowerCase() === txHash.toLowerCase())));
|
|
25
|
+
return maybeResponse.map(({ data }) => data.requests?.find(({ data: request }) => request?.inTxs?.some(({ txHash: hash }) => hash?.toLowerCase() === txHash.toLowerCase())));
|
|
26
26
|
};
|
|
27
27
|
export const getRelayRequestFailureMessage = (request) => {
|
|
28
28
|
const { failReason, refundFailReason } = request.data ?? {};
|
|
29
|
-
// Relay report 'N/A' rather than
|
|
29
|
+
// Relay can report 'N/A' rather than null when there isn't one
|
|
30
30
|
const reason = [failReason, refundFailReason].find(value => value && value !== 'N/A');
|
|
31
31
|
return reason ?? 'Bridge failed';
|
|
32
32
|
};
|
|
@@ -9,12 +9,12 @@ export type RelayMetadata = {
|
|
|
9
9
|
data?: string;
|
|
10
10
|
};
|
|
11
11
|
export type RelayRequestTransaction = {
|
|
12
|
-
|
|
12
|
+
txHash?: string;
|
|
13
13
|
chainId?: number;
|
|
14
14
|
};
|
|
15
15
|
export type RelayRequestData = {
|
|
16
|
-
failReason?: string;
|
|
17
|
-
refundFailReason?: string;
|
|
16
|
+
failReason?: string | null;
|
|
17
|
+
refundFailReason?: string | null;
|
|
18
18
|
inTxs?: RelayRequestTransaction[];
|
|
19
19
|
outTxs?: RelayRequestTransaction[];
|
|
20
20
|
};
|
|
@@ -121,9 +121,14 @@ export type RelayQuoteStep = {
|
|
|
121
121
|
requestId: string;
|
|
122
122
|
items?: RelayQuoteItem[];
|
|
123
123
|
};
|
|
124
|
+
export type RelayOrderData = {
|
|
125
|
+
output?: {
|
|
126
|
+
deadline?: number;
|
|
127
|
+
};
|
|
128
|
+
};
|
|
124
129
|
export type RelayProtocolV2 = {
|
|
125
130
|
orderId: string | undefined;
|
|
126
|
-
orderData?:
|
|
131
|
+
orderData?: RelayOrderData;
|
|
127
132
|
paymentDetails?: {
|
|
128
133
|
chainId: string;
|
|
129
134
|
depository: string;
|
|
@@ -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>>;
|