@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,110 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const types_1 = require("@shapeshiftoss/types");
|
|
4
|
+
const monads_1 = require("@sniptt/monads");
|
|
5
|
+
const vitest_1 = require("vitest");
|
|
6
|
+
const types_2 = require("../../../types");
|
|
7
|
+
const assets_1 = require("../../../utils/test-data/assets");
|
|
8
|
+
const fetchFromZrx_1 = require("../utils/fetchFromZrx");
|
|
9
|
+
const getZrxTradeQuote_1 = require("./getZrxTradeQuote");
|
|
10
|
+
vitest_1.vi.mock('../utils/fetchFromZrx', () => ({ fetchZrxQuote: vitest_1.vi.fn() }));
|
|
11
|
+
vitest_1.vi.mock('../utils/getZrxStepData', () => ({
|
|
12
|
+
getZrxStepData: vitest_1.vi.fn(({ permit2Eip712 }) => Promise.resolve((0, monads_1.Ok)({
|
|
13
|
+
transactionData: {
|
|
14
|
+
type: 'evm',
|
|
15
|
+
chainId: 1,
|
|
16
|
+
to: '0x1111111111111111111111111111111111111111',
|
|
17
|
+
data: '0x1234',
|
|
18
|
+
value: '0',
|
|
19
|
+
...(permit2Eip712 && {
|
|
20
|
+
signatureRequired: { type: 'permit2', eip712: permit2Eip712 },
|
|
21
|
+
}),
|
|
22
|
+
},
|
|
23
|
+
networkFeeCryptoBaseUnit: '100000',
|
|
24
|
+
}))),
|
|
25
|
+
}));
|
|
26
|
+
const input = {
|
|
27
|
+
sellAsset: assets_1.WETH,
|
|
28
|
+
buyAsset: assets_1.USDC_MAINNET,
|
|
29
|
+
sellAmountIncludingProtocolFeesCryptoBaseUnit: '1000000000000000000',
|
|
30
|
+
sendAddress: '0x1111111111111111111111111111111111111111',
|
|
31
|
+
receiveAddress: '0x1111111111111111111111111111111111111111',
|
|
32
|
+
accountNumber: 0,
|
|
33
|
+
affiliateBps: '0',
|
|
34
|
+
allowMultiHop: false,
|
|
35
|
+
quoteOrRate: 'quote',
|
|
36
|
+
chainId: types_1.KnownChainIds.EthereumMainnet,
|
|
37
|
+
supportsEIP1559: true,
|
|
38
|
+
};
|
|
39
|
+
const deps = {
|
|
40
|
+
assetsById: {},
|
|
41
|
+
config: { VITE_ZRX_BASE_URL: 'https://example.com' },
|
|
42
|
+
};
|
|
43
|
+
const typedData = (deadline) => ({
|
|
44
|
+
domain: { name: 'Permit2', chainId: 1 },
|
|
45
|
+
types: { PermitTransferFrom: [{ name: 'deadline', type: 'uint256' }] },
|
|
46
|
+
primaryType: 'PermitTransferFrom',
|
|
47
|
+
message: { deadline },
|
|
48
|
+
});
|
|
49
|
+
// Live Settler calldata for an ETH -> USDC sell, NATIVE_CHECK deadline 1791997786
|
|
50
|
+
const nativeSellCalldata = '0x1fff991f000000000000000000000000ea8eb5ba11a3ea66f417ae29abf70c6fb4ba9626000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000000000000000000000000000000000000000000000000000000000e750ef800000000000000000000000000000000000000000000000000000000000000a0939d83c32b72441d72643cf60000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000024000000000000000000000000000000000000000000000000000000000000003600000000000000000000000000000000000000000000000000000000000000044bd01c226000000000000000000000000000000000000000000000000000000006acfb75a000000000000000000000000000000000000000000000000016345785d8a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010438c9c147000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee00000000000000000000000000000000000000000000000000000000000f4240000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000024d0e30db00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e48d68a156000000000000000000000000666fedd4cdd4e890a5ad20e7b60975409435a64a00000000000000000000000000000000000000000000000000000000000f4240000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040c02aaa39b223fe8d0a0e5c4f27ead9083c756cc201000064fffd8963efd1fc6a506488495d951d5263988d25a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008434ee90ca000000000000000000000000f5c4f3dc02c3fb9279495a8fef7b0741da956157000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000000000000000000000000000000000000000000000000000000000e9a9ab900000000000000000000000000000000000000000000000000000000000f424000000000000000000000000000000000000000000000000000000000';
|
|
51
|
+
const quoteResponse = (eip712, data = '0x1234') => ({
|
|
52
|
+
blockNumber: '1',
|
|
53
|
+
buyAmount: '1000000',
|
|
54
|
+
buyToken: '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48',
|
|
55
|
+
sellAmount: input.sellAmountIncludingProtocolFeesCryptoBaseUnit,
|
|
56
|
+
sellToken: '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2',
|
|
57
|
+
fees: { integratorFee: null, zeroExFee: null, gasFee: null },
|
|
58
|
+
issues: { allowance: null, balance: null, simulationIncomplete: false, invalidSourcesPassed: [] },
|
|
59
|
+
liquidityAvailable: true,
|
|
60
|
+
minBuyAmount: '990000',
|
|
61
|
+
route: { fills: [], tokens: [] },
|
|
62
|
+
tokenMetadata: {
|
|
63
|
+
buyToken: { buyTaxBps: null, sellTaxBps: null },
|
|
64
|
+
sellToken: { buyTaxBps: null, sellTaxBps: null },
|
|
65
|
+
},
|
|
66
|
+
totalNetworkFee: null,
|
|
67
|
+
zid: 'test',
|
|
68
|
+
permit2: eip712 ? { type: 'Permit2', hash: '0x1234', eip712 } : null,
|
|
69
|
+
transaction: {
|
|
70
|
+
to: '0x1111111111111111111111111111111111111111',
|
|
71
|
+
data,
|
|
72
|
+
gas: '100000',
|
|
73
|
+
gasPrice: '1000000000',
|
|
74
|
+
value: '0',
|
|
75
|
+
},
|
|
76
|
+
});
|
|
77
|
+
(0, vitest_1.describe)('getZrxTradeQuote Permit2 deadline', () => {
|
|
78
|
+
(0, vitest_1.beforeEach)(() => {
|
|
79
|
+
vitest_1.vi.mocked(fetchFromZrx_1.fetchZrxQuote).mockResolvedValue((0, monads_1.Ok)(quoteResponse(typedData('1791934983'))));
|
|
80
|
+
});
|
|
81
|
+
vitest_1.it.each(['1791934983', 1791934983])('uses the provider deadline in milliseconds (%s)', async (deadline) => {
|
|
82
|
+
const eip712 = typedData(deadline);
|
|
83
|
+
vitest_1.vi.mocked(fetchFromZrx_1.fetchZrxQuote).mockResolvedValue((0, monads_1.Ok)(quoteResponse(eip712)));
|
|
84
|
+
const result = await (0, getZrxTradeQuote_1.getZrxTradeQuote)(input, deps);
|
|
85
|
+
(0, vitest_1.expect)(result.isOk()).toBe(true);
|
|
86
|
+
const [quote] = result.unwrap();
|
|
87
|
+
(0, vitest_1.expect)(quote.deadline).toBe(1791934983000);
|
|
88
|
+
(0, vitest_1.expect)(quote.steps[0].transactionData).toMatchObject({
|
|
89
|
+
signatureRequired: { eip712 },
|
|
90
|
+
});
|
|
91
|
+
});
|
|
92
|
+
vitest_1.it.each([undefined, null, true, '', 'invalid', '-1', '1.5', '9007199254740991'])('rejects an invalid Permit2 deadline (%s)', async (deadline) => {
|
|
93
|
+
vitest_1.vi.mocked(fetchFromZrx_1.fetchZrxQuote).mockResolvedValue((0, monads_1.Ok)(quoteResponse(typedData(deadline))));
|
|
94
|
+
const result = await (0, getZrxTradeQuote_1.getZrxTradeQuote)(input, deps);
|
|
95
|
+
(0, vitest_1.expect)(result.isErr()).toBe(true);
|
|
96
|
+
(0, vitest_1.expect)(result.unwrapErr().code).toBe(types_2.TradeQuoteError.InvalidResponse);
|
|
97
|
+
});
|
|
98
|
+
(0, vitest_1.it)('reads the NATIVE_CHECK deadline from native-token sell calldata', async () => {
|
|
99
|
+
vitest_1.vi.mocked(fetchFromZrx_1.fetchZrxQuote).mockResolvedValue((0, monads_1.Ok)(quoteResponse(null, nativeSellCalldata)));
|
|
100
|
+
const result = await (0, getZrxTradeQuote_1.getZrxTradeQuote)({ ...input, sellAsset: assets_1.ETH }, deps);
|
|
101
|
+
(0, vitest_1.expect)(result.isOk()).toBe(true);
|
|
102
|
+
(0, vitest_1.expect)(result.unwrap()[0].deadline).toBe(1791997786000);
|
|
103
|
+
});
|
|
104
|
+
(0, vitest_1.it)('leaves native-token quotes without a NATIVE_CHECK action free of a fabricated deadline', async () => {
|
|
105
|
+
vitest_1.vi.mocked(fetchFromZrx_1.fetchZrxQuote).mockResolvedValue((0, monads_1.Ok)(quoteResponse(null)));
|
|
106
|
+
const result = await (0, getZrxTradeQuote_1.getZrxTradeQuote)({ ...input, sellAsset: assets_1.ETH }, deps);
|
|
107
|
+
(0, vitest_1.expect)(result.isOk()).toBe(true);
|
|
108
|
+
(0, vitest_1.expect)(result.unwrap()[0].deadline).toBeUndefined();
|
|
109
|
+
});
|
|
110
|
+
});
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { KnownChainIds } from '@shapeshiftoss/types';
|
|
2
|
-
import type {
|
|
2
|
+
import type { TypedData } from 'eip-712';
|
|
3
|
+
import type { Address } from 'viem';
|
|
3
4
|
import type { GetEvmTradeQuoteInput, GetEvmTradeRateInput } from '../../types';
|
|
4
5
|
export type ZrxTradeQuoteInput = GetEvmTradeQuoteInput;
|
|
5
6
|
export type ZrxTradeRateInput = GetEvmTradeRateInput;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const getZrxNativeCheckDeadline: (data: string) => number | undefined;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getZrxNativeCheckDeadline = void 0;
|
|
4
|
+
const viem_1 = require("viem");
|
|
5
|
+
const settlerAbi = (0, viem_1.parseAbi)([
|
|
6
|
+
'function execute((address recipient, address buyToken, uint256 minAmountOut) slippage, bytes[] actions, bytes32 zid)',
|
|
7
|
+
'function NATIVE_CHECK(uint256 deadline, uint256 msgValue)',
|
|
8
|
+
]);
|
|
9
|
+
const NATIVE_CHECK_SELECTOR = (0, viem_1.toFunctionSelector)('function NATIVE_CHECK(uint256,uint256)');
|
|
10
|
+
// Native sells carry no Permit2, but Settler reverts with SignatureExpired past any NATIVE_CHECK deadline
|
|
11
|
+
const getZrxNativeCheckDeadline = (data) => {
|
|
12
|
+
try {
|
|
13
|
+
const { functionName, args } = (0, viem_1.decodeFunctionData)({ abi: settlerAbi, data: data });
|
|
14
|
+
if (functionName !== 'execute')
|
|
15
|
+
return undefined;
|
|
16
|
+
const deadlines = args[1]
|
|
17
|
+
.filter(action => action.startsWith(NATIVE_CHECK_SELECTOR))
|
|
18
|
+
.map(action => (0, viem_1.decodeFunctionData)({ abi: settlerAbi, data: action }))
|
|
19
|
+
.flatMap(decoded => decoded.functionName === 'NATIVE_CHECK' ? [Number(decoded.args[0])] : []);
|
|
20
|
+
return deadlines.length ? Math.min(...deadlines) : undefined;
|
|
21
|
+
}
|
|
22
|
+
catch {
|
|
23
|
+
return undefined;
|
|
24
|
+
}
|
|
25
|
+
};
|
|
26
|
+
exports.getZrxNativeCheckDeadline = getZrxNativeCheckDeadline;
|
|
@@ -5,10 +5,12 @@ export type GetZrxStepDataArgs = StepDataArgs<unknown, {
|
|
|
5
5
|
totalNetworkFee: string | null;
|
|
6
6
|
}, {
|
|
7
7
|
transaction: ZrxQuoteResponse['transaction'];
|
|
8
|
+
totalNetworkFee: string | null;
|
|
9
|
+
sellAmountCryptoBaseUnit: string;
|
|
8
10
|
permit2Eip712: NonNullable<ZrxQuoteResponse['permit2']>['eip712'] | undefined;
|
|
9
11
|
}>;
|
|
10
12
|
type ZrxRateStepData = {
|
|
11
|
-
networkFeeCryptoBaseUnit: string;
|
|
13
|
+
networkFeeCryptoBaseUnit: string | undefined;
|
|
12
14
|
};
|
|
13
15
|
type ZrxQuoteStepData = {
|
|
14
16
|
transactionData: TxBuildData;
|
|
@@ -7,21 +7,22 @@ const monads_1 = require("@sniptt/monads");
|
|
|
7
7
|
const utils_2 = require("../../../utils");
|
|
8
8
|
const evm_1 = require("../../../utils/evm");
|
|
9
9
|
async function getZrxStepData(args) {
|
|
10
|
+
// 0x's total includes the L1 data fee on OP-stack chains, which pricing their gas limit would drop
|
|
10
11
|
if (args.type === 'rate') {
|
|
11
12
|
const stepData = {
|
|
12
|
-
networkFeeCryptoBaseUnit:
|
|
13
|
+
networkFeeCryptoBaseUnit: args.totalNetworkFee ?? undefined,
|
|
13
14
|
};
|
|
14
15
|
return (0, monads_1.Ok)(stepData);
|
|
15
16
|
}
|
|
16
|
-
const { sellAsset, transaction, permit2Eip712, from, input, deps } = args;
|
|
17
|
+
const { sellAsset, sellAmountCryptoBaseUnit, transaction, totalNetworkFee, permit2Eip712, from, input, deps, } = args;
|
|
18
|
+
const adapter = deps.assertGetEvmChainAdapter(sellAsset.chainId);
|
|
19
|
+
const supportsEIP1559 = 'supportsEIP1559' in input ? input.supportsEIP1559 : false;
|
|
17
20
|
const transactionData = {
|
|
18
21
|
type: 'evm',
|
|
19
22
|
chainId: Number((0, caip_1.fromChainId)(sellAsset.chainId).chainReference),
|
|
20
23
|
to: transaction.to,
|
|
21
24
|
data: transaction.data,
|
|
22
25
|
value: transaction.value,
|
|
23
|
-
// 0x simulate with a valid permit2 signature, which can't be reproduced before signing, so trust their gas limit
|
|
24
|
-
gasLimit: transaction.gas || undefined,
|
|
25
26
|
...(permit2Eip712 && {
|
|
26
27
|
signatureRequired: {
|
|
27
28
|
type: 'permit2',
|
|
@@ -30,12 +31,30 @@ async function getZrxStepData(args) {
|
|
|
30
31
|
}),
|
|
31
32
|
};
|
|
32
33
|
try {
|
|
33
|
-
const networkFeeCryptoBaseUnit = await (
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
34
|
+
const networkFeeCryptoBaseUnit = await (async () => {
|
|
35
|
+
// Permit2 calldata needs the signature, so it can't be simulated before signing
|
|
36
|
+
if (permit2Eip712) {
|
|
37
|
+
if (!(0, evm_1.isPositiveGasLimit)(transaction.gas))
|
|
38
|
+
throw new Error('missing 0x gas limit');
|
|
39
|
+
transactionData.gasLimit = (0, evm_1.bufferGasLimit)(transaction.gas);
|
|
40
|
+
// 0x's total is their gas cost plus the L1 data fee on OP-stack chains
|
|
41
|
+
const l1FeeCryptoBaseUnit = utils_1.BigNumber.max((0, utils_1.bnOrZero)(totalNetworkFee).minus((0, utils_1.bnOrZero)(transaction.gas).times(transaction.gasPrice)), 0);
|
|
42
|
+
const networkFeeCryptoBaseUnit = await (0, evm_1.getEvmNetworkFeeCryptoBaseUnit)({
|
|
43
|
+
adapter,
|
|
44
|
+
supportsEIP1559,
|
|
45
|
+
gasLimit: transactionData.gasLimit,
|
|
46
|
+
});
|
|
47
|
+
return (0, utils_1.bnOrZero)(networkFeeCryptoBaseUnit).plus(l1FeeCryptoBaseUnit).toFixed(0);
|
|
48
|
+
}
|
|
49
|
+
return (0, evm_1.getEvmNetworkFeeCryptoBaseUnit)({
|
|
50
|
+
adapter,
|
|
51
|
+
transactionData,
|
|
52
|
+
from,
|
|
53
|
+
supportsEIP1559,
|
|
54
|
+
stateOverride: { sellAsset, sellAmountCryptoBaseUnit },
|
|
55
|
+
providerGasLimit: transaction.gas,
|
|
56
|
+
});
|
|
57
|
+
})();
|
|
39
58
|
const stepData = { transactionData, networkFeeCryptoBaseUnit };
|
|
40
59
|
return (0, monads_1.Ok)(stepData);
|
|
41
60
|
}
|
package/dist/cjs/types.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { AccountId, AssetId, ChainId } from '@shapeshiftoss/caip';
|
|
2
|
-
import type { ChainAdapter, CosmosSdkChainAdapter, EvmChainAdapter, near, SignTx, solana, starknet, sui, ton, tron, UtxoChainAdapter } from '@shapeshiftoss/chain-adapters';
|
|
3
|
-
import type { HDWallet, SolanaSignTx, StarknetSignTx, SuiSignTx } from '@shapeshiftoss/hdwallet-core';
|
|
4
|
-
import type { Asset, AssetsByIdPartial, CosmosSdkChainId, EvmChainId, KnownChainIds, NearChainId, OrderCreation, PartialRecord, SolanaChainId, StarknetChainId, SuiChainId, TonChainId, TronChainId, UtxoAccountType, UtxoChainId } from '@shapeshiftoss/types';
|
|
2
|
+
import type { aptos, ChainAdapter, CosmosSdkChainAdapter, EvmChainAdapter, near, SignTx, solana, starknet, sui, ton, tron, UtxoChainAdapter } from '@shapeshiftoss/chain-adapters';
|
|
3
|
+
import type { AptosSignTx, HDWallet, SolanaSignTx, StarknetSignTx, SuiSignTx } from '@shapeshiftoss/hdwallet-core';
|
|
4
|
+
import type { AptosChainId, Asset, AssetsByIdPartial, CosmosSdkChainId, EvmChainId, KnownChainIds, NearChainId, OrderCreation, PartialRecord, SolanaChainId, StarknetChainId, SuiChainId, TonChainId, TronChainId, UtxoAccountType, UtxoChainId } from '@shapeshiftoss/types';
|
|
5
5
|
import type { TxStatus } from '@shapeshiftoss/unchained-client';
|
|
6
6
|
import type { Result } from '@sniptt/monads';
|
|
7
7
|
import type { TransactionInstruction } from '@solana/web3.js';
|
|
@@ -43,6 +43,8 @@ export type SwapperConfig = {
|
|
|
43
43
|
VITE_COWSWAP_BASE_URL: string;
|
|
44
44
|
VITE_PORTALS_BASE_URL: string;
|
|
45
45
|
VITE_ZRX_BASE_URL: string;
|
|
46
|
+
VITE_FYND_BASE_URL: string;
|
|
47
|
+
VITE_KYBER_BASE_URL: string;
|
|
46
48
|
VITE_CHAINFLIP_API_KEY: string;
|
|
47
49
|
VITE_CHAINFLIP_API_URL: string;
|
|
48
50
|
VITE_FEATURE_CHAINFLIP_SWAP_DCA: boolean;
|
|
@@ -56,6 +58,7 @@ export type SwapperConfig = {
|
|
|
56
58
|
VITE_ACROSS_API_KEY: string;
|
|
57
59
|
VITE_DEBRIDGE_API_URL: string;
|
|
58
60
|
VITE_BOB_GATEWAY_API_KEY: string;
|
|
61
|
+
VITE_SYMBIOSIS_API_URL: string;
|
|
59
62
|
};
|
|
60
63
|
export declare enum SwapperName {
|
|
61
64
|
Thorchain = "THORChain",
|
|
@@ -76,7 +79,10 @@ export declare enum SwapperName {
|
|
|
76
79
|
Stonfi = "STON.fi",
|
|
77
80
|
Across = "Across",
|
|
78
81
|
Debridge = "deBridge",
|
|
79
|
-
BobGateway = "BOB Gateway"
|
|
82
|
+
BobGateway = "BOB Gateway",
|
|
83
|
+
Symbiosis = "Symbiosis",
|
|
84
|
+
Fynd = "Fynd",
|
|
85
|
+
KyberSwap = "KyberSwap"
|
|
80
86
|
}
|
|
81
87
|
export type SwapSource = SwapperName | `${SwapperName} • ${string}`;
|
|
82
88
|
export type SwapErrorRight = {
|
|
@@ -178,6 +184,12 @@ export type GetTonTradeQuoteInput = CommonTradeQuoteInput & {
|
|
|
178
184
|
export type GetTonTradeRateInput = CommonTradeRateInput & {
|
|
179
185
|
chainId: TonChainId;
|
|
180
186
|
};
|
|
187
|
+
export type GetAptosTradeQuoteInput = CommonTradeQuoteInput & {
|
|
188
|
+
chainId: AptosChainId;
|
|
189
|
+
};
|
|
190
|
+
export type GetAptosTradeRateInput = CommonTradeRateInput & {
|
|
191
|
+
chainId: AptosChainId;
|
|
192
|
+
};
|
|
181
193
|
export type GetSolanaTradeQuoteInput = CommonTradeQuoteInput & {
|
|
182
194
|
chainId: SolanaChainId;
|
|
183
195
|
};
|
|
@@ -209,8 +221,8 @@ export type GetUtxoTradeRateInput = CommonTradeRateInput & {
|
|
|
209
221
|
xpub: string | undefined;
|
|
210
222
|
};
|
|
211
223
|
export type GetUtxoTradeQuoteInput = GetUtxoTradeQuoteWithWallet;
|
|
212
|
-
export type GetTradeQuoteInput = GetUtxoTradeQuoteInput | GetEvmTradeQuoteInput | GetCosmosSdkTradeQuoteInput | GetTronTradeQuoteInput | GetNearTradeQuoteInput | GetTonTradeQuoteInput | GetSolanaTradeQuoteInput | GetStarknetTradeQuoteInput | GetSuiTradeQuoteInput;
|
|
213
|
-
export type GetTradeRateInput = GetEvmTradeRateInput | GetCosmosSdkTradeRateInput | GetUtxoTradeRateInput | GetTronTradeRateInput | GetNearTradeRateInput | GetTonTradeRateInput | GetSolanaTradeRateInput | GetStarknetTradeRateInput | GetSuiTradeRateInput;
|
|
224
|
+
export type GetTradeQuoteInput = GetUtxoTradeQuoteInput | GetEvmTradeQuoteInput | GetCosmosSdkTradeQuoteInput | GetTronTradeQuoteInput | GetNearTradeQuoteInput | GetTonTradeQuoteInput | GetSolanaTradeQuoteInput | GetStarknetTradeQuoteInput | GetSuiTradeQuoteInput | GetAptosTradeQuoteInput;
|
|
225
|
+
export type GetTradeRateInput = GetEvmTradeRateInput | GetCosmosSdkTradeRateInput | GetUtxoTradeRateInput | GetTronTradeRateInput | GetNearTradeRateInput | GetTonTradeRateInput | GetSolanaTradeRateInput | GetStarknetTradeRateInput | GetSuiTradeRateInput | GetAptosTradeRateInput;
|
|
214
226
|
export type WithExactBuyAmount<T extends {
|
|
215
227
|
sellAmountIncludingProtocolFeesCryptoBaseUnit: string;
|
|
216
228
|
}> = T extends unknown ? Omit<T, 'sellAmountIncludingProtocolFeesCryptoBaseUnit'> & {
|
|
@@ -265,12 +277,15 @@ export type StarknetSwapperDeps = {
|
|
|
265
277
|
export type TonSwapperDeps = {
|
|
266
278
|
assertGetTonChainAdapter: (chainId: ChainId) => ton.ChainAdapter;
|
|
267
279
|
};
|
|
280
|
+
export type AptosSwapperDeps = {
|
|
281
|
+
assertGetAptosChainAdapter: (chainId: ChainId) => aptos.ChainAdapter;
|
|
282
|
+
};
|
|
268
283
|
export type SwapperDeps = {
|
|
269
284
|
assetsById: AssetsByIdPartial;
|
|
270
285
|
config: SwapperConfig;
|
|
271
286
|
mixPanel: Mixpanel | undefined;
|
|
272
287
|
assertGetChainAdapter: (chainId: ChainId) => ChainAdapter<KnownChainIds>;
|
|
273
|
-
} & EvmSwapperDeps & UtxoSwapperDeps & CosmosSdkSwapperDeps & SolanaSwapperDeps & TronSwapperDeps & SuiSwapperDeps & NearSwapperDeps & StarknetSwapperDeps & TonSwapperDeps;
|
|
288
|
+
} & EvmSwapperDeps & UtxoSwapperDeps & CosmosSdkSwapperDeps & SolanaSwapperDeps & TronSwapperDeps & SuiSwapperDeps & NearSwapperDeps & StarknetSwapperDeps & TonSwapperDeps & AptosSwapperDeps;
|
|
274
289
|
export type AffiliateFee = {
|
|
275
290
|
assetId: AssetId;
|
|
276
291
|
amountCryptoBaseUnit: string;
|
|
@@ -324,6 +339,11 @@ export type TxBuildData = {
|
|
|
324
339
|
value: string;
|
|
325
340
|
data?: string;
|
|
326
341
|
memo?: string;
|
|
342
|
+
} | {
|
|
343
|
+
type: 'aptos';
|
|
344
|
+
payload: string;
|
|
345
|
+
gasUnitPrice: string;
|
|
346
|
+
maxGasAmount: string;
|
|
327
347
|
} | {
|
|
328
348
|
type: 'cowswap';
|
|
329
349
|
chainId: ChainId;
|
|
@@ -343,9 +363,6 @@ export type TradeStepCommon = {
|
|
|
343
363
|
estimatedExecutionTimeMs: number | undefined;
|
|
344
364
|
swapperMetadata?: SwapperMetadata;
|
|
345
365
|
stonfiTransactionData?: StonfiTransactionData;
|
|
346
|
-
chainflipSpecific?: {
|
|
347
|
-
depositAddress?: string;
|
|
348
|
-
};
|
|
349
366
|
affiliateFee?: AffiliateFee;
|
|
350
367
|
};
|
|
351
368
|
export type TradeQuoteStep = TradeStepCommon & {
|
|
@@ -452,7 +469,7 @@ export type TradeQuote = TradeQuoteBase & {
|
|
|
452
469
|
} & {
|
|
453
470
|
quoteOrRate: 'quote';
|
|
454
471
|
receiveAddress: string;
|
|
455
|
-
deadline
|
|
472
|
+
deadline?: number;
|
|
456
473
|
};
|
|
457
474
|
export type MultiHopTradeQuote = TradeQuote & {
|
|
458
475
|
steps: MultiHopTradeQuoteSteps;
|
|
@@ -514,6 +531,9 @@ export type StarknetTransactionExecutionProps = {
|
|
|
514
531
|
export type TonTransactionExecutionProps = {
|
|
515
532
|
signAndBroadcastTransaction: (txToSign: ton.TonSignTx) => Promise<string>;
|
|
516
533
|
};
|
|
534
|
+
export type AptosTransactionExecutionProps = {
|
|
535
|
+
signAndBroadcastTransaction: (txToSign: AptosSignTx) => Promise<string>;
|
|
536
|
+
};
|
|
517
537
|
type EvmAccountMetadata = {
|
|
518
538
|
from: string;
|
|
519
539
|
};
|
|
@@ -531,6 +551,7 @@ type NearAccountMetadata = {
|
|
|
531
551
|
};
|
|
532
552
|
type StarknetAccountMetadata = {
|
|
533
553
|
from: string;
|
|
554
|
+
callsOnly?: boolean;
|
|
534
555
|
};
|
|
535
556
|
type UtxoAccountMetadata = {
|
|
536
557
|
senderAddress: string;
|
|
@@ -560,6 +581,10 @@ type TonAccountMetadata = {
|
|
|
560
581
|
from: string;
|
|
561
582
|
};
|
|
562
583
|
export type GetUnsignedTonTransactionArgs = CommonGetUnsignedTransactionArgs & TonAccountMetadata & TonSwapperDeps;
|
|
584
|
+
type AptosAccountMetadata = {
|
|
585
|
+
from: string;
|
|
586
|
+
};
|
|
587
|
+
export type GetUnsignedAptosTransactionArgs = CommonGetUnsignedTransactionArgs & AptosAccountMetadata & AptosSwapperDeps;
|
|
563
588
|
export type GetUnsignedEvmMessageArgs = CommonGetUnsignedTransactionArgs & EvmAccountMetadata & Omit<EvmSwapperDeps, 'fetchIsSmartContractAddressQuery'>;
|
|
564
589
|
export type GetUnsignedSolanaMessageArgs = CommonGetUnsignedTransactionArgs;
|
|
565
590
|
export type GetUnsignedUtxoTransactionArgs = CommonGetUnsignedTransactionArgs & UtxoAccountMetadata & UtxoSwapperDeps;
|
|
@@ -571,7 +596,7 @@ export type CheckTradeStatusInput = {
|
|
|
571
596
|
stepIndex: SupportedTradeQuoteStepIndex;
|
|
572
597
|
config: SwapperConfig;
|
|
573
598
|
swap: Swap | undefined;
|
|
574
|
-
} & EvmSwapperDeps & UtxoSwapperDeps & CosmosSdkSwapperDeps & SolanaSwapperDeps & TronSwapperDeps & SuiSwapperDeps & NearSwapperDeps & StarknetSwapperDeps & TonSwapperDeps;
|
|
599
|
+
} & EvmSwapperDeps & UtxoSwapperDeps & CosmosSdkSwapperDeps & SolanaSwapperDeps & TronSwapperDeps & SuiSwapperDeps & NearSwapperDeps & StarknetSwapperDeps & TonSwapperDeps & AptosSwapperDeps;
|
|
575
600
|
export type TradeStatus = {
|
|
576
601
|
status: TxStatus;
|
|
577
602
|
buyTxHash: string | undefined;
|
|
@@ -597,6 +622,7 @@ export type Swapper = {
|
|
|
597
622
|
executeNearTransaction?: (txToSign: near.NearSignTx, callbacks: NearTransactionExecutionProps) => Promise<string>;
|
|
598
623
|
executeStarknetTransaction?: (txToSign: StarknetSignTx, callbacks: StarknetTransactionExecutionProps) => Promise<string>;
|
|
599
624
|
executeTonTransaction?: (txToSign: ton.TonSignTx, callbacks: TonTransactionExecutionProps) => Promise<string>;
|
|
625
|
+
executeAptosTransaction?: (txToSign: AptosSignTx, callbacks: AptosTransactionExecutionProps) => Promise<string>;
|
|
600
626
|
};
|
|
601
627
|
export type SwapperApi = {
|
|
602
628
|
checkTradeStatus: (input: CheckTradeStatusInput) => Promise<TradeStatus>;
|
|
@@ -615,6 +641,7 @@ export type SwapperApi = {
|
|
|
615
641
|
getUnsignedNearTransaction?: (input: GetUnsignedNearTransactionArgs) => Promise<near.NearSignTx>;
|
|
616
642
|
getUnsignedStarknetTransaction?: (input: GetUnsignedStarknetTransactionArgs) => Promise<StarknetSignTx>;
|
|
617
643
|
getUnsignedTonTransaction?: (input: GetUnsignedTonTransactionArgs) => Promise<ton.TonSignTx>;
|
|
644
|
+
getUnsignedAptosTransaction?: (input: GetUnsignedAptosTransactionArgs) => Promise<AptosSignTx>;
|
|
618
645
|
getEvmTransactionFees?: (input: GetUnsignedEvmTransactionArgs) => Promise<string>;
|
|
619
646
|
getSolanaTransactionFees?: (input: GetUnsignedSolanaTransactionArgs) => Promise<string>;
|
|
620
647
|
getSuiTransactionFees?: (input: GetUnsignedSuiTransactionArgs) => Promise<string>;
|
|
@@ -624,6 +651,7 @@ export type SwapperApi = {
|
|
|
624
651
|
getNearTransactionFees?: (input: GetUnsignedNearTransactionArgs) => Promise<string>;
|
|
625
652
|
getStarknetTransactionFees?: (input: GetUnsignedStarknetTransactionArgs) => Promise<string>;
|
|
626
653
|
getTonTransactionFees?: (input: GetUnsignedTonTransactionArgs) => Promise<string>;
|
|
654
|
+
getAptosTransactionFees?: (input: GetUnsignedAptosTransactionArgs) => Promise<string>;
|
|
627
655
|
};
|
|
628
656
|
export type QuoteResult = Result<TradeQuote[], SwapErrorRight> & {
|
|
629
657
|
swapperName: SwapperName;
|
|
@@ -652,6 +680,7 @@ export type SuiTransactionExecutionInput = CommonTradeExecutionInput & SuiTransa
|
|
|
652
680
|
export type NearTransactionExecutionInput = CommonTradeExecutionInput & NearTransactionExecutionProps & NearAccountMetadata;
|
|
653
681
|
export type StarknetTransactionExecutionInput = CommonTradeExecutionInput & StarknetTransactionExecutionProps & StarknetAccountMetadata;
|
|
654
682
|
export type TonTransactionExecutionInput = CommonTradeExecutionInput & TonTransactionExecutionProps & TonAccountMetadata;
|
|
683
|
+
export type AptosTransactionExecutionInput = CommonTradeExecutionInput & AptosTransactionExecutionProps & AptosAccountMetadata;
|
|
655
684
|
export declare enum TradeExecutionEvent {
|
|
656
685
|
SellTxHash = "sellTxHash",
|
|
657
686
|
Status = "status",
|
package/dist/cjs/types.js
CHANGED
|
@@ -22,6 +22,9 @@ var SwapperName;
|
|
|
22
22
|
SwapperName["Across"] = "Across";
|
|
23
23
|
SwapperName["Debridge"] = "deBridge";
|
|
24
24
|
SwapperName["BobGateway"] = "BOB Gateway";
|
|
25
|
+
SwapperName["Symbiosis"] = "Symbiosis";
|
|
26
|
+
SwapperName["Fynd"] = "Fynd";
|
|
27
|
+
SwapperName["KyberSwap"] = "KyberSwap";
|
|
25
28
|
})(SwapperName || (exports.SwapperName = SwapperName = {}));
|
|
26
29
|
var TradeQuoteError;
|
|
27
30
|
(function (TradeQuoteError) {
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.APTOS_RATE_SIMULATION_VALUE = exports.APTOS_PLACEHOLDER_ADDRESS = void 0;
|
|
4
|
+
// The aptos framework account usable as a sender stand-in for walletless rates
|
|
5
|
+
exports.APTOS_PLACEHOLDER_ADDRESS = '0x1';
|
|
6
|
+
// Rates only price the transfer, so the sender doesn't need to hold the sell amount
|
|
7
|
+
exports.APTOS_RATE_SIMULATION_VALUE = '1';
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getAptosTransactionFees = void 0;
|
|
4
|
+
const utils_1 = require("../../utils");
|
|
5
|
+
const getAptosTransactionFees = ({ tradeQuote, stepIndex, }) => {
|
|
6
|
+
if (!(0, utils_1.isExecutableTradeQuote)(tradeQuote))
|
|
7
|
+
throw new Error('Unable to execute a trade rate quote');
|
|
8
|
+
const step = (0, utils_1.getExecutableTradeStep)(tradeQuote, stepIndex);
|
|
9
|
+
if (!step.feeData.networkFeeCryptoBaseUnit)
|
|
10
|
+
throw new Error('Missing network fee in quote');
|
|
11
|
+
return Promise.resolve(step.feeData.networkFeeCryptoBaseUnit);
|
|
12
|
+
};
|
|
13
|
+
exports.getAptosTransactionFees = getAptosTransactionFees;
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import type { GetUnsignedAptosTransactionArgs } from '../../types';
|
|
2
|
+
export declare const getUnsignedAptosTransaction: ({ stepIndex, tradeQuote, from, assertGetAptosChainAdapter, }: GetUnsignedAptosTransactionArgs) => Promise<import("@shapeshiftoss/hdwallet-core").AptosSignTx>;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getUnsignedAptosTransaction = void 0;
|
|
4
|
+
const utils_1 = require("../../utils");
|
|
5
|
+
const getUnsignedAptosTransaction = ({ stepIndex, tradeQuote, from, assertGetAptosChainAdapter, }) => {
|
|
6
|
+
if (!(0, utils_1.isExecutableTradeQuote)(tradeQuote))
|
|
7
|
+
throw new Error('Unable to execute a trade rate');
|
|
8
|
+
const step = (0, utils_1.getExecutableTradeStep)(tradeQuote, stepIndex);
|
|
9
|
+
const { accountNumber, sellAsset, transactionData } = step;
|
|
10
|
+
if (transactionData?.type !== 'aptos')
|
|
11
|
+
throw new Error('Missing aptos transactionData');
|
|
12
|
+
const adapter = assertGetAptosChainAdapter(sellAsset.chainId);
|
|
13
|
+
const { payload, gasUnitPrice, maxGasAmount } = transactionData;
|
|
14
|
+
return adapter.buildCustomApiTx({ from, accountNumber, payload, gasUnitPrice, maxGasAmount });
|
|
15
|
+
};
|
|
16
|
+
exports.getUnsignedAptosTransaction = getUnsignedAptosTransaction;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./constants"), exports);
|
|
18
|
+
__exportStar(require("./getAptosTransactionFees"), exports);
|
|
19
|
+
__exportStar(require("./getUnsignedAptosTransaction"), exports);
|
|
@@ -1,22 +1,35 @@
|
|
|
1
1
|
import type { EvmChainAdapter } from '@shapeshiftoss/chain-adapters';
|
|
2
2
|
import type { Asset } from '@shapeshiftoss/types';
|
|
3
3
|
import type { TxBuildData } from '../../types';
|
|
4
|
-
|
|
4
|
+
export declare const EVM_GAS_LIMIT_BUFFER = 1.2;
|
|
5
|
+
export declare const bufferGasLimit: (gasLimit: string) => string;
|
|
6
|
+
export declare const isPositiveGasLimit: (gasLimit: string | null | undefined) => gasLimit is string;
|
|
7
|
+
type EvmFeeArgs = {
|
|
5
8
|
adapter: EvmChainAdapter;
|
|
6
9
|
supportsEIP1559: boolean;
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
} | {
|
|
10
|
+
};
|
|
11
|
+
type EvmSimulationArgs = {
|
|
10
12
|
transactionData: Extract<TxBuildData, {
|
|
11
13
|
type: 'evm';
|
|
12
14
|
}>;
|
|
13
15
|
from: string;
|
|
14
|
-
gasLimitBuffer?: number;
|
|
15
16
|
stateOverride?: {
|
|
16
17
|
sellAsset: Asset;
|
|
17
18
|
sellAmountCryptoBaseUnit: string;
|
|
18
19
|
spenderAddress?: string;
|
|
19
20
|
};
|
|
20
|
-
}
|
|
21
|
+
};
|
|
22
|
+
type FixedGasLimitArgs = {
|
|
23
|
+
gasLimit: string;
|
|
24
|
+
};
|
|
25
|
+
type SimulatedGasLimitArgs = EvmSimulationArgs & {
|
|
26
|
+
providerGasLimit?: string | null;
|
|
27
|
+
};
|
|
28
|
+
type GetEvmNetworkFeeCryptoBaseUnitArgs = EvmFeeArgs & (FixedGasLimitArgs | SimulatedGasLimitArgs);
|
|
21
29
|
export declare const getEvmNetworkFeeCryptoBaseUnit: (args: GetEvmNetworkFeeCryptoBaseUnitArgs) => Promise<string>;
|
|
30
|
+
type GetEvmRateNetworkFeeCryptoBaseUnitArgs = EvmFeeArgs & {
|
|
31
|
+
providerGasLimit: string | null | undefined;
|
|
32
|
+
simulation?: EvmSimulationArgs;
|
|
33
|
+
};
|
|
34
|
+
export declare const getEvmRateNetworkFeeCryptoBaseUnit: ({ providerGasLimit, simulation, ...feeArgs }: GetEvmRateNetworkFeeCryptoBaseUnitArgs) => Promise<string>;
|
|
22
35
|
export {};
|
|
@@ -1,52 +1,62 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getEvmNetworkFeeCryptoBaseUnit = void 0;
|
|
3
|
+
exports.getEvmRateNetworkFeeCryptoBaseUnit = exports.getEvmNetworkFeeCryptoBaseUnit = exports.isPositiveGasLimit = exports.bufferGasLimit = exports.EVM_GAS_LIMIT_BUFFER = void 0;
|
|
4
4
|
const chain_adapters_1 = require("@shapeshiftoss/chain-adapters");
|
|
5
5
|
const utils_1 = require("@shapeshiftoss/utils");
|
|
6
6
|
const stateOverride_1 = require("./stateOverride");
|
|
7
|
+
exports.EVM_GAS_LIMIT_BUFFER = 1.2;
|
|
8
|
+
const bufferGasLimit = (gasLimit) => (0, utils_1.bnOrZero)(gasLimit).times(exports.EVM_GAS_LIMIT_BUFFER).toFixed(0);
|
|
9
|
+
exports.bufferGasLimit = bufferGasLimit;
|
|
10
|
+
const isPositiveGasLimit = (gasLimit) => (0, utils_1.bnOrZero)(gasLimit).gt(0);
|
|
11
|
+
exports.isPositiveGasLimit = isPositiveGasLimit;
|
|
12
|
+
const priceGasLimit = async ({ adapter, supportsEIP1559 }, gasLimit) => {
|
|
13
|
+
const { average: gasPrices } = await adapter.getGasFeeData();
|
|
14
|
+
return chain_adapters_1.evm.calcNetworkFeeCryptoBaseUnit({ ...gasPrices, supportsEIP1559, gasLimit });
|
|
15
|
+
};
|
|
16
|
+
// Prices the buffered limit, since the signer must hold enough to cover the full limit
|
|
7
17
|
const getEvmNetworkFeeCryptoBaseUnit = async (args) => {
|
|
8
18
|
const { adapter, supportsEIP1559 } = args;
|
|
9
|
-
// Price a provider gas limit with fresh gas prices - no on chain estimation
|
|
10
|
-
const priceProviderGasLimit = async (gasLimit) => {
|
|
11
|
-
const { average: gasPrices } = await adapter.getGasFeeData();
|
|
12
|
-
return chain_adapters_1.evm.calcNetworkFeeCryptoBaseUnit({ ...gasPrices, supportsEIP1559, gasLimit });
|
|
13
|
-
};
|
|
14
|
-
// Rate network fee: the caller passed a provider gas limit directly
|
|
15
19
|
if (!('transactionData' in args))
|
|
16
|
-
return
|
|
17
|
-
const { transactionData, from,
|
|
18
|
-
// Executable quote: the provider supplied a gas limit on the tx data, price it as-is
|
|
19
|
-
const providerGasLimit = transactionData.gasLimit;
|
|
20
|
-
if (providerGasLimit && (0, utils_1.bnOrZero)(providerGasLimit).gt(0)) {
|
|
21
|
-
return priceProviderGasLimit(providerGasLimit);
|
|
22
|
-
}
|
|
20
|
+
return priceGasLimit(args, args.gasLimit);
|
|
21
|
+
const { transactionData, from, providerGasLimit } = args;
|
|
23
22
|
const { to, data, value } = transactionData;
|
|
24
23
|
if (args.stateOverride) {
|
|
25
24
|
const { sellAsset, sellAmountCryptoBaseUnit, spenderAddress } = args.stateOverride;
|
|
26
|
-
|
|
27
|
-
//
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
spenderAddress,
|
|
34
|
-
value,
|
|
35
|
-
};
|
|
36
|
-
const stateOverride = await (0, stateOverride_1.getMinimalStateOverride)(overrideArgs);
|
|
37
|
-
if (!stateOverride)
|
|
25
|
+
const overrideArgs = { sellAsset, sellAmountCryptoBaseUnit, from, spenderAddress, value };
|
|
26
|
+
// null when the override can't be built (an undiscoverable storage slot or a failed read),
|
|
27
|
+
// undefined when nothing needs overriding or the simulation timed out
|
|
28
|
+
const overriddenGasLimit = await (0, stateOverride_1.withTimeout)((0, stateOverride_1.getMinimalStateOverride)(overrideArgs).then(stateOverride => stateOverride &&
|
|
29
|
+
(0, stateOverride_1.estimateGasWithStateOverride)({ ...overrideArgs, to, data, stateOverride }), () => null)).catch(error => {
|
|
30
|
+
// The missing state makes a plain estimate revert too, so only a timeout falls through to it
|
|
31
|
+
if (error instanceof stateOverride_1.EstimationTimeoutError)
|
|
38
32
|
return undefined;
|
|
39
|
-
|
|
40
|
-
})
|
|
33
|
+
throw error;
|
|
34
|
+
});
|
|
35
|
+
if (overriddenGasLimit === null && (0, exports.isPositiveGasLimit)(providerGasLimit)) {
|
|
36
|
+
transactionData.gasLimit = (0, exports.bufferGasLimit)(providerGasLimit);
|
|
37
|
+
return priceGasLimit(args, transactionData.gasLimit);
|
|
38
|
+
}
|
|
41
39
|
if (overriddenGasLimit) {
|
|
42
|
-
transactionData.gasLimit = (0,
|
|
43
|
-
return
|
|
40
|
+
transactionData.gasLimit = (0, exports.bufferGasLimit)(overriddenGasLimit);
|
|
41
|
+
return priceGasLimit(args, transactionData.gasLimit);
|
|
44
42
|
}
|
|
45
43
|
}
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
44
|
+
const { average: { chainSpecific: feeData }, } = await adapter.getFeeData({ to, value, chainSpecific: { from, data } });
|
|
45
|
+
transactionData.gasLimit = (0, exports.bufferGasLimit)(feeData.gasLimit);
|
|
46
|
+
return chain_adapters_1.evm.calcNetworkFeeCryptoBaseUnit({
|
|
47
|
+
...feeData,
|
|
48
|
+
supportsEIP1559,
|
|
49
|
+
gasLimit: transactionData.gasLimit,
|
|
50
|
+
});
|
|
51
51
|
};
|
|
52
52
|
exports.getEvmNetworkFeeCryptoBaseUnit = getEvmNetworkFeeCryptoBaseUnit;
|
|
53
|
+
// Rates price a provider's limit as given (it carries its own margin) and simulate without one
|
|
54
|
+
const getEvmRateNetworkFeeCryptoBaseUnit = ({ providerGasLimit, simulation, ...feeArgs }) => {
|
|
55
|
+
if ((0, exports.isPositiveGasLimit)(providerGasLimit)) {
|
|
56
|
+
return priceGasLimit(feeArgs, providerGasLimit);
|
|
57
|
+
}
|
|
58
|
+
if (simulation)
|
|
59
|
+
return (0, exports.getEvmNetworkFeeCryptoBaseUnit)({ ...feeArgs, ...simulation });
|
|
60
|
+
return Promise.reject(new Error('no gas limit to price'));
|
|
61
|
+
};
|
|
62
|
+
exports.getEvmRateNetworkFeeCryptoBaseUnit = getEvmRateNetworkFeeCryptoBaseUnit;
|