@paraswap/dex-lib 4.8.24 → 4.8.25
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/build/abi/AaveV2_lending_pool.json +53 -0
- package/build/abi/Bancor.json +392 -0
- package/build/abi/Compound_CETH.json +12 -0
- package/build/abi/SSPM.json +829 -0
- package/build/abi/Smoothy.json +1049 -0
- package/build/abi/StaderOracle.json +2170 -0
- package/build/abi/aave-weth-gateway-avalanche.json +242 -0
- package/build/abi/aave-weth-gateway-polygon.json +242 -0
- package/build/abi/aave-weth-gateway.json +24 -0
- package/build/abi/bunni-v2/BunniHook.abi.json +1921 -0
- package/build/abi/bunni-v2/BunniHub.abi.json +1598 -0
- package/build/abi/bunni-v2/BunniToken.abi.json +833 -0
- package/build/abi/bunni-v2/FeeOverrideHooklet.abi.json +1947 -0
- package/build/abi/bunni-v2/FloodPlain.abi.json +1195 -0
- package/build/abi/bunni-v2/PoolManager.abi.json +1366 -0
- package/build/abi/bunni-v2/V4Quoter.abi.json +637 -0
- package/build/abi/concentrator/arUSD.json +568 -0
- package/build/abi/concentrator/arUSD5115.json +1746 -0
- package/build/abi/gmx/fast-price-events.json +70 -0
- package/build/abi/gmx/fast-price-feed.json +748 -0
- package/build/abi/gmx/reader.json +337 -0
- package/build/abi/gmx/vault-price-feed.json +477 -0
- package/build/abi/gmx/vault.json +2002 -0
- package/build/abi/jarvis/ChainlinkAccessControlledOffchainAggregator.json +1009 -0
- package/build/abi/jarvis/SynthereumPriceFeed.json +381 -0
- package/build/abi/jarvis/jarvis-v6-pool.json +1041 -0
- package/build/abi/kyberdmm/kyber-dmm-exchange-router.abi.json +1148 -0
- package/build/abi/kyberdmm/kyber-dmm-factory.abi.json +335 -0
- package/build/abi/kyberdmm/kyber-dmm-pool.abi.json +803 -0
- package/build/abi/synthetix/CombinedSynthetix.abi.json +442 -0
- package/build/abi/wombat/asset.json +743 -0
- package/build/abi/wombat/bmw.json +1247 -0
- package/build/abi/wombat/pool-v2.json +1289 -0
- package/build/abi/wombat/pool-v3.json +2013 -0
- package/build/dex/aave-v2/aave-v2.d.ts +33 -0
- package/build/dex/aave-v2/aave-v2.js +328 -0
- package/build/dex/aave-v2/aave-v2.js.map +1 -0
- package/build/dex/aave-v2/config.d.ts +14 -0
- package/build/dex/aave-v2/config.js +49 -0
- package/build/dex/aave-v2/config.js.map +1 -0
- package/build/dex/aave-v2/tokenlist.json +904 -0
- package/build/dex/aave-v2/tokens.d.ts +8 -0
- package/build/dex/aave-v2/tokens.js +65 -0
- package/build/dex/aave-v2/tokens.js.map +1 -0
- package/build/dex/aave-v2/types.d.ts +33 -0
- package/build/dex/aave-v2/types.js +11 -0
- package/build/dex/aave-v2/types.js.map +1 -0
- package/build/dex/bancor/bancor.d.ts +15 -0
- package/build/dex/bancor/bancor.js +74 -0
- package/build/dex/bancor/bancor.js.map +1 -0
- package/build/dex/bancor/config.d.ts +6 -0
- package/build/dex/bancor/config.js +11 -0
- package/build/dex/bancor/config.js.map +1 -0
- package/build/dex/bancor/types.d.ts +16 -0
- package/build/dex/bancor/types.js +8 -0
- package/build/dex/bancor/types.js.map +1 -0
- package/build/dex/bebop/bebop.js +1 -1
- package/build/dex/bebop/bebop.js.map +1 -1
- package/build/dex/bunni-v2/bunni-v2-pool.d.ts +62 -0
- package/build/dex/bunni-v2/bunni-v2-pool.js +505 -0
- package/build/dex/bunni-v2/bunni-v2-pool.js.map +1 -0
- package/build/dex/bunni-v2/bunni-v2.d.ts +51 -0
- package/build/dex/bunni-v2/bunni-v2.js +460 -0
- package/build/dex/bunni-v2/bunni-v2.js.map +1 -0
- package/build/dex/{renegade → bunni-v2}/config.d.ts +1 -1
- package/build/dex/bunni-v2/config.js +130 -0
- package/build/dex/bunni-v2/config.js.map +1 -0
- package/build/dex/bunni-v2/encoder.d.ts +19 -0
- package/build/dex/{pancakeswap-infinity → bunni-v2}/encoder.js +199 -88
- package/build/dex/bunni-v2/encoder.js.map +1 -0
- package/build/dex/bunni-v2/getOnChainState.d.ts +26 -0
- package/build/dex/bunni-v2/getOnChainState.js +493 -0
- package/build/dex/bunni-v2/getOnChainState.js.map +1 -0
- package/build/dex/bunni-v2/hook/BunniSwapMath.d.ts +7 -0
- package/build/dex/bunni-v2/hook/BunniSwapMath.js +198 -0
- package/build/dex/bunni-v2/hook/BunniSwapMath.js.map +1 -0
- package/build/dex/bunni-v2/hook/SwapMath.d.ts +8 -0
- package/build/dex/bunni-v2/hook/SwapMath.js +65 -0
- package/build/dex/bunni-v2/hook/SwapMath.js.map +1 -0
- package/build/dex/bunni-v2/hooklet/FeeOverrideHooklet.d.ts +33 -0
- package/build/dex/bunni-v2/hooklet/FeeOverrideHooklet.js +33 -0
- package/build/dex/bunni-v2/hooklet/FeeOverrideHooklet.js.map +1 -0
- package/build/dex/bunni-v2/hooklet/index.d.ts +21 -0
- package/build/dex/bunni-v2/hooklet/index.js +64 -0
- package/build/dex/bunni-v2/hooklet/index.js.map +1 -0
- package/build/dex/bunni-v2/ldf/CarpetedDoubleGeometricDistribution.d.ts +70 -0
- package/build/dex/bunni-v2/ldf/CarpetedDoubleGeometricDistribution.js +277 -0
- package/build/dex/bunni-v2/ldf/CarpetedDoubleGeometricDistribution.js.map +1 -0
- package/build/dex/bunni-v2/ldf/CarpetedGeometricDistribution.d.ts +64 -0
- package/build/dex/bunni-v2/ldf/CarpetedGeometricDistribution.js +262 -0
- package/build/dex/bunni-v2/ldf/CarpetedGeometricDistribution.js.map +1 -0
- package/build/dex/bunni-v2/ldf/DoubleGeometricDistribution.d.ts +60 -0
- package/build/dex/bunni-v2/ldf/DoubleGeometricDistribution.js +224 -0
- package/build/dex/bunni-v2/ldf/DoubleGeometricDistribution.js.map +1 -0
- package/build/dex/bunni-v2/ldf/GeometricDistribution.d.ts +56 -0
- package/build/dex/bunni-v2/ldf/GeometricDistribution.js +489 -0
- package/build/dex/bunni-v2/ldf/GeometricDistribution.js.map +1 -0
- package/build/dex/bunni-v2/ldf/LDFType.d.ts +5 -0
- package/build/dex/bunni-v2/ldf/LDFType.js +10 -0
- package/build/dex/bunni-v2/ldf/LDFType.js.map +1 -0
- package/build/dex/bunni-v2/ldf/ShiftMode.d.ts +7 -0
- package/build/dex/bunni-v2/ldf/ShiftMode.js +19 -0
- package/build/dex/bunni-v2/ldf/ShiftMode.js.map +1 -0
- package/build/dex/bunni-v2/ldf/UniformDistribution.d.ts +55 -0
- package/build/dex/bunni-v2/ldf/UniformDistribution.js +291 -0
- package/build/dex/bunni-v2/ldf/UniformDistribution.js.map +1 -0
- package/build/dex/bunni-v2/ldf/index.d.ts +15 -0
- package/build/dex/bunni-v2/ldf/index.js +21 -0
- package/build/dex/bunni-v2/ldf/index.js.map +1 -0
- package/build/dex/bunni-v2/lib/AmAmmPayload.d.ts +4 -0
- package/build/dex/bunni-v2/lib/AmAmmPayload.js +10 -0
- package/build/dex/bunni-v2/lib/AmAmmPayload.js.map +1 -0
- package/build/dex/bunni-v2/lib/BitMath.d.ts +4 -0
- package/build/dex/bunni-v2/lib/BitMath.js +24 -0
- package/build/dex/bunni-v2/lib/BitMath.js.map +1 -0
- package/build/dex/bunni-v2/lib/Constants.d.ts +15 -0
- package/build/dex/bunni-v2/lib/Constants.js +19 -0
- package/build/dex/bunni-v2/lib/Constants.js.map +1 -0
- package/build/dex/bunni-v2/lib/ExpMath.d.ts +5 -0
- package/build/dex/bunni-v2/lib/ExpMath.js +121 -0
- package/build/dex/bunni-v2/lib/ExpMath.js.map +1 -0
- package/build/dex/bunni-v2/lib/FeeMath.d.ts +2 -0
- package/build/dex/bunni-v2/lib/FeeMath.js +27 -0
- package/build/dex/bunni-v2/lib/FeeMath.js.map +1 -0
- package/build/dex/bunni-v2/lib/FixedPointMath.d.ts +3 -0
- package/build/dex/bunni-v2/lib/FixedPointMath.js +15 -0
- package/build/dex/bunni-v2/lib/FixedPointMath.js.map +1 -0
- package/build/dex/bunni-v2/lib/FullMathX96.d.ts +4 -0
- package/build/dex/bunni-v2/lib/FullMathX96.js +21 -0
- package/build/dex/bunni-v2/lib/FullMathX96.js.map +1 -0
- package/build/dex/bunni-v2/lib/IdleBalance.d.ts +11 -0
- package/build/dex/bunni-v2/lib/IdleBalance.js +33 -0
- package/build/dex/bunni-v2/lib/IdleBalance.js.map +1 -0
- package/build/dex/bunni-v2/lib/LiquidityAmounts.d.ts +6 -0
- package/build/dex/bunni-v2/lib/LiquidityAmounts.js +25 -0
- package/build/dex/bunni-v2/lib/LiquidityAmounts.js.map +1 -0
- package/build/dex/bunni-v2/lib/Math.d.ts +28 -0
- package/build/dex/bunni-v2/lib/Math.js +169 -0
- package/build/dex/bunni-v2/lib/Math.js.map +1 -0
- package/build/dex/bunni-v2/lib/Oracle.d.ts +27 -0
- package/build/dex/bunni-v2/lib/Oracle.js +180 -0
- package/build/dex/bunni-v2/lib/Oracle.js.map +1 -0
- package/build/dex/bunni-v2/lib/QueryLDF.d.ts +12 -0
- package/build/dex/bunni-v2/lib/QueryLDF.js +90 -0
- package/build/dex/bunni-v2/lib/QueryLDF.js.map +1 -0
- package/build/dex/bunni-v2/lib/QueryTwap.d.ts +2 -0
- package/build/dex/bunni-v2/lib/QueryTwap.js +13 -0
- package/build/dex/bunni-v2/lib/QueryTwap.js.map +1 -0
- package/build/dex/bunni-v2/lib/SqrtPriceMath.d.ts +8 -0
- package/build/dex/bunni-v2/lib/SqrtPriceMath.js +84 -0
- package/build/dex/bunni-v2/lib/SqrtPriceMath.js.map +1 -0
- package/build/dex/bunni-v2/lib/TickMath.d.ts +11 -0
- package/build/dex/bunni-v2/lib/TickMath.js +100 -0
- package/build/dex/bunni-v2/lib/TickMath.js.map +1 -0
- package/build/dex/bunni-v2/lib/VaultMath.d.ts +2 -0
- package/build/dex/bunni-v2/lib/VaultMath.js +11 -0
- package/build/dex/bunni-v2/lib/VaultMath.js.map +1 -0
- package/build/dex/bunni-v2/logic/AmAmm.d.ts +11 -0
- package/build/dex/bunni-v2/logic/AmAmm.js +156 -0
- package/build/dex/bunni-v2/logic/AmAmm.js.map +1 -0
- package/build/dex/bunni-v2/logic/BunniHookLogic.d.ts +10 -0
- package/build/dex/bunni-v2/logic/BunniHookLogic.js +298 -0
- package/build/dex/bunni-v2/logic/BunniHookLogic.js.map +1 -0
- package/build/dex/bunni-v2/logic/BunniHubLogic.d.ts +5 -0
- package/build/dex/bunni-v2/logic/BunniHubLogic.js +245 -0
- package/build/dex/bunni-v2/logic/BunniHubLogic.js.map +1 -0
- package/build/dex/bunni-v2/logic/BunniQuoter.d.ts +12 -0
- package/build/dex/bunni-v2/logic/BunniQuoter.js +201 -0
- package/build/dex/bunni-v2/logic/BunniQuoter.js.map +1 -0
- package/build/dex/bunni-v2/subgraph.d.ts +7 -0
- package/build/dex/bunni-v2/subgraph.js +184 -0
- package/build/dex/bunni-v2/subgraph.js.map +1 -0
- package/build/dex/bunni-v2/types.d.ts +257 -0
- package/build/dex/{renegade/api → bunni-v2}/types.js.map +1 -1
- package/build/dex/bunni-v2/utils.d.ts +12 -0
- package/build/dex/bunni-v2/utils.js +182 -0
- package/build/dex/bunni-v2/utils.js.map +1 -0
- package/build/dex/compound/compound.d.ts +15 -0
- package/build/dex/compound/compound.js +57 -0
- package/build/dex/compound/compound.js.map +1 -0
- package/build/dex/compound/types.d.ts +8 -0
- package/build/dex/compound/types.js +9 -0
- package/build/dex/compound/types.js.map +1 -0
- package/build/dex/concentrator-arusd/concentrator-arusd-event.d.ts +17 -0
- package/build/dex/concentrator-arusd/concentrator-arusd-event.js +69 -0
- package/build/dex/concentrator-arusd/concentrator-arusd-event.js.map +1 -0
- package/build/dex/concentrator-arusd/concentrator-arusd.d.ts +41 -0
- package/build/dex/concentrator-arusd/concentrator-arusd.js +202 -0
- package/build/dex/concentrator-arusd/concentrator-arusd.js.map +1 -0
- package/build/dex/concentrator-arusd/config.d.ts +3 -0
- package/build/dex/concentrator-arusd/config.js +14 -0
- package/build/dex/concentrator-arusd/config.js.map +1 -0
- package/build/dex/concentrator-arusd/types.d.ts +14 -0
- package/build/dex/concentrator-arusd/types.js.map +1 -0
- package/build/dex/concentrator-arusd/utils.d.ts +4 -0
- package/build/dex/concentrator-arusd/utils.js +26 -0
- package/build/dex/concentrator-arusd/utils.js.map +1 -0
- package/build/dex/curve-v1/forks/swerve/config.d.ts +4 -0
- package/build/dex/curve-v1/forks/swerve/config.js +47 -0
- package/build/dex/curve-v1/forks/swerve/config.js.map +1 -0
- package/build/dex/curve-v1/forks/swerve/swerve.d.ts +16 -0
- package/build/dex/curve-v1/forks/swerve/swerve.js +46 -0
- package/build/dex/curve-v1/forks/swerve/swerve.js.map +1 -0
- package/build/dex/gmx/config.d.ts +11 -0
- package/build/dex/gmx/config.js +61 -0
- package/build/dex/gmx/config.js.map +1 -0
- package/build/dex/gmx/fast-price-feed.d.ts +26 -0
- package/build/dex/gmx/fast-price-feed.js +184 -0
- package/build/dex/gmx/fast-price-feed.js.map +1 -0
- package/build/dex/gmx/gmx.d.ts +54 -0
- package/build/dex/gmx/gmx.js +247 -0
- package/build/dex/gmx/gmx.js.map +1 -0
- package/build/dex/gmx/pool.d.ts +21 -0
- package/build/dex/gmx/pool.js +212 -0
- package/build/dex/gmx/pool.js.map +1 -0
- package/build/dex/gmx/types.d.ts +100 -0
- package/build/dex/gmx/types.js +3 -0
- package/build/dex/gmx/types.js.map +1 -0
- package/build/dex/gmx/usdg.d.ts +15 -0
- package/build/dex/gmx/usdg.js +62 -0
- package/build/dex/gmx/usdg.js.map +1 -0
- package/build/dex/gmx/vault-price-feed.d.ts +47 -0
- package/build/dex/gmx/vault-price-feed.js +245 -0
- package/build/dex/gmx/vault-price-feed.js.map +1 -0
- package/build/dex/gmx/vault-utils.d.ts +8 -0
- package/build/dex/gmx/vault-utils.js +42 -0
- package/build/dex/gmx/vault-utils.js.map +1 -0
- package/build/dex/gmx/vault.d.ts +46 -0
- package/build/dex/gmx/vault.js +182 -0
- package/build/dex/gmx/vault.js.map +1 -0
- package/build/dex/jarvis-v6/chainLinkpriceFeed-event.d.ts +15 -0
- package/build/dex/jarvis-v6/chainLinkpriceFeed-event.js +51 -0
- package/build/dex/jarvis-v6/chainLinkpriceFeed-event.js.map +1 -0
- package/build/dex/jarvis-v6/config.d.ts +4 -0
- package/build/dex/jarvis-v6/config.js +244 -0
- package/build/dex/jarvis-v6/config.js.map +1 -0
- package/build/dex/jarvis-v6/jarvis-v6-events.d.ts +27 -0
- package/build/dex/jarvis-v6/jarvis-v6-events.js +54 -0
- package/build/dex/jarvis-v6/jarvis-v6-events.js.map +1 -0
- package/build/dex/jarvis-v6/jarvis-v6.d.ts +49 -0
- package/build/dex/jarvis-v6/jarvis-v6.js +321 -0
- package/build/dex/jarvis-v6/jarvis-v6.js.map +1 -0
- package/build/dex/jarvis-v6/syntheteumPool-event.d.ts +15 -0
- package/build/dex/jarvis-v6/syntheteumPool-event.js +49 -0
- package/build/dex/jarvis-v6/syntheteumPool-event.js.map +1 -0
- package/build/dex/jarvis-v6/types.d.ts +48 -0
- package/build/dex/jarvis-v6/types.js +9 -0
- package/build/dex/jarvis-v6/types.js.map +1 -0
- package/build/dex/jarvis-v6/utils.d.ts +13 -0
- package/build/dex/jarvis-v6/utils.js +75 -0
- package/build/dex/jarvis-v6/utils.js.map +1 -0
- package/build/dex/kyberdmm/config.d.ts +9 -0
- package/build/dex/kyberdmm/config.js +59 -0
- package/build/dex/kyberdmm/config.js.map +1 -0
- package/build/dex/kyberdmm/fee-formula.d.ts +15 -0
- package/build/dex/kyberdmm/fee-formula.js +88 -0
- package/build/dex/kyberdmm/fee-formula.js.map +1 -0
- package/build/dex/kyberdmm/kyberdmm.d.ts +55 -0
- package/build/dex/kyberdmm/kyberdmm.js +447 -0
- package/build/dex/kyberdmm/kyberdmm.js.map +1 -0
- package/build/dex/kyberdmm/math-ext.d.ts +2 -0
- package/build/dex/kyberdmm/math-ext.js +27 -0
- package/build/dex/kyberdmm/math-ext.js.map +1 -0
- package/build/dex/kyberdmm/pool.d.ts +50 -0
- package/build/dex/kyberdmm/pool.js +157 -0
- package/build/dex/kyberdmm/pool.js.map +1 -0
- package/build/dex/kyberdmm/types.d.ts +81 -0
- package/build/dex/kyberdmm/types.js +9 -0
- package/build/dex/kyberdmm/types.js.map +1 -0
- package/build/dex/quickswap/thena-fusion.d.ts +6 -0
- package/build/dex/quickswap/thena-fusion.js +19 -0
- package/build/dex/quickswap/thena-fusion.js.map +1 -0
- package/build/dex/smoothy/smoothy.d.ts +16 -0
- package/build/dex/smoothy/smoothy.js +60 -0
- package/build/dex/smoothy/smoothy.js.map +1 -0
- package/build/dex/smoothy/types.d.ts +15 -0
- package/build/dex/smoothy/types.js +8 -0
- package/build/dex/smoothy/types.js.map +1 -0
- package/build/dex/stader/config.d.ts +3 -0
- package/build/dex/stader/config.js +14 -0
- package/build/dex/stader/config.js.map +1 -0
- package/build/dex/stader/stader-pool.d.ts +19 -0
- package/build/dex/stader/stader-pool.js +56 -0
- package/build/dex/stader/stader-pool.js.map +1 -0
- package/build/dex/stader/stader.d.ts +42 -0
- package/build/dex/stader/stader.js +195 -0
- package/build/dex/stader/stader.js.map +1 -0
- package/build/dex/stader/types.d.ts +13 -0
- package/build/dex/stader/types.js +8 -0
- package/build/dex/stader/types.js.map +1 -0
- package/build/dex/stader/utils.d.ts +4 -0
- package/build/dex/stader/utils.js +23 -0
- package/build/dex/stader/utils.js.map +1 -0
- package/build/dex/synthetix/config.d.ts +4 -0
- package/build/dex/synthetix/config.js +53 -0
- package/build/dex/synthetix/config.js.map +1 -0
- package/build/dex/synthetix/constants.d.ts +23 -0
- package/build/dex/synthetix/constants.js +32 -0
- package/build/dex/synthetix/constants.js.map +1 -0
- package/build/dex/synthetix/contract-math/DexPriceAggregatorUniswapV3.d.ts +17 -0
- package/build/dex/synthetix/contract-math/DexPriceAggregatorUniswapV3.js +102 -0
- package/build/dex/synthetix/contract-math/DexPriceAggregatorUniswapV3.js.map +1 -0
- package/build/dex/synthetix/contract-math/ExchangeRates.d.ts +8 -0
- package/build/dex/synthetix/contract-math/ExchangeRates.js +77 -0
- package/build/dex/synthetix/contract-math/ExchangeRates.js.map +1 -0
- package/build/dex/synthetix/contract-math/ExchangeRatesWithDexPricing.d.ts +17 -0
- package/build/dex/synthetix/contract-math/ExchangeRatesWithDexPricing.js +126 -0
- package/build/dex/synthetix/contract-math/ExchangeRatesWithDexPricing.js.map +1 -0
- package/build/dex/synthetix/contract-math/FullMath.d.ts +3 -0
- package/build/dex/synthetix/contract-math/FullMath.js +14 -0
- package/build/dex/synthetix/contract-math/FullMath.js.map +1 -0
- package/build/dex/synthetix/contract-math/OracleLibrary.d.ts +8 -0
- package/build/dex/synthetix/contract-math/OracleLibrary.js +60 -0
- package/build/dex/synthetix/contract-math/OracleLibrary.js.map +1 -0
- package/build/dex/synthetix/contract-math/SafeDecimalMath.d.ts +9 -0
- package/build/dex/synthetix/contract-math/SafeDecimalMath.js +41 -0
- package/build/dex/synthetix/contract-math/SafeDecimalMath.js.map +1 -0
- package/build/dex/synthetix/contract-math/TickMath.d.ts +7 -0
- package/build/dex/synthetix/contract-math/TickMath.js +63 -0
- package/build/dex/synthetix/contract-math/TickMath.js.map +1 -0
- package/build/dex/synthetix/contract-math/synthetix-math.d.ts +17 -0
- package/build/dex/synthetix/contract-math/synthetix-math.js +127 -0
- package/build/dex/synthetix/contract-math/synthetix-math.js.map +1 -0
- package/build/dex/synthetix/synthetix-state.d.ts +36 -0
- package/build/dex/synthetix/synthetix-state.js +615 -0
- package/build/dex/synthetix/synthetix-state.js.map +1 -0
- package/build/dex/synthetix/synthetix.d.ts +45 -0
- package/build/dex/synthetix/synthetix.js +304 -0
- package/build/dex/synthetix/synthetix.js.map +1 -0
- package/build/dex/synthetix/types.d.ts +90 -0
- package/build/dex/synthetix/types.js +3 -0
- package/build/dex/synthetix/types.js.map +1 -0
- package/build/dex/synthetix/utils.d.ts +10 -0
- package/build/dex/synthetix/utils.js +91 -0
- package/build/dex/synthetix/utils.js.map +1 -0
- package/build/dex/trader-joe-v2.1/trader-joe-v2.1.d.ts +7 -0
- package/build/dex/trader-joe-v2.1/trader-joe-v2.1.js +20 -0
- package/build/dex/trader-joe-v2.1/trader-joe-v2.1.js.map +1 -0
- package/build/dex/uniswap-v4/api-go/compare-pricing.d.ts +1 -0
- package/build/dex/uniswap-v4/api-go/compare-pricing.js +187 -0
- package/build/dex/uniswap-v4/api-go/compare-pricing.js.map +1 -0
- package/build/dex/uniswap-v4/api-go/compare-states.d.ts +1 -0
- package/build/dex/uniswap-v4/api-go/compare-states.js +149 -0
- package/build/dex/uniswap-v4/api-go/compare-states.js.map +1 -0
- package/build/dex/uniswap-v4/api-go/fetch-pool-key.d.ts +0 -0
- package/build/dex/uniswap-v4/api-go/fetch-pool-key.js +140 -0
- package/build/dex/uniswap-v4/api-go/fetch-pool-key.js.map +1 -0
- package/build/dex/wombat/config.d.ts +4 -0
- package/build/dex/wombat/config.js +77 -0
- package/build/dex/wombat/config.js.map +1 -0
- package/build/dex/wombat/types.d.ts +34 -0
- package/build/dex/wombat/types.js +3 -0
- package/build/dex/wombat/types.js.map +1 -0
- package/build/dex/wombat/utils.d.ts +10 -0
- package/build/dex/wombat/utils.js +79 -0
- package/build/dex/wombat/utils.js.map +1 -0
- package/build/dex/wombat/wombat-bmw.d.ts +40 -0
- package/build/dex/wombat/wombat-bmw.js +136 -0
- package/build/dex/wombat/wombat-bmw.js.map +1 -0
- package/build/dex/wombat/wombat-pool.d.ts +60 -0
- package/build/dex/wombat/wombat-pool.js +488 -0
- package/build/dex/wombat/wombat-pool.js.map +1 -0
- package/build/dex/wombat/wombat-quoter.d.ts +17 -0
- package/build/dex/wombat/wombat-quoter.js +192 -0
- package/build/dex/wombat/wombat-quoter.js.map +1 -0
- package/build/dex/wombat/wombat.d.ts +58 -0
- package/build/dex/wombat/wombat.js +298 -0
- package/build/dex/wombat/wombat.js.map +1 -0
- package/build/tenderly-simulation.d.ts +221 -0
- package/build/tenderly-simulation.js +517 -0
- package/build/tenderly-simulation.js.map +1 -0
- package/package.json +1 -1
- package/build/abi/pancakeswap-infinity/cl-pool-manager.abi.json +0 -136
- package/build/abi/pancakeswap-infinity/cl-quoter.abi.json +0 -66
- package/build/abi/pancakeswap-infinity/router.abi.json +0 -23
- package/build/dex/pancakeswap-infinity/config.d.ts +0 -4
- package/build/dex/pancakeswap-infinity/config.js +0 -30
- package/build/dex/pancakeswap-infinity/config.js.map +0 -1
- package/build/dex/pancakeswap-infinity/constants.d.ts +0 -11
- package/build/dex/pancakeswap-infinity/constants.js +0 -15
- package/build/dex/pancakeswap-infinity/constants.js.map +0 -1
- package/build/dex/pancakeswap-infinity/encoder.d.ts +0 -16
- package/build/dex/pancakeswap-infinity/encoder.js.map +0 -1
- package/build/dex/pancakeswap-infinity/liquidity.d.ts +0 -1
- package/build/dex/pancakeswap-infinity/liquidity.js +0 -7
- package/build/dex/pancakeswap-infinity/liquidity.js.map +0 -1
- package/build/dex/pancakeswap-infinity/optimizer.d.ts +0 -2
- package/build/dex/pancakeswap-infinity/optimizer.js +0 -48
- package/build/dex/pancakeswap-infinity/optimizer.js.map +0 -1
- package/build/dex/pancakeswap-infinity/pancakeswap-infinity-pool-manager.d.ts +0 -36
- package/build/dex/pancakeswap-infinity/pancakeswap-infinity-pool-manager.js +0 -393
- package/build/dex/pancakeswap-infinity/pancakeswap-infinity-pool-manager.js.map +0 -1
- package/build/dex/pancakeswap-infinity/pancakeswap-infinity-pool.d.ts +0 -37
- package/build/dex/pancakeswap-infinity/pancakeswap-infinity-pool.js +0 -289
- package/build/dex/pancakeswap-infinity/pancakeswap-infinity-pool.js.map +0 -1
- package/build/dex/pancakeswap-infinity/pancakeswap-infinity.d.ts +0 -42
- package/build/dex/pancakeswap-infinity/pancakeswap-infinity.js +0 -350
- package/build/dex/pancakeswap-infinity/pancakeswap-infinity.js.map +0 -1
- package/build/dex/pancakeswap-infinity/subgraph.d.ts +0 -8
- package/build/dex/pancakeswap-infinity/subgraph.js +0 -122
- package/build/dex/pancakeswap-infinity/subgraph.js.map +0 -1
- package/build/dex/pancakeswap-infinity/types.d.ts +0 -101
- package/build/dex/pancakeswap-infinity/types.js.map +0 -1
- package/build/dex/pancakeswap-infinity/utils.d.ts +0 -5
- package/build/dex/pancakeswap-infinity/utils.js +0 -45
- package/build/dex/pancakeswap-infinity/utils.js.map +0 -1
- package/build/dex/renegade/api/auth.d.ts +0 -1
- package/build/dex/renegade/api/auth.js +0 -63
- package/build/dex/renegade/api/auth.js.map +0 -1
- package/build/dex/renegade/api/renegade-client.d.ts +0 -18
- package/build/dex/renegade/api/renegade-client.js +0 -82
- package/build/dex/renegade/api/renegade-client.js.map +0 -1
- package/build/dex/renegade/api/types.d.ts +0 -110
- package/build/dex/renegade/config.js +0 -16
- package/build/dex/renegade/config.js.map +0 -1
- package/build/dex/renegade/constants.d.ts +0 -25
- package/build/dex/renegade/constants.js +0 -47
- package/build/dex/renegade/constants.js.map +0 -1
- package/build/dex/renegade/rate-fetcher.d.ts +0 -23
- package/build/dex/renegade/rate-fetcher.js +0 -135
- package/build/dex/renegade/rate-fetcher.js.map +0 -1
- package/build/dex/renegade/renegade-levels-response.d.ts +0 -22
- package/build/dex/renegade/renegade-levels-response.js +0 -99
- package/build/dex/renegade/renegade-levels-response.js.map +0 -1
- package/build/dex/renegade/renegade.d.ts +0 -57
- package/build/dex/renegade/renegade.js +0 -499
- package/build/dex/renegade/renegade.js.map +0 -1
- package/build/dex/renegade/types.d.ts +0 -38
- package/build/dex/renegade/types.js +0 -4
- package/build/dex/renegade/types.js.map +0 -1
- /package/build/dex/{pancakeswap-infinity → bunni-v2}/types.js +0 -0
- /package/build/dex/{renegade/api → concentrator-arusd}/types.js +0 -0
|
@@ -0,0 +1,277 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.LibCarpetedDoubleGeometricDistribution = exports.CarpetedDoubleGeometricDistribution = void 0;
|
|
4
|
+
const utils_1 = require("ethers/lib/utils");
|
|
5
|
+
const ShiftMode_1 = require("./ShiftMode");
|
|
6
|
+
const Constants_1 = require("../lib/Constants");
|
|
7
|
+
const Math_1 = require("../lib/Math");
|
|
8
|
+
const TickMath_1 = require("../lib/TickMath");
|
|
9
|
+
const UniformDistribution_1 = require("./UniformDistribution");
|
|
10
|
+
const DoubleGeometricDistribution_1 = require("./DoubleGeometricDistribution");
|
|
11
|
+
const INITIALIZED_STATE = 1n << 24n;
|
|
12
|
+
class CarpetedDoubleGeometricDistribution {
|
|
13
|
+
static query(key, roundedTick, twapTick, spotPriceTick, ldfParams, ldfState) {
|
|
14
|
+
let shouldSurge = false;
|
|
15
|
+
let params = LibCarpetedDoubleGeometricDistribution.decodeParams(twapTick, key.tickSpacing, ldfParams);
|
|
16
|
+
const { initialized, lastMinTick } = this._decodeState(ldfState);
|
|
17
|
+
if (initialized) {
|
|
18
|
+
params.minTick = (0, ShiftMode_1.enforceShiftMode)(params.minTick, lastMinTick, params.shiftMode);
|
|
19
|
+
shouldSurge = params.minTick !== lastMinTick;
|
|
20
|
+
}
|
|
21
|
+
const { liquidityDensityX96_, cumulativeAmount0DensityX96, cumulativeAmount1DensityX96, } = LibCarpetedDoubleGeometricDistribution.query(roundedTick, key.tickSpacing, params);
|
|
22
|
+
const newLdfState = this._encodeState(params.minTick);
|
|
23
|
+
return {
|
|
24
|
+
liquidityDensityX96_,
|
|
25
|
+
cumulativeAmount0DensityX96,
|
|
26
|
+
cumulativeAmount1DensityX96,
|
|
27
|
+
newLdfState,
|
|
28
|
+
shouldSurge,
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
static computeSwap(key, inverseCumulativeAmountInput, totalLiquidity, zeroForOne, exactIn, twapTick, spotPriceTick, ldfParams, ldfState) {
|
|
32
|
+
let params = LibCarpetedDoubleGeometricDistribution.decodeParams(twapTick, key.tickSpacing, ldfParams);
|
|
33
|
+
const { initialized, lastMinTick } = this._decodeState(ldfState);
|
|
34
|
+
if (initialized) {
|
|
35
|
+
params.minTick = (0, ShiftMode_1.enforceShiftMode)(params.minTick, lastMinTick, params.shiftMode);
|
|
36
|
+
}
|
|
37
|
+
return LibCarpetedDoubleGeometricDistribution.computeSwap(inverseCumulativeAmountInput, totalLiquidity, zeroForOne, exactIn, key.tickSpacing, params);
|
|
38
|
+
}
|
|
39
|
+
static cumulativeAmount0(key, roundedTick, totalLiquidity, twapTick, spotPriceTick, ldfParams, ldfState) {
|
|
40
|
+
let params = LibCarpetedDoubleGeometricDistribution.decodeParams(twapTick, key.tickSpacing, ldfParams);
|
|
41
|
+
const { initialized, lastMinTick } = this._decodeState(ldfState);
|
|
42
|
+
if (initialized) {
|
|
43
|
+
params.minTick = (0, ShiftMode_1.enforceShiftMode)(params.minTick, lastMinTick, params.shiftMode);
|
|
44
|
+
}
|
|
45
|
+
return LibCarpetedDoubleGeometricDistribution.cumulativeAmount0(roundedTick, totalLiquidity, key.tickSpacing, params);
|
|
46
|
+
}
|
|
47
|
+
static cumulativeAmount1(key, roundedTick, totalLiquidity, twapTick, spotPriceTick, ldfParams, ldfState) {
|
|
48
|
+
let params = LibCarpetedDoubleGeometricDistribution.decodeParams(twapTick, key.tickSpacing, ldfParams);
|
|
49
|
+
const { initialized, lastMinTick } = this._decodeState(ldfState);
|
|
50
|
+
if (initialized) {
|
|
51
|
+
params.minTick = (0, ShiftMode_1.enforceShiftMode)(params.minTick, lastMinTick, params.shiftMode);
|
|
52
|
+
}
|
|
53
|
+
return LibCarpetedDoubleGeometricDistribution.cumulativeAmount1(roundedTick, totalLiquidity, key.tickSpacing, params);
|
|
54
|
+
}
|
|
55
|
+
static _decodeState(ldfState) {
|
|
56
|
+
const initialized = BigInt.asUintN(8, BigInt(`0x${ldfState.slice(2, 4)}`)) === 1n;
|
|
57
|
+
const lastMinTick = BigInt.asIntN(24, BigInt.asUintN(24, BigInt(`0x${ldfState.slice(4, 10)}`)));
|
|
58
|
+
return { initialized, lastMinTick };
|
|
59
|
+
}
|
|
60
|
+
static _encodeState(lastMinTick) {
|
|
61
|
+
const lastMinTickUnsigned = lastMinTick & 0xffffffn;
|
|
62
|
+
const combined = INITIALIZED_STATE + lastMinTickUnsigned;
|
|
63
|
+
const hexCombined = (0, utils_1.hexlify)(combined).slice(2);
|
|
64
|
+
const paddedHex = hexCombined.padEnd(64, '0');
|
|
65
|
+
return `0x${paddedHex}`;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
exports.CarpetedDoubleGeometricDistribution = CarpetedDoubleGeometricDistribution;
|
|
69
|
+
const SCALED_Q96 = 0x10000000000000000000000000n;
|
|
70
|
+
const QUERY_SCALE_SHIFT = 4n;
|
|
71
|
+
class LibCarpetedDoubleGeometricDistribution {
|
|
72
|
+
static query(roundedTick, tickSpacing, params) {
|
|
73
|
+
let cumulativeAmount0DensityX96;
|
|
74
|
+
let cumulativeAmount1DensityX96;
|
|
75
|
+
const liquidityDensityX96_ = this.liquidityDensityX96(roundedTick, tickSpacing, params);
|
|
76
|
+
cumulativeAmount0DensityX96 =
|
|
77
|
+
this.cumulativeAmount0(roundedTick + tickSpacing, SCALED_Q96, tickSpacing, params) >> QUERY_SCALE_SHIFT;
|
|
78
|
+
cumulativeAmount1DensityX96 =
|
|
79
|
+
this.cumulativeAmount1(roundedTick - tickSpacing, SCALED_Q96, tickSpacing, params) >> QUERY_SCALE_SHIFT;
|
|
80
|
+
return {
|
|
81
|
+
liquidityDensityX96_,
|
|
82
|
+
cumulativeAmount0DensityX96,
|
|
83
|
+
cumulativeAmount1DensityX96,
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
static cumulativeAmount0(roundedTick, totalLiquidity, tickSpacing, params) {
|
|
87
|
+
const length = params.length0 + params.length1;
|
|
88
|
+
const { leftCarpetLiquidity, mainLiquidity, rightCarpetLiquidity, minUsableTick, maxUsableTick, } = this.getCarpetedLiquidity(totalLiquidity, tickSpacing, params.minTick, length, params.weightCarpet);
|
|
89
|
+
return (UniformDistribution_1.LibUniformDistribution.cumulativeAmount0(roundedTick, leftCarpetLiquidity, tickSpacing, minUsableTick, params.minTick, true) +
|
|
90
|
+
DoubleGeometricDistribution_1.LibDoubleGeometricDistribution.cumulativeAmount0(roundedTick, mainLiquidity, tickSpacing, params.minTick, params.length0, params.length1, params.alpha0X96, params.alpha1X96, params.weight0, params.weight1) +
|
|
91
|
+
UniformDistribution_1.LibUniformDistribution.cumulativeAmount0(roundedTick, rightCarpetLiquidity, tickSpacing, params.minTick + length * tickSpacing, maxUsableTick, true));
|
|
92
|
+
}
|
|
93
|
+
static cumulativeAmount1(roundedTick, totalLiquidity, tickSpacing, params) {
|
|
94
|
+
const length = params.length0 + params.length1;
|
|
95
|
+
const { leftCarpetLiquidity, mainLiquidity, rightCarpetLiquidity, minUsableTick, maxUsableTick, } = this.getCarpetedLiquidity(totalLiquidity, tickSpacing, params.minTick, length, params.weightCarpet);
|
|
96
|
+
return (UniformDistribution_1.LibUniformDistribution.cumulativeAmount1(roundedTick, leftCarpetLiquidity, tickSpacing, minUsableTick, params.minTick, true) +
|
|
97
|
+
DoubleGeometricDistribution_1.LibDoubleGeometricDistribution.cumulativeAmount1(roundedTick, mainLiquidity, tickSpacing, params.minTick, params.length0, params.length1, params.alpha0X96, params.alpha1X96, params.weight0, params.weight1) +
|
|
98
|
+
UniformDistribution_1.LibUniformDistribution.cumulativeAmount1(roundedTick, rightCarpetLiquidity, tickSpacing, params.minTick + length * tickSpacing, maxUsableTick, true));
|
|
99
|
+
}
|
|
100
|
+
static inverseCumulativeAmount0(cumulativeAmount0_, totalLiquidity, tickSpacing, params) {
|
|
101
|
+
if (cumulativeAmount0_ === 0n) {
|
|
102
|
+
return {
|
|
103
|
+
success: true,
|
|
104
|
+
roundedTick: TickMath_1.TickMath.maxUsableTick(tickSpacing),
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
const length = params.length0 + params.length1;
|
|
108
|
+
const { leftCarpetLiquidity, mainLiquidity, rightCarpetLiquidity, minUsableTick, maxUsableTick, } = this.getCarpetedLiquidity(totalLiquidity, tickSpacing, params.minTick, length, params.weightCarpet);
|
|
109
|
+
const rightCarpetCumulativeAmount0 = UniformDistribution_1.LibUniformDistribution.cumulativeAmount0(params.minTick + length * tickSpacing, rightCarpetLiquidity, tickSpacing, params.minTick + length * tickSpacing, maxUsableTick, true);
|
|
110
|
+
if (cumulativeAmount0_ <= rightCarpetCumulativeAmount0 &&
|
|
111
|
+
rightCarpetLiquidity !== 0n) {
|
|
112
|
+
return UniformDistribution_1.LibUniformDistribution.inverseCumulativeAmount0(cumulativeAmount0_, rightCarpetLiquidity, tickSpacing, params.minTick + length * tickSpacing, maxUsableTick, true);
|
|
113
|
+
}
|
|
114
|
+
else {
|
|
115
|
+
let remainder = cumulativeAmount0_ - rightCarpetCumulativeAmount0;
|
|
116
|
+
const mainCumulativeAmount0 = DoubleGeometricDistribution_1.LibDoubleGeometricDistribution.cumulativeAmount0(params.minTick, mainLiquidity, tickSpacing, params.minTick, params.length0, params.length1, params.alpha0X96, params.alpha1X96, params.weight0, params.weight1);
|
|
117
|
+
if (remainder <= mainCumulativeAmount0) {
|
|
118
|
+
return DoubleGeometricDistribution_1.LibDoubleGeometricDistribution.inverseCumulativeAmount0(remainder, mainLiquidity, tickSpacing, params.minTick, params.length0, params.length1, params.alpha0X96, params.alpha1X96, params.weight0, params.weight1);
|
|
119
|
+
}
|
|
120
|
+
else if (leftCarpetLiquidity !== 0n) {
|
|
121
|
+
remainder -= mainCumulativeAmount0;
|
|
122
|
+
return UniformDistribution_1.LibUniformDistribution.inverseCumulativeAmount0(remainder, leftCarpetLiquidity, tickSpacing, minUsableTick, params.minTick, true);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
return { success: false, roundedTick: 0n };
|
|
126
|
+
}
|
|
127
|
+
static inverseCumulativeAmount1(cumulativeAmount1_, totalLiquidity, tickSpacing, params) {
|
|
128
|
+
if (cumulativeAmount1_ === 0n) {
|
|
129
|
+
return {
|
|
130
|
+
success: true,
|
|
131
|
+
roundedTick: TickMath_1.TickMath.minUsableTick(tickSpacing) - tickSpacing,
|
|
132
|
+
};
|
|
133
|
+
}
|
|
134
|
+
const length = params.length0 + params.length1;
|
|
135
|
+
const { leftCarpetLiquidity, mainLiquidity, rightCarpetLiquidity, minUsableTick, maxUsableTick, } = this.getCarpetedLiquidity(totalLiquidity, tickSpacing, params.minTick, length, params.weightCarpet);
|
|
136
|
+
const leftCarpetCumulativeAmount1 = UniformDistribution_1.LibUniformDistribution.cumulativeAmount1(params.minTick, leftCarpetLiquidity, tickSpacing, minUsableTick, params.minTick, true);
|
|
137
|
+
if (cumulativeAmount1_ <= leftCarpetCumulativeAmount1 &&
|
|
138
|
+
leftCarpetLiquidity !== 0n) {
|
|
139
|
+
return UniformDistribution_1.LibUniformDistribution.inverseCumulativeAmount1(cumulativeAmount1_, leftCarpetLiquidity, tickSpacing, minUsableTick, params.minTick, true);
|
|
140
|
+
}
|
|
141
|
+
else {
|
|
142
|
+
let remainder = cumulativeAmount1_ - leftCarpetCumulativeAmount1;
|
|
143
|
+
const mainCumulativeAmount1 = DoubleGeometricDistribution_1.LibDoubleGeometricDistribution.cumulativeAmount1(params.minTick + length * tickSpacing, mainLiquidity, tickSpacing, params.minTick, params.length0, params.length1, params.alpha0X96, params.alpha1X96, params.weight0, params.weight1);
|
|
144
|
+
if (remainder <= mainCumulativeAmount1) {
|
|
145
|
+
return DoubleGeometricDistribution_1.LibDoubleGeometricDistribution.inverseCumulativeAmount1(remainder, mainLiquidity, tickSpacing, params.minTick, params.length0, params.length1, params.alpha0X96, params.alpha1X96, params.weight0, params.weight1);
|
|
146
|
+
}
|
|
147
|
+
else if (rightCarpetLiquidity !== 0n) {
|
|
148
|
+
remainder -= mainCumulativeAmount1;
|
|
149
|
+
return UniformDistribution_1.LibUniformDistribution.inverseCumulativeAmount1(remainder, rightCarpetLiquidity, tickSpacing, params.minTick + length * tickSpacing, maxUsableTick, true);
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
return { success: false, roundedTick: 0n };
|
|
153
|
+
}
|
|
154
|
+
static liquidityDensityX96(roundedTick, tickSpacing, params) {
|
|
155
|
+
const length = params.length0 + params.length1;
|
|
156
|
+
if (roundedTick >= params.minTick &&
|
|
157
|
+
roundedTick < params.minTick + length * tickSpacing) {
|
|
158
|
+
return (0, Math_1.mulWad)(DoubleGeometricDistribution_1.LibDoubleGeometricDistribution.liquidityDensityX96(roundedTick, tickSpacing, params.minTick, params.length0, params.length1, params.alpha0X96, params.alpha1X96, params.weight0, params.weight1), Constants_1.WAD - params.weightCarpet);
|
|
159
|
+
}
|
|
160
|
+
else {
|
|
161
|
+
const [minUsableTick, maxUsableTick] = [
|
|
162
|
+
TickMath_1.TickMath.minUsableTick(tickSpacing),
|
|
163
|
+
TickMath_1.TickMath.maxUsableTick(tickSpacing),
|
|
164
|
+
];
|
|
165
|
+
const numRoundedTicksCarpeted = (maxUsableTick - minUsableTick) / tickSpacing - length;
|
|
166
|
+
if (numRoundedTicksCarpeted <= 0n) {
|
|
167
|
+
return 0n;
|
|
168
|
+
}
|
|
169
|
+
const mainLiquidity = (0, Math_1.mulWad)(Constants_1.Q96, Constants_1.WAD - params.weightCarpet);
|
|
170
|
+
const carpetLiquidity = Constants_1.Q96 - mainLiquidity;
|
|
171
|
+
// return carpetLiquidity / numRoundedTicksCarpeted;
|
|
172
|
+
return (0, Math_1.divUp)(carpetLiquidity, numRoundedTicksCarpeted);
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
static computeSwap(inverseCumulativeAmountInput, totalLiquidity, zeroForOne, exactIn, tickSpacing, params) {
|
|
176
|
+
let success = false;
|
|
177
|
+
let roundedTick = 0n;
|
|
178
|
+
let cumulativeAmount0_ = 0n;
|
|
179
|
+
let cumulativeAmount1_ = 0n;
|
|
180
|
+
let swapLiquidity = 0n;
|
|
181
|
+
if (exactIn === zeroForOne) {
|
|
182
|
+
({ success, roundedTick } = this.inverseCumulativeAmount0(inverseCumulativeAmountInput, totalLiquidity, tickSpacing, params));
|
|
183
|
+
if (!success) {
|
|
184
|
+
return {
|
|
185
|
+
success: false,
|
|
186
|
+
roundedTick: 0n,
|
|
187
|
+
cumulativeAmount0_: 0n,
|
|
188
|
+
cumulativeAmount1_: 0n,
|
|
189
|
+
swapLiquidity: 0n,
|
|
190
|
+
};
|
|
191
|
+
}
|
|
192
|
+
cumulativeAmount0_ = exactIn
|
|
193
|
+
? this.cumulativeAmount0(roundedTick + tickSpacing, totalLiquidity, tickSpacing, params)
|
|
194
|
+
: this.cumulativeAmount0(roundedTick, totalLiquidity, tickSpacing, params);
|
|
195
|
+
cumulativeAmount1_ = exactIn
|
|
196
|
+
? this.cumulativeAmount1(roundedTick, totalLiquidity, tickSpacing, params)
|
|
197
|
+
: this.cumulativeAmount1(roundedTick - tickSpacing, totalLiquidity, tickSpacing, params);
|
|
198
|
+
swapLiquidity =
|
|
199
|
+
(this.liquidityDensityX96(roundedTick, tickSpacing, params) *
|
|
200
|
+
totalLiquidity) >>
|
|
201
|
+
96n;
|
|
202
|
+
}
|
|
203
|
+
else {
|
|
204
|
+
({ success, roundedTick } = this.inverseCumulativeAmount1(inverseCumulativeAmountInput, totalLiquidity, tickSpacing, params));
|
|
205
|
+
if (!success) {
|
|
206
|
+
return {
|
|
207
|
+
success: false,
|
|
208
|
+
roundedTick: 0n,
|
|
209
|
+
cumulativeAmount0_: 0n,
|
|
210
|
+
cumulativeAmount1_: 0n,
|
|
211
|
+
swapLiquidity: 0n,
|
|
212
|
+
};
|
|
213
|
+
}
|
|
214
|
+
cumulativeAmount1_ = exactIn
|
|
215
|
+
? this.cumulativeAmount1(roundedTick - tickSpacing, totalLiquidity, tickSpacing, params)
|
|
216
|
+
: this.cumulativeAmount1(roundedTick, totalLiquidity, tickSpacing, params);
|
|
217
|
+
cumulativeAmount0_ = exactIn
|
|
218
|
+
? this.cumulativeAmount0(roundedTick, totalLiquidity, tickSpacing, params)
|
|
219
|
+
: this.cumulativeAmount0(roundedTick + tickSpacing, totalLiquidity, tickSpacing, params);
|
|
220
|
+
swapLiquidity =
|
|
221
|
+
(this.liquidityDensityX96(roundedTick, tickSpacing, params) *
|
|
222
|
+
totalLiquidity) >>
|
|
223
|
+
96n;
|
|
224
|
+
}
|
|
225
|
+
return {
|
|
226
|
+
success,
|
|
227
|
+
roundedTick,
|
|
228
|
+
cumulativeAmount0_,
|
|
229
|
+
cumulativeAmount1_,
|
|
230
|
+
swapLiquidity,
|
|
231
|
+
};
|
|
232
|
+
}
|
|
233
|
+
static getCarpetedLiquidity(totalLiquidity, tickSpacing, minTick, length, weightCarpet) {
|
|
234
|
+
const [minUsableTick, maxUsableTick] = [
|
|
235
|
+
TickMath_1.TickMath.minUsableTick(tickSpacing),
|
|
236
|
+
TickMath_1.TickMath.maxUsableTick(tickSpacing),
|
|
237
|
+
];
|
|
238
|
+
const numRoundedTicksCarpeted = (maxUsableTick - minUsableTick) / tickSpacing - length;
|
|
239
|
+
if (numRoundedTicksCarpeted <= 0n) {
|
|
240
|
+
return {
|
|
241
|
+
leftCarpetLiquidity: 0n,
|
|
242
|
+
mainLiquidity: totalLiquidity,
|
|
243
|
+
rightCarpetLiquidity: 0n,
|
|
244
|
+
minUsableTick,
|
|
245
|
+
maxUsableTick,
|
|
246
|
+
};
|
|
247
|
+
}
|
|
248
|
+
const mainLiquidity = (0, Math_1.mulWad)(totalLiquidity, Constants_1.WAD - weightCarpet);
|
|
249
|
+
const carpetLiquidity = totalLiquidity - mainLiquidity;
|
|
250
|
+
const rightCarpetLiquidity = (0, Math_1.mulDiv)(carpetLiquidity, (maxUsableTick - minTick) / tickSpacing - length, numRoundedTicksCarpeted);
|
|
251
|
+
const leftCarpetLiquidity = carpetLiquidity - rightCarpetLiquidity;
|
|
252
|
+
return {
|
|
253
|
+
leftCarpetLiquidity,
|
|
254
|
+
mainLiquidity,
|
|
255
|
+
rightCarpetLiquidity,
|
|
256
|
+
minUsableTick,
|
|
257
|
+
maxUsableTick,
|
|
258
|
+
};
|
|
259
|
+
}
|
|
260
|
+
static decodeParams(twapTick, tickSpacing, ldfParams) {
|
|
261
|
+
const weightCarpet = BigInt.asUintN(32, BigInt(`0x${ldfParams.slice(50, 58)}`));
|
|
262
|
+
const { minTick, length0, length1, alpha0X96, alpha1X96, weight0, weight1, shiftMode, } = DoubleGeometricDistribution_1.LibDoubleGeometricDistribution.decodeParams(twapTick, tickSpacing, ldfParams);
|
|
263
|
+
return {
|
|
264
|
+
minTick,
|
|
265
|
+
length0,
|
|
266
|
+
length1,
|
|
267
|
+
alpha0X96,
|
|
268
|
+
alpha1X96,
|
|
269
|
+
weight0,
|
|
270
|
+
weight1,
|
|
271
|
+
weightCarpet,
|
|
272
|
+
shiftMode,
|
|
273
|
+
};
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
exports.LibCarpetedDoubleGeometricDistribution = LibCarpetedDoubleGeometricDistribution;
|
|
277
|
+
//# sourceMappingURL=CarpetedDoubleGeometricDistribution.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CarpetedDoubleGeometricDistribution.js","sourceRoot":"","sources":["../../../../src/dex/bunni-v2/ldf/CarpetedDoubleGeometricDistribution.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { PoolKey } from '../types';
|
|
2
|
+
import { ShiftMode } from './ShiftMode';
|
|
3
|
+
export declare abstract class CarpetedGeometricDistribution {
|
|
4
|
+
static query(key: PoolKey, roundedTick: bigint, twapTick: bigint, spotPriceTick: bigint, ldfParams: string, ldfState: string): {
|
|
5
|
+
liquidityDensityX96_: bigint;
|
|
6
|
+
cumulativeAmount0DensityX96: bigint;
|
|
7
|
+
cumulativeAmount1DensityX96: bigint;
|
|
8
|
+
newLdfState: string;
|
|
9
|
+
shouldSurge: boolean;
|
|
10
|
+
};
|
|
11
|
+
static computeSwap(key: PoolKey, inverseCumulativeAmountInput: bigint, totalLiquidity: bigint, zeroForOne: boolean, exactIn: boolean, twapTick: bigint, spotPriceTick: bigint, ldfParams: string, ldfState: string): {
|
|
12
|
+
success: boolean;
|
|
13
|
+
roundedTick: bigint;
|
|
14
|
+
cumulativeAmount0_: bigint;
|
|
15
|
+
cumulativeAmount1_: bigint;
|
|
16
|
+
swapLiquidity: bigint;
|
|
17
|
+
};
|
|
18
|
+
static cumulativeAmount0(key: PoolKey, roundedTick: bigint, totalLiquidity: bigint, twapTick: bigint, spotPriceTick: bigint, ldfParams: string, ldfState: string): bigint;
|
|
19
|
+
static cumulativeAmount1(key: PoolKey, roundedTick: bigint, totalLiquidity: bigint, twapTick: bigint, spotPriceTick: bigint, ldfParams: string, ldfState: string): bigint;
|
|
20
|
+
static _decodeState(ldfState: string): {
|
|
21
|
+
initialized: boolean;
|
|
22
|
+
lastMinTick: bigint;
|
|
23
|
+
};
|
|
24
|
+
static _encodeState(lastMinTick: bigint): string;
|
|
25
|
+
}
|
|
26
|
+
export declare abstract class LibCarpetedGeometricDistribution {
|
|
27
|
+
static query(roundedTick: bigint, tickSpacing: bigint, minTick: bigint, length: bigint, alphaX96: bigint, weightCarpet: bigint): {
|
|
28
|
+
liquidityDensityX96_: bigint;
|
|
29
|
+
cumulativeAmount0DensityX96: bigint;
|
|
30
|
+
cumulativeAmount1DensityX96: bigint;
|
|
31
|
+
};
|
|
32
|
+
static cumulativeAmount0(roundedTick: bigint, totalLiquidity: bigint, tickSpacing: bigint, minTick: bigint, length: bigint, alphaX96: bigint, weightCarpet: bigint): bigint;
|
|
33
|
+
static cumulativeAmount1(roundedTick: bigint, totalLiquidity: bigint, tickSpacing: bigint, minTick: bigint, length: bigint, alphaX96: bigint, weightCarpet: bigint): bigint;
|
|
34
|
+
static inverseCumulativeAmount0(cumulativeAmount0_: bigint, totalLiquidity: bigint, tickSpacing: bigint, minTick: bigint, length: bigint, alphaX96: bigint, weightCarpet: bigint): {
|
|
35
|
+
success: boolean;
|
|
36
|
+
roundedTick: bigint;
|
|
37
|
+
};
|
|
38
|
+
static inverseCumulativeAmount1(cumulativeAmount1_: bigint, totalLiquidity: bigint, tickSpacing: bigint, minTick: bigint, length: bigint, alphaX96: bigint, weightCarpet: bigint): {
|
|
39
|
+
success: boolean;
|
|
40
|
+
roundedTick: bigint;
|
|
41
|
+
};
|
|
42
|
+
static liquidityDensityX96(roundedTick: bigint, tickSpacing: bigint, minTick: bigint, length: bigint, alphaX96: bigint, weightCarpet: bigint): bigint;
|
|
43
|
+
static computeSwap(inverseCumulativeAmountInput: bigint, totalLiquidity: bigint, zeroForOne: boolean, exactIn: boolean, tickSpacing: bigint, minTick: bigint, length: bigint, alphaX96: bigint, weightCarpet: bigint): {
|
|
44
|
+
success: boolean;
|
|
45
|
+
roundedTick: bigint;
|
|
46
|
+
cumulativeAmount0_: bigint;
|
|
47
|
+
cumulativeAmount1_: bigint;
|
|
48
|
+
swapLiquidity: bigint;
|
|
49
|
+
};
|
|
50
|
+
static getCarpetedLiquidity(totalLiquidity: bigint, tickSpacing: bigint, minTick: bigint, length: bigint, weightCarpet: bigint): {
|
|
51
|
+
leftCarpetLiquidity: bigint;
|
|
52
|
+
mainLiquidity: bigint;
|
|
53
|
+
rightCarpetLiquidity: bigint;
|
|
54
|
+
minUsableTick: bigint;
|
|
55
|
+
maxUsableTick: bigint;
|
|
56
|
+
};
|
|
57
|
+
static decodeParams(twapTick: bigint, tickSpacing: bigint, ldfParams: string): {
|
|
58
|
+
minTick: bigint;
|
|
59
|
+
length: bigint;
|
|
60
|
+
alphaX96: bigint;
|
|
61
|
+
weightCarpet: bigint;
|
|
62
|
+
shiftMode: ShiftMode;
|
|
63
|
+
};
|
|
64
|
+
}
|
|
@@ -0,0 +1,262 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.LibCarpetedGeometricDistribution = exports.CarpetedGeometricDistribution = void 0;
|
|
4
|
+
const utils_1 = require("ethers/lib/utils");
|
|
5
|
+
const ShiftMode_1 = require("./ShiftMode");
|
|
6
|
+
const Constants_1 = require("../lib/Constants");
|
|
7
|
+
const Math_1 = require("../lib/Math");
|
|
8
|
+
const TickMath_1 = require("../lib/TickMath");
|
|
9
|
+
const UniformDistribution_1 = require("./UniformDistribution");
|
|
10
|
+
const GeometricDistribution_1 = require("./GeometricDistribution");
|
|
11
|
+
const INITIALIZED_STATE = 1n << 24n;
|
|
12
|
+
class CarpetedGeometricDistribution {
|
|
13
|
+
static query(key, roundedTick, twapTick, spotPriceTick, ldfParams, ldfState) {
|
|
14
|
+
let shouldSurge = false;
|
|
15
|
+
let { minTick, length, alphaX96, weightCarpet, shiftMode } = LibCarpetedGeometricDistribution.decodeParams(twapTick, key.tickSpacing, ldfParams);
|
|
16
|
+
const { initialized, lastMinTick } = this._decodeState(ldfState);
|
|
17
|
+
if (initialized) {
|
|
18
|
+
minTick = (0, ShiftMode_1.enforceShiftMode)(minTick, lastMinTick, shiftMode);
|
|
19
|
+
shouldSurge = minTick !== lastMinTick;
|
|
20
|
+
}
|
|
21
|
+
const { liquidityDensityX96_, cumulativeAmount0DensityX96, cumulativeAmount1DensityX96, } = LibCarpetedGeometricDistribution.query(roundedTick, key.tickSpacing, minTick, length, alphaX96, weightCarpet);
|
|
22
|
+
const newLdfState = this._encodeState(minTick);
|
|
23
|
+
return {
|
|
24
|
+
liquidityDensityX96_,
|
|
25
|
+
cumulativeAmount0DensityX96,
|
|
26
|
+
cumulativeAmount1DensityX96,
|
|
27
|
+
newLdfState,
|
|
28
|
+
shouldSurge,
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
static computeSwap(key, inverseCumulativeAmountInput, totalLiquidity, zeroForOne, exactIn, twapTick, spotPriceTick, ldfParams, ldfState) {
|
|
32
|
+
let { minTick, length, alphaX96, weightCarpet, shiftMode } = LibCarpetedGeometricDistribution.decodeParams(twapTick, key.tickSpacing, ldfParams);
|
|
33
|
+
const { initialized, lastMinTick } = this._decodeState(ldfState);
|
|
34
|
+
if (initialized) {
|
|
35
|
+
minTick = (0, ShiftMode_1.enforceShiftMode)(minTick, lastMinTick, shiftMode);
|
|
36
|
+
}
|
|
37
|
+
return LibCarpetedGeometricDistribution.computeSwap(inverseCumulativeAmountInput, totalLiquidity, zeroForOne, exactIn, key.tickSpacing, minTick, length, alphaX96, weightCarpet);
|
|
38
|
+
}
|
|
39
|
+
static cumulativeAmount0(key, roundedTick, totalLiquidity, twapTick, spotPriceTick, ldfParams, ldfState) {
|
|
40
|
+
let { minTick, length, alphaX96, weightCarpet, shiftMode } = LibCarpetedGeometricDistribution.decodeParams(twapTick, key.tickSpacing, ldfParams);
|
|
41
|
+
const { initialized, lastMinTick } = this._decodeState(ldfState);
|
|
42
|
+
if (initialized) {
|
|
43
|
+
minTick = (0, ShiftMode_1.enforceShiftMode)(minTick, lastMinTick, shiftMode);
|
|
44
|
+
}
|
|
45
|
+
return LibCarpetedGeometricDistribution.cumulativeAmount0(roundedTick, totalLiquidity, key.tickSpacing, minTick, length, alphaX96, weightCarpet);
|
|
46
|
+
}
|
|
47
|
+
static cumulativeAmount1(key, roundedTick, totalLiquidity, twapTick, spotPriceTick, ldfParams, ldfState) {
|
|
48
|
+
let { minTick, length, alphaX96, weightCarpet, shiftMode } = LibCarpetedGeometricDistribution.decodeParams(twapTick, key.tickSpacing, ldfParams);
|
|
49
|
+
const { initialized, lastMinTick } = this._decodeState(ldfState);
|
|
50
|
+
if (initialized) {
|
|
51
|
+
minTick = (0, ShiftMode_1.enforceShiftMode)(minTick, lastMinTick, shiftMode);
|
|
52
|
+
}
|
|
53
|
+
return LibCarpetedGeometricDistribution.cumulativeAmount1(roundedTick, totalLiquidity, key.tickSpacing, minTick, length, alphaX96, weightCarpet);
|
|
54
|
+
}
|
|
55
|
+
static _decodeState(ldfState) {
|
|
56
|
+
const initialized = BigInt.asUintN(8, BigInt(`0x${ldfState.slice(2, 4)}`)) === 1n;
|
|
57
|
+
const lastMinTick = BigInt.asIntN(24, BigInt.asUintN(24, BigInt(`0x${ldfState.slice(4, 10)}`)));
|
|
58
|
+
return { initialized, lastMinTick };
|
|
59
|
+
}
|
|
60
|
+
static _encodeState(lastMinTick) {
|
|
61
|
+
const lastMinTickUnsigned = lastMinTick & 0xffffffn;
|
|
62
|
+
const combined = INITIALIZED_STATE + lastMinTickUnsigned;
|
|
63
|
+
const hexCombined = (0, utils_1.hexlify)(combined).slice(2);
|
|
64
|
+
const paddedHex = hexCombined.padEnd(64, '0');
|
|
65
|
+
return `0x${paddedHex}`;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
exports.CarpetedGeometricDistribution = CarpetedGeometricDistribution;
|
|
69
|
+
const SCALED_Q96 = 0x10000000000000000000000000n;
|
|
70
|
+
const QUERY_SCALE_SHIFT = 4n;
|
|
71
|
+
class LibCarpetedGeometricDistribution {
|
|
72
|
+
static query(roundedTick, tickSpacing, minTick, length, alphaX96, weightCarpet) {
|
|
73
|
+
let cumulativeAmount0DensityX96;
|
|
74
|
+
let cumulativeAmount1DensityX96;
|
|
75
|
+
const liquidityDensityX96_ = this.liquidityDensityX96(roundedTick, tickSpacing, minTick, length, alphaX96, weightCarpet);
|
|
76
|
+
cumulativeAmount0DensityX96 =
|
|
77
|
+
this.cumulativeAmount0(roundedTick + tickSpacing, SCALED_Q96, tickSpacing, minTick, length, alphaX96, weightCarpet) >> QUERY_SCALE_SHIFT;
|
|
78
|
+
cumulativeAmount1DensityX96 =
|
|
79
|
+
this.cumulativeAmount1(roundedTick - tickSpacing, SCALED_Q96, tickSpacing, minTick, length, alphaX96, weightCarpet) >> QUERY_SCALE_SHIFT;
|
|
80
|
+
return {
|
|
81
|
+
liquidityDensityX96_,
|
|
82
|
+
cumulativeAmount0DensityX96,
|
|
83
|
+
cumulativeAmount1DensityX96,
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
static cumulativeAmount0(roundedTick, totalLiquidity, tickSpacing, minTick, length, alphaX96, weightCarpet) {
|
|
87
|
+
const { leftCarpetLiquidity, mainLiquidity, rightCarpetLiquidity, minUsableTick, maxUsableTick, } = this.getCarpetedLiquidity(totalLiquidity, tickSpacing, minTick, length, weightCarpet);
|
|
88
|
+
return (UniformDistribution_1.LibUniformDistribution.cumulativeAmount0(roundedTick, leftCarpetLiquidity, tickSpacing, minUsableTick, minTick, true) +
|
|
89
|
+
GeometricDistribution_1.LibGeometricDistribution.cumulativeAmount0(roundedTick, mainLiquidity, tickSpacing, minTick, length, alphaX96) +
|
|
90
|
+
UniformDistribution_1.LibUniformDistribution.cumulativeAmount0(roundedTick, rightCarpetLiquidity, tickSpacing, minTick + length * tickSpacing, maxUsableTick, true));
|
|
91
|
+
}
|
|
92
|
+
static cumulativeAmount1(roundedTick, totalLiquidity, tickSpacing, minTick, length, alphaX96, weightCarpet) {
|
|
93
|
+
const { leftCarpetLiquidity, mainLiquidity, rightCarpetLiquidity, minUsableTick, maxUsableTick, } = this.getCarpetedLiquidity(totalLiquidity, tickSpacing, minTick, length, weightCarpet);
|
|
94
|
+
return (UniformDistribution_1.LibUniformDistribution.cumulativeAmount1(roundedTick, leftCarpetLiquidity, tickSpacing, minUsableTick, minTick, true) +
|
|
95
|
+
GeometricDistribution_1.LibGeometricDistribution.cumulativeAmount1(roundedTick, mainLiquidity, tickSpacing, minTick, length, alphaX96) +
|
|
96
|
+
UniformDistribution_1.LibUniformDistribution.cumulativeAmount1(roundedTick, rightCarpetLiquidity, tickSpacing, minTick + length * tickSpacing, maxUsableTick, true));
|
|
97
|
+
}
|
|
98
|
+
static inverseCumulativeAmount0(cumulativeAmount0_, totalLiquidity, tickSpacing, minTick, length, alphaX96, weightCarpet) {
|
|
99
|
+
if (cumulativeAmount0_ === 0n) {
|
|
100
|
+
return {
|
|
101
|
+
success: true,
|
|
102
|
+
roundedTick: TickMath_1.TickMath.maxUsableTick(tickSpacing),
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
const { leftCarpetLiquidity, mainLiquidity, rightCarpetLiquidity, minUsableTick, maxUsableTick, } = this.getCarpetedLiquidity(totalLiquidity, tickSpacing, minTick, length, weightCarpet);
|
|
106
|
+
const rightCarpetCumulativeAmount0 = UniformDistribution_1.LibUniformDistribution.cumulativeAmount0(minTick + length * tickSpacing, rightCarpetLiquidity, tickSpacing, minTick + length * tickSpacing, maxUsableTick, true);
|
|
107
|
+
if (cumulativeAmount0_ <= rightCarpetCumulativeAmount0 &&
|
|
108
|
+
rightCarpetLiquidity !== 0n) {
|
|
109
|
+
return UniformDistribution_1.LibUniformDistribution.inverseCumulativeAmount0(cumulativeAmount0_, rightCarpetLiquidity, tickSpacing, minTick + length * tickSpacing, maxUsableTick, true);
|
|
110
|
+
}
|
|
111
|
+
else {
|
|
112
|
+
let remainder = cumulativeAmount0_ - rightCarpetCumulativeAmount0;
|
|
113
|
+
const mainCumulativeAmount0 = GeometricDistribution_1.LibGeometricDistribution.cumulativeAmount0(minTick, mainLiquidity, tickSpacing, minTick, length, alphaX96);
|
|
114
|
+
if (remainder <= mainCumulativeAmount0) {
|
|
115
|
+
return GeometricDistribution_1.LibGeometricDistribution.inverseCumulativeAmount0(remainder, mainLiquidity, tickSpacing, minTick, length, alphaX96);
|
|
116
|
+
}
|
|
117
|
+
else if (leftCarpetLiquidity !== 0n) {
|
|
118
|
+
remainder -= mainCumulativeAmount0;
|
|
119
|
+
return UniformDistribution_1.LibUniformDistribution.inverseCumulativeAmount0(remainder, leftCarpetLiquidity, tickSpacing, minUsableTick, minTick, true);
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
return { success: false, roundedTick: 0n };
|
|
123
|
+
}
|
|
124
|
+
static inverseCumulativeAmount1(cumulativeAmount1_, totalLiquidity, tickSpacing, minTick, length, alphaX96, weightCarpet) {
|
|
125
|
+
if (cumulativeAmount1_ === 0n) {
|
|
126
|
+
return {
|
|
127
|
+
success: true,
|
|
128
|
+
roundedTick: TickMath_1.TickMath.minUsableTick(tickSpacing) - tickSpacing,
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
const { leftCarpetLiquidity, mainLiquidity, rightCarpetLiquidity, minUsableTick, maxUsableTick, } = this.getCarpetedLiquidity(totalLiquidity, tickSpacing, minTick, length, weightCarpet);
|
|
132
|
+
const leftCarpetCumulativeAmount1 = UniformDistribution_1.LibUniformDistribution.cumulativeAmount1(minTick, leftCarpetLiquidity, tickSpacing, minUsableTick, minTick, true);
|
|
133
|
+
if (cumulativeAmount1_ <= leftCarpetCumulativeAmount1 &&
|
|
134
|
+
leftCarpetLiquidity !== 0n) {
|
|
135
|
+
return UniformDistribution_1.LibUniformDistribution.inverseCumulativeAmount1(cumulativeAmount1_, leftCarpetLiquidity, tickSpacing, minUsableTick, minTick, true);
|
|
136
|
+
}
|
|
137
|
+
else {
|
|
138
|
+
let remainder = cumulativeAmount1_ - leftCarpetCumulativeAmount1;
|
|
139
|
+
const mainCumulativeAmount1 = GeometricDistribution_1.LibGeometricDistribution.cumulativeAmount1(minTick + length * tickSpacing, mainLiquidity, tickSpacing, minTick, length, alphaX96);
|
|
140
|
+
if (remainder <= mainCumulativeAmount1) {
|
|
141
|
+
return GeometricDistribution_1.LibGeometricDistribution.inverseCumulativeAmount1(remainder, mainLiquidity, tickSpacing, minTick, length, alphaX96);
|
|
142
|
+
}
|
|
143
|
+
else if (rightCarpetLiquidity !== 0n) {
|
|
144
|
+
remainder -= mainCumulativeAmount1;
|
|
145
|
+
return UniformDistribution_1.LibUniformDistribution.inverseCumulativeAmount1(remainder, rightCarpetLiquidity, tickSpacing, minTick + length * tickSpacing, maxUsableTick, true);
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
return { success: false, roundedTick: 0n };
|
|
149
|
+
}
|
|
150
|
+
static liquidityDensityX96(roundedTick, tickSpacing, minTick, length, alphaX96, weightCarpet) {
|
|
151
|
+
if (roundedTick >= minTick &&
|
|
152
|
+
roundedTick < minTick + length * tickSpacing) {
|
|
153
|
+
return (0, Math_1.mulWad)(GeometricDistribution_1.LibGeometricDistribution.liquidityDensityX96(roundedTick, tickSpacing, minTick, length, alphaX96), Constants_1.WAD - weightCarpet);
|
|
154
|
+
}
|
|
155
|
+
else {
|
|
156
|
+
const [minUsableTick, maxUsableTick] = [
|
|
157
|
+
TickMath_1.TickMath.minUsableTick(tickSpacing),
|
|
158
|
+
TickMath_1.TickMath.maxUsableTick(tickSpacing),
|
|
159
|
+
];
|
|
160
|
+
const numRoundedTicksCarpeted = (maxUsableTick - minUsableTick) / tickSpacing - length;
|
|
161
|
+
if (numRoundedTicksCarpeted <= 0n) {
|
|
162
|
+
return 0n;
|
|
163
|
+
}
|
|
164
|
+
const mainLiquidity = (0, Math_1.mulWad)(Constants_1.Q96, Constants_1.WAD - weightCarpet);
|
|
165
|
+
const carpetLiquidity = Constants_1.Q96 - mainLiquidity;
|
|
166
|
+
return carpetLiquidity / numRoundedTicksCarpeted;
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
static computeSwap(inverseCumulativeAmountInput, totalLiquidity, zeroForOne, exactIn, tickSpacing, minTick, length, alphaX96, weightCarpet) {
|
|
170
|
+
let success = false;
|
|
171
|
+
let roundedTick = 0n;
|
|
172
|
+
let cumulativeAmount0_ = 0n;
|
|
173
|
+
let cumulativeAmount1_ = 0n;
|
|
174
|
+
let swapLiquidity = 0n;
|
|
175
|
+
if (exactIn === zeroForOne) {
|
|
176
|
+
({ success, roundedTick } = this.inverseCumulativeAmount0(inverseCumulativeAmountInput, totalLiquidity, tickSpacing, minTick, length, alphaX96, weightCarpet));
|
|
177
|
+
if (!success) {
|
|
178
|
+
return {
|
|
179
|
+
success: false,
|
|
180
|
+
roundedTick: 0n,
|
|
181
|
+
cumulativeAmount0_: 0n,
|
|
182
|
+
cumulativeAmount1_: 0n,
|
|
183
|
+
swapLiquidity: 0n,
|
|
184
|
+
};
|
|
185
|
+
}
|
|
186
|
+
cumulativeAmount0_ = exactIn
|
|
187
|
+
? this.cumulativeAmount0(roundedTick + tickSpacing, totalLiquidity, tickSpacing, minTick, length, alphaX96, weightCarpet)
|
|
188
|
+
: this.cumulativeAmount0(roundedTick, totalLiquidity, tickSpacing, minTick, length, alphaX96, weightCarpet);
|
|
189
|
+
cumulativeAmount1_ = exactIn
|
|
190
|
+
? this.cumulativeAmount1(roundedTick, totalLiquidity, tickSpacing, minTick, length, alphaX96, weightCarpet)
|
|
191
|
+
: this.cumulativeAmount1(roundedTick - tickSpacing, totalLiquidity, tickSpacing, minTick, length, alphaX96, weightCarpet);
|
|
192
|
+
swapLiquidity =
|
|
193
|
+
(this.liquidityDensityX96(roundedTick, tickSpacing, minTick, length, alphaX96, weightCarpet) *
|
|
194
|
+
totalLiquidity) >>
|
|
195
|
+
96n;
|
|
196
|
+
}
|
|
197
|
+
else {
|
|
198
|
+
({ success, roundedTick } = this.inverseCumulativeAmount1(inverseCumulativeAmountInput, totalLiquidity, tickSpacing, minTick, length, alphaX96, weightCarpet));
|
|
199
|
+
if (!success) {
|
|
200
|
+
return {
|
|
201
|
+
success: false,
|
|
202
|
+
roundedTick: 0n,
|
|
203
|
+
cumulativeAmount0_: 0n,
|
|
204
|
+
cumulativeAmount1_: 0n,
|
|
205
|
+
swapLiquidity: 0n,
|
|
206
|
+
};
|
|
207
|
+
}
|
|
208
|
+
cumulativeAmount1_ = exactIn
|
|
209
|
+
? this.cumulativeAmount1(roundedTick - tickSpacing, totalLiquidity, tickSpacing, minTick, length, alphaX96, weightCarpet)
|
|
210
|
+
: this.cumulativeAmount1(roundedTick, totalLiquidity, tickSpacing, minTick, length, alphaX96, weightCarpet);
|
|
211
|
+
cumulativeAmount0_ = exactIn
|
|
212
|
+
? this.cumulativeAmount0(roundedTick, totalLiquidity, tickSpacing, minTick, length, alphaX96, weightCarpet)
|
|
213
|
+
: this.cumulativeAmount0(roundedTick + tickSpacing, totalLiquidity, tickSpacing, minTick, length, alphaX96, weightCarpet);
|
|
214
|
+
swapLiquidity =
|
|
215
|
+
(this.liquidityDensityX96(roundedTick, tickSpacing, minTick, length, alphaX96, weightCarpet) *
|
|
216
|
+
totalLiquidity) >>
|
|
217
|
+
96n;
|
|
218
|
+
}
|
|
219
|
+
return {
|
|
220
|
+
success,
|
|
221
|
+
roundedTick,
|
|
222
|
+
cumulativeAmount0_,
|
|
223
|
+
cumulativeAmount1_,
|
|
224
|
+
swapLiquidity,
|
|
225
|
+
};
|
|
226
|
+
}
|
|
227
|
+
static getCarpetedLiquidity(totalLiquidity, tickSpacing, minTick, length, weightCarpet) {
|
|
228
|
+
const [minUsableTick, maxUsableTick] = [
|
|
229
|
+
TickMath_1.TickMath.minUsableTick(tickSpacing),
|
|
230
|
+
TickMath_1.TickMath.maxUsableTick(tickSpacing),
|
|
231
|
+
];
|
|
232
|
+
const numRoundedTicksCarpeted = (maxUsableTick - minUsableTick) / tickSpacing - length;
|
|
233
|
+
if (numRoundedTicksCarpeted <= 0n) {
|
|
234
|
+
return {
|
|
235
|
+
leftCarpetLiquidity: 0n,
|
|
236
|
+
mainLiquidity: totalLiquidity,
|
|
237
|
+
rightCarpetLiquidity: 0n,
|
|
238
|
+
minUsableTick,
|
|
239
|
+
maxUsableTick,
|
|
240
|
+
};
|
|
241
|
+
}
|
|
242
|
+
const mainLiquidity = (0, Math_1.mulWad)(totalLiquidity, Constants_1.WAD - weightCarpet);
|
|
243
|
+
const carpetLiquidity = totalLiquidity - mainLiquidity;
|
|
244
|
+
const rightCarpetNumRoundedTicks = (maxUsableTick - minTick) / tickSpacing - length;
|
|
245
|
+
const rightCarpetLiquidity = (0, Math_1.mulDiv)(carpetLiquidity, rightCarpetNumRoundedTicks, numRoundedTicksCarpeted);
|
|
246
|
+
const leftCarpetLiquidity = carpetLiquidity - rightCarpetLiquidity;
|
|
247
|
+
return {
|
|
248
|
+
leftCarpetLiquidity,
|
|
249
|
+
mainLiquidity,
|
|
250
|
+
rightCarpetLiquidity,
|
|
251
|
+
minUsableTick,
|
|
252
|
+
maxUsableTick,
|
|
253
|
+
};
|
|
254
|
+
}
|
|
255
|
+
static decodeParams(twapTick, tickSpacing, ldfParams) {
|
|
256
|
+
const weightCarpet = BigInt.asUintN(32, BigInt(`0x${ldfParams.slice(22, 30)}`));
|
|
257
|
+
const { minTick, length, alphaX96, shiftMode } = GeometricDistribution_1.LibGeometricDistribution.decodeParams(twapTick, tickSpacing, ldfParams);
|
|
258
|
+
return { minTick, length, alphaX96, weightCarpet, shiftMode };
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
exports.LibCarpetedGeometricDistribution = LibCarpetedGeometricDistribution;
|
|
262
|
+
//# sourceMappingURL=CarpetedGeometricDistribution.js.map
|