@paraswap/dex-lib 3.8.2 → 3.8.3-integral-dex
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/.vscode/launch.json +13 -0
- package/.vscode/settings.json +3 -0
- package/build/abi/AaveV1_lending_pool.json +27 -0
- package/build/abi/Uncompressor.json +250 -0
- package/build/abi/integral/factory.json +333 -0
- package/build/abi/integral/oracle.json +501 -0
- package/build/abi/integral/pool.json +1041 -0
- package/build/abi/integral/relayer.json +1536 -0
- package/build/abi/oswap/oswap.abi.json +452 -0
- package/build/abi/platypus/asset.json +490 -0
- package/build/abi/platypus/avax-pool.json +820 -0
- package/build/abi/platypus/oracle.json +119 -0
- package/build/abi/platypus/pool.json +677 -0
- package/build/abi/smardex/all/smardex-router.json +648 -0
- package/build/abi/smardex/layer-1/smardex-factory.json +242 -0
- package/build/abi/smardex/layer-1/smardex-pool.json +506 -0
- package/build/abi/smardex/layer-2/smardex-factory.json +185 -0
- package/build/abi/smardex/layer-2/smardex-pool.json +578 -0
- package/build/abi/swaap-v1/pool.json +1346 -0
- package/build/config.js +1 -1
- package/build/dex/aave-v1/aave-v1.d.ts +33 -0
- package/build/dex/aave-v1/aave-v1.js +158 -0
- package/build/dex/aave-v1/aave-v1.js.map +1 -0
- package/build/dex/aave-v1/config.d.ts +11 -0
- package/build/dex/aave-v1/config.js +20 -0
- package/build/dex/aave-v1/config.js.map +1 -0
- package/build/dex/aave-v1/tokens-mainnet.json +134 -0
- package/build/dex/aave-v1/tokens.d.ts +3 -0
- package/build/dex/aave-v1/tokens.js +50 -0
- package/build/dex/aave-v1/tokens.js.map +1 -0
- package/build/dex/aave-v1/types.d.ts +12 -0
- package/build/dex/aave-v1/types.js +3 -0
- package/build/dex/aave-v1/types.js.map +1 -0
- package/build/dex/bProtocol.d.ts +18 -0
- package/build/dex/bProtocol.js +39 -0
- package/build/dex/bProtocol.js.map +1 -0
- package/build/dex/bancor.d.ts +26 -0
- package/build/dex/bancor.js +58 -0
- package/build/dex/bancor.js.map +1 -0
- package/build/dex/compound.d.ts +18 -0
- package/build/dex/compound.js +46 -0
- package/build/dex/compound.js.map +1 -0
- package/build/dex/curve-v1-factory/config.js +10 -47
- package/build/dex/curve-v1-factory/config.js.map +1 -1
- package/build/dex/curve-v1-factory/curve-v1-factory.d.ts +2 -2
- package/build/dex/curve-v1-factory/curve-v1-factory.js +36 -96
- package/build/dex/curve-v1-factory/curve-v1-factory.js.map +1 -1
- package/build/dex/curve-v1-factory/price-handlers/functions/constants.js.map +1 -1
- package/build/dex/curve-v1-factory/price-handlers/functions/get_dx.js +1 -13
- package/build/dex/curve-v1-factory/price-handlers/functions/get_dx.js.map +1 -1
- package/build/dex/curve-v1-factory/state-polling-pools/custom-pool-polling.d.ts +2 -2
- package/build/dex/curve-v1-factory/state-polling-pools/custom-pool-polling.js +1 -1
- package/build/dex/curve-v1-factory/state-polling-pools/custom-pool-polling.js.map +1 -1
- package/build/dex/curve-v1-factory/state-polling-pools/factory-pool-polling.js +1 -1
- package/build/dex/curve-v1-factory/state-polling-pools/factory-pool-polling.js.map +1 -1
- package/build/dex/curve-v1-factory/state-polling-pools/pool-polling-base.d.ts +3 -4
- package/build/dex/curve-v1-factory/state-polling-pools/pool-polling-base.js +9 -24
- package/build/dex/curve-v1-factory/state-polling-pools/pool-polling-base.js.map +1 -1
- package/build/dex/curve-v1-factory/types.d.ts +4 -20
- package/build/dex/curve-v1-factory/types.js +3 -11
- package/build/dex/curve-v1-factory/types.js.map +1 -1
- package/build/dex/curve-v1-stable-ng/config.js +0 -18
- package/build/dex/curve-v1-stable-ng/config.js.map +1 -1
- package/build/dex/curve-v2.d.ts +58 -0
- package/build/dex/curve-v2.js +180 -0
- package/build/dex/curve-v2.js.map +1 -0
- package/build/dex/dodo-v1.d.ts +33 -0
- package/build/dex/dodo-v1.js +63 -0
- package/build/dex/dodo-v1.js.map +1 -0
- package/build/dex/etherfi/etherfi.d.ts +26 -0
- package/build/dex/etherfi/etherfi.js +96 -0
- package/build/dex/etherfi/etherfi.js.map +1 -0
- package/build/dex/index.js +21 -3
- package/build/dex/index.js.map +1 -1
- package/build/dex/integral/config.d.ts +4 -0
- package/build/dex/integral/config.js +20 -0
- package/build/dex/integral/config.js.map +1 -0
- package/build/dex/integral/context.d.ts +40 -0
- package/build/dex/integral/context.js +158 -0
- package/build/dex/integral/context.js.map +1 -0
- package/build/dex/integral/helpers.d.ts +17 -0
- package/build/dex/integral/helpers.js +157 -0
- package/build/dex/integral/helpers.js.map +1 -0
- package/build/dex/integral/integral-factory.d.ts +21 -0
- package/build/dex/integral/integral-factory.js +92 -0
- package/build/dex/integral/integral-factory.js.map +1 -0
- package/build/dex/integral/integral-pool.d.ts +46 -0
- package/build/dex/integral/integral-pool.js +143 -0
- package/build/dex/integral/integral-pool.js.map +1 -0
- package/build/dex/integral/integral-pricing.d.ts +18 -0
- package/build/dex/integral/integral-pricing.js +114 -0
- package/build/dex/integral/integral-pricing.js.map +1 -0
- package/build/dex/integral/integral-relayer.d.ts +39 -0
- package/build/dex/integral/integral-relayer.js +189 -0
- package/build/dex/integral/integral-relayer.js.map +1 -0
- package/build/dex/integral/integral-token.d.ts +24 -0
- package/build/dex/integral/integral-token.js +56 -0
- package/build/dex/integral/integral-token.js.map +1 -0
- package/build/dex/integral/integral.d.ts +41 -0
- package/build/dex/integral/integral.js +377 -0
- package/build/dex/integral/integral.js.map +1 -0
- package/build/dex/integral/types.d.ts +84 -0
- package/build/dex/integral/types.js +9 -0
- package/build/dex/integral/types.js.map +1 -0
- package/build/dex/integral/utils-e2e.d.ts +9 -0
- package/build/dex/integral/utils-e2e.js +131 -0
- package/build/dex/integral/utils-e2e.js.map +1 -0
- package/build/dex/integral/utils.d.ts +17 -0
- package/build/dex/integral/utils.js +94 -0
- package/build/dex/integral/utils.js.map +1 -0
- package/build/dex/lido.d.ts +19 -0
- package/build/dex/lido.js +42 -0
- package/build/dex/lido.js.map +1 -0
- package/build/dex/onebit.d.ts +25 -0
- package/build/dex/onebit.js +42 -0
- package/build/dex/onebit.js.map +1 -0
- package/build/dex/oswap/config.d.ts +5 -0
- package/build/dex/oswap/config.js +31 -0
- package/build/dex/oswap/config.js.map +1 -0
- package/build/dex/oswap/oswap-pool.d.ts +51 -0
- package/build/dex/oswap/oswap-pool.js +150 -0
- package/build/dex/oswap/oswap-pool.js.map +1 -0
- package/build/dex/oswap/oswap.d.ts +46 -0
- package/build/dex/oswap/oswap.js +266 -0
- package/build/dex/oswap/oswap.js.map +1 -0
- package/build/dex/oswap/types.d.ts +20 -0
- package/build/dex/oswap/types.js +3 -0
- package/build/dex/oswap/types.js.map +1 -0
- package/build/dex/paraswap-limit-orders/paraswap-limit-orders.js +0 -3
- package/build/dex/paraswap-limit-orders/paraswap-limit-orders.js.map +1 -1
- package/build/dex/platypus/asset.d.ts +14 -0
- package/build/dex/platypus/asset.js +97 -0
- package/build/dex/platypus/asset.js.map +1 -0
- package/build/dex/platypus/config.d.ts +11 -0
- package/build/dex/platypus/config.js +69 -0
- package/build/dex/platypus/config.js.map +1 -0
- package/build/dex/platypus/platypus.d.ts +62 -0
- package/build/dex/platypus/platypus.js +442 -0
- package/build/dex/platypus/platypus.js.map +1 -0
- package/build/dex/platypus/pool-avax.d.ts +8 -0
- package/build/dex/platypus/pool-avax.js +54 -0
- package/build/dex/platypus/pool-avax.js.map +1 -0
- package/build/dex/platypus/pool-base.d.ts +19 -0
- package/build/dex/platypus/pool-base.js +86 -0
- package/build/dex/platypus/pool-base.js.map +1 -0
- package/build/dex/platypus/pool-pure.d.ts +8 -0
- package/build/dex/platypus/pool-pure.js +37 -0
- package/build/dex/platypus/pool-pure.js.map +1 -0
- package/build/dex/platypus/pool-subscriber.d.ts +14 -0
- package/build/dex/platypus/pool-subscriber.js +167 -0
- package/build/dex/platypus/pool-subscriber.js.map +1 -0
- package/build/dex/platypus/pool.d.ts +8 -0
- package/build/dex/platypus/pool.js +58 -0
- package/build/dex/platypus/pool.js.map +1 -0
- package/build/dex/platypus/types.d.ts +92 -0
- package/build/dex/platypus/types.js +10 -0
- package/build/dex/platypus/types.js.map +1 -0
- package/build/dex/quickswap/spiritswap-v3.d.ts +6 -0
- package/build/dex/quickswap/spiritswap-v3.js +19 -0
- package/build/dex/quickswap/spiritswap-v3.js.map +1 -0
- package/build/dex/sdai/config.d.ts +11 -0
- package/build/dex/sdai/config.js +21 -0
- package/build/dex/sdai/config.js.map +1 -0
- package/build/dex/sdai/constants.d.ts +2 -0
- package/build/dex/sdai/constants.js +6 -0
- package/build/dex/sdai/constants.js.map +1 -0
- package/build/dex/sdai/scripts/validate-state.d.ts +1 -0
- package/build/dex/sdai/scripts/validate-state.js +102 -0
- package/build/dex/sdai/scripts/validate-state.js.map +1 -0
- package/build/dex/sdai/sdai-pool.d.ts +16 -0
- package/build/dex/sdai/sdai-pool.js +85 -0
- package/build/dex/sdai/sdai-pool.js.map +1 -0
- package/build/dex/sdai/sdai.d.ts +51 -0
- package/build/dex/sdai/sdai.js +172 -0
- package/build/dex/sdai/sdai.js.map +1 -0
- package/build/dex/sdai/types.d.ts +21 -0
- package/build/dex/sdai/types.js +11 -0
- package/build/dex/sdai/types.js.map +1 -0
- package/build/dex/sdai/utils.d.ts +4 -0
- package/build/dex/sdai/utils.js +39 -0
- package/build/dex/sdai/utils.js.map +1 -0
- package/build/dex/smardex/config.d.ts +4 -0
- package/build/dex/smardex/config.js +64 -0
- package/build/dex/smardex/config.js.map +1 -0
- package/build/dex/smardex/constants.d.ts +18 -0
- package/build/dex/smardex/constants.js +33 -0
- package/build/dex/smardex/constants.js.map +1 -0
- package/build/dex/smardex/sdk/constants.d.ts +6 -0
- package/build/dex/smardex/sdk/constants.js +13 -0
- package/build/dex/smardex/sdk/constants.js.map +1 -0
- package/build/dex/smardex/sdk/core.d.ts +113 -0
- package/build/dex/smardex/sdk/core.js +499 -0
- package/build/dex/smardex/sdk/core.js.map +1 -0
- package/build/dex/smardex/sdk/errors.d.ts +15 -0
- package/build/dex/smardex/sdk/errors.js +22 -0
- package/build/dex/smardex/sdk/errors.js.map +1 -0
- package/build/dex/smardex/sdk/types.d.ts +62 -0
- package/build/dex/smardex/sdk/types.js +3 -0
- package/build/dex/smardex/sdk/types.js.map +1 -0
- package/build/dex/smardex/sdk/utils.d.ts +44 -0
- package/build/dex/smardex/sdk/utils.js +133 -0
- package/build/dex/smardex/sdk/utils.js.map +1 -0
- package/build/dex/smardex/smardex-event-pool.d.ts +28 -0
- package/build/dex/smardex/smardex-event-pool.js +119 -0
- package/build/dex/smardex/smardex-event-pool.js.map +1 -0
- package/build/dex/smardex/smardex.d.ts +65 -0
- package/build/dex/smardex/smardex.js +519 -0
- package/build/dex/smardex/smardex.js.map +1 -0
- package/build/dex/smardex/types.d.ts +55 -0
- package/build/dex/smardex/types.js +3 -0
- package/build/dex/smardex/types.js.map +1 -0
- package/build/dex/smoothy.d.ts +26 -0
- package/build/dex/smoothy.js +48 -0
- package/build/dex/smoothy.js.map +1 -0
- package/build/dex/solidly/forks-override/cone.d.ts +22 -0
- package/build/dex/solidly/forks-override/cone.js +53 -0
- package/build/dex/solidly/forks-override/cone.js.map +1 -0
- package/build/dex/solidly/forks-override/solisnek.d.ts +8 -0
- package/build/dex/solidly/forks-override/solisnek.js +15 -0
- package/build/dex/solidly/forks-override/solisnek.js.map +1 -0
- package/build/dex/stable-pool.d.ts +28 -0
- package/build/dex/stable-pool.js +62 -0
- package/build/dex/stable-pool.js.map +1 -0
- package/build/dex/swaap-v1/config.d.ts +17 -0
- package/build/dex/swaap-v1/config.js +56 -0
- package/build/dex/swaap-v1/config.js.map +1 -0
- package/build/dex/swaap-v1/constants.d.ts +6 -0
- package/build/dex/swaap-v1/constants.js +17 -0
- package/build/dex/swaap-v1/constants.js.map +1 -0
- package/build/dex/swaap-v1/libraries/ChainlinkUtils.d.ts +25 -0
- package/build/dex/swaap-v1/libraries/ChainlinkUtils.js +62 -0
- package/build/dex/swaap-v1/libraries/ChainlinkUtils.js.map +1 -0
- package/build/dex/swaap-v1/libraries/Const.d.ts +18 -0
- package/build/dex/swaap-v1/libraries/Const.js +26 -0
- package/build/dex/swaap-v1/libraries/Const.js.map +1 -0
- package/build/dex/swaap-v1/libraries/GeometricBrownianMotion.d.ts +77 -0
- package/build/dex/swaap-v1/libraries/GeometricBrownianMotion.js +316 -0
- package/build/dex/swaap-v1/libraries/GeometricBrownianMotion.js.map +1 -0
- package/build/dex/swaap-v1/libraries/LogExpMath.d.ts +75 -0
- package/build/dex/swaap-v1/libraries/LogExpMath.js +418 -0
- package/build/dex/swaap-v1/libraries/LogExpMath.js.map +1 -0
- package/build/dex/swaap-v1/libraries/MathMMM.d.ts +185 -0
- package/build/dex/swaap-v1/libraries/MathMMM.js +453 -0
- package/build/dex/swaap-v1/libraries/MathMMM.js.map +1 -0
- package/build/dex/swaap-v1/libraries/Num.d.ts +31 -0
- package/build/dex/swaap-v1/libraries/Num.js +167 -0
- package/build/dex/swaap-v1/libraries/Num.js.map +1 -0
- package/build/dex/swaap-v1/libraries/PoolQuotations.d.ts +23 -0
- package/build/dex/swaap-v1/libraries/PoolQuotations.js +131 -0
- package/build/dex/swaap-v1/libraries/PoolQuotations.js.map +1 -0
- package/build/dex/swaap-v1/libraries/Struct.d.ts +56 -0
- package/build/dex/swaap-v1/libraries/Struct.js +3 -0
- package/build/dex/swaap-v1/libraries/Struct.js.map +1 -0
- package/build/dex/swaap-v1/swaap-v1-pool.d.ts +45 -0
- package/build/dex/swaap-v1/swaap-v1-pool.js +656 -0
- package/build/dex/swaap-v1/swaap-v1-pool.js.map +1 -0
- package/build/dex/swaap-v1/swaap-v1.d.ts +61 -0
- package/build/dex/swaap-v1/swaap-v1.js +369 -0
- package/build/dex/swaap-v1/swaap-v1.js.map +1 -0
- package/build/dex/swaap-v1/types.d.ts +106 -0
- package/build/dex/swaap-v1/types.js +9 -0
- package/build/dex/swaap-v1/types.js.map +1 -0
- package/build/dex/trader-joe-v2.1.d.ts +43 -0
- package/build/dex/trader-joe-v2.1.js +79 -0
- package/build/dex/trader-joe-v2.1.js.map +1 -0
- package/build/dex/uniswap-v3/contract-math/Oracle.js +4 -4
- package/build/dex/uniswap-v3/contract-math/Oracle.js.map +1 -1
- package/build/executor/compressor/Compressor.d.ts +23 -0
- package/build/executor/compressor/Compressor.js +144 -0
- package/build/executor/compressor/Compressor.js.map +1 -0
- package/build/executor/compressor/compress.d.ts +17 -0
- package/build/executor/compressor/compress.js +187 -0
- package/build/executor/compressor/compress.js.map +1 -0
- package/build/executor/compressor/compress_functions/addressSubstitution.d.ts +6 -0
- package/build/executor/compressor/compress_functions/addressSubstitution.js +29 -0
- package/build/executor/compressor/compress_functions/addressSubstitution.js.map +1 -0
- package/build/executor/compressor/compress_functions/addressSubstitutionFromObject.d.ts +10 -0
- package/build/executor/compressor/compress_functions/addressSubstitutionFromObject.js +40 -0
- package/build/executor/compressor/compress_functions/addressSubstitutionFromObject.js.map +1 -0
- package/build/executor/compressor/compress_functions/byteSubstitution.d.ts +11 -0
- package/build/executor/compressor/compress_functions/byteSubstitution.js +64 -0
- package/build/executor/compressor/compress_functions/byteSubstitution.js.map +1 -0
- package/build/executor/compressor/compress_functions/ffSubstitution.d.ts +7 -0
- package/build/executor/compressor/compress_functions/ffSubstitution.js +54 -0
- package/build/executor/compressor/compress_functions/ffSubstitution.js.map +1 -0
- package/build/executor/compressor/compress_functions/findLongestAndSubstitute.d.ts +8 -0
- package/build/executor/compressor/compress_functions/findLongestAndSubstitute.js +67 -0
- package/build/executor/compressor/compress_functions/findLongestAndSubstitute.js.map +1 -0
- package/build/executor/compressor/compress_functions/findLongestAndSubstitute_old.d.ts +8 -0
- package/build/executor/compressor/compress_functions/findLongestAndSubstitute_old.js +61 -0
- package/build/executor/compressor/compress_functions/findLongestAndSubstitute_old.js.map +1 -0
- package/build/executor/compressor/compress_functions/reverseAddressSubstitution.d.ts +6 -0
- package/build/executor/compressor/compress_functions/reverseAddressSubstitution.js +37 -0
- package/build/executor/compressor/compress_functions/reverseAddressSubstitution.js.map +1 -0
- package/build/executor/compressor/compress_functions/searchUnusedBytes.d.ts +9 -0
- package/build/executor/compressor/compress_functions/searchUnusedBytes.js +33 -0
- package/build/executor/compressor/compress_functions/searchUnusedBytes.js.map +1 -0
- package/build/executor/compressor/fetchSaved.d.ts +0 -0
- package/build/executor/compressor/fetchSaved.js +17 -0
- package/build/executor/compressor/fetchSaved.js.map +1 -0
- package/build/executor/compressor/utils/computeCostL2.d.ts +2 -0
- package/build/executor/compressor/utils/computeCostL2.js +14 -0
- package/build/executor/compressor/utils/computeCostL2.js.map +1 -0
- package/build/executor/compressor/utils/findLongestDuplicatedString.d.ts +2 -0
- package/build/executor/compressor/utils/findLongestDuplicatedString.js +30 -0
- package/build/executor/compressor/utils/findLongestDuplicatedString.js.map +1 -0
- package/build/executor/compressor/utils/getAllIndexes.d.ts +2 -0
- package/build/executor/compressor/utils/getAllIndexes.js +12 -0
- package/build/executor/compressor/utils/getAllIndexes.js.map +1 -0
- package/build/executor/compressor/utils/getByteForAddress.d.ts +2 -0
- package/build/executor/compressor/utils/getByteForAddress.js +14 -0
- package/build/executor/compressor/utils/getByteForAddress.js.map +1 -0
- package/build/executor/compressor/utils/intTo2Bytes.d.ts +2 -0
- package/build/executor/compressor/utils/intTo2Bytes.js +14 -0
- package/build/executor/compressor/utils/intTo2Bytes.js.map +1 -0
- package/build/executor/compressor/utils/intTo3Bytes.d.ts +2 -0
- package/build/executor/compressor/utils/intTo3Bytes.js +18 -0
- package/build/executor/compressor/utils/intTo3Bytes.js.map +1 -0
- package/build/executor/compressor/utils/intToByte.d.ts +2 -0
- package/build/executor/compressor/utils/intToByte.js +10 -0
- package/build/executor/compressor/utils/intToByte.js.map +1 -0
- package/build/generic-swap-transaction-builder.js +3 -1
- package/build/generic-swap-transaction-builder.js.map +1 -1
- package/build/router/simpleswap.js +3 -1
- package/build/router/simpleswap.js.map +1 -1
- package/package.json +2 -2
- package/src/abi/BProtocol.json +1155 -0
- package/src/abi/Jarvis.json +1172 -0
- package/src/abi/MStableAsset.json +1545 -0
- package/src/abi/OneInchLp.json +1304 -0
- package/src/abi/Onebit.json +736 -0
- package/src/abi/Shell.json +1294 -0
- package/src/abi/TraderJoeV2Router.json +50 -0
- package/src/abi/integral/factory.json +333 -0
- package/src/abi/integral/oracle.json +501 -0
- package/src/abi/integral/pool.json +1041 -0
- package/src/abi/integral/relayer.json +1536 -0
- package/src/abi/zrx.v2.json +1967 -0
- package/src/abi/zrx.v3.json +3454 -0
- package/src/abi/zrx.v4.json +2193 -0
- package/src/config.ts +1 -1
- package/src/dex/OneInchLp.ts +84 -0
- package/src/dex/bProtocol/bProtocol-e2e.test.ts +93 -0
- package/src/dex/bProtocol/bProtocol.ts +108 -0
- package/src/dex/bProtocol/types.ts +13 -0
- package/src/dex/curve-v1-factory/config.ts +10 -47
- package/src/dex/curve-v1-factory/curve-v1-factory-e2e.test.ts +16 -92
- package/src/dex/curve-v1-factory/curve-v1-factory-integration.test.ts +5 -125
- package/src/dex/curve-v1-factory/curve-v1-factory.ts +45 -137
- package/src/dex/curve-v1-factory/price-handlers/functions/constants.ts +2 -0
- package/src/dex/curve-v1-factory/price-handlers/functions/get_dx.ts +1 -24
- package/src/dex/curve-v1-factory/state-polling-pools/custom-pool-polling.ts +2 -3
- package/src/dex/curve-v1-factory/state-polling-pools/factory-pool-polling.ts +0 -1
- package/src/dex/curve-v1-factory/state-polling-pools/pool-polling-base.ts +10 -31
- package/src/dex/curve-v1-factory/types.ts +6 -22
- package/src/dex/curve-v1-stable-ng/config.ts +0 -18
- package/src/dex/curve-v1-stable-ng/curve-v1-stable-ng-e2e.test.ts +0 -17
- package/src/dex/index.ts +20 -3
- package/src/dex/integral/config.ts +20 -0
- package/src/dex/integral/context.ts +287 -0
- package/src/dex/integral/integral-e2e.test.ts +86 -0
- package/src/dex/integral/integral-events.test.ts +412 -0
- package/src/dex/integral/integral-factory.ts +146 -0
- package/src/dex/integral/integral-integration.test.ts +221 -0
- package/src/dex/integral/integral-pool.ts +198 -0
- package/src/dex/integral/integral-pricing.ts +190 -0
- package/src/dex/integral/integral-relayer.ts +285 -0
- package/src/dex/integral/integral-token.ts +95 -0
- package/src/dex/integral/integral.ts +523 -0
- package/src/dex/integral/test-artifacts/configs.json +1 -0
- package/src/dex/integral/test-artifacts/logs.json +1 -0
- package/src/dex/integral/test-artifacts/states.json +1 -0
- package/src/dex/integral/types.ts +88 -0
- package/src/dex/integral/utils-e2e.ts +194 -0
- package/src/dex/integral/utils.ts +146 -0
- package/src/dex/jarvis.ts +262 -0
- package/src/dex/mStable.ts +147 -0
- package/src/dex/onebit/onebit.ts +113 -0
- package/src/dex/onebit/types.ts +17 -0
- package/src/dex/paraswap-limit-orders/paraswap-limit-orders-e2e.test.ts +68 -152
- package/src/dex/paraswap-limit-orders/paraswap-limit-orders.ts +0 -3
- package/src/dex/shell.ts +84 -0
- package/src/dex/trader-joe-v2.ts +148 -0
- package/src/dex/uniswap-v3/contract-math/Oracle.ts +5 -4
- package/src/dex/zerox/config.ts +31 -0
- package/src/dex/zerox/index.ts +328 -0
- package/src/dex/zerox/order.ts +62 -0
- package/src/dex/zerox/types.ts +82 -0
- package/src/dex/zerox/zerox-e2e.test.ts +110 -0
- package/src/generic-swap-transaction-builder.ts +3 -1
- package/src/router/simpleswap.ts +3 -1
- package/tests/constants-e2e.ts +2 -2
- package/tests/utils-e2e.ts +0 -2
- package/.idea/aws.xml +0 -17
- package/.idea/codeStyles/Project.xml +0 -19
- package/.idea/codeStyles/codeStyleConfig.xml +0 -5
- package/.idea/misc.xml +0 -6
- package/.idea/modules.xml +0 -8
- package/.idea/paraswap-dex-lib.iml +0 -9
- package/.idea/prettier.xml +0 -7
- package/.idea/vcs.xml +0 -6
- package/src/abi/curve-v1-factory/CurveV1Router.abi.json +0 -331
- package/src/dex/curve-v1-factory/optimizer.ts +0 -61
|
@@ -15,8 +15,6 @@ import {
|
|
|
15
15
|
import { Tokens } from '../../../tests/constants-e2e';
|
|
16
16
|
import { Address } from '@paraswap/core';
|
|
17
17
|
import StableSwap3PoolABI from '../../abi/curve-v1/StableSwap3Pool.json';
|
|
18
|
-
import CurveV1StableNgPoolAbi from '../../abi/curve-v1/CurveV1StableNg.json';
|
|
19
|
-
import * as util from 'util';
|
|
20
18
|
|
|
21
19
|
export function getReaderCalldata(
|
|
22
20
|
exchangeAddress: string,
|
|
@@ -115,7 +113,7 @@ export async function testPricingOnNetwork(
|
|
|
115
113
|
);
|
|
116
114
|
console.log(
|
|
117
115
|
`${srcTokenSymbol} <> ${destTokenSymbol} Pool Prices: `,
|
|
118
|
-
|
|
116
|
+
poolPrices,
|
|
119
117
|
);
|
|
120
118
|
|
|
121
119
|
expect(poolPrices).not.toBeNull();
|
|
@@ -128,15 +126,15 @@ export async function testPricingOnNetwork(
|
|
|
128
126
|
// Check if onchain pricing equals to calculated ones
|
|
129
127
|
await checkOnChainPricing(
|
|
130
128
|
curveV1Factory,
|
|
131
|
-
poolPrices![0].data.
|
|
132
|
-
poolPrices![0].data.
|
|
129
|
+
poolPrices![0].data.exchange,
|
|
130
|
+
poolPrices![0].data.underlyingSwap
|
|
133
131
|
? 'get_dy_underlying'
|
|
134
132
|
: poolContractMethod,
|
|
135
133
|
blockNumber,
|
|
136
134
|
poolPrices![0].prices,
|
|
137
135
|
amounts,
|
|
138
|
-
poolPrices![0].data.
|
|
139
|
-
poolPrices![0].data.
|
|
136
|
+
poolPrices![0].data.i,
|
|
137
|
+
poolPrices![0].data.j,
|
|
140
138
|
readerIface,
|
|
141
139
|
);
|
|
142
140
|
}
|
|
@@ -228,10 +226,6 @@ describe('CurveV1Factory', function () {
|
|
|
228
226
|
});
|
|
229
227
|
|
|
230
228
|
describe(`crvUSD-GHO`, () => {
|
|
231
|
-
const readerIface = new Interface(
|
|
232
|
-
CurveV1StableNgPoolAbi as JsonFragment[],
|
|
233
|
-
);
|
|
234
|
-
|
|
235
229
|
const srcTokenSymbol = 'crvUSD';
|
|
236
230
|
const destTokenSymbol = 'GHO';
|
|
237
231
|
const amountsForSell = [
|
|
@@ -248,102 +242,6 @@ describe('CurveV1Factory', function () {
|
|
|
248
242
|
10n * BI_POWS[tokens[srcTokenSymbol].decimals],
|
|
249
243
|
];
|
|
250
244
|
|
|
251
|
-
const amountsForBuy = [
|
|
252
|
-
0n,
|
|
253
|
-
1n * BI_POWS[tokens[destTokenSymbol].decimals],
|
|
254
|
-
2n * BI_POWS[tokens[destTokenSymbol].decimals],
|
|
255
|
-
3n * BI_POWS[tokens[destTokenSymbol].decimals],
|
|
256
|
-
4n * BI_POWS[tokens[destTokenSymbol].decimals],
|
|
257
|
-
5n * BI_POWS[tokens[destTokenSymbol].decimals],
|
|
258
|
-
];
|
|
259
|
-
|
|
260
|
-
it('getPoolIdentifiers and getPricesVolume SELL', async function () {
|
|
261
|
-
await testPricingOnNetwork(
|
|
262
|
-
curveV1Factory,
|
|
263
|
-
network,
|
|
264
|
-
dexKey,
|
|
265
|
-
blockNumber,
|
|
266
|
-
srcTokenSymbol,
|
|
267
|
-
destTokenSymbol,
|
|
268
|
-
SwapSide.SELL,
|
|
269
|
-
amountsForSell,
|
|
270
|
-
'get_dy',
|
|
271
|
-
readerIface,
|
|
272
|
-
);
|
|
273
|
-
});
|
|
274
|
-
|
|
275
|
-
it('getPoolIdentifiers and getPricesVolume BUY', async function () {
|
|
276
|
-
await testPricingOnNetwork(
|
|
277
|
-
curveV1Factory,
|
|
278
|
-
network,
|
|
279
|
-
dexKey,
|
|
280
|
-
blockNumber,
|
|
281
|
-
srcTokenSymbol,
|
|
282
|
-
destTokenSymbol,
|
|
283
|
-
SwapSide.BUY,
|
|
284
|
-
amountsForBuy,
|
|
285
|
-
'get_dx',
|
|
286
|
-
readerIface,
|
|
287
|
-
);
|
|
288
|
-
});
|
|
289
|
-
|
|
290
|
-
it('getTopPoolsForToken', async function () {
|
|
291
|
-
// We have to check without calling initializePricing, because
|
|
292
|
-
// pool-tracker is not calling that function
|
|
293
|
-
const newCurveV1Factory = new CurveV1Factory(
|
|
294
|
-
network,
|
|
295
|
-
dexKey,
|
|
296
|
-
dexHelper,
|
|
297
|
-
);
|
|
298
|
-
if (newCurveV1Factory.updatePoolState) {
|
|
299
|
-
await newCurveV1Factory.updatePoolState();
|
|
300
|
-
}
|
|
301
|
-
const poolLiquidity = await newCurveV1Factory.getTopPoolsForToken(
|
|
302
|
-
tokens[srcTokenSymbol].address,
|
|
303
|
-
10,
|
|
304
|
-
);
|
|
305
|
-
console.log(`${srcTokenSymbol} Top Pools:`, poolLiquidity);
|
|
306
|
-
|
|
307
|
-
if (!newCurveV1Factory.hasConstantPriceLargeAmounts) {
|
|
308
|
-
checkPoolsLiquidity(
|
|
309
|
-
poolLiquidity,
|
|
310
|
-
Tokens[network][srcTokenSymbol].address,
|
|
311
|
-
dexKey,
|
|
312
|
-
);
|
|
313
|
-
}
|
|
314
|
-
});
|
|
315
|
-
});
|
|
316
|
-
|
|
317
|
-
describe(`crvUSD-USDT`, () => {
|
|
318
|
-
const readerIface = new Interface(
|
|
319
|
-
CurveV1StableNgPoolAbi as JsonFragment[],
|
|
320
|
-
);
|
|
321
|
-
|
|
322
|
-
const srcTokenSymbol = 'crvUSD';
|
|
323
|
-
const destTokenSymbol = 'USDT';
|
|
324
|
-
const amountsForSell = [
|
|
325
|
-
0n,
|
|
326
|
-
1n * BI_POWS[tokens[srcTokenSymbol].decimals],
|
|
327
|
-
2n * BI_POWS[tokens[srcTokenSymbol].decimals],
|
|
328
|
-
3n * BI_POWS[tokens[srcTokenSymbol].decimals],
|
|
329
|
-
4n * BI_POWS[tokens[srcTokenSymbol].decimals],
|
|
330
|
-
5n * BI_POWS[tokens[srcTokenSymbol].decimals],
|
|
331
|
-
6n * BI_POWS[tokens[srcTokenSymbol].decimals],
|
|
332
|
-
7n * BI_POWS[tokens[srcTokenSymbol].decimals],
|
|
333
|
-
8n * BI_POWS[tokens[srcTokenSymbol].decimals],
|
|
334
|
-
9n * BI_POWS[tokens[srcTokenSymbol].decimals],
|
|
335
|
-
10n * BI_POWS[tokens[srcTokenSymbol].decimals],
|
|
336
|
-
];
|
|
337
|
-
|
|
338
|
-
const amountsForBuy = [
|
|
339
|
-
0n,
|
|
340
|
-
1n * BI_POWS[tokens[destTokenSymbol].decimals],
|
|
341
|
-
2n * BI_POWS[tokens[destTokenSymbol].decimals],
|
|
342
|
-
3n * BI_POWS[tokens[destTokenSymbol].decimals],
|
|
343
|
-
4n * BI_POWS[tokens[destTokenSymbol].decimals],
|
|
344
|
-
5n * BI_POWS[tokens[destTokenSymbol].decimals],
|
|
345
|
-
];
|
|
346
|
-
|
|
347
245
|
it('getPoolIdentifiers and getPricesVolume SELL', async function () {
|
|
348
246
|
await testPricingOnNetwork(
|
|
349
247
|
curveV1Factory,
|
|
@@ -354,24 +252,6 @@ describe('CurveV1Factory', function () {
|
|
|
354
252
|
destTokenSymbol,
|
|
355
253
|
SwapSide.SELL,
|
|
356
254
|
amountsForSell,
|
|
357
|
-
'get_dy',
|
|
358
|
-
readerIface,
|
|
359
|
-
);
|
|
360
|
-
});
|
|
361
|
-
|
|
362
|
-
it('getPoolIdentifiers and getPricesVolume BUY', async function () {
|
|
363
|
-
console.log('amountsForBuy: ', amountsForBuy);
|
|
364
|
-
await testPricingOnNetwork(
|
|
365
|
-
curveV1Factory,
|
|
366
|
-
network,
|
|
367
|
-
dexKey,
|
|
368
|
-
blockNumber,
|
|
369
|
-
srcTokenSymbol,
|
|
370
|
-
destTokenSymbol,
|
|
371
|
-
SwapSide.BUY,
|
|
372
|
-
amountsForBuy,
|
|
373
|
-
'get_dx',
|
|
374
|
-
readerIface,
|
|
375
255
|
);
|
|
376
256
|
});
|
|
377
257
|
|
|
@@ -34,8 +34,6 @@ import {
|
|
|
34
34
|
import { IDex } from '../idex';
|
|
35
35
|
import { IDexHelper } from '../../dex-helper/idex-helper';
|
|
36
36
|
import {
|
|
37
|
-
CurveRouterPoolType,
|
|
38
|
-
CurveRouterSwapType,
|
|
39
37
|
CurveSwapFunctions,
|
|
40
38
|
CurveV1FactoryData,
|
|
41
39
|
CurveV1FactoryDirectSwap,
|
|
@@ -44,7 +42,6 @@ import {
|
|
|
44
42
|
CustomImplementationNames,
|
|
45
43
|
DirectCurveV1FactoryParamV6,
|
|
46
44
|
DirectCurveV1Param,
|
|
47
|
-
FactoryImplementationNames,
|
|
48
45
|
ImplementationNames,
|
|
49
46
|
PoolConstants,
|
|
50
47
|
} from './types';
|
|
@@ -63,7 +60,6 @@ import {
|
|
|
63
60
|
} from './constants';
|
|
64
61
|
import { CurveV1FactoryPoolManager } from './curve-v1-pool-manager';
|
|
65
62
|
import CurveABI from '../../abi/Curve.json';
|
|
66
|
-
import CurveV1RouterABI from '../../abi/curve-v1-factory/CurveV1Router.abi.json';
|
|
67
63
|
import DirectSwapABI from '../../abi/DirectSwap.json';
|
|
68
64
|
import FactoryCurveV1ABI from '../../abi/curve-v1-factory/FactoryCurveV1.json';
|
|
69
65
|
import ThreePoolABI from '../../abi/curve-v1-factory/ThreePool.json';
|
|
@@ -85,7 +81,6 @@ import { PriceHandler } from './price-handlers/price-handler';
|
|
|
85
81
|
import { hexConcat, hexlify, hexZeroPad } from 'ethers/lib/utils';
|
|
86
82
|
import { packCurveData } from '../../lib/curve/encoder';
|
|
87
83
|
import { encodeCurveAssets } from '../curve-v1/packer';
|
|
88
|
-
import { extractReturnAmountPosition } from '../../executor/utils';
|
|
89
84
|
|
|
90
85
|
export const DefaultCoinsABI: AbiItem = {
|
|
91
86
|
type: 'function',
|
|
@@ -127,12 +122,7 @@ export class CurveV1Factory
|
|
|
127
122
|
|
|
128
123
|
readonly directSwapIface = new Interface(DirectSwapABI);
|
|
129
124
|
|
|
130
|
-
protected
|
|
131
|
-
[
|
|
132
|
-
FactoryImplementationNames.FACTORY_PLAIN_2_CRV_EMA,
|
|
133
|
-
FactoryImplementationNames.FACTORY_STABLE_NG,
|
|
134
|
-
],
|
|
135
|
-
);
|
|
125
|
+
protected buySideSupported: boolean = false;
|
|
136
126
|
|
|
137
127
|
public static dexKeysWithNetwork: { key: string; networks: Network[] }[] =
|
|
138
128
|
getDexKeysWithNetwork(CurveV1FactoryConfig);
|
|
@@ -154,7 +144,6 @@ export class CurveV1Factory
|
|
|
154
144
|
this.config.factories?.map(e => e.address.toLowerCase()) || [];
|
|
155
145
|
this.ifaces = {
|
|
156
146
|
exchangeRouter: new Interface(CurveABI),
|
|
157
|
-
curveV1Router: new Interface(CurveV1RouterABI),
|
|
158
147
|
factory: new Interface(FactoryCurveV1ABI as JsonFragment[]),
|
|
159
148
|
erc20: new Interface(ERC20ABI as JsonFragment[]),
|
|
160
149
|
threePool: new Interface(ThreePoolABI as JsonFragment[]),
|
|
@@ -298,7 +287,7 @@ export class CurveV1Factory
|
|
|
298
287
|
this.dexKey,
|
|
299
288
|
this.dexHelper.config.data.network,
|
|
300
289
|
this.cacheStateKey,
|
|
301
|
-
customPool.name
|
|
290
|
+
customPool.name,
|
|
302
291
|
implementationAddress,
|
|
303
292
|
customPool.address,
|
|
304
293
|
this.config.stateUpdatePeriodMs,
|
|
@@ -319,7 +308,7 @@ export class CurveV1Factory
|
|
|
319
308
|
this.dexKey,
|
|
320
309
|
this.dexHelper.config.data.network,
|
|
321
310
|
this.cacheStateKey,
|
|
322
|
-
customPool.name
|
|
311
|
+
customPool.name,
|
|
323
312
|
implementationAddress,
|
|
324
313
|
customPool.address,
|
|
325
314
|
this.config.stateUpdatePeriodMs,
|
|
@@ -714,6 +703,10 @@ export class CurveV1Factory
|
|
|
714
703
|
side: SwapSide,
|
|
715
704
|
blockNumber: number,
|
|
716
705
|
): Promise<string[]> {
|
|
706
|
+
if (!this.buySideSupported && side === SwapSide.BUY) {
|
|
707
|
+
return [];
|
|
708
|
+
}
|
|
709
|
+
|
|
717
710
|
const _srcToken = this.needWrapNative
|
|
718
711
|
? this.dexHelper.config.wrapETH(srcToken)
|
|
719
712
|
: srcToken;
|
|
@@ -728,17 +721,11 @@ export class CurveV1Factory
|
|
|
728
721
|
return [];
|
|
729
722
|
}
|
|
730
723
|
|
|
731
|
-
|
|
724
|
+
const pools = this.poolManager.getPoolsForPair(
|
|
732
725
|
srcTokenAddress,
|
|
733
726
|
destTokenAddress,
|
|
734
727
|
);
|
|
735
728
|
|
|
736
|
-
if (side === SwapSide.BUY) {
|
|
737
|
-
pools = pools.filter(pool =>
|
|
738
|
-
this.factoryImplementationsSupportBuySide.has(pool.implementationName),
|
|
739
|
-
);
|
|
740
|
-
}
|
|
741
|
-
|
|
742
729
|
return pools.map(pool =>
|
|
743
730
|
this.getPoolIdentifier(pool.address, pool.isMetaPool),
|
|
744
731
|
);
|
|
@@ -759,6 +746,10 @@ export class CurveV1Factory
|
|
|
759
746
|
},
|
|
760
747
|
): Promise<null | ExchangePrices<CurveV1FactoryData>> {
|
|
761
748
|
try {
|
|
749
|
+
if (!this.buySideSupported && side === SwapSide.BUY) {
|
|
750
|
+
return null;
|
|
751
|
+
}
|
|
752
|
+
|
|
762
753
|
const _isSrcTokenTransferFeeToBeExchanged =
|
|
763
754
|
isSrcTokenTransferFeeToBeExchanged(transferFees);
|
|
764
755
|
|
|
@@ -798,14 +789,6 @@ export class CurveV1Factory
|
|
|
798
789
|
);
|
|
799
790
|
}
|
|
800
791
|
|
|
801
|
-
if (side === SwapSide.BUY) {
|
|
802
|
-
pools = pools.filter(pool =>
|
|
803
|
-
this.factoryImplementationsSupportBuySide.has(
|
|
804
|
-
pool.implementationName,
|
|
805
|
-
),
|
|
806
|
-
);
|
|
807
|
-
}
|
|
808
|
-
|
|
809
792
|
if (pools.length <= 0) {
|
|
810
793
|
return null;
|
|
811
794
|
}
|
|
@@ -876,9 +859,9 @@ export class CurveV1Factory
|
|
|
876
859
|
side,
|
|
877
860
|
state,
|
|
878
861
|
amountsWithUnitAndFee,
|
|
879
|
-
poolData.
|
|
880
|
-
poolData.
|
|
881
|
-
poolData.
|
|
862
|
+
poolData.i,
|
|
863
|
+
poolData.j,
|
|
864
|
+
poolData.underlyingSwap,
|
|
882
865
|
);
|
|
883
866
|
|
|
884
867
|
outputs = applyTransferFee(
|
|
@@ -940,11 +923,10 @@ export class CurveV1Factory
|
|
|
940
923
|
data: CurveV1FactoryData,
|
|
941
924
|
side: SwapSide,
|
|
942
925
|
): AdapterExchangeParam {
|
|
943
|
-
if (
|
|
944
|
-
throw new Error(
|
|
945
|
-
}
|
|
926
|
+
if (!this.buySideSupported && side === SwapSide.BUY)
|
|
927
|
+
throw new Error(`Buy not supported`);
|
|
946
928
|
|
|
947
|
-
const { i, j, underlyingSwap } = data
|
|
929
|
+
const { i, j, underlyingSwap } = data;
|
|
948
930
|
const payload = this.abiCoder.encodeParameter(
|
|
949
931
|
{
|
|
950
932
|
ParentStruct: {
|
|
@@ -958,7 +940,7 @@ export class CurveV1Factory
|
|
|
958
940
|
);
|
|
959
941
|
|
|
960
942
|
return {
|
|
961
|
-
targetExchange: data.
|
|
943
|
+
targetExchange: data.exchange,
|
|
962
944
|
payload,
|
|
963
945
|
networkFee: '0',
|
|
964
946
|
};
|
|
@@ -996,7 +978,7 @@ export class CurveV1Factory
|
|
|
996
978
|
isApproved = await this.dexHelper.augustusApprovals.hasApproval(
|
|
997
979
|
options.executionContractAddress,
|
|
998
980
|
this.dexHelper.config.wrapETH(srcToken).address,
|
|
999
|
-
optimalSwapExchange.data.
|
|
981
|
+
optimalSwapExchange.data.exchange,
|
|
1000
982
|
);
|
|
1001
983
|
} catch (e) {
|
|
1002
984
|
this.logger.error(
|
|
@@ -1038,11 +1020,6 @@ export class CurveV1Factory
|
|
|
1038
1020
|
if (contractMethod !== DIRECT_METHOD_NAME) {
|
|
1039
1021
|
throw new Error(`Invalid contract method ${contractMethod}`);
|
|
1040
1022
|
}
|
|
1041
|
-
|
|
1042
|
-
if (data.path.length > 1) {
|
|
1043
|
-
throw new Error('Multihop is not supported by v5');
|
|
1044
|
-
}
|
|
1045
|
-
|
|
1046
1023
|
assert(side === SwapSide.SELL, 'Buy not supported');
|
|
1047
1024
|
|
|
1048
1025
|
let isApproved: boolean = !!data.isApproved;
|
|
@@ -1053,16 +1030,16 @@ export class CurveV1Factory
|
|
|
1053
1030
|
const swapParams: DirectCurveV1Param = [
|
|
1054
1031
|
srcToken,
|
|
1055
1032
|
destToken,
|
|
1056
|
-
data.
|
|
1033
|
+
data.exchange,
|
|
1057
1034
|
srcAmount,
|
|
1058
1035
|
destAmount,
|
|
1059
1036
|
expectedAmount,
|
|
1060
1037
|
feePercent,
|
|
1061
|
-
data.
|
|
1062
|
-
data.
|
|
1038
|
+
data.i.toString(),
|
|
1039
|
+
data.j.toString(),
|
|
1063
1040
|
partner,
|
|
1064
1041
|
isApproved,
|
|
1065
|
-
data.
|
|
1042
|
+
data.underlyingSwap
|
|
1066
1043
|
? CurveV1SwapType.EXCHANGE_UNDERLYING
|
|
1067
1044
|
: CurveV1SwapType.EXCHANGE,
|
|
1068
1045
|
beneficiary,
|
|
@@ -1103,11 +1080,6 @@ export class CurveV1Factory
|
|
|
1103
1080
|
if (contractMethod !== DIRECT_METHOD_NAME_V6) {
|
|
1104
1081
|
throw new Error(`Invalid contract method ${contractMethod}`);
|
|
1105
1082
|
}
|
|
1106
|
-
|
|
1107
|
-
if (data.path.length > 1) {
|
|
1108
|
-
throw new Error('Multihop is not supported by direct method');
|
|
1109
|
-
}
|
|
1110
|
-
|
|
1111
1083
|
assert(side === SwapSide.SELL, 'Buy not supported');
|
|
1112
1084
|
|
|
1113
1085
|
const metadata = hexConcat([
|
|
@@ -1117,14 +1089,14 @@ export class CurveV1Factory
|
|
|
1117
1089
|
|
|
1118
1090
|
const swapParams: DirectCurveV1FactoryParamV6 = [
|
|
1119
1091
|
packCurveData(
|
|
1120
|
-
data.
|
|
1092
|
+
data.exchange,
|
|
1121
1093
|
!data.isApproved, // approve flag, if not approved then set to true
|
|
1122
1094
|
isETHAddress(destToken) ? 0 : isETHAddress(srcToken) ? 3 : 0,
|
|
1123
|
-
data.
|
|
1095
|
+
data.underlyingSwap
|
|
1124
1096
|
? CurveV1SwapType.EXCHANGE_UNDERLYING
|
|
1125
1097
|
: CurveV1SwapType.EXCHANGE,
|
|
1126
1098
|
).toString(),
|
|
1127
|
-
encodeCurveAssets(data.
|
|
1099
|
+
encodeCurveAssets(data.i, data.j).toString(),
|
|
1128
1100
|
srcToken,
|
|
1129
1101
|
destToken,
|
|
1130
1102
|
fromAmount,
|
|
@@ -1166,11 +1138,10 @@ export class CurveV1Factory
|
|
|
1166
1138
|
data: CurveV1FactoryData,
|
|
1167
1139
|
side: SwapSide,
|
|
1168
1140
|
): Promise<SimpleExchangeParam> {
|
|
1169
|
-
if (
|
|
1170
|
-
throw new Error(
|
|
1171
|
-
}
|
|
1141
|
+
if (!this.buySideSupported && side === SwapSide.BUY)
|
|
1142
|
+
throw new Error(`Buy not supported`);
|
|
1172
1143
|
|
|
1173
|
-
const { exchange, i, j, underlyingSwap } = data
|
|
1144
|
+
const { exchange, i, j, underlyingSwap } = data;
|
|
1174
1145
|
const defaultArgs = [i, j, srcAmount, MIN_AMOUNT_TO_RECEIVE];
|
|
1175
1146
|
const swapMethod = underlyingSwap
|
|
1176
1147
|
? CurveSwapFunctions.exchange_underlying
|
|
@@ -1204,93 +1175,30 @@ export class CurveV1Factory
|
|
|
1204
1175
|
data: CurveV1FactoryData,
|
|
1205
1176
|
side: SwapSide,
|
|
1206
1177
|
): DexExchangeParam {
|
|
1207
|
-
if (
|
|
1208
|
-
|
|
1209
|
-
const { exchange, i, j, underlyingSwap } = data.path[0];
|
|
1210
|
-
|
|
1211
|
-
const minAmountToReceive =
|
|
1212
|
-
side === SwapSide.SELL ? MIN_AMOUNT_TO_RECEIVE : destAmount;
|
|
1213
|
-
const defaultArgs = [i, j, srcAmount, minAmountToReceive];
|
|
1214
|
-
|
|
1215
|
-
const swapMethod = underlyingSwap
|
|
1216
|
-
? CurveSwapFunctions.exchange_underlying
|
|
1217
|
-
: CurveSwapFunctions.exchange;
|
|
1218
|
-
|
|
1219
|
-
const exchangeData = this.ifaces.exchangeRouter.encodeFunctionData(
|
|
1220
|
-
swapMethod,
|
|
1221
|
-
defaultArgs,
|
|
1222
|
-
);
|
|
1178
|
+
if (!this.buySideSupported && side === SwapSide.BUY)
|
|
1179
|
+
throw new Error(`Buy not supported`);
|
|
1223
1180
|
|
|
1224
|
-
|
|
1225
|
-
exchangeData,
|
|
1226
|
-
needWrapNative: this.needWrapNative,
|
|
1227
|
-
sendEthButSupportsInsertFromAmount: true,
|
|
1228
|
-
dexFuncHasRecipient: false,
|
|
1229
|
-
targetExchange: exchange,
|
|
1230
|
-
returnAmountPos: undefined,
|
|
1231
|
-
};
|
|
1232
|
-
}
|
|
1181
|
+
const { exchange, i, j, underlyingSwap } = data;
|
|
1233
1182
|
|
|
1234
|
-
|
|
1235
|
-
|
|
1236
|
-
const
|
|
1237
|
-
const swapParamsLength = 5;
|
|
1238
|
-
const poolsLength = 5;
|
|
1239
|
-
|
|
1240
|
-
const path = data.path
|
|
1241
|
-
.map((item, index) =>
|
|
1242
|
-
index === 0
|
|
1243
|
-
? [item.tokenIn, item.exchange, item.tokenOut] // we need tokenIn only for the first item because there is no prev pool
|
|
1244
|
-
: [item.exchange, item.tokenOut],
|
|
1245
|
-
)
|
|
1246
|
-
.flat();
|
|
1247
|
-
|
|
1248
|
-
while (path.length < pathLength) {
|
|
1249
|
-
path.push(NULL_ADDRESS);
|
|
1250
|
-
}
|
|
1183
|
+
const minAmountToReceive =
|
|
1184
|
+
side === SwapSide.SELL ? MIN_AMOUNT_TO_RECEIVE : destAmount;
|
|
1185
|
+
const defaultArgs = [i, j, srcAmount, minAmountToReceive];
|
|
1251
1186
|
|
|
1252
|
-
const
|
|
1253
|
-
|
|
1254
|
-
|
|
1255
|
-
|
|
1256
|
-
|
|
1257
|
-
|
|
1258
|
-
CurveRouterPoolType.stable,
|
|
1259
|
-
item.n_coins,
|
|
1260
|
-
]);
|
|
1261
|
-
|
|
1262
|
-
while (swapParams.length < swapParamsLength) {
|
|
1263
|
-
swapParams.push([0, 0, 0, 0, 0]);
|
|
1264
|
-
}
|
|
1265
|
-
|
|
1266
|
-
const pools = [];
|
|
1267
|
-
|
|
1268
|
-
while (pools.length < poolsLength) {
|
|
1269
|
-
pools.push(NULL_ADDRESS);
|
|
1270
|
-
}
|
|
1271
|
-
|
|
1272
|
-
const exchangeData = this.ifaces.curveV1Router.encodeFunctionData(
|
|
1273
|
-
`exchange(address[${pathLength}], uint256[5][${swapParamsLength}], uint256, uint256, address[${poolsLength}], address)`,
|
|
1274
|
-
[
|
|
1275
|
-
path,
|
|
1276
|
-
swapParams,
|
|
1277
|
-
srcAmount,
|
|
1278
|
-
side === SwapSide.SELL ? MIN_AMOUNT_TO_RECEIVE : destAmount,
|
|
1279
|
-
pools,
|
|
1280
|
-
recipient,
|
|
1281
|
-
],
|
|
1187
|
+
const swapMethod = underlyingSwap
|
|
1188
|
+
? CurveSwapFunctions.exchange_underlying
|
|
1189
|
+
: CurveSwapFunctions.exchange;
|
|
1190
|
+
const exchangeData = this.ifaces.exchangeRouter.encodeFunctionData(
|
|
1191
|
+
swapMethod,
|
|
1192
|
+
defaultArgs,
|
|
1282
1193
|
);
|
|
1283
1194
|
|
|
1284
1195
|
return {
|
|
1285
1196
|
exchangeData,
|
|
1286
1197
|
needWrapNative: this.needWrapNative,
|
|
1287
1198
|
sendEthButSupportsInsertFromAmount: true,
|
|
1288
|
-
dexFuncHasRecipient:
|
|
1289
|
-
targetExchange:
|
|
1290
|
-
returnAmountPos:
|
|
1291
|
-
this.ifaces.curveV1Router,
|
|
1292
|
-
`exchange(address[${pathLength}], uint256[5][${swapParamsLength}], uint256, uint256, address[${poolsLength}], address)`,
|
|
1293
|
-
),
|
|
1199
|
+
dexFuncHasRecipient: false,
|
|
1200
|
+
targetExchange: exchange,
|
|
1201
|
+
returnAmountPos: undefined,
|
|
1294
1202
|
};
|
|
1295
1203
|
}
|
|
1296
1204
|
|
|
@@ -3,29 +3,6 @@ import { get_dx, IPoolContext } from '../types';
|
|
|
3
3
|
import { requireValue, throwNotExist } from './utils';
|
|
4
4
|
import _ from 'lodash';
|
|
5
5
|
|
|
6
|
-
const factoryPlain2CrvEma: get_dx = (
|
|
7
|
-
self: IPoolContext,
|
|
8
|
-
state: PoolState,
|
|
9
|
-
i: number,
|
|
10
|
-
j: number,
|
|
11
|
-
dy: bigint,
|
|
12
|
-
) => {
|
|
13
|
-
const balances = requireValue(self, state, 'balances', 'factoryPlain2CrvEma');
|
|
14
|
-
const fee = requireValue(self, state, 'fee', 'factoryPlain2CrvEma');
|
|
15
|
-
const { PRECISION, FEE_DENOMINATOR } = self.constants;
|
|
16
|
-
const { rate_multipliers: rates } = state.constants;
|
|
17
|
-
|
|
18
|
-
const xp = self._xp_mem(self, rates, balances);
|
|
19
|
-
|
|
20
|
-
const y =
|
|
21
|
-
xp[j] -
|
|
22
|
-
(((dy * rates[j]) / PRECISION + 1n) * FEE_DENOMINATOR) /
|
|
23
|
-
(FEE_DENOMINATOR - fee);
|
|
24
|
-
const x = self.get_y(self, state, j, i, y, xp, 0n, 0n);
|
|
25
|
-
|
|
26
|
-
return ((x - xp[i]) * PRECISION) / rates[i];
|
|
27
|
-
};
|
|
28
|
-
|
|
29
6
|
const stableNg: get_dx = (
|
|
30
7
|
self: IPoolContext,
|
|
31
8
|
state: PoolState,
|
|
@@ -133,7 +110,7 @@ const implementations: Record<ImplementationNames, get_dx> = {
|
|
|
133
110
|
[ImplementationNames.FACTORY_PLAIN_2_BASIC_EMA]: notExist,
|
|
134
111
|
[ImplementationNames.FACTORY_PLAIN_2_ETH_EMA]: notExist,
|
|
135
112
|
[ImplementationNames.FACTORY_PLAIN_2_ETH_EMA2]: notExist,
|
|
136
|
-
[ImplementationNames.FACTORY_PLAIN_2_CRV_EMA]:
|
|
113
|
+
[ImplementationNames.FACTORY_PLAIN_2_CRV_EMA]: notExist,
|
|
137
114
|
|
|
138
115
|
[ImplementationNames.FACTORY_STABLE_NG]: stableNg,
|
|
139
116
|
};
|
|
@@ -2,7 +2,7 @@ import _ from 'lodash';
|
|
|
2
2
|
import { Logger } from 'log4js';
|
|
3
3
|
import { MultiCallParams } from '../../../lib/multi-wrapper';
|
|
4
4
|
import {
|
|
5
|
-
|
|
5
|
+
ImplementationNames,
|
|
6
6
|
PoolConstants,
|
|
7
7
|
PoolContextConstants,
|
|
8
8
|
PoolState,
|
|
@@ -101,7 +101,7 @@ export class CustomBasePoolForFactory extends PoolPollingBase {
|
|
|
101
101
|
readonly dexKey: string,
|
|
102
102
|
network: number,
|
|
103
103
|
cacheStateKey: string,
|
|
104
|
-
implementationName:
|
|
104
|
+
implementationName: ImplementationNames,
|
|
105
105
|
implementationAddress: Address,
|
|
106
106
|
address: Address,
|
|
107
107
|
stateUpdatePeriodMs: number,
|
|
@@ -128,7 +128,6 @@ export class CustomBasePoolForFactory extends PoolPollingBase {
|
|
|
128
128
|
stateUpdatePeriodMs,
|
|
129
129
|
poolIdentifier,
|
|
130
130
|
poolConstants,
|
|
131
|
-
poolContextConstants,
|
|
132
131
|
address,
|
|
133
132
|
curveLiquidityApiSlug,
|
|
134
133
|
isLendingPool,
|
|
@@ -5,13 +5,7 @@ import {
|
|
|
5
5
|
MAX_ALLOWED_STATE_DELAY_FACTOR,
|
|
6
6
|
MIN_LIQUIDITY_IN_USD,
|
|
7
7
|
} from '../constants';
|
|
8
|
-
import {
|
|
9
|
-
CurveV1FactoryData,
|
|
10
|
-
ImplementationNames,
|
|
11
|
-
PoolConstants,
|
|
12
|
-
PoolContextConstants,
|
|
13
|
-
PoolState,
|
|
14
|
-
} from '../types';
|
|
8
|
+
import { CurveV1FactoryData, PoolConstants, PoolState } from '../types';
|
|
15
9
|
import { Address } from '@paraswap/core';
|
|
16
10
|
|
|
17
11
|
export type MulticallReturnedTypes = bigint | bigint[];
|
|
@@ -44,12 +38,11 @@ export abstract class PoolPollingBase {
|
|
|
44
38
|
readonly dexKey: string,
|
|
45
39
|
readonly network: number,
|
|
46
40
|
readonly cacheStateKey: string,
|
|
47
|
-
readonly implementationName:
|
|
41
|
+
readonly implementationName: string,
|
|
48
42
|
readonly implementationAddress: Address,
|
|
49
43
|
readonly stateUpdatePeriodMs: number,
|
|
50
44
|
readonly poolIdentifier: string,
|
|
51
45
|
readonly poolConstants: PoolConstants,
|
|
52
|
-
readonly poolContextConstants: PoolContextConstants,
|
|
53
46
|
readonly address: Address,
|
|
54
47
|
readonly curveLiquidityApiSlug: string,
|
|
55
48
|
readonly isLendingPool: boolean,
|
|
@@ -127,17 +120,10 @@ export abstract class PoolPollingBase {
|
|
|
127
120
|
|
|
128
121
|
if (iC !== undefined && jC !== undefined) {
|
|
129
122
|
return {
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
exchange: this.address,
|
|
135
|
-
i: iC,
|
|
136
|
-
j: jC,
|
|
137
|
-
underlyingSwap: false,
|
|
138
|
-
n_coins: this.poolConstants.COINS.length,
|
|
139
|
-
},
|
|
140
|
-
],
|
|
123
|
+
exchange: this.address,
|
|
124
|
+
i: iC,
|
|
125
|
+
j: jC,
|
|
126
|
+
underlyingSwap: false,
|
|
141
127
|
};
|
|
142
128
|
}
|
|
143
129
|
|
|
@@ -154,17 +140,10 @@ export abstract class PoolPollingBase {
|
|
|
154
140
|
// I expect them to be included in old CurveV1 implementation
|
|
155
141
|
if (iU !== undefined && jU !== undefined && !(iU > 0 && jU > 0)) {
|
|
156
142
|
return {
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
exchange: this.address,
|
|
162
|
-
i: iU,
|
|
163
|
-
j: jU,
|
|
164
|
-
underlyingSwap: true,
|
|
165
|
-
n_coins: this.poolConstants.COINS.length,
|
|
166
|
-
},
|
|
167
|
-
],
|
|
143
|
+
exchange: this.address,
|
|
144
|
+
i: iU,
|
|
145
|
+
j: jU,
|
|
146
|
+
underlyingSwap: true,
|
|
168
147
|
};
|
|
169
148
|
}
|
|
170
149
|
}
|