@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
package/dist/esm/constants.js
CHANGED
|
@@ -9,12 +9,15 @@ import { cetusApi, cetusSwapper } from './swappers/CetusSwapper/index.js';
|
|
|
9
9
|
import { chainflipApi, chainflipSwapper } from './swappers/ChainflipSwapper/index.js';
|
|
10
10
|
import { cowApi, cowSwapper } from './swappers/CowSwapper/index.js';
|
|
11
11
|
import { debridgeApi, debridgeSwapper } from './swappers/DebridgeSwapper/index.js';
|
|
12
|
+
import { fyndApi, fyndSwapper } from './swappers/FyndSwapper/index.js';
|
|
13
|
+
import { kyberApi, kyberSwapper } from './swappers/KyberSwapper/index.js';
|
|
12
14
|
import { mayachainApi, mayachainSwapper } from './swappers/MayachainSwapper/index.js';
|
|
13
15
|
import { nearIntentsApi, nearIntentsSwapper } from './swappers/NearIntentsSwapper/index.js';
|
|
14
16
|
import { portalsApi, portalsSwapper } from './swappers/PortalsSwapper/index.js';
|
|
15
17
|
import { relayApi, relaySwapper } from './swappers/RelaySwapper/index.js';
|
|
16
18
|
import { stonfiApi, stonfiSwapper } from './swappers/StonfiSwapper/index.js';
|
|
17
19
|
import { sunioApi, sunioSwapper } from './swappers/SunioSwapper/index.js';
|
|
20
|
+
import { symbiosisApi, symbiosisSwapper } from './swappers/SymbiosisSwapper/index.js';
|
|
18
21
|
import { thorchainApi, thorchainSwapper } from './swappers/ThorchainSwapper/index.js';
|
|
19
22
|
import { zrxApi, zrxSwapper } from './swappers/ZrxSwapper/index.js';
|
|
20
23
|
import { SwapperName, TradeQuoteError } from './types.js';
|
|
@@ -99,6 +102,18 @@ export const swappers = {
|
|
|
99
102
|
...bobGatewaySwapper,
|
|
100
103
|
...bobGatewayApi,
|
|
101
104
|
},
|
|
105
|
+
[SwapperName.Symbiosis]: {
|
|
106
|
+
...symbiosisSwapper,
|
|
107
|
+
...symbiosisApi,
|
|
108
|
+
},
|
|
109
|
+
[SwapperName.Fynd]: {
|
|
110
|
+
...fyndSwapper,
|
|
111
|
+
...fyndApi,
|
|
112
|
+
},
|
|
113
|
+
[SwapperName.KyberSwap]: {
|
|
114
|
+
...kyberSwapper,
|
|
115
|
+
...kyberApi,
|
|
116
|
+
},
|
|
102
117
|
[SwapperName.Test]: undefined,
|
|
103
118
|
};
|
|
104
119
|
const DEFAULT_SLIPPAGE_DECIMAL_PERCENTAGE = '0.002';
|
|
@@ -118,12 +133,16 @@ const DEFAULT_STONFI_SLIPPAGE_DECIMAL_PERCENTAGE = '0.01';
|
|
|
118
133
|
// deBridge API off-chain simulation overestimates output on some chains (e.g. SEI ~2.4%), so auto slippage (1%) is insufficient
|
|
119
134
|
const DEFAULT_DEBRIDGE_SLIPPAGE_DECIMAL_PERCENTAGE = '0.03';
|
|
120
135
|
const DEFAULT_BOB_GATEWAY_SLIPPAGE_DECIMAL_PERCENTAGE = '0.03';
|
|
136
|
+
// Symbiosis splits the tolerance across up to three legs, and a destination leg over its share pays out the transit token instead of reverting
|
|
137
|
+
const DEFAULT_SYMBIOSIS_SLIPPAGE_DECIMAL_PERCENTAGE = '0.01';
|
|
121
138
|
export const getDefaultSlippageDecimalPercentageForSwapper = (swapperName) => {
|
|
122
139
|
if (swapperName === undefined)
|
|
123
140
|
return DEFAULT_SLIPPAGE_DECIMAL_PERCENTAGE;
|
|
124
141
|
switch (swapperName) {
|
|
125
142
|
case SwapperName.Zrx:
|
|
126
143
|
case SwapperName.Bebop:
|
|
144
|
+
case SwapperName.Fynd:
|
|
145
|
+
case SwapperName.KyberSwap:
|
|
127
146
|
case SwapperName.Test:
|
|
128
147
|
return DEFAULT_SLIPPAGE_DECIMAL_PERCENTAGE;
|
|
129
148
|
case SwapperName.CowSwap:
|
|
@@ -158,6 +177,8 @@ export const getDefaultSlippageDecimalPercentageForSwapper = (swapperName) => {
|
|
|
158
177
|
return DEFAULT_STONFI_SLIPPAGE_DECIMAL_PERCENTAGE;
|
|
159
178
|
case SwapperName.BobGateway:
|
|
160
179
|
return DEFAULT_BOB_GATEWAY_SLIPPAGE_DECIMAL_PERCENTAGE;
|
|
180
|
+
case SwapperName.Symbiosis:
|
|
181
|
+
return DEFAULT_SYMBIOSIS_SLIPPAGE_DECIMAL_PERCENTAGE;
|
|
161
182
|
default:
|
|
162
183
|
return assertUnreachable(swapperName);
|
|
163
184
|
}
|
package/dist/esm/index.d.ts
CHANGED
|
@@ -15,11 +15,14 @@ export * from './swappers/ChainflipSwapper/index.js';
|
|
|
15
15
|
export * from './swappers/SunioSwapper/index.js';
|
|
16
16
|
export * from './swappers/CowSwapper/index.js';
|
|
17
17
|
export * from './swappers/DebridgeSwapper/index.js';
|
|
18
|
+
export * from './swappers/FyndSwapper/index.js';
|
|
19
|
+
export * from './swappers/KyberSwapper/index.js';
|
|
18
20
|
export * from './swappers/PortalsSwapper/index.js';
|
|
19
21
|
export * from './swappers/ThorchainSwapper/index.js';
|
|
20
22
|
export * from './swappers/MayachainSwapper/index.js';
|
|
21
23
|
export * from './swappers/ButterSwap/index.js';
|
|
22
24
|
export * from './swappers/RelaySwapper/index.js';
|
|
25
|
+
export * from './swappers/SymbiosisSwapper/index.js';
|
|
23
26
|
export * from './utils/helpers.js';
|
|
24
27
|
export * from './utils/thorchain/index.js';
|
|
25
28
|
export * from './types.js';
|
package/dist/esm/index.js
CHANGED
|
@@ -15,11 +15,14 @@ export * from './swappers/ChainflipSwapper/index.js';
|
|
|
15
15
|
export * from './swappers/SunioSwapper/index.js';
|
|
16
16
|
export * from './swappers/CowSwapper/index.js';
|
|
17
17
|
export * from './swappers/DebridgeSwapper/index.js';
|
|
18
|
+
export * from './swappers/FyndSwapper/index.js';
|
|
19
|
+
export * from './swappers/KyberSwapper/index.js';
|
|
18
20
|
export * from './swappers/PortalsSwapper/index.js';
|
|
19
21
|
export * from './swappers/ThorchainSwapper/index.js';
|
|
20
22
|
export * from './swappers/MayachainSwapper/index.js';
|
|
21
23
|
export * from './swappers/ButterSwap/index.js';
|
|
22
24
|
export * from './swappers/RelaySwapper/index.js';
|
|
25
|
+
export * from './swappers/SymbiosisSwapper/index.js';
|
|
23
26
|
export * from './utils/helpers.js';
|
|
24
27
|
export * from './utils/thorchain/index.js';
|
|
25
28
|
export * from './types.js';
|
|
@@ -4,7 +4,7 @@ import { Err, Ok } from '@sniptt/monads';
|
|
|
4
4
|
import { AddressLookupTableAccount, PublicKey, TransactionMessage, VersionedTransaction, } from '@solana/web3.js';
|
|
5
5
|
import { TradeQuoteError } from '../../../types.js';
|
|
6
6
|
import { makeNetworkFeeEstimationFailedErr, makeSwapErrorRight, makeTradeStepBuildFailedErr, } from '../../../utils/index.js';
|
|
7
|
-
import { getEvmNetworkFeeCryptoBaseUnit } from '../../../utils/evm/index.js';
|
|
7
|
+
import { getEvmNetworkFeeCryptoBaseUnit, getEvmRateNetworkFeeCryptoBaseUnit, } from '../../../utils/evm/index.js';
|
|
8
8
|
import { getSolanaNetworkFeeCryptoBaseUnit } from '../../../utils/solana/index.js';
|
|
9
9
|
export async function getAcrossStepData(args) {
|
|
10
10
|
const { swapTx, sellAsset, sellAmountCryptoBaseUnit, spenderAddress, from, type, input, fallbackNetworkFeeCryptoBaseUnit, deps, } = args;
|
|
@@ -18,7 +18,6 @@ export async function getAcrossStepData(args) {
|
|
|
18
18
|
to: swapTx.to,
|
|
19
19
|
data: swapTx.data,
|
|
20
20
|
value: swapTx.value ?? '0',
|
|
21
|
-
gasLimit: swapTx.gas,
|
|
22
21
|
};
|
|
23
22
|
const stateOverride = {
|
|
24
23
|
sellAsset,
|
|
@@ -26,20 +25,12 @@ export async function getAcrossStepData(args) {
|
|
|
26
25
|
spenderAddress,
|
|
27
26
|
};
|
|
28
27
|
if (type === 'rate') {
|
|
29
|
-
const networkFeeCryptoBaseUnit = await (
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
supportsEIP1559,
|
|
36
|
-
stateOverride,
|
|
37
|
-
});
|
|
38
|
-
}
|
|
39
|
-
catch {
|
|
40
|
-
return fallbackNetworkFeeCryptoBaseUnit;
|
|
41
|
-
}
|
|
42
|
-
})();
|
|
28
|
+
const networkFeeCryptoBaseUnit = await getEvmRateNetworkFeeCryptoBaseUnit({
|
|
29
|
+
adapter,
|
|
30
|
+
supportsEIP1559,
|
|
31
|
+
providerGasLimit: swapTx.gas,
|
|
32
|
+
simulation: { transactionData, from, stateOverride },
|
|
33
|
+
}).catch(() => fallbackNetworkFeeCryptoBaseUnit);
|
|
43
34
|
const stepData = { networkFeeCryptoBaseUnit };
|
|
44
35
|
return Ok(stepData);
|
|
45
36
|
}
|
|
@@ -50,6 +41,7 @@ export async function getAcrossStepData(args) {
|
|
|
50
41
|
from,
|
|
51
42
|
supportsEIP1559,
|
|
52
43
|
stateOverride,
|
|
44
|
+
providerGasLimit: swapTx.gas,
|
|
53
45
|
});
|
|
54
46
|
const stepData = { transactionData, networkFeeCryptoBaseUnit };
|
|
55
47
|
return Ok(stepData);
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { supportsETH } from '@shapeshiftoss/hdwallet-core';
|
|
2
2
|
import { Err, Ok } from '@sniptt/monads';
|
|
3
3
|
import { assertQuoteAddresses } from '../../../utils/index.js';
|
|
4
|
-
import { FALLBACK_QUOTE_DEADLINE_MS } from '../../../utils/helpers.js';
|
|
5
4
|
import { getArbitrumBridgeStepData } from '../utils/getArbitrumBridgeStepData.js';
|
|
6
5
|
import { getArbitrumBridgeTradeContext } from '../utils/getArbitrumBridgeTradeContext.js';
|
|
7
6
|
export const getTradeQuoteWithWallet = async (inputWithWallet, deps) => {
|
|
@@ -33,7 +32,6 @@ export const getTradeQuote = async (input, deps) => {
|
|
|
33
32
|
const tradeQuote = {
|
|
34
33
|
...tradeCommon,
|
|
35
34
|
quoteOrRate: 'quote',
|
|
36
|
-
deadline: Date.now() + FALLBACK_QUOTE_DEADLINE_MS,
|
|
37
35
|
receiveAddress,
|
|
38
36
|
steps: [
|
|
39
37
|
{
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { quoteToCalls } from '@avnu/avnu-sdk';
|
|
2
2
|
import { toAddressNList } from '@shapeshiftoss/chain-adapters';
|
|
3
|
-
import { CallData, hash, validateAndParseAddress } from 'starknet';
|
|
3
|
+
import { CallData, hash, transaction, validateAndParseAddress } from 'starknet';
|
|
4
4
|
import { checkStarknetSwapStatus, createDefaultStatusResponse, getExecutableTradeStep, getSwapMetadata, isExecutableTradeQuote, } from '../../utils/index.js';
|
|
5
5
|
import { getTradeQuote } from './swapperApi/getTradeQuote.js';
|
|
6
6
|
import { getTradeRate } from './swapperApi/getTradeRate.js';
|
|
@@ -8,7 +8,7 @@ import { toHexString } from './utils/helpers.js';
|
|
|
8
8
|
export const avnuApi = {
|
|
9
9
|
getTradeQuote: (input, deps) => getTradeQuote(input, deps),
|
|
10
10
|
getTradeRate: (input, deps) => getTradeRate(input, deps),
|
|
11
|
-
getUnsignedStarknetTransaction: async ({ stepIndex, tradeQuote, from, slippageTolerancePercentageDecimal, assertGetStarknetChainAdapter, }) => {
|
|
11
|
+
getUnsignedStarknetTransaction: async ({ stepIndex, tradeQuote, from, callsOnly, slippageTolerancePercentageDecimal, assertGetStarknetChainAdapter, }) => {
|
|
12
12
|
if (!isExecutableTradeQuote(tradeQuote))
|
|
13
13
|
throw new Error('Unable to execute a trade rate quote');
|
|
14
14
|
const step = getExecutableTradeStep(tradeQuote, stepIndex);
|
|
@@ -34,19 +34,23 @@ export const avnuApi = {
|
|
|
34
34
|
if (!avnuCalls || avnuCalls.length === 0) {
|
|
35
35
|
throw new Error('No swap calls returned from AVNU - quote may have expired');
|
|
36
36
|
}
|
|
37
|
-
|
|
38
|
-
// Format: [call_array_length, contract1, selector1, calldata_len1, ...calldata1, ...]
|
|
39
|
-
const fullCalldata = [avnuCalls.length.toString()];
|
|
40
|
-
for (const call of avnuCalls) {
|
|
37
|
+
const calls = avnuCalls.map(call => {
|
|
41
38
|
const rawCalldata = call.calldata ?? [];
|
|
42
|
-
const
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
39
|
+
const calldata = Array.isArray(rawCalldata) ? rawCalldata : CallData.compile(rawCalldata);
|
|
40
|
+
return {
|
|
41
|
+
contractAddress: validateAndParseAddress(call.contractAddress),
|
|
42
|
+
entrypoint: call.entrypoint,
|
|
43
|
+
calldata: calldata.map(String),
|
|
44
|
+
};
|
|
45
|
+
});
|
|
46
|
+
if (callsOnly) {
|
|
47
|
+
return {
|
|
48
|
+
addressNList: toAddressNList(adapter.getBip44Params({ accountNumber })),
|
|
49
|
+
txHash: '',
|
|
50
|
+
calls,
|
|
51
|
+
};
|
|
47
52
|
}
|
|
48
|
-
|
|
49
|
-
const formattedCalldata = fullCalldata.map(toHexString);
|
|
53
|
+
const formattedCalldata = transaction.getExecuteCalldata(calls, '1').map(toHexString);
|
|
50
54
|
// Get nonce using adapter method (checks deployment status and returns appropriate nonce)
|
|
51
55
|
const chainIdHex = await adapter.getStarknetProvider().getChainId();
|
|
52
56
|
const nonce = await adapter.getNonce(normalizedFrom);
|
|
@@ -144,6 +148,7 @@ export const avnuApi = {
|
|
|
144
148
|
return {
|
|
145
149
|
addressNList: toAddressNList(adapter.getBip44Params({ accountNumber })),
|
|
146
150
|
txHash,
|
|
151
|
+
calls,
|
|
147
152
|
_txDetails: {
|
|
148
153
|
fromAddress: normalizedFrom,
|
|
149
154
|
calldata: formattedCalldata,
|
|
@@ -2,7 +2,6 @@ import { Err, Ok } from '@sniptt/monads';
|
|
|
2
2
|
import { validateAndParseAddress } from 'starknet';
|
|
3
3
|
import { TradeQuoteError } from '../../../types.js';
|
|
4
4
|
import { assertQuoteAddresses, makeSwapErrorRight } from '../../../utils/index.js';
|
|
5
|
-
import { FALLBACK_QUOTE_DEADLINE_MS } from '../../../utils/helpers.js';
|
|
6
5
|
import { getAvnuTradeContext } from '../utils/getAvnuTradeContext.js';
|
|
7
6
|
export const getTradeQuote = async (input, deps) => {
|
|
8
7
|
const { sellAsset, accountNumber } = input;
|
|
@@ -33,7 +32,7 @@ export const getTradeQuote = async (input, deps) => {
|
|
|
33
32
|
...tradeCommon,
|
|
34
33
|
receiveAddress: normalizedReceiveAddress,
|
|
35
34
|
quoteOrRate: 'quote',
|
|
36
|
-
deadline
|
|
35
|
+
deadline,
|
|
37
36
|
steps: [
|
|
38
37
|
{
|
|
39
38
|
...stepCommon,
|
|
@@ -13,12 +13,13 @@ export declare const fetchBebopQuote: ({ buyAsset, sellAsset, sellAmountIncludin
|
|
|
13
13
|
affiliateBps?: string | undefined;
|
|
14
14
|
apiKey: string;
|
|
15
15
|
}) => Promise<Result<BebopQuoteResponse, SwapErrorRight>>;
|
|
16
|
-
export declare const fetchBebopSolanaQuote: ({ buyAsset, sellAsset, sellAmountIncludingProtocolFeesCryptoBaseUnit, takerAddress, receiverAddress, slippageTolerancePercentageDecimal, apiKey, }: {
|
|
16
|
+
export declare const fetchBebopSolanaQuote: ({ buyAsset, sellAsset, sellAmountIncludingProtocolFeesCryptoBaseUnit, takerAddress, receiverAddress, slippageTolerancePercentageDecimal, affiliateBps, apiKey, }: {
|
|
17
17
|
buyAsset: Asset;
|
|
18
18
|
sellAsset: Asset;
|
|
19
19
|
sellAmountIncludingProtocolFeesCryptoBaseUnit: string;
|
|
20
20
|
takerAddress: string;
|
|
21
21
|
receiverAddress: string;
|
|
22
22
|
slippageTolerancePercentageDecimal: string;
|
|
23
|
+
affiliateBps?: string | undefined;
|
|
23
24
|
apiKey: string;
|
|
24
25
|
}) => Promise<Result<BebopSolanaQuoteResponse, SwapErrorRight>>;
|
|
@@ -8,6 +8,9 @@ import { getTreasuryAddressFromChainId } from '../../../utils/helpers.js';
|
|
|
8
8
|
import { chainIdToBebopChain } from '../types.js';
|
|
9
9
|
import { bebopServiceFactory } from './bebopService.js';
|
|
10
10
|
import { assetIdToBebopSolanaToken, assetIdToBebopToken } from './helpers.js';
|
|
11
|
+
// PMM charges the fee set against our api key, which nets exactly this bps
|
|
12
|
+
const BEBOP_PMM_AFFILIATE_BPS = '60';
|
|
13
|
+
const isPmmEligible = (affiliateBps) => bnOrZero(affiliateBps).eq(BEBOP_PMM_AFFILIATE_BPS);
|
|
11
14
|
export const fetchBebopQuote = async ({ buyAsset, sellAsset, sellAmountIncludingProtocolFeesCryptoBaseUnit, takerAddress, receiverAddress, slippageTolerancePercentageDecimal, affiliateBps, apiKey, }) => {
|
|
12
15
|
try {
|
|
13
16
|
const sellToken = assetIdToBebopToken(sellAsset.assetId);
|
|
@@ -27,26 +30,24 @@ export const fetchBebopQuote = async ({ buyAsset, sellAsset, sellAmountIncluding
|
|
|
27
30
|
approval_type: 'Standard',
|
|
28
31
|
skip_validation: 'true',
|
|
29
32
|
gasless: 'false',
|
|
30
|
-
// PMM fees are configured against our api key on Bebop's side, not sent per quote
|
|
31
33
|
source: 'shapeshift',
|
|
32
34
|
};
|
|
33
35
|
const jamParams = new URLSearchParams(baseParams);
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
jamParams.set('fee', affiliateBps);
|
|
38
|
-
jamParams.set('fee_recipient', getAddress(getTreasuryAddressFromChainId(buyAsset.chainId)));
|
|
39
|
-
}
|
|
36
|
+
// Without an explicit fee JAM charges our api key's flat fee, so 1 bps is the lowest it can go
|
|
37
|
+
jamParams.set('fee', affiliateBps && bnOrZero(affiliateBps).gt(0) ? affiliateBps : '1');
|
|
38
|
+
jamParams.set('fee_recipient', getAddress(getTreasuryAddressFromChainId(buyAsset.chainId)));
|
|
40
39
|
const service = bebopServiceFactory({ apiKey });
|
|
41
|
-
const
|
|
40
|
+
const requests = [
|
|
42
41
|
service.get(`https://api.bebop.xyz/jam/${chainName}/v2/quote`, {
|
|
43
42
|
params: jamParams,
|
|
44
43
|
}),
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
|
|
44
|
+
];
|
|
45
|
+
if (isPmmEligible(affiliateBps)) {
|
|
46
|
+
requests.push(service.get(`https://api.bebop.xyz/pmm/${chainName}/v3/quote`, {
|
|
47
|
+
params: new URLSearchParams(baseParams),
|
|
48
|
+
}));
|
|
49
|
+
}
|
|
50
|
+
const maybeResponses = await Promise.all(requests);
|
|
50
51
|
if (maybeResponses.every(maybeResponse => maybeResponse.isErr())) {
|
|
51
52
|
return Err(makeSwapErrorRight({
|
|
52
53
|
message: 'Failed to fetch quote from Bebop',
|
|
@@ -76,8 +77,14 @@ export const fetchBebopQuote = async ({ buyAsset, sellAsset, sellAmountIncluding
|
|
|
76
77
|
}));
|
|
77
78
|
}
|
|
78
79
|
};
|
|
79
|
-
export const fetchBebopSolanaQuote = async ({ buyAsset, sellAsset, sellAmountIncludingProtocolFeesCryptoBaseUnit, takerAddress, receiverAddress, slippageTolerancePercentageDecimal, apiKey, }) => {
|
|
80
|
+
export const fetchBebopSolanaQuote = async ({ buyAsset, sellAsset, sellAmountIncludingProtocolFeesCryptoBaseUnit, takerAddress, receiverAddress, slippageTolerancePercentageDecimal, affiliateBps, apiKey, }) => {
|
|
80
81
|
try {
|
|
82
|
+
if (!isPmmEligible(affiliateBps)) {
|
|
83
|
+
return Err(makeSwapErrorRight({
|
|
84
|
+
message: 'Bebop Solana is PMM only and cannot take the requested bps',
|
|
85
|
+
code: TradeQuoteError.NoRouteFound,
|
|
86
|
+
}));
|
|
87
|
+
}
|
|
81
88
|
// Bebop's Solana routes don't wrap native SOL on the input side, so selling native SOL
|
|
82
89
|
// always fails on-chain. Reject up front instead of returning an unexecutable quote.
|
|
83
90
|
if (sellAsset.assetId === solAssetId) {
|
|
@@ -100,7 +107,6 @@ export const fetchBebopSolanaQuote = async ({ buyAsset, sellAsset, sellAmountInc
|
|
|
100
107
|
approval_type: 'Standard',
|
|
101
108
|
skip_validation: 'false',
|
|
102
109
|
gasless: 'true',
|
|
103
|
-
// Solana is PMM only, so its fees are configured against our api key on Bebop's side
|
|
104
110
|
source: 'shapeshift',
|
|
105
111
|
});
|
|
106
112
|
const maybeResponse = await bebopServiceFactory({ apiKey }).get('https://api.bebop.xyz/pmm/solana/v3/quote', { params });
|
|
@@ -19,6 +19,7 @@ export const getBebopSolanaTradeContext = async ({ input, deps, takerAddress, re
|
|
|
19
19
|
takerAddress,
|
|
20
20
|
receiverAddress,
|
|
21
21
|
slippageTolerancePercentageDecimal,
|
|
22
|
+
affiliateBps,
|
|
22
23
|
apiKey: deps.config.VITE_BEBOP_API_KEY,
|
|
23
24
|
});
|
|
24
25
|
if (maybeBebopQuoteResponse.isErr())
|
|
@@ -3,46 +3,41 @@ import { bnOrZero } from '@shapeshiftoss/utils';
|
|
|
3
3
|
import { Err, Ok } from '@sniptt/monads';
|
|
4
4
|
import { fromHex } from 'viem';
|
|
5
5
|
import { makeNetworkFeeEstimationFailedErr } from '../../../utils/index.js';
|
|
6
|
-
import { getEvmNetworkFeeCryptoBaseUnit } from '../../../utils/evm/index.js';
|
|
6
|
+
import { getEvmNetworkFeeCryptoBaseUnit, getEvmRateNetworkFeeCryptoBaseUnit, } from '../../../utils/evm/index.js';
|
|
7
7
|
export async function getBebopStepData(args) {
|
|
8
8
|
const { tx, spenderAddress, sellAsset, sellAmountCryptoBaseUnit, type, input, from, deps } = args;
|
|
9
9
|
const adapter = deps.assertGetEvmChainAdapter(sellAsset.chainId);
|
|
10
10
|
const supportsEIP1559 = 'supportsEIP1559' in input ? input.supportsEIP1559 : false;
|
|
11
|
-
if (type === 'rate') {
|
|
12
|
-
const networkFeeCryptoBaseUnit = await (async () => {
|
|
13
|
-
try {
|
|
14
|
-
return await getEvmNetworkFeeCryptoBaseUnit({
|
|
15
|
-
adapter,
|
|
16
|
-
supportsEIP1559,
|
|
17
|
-
gasLimit: bnOrZero(tx.gas).toString(),
|
|
18
|
-
});
|
|
19
|
-
}
|
|
20
|
-
catch {
|
|
21
|
-
return bnOrZero(tx.gas).times(bnOrZero(tx.gasPrice)).toFixed(0);
|
|
22
|
-
}
|
|
23
|
-
})();
|
|
24
|
-
const stepData = { networkFeeCryptoBaseUnit };
|
|
25
|
-
return Ok(stepData);
|
|
26
|
-
}
|
|
27
11
|
const transactionData = {
|
|
28
12
|
type: 'evm',
|
|
29
13
|
chainId: Number(fromChainId(sellAsset.chainId).chainReference),
|
|
30
14
|
to: tx.to,
|
|
31
15
|
data: tx.data,
|
|
32
16
|
value: fromHex(tx.value, 'bigint').toString(),
|
|
33
|
-
gasLimit: tx.gas?.toString(),
|
|
34
17
|
};
|
|
18
|
+
const stateOverride = {
|
|
19
|
+
sellAsset,
|
|
20
|
+
sellAmountCryptoBaseUnit,
|
|
21
|
+
spenderAddress,
|
|
22
|
+
};
|
|
23
|
+
if (type === 'rate') {
|
|
24
|
+
const networkFeeCryptoBaseUnit = await getEvmRateNetworkFeeCryptoBaseUnit({
|
|
25
|
+
adapter,
|
|
26
|
+
supportsEIP1559,
|
|
27
|
+
providerGasLimit: tx.gas?.toString(),
|
|
28
|
+
simulation: { transactionData, from, stateOverride },
|
|
29
|
+
}).catch(() => bnOrZero(tx.gas).times(bnOrZero(tx.gasPrice)).toFixed(0));
|
|
30
|
+
const stepData = { networkFeeCryptoBaseUnit };
|
|
31
|
+
return Ok(stepData);
|
|
32
|
+
}
|
|
35
33
|
try {
|
|
36
34
|
const networkFeeCryptoBaseUnit = await getEvmNetworkFeeCryptoBaseUnit({
|
|
37
35
|
adapter,
|
|
38
36
|
transactionData,
|
|
39
37
|
from,
|
|
40
38
|
supportsEIP1559,
|
|
41
|
-
stateOverride
|
|
42
|
-
|
|
43
|
-
sellAmountCryptoBaseUnit,
|
|
44
|
-
spenderAddress,
|
|
45
|
-
},
|
|
39
|
+
stateOverride,
|
|
40
|
+
providerGasLimit: tx.gas?.toString(),
|
|
46
41
|
});
|
|
47
42
|
const stepData = { transactionData, networkFeeCryptoBaseUnit };
|
|
48
43
|
return Ok(stepData);
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { btcChainId } from '@shapeshiftoss/caip';
|
|
2
2
|
import { Err, Ok } from '@sniptt/monads';
|
|
3
3
|
import { assertQuoteAddresses } from '../../../utils/index.js';
|
|
4
|
-
import { FALLBACK_QUOTE_DEADLINE_MS } from '../../../utils/helpers.js';
|
|
5
4
|
import { getBobGatewayStepData } from '../utils/getBobGatewayStepData.js';
|
|
6
5
|
import { getBobGatewayTradeContext } from '../utils/getBobGatewayTradeContext.js';
|
|
7
6
|
export const getBobGatewayTradeQuote = async (input, deps) => {
|
|
@@ -35,7 +34,6 @@ export const getBobGatewayTradeQuote = async (input, deps) => {
|
|
|
35
34
|
const tradeQuote = {
|
|
36
35
|
...tradeCommon,
|
|
37
36
|
quoteOrRate: 'quote',
|
|
38
|
-
deadline: Date.now() + FALLBACK_QUOTE_DEADLINE_MS,
|
|
39
37
|
receiveAddress,
|
|
40
38
|
steps: [
|
|
41
39
|
{
|
|
@@ -4,7 +4,6 @@ import { Err, Ok } from '@sniptt/monads';
|
|
|
4
4
|
import { getDefaultSlippageDecimalPercentageForSwapper } from '../../../constants.js';
|
|
5
5
|
import { SwapperName, TradeQuoteError } from '../../../types.js';
|
|
6
6
|
import { assertQuoteAddresses, makeSwapErrorRight } from '../../../utils/index.js';
|
|
7
|
-
import { FALLBACK_QUOTE_DEADLINE_MS } from '../../../utils/helpers.js';
|
|
8
7
|
import { getButterSwapStepData } from '../utils/getButterSwapStepData.js';
|
|
9
8
|
import { getButterSwapTradeContext } from '../utils/getButterSwapTradeContext.js';
|
|
10
9
|
import { fetchTxData, isBuildTxSuccess } from '../xhr.js';
|
|
@@ -60,7 +59,6 @@ export const getTradeQuote = async (input, deps) => {
|
|
|
60
59
|
const tradeQuote = {
|
|
61
60
|
...tradeCommon,
|
|
62
61
|
quoteOrRate: 'quote',
|
|
63
|
-
deadline: Date.now() + FALLBACK_QUOTE_DEADLINE_MS,
|
|
64
62
|
receiveAddress,
|
|
65
63
|
steps: [
|
|
66
64
|
{
|
|
@@ -54,6 +54,7 @@ describe('getTradeQuote', () => {
|
|
|
54
54
|
assertGetNearChainAdapter: () => vi.fn(),
|
|
55
55
|
assertGetStarknetChainAdapter: () => vi.fn(),
|
|
56
56
|
assertGetTonChainAdapter: () => vi.fn(),
|
|
57
|
+
assertGetAptosChainAdapter: () => vi.fn(),
|
|
57
58
|
config: {
|
|
58
59
|
VITE_BUTTERSWAP_CLIENT_ID: 'test',
|
|
59
60
|
},
|
|
@@ -34,6 +34,7 @@ describe('getTradeRate', () => {
|
|
|
34
34
|
assertGetNearChainAdapter: () => vi.fn(),
|
|
35
35
|
assertGetStarknetChainAdapter: () => vi.fn(),
|
|
36
36
|
assertGetTonChainAdapter: () => vi.fn(),
|
|
37
|
+
assertGetAptosChainAdapter: () => vi.fn(),
|
|
37
38
|
config: {
|
|
38
39
|
VITE_BUTTERSWAP_CLIENT_ID: 'test',
|
|
39
40
|
},
|
|
@@ -5,7 +5,7 @@ import { AddressLookupTableAccount, PublicKey, TransactionMessage, VersionedTran
|
|
|
5
5
|
import { fromHex } from 'viem';
|
|
6
6
|
import { TradeQuoteError } from '../../../types.js';
|
|
7
7
|
import { makeNetworkFeeEstimationFailedErr, makeSwapErrorRight, makeTradeStepBuildFailedErr, } from '../../../utils/index.js';
|
|
8
|
-
import { getEvmNetworkFeeCryptoBaseUnit } from '../../../utils/evm/index.js';
|
|
8
|
+
import { getEvmNetworkFeeCryptoBaseUnit, getEvmRateNetworkFeeCryptoBaseUnit, } from '../../../utils/evm/index.js';
|
|
9
9
|
import { getSolanaNetworkFeeCryptoBaseUnit, omitComputeBudgetInstructions, withComputeUnitLimit, } from '../../../utils/solana/index.js';
|
|
10
10
|
import { getTronContractCallFallbackFeeCryptoBaseUnit, getTronContractCallNetworkFeeCryptoBaseUnit, } from '../../../utils/tron/index.js';
|
|
11
11
|
import { BUTTERSWAP_TRON_DEFAULT_BANDWIDTH_BYTES, BUTTERSWAP_TRON_FALLBACK_SWAP_ENERGY, } from './constants.js';
|
|
@@ -25,10 +25,10 @@ export async function getButterSwapStepData(args) {
|
|
|
25
25
|
if (args.type === 'rate') {
|
|
26
26
|
const networkFeeCryptoBaseUnit = await (async () => {
|
|
27
27
|
try {
|
|
28
|
-
return await
|
|
28
|
+
return await getEvmRateNetworkFeeCryptoBaseUnit({
|
|
29
29
|
adapter,
|
|
30
30
|
supportsEIP1559,
|
|
31
|
-
|
|
31
|
+
providerGasLimit: bnOrZero(route.gasEstimatedTarget).toFixed(),
|
|
32
32
|
});
|
|
33
33
|
}
|
|
34
34
|
catch {
|
|
@@ -52,13 +52,12 @@ export async function getButterSwapStepData(args) {
|
|
|
52
52
|
supportsEIP1559,
|
|
53
53
|
transactionData,
|
|
54
54
|
from,
|
|
55
|
-
// Butter's gasEstimatedTarget lands short on chain (observed 24% under actual, causing
|
|
56
|
-
// in-flight OOG/SWAP_FAIL reverts) - estimate ourselves instead
|
|
57
55
|
stateOverride: {
|
|
58
56
|
sellAsset,
|
|
59
57
|
sellAmountCryptoBaseUnit,
|
|
60
58
|
spenderAddress,
|
|
61
59
|
},
|
|
60
|
+
providerGasLimit: bnOrZero(route.gasEstimatedTarget).toFixed(),
|
|
62
61
|
});
|
|
63
62
|
const stepData = { transactionData, networkFeeCryptoBaseUnit };
|
|
64
63
|
return Ok(stepData);
|
|
@@ -94,7 +94,7 @@ describe('getButterSwapStepData', () => {
|
|
|
94
94
|
});
|
|
95
95
|
// gasEstimatedTarget 1159118 is ignored - the tx carries the buffered on chain estimate
|
|
96
96
|
expect(actual.unwrap()).toEqual({
|
|
97
|
-
networkFeeCryptoBaseUnit: '
|
|
97
|
+
networkFeeCryptoBaseUnit: '600000000000000',
|
|
98
98
|
transactionData: {
|
|
99
99
|
type: 'evm',
|
|
100
100
|
chainId: 1,
|
|
@@ -121,7 +121,7 @@ describe('getButterSwapStepData', () => {
|
|
|
121
121
|
const { transactionData, networkFeeCryptoBaseUnit } = actual.unwrap();
|
|
122
122
|
// The buffered limit is set on the tx data in place, so the executable tx always carries one
|
|
123
123
|
expect(transactionData).toMatchObject({ gasLimit: '600000' });
|
|
124
|
-
expect(networkFeeCryptoBaseUnit).toBe('
|
|
124
|
+
expect(networkFeeCryptoBaseUnit).toBe('600000000000000');
|
|
125
125
|
});
|
|
126
126
|
it('errors rather than falling back to the provider fee when quote estimation fails', async () => {
|
|
127
127
|
const actual = await getButterSwapStepData({
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { getProvidersExcluding } from '@cetusprotocol/aggregator-sdk';
|
|
1
|
+
import { getProvidersExcluding, PYTH_ORACLE_BASED_DEXES } from '@cetusprotocol/aggregator-sdk';
|
|
2
2
|
import { Transaction } from '@mysten/sui/transactions';
|
|
3
3
|
import { toAddressNList } from '@shapeshiftoss/chain-adapters';
|
|
4
4
|
import { TxStatus } from '@shapeshiftoss/unchained-client';
|
|
@@ -8,7 +8,6 @@ import { SwapperName } from '../../types.js';
|
|
|
8
8
|
import { checkSuiSwapStatus, getExecutableTradeStep, isExecutableTradeQuote } from '../../utils/index.js';
|
|
9
9
|
import { getTradeQuote } from './swapperApi/getTradeQuote.js';
|
|
10
10
|
import { getTradeRate } from './swapperApi/getTradeRate.js';
|
|
11
|
-
import { PYTH_DEPENDENT_PROVIDERS } from './utils/constants.js';
|
|
12
11
|
import { findBestRoute, getAggregatorClient, getCoinType, getSuiClient } from './utils/helpers.js';
|
|
13
12
|
export const cetusApi = {
|
|
14
13
|
getTradeQuote: (input, deps) => getTradeQuote(input, deps),
|
|
@@ -20,12 +19,12 @@ export const cetusApi = {
|
|
|
20
19
|
const { accountNumber, sellAsset, buyAsset, sellAmountIncludingProtocolFeesCryptoBaseUnit } = step;
|
|
21
20
|
const adapter = assertGetSuiChainAdapter(sellAsset.chainId);
|
|
22
21
|
const rpcUrl = config.VITE_SUI_NODE_URL;
|
|
23
|
-
const client = getAggregatorClient(rpcUrl);
|
|
22
|
+
const client = getAggregatorClient(rpcUrl, from);
|
|
24
23
|
const suiClient = getSuiClient(rpcUrl);
|
|
25
24
|
const sellCoinType = getCoinType(sellAsset);
|
|
26
25
|
const buyCoinType = getCoinType(buyAsset);
|
|
27
26
|
// Exclude Pyth-dependent providers to avoid oracle failures
|
|
28
|
-
const providersWithoutPyth = getProvidersExcluding(
|
|
27
|
+
const providersWithoutPyth = getProvidersExcluding(PYTH_ORACLE_BASED_DEXES);
|
|
29
28
|
const routerData = await findBestRoute(client, sellCoinType, buyCoinType, sellAmountIncludingProtocolFeesCryptoBaseUnit, providersWithoutPyth);
|
|
30
29
|
if (!routerData) {
|
|
31
30
|
throw new Error(`No route found for ${sellAsset.symbol}/${buyAsset.symbol}`);
|
|
@@ -5,9 +5,11 @@ import { getDefaultSlippageDecimalPercentageForSwapper } from '../../../constant
|
|
|
5
5
|
import { SwapperName } from '../../../types.js';
|
|
6
6
|
import { makeNetworkFeeEstimationFailedErr } from '../../../utils/index.js';
|
|
7
7
|
import { getAggregatorClient, getSuiClient } from '../utils/helpers.js';
|
|
8
|
+
// The 0x0 dummy sender only holds dust SUI, so server-side gas selection exceeds the payment object limit
|
|
9
|
+
const UNFUNDED_SENDER_ERRORS = ['Insufficient balance of', 'maximum number of gas payment objects'];
|
|
8
10
|
export async function getCetusStepData(args) {
|
|
9
11
|
const { routerData, rpcUrl, slippageTolerancePercentageDecimal, from } = args;
|
|
10
|
-
const client = getAggregatorClient(rpcUrl);
|
|
12
|
+
const client = getAggregatorClient(rpcUrl, from);
|
|
11
13
|
const suiClient = getSuiClient(rpcUrl);
|
|
12
14
|
const slippage = bnOrZero(slippageTolerancePercentageDecimal ??
|
|
13
15
|
getDefaultSlippageDecimalPercentageForSwapper(SwapperName.Cetus)).toNumber();
|
|
@@ -17,12 +19,14 @@ export async function getCetusStepData(args) {
|
|
|
17
19
|
txb.setSender(from);
|
|
18
20
|
await client.fastRouterSwap({ router: routerData, slippage, txb, refreshAllCoins: true });
|
|
19
21
|
const transactionBytes = await txb.build({ client: suiClient });
|
|
20
|
-
const dryRunResult = await suiClient.
|
|
21
|
-
|
|
22
|
+
const dryRunResult = await suiClient.simulateTransaction({
|
|
23
|
+
transaction: transactionBytes,
|
|
24
|
+
include: { effects: true },
|
|
22
25
|
});
|
|
23
|
-
const
|
|
24
|
-
const
|
|
25
|
-
const
|
|
26
|
+
const { gasUsed } = (dryRunResult.Transaction ?? dryRunResult.FailedTransaction).effects;
|
|
27
|
+
const computationCost = BigInt(gasUsed.computationCost);
|
|
28
|
+
const storageCost = BigInt(gasUsed.storageCost);
|
|
29
|
+
const storageRebate = BigInt(gasUsed.storageRebate);
|
|
26
30
|
const netStorageCost = storageCost > storageRebate ? storageCost - storageRebate : 0n;
|
|
27
31
|
return (computationCost + netStorageCost).toString();
|
|
28
32
|
};
|
|
@@ -33,8 +37,9 @@ export async function getCetusStepData(args) {
|
|
|
33
37
|
return Ok(stepData);
|
|
34
38
|
}
|
|
35
39
|
catch (error) {
|
|
36
|
-
// Walletless rates have no coins to dry-run against - degrade to an unknown fee, but a real route/build error still fails
|
|
37
|
-
|
|
40
|
+
// Walletless rates have no usable coins to dry-run against - degrade to an unknown fee, but a real route/build error still fails
|
|
41
|
+
const errorMessage = error instanceof Error ? error.message : '';
|
|
42
|
+
if (UNFUNDED_SENDER_ERRORS.some(message => errorMessage.includes(message))) {
|
|
38
43
|
const stepData = { networkFeeCryptoBaseUnit: undefined };
|
|
39
44
|
return Ok(stepData);
|
|
40
45
|
}
|
|
@@ -1,10 +1,9 @@
|
|
|
1
|
-
import { getProvidersExcluding } from '@cetusprotocol/aggregator-sdk';
|
|
1
|
+
import { getProvidersExcluding, PYTH_ORACLE_BASED_DEXES } from '@cetusprotocol/aggregator-sdk';
|
|
2
2
|
import { Err, Ok } from '@sniptt/monads';
|
|
3
3
|
import { v4 as uuid } from 'uuid';
|
|
4
4
|
import { SwapperName, TradeQuoteError } from '../../../types.js';
|
|
5
5
|
import { getInputOutputRate, makeSwapErrorRight } from '../../../utils/index.js';
|
|
6
6
|
import { buildAffiliateFee } from '../../../utils/affiliateFee.js';
|
|
7
|
-
import { PYTH_DEPENDENT_PROVIDERS } from '../utils/constants.js';
|
|
8
7
|
import { assertValidTrade, findBestRoute, getAggregatorClient, getCoinType } from '../utils/helpers.js';
|
|
9
8
|
export const getCetusTradeContext = async (input, deps) => {
|
|
10
9
|
const { sellAsset, buyAsset, sellAmountIncludingProtocolFeesCryptoBaseUnit, affiliateBps } = input;
|
|
@@ -17,7 +16,7 @@ export const getCetusTradeContext = async (input, deps) => {
|
|
|
17
16
|
const sellCoinType = getCoinType(sellAsset);
|
|
18
17
|
const buyCoinType = getCoinType(buyAsset);
|
|
19
18
|
// Exclude Pyth-dependent providers to avoid oracle failures
|
|
20
|
-
const providersWithoutPyth = getProvidersExcluding(
|
|
19
|
+
const providersWithoutPyth = getProvidersExcluding(PYTH_ORACLE_BASED_DEXES);
|
|
21
20
|
const routerData = await findBestRoute(client, sellCoinType, buyCoinType, sellAmountIncludingProtocolFeesCryptoBaseUnit, providersWithoutPyth);
|
|
22
21
|
if (!routerData) {
|
|
23
22
|
return Err(makeSwapErrorRight({
|
|
@@ -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 { getCetusStepData } from './getCetusStepData.js';
|
|
5
4
|
import { getCetusTradeContext } from './getCetusTradeContext.js';
|
|
6
5
|
export const getTradeQuote = async (input, deps) => {
|
|
@@ -25,7 +24,6 @@ export const getTradeQuote = async (input, deps) => {
|
|
|
25
24
|
const tradeQuote = {
|
|
26
25
|
...tradeCommon,
|
|
27
26
|
quoteOrRate: 'quote',
|
|
28
|
-
deadline: Date.now() + FALLBACK_QUOTE_DEADLINE_MS,
|
|
29
27
|
receiveAddress,
|
|
30
28
|
steps: [
|
|
31
29
|
{
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import type { ChainId } from '@shapeshiftoss/caip';
|
|
2
2
|
export declare const SUPPORTED_CETUS_CHAIN_IDS: readonly ChainId[];
|
|
3
3
|
export declare const isSupportedChainId: (chainId: ChainId) => chainId is ChainId;
|
|
4
|
-
export declare const PYTH_DEPENDENT_PROVIDERS: string[];
|
|
5
4
|
export declare const CETUS_FEE_ESTIMATE_DUMMY_ADDRESS = "0x0000000000000000000000000000000000000000000000000000000000000000";
|