@paraswap/dex-lib 3.3.0 → 3.3.1-return-amount-pos.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/.idea/aws.xml +17 -0
- package/.idea/codeStyles/Project.xml +19 -0
- package/.idea/codeStyles/codeStyleConfig.xml +5 -0
- package/.idea/misc.xml +6 -0
- package/.idea/modules.xml +8 -0
- package/.idea/paraswap-dex-lib.iml +9 -0
- package/.idea/prettier.xml +7 -0
- package/.idea/vcs.xml +6 -0
- package/README.md +12 -0
- package/build/abi/AugustusV6.abi.json +395 -0
- package/build/abi/algebra/AlgebraPool.abi.json +727 -0
- package/build/abi/curve-v1/StableSwapFRXETH.json +889 -0
- package/build/abi/curve-v1/StableSwapWBETH.json +1223 -0
- package/build/abi/{wombat/pool.json → integral/relayer.json} +446 -587
- package/build/abi/sushiswap-v3/QuoterV2.json +267 -0
- package/build/abi/sushiswap-v3/RouterProcessor3.json +289 -0
- package/build/abi/uniswap-v3/UniswapV3Quoter.abi.json +193 -0
- package/build/abi/uniswap-v3/pancakeswap-v3/PancakeswapV3QuoterV2.abi.json +285 -0
- package/build/abi/uniswap-v3/pancakeswap-v3/PancakeswapV3Router.abi.json +583 -0
- package/build/abi/wBETH.json +1527 -0
- package/build/abi/woo-fi/WooFeeManager.abi.json +318 -0
- package/build/abi/woo-fi/WooPP.abi.json +548 -0
- package/build/abi/woo-fi/Wooracle.abi.json +260 -0
- package/build/dex/aave-v1/aave-v1.js +1 -0
- package/build/dex/aave-v1/aave-v1.js.map +1 -1
- package/build/dex/aave-v2/aave-v2.js +1 -0
- package/build/dex/aave-v2/aave-v2.js.map +1 -1
- package/build/dex/aave-v3/aave-v3.js +1 -0
- package/build/dex/aave-v3/aave-v3.js.map +1 -1
- package/build/dex/aave-v3/tokens/arbitrum.json +50 -0
- package/build/dex/aave-v3/tokens/avalanche.json +74 -0
- package/build/dex/aave-v3/tokens/fantom.json +62 -0
- package/build/dex/aave-v3/tokens/optimism.json +50 -0
- package/build/dex/aave-v3/tokens/polygon.json +116 -0
- package/build/dex/algebra/algebra-pool.d.ts +114 -0
- package/build/dex/algebra/algebra-pool.js +448 -0
- package/build/dex/algebra/algebra-pool.js.map +1 -0
- package/build/dex/algebra/algebra.js +4 -0
- package/build/dex/algebra/algebra.js.map +1 -1
- package/build/dex/angle-staked-stable/angle-staked-stable.d.ts +1 -1
- package/build/dex/angle-staked-stable/angle-staked-stable.js +1 -0
- package/build/dex/angle-staked-stable/angle-staked-stable.js.map +1 -1
- package/build/dex/bProtocol/bProtocol.js +5 -0
- package/build/dex/bProtocol/bProtocol.js.map +1 -1
- package/build/dex/balancer-v1/balancer-v1.js +4 -0
- package/build/dex/balancer-v1/balancer-v1.js.map +1 -1
- package/build/dex/balancer-v2/Gyro3Pool.d.ts +43 -0
- package/build/dex/balancer-v2/Gyro3Pool.js +160 -0
- package/build/dex/balancer-v2/Gyro3Pool.js.map +1 -0
- package/build/dex/balancer-v2/LinearMath.d.ts +88 -0
- package/build/dex/balancer-v2/LinearMath.js +285 -0
- package/build/dex/balancer-v2/LinearMath.js.map +1 -0
- package/build/dex/balancer-v2/LinearPool.d.ts +81 -0
- package/build/dex/balancer-v2/LinearPool.js +444 -0
- package/build/dex/balancer-v2/LinearPool.js.map +1 -0
- package/build/dex/balancer-v2/PhantomStablePool.d.ts +90 -0
- package/build/dex/balancer-v2/PhantomStablePool.js +418 -0
- package/build/dex/balancer-v2/PhantomStablePool.js.map +1 -0
- package/build/dex/balancer-v2/StableMath.d.ts +9 -0
- package/build/dex/balancer-v2/StableMath.js +272 -0
- package/build/dex/balancer-v2/StableMath.js.map +1 -0
- package/build/dex/balancer-v2/balancer-v2-pool.d.ts +140 -0
- package/build/dex/balancer-v2/balancer-v2-pool.js +647 -0
- package/build/dex/balancer-v2/balancer-v2-pool.js.map +1 -0
- package/build/dex/balancer-v2/balancer-v2.js +1 -0
- package/build/dex/balancer-v2/balancer-v2.js.map +1 -1
- package/build/dex/bancor/bancor.js +4 -0
- package/build/dex/bancor/bancor.js.map +1 -1
- package/build/dex/camelot/camelot.js +1 -0
- package/build/dex/camelot/camelot.js.map +1 -1
- package/build/dex/compound/compound.js +1 -0
- package/build/dex/compound/compound.js.map +1 -1
- package/build/dex/curve-v1/curve-v1.js +1 -0
- package/build/dex/curve-v1/curve-v1.js.map +1 -1
- package/build/dex/curve-v1/pools/frxETHpool.d.ts +7 -0
- package/build/dex/curve-v1/pools/frxETHpool.js +27 -0
- package/build/dex/curve-v1/pools/frxETHpool.js.map +1 -0
- package/build/dex/curve-v1/pools/wbETHpool.d.ts +29 -0
- package/build/dex/curve-v1/pools/wbETHpool.js +408 -0
- package/build/dex/curve-v1/pools/wbETHpool.js.map +1 -0
- package/build/dex/curve-v1-factory/curve-v1-factory.js +1 -0
- package/build/dex/curve-v1-factory/curve-v1-factory.js.map +1 -1
- package/build/dex/curve-v2/curve-v2.js +1 -0
- package/build/dex/curve-v2/curve-v2.js.map +1 -1
- package/build/dex/dexalot/dexalot.js +1 -0
- package/build/dex/dexalot/dexalot.js.map +1 -1
- package/build/dex/dodo-v1/dodo-v1.js +4 -0
- package/build/dex/dodo-v1/dodo-v1.js.map +1 -1
- package/build/dex/dodo-v2.js +4 -0
- package/build/dex/dodo-v2.js.map +1 -1
- package/build/dex/etherfi.js +2 -0
- package/build/dex/etherfi.js.map +1 -1
- package/build/dex/generic-rfq/generic-rfq.js +1 -0
- package/build/dex/generic-rfq/generic-rfq.js.map +1 -1
- package/build/dex/gmx/gmx.js +4 -0
- package/build/dex/gmx/gmx.js.map +1 -1
- package/build/dex/hashflow/hashflow.js +1 -0
- package/build/dex/hashflow/hashflow.js.map +1 -1
- package/build/dex/{trader-joe-v2-1-2 → integral}/config.d.ts +1 -1
- package/build/dex/integral/config.js +18 -0
- package/build/dex/integral/config.js.map +1 -0
- package/build/dex/{angle-transmuter/morphoOracle.d.ts → integral/integral-pool.d.ts} +12 -15
- package/build/dex/integral/integral-pool.js +67 -0
- package/build/dex/integral/integral-pool.js.map +1 -0
- package/build/dex/integral/integral.d.ts +48 -0
- package/build/dex/integral/integral.js +402 -0
- package/build/dex/integral/integral.js.map +1 -0
- package/build/dex/integral/types.d.ts +25 -0
- package/build/dex/integral/types.js +9 -0
- package/build/dex/integral/types.js.map +1 -0
- package/build/dex/jarvis-v6/jarvis-v6.js +1 -0
- package/build/dex/jarvis-v6/jarvis-v6.js.map +1 -1
- package/build/dex/jarvis.js +8 -0
- package/build/dex/jarvis.js.map +1 -1
- package/build/dex/kyberdmm/kyberdmm.js +4 -0
- package/build/dex/kyberdmm/kyberdmm.js.map +1 -1
- package/build/dex/lido/lido.js +5 -0
- package/build/dex/lido/lido.js.map +1 -1
- package/build/{abi/angle-transmuter/MorphoOracle.json → dex/lighter-v1/abi/erc20.json} +126 -97
- package/build/dex/lighter-v1/abi/factory.json +291 -0
- package/build/dex/lighter-v1/abi/order_book.json +594 -0
- package/build/dex/lighter-v1/abi/order_book_helper.json +176 -0
- package/build/dex/lighter-v1/abi/router.json +488 -0
- package/build/dex/{trader-joe-v2_1 → lighter-v1}/config.d.ts +1 -1
- package/build/dex/lighter-v1/config.js +17 -0
- package/build/dex/lighter-v1/config.js.map +1 -0
- package/build/dex/lighter-v1/constants.d.ts +2 -0
- package/build/dex/lighter-v1/constants.js +13 -0
- package/build/dex/lighter-v1/constants.js.map +1 -0
- package/build/dex/lighter-v1/lighter-v1-pool.d.ts +57 -0
- package/build/dex/lighter-v1/lighter-v1-pool.js +310 -0
- package/build/dex/lighter-v1/lighter-v1-pool.js.map +1 -0
- package/build/dex/{angle-transmuter/angle-transmuter.d.ts → lighter-v1/lighter-v1.d.ts} +17 -31
- package/build/dex/lighter-v1/lighter-v1.js +331 -0
- package/build/dex/lighter-v1/lighter-v1.js.map +1 -0
- package/build/dex/lighter-v1/types.d.ts +40 -0
- package/build/dex/lighter-v1/types.js +3 -0
- package/build/dex/lighter-v1/types.js.map +1 -0
- package/build/dex/maker-psm/maker-psm.js +1 -0
- package/build/dex/maker-psm/maker-psm.js.map +1 -1
- package/build/dex/maverick-v1/maverick-v1.js +4 -0
- package/build/dex/maverick-v1/maverick-v1.js.map +1 -1
- package/build/dex/nerve/nerve.js +4 -0
- package/build/dex/nerve/nerve.js.map +1 -1
- package/build/dex/onebit/onebit.js +5 -0
- package/build/dex/onebit/onebit.js.map +1 -1
- package/build/dex/pancakeswap-v3/pancakeswap-v3.js +4 -0
- package/build/dex/pancakeswap-v3/pancakeswap-v3.js.map +1 -1
- package/build/dex/pancakeswap-v3/types.d.ts +14 -0
- package/build/dex/pancakeswap-v3/types.js +3 -0
- package/build/dex/pancakeswap-v3/types.js.map +1 -0
- package/build/dex/paraswap-limit-orders/paraswap-limit-orders.js +1 -0
- package/build/dex/paraswap-limit-orders/paraswap-limit-orders.js.map +1 -1
- package/build/dex/platypus/platypus.js +17 -3
- package/build/dex/platypus/platypus.js.map +1 -1
- package/build/dex/polygon-migrator/polygon-migrator.js +1 -0
- package/build/dex/polygon-migrator/polygon-migrator.js.map +1 -1
- package/build/dex/quick-perps/quick-perps.js +7 -1
- package/build/dex/quick-perps/quick-perps.js.map +1 -1
- package/build/dex/quickswap/camelot-v3.d.ts +6 -0
- package/build/dex/quickswap/camelot-v3.js +19 -0
- package/build/dex/quickswap/camelot-v3.js.map +1 -0
- package/build/dex/quickswap/zyberswap-v3.d.ts +6 -0
- package/build/dex/quickswap/zyberswap-v3.js +19 -0
- package/build/dex/quickswap/zyberswap-v3.js.map +1 -0
- package/build/dex/quickswap-v3.d.ts +21 -0
- package/build/dex/quickswap-v3.js +40 -0
- package/build/dex/quickswap-v3.js.map +1 -0
- package/build/dex/{angle-transmuter → ramses-v2}/config.d.ts +1 -1
- package/build/dex/ramses-v2/config.js +28 -0
- package/build/dex/ramses-v2/config.js.map +1 -0
- package/build/dex/ramses-v2/constants.d.ts +28 -0
- package/build/dex/ramses-v2/constants.js +35 -0
- package/build/dex/ramses-v2/constants.js.map +1 -0
- package/build/dex/ramses-v2/contract-math/BitMath.d.ts +4 -0
- package/build/dex/ramses-v2/contract-math/BitMath.js +93 -0
- package/build/dex/ramses-v2/contract-math/BitMath.js.map +1 -0
- package/build/dex/ramses-v2/contract-math/FixedPoint128.d.ts +3 -0
- package/build/dex/ramses-v2/contract-math/FixedPoint128.js +8 -0
- package/build/dex/ramses-v2/contract-math/FixedPoint128.js.map +1 -0
- package/build/dex/ramses-v2/contract-math/FixedPoint96.d.ts +4 -0
- package/build/dex/ramses-v2/contract-math/FixedPoint96.js +9 -0
- package/build/dex/ramses-v2/contract-math/FixedPoint96.js.map +1 -0
- package/build/dex/ramses-v2/contract-math/FullMath.d.ts +4 -0
- package/build/dex/ramses-v2/contract-math/FullMath.js +19 -0
- package/build/dex/ramses-v2/contract-math/FullMath.js.map +1 -0
- package/build/dex/ramses-v2/contract-math/LiquidityMath.d.ts +3 -0
- package/build/dex/ramses-v2/contract-math/LiquidityMath.js +22 -0
- package/build/dex/ramses-v2/contract-math/LiquidityMath.js.map +1 -0
- package/build/dex/ramses-v2/contract-math/Oracle.d.ts +10 -0
- package/build/dex/ramses-v2/contract-math/Oracle.js +133 -0
- package/build/dex/ramses-v2/contract-math/Oracle.js.map +1 -0
- package/build/dex/ramses-v2/contract-math/SqrtPriceMath.d.ts +10 -0
- package/build/dex/ramses-v2/contract-math/SqrtPriceMath.js +91 -0
- package/build/dex/ramses-v2/contract-math/SqrtPriceMath.js.map +1 -0
- package/build/dex/ramses-v2/contract-math/SwapMath.d.ts +8 -0
- package/build/dex/ramses-v2/contract-math/SwapMath.js +70 -0
- package/build/dex/ramses-v2/contract-math/SwapMath.js.map +1 -0
- package/build/dex/ramses-v2/contract-math/Tick.d.ts +7 -0
- package/build/dex/ramses-v2/contract-math/Tick.js +45 -0
- package/build/dex/ramses-v2/contract-math/Tick.js.map +1 -0
- package/build/dex/ramses-v2/contract-math/TickBitMap.d.ts +8 -0
- package/build/dex/ramses-v2/contract-math/TickBitMap.js +87 -0
- package/build/dex/ramses-v2/contract-math/TickBitMap.js.map +1 -0
- package/build/dex/ramses-v2/contract-math/TickMath.d.ts +8 -0
- package/build/dex/ramses-v2/contract-math/TickMath.js +162 -0
- package/build/dex/ramses-v2/contract-math/TickMath.js.map +1 -0
- package/build/dex/ramses-v2/contract-math/UnsafeMath.d.ts +3 -0
- package/build/dex/ramses-v2/contract-math/UnsafeMath.js +10 -0
- package/build/dex/ramses-v2/contract-math/UnsafeMath.js.map +1 -0
- package/build/dex/ramses-v2/contract-math/uniswap-v3-math.d.ts +18 -0
- package/build/dex/ramses-v2/contract-math/uniswap-v3-math.js +392 -0
- package/build/dex/ramses-v2/contract-math/uniswap-v3-math.js.map +1 -0
- package/build/dex/ramses-v2/contract-math/utils.d.ts +3 -0
- package/build/dex/ramses-v2/contract-math/utils.js +16 -0
- package/build/dex/ramses-v2/contract-math/utils.js.map +1 -0
- package/build/dex/ramses-v2/ramses-v2-pool.d.ts +42 -0
- package/build/dex/ramses-v2/ramses-v2-pool.js +307 -0
- package/build/dex/ramses-v2/ramses-v2-pool.js.map +1 -0
- package/build/dex/ramses-v2/ramses-v2.d.ts +61 -0
- package/build/dex/ramses-v2/ramses-v2.js +690 -0
- package/build/dex/ramses-v2/ramses-v2.js.map +1 -0
- package/build/dex/ramses-v2/types.d.ts +154 -0
- package/build/dex/ramses-v2/types.js +9 -0
- package/build/dex/ramses-v2/types.js.map +1 -0
- package/build/dex/ramses-v2/utils.d.ts +6 -0
- package/build/dex/ramses-v2/utils.js +71 -0
- package/build/dex/ramses-v2/utils.js.map +1 -0
- package/build/dex/smoothy/smoothy.js +1 -0
- package/build/dex/smoothy/smoothy.js.map +1 -1
- package/build/dex/solidly/forks-override/fvm.d.ts +20 -0
- package/build/dex/solidly/forks-override/fvm.js +42 -0
- package/build/dex/solidly/forks-override/fvm.js.map +1 -0
- package/build/dex/solidly/solidly.js +1 -0
- package/build/dex/solidly/solidly.js.map +1 -1
- package/build/dex/solidly-v3/solidly-v3.js +1 -0
- package/build/dex/solidly-v3/solidly-v3.js.map +1 -1
- package/build/dex/spark/spark.js +6 -0
- package/build/dex/spark/spark.js.map +1 -1
- package/build/dex/stable-pool/stable-pool.js +4 -0
- package/build/dex/stable-pool/stable-pool.js.map +1 -1
- package/build/dex/sushiswap-v3/config.d.ts +4 -0
- package/build/dex/sushiswap-v3/config.js +132 -0
- package/build/dex/sushiswap-v3/config.js.map +1 -0
- package/build/dex/sushiswap-v3/constants.d.ts +4 -0
- package/build/dex/sushiswap-v3/constants.js +32 -0
- package/build/dex/sushiswap-v3/constants.js.map +1 -0
- package/build/dex/sushiswap-v3/sushiswap-v3-original.d.ts +56 -0
- package/build/dex/sushiswap-v3/sushiswap-v3-original.js +598 -0
- package/build/dex/sushiswap-v3/sushiswap-v3-original.js.map +1 -0
- package/build/dex/sushiswap-v3/sushiswap-v3-pool.d.ts +1 -0
- package/build/dex/sushiswap-v3/sushiswap-v3-pool.js +6 -0
- package/build/dex/sushiswap-v3/sushiswap-v3-pool.js.map +1 -0
- package/build/dex/sushiswap-v3/sushiswap-v3.d.ts +21 -0
- package/build/dex/sushiswap-v3/sushiswap-v3.js +58 -0
- package/build/dex/sushiswap-v3/sushiswap-v3.js.map +1 -0
- package/build/dex/sushiswap-v3/token.d.ts +6 -0
- package/build/dex/sushiswap-v3/token.js +23 -0
- package/build/dex/sushiswap-v3/token.js.map +1 -0
- package/build/dex/sushiswap-v3/types.d.ts +15 -0
- package/build/dex/sushiswap-v3/types.js +18 -0
- package/build/dex/sushiswap-v3/types.js.map +1 -0
- package/build/dex/swaap-v1/swaap-v1.js +4 -0
- package/build/dex/swaap-v1/swaap-v1.js.map +1 -1
- package/build/dex/swaap-v2/swaap-v2.js +1 -0
- package/build/dex/swaap-v2/swaap-v2.js.map +1 -1
- package/build/dex/swell/swell.js +1 -0
- package/build/dex/swell/swell.js.map +1 -1
- package/build/dex/synthetix/synthetix.js +6 -0
- package/build/dex/synthetix/synthetix.js.map +1 -1
- package/build/dex/trader-joe-v2.1/trader-joe-v2.1.js +4 -0
- package/build/dex/trader-joe-v2.1/trader-joe-v2.1.js.map +1 -1
- package/build/dex/uniswap-v2/uniswap-v2.js +1 -0
- package/build/dex/uniswap-v2/uniswap-v2.js.map +1 -1
- package/build/dex/uniswap-v3/forks/pancakeswap-v3/pancakeswap-v3.d.ts +12 -0
- package/build/dex/uniswap-v3/forks/pancakeswap-v3/pancakeswap-v3.js +23 -0
- package/build/dex/uniswap-v3/forks/pancakeswap-v3/pancakeswap-v3.js.map +1 -0
- package/build/dex/uniswap-v3/uniswap-v3.js +4 -0
- package/build/dex/uniswap-v3/uniswap-v3.js.map +1 -1
- package/build/dex/uniswap-v3.js +4 -0
- package/build/dex/uniswap-v3.js.map +1 -1
- package/build/dex/weth/weth.js +1 -0
- package/build/dex/weth/weth.js.map +1 -1
- package/build/dex/wombat/wombat.js +4 -0
- package/build/dex/wombat/wombat.js.map +1 -1
- package/build/dex/woo-fi/config.d.ts +4 -0
- package/build/dex/woo-fi/config.js +141 -0
- package/build/dex/woo-fi/config.js.map +1 -0
- package/build/dex/woo-fi/constants.d.ts +5 -0
- package/build/dex/woo-fi/constants.js +20 -0
- package/build/dex/woo-fi/constants.js.map +1 -0
- package/build/dex/woo-fi/types.d.ts +48 -0
- package/build/dex/woo-fi/types.js +3 -0
- package/build/dex/woo-fi/types.js.map +1 -0
- package/build/dex/woo-fi/woo-fi-decimal-math.d.ts +14 -0
- package/build/dex/woo-fi/woo-fi-decimal-math.js +42 -0
- package/build/dex/woo-fi/woo-fi-decimal-math.js.map +1 -0
- package/build/dex/woo-fi/woo-fi-math.d.ts +31 -0
- package/build/dex/woo-fi/woo-fi-math.js +300 -0
- package/build/dex/woo-fi/woo-fi-math.js.map +1 -0
- package/build/dex/woo-fi/woo-fi.d.ts +65 -0
- package/build/dex/woo-fi/woo-fi.js +480 -0
- package/build/dex/woo-fi/woo-fi.js.map +1 -0
- package/build/dex/woo-fi-v2/woo-fi-v2.js +4 -0
- package/build/dex/woo-fi-v2/woo-fi-v2.js.map +1 -1
- package/build/dex/wsteth/wsteth.js +8 -1
- package/build/dex/wsteth/wsteth.js.map +1 -1
- package/build/dex/zerox/index.js +1 -0
- package/build/dex/zerox/index.js.map +1 -1
- package/build/executor/Executor01BytecodeBuilder.js +4 -1
- package/build/executor/Executor01BytecodeBuilder.js.map +1 -1
- package/build/executor/Executor02BytecodeBuilder.js +5 -1
- package/build/executor/Executor02BytecodeBuilder.js.map +1 -1
- package/build/executor/ExecutorBytecodeBuilder.d.ts +1 -1
- package/build/executor/ExecutorBytecodeBuilder.js +5 -4
- package/build/executor/ExecutorBytecodeBuilder.js.map +1 -1
- package/build/executor/ExecutorDetector.d.ts +1 -1
- package/build/executor/ExecutorDetector.js.map +1 -1
- package/build/executor/IExecutorBytecodeBuilder.d.ts +6 -0
- package/build/executor/IExecutorBytecodeBuilder.js +3 -0
- package/build/executor/IExecutorBytecodeBuilder.js.map +1 -0
- package/build/executor/constants.d.ts +3 -1
- package/build/executor/constants.js +4 -2
- package/build/executor/constants.js.map +1 -1
- package/build/executor/utils.d.ts +2 -0
- package/build/executor/utils.js +30 -0
- package/build/executor/utils.js.map +1 -0
- package/build/types.d.ts +1 -0
- package/package.json +1 -1
- package/src/dex/aave-v1/aave-v1.ts +1 -0
- package/src/dex/aave-v2/aave-v2.ts +1 -0
- package/src/dex/aave-v3/aave-v3.ts +1 -0
- package/src/dex/algebra/algebra.ts +9 -0
- package/src/dex/angle-staked-stable/angle-staked-stable.ts +2 -1
- package/src/dex/bProtocol/bProtocol.ts +8 -0
- package/src/dex/balancer-v1/balancer-v1.ts +9 -0
- package/src/dex/balancer-v2/balancer-v2.ts +3 -2
- package/src/dex/bancor/bancor.ts +8 -0
- package/src/dex/camelot/camelot.ts +1 -0
- package/src/dex/compound/compound.ts +1 -0
- package/src/dex/curve-v1/curve-v1.ts +1 -0
- package/src/dex/curve-v1-factory/curve-v1-factory.ts +1 -0
- package/src/dex/curve-v2/curve-v2.ts +1 -0
- package/src/dex/dexalot/dexalot.ts +1 -0
- package/src/dex/dodo-v1/dodo-v1.ts +9 -0
- package/src/dex/dodo-v2.ts +9 -0
- package/src/dex/etherfi.ts +2 -0
- package/src/dex/generic-rfq/generic-rfq.ts +1 -0
- package/src/dex/gmx/gmx.ts +8 -0
- package/src/dex/hashflow/hashflow.ts +1 -0
- package/src/dex/jarvis-v6/jarvis-v6.ts +1 -0
- package/src/dex/jarvis.ts +14 -0
- package/src/dex/kyberdmm/kyberdmm.ts +9 -0
- package/src/dex/lido/lido.ts +8 -0
- package/src/dex/maker-psm/maker-psm.ts +1 -0
- package/src/dex/maverick-v1/maverick-v1.ts +9 -0
- package/src/dex/nerve/nerve.ts +8 -0
- package/src/dex/onebit/onebit.ts +8 -0
- package/src/dex/pancakeswap-v3/pancakeswap-v3.ts +9 -0
- package/src/dex/paraswap-limit-orders/paraswap-limit-orders.ts +1 -0
- package/src/dex/platypus/platypus.ts +20 -3
- package/src/dex/polygon-migrator/polygon-migrator.ts +1 -0
- package/src/dex/quick-perps/quick-perps.ts +11 -1
- package/src/dex/smoothy/smoothy.ts +1 -0
- package/src/dex/solidly/solidly.ts +1 -0
- package/src/dex/solidly-v3/solidly-v3.ts +1 -1
- package/src/dex/spark/spark.ts +10 -0
- package/src/dex/stable-pool/stable-pool.ts +8 -0
- package/src/dex/swaap-v1/swaap-v1.ts +9 -0
- package/src/dex/swaap-v2/swaap-v2.ts +1 -0
- package/src/dex/swell/swell.ts +1 -0
- package/src/dex/synthetix/synthetix.ts +11 -0
- package/src/dex/trader-joe-v2.1/trader-joe-v2.1.ts +9 -0
- package/src/dex/uniswap-v2/uniswap-v2.ts +1 -0
- package/src/dex/uniswap-v3/uniswap-v3.ts +9 -0
- package/src/dex/uniswap-v3.ts +9 -0
- package/src/dex/weth/weth.ts +1 -0
- package/src/dex/wombat/wombat.ts +9 -0
- package/src/dex/woo-fi-v2/woo-fi-v2.ts +5 -0
- package/src/dex/wsteth/wsteth.ts +13 -4
- package/src/dex/zerox/index.ts +1 -0
- package/src/executor/Executor01BytecodeBuilder.ts +8 -1
- package/src/executor/Executor02BytecodeBuilder.ts +13 -0
- package/src/executor/ExecutorBytecodeBuilder.ts +6 -1
- package/src/executor/ExecutorDetector.ts +3 -2
- package/src/executor/constants.ts +4 -1
- package/src/executor/executor01-bytecode-builder-e2e.test.ts +39 -0
- package/src/executor/utils.ts +44 -0
- package/src/types.ts +1 -0
- package/tests/constants-e2e.ts +6 -1
- package/build/abi/Redstone.json +0 -739
- package/build/abi/angle-transmuter/MorphoVault.json +0 -2506
- package/build/abi/angle-transmuter/Pyth.json +0 -1534
- package/build/abi/angle-transmuter/Transmuter.json +0 -1711
- package/build/abi/idle-dao/idle-cdo-factory.json +0 -38
- package/build/abi/idle-dao/idle-cdo.json +0 -1245
- package/build/abi/pharaoh/PharaohPool.abi.json +0 -1582
- package/build/abi/smardex/smardex-factory.json +0 -185
- package/build/abi/smardex/smardex-pool.json +0 -578
- package/build/abi/smardex/smardex-router.json +0 -648
- package/build/abi/trader-joe-v2_1/FactoryABI.json +0 -1208
- package/build/abi/trader-joe-v2_1/PairABI.json +0 -1493
- package/build/abi/trader-joe-v2_1/RouterABI.json +0 -1489
- package/build/abi/trader-joe-v2_1/StateMulticall.json +0 -193
- package/build/dex/angle-transmuter/angle-transmuter-pool.d.ts +0 -61
- package/build/dex/angle-transmuter/angle-transmuter-pool.js +0 -415
- package/build/dex/angle-transmuter/angle-transmuter-pool.js.map +0 -1
- package/build/dex/angle-transmuter/angle-transmuter.js +0 -262
- package/build/dex/angle-transmuter/angle-transmuter.js.map +0 -1
- package/build/dex/angle-transmuter/backedOracle.d.ts +0 -19
- package/build/dex/angle-transmuter/backedOracle.js +0 -56
- package/build/dex/angle-transmuter/backedOracle.js.map +0 -1
- package/build/dex/angle-transmuter/config.js +0 -30
- package/build/dex/angle-transmuter/config.js.map +0 -1
- package/build/dex/angle-transmuter/constants.d.ts +0 -77
- package/build/dex/angle-transmuter/constants.js +0 -94
- package/build/dex/angle-transmuter/constants.js.map +0 -1
- package/build/dex/angle-transmuter/morphoOracle.js +0 -179
- package/build/dex/angle-transmuter/morphoOracle.js.map +0 -1
- package/build/dex/angle-transmuter/morphoVault.d.ts +0 -19
- package/build/dex/angle-transmuter/morphoVault.js +0 -78
- package/build/dex/angle-transmuter/morphoVault.js.map +0 -1
- package/build/dex/angle-transmuter/pyth.d.ts +0 -19
- package/build/dex/angle-transmuter/pyth.js +0 -70
- package/build/dex/angle-transmuter/pyth.js.map +0 -1
- package/build/dex/angle-transmuter/redstone.d.ts +0 -20
- package/build/dex/angle-transmuter/redstone.js +0 -73
- package/build/dex/angle-transmuter/redstone.js.map +0 -1
- package/build/dex/angle-transmuter/transmuter.d.ts +0 -52
- package/build/dex/angle-transmuter/transmuter.js +0 -374
- package/build/dex/angle-transmuter/transmuter.js.map +0 -1
- package/build/dex/angle-transmuter/types.d.ts +0 -188
- package/build/dex/angle-transmuter/types.js +0 -33
- package/build/dex/angle-transmuter/types.js.map +0 -1
- package/build/dex/angle-transmuter/utils.d.ts +0 -9
- package/build/dex/angle-transmuter/utils.js +0 -252
- package/build/dex/angle-transmuter/utils.js.map +0 -1
- package/build/dex/idle-dao/config.d.ts +0 -6
- package/build/dex/idle-dao/config.js +0 -29
- package/build/dex/idle-dao/config.js.map +0 -1
- package/build/dex/idle-dao/idle-dao-pool.d.ts +0 -56
- package/build/dex/idle-dao/idle-dao-pool.js +0 -176
- package/build/dex/idle-dao/idle-dao-pool.js.map +0 -1
- package/build/dex/idle-dao/idle-dao-pooling-pool.d.ts +0 -16
- package/build/dex/idle-dao/idle-dao-pooling-pool.js +0 -57
- package/build/dex/idle-dao/idle-dao-pooling-pool.js.map +0 -1
- package/build/dex/idle-dao/idle-dao.d.ts +0 -52
- package/build/dex/idle-dao/idle-dao.js +0 -310
- package/build/dex/idle-dao/idle-dao.js.map +0 -1
- package/build/dex/idle-dao/tokens.d.ts +0 -16
- package/build/dex/idle-dao/tokens.js +0 -87
- package/build/dex/idle-dao/tokens.js.map +0 -1
- package/build/dex/idle-dao/types.d.ts +0 -37
- package/build/dex/idle-dao/types.js +0 -11
- package/build/dex/idle-dao/types.js.map +0 -1
- package/build/dex/idle-dao/utils.d.ts +0 -8
- package/build/dex/idle-dao/utils.js +0 -145
- package/build/dex/idle-dao/utils.js.map +0 -1
- package/build/dex/smardex/subgraph-queries.d.ts +0 -1
- package/build/dex/smardex/subgraph-queries.js +0 -17
- package/build/dex/smardex/subgraph-queries.js.map +0 -1
- package/build/dex/smardex/usd-reserves.d.ts +0 -23
- package/build/dex/smardex/usd-reserves.js +0 -86
- package/build/dex/smardex/usd-reserves.js.map +0 -1
- package/build/dex/trader-joe-v2-1-2/config.js +0 -47
- package/build/dex/trader-joe-v2-1-2/config.js.map +0 -1
- package/build/dex/trader-joe-v2-1-2/constants.d.ts +0 -20
- package/build/dex/trader-joe-v2-1-2/constants.js +0 -22
- package/build/dex/trader-joe-v2-1-2/constants.js.map +0 -1
- package/build/dex/trader-joe-v2-1-2/math/index.d.ts +0 -37
- package/build/dex/trader-joe-v2-1-2/math/index.js +0 -291
- package/build/dex/trader-joe-v2-1-2/math/index.js.map +0 -1
- package/build/dex/trader-joe-v2-1-2/trader-joe-v2-1-2-pool.d.ts +0 -60
- package/build/dex/trader-joe-v2-1-2/trader-joe-v2-1-2-pool.js +0 -248
- package/build/dex/trader-joe-v2-1-2/trader-joe-v2-1-2-pool.js.map +0 -1
- package/build/dex/trader-joe-v2-1-2/trader-joe-v2-1-2.d.ts +0 -53
- package/build/dex/trader-joe-v2-1-2/trader-joe-v2-1-2.js +0 -307
- package/build/dex/trader-joe-v2-1-2/trader-joe-v2-1-2.js.map +0 -1
- package/build/dex/trader-joe-v2-1-2/types.d.ts +0 -82
- package/build/dex/trader-joe-v2-1-2/types.js +0 -9
- package/build/dex/trader-joe-v2-1-2/types.js.map +0 -1
- package/build/dex/trader-joe-v2_1/config.js +0 -47
- package/build/dex/trader-joe-v2_1/config.js.map +0 -1
- package/build/dex/trader-joe-v2_1/constants.d.ts +0 -20
- package/build/dex/trader-joe-v2_1/constants.js +0 -22
- package/build/dex/trader-joe-v2_1/constants.js.map +0 -1
- package/build/dex/trader-joe-v2_1/math/index.d.ts +0 -37
- package/build/dex/trader-joe-v2_1/math/index.js +0 -291
- package/build/dex/trader-joe-v2_1/math/index.js.map +0 -1
- package/build/dex/trader-joe-v2_1/trader-joe-v2.1.d.ts +0 -0
- package/build/dex/trader-joe-v2_1/trader-joe-v2.1.js +0 -384
- package/build/dex/trader-joe-v2_1/trader-joe-v2.1.js.map +0 -1
- package/build/dex/trader-joe-v2_1/trader-joe-v2_1-pool.d.ts +0 -60
- package/build/dex/trader-joe-v2_1/trader-joe-v2_1-pool.js +0 -247
- package/build/dex/trader-joe-v2_1/trader-joe-v2_1-pool.js.map +0 -1
- package/build/dex/trader-joe-v2_1/trader-joe-v2_1.d.ts +0 -53
- package/build/dex/trader-joe-v2_1/trader-joe-v2_1.js +0 -307
- package/build/dex/trader-joe-v2_1/trader-joe-v2_1.js.map +0 -1
- package/build/dex/trader-joe-v2_1/types.d.ts +0 -82
- package/build/dex/trader-joe-v2_1/types.js +0 -9
- package/build/dex/trader-joe-v2_1/types.js.map +0 -1
- package/build/dex/wombat/wombat-pool-poller.d.ts +0 -22
- package/build/dex/wombat/wombat-pool-poller.js +0 -164
- package/build/dex/wombat/wombat-pool-poller.js.map +0 -1
- package/build/dex-helper/Cache.d.ts +0 -31
- package/build/dex-helper/Cache.js +0 -106
- package/build/dex-helper/Cache.js.map +0 -1
- package/build/dex-helper/RedisBatcher.d.ts +0 -20
- package/build/dex-helper/RedisBatcher.js +0 -75
- package/build/dex-helper/RedisBatcher.js.map +0 -1
- package/build/dex-helper/RedisWrapper.d.ts +0 -37
- package/build/dex-helper/RedisWrapper.js +0 -165
- package/build/dex-helper/RedisWrapper.js.map +0 -1
|
@@ -12,6 +12,7 @@ import { SimpleExchange } from '../simple-exchange';
|
|
|
12
12
|
import StablePoolABI from '../../abi/StablePool.json';
|
|
13
13
|
import { IDexHelper } from '../../dex-helper';
|
|
14
14
|
import { StablePoolFunctions, StablePoolData, StablePoolParam } from './types';
|
|
15
|
+
import { extractReturnAmountPosition } from '../../executor/utils';
|
|
15
16
|
|
|
16
17
|
export class StablePool
|
|
17
18
|
extends SimpleExchange
|
|
@@ -123,6 +124,13 @@ export class StablePool
|
|
|
123
124
|
dexFuncHasRecipient: false,
|
|
124
125
|
exchangeData: swapData,
|
|
125
126
|
targetExchange: exchange,
|
|
127
|
+
returnAmountPos:
|
|
128
|
+
side === SwapSide.SELL
|
|
129
|
+
? extractReturnAmountPosition(
|
|
130
|
+
this.exchangeRouterInterface,
|
|
131
|
+
StablePoolFunctions.swap,
|
|
132
|
+
)
|
|
133
|
+
: undefined,
|
|
126
134
|
};
|
|
127
135
|
}
|
|
128
136
|
}
|
|
@@ -41,6 +41,7 @@ import {
|
|
|
41
41
|
import { SwaapV1Pool } from './swaap-v1-pool';
|
|
42
42
|
import PoolABI from '../../abi/swaap-v1/pool.json';
|
|
43
43
|
import { PoolQuotations } from './libraries/PoolQuotations';
|
|
44
|
+
import { extractReturnAmountPosition } from '../../executor/utils';
|
|
44
45
|
|
|
45
46
|
export class SwaapV1 extends SimpleExchange implements IDex<SwaapV1Data> {
|
|
46
47
|
static readonly poolInterface = new Interface(PoolABI);
|
|
@@ -286,6 +287,14 @@ export class SwaapV1 extends SimpleExchange implements IDex<SwaapV1Data> {
|
|
|
286
287
|
dexFuncHasRecipient: false,
|
|
287
288
|
exchangeData: swapData,
|
|
288
289
|
targetExchange: data.pool,
|
|
290
|
+
returnAmountPos:
|
|
291
|
+
side === SwapSide.SELL
|
|
292
|
+
? extractReturnAmountPosition(
|
|
293
|
+
SwaapV1.poolInterface,
|
|
294
|
+
functionName,
|
|
295
|
+
'tokenAmountOut',
|
|
296
|
+
)
|
|
297
|
+
: undefined,
|
|
289
298
|
};
|
|
290
299
|
}
|
|
291
300
|
|
package/src/dex/swell/swell.ts
CHANGED
|
@@ -31,6 +31,7 @@ import { SynthetixState } from './synthetix-state';
|
|
|
31
31
|
// There are so many ABIs, where I need only one or two functions
|
|
32
32
|
// So, I decided to unite them into one combined interface
|
|
33
33
|
import CombinedSynthetixABI from '../../abi/synthetix/CombinedSynthetix.abi.json';
|
|
34
|
+
import { extractReturnAmountPosition } from '../../executor/utils';
|
|
34
35
|
|
|
35
36
|
export class Synthetix extends SimpleExchange implements IDex<SynthetixData> {
|
|
36
37
|
readonly hasConstantPriceLargeAmounts = false;
|
|
@@ -357,6 +358,16 @@ export class Synthetix extends SimpleExchange implements IDex<SynthetixData> {
|
|
|
357
358
|
dexFuncHasRecipient: false,
|
|
358
359
|
exchangeData: swapData,
|
|
359
360
|
targetExchange: exchange,
|
|
361
|
+
returnAmountPos:
|
|
362
|
+
side === SwapSide.SELL
|
|
363
|
+
? extractReturnAmountPosition(
|
|
364
|
+
this.combinedIface,
|
|
365
|
+
this.network === Network.OPTIMISM
|
|
366
|
+
? 'exchange'
|
|
367
|
+
: 'exchangeAtomically',
|
|
368
|
+
'amountReceived',
|
|
369
|
+
)
|
|
370
|
+
: undefined,
|
|
360
371
|
};
|
|
361
372
|
}
|
|
362
373
|
|
|
@@ -21,6 +21,7 @@ import {
|
|
|
21
21
|
TraderJoeV2RouterParam,
|
|
22
22
|
} from './types';
|
|
23
23
|
import { TRADERJOE_V2_1_ROUTER_ADDRESS } from './config';
|
|
24
|
+
import { extractReturnAmountPosition } from '../../executor/utils';
|
|
24
25
|
|
|
25
26
|
export class TraderJoeV21
|
|
26
27
|
extends SimpleExchange
|
|
@@ -166,6 +167,14 @@ export class TraderJoeV21
|
|
|
166
167
|
dexFuncHasRecipient: true,
|
|
167
168
|
exchangeData: swapData,
|
|
168
169
|
targetExchange: this.routerAddress,
|
|
170
|
+
returnAmountPos:
|
|
171
|
+
side === SwapSide.SELL
|
|
172
|
+
? extractReturnAmountPosition(
|
|
173
|
+
this.exchangeRouterInterface,
|
|
174
|
+
swapFunction,
|
|
175
|
+
'amountOut',
|
|
176
|
+
)
|
|
177
|
+
: undefined,
|
|
169
178
|
};
|
|
170
179
|
}
|
|
171
180
|
}
|
|
@@ -71,6 +71,7 @@ import {
|
|
|
71
71
|
import { OptimalSwapExchange } from '@paraswap/core';
|
|
72
72
|
import { OnPoolCreatedCallback, UniswapV3Factory } from './uniswap-v3-factory';
|
|
73
73
|
import { hexConcat, hexlify, hexZeroPad, hexValue } from 'ethers/lib/utils';
|
|
74
|
+
import { extractReturnAmountPosition } from '../../executor/utils';
|
|
74
75
|
|
|
75
76
|
type PoolPairsInfo = {
|
|
76
77
|
token0: Address;
|
|
@@ -1141,6 +1142,14 @@ export class UniswapV3
|
|
|
1141
1142
|
dexFuncHasRecipient: true,
|
|
1142
1143
|
exchangeData,
|
|
1143
1144
|
targetExchange: this.config.router,
|
|
1145
|
+
returnAmountPos:
|
|
1146
|
+
side === SwapSide.SELL
|
|
1147
|
+
? extractReturnAmountPosition(
|
|
1148
|
+
this.routerIface,
|
|
1149
|
+
swapFunction,
|
|
1150
|
+
'amountOut',
|
|
1151
|
+
)
|
|
1152
|
+
: undefined,
|
|
1144
1153
|
};
|
|
1145
1154
|
}
|
|
1146
1155
|
|
package/src/dex/uniswap-v3.ts
CHANGED
|
@@ -15,6 +15,7 @@ import {
|
|
|
15
15
|
import UniswapV3RouterABI from '../abi/UniswapV3Router.json';
|
|
16
16
|
import { NumberAsString } from '@paraswap/core';
|
|
17
17
|
import { IDexHelper } from '../dex-helper';
|
|
18
|
+
import { extractReturnAmountPosition } from '../executor/utils';
|
|
18
19
|
|
|
19
20
|
const UNISWAP_V3_ROUTER_ADDRESSES: { [network: number]: Address } = {
|
|
20
21
|
[Network.MAINNET]: '0xE592427A0AEce92De3Edee1F18E0157C05861564',
|
|
@@ -228,6 +229,14 @@ export class UniswapV3
|
|
|
228
229
|
dexFuncHasRecipient: true,
|
|
229
230
|
exchangeData,
|
|
230
231
|
targetExchange: this.routerAddress,
|
|
232
|
+
returnAmountPos:
|
|
233
|
+
side === SwapSide.SELL
|
|
234
|
+
? extractReturnAmountPosition(
|
|
235
|
+
this.exchangeRouterInterface,
|
|
236
|
+
swapFunction,
|
|
237
|
+
'amountOut',
|
|
238
|
+
)
|
|
239
|
+
: undefined,
|
|
231
240
|
};
|
|
232
241
|
}
|
|
233
242
|
}
|
package/src/dex/weth/weth.ts
CHANGED
package/src/dex/wombat/wombat.ts
CHANGED
|
@@ -32,6 +32,7 @@ import { WombatBmw } from './wombat-bmw';
|
|
|
32
32
|
import { fromWad } from './utils';
|
|
33
33
|
import { WombatPool } from './wombat-pool';
|
|
34
34
|
import { StatePollingManager } from '../../lib/stateful-rpc-poller/state-polling-manager';
|
|
35
|
+
import { extractReturnAmountPosition } from '../../executor/utils';
|
|
35
36
|
|
|
36
37
|
export class Wombat extends SimpleExchange implements IDex<WombatData> {
|
|
37
38
|
// contract interfaces
|
|
@@ -339,6 +340,14 @@ export class Wombat extends SimpleExchange implements IDex<WombatData> {
|
|
|
339
340
|
dexFuncHasRecipient: true,
|
|
340
341
|
exchangeData: swapData,
|
|
341
342
|
targetExchange: exchange,
|
|
343
|
+
returnAmountPos:
|
|
344
|
+
side === SwapSide.SELL
|
|
345
|
+
? extractReturnAmountPosition(
|
|
346
|
+
Wombat.poolInterface,
|
|
347
|
+
'swap',
|
|
348
|
+
'actualToAmount',
|
|
349
|
+
)
|
|
350
|
+
: undefined,
|
|
342
351
|
};
|
|
343
352
|
}
|
|
344
353
|
|
|
@@ -28,6 +28,7 @@ import { addressDecode } from '../../lib/decoders';
|
|
|
28
28
|
import { ifaces } from './utils';
|
|
29
29
|
import { StatePollingManager } from '../../lib/stateful-rpc-poller/state-polling-manager';
|
|
30
30
|
import { solidityPack } from 'ethers/lib/utils';
|
|
31
|
+
import { extractReturnAmountPosition } from '../../executor/utils';
|
|
31
32
|
|
|
32
33
|
export class WooFiV2 extends SimpleExchange implements IDex<WooFiV2Data> {
|
|
33
34
|
readonly math: WooFiV2Math;
|
|
@@ -357,6 +358,10 @@ export class WooFiV2 extends SimpleExchange implements IDex<WooFiV2Data> {
|
|
|
357
358
|
exchangeData: swapData,
|
|
358
359
|
targetExchange: this.config.wooPPV2Address,
|
|
359
360
|
transferSrcTokenBeforeSwap: this.config.wooPPV2Address,
|
|
361
|
+
returnAmountPos:
|
|
362
|
+
side === SwapSide.SELL
|
|
363
|
+
? extractReturnAmountPosition(ifaces.PPV2, 'swap', 'realToAmount')
|
|
364
|
+
: undefined,
|
|
360
365
|
};
|
|
361
366
|
}
|
|
362
367
|
|
package/src/dex/wsteth/wsteth.ts
CHANGED
|
@@ -23,6 +23,7 @@ import { uint256ToBigInt } from '../../lib/decoders';
|
|
|
23
23
|
import { Utils } from '../../utils';
|
|
24
24
|
import WSTETH_ABI from '../../abi/wstETH.json';
|
|
25
25
|
import STETH_ABI from '../../abi/stETH.json';
|
|
26
|
+
import { extractReturnAmountPosition } from '../../executor/utils';
|
|
26
27
|
|
|
27
28
|
export class WstETH extends SimpleExchange implements IDex<WstETHData> {
|
|
28
29
|
static readonly wstETHIface = new Interface(WSTETH_ABI);
|
|
@@ -252,16 +253,24 @@ export class WstETH extends SimpleExchange implements IDex<WstETHData> {
|
|
|
252
253
|
data: WstETHData,
|
|
253
254
|
side: SwapSide,
|
|
254
255
|
): Promise<DexExchangeParam> {
|
|
255
|
-
const
|
|
256
|
-
srcToken.toLowerCase() === this.config.stETHAddress ? 'wrap' : 'unwrap'
|
|
257
|
-
|
|
258
|
-
|
|
256
|
+
const swapFunction =
|
|
257
|
+
srcToken.toLowerCase() === this.config.stETHAddress ? 'wrap' : 'unwrap';
|
|
258
|
+
const exchangeData = WstETH.wstETHIface.encodeFunctionData(swapFunction, [
|
|
259
|
+
srcAmount,
|
|
260
|
+
]);
|
|
259
261
|
|
|
260
262
|
return {
|
|
261
263
|
needWrapNative: this.needWrapNative,
|
|
262
264
|
dexFuncHasRecipient: false,
|
|
263
265
|
exchangeData,
|
|
264
266
|
targetExchange: this.config.wstETHAddress,
|
|
267
|
+
returnAmountPos:
|
|
268
|
+
side === SwapSide.SELL
|
|
269
|
+
? extractReturnAmountPosition(
|
|
270
|
+
WstETH.wstETHIface,
|
|
271
|
+
swapFunction,
|
|
272
|
+
)
|
|
273
|
+
: undefined,
|
|
265
274
|
};
|
|
266
275
|
}
|
|
267
276
|
|
package/src/dex/zerox/index.ts
CHANGED
|
@@ -4,7 +4,7 @@ import { OptimalRate } from '@paraswap/core';
|
|
|
4
4
|
import { isETHAddress } from '../utils';
|
|
5
5
|
import { DepositWithdrawReturn } from '../dex/weth/types';
|
|
6
6
|
import { Executors, Flag, SpecialDex } from './types';
|
|
7
|
-
import { BYTES_64_LENGTH } from './constants';
|
|
7
|
+
import { BYTES_64_LENGTH, DEFAULT_RETURN_AMOUNT_POS } from './constants';
|
|
8
8
|
import {
|
|
9
9
|
DexCallDataParams,
|
|
10
10
|
ExecutorBytecodeBuilder,
|
|
@@ -351,6 +351,11 @@ export class Executor01BytecodeBuilder extends ExecutorBytecodeBuilder<
|
|
|
351
351
|
const swap = priceRoute.bestRoute[routeIndex].swaps[swapIndex];
|
|
352
352
|
let { exchangeData, specialDexFlag } = exchangeParam;
|
|
353
353
|
|
|
354
|
+
const returnAmountPos =
|
|
355
|
+
exchangeParam.returnAmountPos !== undefined
|
|
356
|
+
? exchangeParam.returnAmountPos
|
|
357
|
+
: DEFAULT_RETURN_AMOUNT_POS;
|
|
358
|
+
|
|
354
359
|
let destTokenPos = 0;
|
|
355
360
|
if (checkDestTokenBalanceAfterSwap && !dontCheckBalanceAfterSwap) {
|
|
356
361
|
const destTokenAddr = isETHAddress(swap.destToken)
|
|
@@ -393,6 +398,8 @@ export class Executor01BytecodeBuilder extends ExecutorBytecodeBuilder<
|
|
|
393
398
|
destTokenPos,
|
|
394
399
|
specialDexFlag || SpecialDex.DEFAULT,
|
|
395
400
|
flag,
|
|
401
|
+
undefined,
|
|
402
|
+
returnAmountPos,
|
|
396
403
|
);
|
|
397
404
|
}
|
|
398
405
|
|
|
@@ -22,6 +22,7 @@ import {
|
|
|
22
22
|
ZEROS_20_BYTES,
|
|
23
23
|
ZEROS_28_BYTES,
|
|
24
24
|
ZEROS_4_BYTES,
|
|
25
|
+
DEFAULT_RETURN_AMOUNT_POS,
|
|
25
26
|
} from './constants';
|
|
26
27
|
import { assert } from 'ts-essentials';
|
|
27
28
|
|
|
@@ -276,6 +277,16 @@ export class Executor02BytecodeBuilder extends ExecutorBytecodeBuilder<
|
|
|
276
277
|
let { exchangeData, specialDexFlag, targetExchange, needWrapNative } =
|
|
277
278
|
exchangeParam;
|
|
278
279
|
|
|
280
|
+
const routeNeedsRootUnwrapEth = this.doesRouteNeedsRootUnwrapEth(
|
|
281
|
+
priceRoute,
|
|
282
|
+
exchangeParams,
|
|
283
|
+
);
|
|
284
|
+
|
|
285
|
+
const returnAmountPos =
|
|
286
|
+
exchangeParam.returnAmountPos !== undefined && !routeNeedsRootUnwrapEth // prevent returnAmoutPos optimisation if route needs root unwrap eth
|
|
287
|
+
? exchangeParam.returnAmountPos
|
|
288
|
+
: DEFAULT_RETURN_AMOUNT_POS;
|
|
289
|
+
|
|
279
290
|
const applyVerticalBranching = this.doesSwapNeedToApplyVerticalBranching(
|
|
280
291
|
priceRoute,
|
|
281
292
|
routeIndex,
|
|
@@ -343,6 +354,8 @@ export class Executor02BytecodeBuilder extends ExecutorBytecodeBuilder<
|
|
|
343
354
|
destTokenPos,
|
|
344
355
|
specialDexFlag || SpecialDex.DEFAULT,
|
|
345
356
|
flag,
|
|
357
|
+
undefined,
|
|
358
|
+
returnAmountPos,
|
|
346
359
|
);
|
|
347
360
|
}
|
|
348
361
|
|
|
@@ -25,6 +25,7 @@ import {
|
|
|
25
25
|
import { Executors, Flag, SpecialDex } from './types';
|
|
26
26
|
import { MAX_UINT, Network } from '../constants';
|
|
27
27
|
import { DexExchangeBuildParam, DexExchangeParam } from '../types';
|
|
28
|
+
import { ExecutorDetector } from './ExecutorDetector';
|
|
28
29
|
|
|
29
30
|
const {
|
|
30
31
|
utils: { hexlify, hexDataLength, hexConcat, hexZeroPad, solidityPack },
|
|
@@ -228,6 +229,7 @@ export abstract class ExecutorBytecodeBuilder<S = {}, D = {}> {
|
|
|
228
229
|
specialDexFlag: SpecialDex,
|
|
229
230
|
flag: Flag,
|
|
230
231
|
toAmountPos = 0,
|
|
232
|
+
returnAmountPos = DEFAULT_RETURN_AMOUNT_POS,
|
|
231
233
|
): string {
|
|
232
234
|
const builder =
|
|
233
235
|
this.type !== Executors.THREE
|
|
@@ -242,6 +244,7 @@ export abstract class ExecutorBytecodeBuilder<S = {}, D = {}> {
|
|
|
242
244
|
specialDexFlag,
|
|
243
245
|
flag,
|
|
244
246
|
toAmountPos,
|
|
247
|
+
returnAmountPos,
|
|
245
248
|
);
|
|
246
249
|
}
|
|
247
250
|
|
|
@@ -252,13 +255,15 @@ export abstract class ExecutorBytecodeBuilder<S = {}, D = {}> {
|
|
|
252
255
|
destTokenPos: number,
|
|
253
256
|
specialDexFlag: SpecialDex,
|
|
254
257
|
flag: Flag,
|
|
258
|
+
toAmountPos = 0, // not used for Executor01 and Executor02, just to follow the same interface
|
|
259
|
+
returnAmountPos = DEFAULT_RETURN_AMOUNT_POS,
|
|
255
260
|
) {
|
|
256
261
|
return solidityPack(EXECUTOR_01_02_FUNCTION_CALL_DATA_TYPES, [
|
|
257
262
|
tokenAddress, // token address
|
|
258
263
|
hexZeroPad(hexlify(hexDataLength(calldata) + BYTES_28_LENGTH), 4), // calldata length + bytes28(0)
|
|
259
264
|
hexZeroPad(hexlify(fromAmountPos), 2), // fromAmountPos
|
|
260
265
|
hexZeroPad(hexlify(destTokenPos), 2), // destTokenPos
|
|
261
|
-
hexZeroPad(hexlify(
|
|
266
|
+
hexZeroPad(hexlify(returnAmountPos), 1), // returnAmountPos
|
|
262
267
|
hexZeroPad(hexlify(specialDexFlag), 1), // special
|
|
263
268
|
hexZeroPad(hexlify(flag), 2), // flag
|
|
264
269
|
ZEROS_28_BYTES, // bytes28(0)
|
|
@@ -21,7 +21,7 @@ export class ExecutorDetector {
|
|
|
21
21
|
[RouteExecutionType.SINGLE_STEP]: Executors.ONE, // simpleSwap via Executor01
|
|
22
22
|
[RouteExecutionType.HORIZONTAL_SEQUENCE]: Executors.ONE, // multiSwap via Executor01
|
|
23
23
|
[RouteExecutionType.VERTICAL_BRANCH]: Executors.TWO, // simpleSwap with percentage on a path via Executor02
|
|
24
|
-
[RouteExecutionType.VERTICAL_BRANCH_HORIZONTAL_SEQUENCE]: Executors.TWO, // multiSwap with
|
|
24
|
+
[RouteExecutionType.VERTICAL_BRANCH_HORIZONTAL_SEQUENCE]: Executors.TWO, // multiSwap with percentages on paths via Executor02
|
|
25
25
|
// megaSwap via Executor02
|
|
26
26
|
[RouteExecutionType.NESTED_VERTICAL_BRANCH_HORIZONTAL_SEQUENCE]:
|
|
27
27
|
Executors.TWO,
|
|
@@ -46,7 +46,7 @@ export class ExecutorDetector {
|
|
|
46
46
|
this.wethBytecodeBuilder = new WETHBytecodeBuilder(this.dexHelper);
|
|
47
47
|
}
|
|
48
48
|
|
|
49
|
-
|
|
49
|
+
public getRouteExecutionType(priceRoute: OptimalRate): RouteExecutionType {
|
|
50
50
|
if (
|
|
51
51
|
priceRoute.bestRoute.length === 1 &&
|
|
52
52
|
priceRoute.bestRoute[0].percent === 100 &&
|
|
@@ -85,6 +85,7 @@ export class ExecutorDetector {
|
|
|
85
85
|
|
|
86
86
|
throw new Error('Route type is not supported yet');
|
|
87
87
|
}
|
|
88
|
+
|
|
88
89
|
detectSpecialExecutor(priceRoute: OptimalRate): Executors | null {
|
|
89
90
|
if (isSingleWrapRoute(priceRoute)) return Executors.WETH;
|
|
90
91
|
return null;
|
|
@@ -47,7 +47,10 @@ export const EXECUTOR_03_FUNCTION_CALL_DATA_TYPES: string[] = [
|
|
|
47
47
|
|
|
48
48
|
export const APPROVE_CALLDATA_DEST_TOKEN_POS = 68;
|
|
49
49
|
export const WRAP_UNWRAP_FROM_AMOUNT_POS = 4;
|
|
50
|
-
export const DEFAULT_RETURN_AMOUNT_POS =
|
|
50
|
+
export const DEFAULT_RETURN_AMOUNT_POS = 255;
|
|
51
|
+
|
|
52
|
+
export const RETURN_AMOUNT_POS_0 = 0;
|
|
53
|
+
export const RETURN_AMOUNT_POS_32 = 32;
|
|
51
54
|
|
|
52
55
|
// TODO-v6?: can it be removed after approval/cache task, because we are going to give approvals only once,
|
|
53
56
|
// therefore for any case initial allowance would be 0
|
|
@@ -183,6 +183,45 @@ describe('Executor01ByteCodeBuilder e2e tests', () => {
|
|
|
183
183
|
provider,
|
|
184
184
|
);
|
|
185
185
|
});
|
|
186
|
+
|
|
187
|
+
it('simpleSwap USDC -> ETH', async () => {
|
|
188
|
+
await testE2E(
|
|
189
|
+
tokens['USDC'],
|
|
190
|
+
tokens['ETH'],
|
|
191
|
+
holders['USDC'],
|
|
192
|
+
'100000000',
|
|
193
|
+
SwapSide.SELL,
|
|
194
|
+
dexKey,
|
|
195
|
+
ContractMethod.simpleSwap,
|
|
196
|
+
network,
|
|
197
|
+
provider,
|
|
198
|
+
);
|
|
199
|
+
});
|
|
200
|
+
});
|
|
201
|
+
|
|
202
|
+
describe('Etherfi', () => {
|
|
203
|
+
const dexKey = 'EtherFi';
|
|
204
|
+
|
|
205
|
+
const tokens = Tokens[network];
|
|
206
|
+
const holders = Holders[network];
|
|
207
|
+
const provider = new StaticJsonRpcProvider(
|
|
208
|
+
generateConfig(network).privateHttpProvider,
|
|
209
|
+
network,
|
|
210
|
+
);
|
|
211
|
+
|
|
212
|
+
it('simpleSwap eETH -> weETH', async () => {
|
|
213
|
+
await testE2E(
|
|
214
|
+
tokens['eETH'],
|
|
215
|
+
tokens['weETH'],
|
|
216
|
+
holders['eETH'],
|
|
217
|
+
'100000000000000000',
|
|
218
|
+
SwapSide.SELL,
|
|
219
|
+
dexKey,
|
|
220
|
+
ContractMethod.simpleSwap,
|
|
221
|
+
network,
|
|
222
|
+
provider,
|
|
223
|
+
);
|
|
224
|
+
});
|
|
186
225
|
});
|
|
187
226
|
|
|
188
227
|
describe('BalancerV2', () => {
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { FunctionFragment, Interface } from '@ethersproject/abi';
|
|
2
|
+
import { RETURN_AMOUNT_POS_0, RETURN_AMOUNT_POS_32 } from './constants';
|
|
3
|
+
|
|
4
|
+
export const extractReturnAmountPosition = (
|
|
5
|
+
iface: Interface,
|
|
6
|
+
functionName: string | FunctionFragment,
|
|
7
|
+
outputName = '',
|
|
8
|
+
): number => {
|
|
9
|
+
const func =
|
|
10
|
+
typeof functionName === 'string'
|
|
11
|
+
? iface.getFunction(functionName)
|
|
12
|
+
: functionName;
|
|
13
|
+
const outputs = func.outputs || [];
|
|
14
|
+
const index = outputs.findIndex(
|
|
15
|
+
({ name }) => name === outputName || (outputName === '' && name === null),
|
|
16
|
+
);
|
|
17
|
+
|
|
18
|
+
if (index < 0) {
|
|
19
|
+
throw new Error(
|
|
20
|
+
`Function ${functionName} was not found in the provided abi`,
|
|
21
|
+
);
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
if (index === 0) {
|
|
25
|
+
return RETURN_AMOUNT_POS_0;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
let position = RETURN_AMOUNT_POS_0;
|
|
29
|
+
let curIndex = 0;
|
|
30
|
+
while (curIndex < index) {
|
|
31
|
+
const output = outputs[curIndex];
|
|
32
|
+
|
|
33
|
+
if (output.type.includes('[]') || output.type.includes('struct')) {
|
|
34
|
+
throw new Error(
|
|
35
|
+
`extractReturnAmountPosition doesn't support outputs of type array or struct. Please define returnAmountPos manually for this case.`,
|
|
36
|
+
);
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
position += RETURN_AMOUNT_POS_32;
|
|
40
|
+
curIndex++;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
return position;
|
|
44
|
+
};
|
package/src/types.ts
CHANGED
|
@@ -170,6 +170,7 @@ export type DexExchangeParam = {
|
|
|
170
170
|
specialDexSupportsInsertFromAmount?: boolean;
|
|
171
171
|
swappedAmountNotPresentInExchangeData?: boolean;
|
|
172
172
|
preSwapUnwrapCalldata?: string;
|
|
173
|
+
returnAmountPos: number | undefined;
|
|
173
174
|
};
|
|
174
175
|
|
|
175
176
|
export type DexExchangeBuildParam = DexExchangeParam & {
|
package/tests/constants-e2e.ts
CHANGED
|
@@ -407,6 +407,10 @@ export const Tokens: {
|
|
|
407
407
|
address: '0x35fa164735182de50811e8e2e824cfb9b6118ac2',
|
|
408
408
|
decimals: 18,
|
|
409
409
|
},
|
|
410
|
+
weETH: {
|
|
411
|
+
address: '0xcd5fe23c85820f7b72d0926fc9b05b43e359b7ee',
|
|
412
|
+
decimals: 18,
|
|
413
|
+
},
|
|
410
414
|
},
|
|
411
415
|
[Network.ROPSTEN]: {
|
|
412
416
|
DAI: {
|
|
@@ -1375,6 +1379,7 @@ export const Holders: {
|
|
|
1375
1379
|
BNT: '0xf727e20e081aAE428E7c6bE07b156bB21ab587a7',
|
|
1376
1380
|
USDe: '0x74e6c48e667d698a4cf90665b6960a5bae39e603',
|
|
1377
1381
|
eETH: '0x0f1DfeF1a40557d279d0de6E49aB306891A638b8',
|
|
1382
|
+
weETH: '0xfB4cB868727D9622258bf2B26A8CFc95f6742669',
|
|
1378
1383
|
},
|
|
1379
1384
|
[Network.ROPSTEN]: {
|
|
1380
1385
|
ETH: '0x43262A12d8610AA70C15DbaeAC321d51613c9071',
|
|
@@ -1541,7 +1546,7 @@ export const Holders: {
|
|
|
1541
1546
|
LINK: '0x7f1fa204bb700853d36994da19f830b6ad18455c',
|
|
1542
1547
|
DMT: '0x40414f138eb2ef938e6c3629897ef99d4464d4e8',
|
|
1543
1548
|
PENDLE: '0x5bdf85216ec1e38d6458c870992a69e38e03f7ef',
|
|
1544
|
-
wstETH: '
|
|
1549
|
+
wstETH: '0x27edc7700f1820cb38ec3bbb84c542945f21b5a1',
|
|
1545
1550
|
EURA: '0x6dd7b830896b56812aa667bdd14b71c8b3252f8e',
|
|
1546
1551
|
stEUR: '0xE588611e7A2392507879E3be80531654b85C16aA',
|
|
1547
1552
|
USDA: '0xa86ff337db9107b54862d30d1a598f8be847b05e',
|