@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
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getFyndTradeContext = void 0;
|
|
4
|
+
const utils_1 = require("@shapeshiftoss/utils");
|
|
5
|
+
const monads_1 = require("@sniptt/monads");
|
|
6
|
+
const uuid_1 = require("uuid");
|
|
7
|
+
const constants_1 = require("../../../constants");
|
|
8
|
+
const types_1 = require("../../../types");
|
|
9
|
+
const utils_2 = require("../../../utils");
|
|
10
|
+
const helpers_1 = require("../../../utils/helpers");
|
|
11
|
+
const fetchFromFynd_1 = require("./fetchFromFynd");
|
|
12
|
+
const helpers_2 = require("./helpers");
|
|
13
|
+
const getFyndTradeContext = async ({ input, deps, from, to, }) => {
|
|
14
|
+
const { sellAsset, buyAsset, sellAmountIncludingProtocolFeesCryptoBaseUnit, affiliateBps } = input;
|
|
15
|
+
const maybeChainId = (0, helpers_2.assertValidTrade)({ sellAsset, buyAsset });
|
|
16
|
+
if (maybeChainId.isErr())
|
|
17
|
+
return (0, monads_1.Err)(maybeChainId.unwrapErr());
|
|
18
|
+
const chainId = maybeChainId.unwrap();
|
|
19
|
+
const slippageTolerancePercentageDecimal = input.slippageTolerancePercentageDecimal ??
|
|
20
|
+
(0, constants_1.getDefaultSlippageDecimalPercentageForSwapper)(types_1.SwapperName.Fynd);
|
|
21
|
+
const clientFeeBps = (0, helpers_2.getFyndClientFeeBps)(affiliateBps);
|
|
22
|
+
const maybeQuote = await (0, fetchFromFynd_1.fetchFromFynd)({
|
|
23
|
+
input,
|
|
24
|
+
chainId,
|
|
25
|
+
sender: from,
|
|
26
|
+
receiver: to,
|
|
27
|
+
slippageTolerancePercentageDecimal,
|
|
28
|
+
clientFeeBps,
|
|
29
|
+
baseUrl: deps.config.VITE_FYND_BASE_URL,
|
|
30
|
+
});
|
|
31
|
+
if (maybeQuote.isErr())
|
|
32
|
+
return (0, monads_1.Err)(maybeQuote.unwrapErr());
|
|
33
|
+
const quote = maybeQuote.unwrap();
|
|
34
|
+
const { router_fee: routerFee, client_fee: clientFee } = quote.fee_breakdown;
|
|
35
|
+
const buyAmountBeforeFeesCryptoBaseUnit = quote.amount_out;
|
|
36
|
+
const buyAmountAfterFeesCryptoBaseUnit = (0, utils_1.bn)(quote.amount_out)
|
|
37
|
+
.minus(routerFee)
|
|
38
|
+
.minus(clientFee)
|
|
39
|
+
.toFixed();
|
|
40
|
+
const rate = (0, utils_2.getInputOutputRate)({
|
|
41
|
+
sellAmountCryptoBaseUnit: quote.amount_in,
|
|
42
|
+
buyAmountCryptoBaseUnit: buyAmountAfterFeesCryptoBaseUnit,
|
|
43
|
+
sellAsset,
|
|
44
|
+
buyAsset,
|
|
45
|
+
});
|
|
46
|
+
const protocols = (0, helpers_2.getFyndRouteProtocols)(quote.route?.swaps);
|
|
47
|
+
const source = protocols.length
|
|
48
|
+
? `${types_1.SwapperName.Fynd} • ${protocols.join(', ')}`
|
|
49
|
+
: types_1.SwapperName.Fynd;
|
|
50
|
+
const allowanceContract = (0, helpers_1.isNativeEvmAsset)(sellAsset.assetId) ? '' : quote.transaction.to;
|
|
51
|
+
const protocolFees = (0, utils_1.bn)(routerFee).gt(0)
|
|
52
|
+
? {
|
|
53
|
+
[buyAsset.assetId]: {
|
|
54
|
+
amountCryptoBaseUnit: routerFee,
|
|
55
|
+
asset: buyAsset,
|
|
56
|
+
requiresBalance: false,
|
|
57
|
+
},
|
|
58
|
+
}
|
|
59
|
+
: {};
|
|
60
|
+
return (0, monads_1.Ok)({
|
|
61
|
+
tradeCommon: {
|
|
62
|
+
id: (0, uuid_1.v4)(),
|
|
63
|
+
rate,
|
|
64
|
+
swapperName: types_1.SwapperName.Fynd,
|
|
65
|
+
affiliateBps,
|
|
66
|
+
slippageTolerancePercentageDecimal,
|
|
67
|
+
},
|
|
68
|
+
stepCommon: {
|
|
69
|
+
estimatedExecutionTimeMs: 0,
|
|
70
|
+
allowanceContract,
|
|
71
|
+
rate,
|
|
72
|
+
sellAsset,
|
|
73
|
+
buyAsset,
|
|
74
|
+
sellAmountIncludingProtocolFeesCryptoBaseUnit,
|
|
75
|
+
buyAmountBeforeFeesCryptoBaseUnit,
|
|
76
|
+
buyAmountAfterFeesCryptoBaseUnit,
|
|
77
|
+
source,
|
|
78
|
+
affiliateFee: (0, utils_1.bn)(clientFee).gt(0)
|
|
79
|
+
? { assetId: buyAsset.assetId, amountCryptoBaseUnit: clientFee, asset: buyAsset }
|
|
80
|
+
: undefined,
|
|
81
|
+
},
|
|
82
|
+
protocolFees,
|
|
83
|
+
deadline: quote.client_fee_deadline ? (0, helpers_1.normalizeEpochToMs)(quote.client_fee_deadline) : undefined,
|
|
84
|
+
stepDataArgs: {
|
|
85
|
+
quote,
|
|
86
|
+
sellAsset,
|
|
87
|
+
sellAmountCryptoBaseUnit: sellAmountIncludingProtocolFeesCryptoBaseUnit,
|
|
88
|
+
spenderAddress: allowanceContract,
|
|
89
|
+
from,
|
|
90
|
+
deps,
|
|
91
|
+
},
|
|
92
|
+
});
|
|
93
|
+
};
|
|
94
|
+
exports.getFyndTradeContext = getFyndTradeContext;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { AssetId } from '@shapeshiftoss/caip';
|
|
2
|
+
import type { Asset } from '@shapeshiftoss/types';
|
|
3
|
+
import type { Result } from '@sniptt/monads';
|
|
4
|
+
import type { Address } from 'viem';
|
|
5
|
+
import type { SwapErrorRight } from '../../../types';
|
|
6
|
+
import type { FyndEncodedQuote, FyndQuoteResponse, FyndRouteSwap } from '../types';
|
|
7
|
+
import type { FyndSupportedChainId } from './constants';
|
|
8
|
+
export declare const getFyndRouteProtocols: (swaps: FyndRouteSwap[] | undefined) => string[];
|
|
9
|
+
export declare const getFyndClientFeeBps: (affiliateBps: string) => number;
|
|
10
|
+
export declare const convertAssetIdToFyndToken: (assetId: AssetId) => Address;
|
|
11
|
+
export declare const assertValidTrade: ({ sellAsset, buyAsset, }: {
|
|
12
|
+
sellAsset: Asset;
|
|
13
|
+
buyAsset: Asset;
|
|
14
|
+
}) => Result<FyndSupportedChainId, SwapErrorRight>;
|
|
15
|
+
export declare const getFyndRequestError: (error: SwapErrorRight) => SwapErrorRight;
|
|
16
|
+
type FyndQuoteContext = {
|
|
17
|
+
chainId: FyndSupportedChainId;
|
|
18
|
+
sellAsset: Asset;
|
|
19
|
+
sellAmountCryptoBaseUnit: string;
|
|
20
|
+
slippageTolerancePercentageDecimal: string;
|
|
21
|
+
clientFeeBps: number;
|
|
22
|
+
};
|
|
23
|
+
export declare const validateFyndQuoteResponse: (response: FyndQuoteResponse, context: FyndQuoteContext) => Result<FyndEncodedQuote, SwapErrorRight>;
|
|
24
|
+
export {};
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.validateFyndQuoteResponse = exports.getFyndRequestError = exports.assertValidTrade = exports.convertAssetIdToFyndToken = exports.getFyndClientFeeBps = exports.getFyndRouteProtocols = void 0;
|
|
7
|
+
const caip_1 = require("@shapeshiftoss/caip");
|
|
8
|
+
const utils_1 = require("@shapeshiftoss/utils");
|
|
9
|
+
const monads_1 = require("@sniptt/monads");
|
|
10
|
+
const axios_1 = __importDefault(require("axios"));
|
|
11
|
+
const viem_1 = require("viem");
|
|
12
|
+
const types_1 = require("../../../types");
|
|
13
|
+
const utils_2 = require("../../../utils");
|
|
14
|
+
const helpers_1 = require("../../../utils/helpers");
|
|
15
|
+
const constants_1 = require("./constants");
|
|
16
|
+
const isFyndSupportedChainId = (chainId) => chainId in constants_1.FYND_CHAINS;
|
|
17
|
+
// Protocol ids look like uniswap_v3, vm:balancer_v2 or fallback:rfq:bebop
|
|
18
|
+
const formatFyndProtocol = (protocol) => protocol
|
|
19
|
+
.slice(protocol.lastIndexOf(':') + 1)
|
|
20
|
+
.split('_')
|
|
21
|
+
.map(word => /^v\d+$/.test(word) ? word.toUpperCase() : word.charAt(0).toUpperCase() + word.slice(1))
|
|
22
|
+
.join(' ');
|
|
23
|
+
// The native_wrapper hop is only the WETH wrap/unwrap around the real venues
|
|
24
|
+
const getFyndRouteProtocols = (swaps) => {
|
|
25
|
+
const venues = (swaps ?? [])
|
|
26
|
+
.map(swap => swap.protocol)
|
|
27
|
+
.filter(protocol => !protocol.endsWith('native_wrapper'));
|
|
28
|
+
return [...new Set(venues)].map(formatFyndProtocol);
|
|
29
|
+
};
|
|
30
|
+
exports.getFyndRouteProtocols = getFyndRouteProtocols;
|
|
31
|
+
const getFyndClientFeeBps = (affiliateBps) => (0, utils_1.bn)(affiliateBps).div(constants_1.FYND_CLIENT_FEE_SHARE).integerValue(utils_1.BigNumber.ROUND_CEIL).toNumber();
|
|
32
|
+
exports.getFyndClientFeeBps = getFyndClientFeeBps;
|
|
33
|
+
const convertAssetIdToFyndToken = (assetId) => {
|
|
34
|
+
if ((0, helpers_1.isNativeEvmAsset)(assetId))
|
|
35
|
+
return viem_1.zeroAddress;
|
|
36
|
+
return (0, viem_1.getAddress)((0, caip_1.fromAssetId)(assetId).assetReference);
|
|
37
|
+
};
|
|
38
|
+
exports.convertAssetIdToFyndToken = convertAssetIdToFyndToken;
|
|
39
|
+
const assertValidTrade = ({ sellAsset, buyAsset, }) => {
|
|
40
|
+
if (sellAsset.chainId !== buyAsset.chainId) {
|
|
41
|
+
return (0, monads_1.Err)((0, utils_2.makeSwapErrorRight)({
|
|
42
|
+
message: 'Fynd does not support cross-chain trades',
|
|
43
|
+
code: types_1.TradeQuoteError.CrossChainNotSupported,
|
|
44
|
+
}));
|
|
45
|
+
}
|
|
46
|
+
if (!isFyndSupportedChainId(sellAsset.chainId)) {
|
|
47
|
+
return (0, monads_1.Err)((0, utils_2.makeSwapErrorRight)({
|
|
48
|
+
message: 'Fynd only supports configured EVM chains',
|
|
49
|
+
code: types_1.TradeQuoteError.UnsupportedChain,
|
|
50
|
+
}));
|
|
51
|
+
}
|
|
52
|
+
return (0, monads_1.Ok)(sellAsset.chainId);
|
|
53
|
+
};
|
|
54
|
+
exports.assertValidTrade = assertValidTrade;
|
|
55
|
+
const getFyndStatusError = (status, detail) => {
|
|
56
|
+
const code = (() => {
|
|
57
|
+
switch (status.toLowerCase()) {
|
|
58
|
+
case 'no_route_found':
|
|
59
|
+
case 'insufficient_liquidity':
|
|
60
|
+
return types_1.TradeQuoteError.NoRouteFound;
|
|
61
|
+
case 'timeout':
|
|
62
|
+
return types_1.TradeQuoteError.Timeout;
|
|
63
|
+
default:
|
|
64
|
+
return types_1.TradeQuoteError.QueryFailed;
|
|
65
|
+
}
|
|
66
|
+
})();
|
|
67
|
+
return (0, utils_2.makeSwapErrorRight)({
|
|
68
|
+
message: `Fynd quote failed: ${status}${detail ? ` (${detail})` : ''}`,
|
|
69
|
+
code,
|
|
70
|
+
});
|
|
71
|
+
};
|
|
72
|
+
const isFyndErrorResponse = (value) => typeof value === 'object' &&
|
|
73
|
+
value !== null &&
|
|
74
|
+
'error' in value &&
|
|
75
|
+
typeof value.error === 'string' &&
|
|
76
|
+
'code' in value &&
|
|
77
|
+
typeof value.code === 'string';
|
|
78
|
+
const getFyndRequestError = (error) => {
|
|
79
|
+
const { cause } = error;
|
|
80
|
+
if (!axios_1.default.isAxiosError(cause))
|
|
81
|
+
return error;
|
|
82
|
+
if (cause.response?.status === 429) {
|
|
83
|
+
return (0, utils_2.makeSwapErrorRight)({
|
|
84
|
+
message: 'Fynd rate limit exceeded',
|
|
85
|
+
code: types_1.TradeQuoteError.RateLimitExceeded,
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
const body = cause.response?.data;
|
|
89
|
+
if (isFyndErrorResponse(body))
|
|
90
|
+
return getFyndStatusError(body.code, body.error);
|
|
91
|
+
return (0, utils_2.makeSwapErrorRight)({
|
|
92
|
+
message: `Fynd request failed with status ${cause.response?.status}`,
|
|
93
|
+
code: types_1.TradeQuoteError.QueryFailed,
|
|
94
|
+
cause,
|
|
95
|
+
});
|
|
96
|
+
};
|
|
97
|
+
exports.getFyndRequestError = getFyndRequestError;
|
|
98
|
+
const invalidResponse = (message, details) => (0, utils_2.makeSwapErrorRight)({ message, details, code: types_1.TradeQuoteError.InvalidResponse });
|
|
99
|
+
const getQuoteError = (quote, { chainId, sellAsset, sellAmountCryptoBaseUnit, slippageTolerancePercentageDecimal, clientFeeBps, }) => {
|
|
100
|
+
const { transaction, fee_breakdown: fees } = quote;
|
|
101
|
+
const pinnedRouter = constants_1.FYND_CHAINS[chainId].routerAddress;
|
|
102
|
+
if (!(0, viem_1.isAddress)(transaction.to, { strict: false }) ||
|
|
103
|
+
!(0, viem_1.isAddressEqual)(transaction.to, pinnedRouter)) {
|
|
104
|
+
return invalidResponse(`Fynd router ${transaction.to} is not the pinned router ${pinnedRouter} for ${chainId}`);
|
|
105
|
+
}
|
|
106
|
+
if (!(0, utils_1.bn)(quote.amount_in).eq(sellAmountCryptoBaseUnit)) {
|
|
107
|
+
return invalidResponse('Fynd quoted a different sell amount', {
|
|
108
|
+
amountIn: quote.amount_in,
|
|
109
|
+
sellAmountCryptoBaseUnit,
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
const expectedValue = (0, helpers_1.isNativeEvmAsset)(sellAsset.assetId) ? sellAmountCryptoBaseUnit : '0';
|
|
113
|
+
if (!(0, utils_1.bn)(transaction.value).eq(expectedValue)) {
|
|
114
|
+
return invalidResponse('Fynd transaction value does not match the sell amount', {
|
|
115
|
+
value: transaction.value,
|
|
116
|
+
expectedValue,
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
// The router enforces min_amount_received, which may not be looser than the requested slippage
|
|
120
|
+
const netOutput = (0, utils_1.bn)(quote.amount_out).minus(fees.router_fee).minus(fees.client_fee);
|
|
121
|
+
const outputFloor = netOutput
|
|
122
|
+
.times((0, utils_1.bn)(1).minus(slippageTolerancePercentageDecimal))
|
|
123
|
+
.integerValue(utils_1.BigNumber.ROUND_DOWN);
|
|
124
|
+
if ((0, utils_1.bn)(fees.min_amount_received).lt(outputFloor)) {
|
|
125
|
+
return invalidResponse('Fynd output floor is below the requested slippage', {
|
|
126
|
+
minAmountReceived: fees.min_amount_received,
|
|
127
|
+
outputFloor: outputFloor.toFixed(),
|
|
128
|
+
slippageTolerancePercentageDecimal,
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
if (clientFeeBps === 0) {
|
|
132
|
+
if (!(0, utils_1.bn)(fees.client_fee).isZero()) {
|
|
133
|
+
return invalidResponse('Fynd returned an unexpected client fee', {
|
|
134
|
+
clientFee: fees.client_fee,
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
return;
|
|
138
|
+
}
|
|
139
|
+
// Our share of the gross client fee, allowing one unit of rounding
|
|
140
|
+
const minClientFee = (0, utils_1.bn)(quote.amount_out)
|
|
141
|
+
.times(clientFeeBps)
|
|
142
|
+
.div(10_000)
|
|
143
|
+
.times(constants_1.FYND_CLIENT_FEE_SHARE)
|
|
144
|
+
.integerValue(utils_1.BigNumber.ROUND_DOWN)
|
|
145
|
+
.minus(1);
|
|
146
|
+
if ((0, utils_1.bn)(fees.client_fee).lt(minClientFee)) {
|
|
147
|
+
return invalidResponse('Fynd client fee is below the requested share', {
|
|
148
|
+
clientFee: fees.client_fee,
|
|
149
|
+
amountOut: quote.amount_out,
|
|
150
|
+
clientFeeBps,
|
|
151
|
+
});
|
|
152
|
+
}
|
|
153
|
+
// The proxy patches the signature over Fynd's zeroed placeholder at the reported offset
|
|
154
|
+
const offset = transaction.client_fee_signature_offset;
|
|
155
|
+
const signature = typeof offset === 'number'
|
|
156
|
+
? transaction.data.slice(2 + offset * 2, 2 + (offset + constants_1.FYND_CLIENT_FEE_SIGNATURE_BYTES) * 2)
|
|
157
|
+
: '';
|
|
158
|
+
if (signature.length !== constants_1.FYND_CLIENT_FEE_SIGNATURE_BYTES * 2 || /^0+$/.test(signature)) {
|
|
159
|
+
return invalidResponse('Fynd quote is not signed for the client fee', { offset });
|
|
160
|
+
}
|
|
161
|
+
if (!quote.client_fee_deadline) {
|
|
162
|
+
return invalidResponse('Fynd quote is missing its client fee deadline');
|
|
163
|
+
}
|
|
164
|
+
};
|
|
165
|
+
const validateFyndQuoteResponse = (response, context) => {
|
|
166
|
+
const order = Array.isArray(response?.orders) ? response.orders[0] : undefined;
|
|
167
|
+
if (!order)
|
|
168
|
+
return (0, monads_1.Err)(invalidResponse('Fynd returned no order'));
|
|
169
|
+
if (order.status !== 'success')
|
|
170
|
+
return (0, monads_1.Err)(getFyndStatusError(order.status));
|
|
171
|
+
const error = getQuoteError(order, context);
|
|
172
|
+
return error ? (0, monads_1.Err)(error) : (0, monads_1.Ok)(order);
|
|
173
|
+
};
|
|
174
|
+
exports.validateFyndQuoteResponse = validateFyndQuoteResponse;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const types_1 = require("@shapeshiftoss/types");
|
|
4
|
+
const vitest_1 = require("vitest");
|
|
5
|
+
const assets_1 = require("../../../utils/test-data/assets");
|
|
6
|
+
const constants_1 = require("./constants");
|
|
7
|
+
const helpers_1 = require("./helpers");
|
|
8
|
+
(0, vitest_1.describe)('getFyndClientFeeBps', () => {
|
|
9
|
+
vitest_1.it.each([
|
|
10
|
+
['nets the default fee after the 20% share', '60', 75],
|
|
11
|
+
['rounds up so the net never falls short', '55', 69],
|
|
12
|
+
['requests nothing for a fee-free swap', '0', 0],
|
|
13
|
+
])('%s', (_label, affiliateBps, grossBps) => {
|
|
14
|
+
(0, vitest_1.expect)((0, helpers_1.getFyndClientFeeBps)(affiliateBps)).toBe(grossBps);
|
|
15
|
+
});
|
|
16
|
+
});
|
|
17
|
+
(0, vitest_1.describe)('validateFyndQuoteResponse', () => {
|
|
18
|
+
const router = constants_1.FYND_CHAINS['eip155:1'].routerAddress;
|
|
19
|
+
const unpinnedRouter = '0x1111111111111111111111111111111111111111';
|
|
20
|
+
const transaction = {
|
|
21
|
+
to: router,
|
|
22
|
+
value: '0',
|
|
23
|
+
data: '0x12345678',
|
|
24
|
+
client_fee_signature_offset: null,
|
|
25
|
+
};
|
|
26
|
+
const fees = { router_fee: '10', client_fee: '0', max_slippage: '4', min_amount_received: '986' };
|
|
27
|
+
const order = {
|
|
28
|
+
status: 'success',
|
|
29
|
+
amount_in: '1000',
|
|
30
|
+
amount_out: '1000',
|
|
31
|
+
gas_estimate: '21000',
|
|
32
|
+
transaction,
|
|
33
|
+
fee_breakdown: fees,
|
|
34
|
+
};
|
|
35
|
+
const context = {
|
|
36
|
+
chainId: types_1.KnownChainIds.EthereumMainnet,
|
|
37
|
+
sellAsset: assets_1.WETH,
|
|
38
|
+
sellAmountCryptoBaseUnit: '1000',
|
|
39
|
+
slippageTolerancePercentageDecimal: '0.005',
|
|
40
|
+
clientFeeBps: 0,
|
|
41
|
+
};
|
|
42
|
+
const validate = (overrides, contextOverrides = {}) => (0, helpers_1.validateFyndQuoteResponse)({ orders: [{ ...order, ...overrides }] }, { ...context, ...contextOverrides });
|
|
43
|
+
(0, vitest_1.it)('accepts a quote that matches the request', () => {
|
|
44
|
+
(0, vitest_1.expect)(validate({}).isOk()).toBe(true);
|
|
45
|
+
});
|
|
46
|
+
vitest_1.it.each([
|
|
47
|
+
['an unpinned router', { transaction: { ...transaction, to: unpinnedRouter } }],
|
|
48
|
+
['a different sell amount', { amount_in: '999' }],
|
|
49
|
+
['native value on a token sell', { transaction: { ...transaction, value: '1' } }],
|
|
50
|
+
[
|
|
51
|
+
'an output floor looser than the slippage',
|
|
52
|
+
{ fee_breakdown: { ...fees, min_amount_received: '984' } },
|
|
53
|
+
],
|
|
54
|
+
['a client fee we did not request', { fee_breakdown: { ...fees, client_fee: '1' } }],
|
|
55
|
+
])('rejects %s', (_label, overrides) => {
|
|
56
|
+
(0, vitest_1.expect)(validate(overrides).isErr()).toBe(true);
|
|
57
|
+
});
|
|
58
|
+
(0, vitest_1.it)('binds native transaction value to the requested sell amount', () => {
|
|
59
|
+
(0, vitest_1.expect)(validate({}, { sellAsset: assets_1.ETH }).isErr()).toBe(true);
|
|
60
|
+
(0, vitest_1.expect)(validate({ transaction: { ...transaction, value: '1000' } }, { sellAsset: assets_1.ETH }).isOk()).toBe(true);
|
|
61
|
+
});
|
|
62
|
+
(0, vitest_1.it)('maps a missing route to NoRouteFound', () => {
|
|
63
|
+
const result = (0, helpers_1.validateFyndQuoteResponse)({ orders: [{ status: 'no_route_found' }] }, context);
|
|
64
|
+
(0, vitest_1.expect)(result.unwrapErr().code).toBe('NoRouteFound');
|
|
65
|
+
});
|
|
66
|
+
(0, vitest_1.describe)('with a client fee', () => {
|
|
67
|
+
const feeContext = { clientFeeBps: 75 };
|
|
68
|
+
const feeOrder = {
|
|
69
|
+
transaction: {
|
|
70
|
+
...transaction,
|
|
71
|
+
data: `0x12345678${'ab'.repeat(65)}`,
|
|
72
|
+
client_fee_signature_offset: 4,
|
|
73
|
+
},
|
|
74
|
+
fee_breakdown: {
|
|
75
|
+
router_fee: '2',
|
|
76
|
+
client_fee: '6',
|
|
77
|
+
max_slippage: '4',
|
|
78
|
+
min_amount_received: '988',
|
|
79
|
+
},
|
|
80
|
+
client_fee_deadline: 1_900_000_000,
|
|
81
|
+
};
|
|
82
|
+
(0, vitest_1.it)('accepts a signed quote carrying our share of the fee', () => {
|
|
83
|
+
(0, vitest_1.expect)(validate(feeOrder, feeContext).isOk()).toBe(true);
|
|
84
|
+
});
|
|
85
|
+
vitest_1.it.each([
|
|
86
|
+
[
|
|
87
|
+
'a fee below our share',
|
|
88
|
+
{
|
|
89
|
+
fee_breakdown: { ...feeOrder.fee_breakdown, client_fee: '4', min_amount_received: '990' },
|
|
90
|
+
},
|
|
91
|
+
],
|
|
92
|
+
[
|
|
93
|
+
'an unsigned placeholder',
|
|
94
|
+
{ transaction: { ...feeOrder.transaction, data: `0x12345678${'00'.repeat(65)}` } },
|
|
95
|
+
],
|
|
96
|
+
['a missing deadline', { client_fee_deadline: null }],
|
|
97
|
+
])('rejects %s', (_label, overrides) => {
|
|
98
|
+
(0, vitest_1.expect)(validate({ ...feeOrder, ...overrides }, feeContext).isErr()).toBe(true);
|
|
99
|
+
});
|
|
100
|
+
});
|
|
101
|
+
});
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.kyberApi = void 0;
|
|
4
|
+
const utils_1 = require("../../utils");
|
|
5
|
+
const evm_1 = require("../../utils/evm");
|
|
6
|
+
const getKyberTradeQuote_1 = require("./swapperApi/getKyberTradeQuote");
|
|
7
|
+
const getKyberTradeRate_1 = require("./swapperApi/getKyberTradeRate");
|
|
8
|
+
exports.kyberApi = {
|
|
9
|
+
getTradeQuote: (input, deps) => (0, getKyberTradeQuote_1.getKyberTradeQuote)(input, deps),
|
|
10
|
+
getTradeRate: (input, deps) => (0, getKyberTradeRate_1.getKyberTradeRate)(input, deps),
|
|
11
|
+
getUnsignedEvmTransaction: evm_1.getUnsignedEvmTransaction,
|
|
12
|
+
getEvmTransactionFees: evm_1.getEvmTransactionFees,
|
|
13
|
+
checkTradeStatus: utils_1.checkEvmSwapStatus,
|
|
14
|
+
};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.kyberSwapper = exports.kyberApi = void 0;
|
|
4
|
+
var endpoints_1 = require("./endpoints");
|
|
5
|
+
Object.defineProperty(exports, "kyberApi", { enumerable: true, get: function () { return endpoints_1.kyberApi; } });
|
|
6
|
+
var KyberSwapper_1 = require("./KyberSwapper");
|
|
7
|
+
Object.defineProperty(exports, "kyberSwapper", { enumerable: true, get: function () { return KyberSwapper_1.kyberSwapper; } });
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { Result } from '@sniptt/monads';
|
|
2
|
+
import type { SwapErrorRight, SwapperDeps, TradeQuote } from '../../../types';
|
|
3
|
+
import type { KyberTradeQuoteInput } from '../types';
|
|
4
|
+
export declare const getKyberTradeQuote: (input: KyberTradeQuoteInput, deps: SwapperDeps) => Promise<Result<TradeQuote[], SwapErrorRight>>;
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getKyberTradeQuote = void 0;
|
|
4
|
+
const monads_1 = require("@sniptt/monads");
|
|
5
|
+
const utils_1 = require("../../../utils");
|
|
6
|
+
const constants_1 = require("../utils/constants");
|
|
7
|
+
const fetchFromKyber_1 = require("../utils/fetchFromKyber");
|
|
8
|
+
const getKyberStepData_1 = require("../utils/getKyberStepData");
|
|
9
|
+
const getKyberTradeContext_1 = require("../utils/getKyberTradeContext");
|
|
10
|
+
const helpers_1 = require("../utils/helpers");
|
|
11
|
+
const getKyberTradeQuote = async (input, deps) => {
|
|
12
|
+
const { accountNumber } = input;
|
|
13
|
+
const maybeAddresses = (0, utils_1.assertQuoteAddresses)(input);
|
|
14
|
+
if (maybeAddresses.isErr())
|
|
15
|
+
return (0, monads_1.Err)(maybeAddresses.unwrapErr());
|
|
16
|
+
const { sendAddress, receiveAddress } = maybeAddresses.unwrap();
|
|
17
|
+
const maybeContext = await (0, getKyberTradeContext_1.getKyberTradeContext)({ input, deps });
|
|
18
|
+
if (maybeContext.isErr())
|
|
19
|
+
return (0, monads_1.Err)(maybeContext.unwrapErr());
|
|
20
|
+
const { tradeCommon, stepCommon, protocolFees, chainId, route, stepDataArgs } = maybeContext.unwrap();
|
|
21
|
+
const deadline = Math.floor(Date.now() / 1000) + constants_1.KYBER_DEADLINE_SECONDS;
|
|
22
|
+
const maybeBuild = await (0, fetchFromKyber_1.fetchKyberBuild)({
|
|
23
|
+
chainId,
|
|
24
|
+
route,
|
|
25
|
+
slippageTolerancePercentageDecimal: tradeCommon.slippageTolerancePercentageDecimal,
|
|
26
|
+
baseUrl: deps.config.VITE_KYBER_BASE_URL,
|
|
27
|
+
sendAddress,
|
|
28
|
+
receiveAddress,
|
|
29
|
+
deadline,
|
|
30
|
+
});
|
|
31
|
+
if (maybeBuild.isErr())
|
|
32
|
+
return (0, monads_1.Err)(maybeBuild.unwrapErr());
|
|
33
|
+
const build = maybeBuild.unwrap();
|
|
34
|
+
// Kyber re-prices at build time and derives the calldata's minimum return from the built amount
|
|
35
|
+
const tradeAmounts = (0, helpers_1.getKyberTradeAmounts)({ input, amountOut: build.amountOut });
|
|
36
|
+
const maybeStepData = await (0, getKyberStepData_1.getKyberStepData)({
|
|
37
|
+
...stepDataArgs,
|
|
38
|
+
type: 'quote',
|
|
39
|
+
input,
|
|
40
|
+
from: sendAddress,
|
|
41
|
+
build,
|
|
42
|
+
});
|
|
43
|
+
if (maybeStepData.isErr())
|
|
44
|
+
return (0, monads_1.Err)(maybeStepData.unwrapErr());
|
|
45
|
+
const { transactionData, networkFeeCryptoBaseUnit } = maybeStepData.unwrap();
|
|
46
|
+
const tradeQuote = {
|
|
47
|
+
...tradeCommon,
|
|
48
|
+
rate: tradeAmounts.rate,
|
|
49
|
+
quoteOrRate: 'quote',
|
|
50
|
+
receiveAddress,
|
|
51
|
+
deadline: deadline * 1000,
|
|
52
|
+
steps: [
|
|
53
|
+
{
|
|
54
|
+
...stepCommon,
|
|
55
|
+
...tradeAmounts,
|
|
56
|
+
accountNumber,
|
|
57
|
+
transactionData,
|
|
58
|
+
feeData: { networkFeeCryptoBaseUnit, protocolFees },
|
|
59
|
+
},
|
|
60
|
+
],
|
|
61
|
+
};
|
|
62
|
+
return (0, monads_1.Ok)([tradeQuote]);
|
|
63
|
+
};
|
|
64
|
+
exports.getKyberTradeQuote = getKyberTradeQuote;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { Result } from '@sniptt/monads';
|
|
2
|
+
import type { SwapErrorRight, SwapperDeps, TradeRate } from '../../../types';
|
|
3
|
+
import type { KyberTradeRateInput } from '../types';
|
|
4
|
+
export declare const getKyberTradeRate: (input: KyberTradeRateInput, deps: SwapperDeps) => Promise<Result<TradeRate[], SwapErrorRight>>;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getKyberTradeRate = void 0;
|
|
4
|
+
const monads_1 = require("@sniptt/monads");
|
|
5
|
+
const getKyberStepData_1 = require("../utils/getKyberStepData");
|
|
6
|
+
const getKyberTradeContext_1 = require("../utils/getKyberTradeContext");
|
|
7
|
+
const getKyberTradeRate = async (input, deps) => {
|
|
8
|
+
const { accountNumber, receiveAddress } = input;
|
|
9
|
+
const maybeContext = await (0, getKyberTradeContext_1.getKyberTradeContext)({ input, deps });
|
|
10
|
+
if (maybeContext.isErr())
|
|
11
|
+
return (0, monads_1.Err)(maybeContext.unwrapErr());
|
|
12
|
+
const { tradeCommon, stepCommon, protocolFees, stepDataArgs } = maybeContext.unwrap();
|
|
13
|
+
const maybeStepData = await (0, getKyberStepData_1.getKyberStepData)({ ...stepDataArgs, type: 'rate', input });
|
|
14
|
+
if (maybeStepData.isErr())
|
|
15
|
+
return (0, monads_1.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 (0, monads_1.Ok)([tradeRate]);
|
|
30
|
+
};
|
|
31
|
+
exports.getKyberTradeRate = getKyberTradeRate;
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import type { Address, Hex } from 'viem';
|
|
2
|
+
import type { GetEvmTradeQuoteInput, GetEvmTradeRateInput } from '../../types';
|
|
3
|
+
export type KyberTradeQuoteInput = GetEvmTradeQuoteInput;
|
|
4
|
+
export type KyberTradeRateInput = GetEvmTradeRateInput;
|
|
5
|
+
export type KyberExtraFee = {
|
|
6
|
+
feeAmount: string;
|
|
7
|
+
chargeFeeBy: '' | 'currency_in' | 'currency_out';
|
|
8
|
+
isInBps: boolean;
|
|
9
|
+
feeReceiver: string;
|
|
10
|
+
};
|
|
11
|
+
export type KyberFeeParams = {
|
|
12
|
+
feeAmount: string;
|
|
13
|
+
chargeFeeBy: 'currency_out';
|
|
14
|
+
isInBps: true;
|
|
15
|
+
feeReceiver: Address;
|
|
16
|
+
};
|
|
17
|
+
export type KyberRouteSummary = {
|
|
18
|
+
tokenIn: string;
|
|
19
|
+
amountIn: string;
|
|
20
|
+
amountInUsd: string;
|
|
21
|
+
tokenOut: string;
|
|
22
|
+
amountOut: string;
|
|
23
|
+
amountOutUsd: string;
|
|
24
|
+
gas: string;
|
|
25
|
+
gasPrice: string;
|
|
26
|
+
gasUsd: string;
|
|
27
|
+
l1FeeUsd: string;
|
|
28
|
+
extraFee: KyberExtraFee;
|
|
29
|
+
route: unknown;
|
|
30
|
+
routerAddress: Address;
|
|
31
|
+
routeID: string;
|
|
32
|
+
checksum: string;
|
|
33
|
+
timestamp: number;
|
|
34
|
+
};
|
|
35
|
+
export type KyberRouteData = {
|
|
36
|
+
routeSummary: KyberRouteSummary;
|
|
37
|
+
routerAddress: Address;
|
|
38
|
+
};
|
|
39
|
+
export type KyberRoutesResponse = {
|
|
40
|
+
code: number;
|
|
41
|
+
message: string;
|
|
42
|
+
data?: KyberRouteData;
|
|
43
|
+
requestId: string;
|
|
44
|
+
};
|
|
45
|
+
export type KyberBuildData = {
|
|
46
|
+
amountOut: string;
|
|
47
|
+
gas: string;
|
|
48
|
+
data: Hex;
|
|
49
|
+
routerAddress: Address;
|
|
50
|
+
transactionValue: string;
|
|
51
|
+
};
|
|
52
|
+
export type KyberBuildResponse = {
|
|
53
|
+
code: number;
|
|
54
|
+
message: string;
|
|
55
|
+
data?: KyberBuildData;
|
|
56
|
+
requestId: string;
|
|
57
|
+
};
|
|
58
|
+
export type KyberErrorResponse = {
|
|
59
|
+
code: number;
|
|
60
|
+
message: string;
|
|
61
|
+
requestId?: string;
|
|
62
|
+
};
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { Address } from 'viem';
|
|
2
|
+
export declare const KYBER_CLIENT_ID = "shapeshift";
|
|
3
|
+
export declare const KYBER_DEADLINE_SECONDS = 1200;
|
|
4
|
+
export declare const KYBER_CHAINS: {
|
|
5
|
+
readonly "eip155:1": "ethereum";
|
|
6
|
+
readonly "eip155:10": "optimism";
|
|
7
|
+
readonly "eip155:56": "bsc";
|
|
8
|
+
readonly "eip155:137": "polygon";
|
|
9
|
+
readonly "eip155:42161": "arbitrum";
|
|
10
|
+
readonly "eip155:8453": "base";
|
|
11
|
+
readonly "eip155:43114": "avalanche";
|
|
12
|
+
readonly "eip155:130": "unichain";
|
|
13
|
+
readonly "eip155:4663": "robinhood";
|
|
14
|
+
readonly "eip155:143": "monad";
|
|
15
|
+
readonly "eip155:999": "hyperevm";
|
|
16
|
+
readonly "eip155:4326": "megaeth";
|
|
17
|
+
readonly "eip155:9745": "plasma";
|
|
18
|
+
};
|
|
19
|
+
export type KyberSupportedChainId = keyof typeof KYBER_CHAINS;
|
|
20
|
+
export declare const KYBER_ROUTER_ADDRESS: Address;
|
|
21
|
+
export declare const KYBER_NATIVE_TOKEN: Address;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.KYBER_NATIVE_TOKEN = exports.KYBER_ROUTER_ADDRESS = exports.KYBER_CHAINS = exports.KYBER_DEADLINE_SECONDS = exports.KYBER_CLIENT_ID = void 0;
|
|
4
|
+
const types_1 = require("@shapeshiftoss/types");
|
|
5
|
+
exports.KYBER_CLIENT_ID = 'shapeshift';
|
|
6
|
+
exports.KYBER_DEADLINE_SECONDS = 1200;
|
|
7
|
+
exports.KYBER_CHAINS = {
|
|
8
|
+
[types_1.KnownChainIds.EthereumMainnet]: 'ethereum',
|
|
9
|
+
[types_1.KnownChainIds.OptimismMainnet]: 'optimism',
|
|
10
|
+
[types_1.KnownChainIds.BnbSmartChainMainnet]: 'bsc',
|
|
11
|
+
[types_1.KnownChainIds.PolygonMainnet]: 'polygon',
|
|
12
|
+
[types_1.KnownChainIds.ArbitrumMainnet]: 'arbitrum',
|
|
13
|
+
[types_1.KnownChainIds.BaseMainnet]: 'base',
|
|
14
|
+
[types_1.KnownChainIds.AvalancheMainnet]: 'avalanche',
|
|
15
|
+
[types_1.KnownChainIds.UnichainMainnet]: 'unichain',
|
|
16
|
+
[types_1.KnownChainIds.RobinhoodMainnet]: 'robinhood',
|
|
17
|
+
[types_1.KnownChainIds.MonadMainnet]: 'monad',
|
|
18
|
+
[types_1.KnownChainIds.HyperEvmMainnet]: 'hyperevm',
|
|
19
|
+
[types_1.KnownChainIds.MegaEthMainnet]: 'megaeth',
|
|
20
|
+
[types_1.KnownChainIds.PlasmaMainnet]: 'plasma',
|
|
21
|
+
};
|
|
22
|
+
// MetaAggregationRouterV2, same address on every chain: https://docs.kyberswap.com/developer-guide/aggregator-api/contracts
|
|
23
|
+
exports.KYBER_ROUTER_ADDRESS = '0x6131B5fae19EA4f9D964eAc0408E4408b66337b5';
|
|
24
|
+
exports.KYBER_NATIVE_TOKEN = '0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE';
|