@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
|
@@ -3,6 +3,5 @@ export const SUPPORTED_CETUS_CHAIN_IDS = [suiChainId];
|
|
|
3
3
|
export const isSupportedChainId = (chainId) => {
|
|
4
4
|
return SUPPORTED_CETUS_CHAIN_IDS.includes(chainId);
|
|
5
5
|
};
|
|
6
|
-
export const PYTH_DEPENDENT_PROVIDERS = ['HAEDALPMM', 'HAEDALHMMV2', 'METASTABLE'];
|
|
7
6
|
// Placeholder sender for walletless rate fee estimation - dry-run needs a sender, real coins aren't required
|
|
8
7
|
export const CETUS_FEE_ESTIMATE_DUMMY_ADDRESS = '0x0000000000000000000000000000000000000000000000000000000000000000';
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import type { RouterDataV3 } from '@cetusprotocol/aggregator-sdk';
|
|
2
2
|
import { AggregatorClient } from '@cetusprotocol/aggregator-sdk';
|
|
3
|
-
import {
|
|
3
|
+
import { SuiGrpcClient } from '@mysten/sui/grpc';
|
|
4
4
|
import type { Asset } from '@shapeshiftoss/types';
|
|
5
5
|
import type { Result } from '@sniptt/monads';
|
|
6
6
|
import type { SwapErrorRight } from '../../../types.js';
|
|
7
|
-
export declare const
|
|
8
|
-
export declare const
|
|
7
|
+
export declare const getSuiClient: (rpcUrl: string) => SuiGrpcClient;
|
|
8
|
+
export declare const getAggregatorClient: (rpcUrl: string, signer?: string) => AggregatorClient;
|
|
9
9
|
export declare const assertValidTrade: ({ sellAsset, buyAsset, }: {
|
|
10
10
|
sellAsset: Asset;
|
|
11
11
|
buyAsset: Asset;
|
|
@@ -1,32 +1,21 @@
|
|
|
1
1
|
import { AggregatorClient, Env } from '@cetusprotocol/aggregator-sdk';
|
|
2
|
-
import {
|
|
2
|
+
import { SuiGrpcClient } from '@mysten/sui/grpc';
|
|
3
3
|
import { fromAssetId } from '@shapeshiftoss/caip';
|
|
4
4
|
import { Err, Ok } from '@sniptt/monads';
|
|
5
5
|
import { TradeQuoteError } from '../../../types.js';
|
|
6
6
|
import { makeSwapErrorRight } from '../../../utils/index.js';
|
|
7
7
|
import { isSupportedChainId } from './constants.js';
|
|
8
8
|
let suiClientInstance;
|
|
9
|
-
let aggregatorClientInstance;
|
|
10
9
|
let currentRpcUrl;
|
|
11
|
-
export const getAggregatorClient = (rpcUrl) => {
|
|
12
|
-
if (!aggregatorClientInstance || !suiClientInstance || currentRpcUrl !== rpcUrl) {
|
|
13
|
-
suiClientInstance = new SuiClient({ url: rpcUrl });
|
|
14
|
-
aggregatorClientInstance = new AggregatorClient({
|
|
15
|
-
client: suiClientInstance,
|
|
16
|
-
env: Env.Mainnet,
|
|
17
|
-
signer: '0x0',
|
|
18
|
-
});
|
|
19
|
-
currentRpcUrl = rpcUrl;
|
|
20
|
-
}
|
|
21
|
-
return aggregatorClientInstance;
|
|
22
|
-
};
|
|
23
10
|
export const getSuiClient = (rpcUrl) => {
|
|
24
11
|
if (!suiClientInstance || currentRpcUrl !== rpcUrl) {
|
|
25
|
-
suiClientInstance = new
|
|
12
|
+
suiClientInstance = new SuiGrpcClient({ network: 'mainnet', baseUrl: rpcUrl });
|
|
26
13
|
currentRpcUrl = rpcUrl;
|
|
27
14
|
}
|
|
28
15
|
return suiClientInstance;
|
|
29
16
|
};
|
|
17
|
+
// Cetus merges the swap output into an existing coin owned by signer, so it must be the tx sender
|
|
18
|
+
export const getAggregatorClient = (rpcUrl, signer) => new AggregatorClient({ client: getSuiClient(rpcUrl), env: Env.Mainnet, signer });
|
|
30
19
|
export const assertValidTrade = ({ sellAsset, buyAsset, }) => {
|
|
31
20
|
if (!isSupportedChainId(sellAsset.chainId)) {
|
|
32
21
|
return Err(makeSwapErrorRight({
|
|
@@ -73,8 +73,7 @@ export const getTradeQuote = async (input, deps) => {
|
|
|
73
73
|
{
|
|
74
74
|
...stepCommon,
|
|
75
75
|
accountNumber,
|
|
76
|
-
|
|
77
|
-
swapperMetadata: { name: 'chainflip', swapId },
|
|
76
|
+
swapperMetadata: { name: 'chainflip', swapId, depositAddress },
|
|
78
77
|
transactionData,
|
|
79
78
|
feeData: { networkFeeCryptoBaseUnit, protocolFees },
|
|
80
79
|
},
|
|
@@ -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 { getDebridgeStepData } from '../utils/getDebridgeStepData.js';
|
|
5
4
|
import { getDebridgeTradeContext } from '../utils/getDebridgeTradeContext.js';
|
|
6
5
|
export const getTradeQuote = async (input, deps) => {
|
|
@@ -24,7 +23,6 @@ export const getTradeQuote = async (input, deps) => {
|
|
|
24
23
|
const tradeQuote = {
|
|
25
24
|
...tradeCommon,
|
|
26
25
|
quoteOrRate: 'quote',
|
|
27
|
-
deadline: Date.now() + FALLBACK_QUOTE_DEADLINE_MS,
|
|
28
26
|
receiveAddress,
|
|
29
27
|
steps: [
|
|
30
28
|
{
|
|
@@ -3,7 +3,7 @@ import { Err, Ok } from '@sniptt/monads';
|
|
|
3
3
|
import { makeNetworkFeeEstimationFailedErr } from '../../../utils/index.js';
|
|
4
4
|
import { getEvmNetworkFeeCryptoBaseUnit } from '../../../utils/evm/index.js';
|
|
5
5
|
export async function getDebridgeStepData(args) {
|
|
6
|
-
const { tx, sellAmountCryptoBaseUnit,
|
|
6
|
+
const { tx, sellAmountCryptoBaseUnit, spenderAddress, fallbackNetworkFeeCryptoBaseUnit, sellAsset, from, type, input, deps, } = args;
|
|
7
7
|
const adapter = deps.assertGetEvmChainAdapter(sellAsset.chainId);
|
|
8
8
|
const supportsEIP1559 = 'supportsEIP1559' in input ? input.supportsEIP1559 : false;
|
|
9
9
|
const transactionData = {
|
|
@@ -12,7 +12,6 @@ export async function getDebridgeStepData(args) {
|
|
|
12
12
|
to: tx.to,
|
|
13
13
|
data: tx.data,
|
|
14
14
|
value: tx.value,
|
|
15
|
-
gasLimit,
|
|
16
15
|
};
|
|
17
16
|
const stateOverride = {
|
|
18
17
|
sellAsset,
|
|
@@ -20,20 +19,14 @@ export async function getDebridgeStepData(args) {
|
|
|
20
19
|
spenderAddress,
|
|
21
20
|
};
|
|
22
21
|
if (type === 'rate') {
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
});
|
|
32
|
-
}
|
|
33
|
-
catch {
|
|
34
|
-
return fallbackNetworkFeeCryptoBaseUnit;
|
|
35
|
-
}
|
|
36
|
-
})();
|
|
22
|
+
// deBridge returns a flat gas limit far above actual usage, so rates simulate instead
|
|
23
|
+
const networkFeeCryptoBaseUnit = await getEvmNetworkFeeCryptoBaseUnit({
|
|
24
|
+
adapter,
|
|
25
|
+
transactionData,
|
|
26
|
+
from,
|
|
27
|
+
supportsEIP1559,
|
|
28
|
+
stateOverride,
|
|
29
|
+
}).catch(() => fallbackNetworkFeeCryptoBaseUnit);
|
|
37
30
|
const stepData = { networkFeeCryptoBaseUnit };
|
|
38
31
|
return Ok(stepData);
|
|
39
32
|
}
|
|
@@ -82,7 +82,6 @@ export const getDebridgeTradeContext = async ({ input, deps, senderAddress, reci
|
|
|
82
82
|
stepDataArgs: {
|
|
83
83
|
tx: quote.tx,
|
|
84
84
|
sellAmountCryptoBaseUnit: sellAmountIncludingProtocolFeesCryptoBaseUnit,
|
|
85
|
-
gasLimit: quote.gasLimit,
|
|
86
85
|
fallbackNetworkFeeCryptoBaseUnit: quote.fallbackNetworkFeeCryptoBaseUnit,
|
|
87
86
|
sellAsset,
|
|
88
87
|
spenderAddress: allowanceContract,
|
|
@@ -135,7 +134,6 @@ const fetchCrossChainQuote = async ({ input, deps, sellDebridgeChainId, buyDebri
|
|
|
135
134
|
isSameChainSwap: false,
|
|
136
135
|
slippageTolerancePercentageDecimal: input.slippageTolerancePercentageDecimal,
|
|
137
136
|
tx: quote.tx,
|
|
138
|
-
gasLimit: quote.estimatedTransactionFee?.details.gasLimit,
|
|
139
137
|
fallbackNetworkFeeCryptoBaseUnit: quote.estimatedTransactionFee?.total,
|
|
140
138
|
});
|
|
141
139
|
};
|
|
@@ -191,7 +189,6 @@ const fetchSameChainQuote = async ({ input, deps, sellDebridgeChainId, senderAdd
|
|
|
191
189
|
slippageTolerancePercentageDecimal: input.slippageTolerancePercentageDecimal ??
|
|
192
190
|
(quote.slippage ? bnOrZero(quote.slippage).div(100).toString() : undefined),
|
|
193
191
|
tx: quote.tx,
|
|
194
|
-
gasLimit: quote.estimatedTransactionFee?.details.gasLimit,
|
|
195
192
|
fallbackNetworkFeeCryptoBaseUnit: quote.estimatedTransactionFee?.total,
|
|
196
193
|
});
|
|
197
194
|
};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { checkEvmSwapStatus } from '../../utils/index.js';
|
|
2
|
+
import { getEvmTransactionFees, getUnsignedEvmTransaction } from '../../utils/evm/index.js';
|
|
3
|
+
import { getTradeQuote } from './getTradeQuote/getTradeQuote.js';
|
|
4
|
+
import { getTradeRate } from './getTradeRate/getTradeRate.js';
|
|
5
|
+
export const fyndApi = {
|
|
6
|
+
getTradeQuote: (input, deps) => getTradeQuote(input, deps),
|
|
7
|
+
getTradeRate: (input, deps) => getTradeRate(input, deps),
|
|
8
|
+
getUnsignedEvmTransaction,
|
|
9
|
+
getEvmTransactionFees,
|
|
10
|
+
checkTradeStatus: checkEvmSwapStatus,
|
|
11
|
+
};
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { Result } from '@sniptt/monads';
|
|
2
|
+
import type { SwapErrorRight, SwapperDeps, TradeQuote } from '../../../types.js';
|
|
3
|
+
import type { FyndTradeQuoteInput } from '../types.js';
|
|
4
|
+
export declare const getTradeQuote: (input: FyndTradeQuoteInput, deps: SwapperDeps) => Promise<Result<TradeQuote[], SwapErrorRight>>;
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { Err, Ok } from '@sniptt/monads';
|
|
2
|
+
import { assertQuoteAddresses } from '../../../utils/index.js';
|
|
3
|
+
import { getFyndStepData } from '../utils/getFyndStepData.js';
|
|
4
|
+
import { getFyndTradeContext } from '../utils/getFyndTradeContext.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 getFyndTradeContext({
|
|
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, deadline, stepDataArgs } = maybeContext.unwrap();
|
|
20
|
+
const maybeStepData = await getFyndStepData({ ...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
|
+
deadline,
|
|
29
|
+
steps: [
|
|
30
|
+
{
|
|
31
|
+
...stepCommon,
|
|
32
|
+
accountNumber,
|
|
33
|
+
transactionData,
|
|
34
|
+
feeData: { networkFeeCryptoBaseUnit, protocolFees },
|
|
35
|
+
},
|
|
36
|
+
],
|
|
37
|
+
};
|
|
38
|
+
return Ok([tradeQuote]);
|
|
39
|
+
};
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { Result } from '@sniptt/monads';
|
|
2
|
+
import type { SwapErrorRight, SwapperDeps, TradeRate } from '../../../types.js';
|
|
3
|
+
import type { FyndTradeRateInput } from '../types.js';
|
|
4
|
+
export declare const getTradeRate: (input: FyndTradeRateInput, deps: SwapperDeps) => Promise<Result<TradeRate[], SwapErrorRight>>;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { Err, Ok } from '@sniptt/monads';
|
|
2
|
+
import { EVM_PLACEHOLDER_ADDRESS } from '../../../utils/evm/constants.js';
|
|
3
|
+
import { getFyndStepData } from '../utils/getFyndStepData.js';
|
|
4
|
+
import { getFyndTradeContext } from '../utils/getFyndTradeContext.js';
|
|
5
|
+
export const getTradeRate = async (input, deps) => {
|
|
6
|
+
const { accountNumber, sendAddress, receiveAddress } = input;
|
|
7
|
+
const from = sendAddress ?? EVM_PLACEHOLDER_ADDRESS;
|
|
8
|
+
const to = receiveAddress ?? from;
|
|
9
|
+
const maybeContext = await getFyndTradeContext({ input, deps, from, to });
|
|
10
|
+
if (maybeContext.isErr())
|
|
11
|
+
return Err(maybeContext.unwrapErr());
|
|
12
|
+
const { tradeCommon, stepCommon, protocolFees, stepDataArgs } = maybeContext.unwrap();
|
|
13
|
+
const maybeStepData = await getFyndStepData({ ...stepDataArgs, type: 'rate', input });
|
|
14
|
+
if (maybeStepData.isErr())
|
|
15
|
+
return Err(maybeStepData.unwrapErr());
|
|
16
|
+
const { networkFeeCryptoBaseUnit } = maybeStepData.unwrap();
|
|
17
|
+
const tradeRate = {
|
|
18
|
+
...tradeCommon,
|
|
19
|
+
quoteOrRate: 'rate',
|
|
20
|
+
receiveAddress,
|
|
21
|
+
steps: [
|
|
22
|
+
{
|
|
23
|
+
...stepCommon,
|
|
24
|
+
accountNumber,
|
|
25
|
+
feeData: { networkFeeCryptoBaseUnit, protocolFees },
|
|
26
|
+
},
|
|
27
|
+
],
|
|
28
|
+
};
|
|
29
|
+
return Ok([tradeRate]);
|
|
30
|
+
};
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import type { Address, Hex } from 'viem';
|
|
2
|
+
import type { GetEvmTradeQuoteInput, GetEvmTradeRateInput } from '../../types.js';
|
|
3
|
+
export type FyndTradeQuoteInput = GetEvmTradeQuoteInput;
|
|
4
|
+
export type FyndTradeRateInput = GetEvmTradeRateInput;
|
|
5
|
+
export type FyndTransaction = {
|
|
6
|
+
to: Address;
|
|
7
|
+
value: string;
|
|
8
|
+
data: Hex;
|
|
9
|
+
client_fee_signature_offset?: number | null;
|
|
10
|
+
};
|
|
11
|
+
export type FyndFeeBreakdown = {
|
|
12
|
+
router_fee: string;
|
|
13
|
+
client_fee: string;
|
|
14
|
+
max_slippage: string;
|
|
15
|
+
min_amount_received: string;
|
|
16
|
+
};
|
|
17
|
+
export type FyndErrorResponse = {
|
|
18
|
+
error: string;
|
|
19
|
+
code: string;
|
|
20
|
+
};
|
|
21
|
+
export type FyndRouteSwap = {
|
|
22
|
+
protocol: string;
|
|
23
|
+
};
|
|
24
|
+
export type FyndEncodedQuote = {
|
|
25
|
+
status: 'success';
|
|
26
|
+
amount_in: string;
|
|
27
|
+
amount_out: string;
|
|
28
|
+
gas_estimate: string;
|
|
29
|
+
route?: {
|
|
30
|
+
swaps: FyndRouteSwap[];
|
|
31
|
+
} | null;
|
|
32
|
+
transaction: FyndTransaction;
|
|
33
|
+
fee_breakdown: FyndFeeBreakdown;
|
|
34
|
+
client_fee_deadline?: number | null;
|
|
35
|
+
};
|
|
36
|
+
export type FyndFailedOrder = {
|
|
37
|
+
status: 'no_route_found' | 'insufficient_liquidity' | 'timeout' | 'not_ready' | 'price_check_failed' | 'encoding_failed';
|
|
38
|
+
};
|
|
39
|
+
export type FyndQuoteResponse = {
|
|
40
|
+
orders: (FyndEncodedQuote | FyndFailedOrder)[];
|
|
41
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
export declare const FYND_CHAINS: {
|
|
2
|
+
readonly "eip155:1": {
|
|
3
|
+
readonly name: "ethereum";
|
|
4
|
+
readonly routerAddress: "0x1644d2477f809cc2c71bccfd6dc9497e3f83210d";
|
|
5
|
+
};
|
|
6
|
+
readonly "eip155:8453": {
|
|
7
|
+
readonly name: "base";
|
|
8
|
+
readonly routerAddress: "0xaba5b53b03eafad1c5fc8bd5fc765fc85bb3de67";
|
|
9
|
+
};
|
|
10
|
+
readonly "eip155:42161": {
|
|
11
|
+
readonly name: "arbitrum";
|
|
12
|
+
readonly routerAddress: "0x924f147c50ea59f5180a26031a8b65b2aa1e81cd";
|
|
13
|
+
};
|
|
14
|
+
readonly "eip155:56": {
|
|
15
|
+
readonly name: "bsc";
|
|
16
|
+
readonly routerAddress: "0x7f3d12bbafb8955e51b3ab9588b34c8ad95bda4e";
|
|
17
|
+
};
|
|
18
|
+
readonly "eip155:137": {
|
|
19
|
+
readonly name: "polygon";
|
|
20
|
+
readonly routerAddress: "0xbd4e6011f03355c2a377fd9af939322a7d0a1bc1";
|
|
21
|
+
};
|
|
22
|
+
readonly "eip155:130": {
|
|
23
|
+
readonly name: "unichain";
|
|
24
|
+
readonly routerAddress: "0xcba5574597ad00ea250fd106dab4fc7461949635";
|
|
25
|
+
};
|
|
26
|
+
readonly "eip155:4663": {
|
|
27
|
+
readonly name: "robinhood";
|
|
28
|
+
readonly routerAddress: "0x09215a470bd585e59eb3f4b612fbd2678131ff9e";
|
|
29
|
+
};
|
|
30
|
+
};
|
|
31
|
+
export type FyndSupportedChainId = keyof typeof FYND_CHAINS;
|
|
32
|
+
export declare const FYND_CLIENT_FEE_SHARE = 0.8;
|
|
33
|
+
export declare const FYND_CLIENT_FEE_SIGNATURE_BYTES = 65;
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { KnownChainIds } from '@shapeshiftoss/types';
|
|
2
|
+
// Fynd Router Registry: https://docs.propellerheads.xyz/tycho/for-solvers/execution/contract-addresses
|
|
3
|
+
export const FYND_CHAINS = {
|
|
4
|
+
[KnownChainIds.EthereumMainnet]: {
|
|
5
|
+
name: 'ethereum',
|
|
6
|
+
routerAddress: '0x1644d2477f809cc2c71bccfd6dc9497e3f83210d',
|
|
7
|
+
},
|
|
8
|
+
[KnownChainIds.BaseMainnet]: {
|
|
9
|
+
name: 'base',
|
|
10
|
+
routerAddress: '0xaba5b53b03eafad1c5fc8bd5fc765fc85bb3de67',
|
|
11
|
+
},
|
|
12
|
+
[KnownChainIds.ArbitrumMainnet]: {
|
|
13
|
+
name: 'arbitrum',
|
|
14
|
+
routerAddress: '0x924f147c50ea59f5180a26031a8b65b2aa1e81cd',
|
|
15
|
+
},
|
|
16
|
+
[KnownChainIds.BnbSmartChainMainnet]: {
|
|
17
|
+
name: 'bsc',
|
|
18
|
+
routerAddress: '0x7f3d12bbafb8955e51b3ab9588b34c8ad95bda4e',
|
|
19
|
+
},
|
|
20
|
+
[KnownChainIds.PolygonMainnet]: {
|
|
21
|
+
name: 'polygon',
|
|
22
|
+
routerAddress: '0xbd4e6011f03355c2a377fd9af939322a7d0a1bc1',
|
|
23
|
+
},
|
|
24
|
+
[KnownChainIds.UnichainMainnet]: {
|
|
25
|
+
name: 'unichain',
|
|
26
|
+
routerAddress: '0xcba5574597ad00ea250fd106dab4fc7461949635',
|
|
27
|
+
},
|
|
28
|
+
[KnownChainIds.RobinhoodMainnet]: {
|
|
29
|
+
name: 'robinhood',
|
|
30
|
+
routerAddress: '0x09215a470bd585e59eb3f4b612fbd2678131ff9e',
|
|
31
|
+
},
|
|
32
|
+
};
|
|
33
|
+
// Fynd keeps 20% of the client fee, so request the gross bps that nets affiliateBps
|
|
34
|
+
export const FYND_CLIENT_FEE_SHARE = 0.8;
|
|
35
|
+
export const FYND_CLIENT_FEE_SIGNATURE_BYTES = 65;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { Result } from '@sniptt/monads';
|
|
2
|
+
import type { SwapErrorRight } from '../../../types.js';
|
|
3
|
+
import type { FyndEncodedQuote, FyndTradeQuoteInput, FyndTradeRateInput } from '../types.js';
|
|
4
|
+
import type { FyndSupportedChainId } from './constants.js';
|
|
5
|
+
export declare const fetchFromFynd: ({ input, chainId, sender, receiver, slippageTolerancePercentageDecimal, clientFeeBps, baseUrl, }: {
|
|
6
|
+
input: FyndTradeQuoteInput | FyndTradeRateInput;
|
|
7
|
+
chainId: FyndSupportedChainId;
|
|
8
|
+
sender: string;
|
|
9
|
+
receiver: string;
|
|
10
|
+
slippageTolerancePercentageDecimal: string;
|
|
11
|
+
clientFeeBps: number;
|
|
12
|
+
baseUrl: string;
|
|
13
|
+
}) => Promise<Result<FyndEncodedQuote, SwapErrorRight>>;
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { Err } from '@sniptt/monads';
|
|
2
|
+
import { FYND_CHAINS } from './constants.js';
|
|
3
|
+
import { fyndService } from './fyndService.js';
|
|
4
|
+
import { convertAssetIdToFyndToken, getFyndRequestError, validateFyndQuoteResponse, } from './helpers.js';
|
|
5
|
+
export const fetchFromFynd = async ({ input, chainId, sender, receiver, slippageTolerancePercentageDecimal, clientFeeBps, baseUrl, }) => {
|
|
6
|
+
const { sellAsset, buyAsset, sellAmountIncludingProtocolFeesCryptoBaseUnit } = input;
|
|
7
|
+
const maybeResponse = await fyndService.post(`${baseUrl}/${FYND_CHAINS[chainId].name}/quote`, {
|
|
8
|
+
orders: [
|
|
9
|
+
{
|
|
10
|
+
token_in: convertAssetIdToFyndToken(sellAsset.assetId),
|
|
11
|
+
token_out: convertAssetIdToFyndToken(buyAsset.assetId),
|
|
12
|
+
amount: sellAmountIncludingProtocolFeesCryptoBaseUnit,
|
|
13
|
+
side: 'sell',
|
|
14
|
+
sender,
|
|
15
|
+
receiver,
|
|
16
|
+
},
|
|
17
|
+
],
|
|
18
|
+
options: {
|
|
19
|
+
timeout_ms: 5_000,
|
|
20
|
+
min_responses: 1,
|
|
21
|
+
encoding_options: {
|
|
22
|
+
slippage: slippageTolerancePercentageDecimal,
|
|
23
|
+
transfer_type: 'transfer_from',
|
|
24
|
+
// The proxy sets the fee receiver and deadline and signs the quote
|
|
25
|
+
...(clientFeeBps > 0 ? { client_fee_params: { bps: clientFeeBps } } : {}),
|
|
26
|
+
},
|
|
27
|
+
},
|
|
28
|
+
});
|
|
29
|
+
if (maybeResponse.isErr())
|
|
30
|
+
return Err(getFyndRequestError(maybeResponse.unwrapErr()));
|
|
31
|
+
return validateFyndQuoteResponse(maybeResponse.unwrap().data, {
|
|
32
|
+
chainId,
|
|
33
|
+
sellAsset,
|
|
34
|
+
sellAmountCryptoBaseUnit: sellAmountIncludingProtocolFeesCryptoBaseUnit,
|
|
35
|
+
slippageTolerancePercentageDecimal,
|
|
36
|
+
clientFeeBps,
|
|
37
|
+
});
|
|
38
|
+
};
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export declare const fyndService: {
|
|
2
|
+
get: <T = any>(url: string, config?: import("axios").AxiosRequestConfig<any> | undefined) => Promise<import("@sniptt/monads").Result<import("axios").AxiosResponse<T, any, {}>, import("../../../index.js").SwapErrorRight>>;
|
|
3
|
+
post: <T_1 = any>(url: string, data: any, config?: import("axios").AxiosRequestConfig<any> | undefined) => Promise<import("@sniptt/monads").Result<import("axios").AxiosResponse<T_1, any, {}>, import("../../../index.js").SwapErrorRight>>;
|
|
4
|
+
delete: <T_2 = any>(url: string, data: any, config?: import("axios").AxiosRequestConfig<any> | undefined) => Promise<import("@sniptt/monads").Result<import("axios").AxiosResponse<T_2, any, {}>, import("../../../index.js").SwapErrorRight>>;
|
|
5
|
+
};
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { Result } from '@sniptt/monads';
|
|
2
|
+
import type { StepDataArgs, SwapErrorRight, TxBuildData } from '../../../types.js';
|
|
3
|
+
import type { FyndEncodedQuote } from '../types.js';
|
|
4
|
+
type BaseArgs = {
|
|
5
|
+
quote: FyndEncodedQuote;
|
|
6
|
+
sellAmountCryptoBaseUnit: string;
|
|
7
|
+
spenderAddress: string;
|
|
8
|
+
};
|
|
9
|
+
export type GetFyndStepDataArgs = StepDataArgs<BaseArgs, {
|
|
10
|
+
from: string;
|
|
11
|
+
}>;
|
|
12
|
+
type FyndRateStepData = {
|
|
13
|
+
networkFeeCryptoBaseUnit: string | undefined;
|
|
14
|
+
};
|
|
15
|
+
type FyndQuoteStepData = {
|
|
16
|
+
transactionData: TxBuildData;
|
|
17
|
+
networkFeeCryptoBaseUnit: string;
|
|
18
|
+
};
|
|
19
|
+
export declare function getFyndStepData(args: Extract<GetFyndStepDataArgs, {
|
|
20
|
+
type: 'rate';
|
|
21
|
+
}>): Promise<Result<FyndRateStepData, SwapErrorRight>>;
|
|
22
|
+
export declare function getFyndStepData(args: Extract<GetFyndStepDataArgs, {
|
|
23
|
+
type: 'quote';
|
|
24
|
+
}>): Promise<Result<FyndQuoteStepData, SwapErrorRight>>;
|
|
25
|
+
export {};
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { fromChainId } from '@shapeshiftoss/caip';
|
|
2
|
+
import { Err, Ok } from '@sniptt/monads';
|
|
3
|
+
import { makeNetworkFeeEstimationFailedErr } from '../../../utils/index.js';
|
|
4
|
+
import { getEvmNetworkFeeCryptoBaseUnit, getEvmRateNetworkFeeCryptoBaseUnit, } from '../../../utils/evm/index.js';
|
|
5
|
+
export async function getFyndStepData(args) {
|
|
6
|
+
const { quote, sellAsset, sellAmountCryptoBaseUnit, spenderAddress, from, type, input, deps } = args;
|
|
7
|
+
const adapter = deps.assertGetEvmChainAdapter(sellAsset.chainId);
|
|
8
|
+
const supportsEIP1559 = 'supportsEIP1559' in input ? input.supportsEIP1559 : false;
|
|
9
|
+
const transactionData = {
|
|
10
|
+
type: 'evm',
|
|
11
|
+
chainId: Number(fromChainId(sellAsset.chainId).chainReference),
|
|
12
|
+
to: quote.transaction.to,
|
|
13
|
+
data: quote.transaction.data,
|
|
14
|
+
value: quote.transaction.value,
|
|
15
|
+
};
|
|
16
|
+
const stateOverride = { sellAsset, sellAmountCryptoBaseUnit, spenderAddress };
|
|
17
|
+
if (type === 'rate') {
|
|
18
|
+
const networkFeeCryptoBaseUnit = await getEvmRateNetworkFeeCryptoBaseUnit({
|
|
19
|
+
adapter,
|
|
20
|
+
supportsEIP1559,
|
|
21
|
+
providerGasLimit: quote.gas_estimate,
|
|
22
|
+
simulation: { transactionData, from, stateOverride },
|
|
23
|
+
}).catch(() => undefined);
|
|
24
|
+
const stepData = { networkFeeCryptoBaseUnit };
|
|
25
|
+
return Ok(stepData);
|
|
26
|
+
}
|
|
27
|
+
try {
|
|
28
|
+
const networkFeeCryptoBaseUnit = await getEvmNetworkFeeCryptoBaseUnit({
|
|
29
|
+
adapter,
|
|
30
|
+
transactionData,
|
|
31
|
+
from,
|
|
32
|
+
supportsEIP1559,
|
|
33
|
+
stateOverride,
|
|
34
|
+
providerGasLimit: quote.gas_estimate,
|
|
35
|
+
});
|
|
36
|
+
const stepData = { transactionData, networkFeeCryptoBaseUnit };
|
|
37
|
+
return Ok(stepData);
|
|
38
|
+
}
|
|
39
|
+
catch (error) {
|
|
40
|
+
return Err(makeNetworkFeeEstimationFailedErr('getFyndStepData', error));
|
|
41
|
+
}
|
|
42
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { Result } from '@sniptt/monads';
|
|
2
|
+
import type { QuoteFeeData, SwapErrorRight, SwapperDeps, TradeCommon, TradeStepCommon } from '../../../types.js';
|
|
3
|
+
import type { FyndTradeQuoteInput, FyndTradeRateInput } from '../types.js';
|
|
4
|
+
import type { GetFyndStepDataArgs } from './getFyndStepData.js';
|
|
5
|
+
type FyndTradeContext = {
|
|
6
|
+
tradeCommon: TradeCommon;
|
|
7
|
+
stepCommon: Omit<TradeStepCommon, 'feeData'>;
|
|
8
|
+
protocolFees: QuoteFeeData['protocolFees'];
|
|
9
|
+
deadline: number | undefined;
|
|
10
|
+
stepDataArgs: Omit<GetFyndStepDataArgs, 'type' | 'input'>;
|
|
11
|
+
};
|
|
12
|
+
export declare const getFyndTradeContext: ({ input, deps, from, to, }: {
|
|
13
|
+
input: FyndTradeQuoteInput | FyndTradeRateInput;
|
|
14
|
+
deps: SwapperDeps;
|
|
15
|
+
from: string;
|
|
16
|
+
to: string;
|
|
17
|
+
}) => Promise<Result<FyndTradeContext, SwapErrorRight>>;
|
|
18
|
+
export {};
|