@paraswap/dex-lib 3.3.0 → 3.3.1-return-amount-pos.1
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 -4
- 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/idex.d.ts +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/router/simpleswap.js +6 -3
- package/build/router/simpleswap.js.map +1 -1
- package/build/types.d.ts +1 -0
- package/dex-template/__DexName__-e2e.test.ts.template +2 -9
- package/dex-template/__DexName__.ts.template +2 -29
- package/funding.json +5 -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 -5
- 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/idex.ts +5 -3
- 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/router/simpleswap.ts +7 -3
- 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
package/src/dex/onebit/onebit.ts
CHANGED
|
@@ -13,6 +13,7 @@ import { SimpleExchange } from '../simple-exchange';
|
|
|
13
13
|
import OnebitABI from '../../abi/Onebit.json';
|
|
14
14
|
import { IDexHelper } from '../../dex-helper';
|
|
15
15
|
import { OnebitData, OnebitFunctions, OnebitParam } from './types';
|
|
16
|
+
import { extractReturnAmountPosition } from '../../executor/utils';
|
|
16
17
|
|
|
17
18
|
export class Onebit
|
|
18
19
|
extends SimpleExchange
|
|
@@ -100,6 +101,13 @@ export class Onebit
|
|
|
100
101
|
dexFuncHasRecipient: true,
|
|
101
102
|
exchangeData: swapData,
|
|
102
103
|
targetExchange: data.router,
|
|
104
|
+
returnAmountPos:
|
|
105
|
+
_side === SwapSide.SELL
|
|
106
|
+
? extractReturnAmountPosition(
|
|
107
|
+
this.exchangeRouterInterface,
|
|
108
|
+
swapFunction,
|
|
109
|
+
)
|
|
110
|
+
: undefined,
|
|
103
111
|
};
|
|
104
112
|
}
|
|
105
113
|
}
|
|
@@ -61,6 +61,7 @@ import {
|
|
|
61
61
|
OnPoolCreatedCallback,
|
|
62
62
|
PancakeswapV3Factory,
|
|
63
63
|
} from './pancakeswap-v3-factory';
|
|
64
|
+
import { extractReturnAmountPosition } from '../../executor/utils';
|
|
64
65
|
|
|
65
66
|
type PoolPairsInfo = {
|
|
66
67
|
token0: Address;
|
|
@@ -894,6 +895,14 @@ export class PancakeswapV3
|
|
|
894
895
|
dexFuncHasRecipient: true,
|
|
895
896
|
exchangeData,
|
|
896
897
|
targetExchange: this.config.router,
|
|
898
|
+
returnAmountPos:
|
|
899
|
+
side === SwapSide.SELL
|
|
900
|
+
? extractReturnAmountPosition(
|
|
901
|
+
this.routerIface,
|
|
902
|
+
swapFunction,
|
|
903
|
+
'amountOut',
|
|
904
|
+
)
|
|
905
|
+
: undefined,
|
|
897
906
|
};
|
|
898
907
|
}
|
|
899
908
|
|
|
@@ -38,6 +38,7 @@ import PoolABI from '../../abi/platypus/pool.json';
|
|
|
38
38
|
import AvaxPoolABI from '../../abi/platypus/avax-pool.json';
|
|
39
39
|
import AssetABI from '../../abi/platypus/asset.json';
|
|
40
40
|
import OracleABI from '../../abi/platypus/oracle.json';
|
|
41
|
+
import { extractReturnAmountPosition } from '../../executor/utils';
|
|
41
42
|
|
|
42
43
|
export class Platypus extends SimpleExchange implements IDex<PlatypusData> {
|
|
43
44
|
static readonly erc20Interface = new Interface(ERC20ABI);
|
|
@@ -497,22 +498,34 @@ export class Platypus extends SimpleExchange implements IDex<PlatypusData> {
|
|
|
497
498
|
data: PlatypusData,
|
|
498
499
|
side: SwapSide,
|
|
499
500
|
): DexExchangeParam {
|
|
501
|
+
const iface = isETHAddress(srcToken)
|
|
502
|
+
? Platypus.avaxPoolInterface
|
|
503
|
+
: isETHAddress(destToken)
|
|
504
|
+
? Platypus.avaxPoolInterface
|
|
505
|
+
: Platypus.poolInterface;
|
|
506
|
+
|
|
507
|
+
const swapFunction = isETHAddress(srcToken)
|
|
508
|
+
? 'swapFromETH'
|
|
509
|
+
: isETHAddress(destToken)
|
|
510
|
+
? 'swapToETH'
|
|
511
|
+
: 'swap';
|
|
512
|
+
|
|
500
513
|
const swapData = isETHAddress(srcToken)
|
|
501
|
-
?
|
|
514
|
+
? iface.encodeFunctionData(swapFunction, [
|
|
502
515
|
destToken,
|
|
503
516
|
1,
|
|
504
517
|
recipient,
|
|
505
518
|
getLocalDeadlineAsFriendlyPlaceholder(),
|
|
506
519
|
])
|
|
507
520
|
: isETHAddress(destToken)
|
|
508
|
-
?
|
|
521
|
+
? iface.encodeFunctionData(swapFunction, [
|
|
509
522
|
srcToken,
|
|
510
523
|
srcAmount,
|
|
511
524
|
1,
|
|
512
525
|
recipient,
|
|
513
526
|
getLocalDeadlineAsFriendlyPlaceholder(),
|
|
514
527
|
])
|
|
515
|
-
:
|
|
528
|
+
: iface.encodeFunctionData(swapFunction, [
|
|
516
529
|
srcToken,
|
|
517
530
|
destToken,
|
|
518
531
|
srcAmount,
|
|
@@ -526,6 +539,10 @@ export class Platypus extends SimpleExchange implements IDex<PlatypusData> {
|
|
|
526
539
|
dexFuncHasRecipient: true,
|
|
527
540
|
exchangeData: swapData,
|
|
528
541
|
targetExchange: data.pool,
|
|
542
|
+
returnAmountPos:
|
|
543
|
+
side === SwapSide.SELL
|
|
544
|
+
? extractReturnAmountPosition(iface, swapFunction, 'actualToAmount')
|
|
545
|
+
: undefined,
|
|
529
546
|
};
|
|
530
547
|
}
|
|
531
548
|
|
|
@@ -24,6 +24,7 @@ import { QuickPerpsConfig, Adapters } from './config';
|
|
|
24
24
|
import { Vault } from './vault';
|
|
25
25
|
import ERC20ABI from '../../abi/erc20.json';
|
|
26
26
|
import { solidityPack } from 'ethers/lib/utils';
|
|
27
|
+
import { extractReturnAmountPosition } from '../../executor/utils';
|
|
27
28
|
|
|
28
29
|
const QuickPerpsGasCost = 300 * 1000;
|
|
29
30
|
|
|
@@ -228,7 +229,9 @@ export class QuickPerps extends SimpleExchange implements IDex<QuickPerpsData> {
|
|
|
228
229
|
data: QuickPerpsData,
|
|
229
230
|
side: SwapSide,
|
|
230
231
|
): DexExchangeParam {
|
|
231
|
-
const
|
|
232
|
+
const iface = Vault.interface;
|
|
233
|
+
const functionName = 'swap';
|
|
234
|
+
const swapData = iface.encodeFunctionData(functionName, [
|
|
232
235
|
srcToken,
|
|
233
236
|
destToken,
|
|
234
237
|
recipient,
|
|
@@ -241,6 +244,13 @@ export class QuickPerps extends SimpleExchange implements IDex<QuickPerpsData> {
|
|
|
241
244
|
targetExchange: this.params.vault,
|
|
242
245
|
swappedAmountNotPresentInExchangeData: true,
|
|
243
246
|
transferSrcTokenBeforeSwap: this.params.vault,
|
|
247
|
+
returnAmountPos:
|
|
248
|
+
side === SwapSide.SELL
|
|
249
|
+
? extractReturnAmountPosition(
|
|
250
|
+
iface,
|
|
251
|
+
functionName,
|
|
252
|
+
)
|
|
253
|
+
: undefined,
|
|
244
254
|
};
|
|
245
255
|
}
|
|
246
256
|
|
|
@@ -47,7 +47,6 @@ import { assert, DeepReadonly } from 'ts-essentials';
|
|
|
47
47
|
import { uniswapV3Math } from './contract-math/uniswap-v3-math';
|
|
48
48
|
import { Contract } from 'web3-eth-contract';
|
|
49
49
|
import { AbiItem } from 'web3-utils';
|
|
50
|
-
import { OptimalSwapExchange } from '@paraswap/core';
|
|
51
50
|
import { TickMath } from './contract-math/TickMath';
|
|
52
51
|
import { OnPoolCreatedCallback, SolidlyV3Factory } from './solidly-v3-factory';
|
|
53
52
|
|
|
@@ -725,6 +724,7 @@ export class SolidlyV3
|
|
|
725
724
|
dexFuncHasRecipient: true,
|
|
726
725
|
exchangeData: swapData,
|
|
727
726
|
targetExchange: data.poolAddress,
|
|
727
|
+
returnAmountPos: undefined,
|
|
728
728
|
};
|
|
729
729
|
}
|
|
730
730
|
|
package/src/dex/spark/spark.ts
CHANGED
|
@@ -24,6 +24,7 @@ import { Interface } from 'ethers/lib/utils';
|
|
|
24
24
|
import { SparkSDaiEventPool } from './spark-sdai-pool';
|
|
25
25
|
import { BI_POWS } from '../../bigint-constants';
|
|
26
26
|
import { SDAI_DEPOSIT_GAS_COST, SDAI_REDEEM_GAS_COST } from './constants';
|
|
27
|
+
import { extractReturnAmountPosition } from '../../executor/utils';
|
|
27
28
|
|
|
28
29
|
export class Spark
|
|
29
30
|
extends SimpleExchange
|
|
@@ -241,6 +242,15 @@ export class Spark
|
|
|
241
242
|
dexFuncHasRecipient: true,
|
|
242
243
|
exchangeData: swapData,
|
|
243
244
|
targetExchange: exchange,
|
|
245
|
+
returnAmountPos: isSell
|
|
246
|
+
? extractReturnAmountPosition(
|
|
247
|
+
this.sdaiInterface,
|
|
248
|
+
this.isDai(srcToken)
|
|
249
|
+
? SparkSDaiFunctions.deposit
|
|
250
|
+
: SparkSDaiFunctions.redeem,
|
|
251
|
+
this.isDai(srcToken) ? 'shares' : 'assets',
|
|
252
|
+
)
|
|
253
|
+
: undefined,
|
|
244
254
|
};
|
|
245
255
|
}
|
|
246
256
|
|
|
@@ -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
|