@paraswap/dex-lib 4.5.10 → 4.5.12-fluid-dex-lite.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (199) hide show
  1. package/build/abi/bunni-v2/BunniHook.abi.json +1921 -0
  2. package/build/abi/bunni-v2/BunniHub.abi.json +1598 -0
  3. package/build/abi/bunni-v2/BunniToken.abi.json +833 -0
  4. package/build/abi/bunni-v2/FeeOverrideHooklet.abi.json +1947 -0
  5. package/build/abi/bunni-v2/FloodPlain.abi.json +1195 -0
  6. package/build/abi/bunni-v2/PoolManager.abi.json +1366 -0
  7. package/build/abi/bunni-v2/V4Quoter.abi.json +637 -0
  8. package/build/abi/fluid-dex-lite/FluidDexLite.abi.json +262 -0
  9. package/build/abi/miro-migrator/MiroMigrator.abi.json +19 -36
  10. package/build/abi/pangolin-v3/PangolinV3StateMulticall.abi.json +796 -0
  11. package/build/abi/ring-v2/few-wrapped-token.json +587 -0
  12. package/build/abi/ring-v2/ring-v2-factory.json +125 -0
  13. package/build/abi/ring-v2/ring-v2-pool.json +461 -0
  14. package/build/abi/ring-v2/ring-v2-router.json +332 -0
  15. package/build/abi/uniswap-v4/hooks/cabalcoin-hook.abi.json +682 -0
  16. package/build/abi/uniswap-v4/hooks/fee-hook.abi.json +1335 -0
  17. package/build/config.js +13 -13
  18. package/build/dex/balancer-v3/config.d.ts +1 -1
  19. package/build/dex/balancer-v3/config.js +23 -1
  20. package/build/dex/balancer-v3/config.js.map +1 -1
  21. package/build/dex/bunni-v2/bunni-v2-pool.d.ts +61 -0
  22. package/build/dex/bunni-v2/bunni-v2-pool.js +495 -0
  23. package/build/dex/bunni-v2/bunni-v2-pool.js.map +1 -0
  24. package/build/dex/bunni-v2/bunni-v2.d.ts +49 -0
  25. package/build/dex/bunni-v2/bunni-v2.js +435 -0
  26. package/build/dex/bunni-v2/bunni-v2.js.map +1 -0
  27. package/build/dex/bunni-v2/config.d.ts +3 -0
  28. package/build/dex/bunni-v2/config.js +130 -0
  29. package/build/dex/bunni-v2/config.js.map +1 -0
  30. package/build/dex/bunni-v2/encoder.d.ts +19 -0
  31. package/build/dex/bunni-v2/encoder.js +400 -0
  32. package/build/dex/bunni-v2/encoder.js.map +1 -0
  33. package/build/dex/bunni-v2/getOnChainState.d.ts +25 -0
  34. package/build/dex/bunni-v2/getOnChainState.js +455 -0
  35. package/build/dex/bunni-v2/getOnChainState.js.map +1 -0
  36. package/build/dex/bunni-v2/hook/BunniSwapMath.d.ts +7 -0
  37. package/build/dex/bunni-v2/hook/BunniSwapMath.js +198 -0
  38. package/build/dex/bunni-v2/hook/BunniSwapMath.js.map +1 -0
  39. package/build/dex/bunni-v2/hook/SwapMath.d.ts +8 -0
  40. package/build/dex/bunni-v2/hook/SwapMath.js +65 -0
  41. package/build/dex/bunni-v2/hook/SwapMath.js.map +1 -0
  42. package/build/dex/bunni-v2/hooklet/FeeOverrideHooklet.d.ts +33 -0
  43. package/build/dex/bunni-v2/hooklet/FeeOverrideHooklet.js +33 -0
  44. package/build/dex/bunni-v2/hooklet/FeeOverrideHooklet.js.map +1 -0
  45. package/build/dex/bunni-v2/hooklet/index.d.ts +21 -0
  46. package/build/dex/bunni-v2/hooklet/index.js +64 -0
  47. package/build/dex/bunni-v2/hooklet/index.js.map +1 -0
  48. package/build/dex/bunni-v2/ldf/CarpetedDoubleGeometricDistribution.d.ts +70 -0
  49. package/build/dex/bunni-v2/ldf/CarpetedDoubleGeometricDistribution.js +277 -0
  50. package/build/dex/bunni-v2/ldf/CarpetedDoubleGeometricDistribution.js.map +1 -0
  51. package/build/dex/bunni-v2/ldf/CarpetedGeometricDistribution.d.ts +64 -0
  52. package/build/dex/bunni-v2/ldf/CarpetedGeometricDistribution.js +262 -0
  53. package/build/dex/bunni-v2/ldf/CarpetedGeometricDistribution.js.map +1 -0
  54. package/build/dex/bunni-v2/ldf/DoubleGeometricDistribution.d.ts +60 -0
  55. package/build/dex/bunni-v2/ldf/DoubleGeometricDistribution.js +224 -0
  56. package/build/dex/bunni-v2/ldf/DoubleGeometricDistribution.js.map +1 -0
  57. package/build/dex/bunni-v2/ldf/GeometricDistribution.d.ts +56 -0
  58. package/build/dex/bunni-v2/ldf/GeometricDistribution.js +489 -0
  59. package/build/dex/bunni-v2/ldf/GeometricDistribution.js.map +1 -0
  60. package/build/dex/bunni-v2/ldf/LDFType.d.ts +5 -0
  61. package/build/dex/bunni-v2/ldf/LDFType.js +10 -0
  62. package/build/dex/bunni-v2/ldf/LDFType.js.map +1 -0
  63. package/build/dex/bunni-v2/ldf/ShiftMode.d.ts +7 -0
  64. package/build/dex/bunni-v2/ldf/ShiftMode.js +19 -0
  65. package/build/dex/bunni-v2/ldf/ShiftMode.js.map +1 -0
  66. package/build/dex/bunni-v2/ldf/UniformDistribution.d.ts +55 -0
  67. package/build/dex/bunni-v2/ldf/UniformDistribution.js +291 -0
  68. package/build/dex/bunni-v2/ldf/UniformDistribution.js.map +1 -0
  69. package/build/dex/bunni-v2/ldf/index.d.ts +15 -0
  70. package/build/dex/bunni-v2/ldf/index.js +21 -0
  71. package/build/dex/bunni-v2/ldf/index.js.map +1 -0
  72. package/build/dex/bunni-v2/lib/AmAmmPayload.d.ts +4 -0
  73. package/build/dex/bunni-v2/lib/AmAmmPayload.js +10 -0
  74. package/build/dex/bunni-v2/lib/AmAmmPayload.js.map +1 -0
  75. package/build/dex/bunni-v2/lib/BitMath.d.ts +4 -0
  76. package/build/dex/bunni-v2/lib/BitMath.js +24 -0
  77. package/build/dex/bunni-v2/lib/BitMath.js.map +1 -0
  78. package/build/dex/bunni-v2/lib/Constants.d.ts +14 -0
  79. package/build/dex/bunni-v2/lib/Constants.js +18 -0
  80. package/build/dex/bunni-v2/lib/Constants.js.map +1 -0
  81. package/build/dex/bunni-v2/lib/ExpMath.d.ts +5 -0
  82. package/build/dex/bunni-v2/lib/ExpMath.js +121 -0
  83. package/build/dex/bunni-v2/lib/ExpMath.js.map +1 -0
  84. package/build/dex/bunni-v2/lib/FeeMath.d.ts +2 -0
  85. package/build/dex/bunni-v2/lib/FeeMath.js +27 -0
  86. package/build/dex/bunni-v2/lib/FeeMath.js.map +1 -0
  87. package/build/dex/bunni-v2/lib/FixedPointMath.d.ts +3 -0
  88. package/build/dex/bunni-v2/lib/FixedPointMath.js +15 -0
  89. package/build/dex/bunni-v2/lib/FixedPointMath.js.map +1 -0
  90. package/build/dex/bunni-v2/lib/FullMathX96.d.ts +4 -0
  91. package/build/dex/bunni-v2/lib/FullMathX96.js +21 -0
  92. package/build/dex/bunni-v2/lib/FullMathX96.js.map +1 -0
  93. package/build/dex/bunni-v2/lib/IdleBalance.d.ts +11 -0
  94. package/build/dex/bunni-v2/lib/IdleBalance.js +33 -0
  95. package/build/dex/bunni-v2/lib/IdleBalance.js.map +1 -0
  96. package/build/dex/bunni-v2/lib/LiquidityAmounts.d.ts +6 -0
  97. package/build/dex/bunni-v2/lib/LiquidityAmounts.js +25 -0
  98. package/build/dex/bunni-v2/lib/LiquidityAmounts.js.map +1 -0
  99. package/build/dex/bunni-v2/lib/Math.d.ts +28 -0
  100. package/build/dex/bunni-v2/lib/Math.js +169 -0
  101. package/build/dex/bunni-v2/lib/Math.js.map +1 -0
  102. package/build/dex/bunni-v2/lib/Oracle.d.ts +27 -0
  103. package/build/dex/bunni-v2/lib/Oracle.js +180 -0
  104. package/build/dex/bunni-v2/lib/Oracle.js.map +1 -0
  105. package/build/dex/bunni-v2/lib/QueryLDF.d.ts +12 -0
  106. package/build/dex/bunni-v2/lib/QueryLDF.js +90 -0
  107. package/build/dex/bunni-v2/lib/QueryLDF.js.map +1 -0
  108. package/build/dex/bunni-v2/lib/QueryTwap.d.ts +2 -0
  109. package/build/dex/bunni-v2/lib/QueryTwap.js +13 -0
  110. package/build/dex/bunni-v2/lib/QueryTwap.js.map +1 -0
  111. package/build/dex/bunni-v2/lib/SqrtPriceMath.d.ts +8 -0
  112. package/build/dex/bunni-v2/lib/SqrtPriceMath.js +84 -0
  113. package/build/dex/bunni-v2/lib/SqrtPriceMath.js.map +1 -0
  114. package/build/dex/bunni-v2/lib/TickMath.d.ts +11 -0
  115. package/build/dex/bunni-v2/lib/TickMath.js +100 -0
  116. package/build/dex/bunni-v2/lib/TickMath.js.map +1 -0
  117. package/build/dex/bunni-v2/lib/VaultMath.d.ts +2 -0
  118. package/build/dex/bunni-v2/lib/VaultMath.js +11 -0
  119. package/build/dex/bunni-v2/lib/VaultMath.js.map +1 -0
  120. package/build/dex/bunni-v2/logic/AmAmm.d.ts +11 -0
  121. package/build/dex/bunni-v2/logic/AmAmm.js +156 -0
  122. package/build/dex/bunni-v2/logic/AmAmm.js.map +1 -0
  123. package/build/dex/bunni-v2/logic/BunniHookLogic.d.ts +10 -0
  124. package/build/dex/bunni-v2/logic/BunniHookLogic.js +298 -0
  125. package/build/dex/bunni-v2/logic/BunniHookLogic.js.map +1 -0
  126. package/build/dex/bunni-v2/logic/BunniHubLogic.d.ts +5 -0
  127. package/build/dex/bunni-v2/logic/BunniHubLogic.js +245 -0
  128. package/build/dex/bunni-v2/logic/BunniHubLogic.js.map +1 -0
  129. package/build/dex/bunni-v2/logic/BunniQuoter.d.ts +12 -0
  130. package/build/dex/bunni-v2/logic/BunniQuoter.js +201 -0
  131. package/build/dex/bunni-v2/logic/BunniQuoter.js.map +1 -0
  132. package/build/dex/bunni-v2/subgraph.d.ts +7 -0
  133. package/build/dex/bunni-v2/subgraph.js +184 -0
  134. package/build/dex/bunni-v2/subgraph.js.map +1 -0
  135. package/build/dex/bunni-v2/types.d.ts +256 -0
  136. package/build/dex/bunni-v2/types.js +3 -0
  137. package/build/dex/bunni-v2/types.js.map +1 -0
  138. package/build/dex/bunni-v2/utils.d.ts +12 -0
  139. package/build/dex/bunni-v2/utils.js +181 -0
  140. package/build/dex/bunni-v2/utils.js.map +1 -0
  141. package/build/dex/fluid-dex-lite/config.d.ts +3 -0
  142. package/build/dex/fluid-dex-lite/config.js +12 -0
  143. package/build/dex/fluid-dex-lite/config.js.map +1 -0
  144. package/build/dex/fluid-dex-lite/fluid-dex-lite-math.d.ts +63 -0
  145. package/build/dex/fluid-dex-lite/fluid-dex-lite-math.js +543 -0
  146. package/build/dex/fluid-dex-lite/fluid-dex-lite-math.js.map +1 -0
  147. package/build/dex/fluid-dex-lite/fluid-dex-lite-pool.d.ts +31 -0
  148. package/build/dex/fluid-dex-lite/fluid-dex-lite-pool.js +105 -0
  149. package/build/dex/fluid-dex-lite/fluid-dex-lite-pool.js.map +1 -0
  150. package/build/dex/fluid-dex-lite/fluid-dex-lite.d.ts +45 -0
  151. package/build/dex/fluid-dex-lite/fluid-dex-lite.js +461 -0
  152. package/build/dex/fluid-dex-lite/fluid-dex-lite.js.map +1 -0
  153. package/build/dex/fluid-dex-lite/types.d.ts +54 -0
  154. package/build/dex/fluid-dex-lite/types.js +3 -0
  155. package/build/dex/fluid-dex-lite/types.js.map +1 -0
  156. package/build/dex/fluid-dex-lite/utils.d.ts +12 -0
  157. package/build/dex/fluid-dex-lite/utils.js +51 -0
  158. package/build/dex/fluid-dex-lite/utils.js.map +1 -0
  159. package/build/dex/index.js +2 -0
  160. package/build/dex/index.js.map +1 -1
  161. package/build/dex/miro-migrator/config.js +10 -3
  162. package/build/dex/miro-migrator/config.js.map +1 -1
  163. package/build/dex/miro-migrator/constants.d.ts +1 -2
  164. package/build/dex/miro-migrator/constants.js +2 -3
  165. package/build/dex/miro-migrator/constants.js.map +1 -1
  166. package/build/dex/miro-migrator/miro-migrator-pool.d.ts +5 -9
  167. package/build/dex/miro-migrator/miro-migrator-pool.js +30 -49
  168. package/build/dex/miro-migrator/miro-migrator-pool.js.map +1 -1
  169. package/build/dex/miro-migrator/miro-migrator-state.d.ts +27 -0
  170. package/build/dex/miro-migrator/miro-migrator-state.js +89 -0
  171. package/build/dex/miro-migrator/miro-migrator-state.js.map +1 -0
  172. package/build/dex/miro-migrator/miro-migrator.d.ts +4 -5
  173. package/build/dex/miro-migrator/miro-migrator.js +83 -41
  174. package/build/dex/miro-migrator/miro-migrator.js.map +1 -1
  175. package/build/dex/miro-migrator/types.d.ts +4 -2
  176. package/build/dex/miro-migrator/types.js +2 -1
  177. package/build/dex/miro-migrator/types.js.map +1 -1
  178. package/build/dex/uniswap-v3/forks/pangolin-v3/utils.d.ts +4 -0
  179. package/build/dex/uniswap-v3/forks/pangolin-v3/utils.js +56 -0
  180. package/build/dex/uniswap-v3/forks/pangolin-v3/utils.js.map +1 -0
  181. package/build/dex/uniswap-v4/hooks/cabalcoin-hook/cabalcoin-hook-pool.d.ts +7 -0
  182. package/build/dex/uniswap-v4/hooks/cabalcoin-hook/cabalcoin-hook-pool.js +28 -0
  183. package/build/dex/uniswap-v4/hooks/cabalcoin-hook/cabalcoin-hook-pool.js.map +1 -0
  184. package/build/dex/uniswap-v4/hooks/cabalcoin-hook/types.d.ts +0 -0
  185. package/build/dex/uniswap-v4/hooks/cabalcoin-hook/types.js +2 -0
  186. package/build/dex/uniswap-v4/hooks/cabalcoin-hook/types.js.map +1 -0
  187. package/build/dex/uniswap-v4/hooks/fee-hook/fee-hook-pool.d.ts +7 -0
  188. package/build/dex/uniswap-v4/hooks/fee-hook/fee-hook-pool.js +28 -0
  189. package/build/dex/uniswap-v4/hooks/fee-hook/fee-hook-pool.js.map +1 -0
  190. package/build/dex/uniswap-v4/hooks/fee-hook/types.d.ts +0 -0
  191. package/build/dex/uniswap-v4/hooks/fee-hook/types.js +2 -0
  192. package/build/dex/uniswap-v4/hooks/fee-hook/types.js.map +1 -0
  193. package/build/dex/uniswap-v4/hooks/index.d.ts +2 -0
  194. package/build/dex/uniswap-v4/hooks/index.js +8 -0
  195. package/build/dex/uniswap-v4/hooks/index.js.map +1 -0
  196. package/build/dex/usdc-transmuter/usdc-transmuter-pool.d.ts +26 -0
  197. package/build/dex/usdc-transmuter/usdc-transmuter-pool.js +75 -0
  198. package/build/dex/usdc-transmuter/usdc-transmuter-pool.js.map +1 -0
  199. package/package.json +1 -1
@@ -0,0 +1,543 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PRICE_PRECISION = exports.SIX_DECIMALS = exports.FOUR_DECIMALS = exports.TWO_DECIMALS = exports.BITS_DEX_LITE_THRESHOLD_SHIFT_TIMESTAMP = exports.BITS_DEX_LITE_THRESHOLD_SHIFT_TIME_TO_SHIFT = exports.BITS_DEX_LITE_THRESHOLD_SHIFT_OLD_LOWER_THRESHOLD_PERCENT = exports.BITS_DEX_LITE_THRESHOLD_SHIFT_OLD_UPPER_THRESHOLD_PERCENT = exports.BITS_DEX_LITE_RANGE_SHIFT_TIMESTAMP = exports.BITS_DEX_LITE_RANGE_SHIFT_TIME_TO_SHIFT = exports.BITS_DEX_LITE_RANGE_SHIFT_OLD_LOWER_RANGE_PERCENT = exports.BITS_DEX_LITE_RANGE_SHIFT_OLD_UPPER_RANGE_PERCENT = exports.BITS_DEX_LITE_CENTER_PRICE_SHIFT_TIMESTAMP = exports.BITS_DEX_LITE_CENTER_PRICE_SHIFT_TIME_TO_SHIFT = exports.BITS_DEX_LITE_CENTER_PRICE_SHIFT_PERCENT = exports.BITS_DEX_LITE_CENTER_PRICE_SHIFT_MIN_CENTER_PRICE = exports.BITS_DEX_LITE_CENTER_PRICE_SHIFT_MAX_CENTER_PRICE = exports.BITS_DEX_LITE_CENTER_PRICE_SHIFT_SHIFTING_TIME = exports.BITS_DEX_LITE_CENTER_PRICE_SHIFT_LAST_INTERACTION_TIMESTAMP = exports.X73 = exports.X64 = exports.X60 = exports.X40 = exports.X33 = exports.X28 = exports.X24 = exports.X20 = exports.X19 = exports.X14 = exports.X13 = exports.X7 = exports.X5 = exports.X2 = exports.X1 = exports.BITS_DEX_LITE_DEX_VARIABLES_TOKEN_1_TOTAL_SUPPLY_ADJUSTED = exports.BITS_DEX_LITE_DEX_VARIABLES_TOKEN_0_TOTAL_SUPPLY_ADJUSTED = exports.BITS_DEX_LITE_DEX_VARIABLES_TOKEN_1_DECIMALS = exports.BITS_DEX_LITE_DEX_VARIABLES_TOKEN_0_DECIMALS = exports.BITS_DEX_LITE_DEX_VARIABLES_LOWER_SHIFT_THRESHOLD_PERCENT = exports.BITS_DEX_LITE_DEX_VARIABLES_UPPER_SHIFT_THRESHOLD_PERCENT = exports.BITS_DEX_LITE_DEX_VARIABLES_THRESHOLD_PERCENT_SHIFT_ACTIVE = exports.BITS_DEX_LITE_DEX_VARIABLES_LOWER_PERCENT = exports.BITS_DEX_LITE_DEX_VARIABLES_UPPER_PERCENT = exports.BITS_DEX_LITE_DEX_VARIABLES_RANGE_PERCENT_SHIFT_ACTIVE = exports.BITS_DEX_LITE_DEX_VARIABLES_CENTER_PRICE_CONTRACT_ADDRESS = exports.BITS_DEX_LITE_DEX_VARIABLES_CENTER_PRICE = exports.BITS_DEX_LITE_DEX_VARIABLES_CENTER_PRICE_SHIFT_ACTIVE = exports.BITS_DEX_LITE_DEX_VARIABLES_REBALANCING_STATUS = exports.BITS_DEX_LITE_DEX_VARIABLES_REVENUE_CUT = exports.BITS_DEX_LITE_DEX_VARIABLES_FEE = void 0;
4
+ exports.FluidDexLiteMathError = exports.DEFAULT_EXPONENT_MASK = exports.DEFAULT_EXPONENT_SIZE = exports.MINIMUM_LIQUIDITY_SWAP = exports.TOKENS_DECIMALS_PRECISION = void 0;
5
+ exports.unpackDexVariables = unpackDexVariables;
6
+ exports.sqrt = sqrt;
7
+ exports.getPricesAndReserves = getPricesAndReserves;
8
+ exports.calculateSwap = calculateSwap;
9
+ const constants_1 = require("../../constants");
10
+ // Constants for bit manipulation (from DexLiteSlotsLink and constantVariables)
11
+ exports.BITS_DEX_LITE_DEX_VARIABLES_FEE = 0;
12
+ exports.BITS_DEX_LITE_DEX_VARIABLES_REVENUE_CUT = 13;
13
+ exports.BITS_DEX_LITE_DEX_VARIABLES_REBALANCING_STATUS = 20;
14
+ exports.BITS_DEX_LITE_DEX_VARIABLES_CENTER_PRICE_SHIFT_ACTIVE = 22;
15
+ exports.BITS_DEX_LITE_DEX_VARIABLES_CENTER_PRICE = 23;
16
+ exports.BITS_DEX_LITE_DEX_VARIABLES_CENTER_PRICE_CONTRACT_ADDRESS = 63;
17
+ exports.BITS_DEX_LITE_DEX_VARIABLES_RANGE_PERCENT_SHIFT_ACTIVE = 82;
18
+ exports.BITS_DEX_LITE_DEX_VARIABLES_UPPER_PERCENT = 83;
19
+ exports.BITS_DEX_LITE_DEX_VARIABLES_LOWER_PERCENT = 97;
20
+ exports.BITS_DEX_LITE_DEX_VARIABLES_THRESHOLD_PERCENT_SHIFT_ACTIVE = 111;
21
+ exports.BITS_DEX_LITE_DEX_VARIABLES_UPPER_SHIFT_THRESHOLD_PERCENT = 112;
22
+ exports.BITS_DEX_LITE_DEX_VARIABLES_LOWER_SHIFT_THRESHOLD_PERCENT = 119;
23
+ exports.BITS_DEX_LITE_DEX_VARIABLES_TOKEN_0_DECIMALS = 126;
24
+ exports.BITS_DEX_LITE_DEX_VARIABLES_TOKEN_1_DECIMALS = 131;
25
+ exports.BITS_DEX_LITE_DEX_VARIABLES_TOKEN_0_TOTAL_SUPPLY_ADJUSTED = 136;
26
+ exports.BITS_DEX_LITE_DEX_VARIABLES_TOKEN_1_TOTAL_SUPPLY_ADJUSTED = 196;
27
+ // Bit masks (from constantVariables.sol)
28
+ exports.X1 = 0x1n;
29
+ exports.X2 = 0x3n;
30
+ exports.X5 = 0x1fn;
31
+ exports.X7 = 0x7fn;
32
+ exports.X13 = 0x1fffn;
33
+ exports.X14 = 0x3fffn;
34
+ exports.X19 = 0x7ffffn;
35
+ exports.X20 = 0xfffffn;
36
+ exports.X24 = 0xffffffn;
37
+ exports.X28 = 0xfffffffn;
38
+ exports.X33 = 0x1ffffffffn;
39
+ exports.X40 = 0xffffffffffn;
40
+ exports.X60 = 0xfffffffffffffffn;
41
+ exports.X64 = 0xffffffffffffffffn;
42
+ exports.X73 = 0x1ffffffffffffffffffn;
43
+ // CenterPriceShift bit positions
44
+ exports.BITS_DEX_LITE_CENTER_PRICE_SHIFT_LAST_INTERACTION_TIMESTAMP = 0;
45
+ exports.BITS_DEX_LITE_CENTER_PRICE_SHIFT_SHIFTING_TIME = 33;
46
+ exports.BITS_DEX_LITE_CENTER_PRICE_SHIFT_MAX_CENTER_PRICE = 57;
47
+ exports.BITS_DEX_LITE_CENTER_PRICE_SHIFT_MIN_CENTER_PRICE = 85;
48
+ exports.BITS_DEX_LITE_CENTER_PRICE_SHIFT_PERCENT = 113;
49
+ exports.BITS_DEX_LITE_CENTER_PRICE_SHIFT_TIME_TO_SHIFT = 133;
50
+ exports.BITS_DEX_LITE_CENTER_PRICE_SHIFT_TIMESTAMP = 153;
51
+ // RangeShift bit positions
52
+ exports.BITS_DEX_LITE_RANGE_SHIFT_OLD_UPPER_RANGE_PERCENT = 0;
53
+ exports.BITS_DEX_LITE_RANGE_SHIFT_OLD_LOWER_RANGE_PERCENT = 14;
54
+ exports.BITS_DEX_LITE_RANGE_SHIFT_TIME_TO_SHIFT = 28;
55
+ exports.BITS_DEX_LITE_RANGE_SHIFT_TIMESTAMP = 48;
56
+ // ThresholdShift bit positions
57
+ exports.BITS_DEX_LITE_THRESHOLD_SHIFT_OLD_UPPER_THRESHOLD_PERCENT = 0;
58
+ exports.BITS_DEX_LITE_THRESHOLD_SHIFT_OLD_LOWER_THRESHOLD_PERCENT = 7;
59
+ exports.BITS_DEX_LITE_THRESHOLD_SHIFT_TIME_TO_SHIFT = 14;
60
+ exports.BITS_DEX_LITE_THRESHOLD_SHIFT_TIMESTAMP = 34;
61
+ // Other constants
62
+ exports.TWO_DECIMALS = 100n;
63
+ exports.FOUR_DECIMALS = 10000n;
64
+ exports.SIX_DECIMALS = 1000000n;
65
+ exports.PRICE_PRECISION = 10n ** 27n;
66
+ exports.TOKENS_DECIMALS_PRECISION = 9n;
67
+ exports.MINIMUM_LIQUIDITY_SWAP = 10000n;
68
+ exports.DEFAULT_EXPONENT_SIZE = 8n;
69
+ exports.DEFAULT_EXPONENT_MASK = 0xffn;
70
+ class FluidDexLiteMathError extends Error {
71
+ constructor(message) {
72
+ super(message);
73
+ this.name = 'FluidDexLiteMathError';
74
+ }
75
+ }
76
+ exports.FluidDexLiteMathError = FluidDexLiteMathError;
77
+ // Helper function to calculate powers of 10
78
+ function tenPow(power) {
79
+ const powerNum = Number(power);
80
+ // Handle the most common cases for optimization
81
+ if (powerNum === 3)
82
+ return 1000n;
83
+ if (powerNum === 9)
84
+ return 1000000000n;
85
+ if (powerNum === 1)
86
+ return 10n;
87
+ if (powerNum === 0)
88
+ return 1n;
89
+ if (powerNum === 2)
90
+ return 100n;
91
+ if (powerNum === 4)
92
+ return 10000n;
93
+ if (powerNum === 5)
94
+ return 100000n;
95
+ if (powerNum === 6)
96
+ return 1000000n;
97
+ if (powerNum === 7)
98
+ return 10000000n;
99
+ if (powerNum === 8)
100
+ return 100000000n;
101
+ throw new FluidDexLiteMathError(`Power invalid: ${power}.`);
102
+ }
103
+ // Unpack dexVariables from the packed uint256
104
+ function unpackDexVariables(dexVariables) {
105
+ return {
106
+ fee: (dexVariables >> BigInt(exports.BITS_DEX_LITE_DEX_VARIABLES_FEE)) & exports.X13,
107
+ revenueCut: (dexVariables >> BigInt(exports.BITS_DEX_LITE_DEX_VARIABLES_REVENUE_CUT)) & exports.X7,
108
+ rebalancingStatus: (dexVariables >> BigInt(exports.BITS_DEX_LITE_DEX_VARIABLES_REBALANCING_STATUS)) &
109
+ exports.X2,
110
+ centerPriceShiftActive: ((dexVariables >>
111
+ BigInt(exports.BITS_DEX_LITE_DEX_VARIABLES_CENTER_PRICE_SHIFT_ACTIVE)) &
112
+ exports.X1) ===
113
+ 1n,
114
+ centerPrice: (dexVariables >> BigInt(exports.BITS_DEX_LITE_DEX_VARIABLES_CENTER_PRICE)) & exports.X40,
115
+ centerPriceContractAddress: (dexVariables >>
116
+ BigInt(exports.BITS_DEX_LITE_DEX_VARIABLES_CENTER_PRICE_CONTRACT_ADDRESS)) &
117
+ exports.X19,
118
+ rangePercentShiftActive: ((dexVariables >>
119
+ BigInt(exports.BITS_DEX_LITE_DEX_VARIABLES_RANGE_PERCENT_SHIFT_ACTIVE)) &
120
+ exports.X1) ===
121
+ 1n,
122
+ upperPercent: (dexVariables >> BigInt(exports.BITS_DEX_LITE_DEX_VARIABLES_UPPER_PERCENT)) & exports.X14,
123
+ lowerPercent: (dexVariables >> BigInt(exports.BITS_DEX_LITE_DEX_VARIABLES_LOWER_PERCENT)) & exports.X14,
124
+ thresholdPercentShiftActive: ((dexVariables >>
125
+ BigInt(exports.BITS_DEX_LITE_DEX_VARIABLES_THRESHOLD_PERCENT_SHIFT_ACTIVE)) &
126
+ exports.X1) ===
127
+ 1n,
128
+ upperShiftThresholdPercent: (dexVariables >>
129
+ BigInt(exports.BITS_DEX_LITE_DEX_VARIABLES_UPPER_SHIFT_THRESHOLD_PERCENT)) &
130
+ exports.X7,
131
+ lowerShiftThresholdPercent: (dexVariables >>
132
+ BigInt(exports.BITS_DEX_LITE_DEX_VARIABLES_LOWER_SHIFT_THRESHOLD_PERCENT)) &
133
+ exports.X7,
134
+ token0Decimals: (dexVariables >> BigInt(exports.BITS_DEX_LITE_DEX_VARIABLES_TOKEN_0_DECIMALS)) &
135
+ exports.X5,
136
+ token1Decimals: (dexVariables >> BigInt(exports.BITS_DEX_LITE_DEX_VARIABLES_TOKEN_1_DECIMALS)) &
137
+ exports.X5,
138
+ token0TotalSupplyAdjusted: (dexVariables >>
139
+ BigInt(exports.BITS_DEX_LITE_DEX_VARIABLES_TOKEN_0_TOTAL_SUPPLY_ADJUSTED)) &
140
+ exports.X60,
141
+ token1TotalSupplyAdjusted: (dexVariables >>
142
+ BigInt(exports.BITS_DEX_LITE_DEX_VARIABLES_TOKEN_1_TOTAL_SUPPLY_ADJUSTED)) &
143
+ exports.X60,
144
+ };
145
+ }
146
+ // Expand center price from compressed format
147
+ function expandCenterPrice(centerPrice) {
148
+ return ((centerPrice >> exports.DEFAULT_EXPONENT_SIZE) <<
149
+ (centerPrice & exports.DEFAULT_EXPONENT_MASK));
150
+ }
151
+ // Helper function for linear interpolation during shifting
152
+ function calcShiftingDone(current, old, timePassed, shiftDuration) {
153
+ if (current > old) {
154
+ return old + ((current - old) * timePassed) / shiftDuration;
155
+ }
156
+ else {
157
+ return old - ((old - current) * timePassed) / shiftDuration;
158
+ }
159
+ }
160
+ // Calculate current range percents (equivalent to _calcRangeShifting)
161
+ function calcRangeShifting(upperRange, lowerRange, rangeShift, currentTimestamp) {
162
+ const shiftDuration = (rangeShift >> BigInt(exports.BITS_DEX_LITE_RANGE_SHIFT_TIME_TO_SHIFT)) & exports.X20;
163
+ const startTimestamp = (rangeShift >> BigInt(exports.BITS_DEX_LITE_RANGE_SHIFT_TIMESTAMP)) & exports.X33;
164
+ if (startTimestamp + shiftDuration < currentTimestamp) {
165
+ // shifting fully done
166
+ return { upperRange, lowerRange };
167
+ }
168
+ const timePassed = currentTimestamp - startTimestamp;
169
+ const oldUpperRange = (rangeShift >> BigInt(exports.BITS_DEX_LITE_RANGE_SHIFT_OLD_UPPER_RANGE_PERCENT)) &
170
+ exports.X14;
171
+ const oldLowerRange = (rangeShift >> BigInt(exports.BITS_DEX_LITE_RANGE_SHIFT_OLD_LOWER_RANGE_PERCENT)) &
172
+ exports.X14;
173
+ return {
174
+ upperRange: calcShiftingDone(upperRange, oldUpperRange, timePassed, shiftDuration),
175
+ lowerRange: calcShiftingDone(lowerRange, oldLowerRange, timePassed, shiftDuration),
176
+ };
177
+ }
178
+ // Calculate current threshold percents (equivalent to _calcThresholdShifting)
179
+ function calcThresholdShifting(upperThreshold, lowerThreshold, thresholdShift, currentTimestamp) {
180
+ const shiftDuration = (thresholdShift >> BigInt(exports.BITS_DEX_LITE_THRESHOLD_SHIFT_TIME_TO_SHIFT)) &
181
+ exports.X20;
182
+ const startTimestamp = (thresholdShift >> BigInt(exports.BITS_DEX_LITE_THRESHOLD_SHIFT_TIMESTAMP)) & exports.X33;
183
+ if (startTimestamp + shiftDuration < currentTimestamp) {
184
+ // shifting fully done
185
+ return { upperThreshold, lowerThreshold };
186
+ }
187
+ const timePassed = currentTimestamp - startTimestamp;
188
+ const oldUpperThreshold = (thresholdShift >>
189
+ BigInt(exports.BITS_DEX_LITE_THRESHOLD_SHIFT_OLD_UPPER_THRESHOLD_PERCENT)) &
190
+ exports.X7;
191
+ const oldLowerThreshold = (thresholdShift >>
192
+ BigInt(exports.BITS_DEX_LITE_THRESHOLD_SHIFT_OLD_LOWER_THRESHOLD_PERCENT)) &
193
+ exports.X7;
194
+ return {
195
+ upperThreshold: calcShiftingDone(upperThreshold, oldUpperThreshold, timePassed, shiftDuration),
196
+ lowerThreshold: calcShiftingDone(lowerThreshold, oldLowerThreshold, timePassed, shiftDuration),
197
+ };
198
+ }
199
+ // Calculate reserves outside range (equivalent to _calculateReservesOutsideRange)
200
+ function calculateReservesOutsideRange(geometricMean, pa, rx, ry) {
201
+ const p1 = pa - geometricMean;
202
+ const p2 = (geometricMean * rx + ry * exports.PRICE_PRECISION) / (2n * p1);
203
+ const discriminant = (rx * ry * exports.PRICE_PRECISION) / p1 + p2 * p2;
204
+ // xa = part2 + (part3 + (part2 * part2))^(1/2)
205
+ // yb = xa * gp
206
+ const xa = p2 + sqrt(discriminant);
207
+ const yb = (xa * geometricMean) / exports.PRICE_PRECISION;
208
+ return { xa, yb };
209
+ }
210
+ // Square root implementation for BigInt
211
+ function sqrt(value) {
212
+ if (value < 2n) {
213
+ return value;
214
+ }
215
+ let x = value;
216
+ let result = value;
217
+ // Newton's method
218
+ while (x > 0n) {
219
+ x = (result + value / result) / 2n;
220
+ if (x >= result) {
221
+ break;
222
+ }
223
+ result = x;
224
+ }
225
+ return result;
226
+ }
227
+ // Full pricing calculation (equivalent to _getPricesAndReserves)
228
+ function getPricesAndReserves(state, currentTimestamp = BigInt(Math.floor(Date.now() / 1000))) {
229
+ const unpackedVars = unpackDexVariables(state.dexVariables);
230
+ // Calculate center price
231
+ let centerPrice;
232
+ // Revert if external price contract is configured
233
+ if (unpackedVars.centerPriceContractAddress !== 0n) {
234
+ throw new FluidDexLiteMathError('External price contracts not supported in pricing');
235
+ }
236
+ // Revert if center price shifting is active
237
+ if (unpackedVars.centerPriceShiftActive) {
238
+ throw new FluidDexLiteMathError('Center price shifting not supported in pricing');
239
+ }
240
+ // Use stored center price
241
+ centerPrice = expandCenterPrice(unpackedVars.centerPrice);
242
+ // Calculate range percents
243
+ let upperRangePercent = unpackedVars.upperPercent;
244
+ let lowerRangePercent = unpackedVars.lowerPercent;
245
+ if (unpackedVars.rangePercentShiftActive) {
246
+ const rangeResult = calcRangeShifting(upperRangePercent, lowerRangePercent, state.rangeShift, currentTimestamp);
247
+ upperRangePercent = rangeResult.upperRange;
248
+ lowerRangePercent = rangeResult.lowerRange;
249
+ }
250
+ // Calculate range prices
251
+ let upperRangePrice = (centerPrice * exports.FOUR_DECIMALS) / (exports.FOUR_DECIMALS - upperRangePercent);
252
+ let lowerRangePrice = (centerPrice * (exports.FOUR_DECIMALS - lowerRangePercent)) / exports.FOUR_DECIMALS;
253
+ // Handle rebalancing logic
254
+ const rebalancingStatus = unpackedVars.rebalancingStatus;
255
+ if (rebalancingStatus > 1n) {
256
+ let centerPriceShiftData = 0n;
257
+ if (rebalancingStatus === 2n) {
258
+ // Price shifting towards upper range
259
+ centerPriceShiftData = state.centerPriceShift;
260
+ const shiftingTime = (centerPriceShiftData >>
261
+ BigInt(exports.BITS_DEX_LITE_CENTER_PRICE_SHIFT_SHIFTING_TIME)) &
262
+ exports.X24;
263
+ const timeElapsed = currentTimestamp - state.lastInteractionTimestamp;
264
+ if (timeElapsed < shiftingTime) {
265
+ centerPrice =
266
+ centerPrice +
267
+ ((upperRangePrice - centerPrice) * timeElapsed) / shiftingTime;
268
+ }
269
+ else {
270
+ // 100% price shifted
271
+ centerPrice = upperRangePrice;
272
+ }
273
+ }
274
+ else if (rebalancingStatus === 3n) {
275
+ // Price shifting towards lower range
276
+ centerPriceShiftData = state.centerPriceShift;
277
+ const shiftingTime = (centerPriceShiftData >>
278
+ BigInt(exports.BITS_DEX_LITE_CENTER_PRICE_SHIFT_SHIFTING_TIME)) &
279
+ exports.X24;
280
+ const timeElapsed = currentTimestamp - state.lastInteractionTimestamp;
281
+ if (timeElapsed < shiftingTime) {
282
+ centerPrice =
283
+ centerPrice -
284
+ ((centerPrice - lowerRangePrice) * timeElapsed) / shiftingTime;
285
+ }
286
+ else {
287
+ // 100% price shifted
288
+ centerPrice = lowerRangePrice;
289
+ }
290
+ }
291
+ // Apply min/max bounds if rebalancing happened
292
+ if (centerPriceShiftData > 0n) {
293
+ // Check max center price
294
+ let maxCenterPrice = (centerPriceShiftData >>
295
+ BigInt(exports.BITS_DEX_LITE_CENTER_PRICE_SHIFT_MAX_CENTER_PRICE)) &
296
+ exports.X28;
297
+ maxCenterPrice =
298
+ (maxCenterPrice >> exports.DEFAULT_EXPONENT_SIZE) <<
299
+ (maxCenterPrice & exports.DEFAULT_EXPONENT_MASK);
300
+ if (centerPrice > maxCenterPrice) {
301
+ centerPrice = maxCenterPrice;
302
+ }
303
+ else {
304
+ // Check min center price
305
+ let minCenterPrice = (centerPriceShiftData >>
306
+ BigInt(exports.BITS_DEX_LITE_CENTER_PRICE_SHIFT_MIN_CENTER_PRICE)) &
307
+ exports.X28;
308
+ minCenterPrice =
309
+ (minCenterPrice >> exports.DEFAULT_EXPONENT_SIZE) <<
310
+ (minCenterPrice & exports.DEFAULT_EXPONENT_MASK);
311
+ if (centerPrice < minCenterPrice) {
312
+ centerPrice = minCenterPrice;
313
+ }
314
+ }
315
+ // Update range prices as center price moved
316
+ upperRangePrice =
317
+ (centerPrice * exports.FOUR_DECIMALS) / (exports.FOUR_DECIMALS - upperRangePercent);
318
+ lowerRangePrice =
319
+ (centerPrice * (exports.FOUR_DECIMALS - lowerRangePercent)) / exports.FOUR_DECIMALS;
320
+ }
321
+ }
322
+ // Calculate geometric mean
323
+ let geometricMean;
324
+ if (upperRangePrice < 10n ** 38n) {
325
+ // Normal case
326
+ geometricMean = sqrt(upperRangePrice * lowerRangePrice);
327
+ }
328
+ else {
329
+ // Handle very large prices
330
+ geometricMean =
331
+ sqrt((upperRangePrice / 10n ** 18n) * (lowerRangePrice / 10n ** 18n)) *
332
+ 10n ** 18n;
333
+ }
334
+ // Calculate imaginary reserves
335
+ let token0ImaginaryReserves;
336
+ let token1ImaginaryReserves;
337
+ if (geometricMean < exports.PRICE_PRECISION) {
338
+ const reserves = calculateReservesOutsideRange(geometricMean, upperRangePrice, unpackedVars.token0TotalSupplyAdjusted, unpackedVars.token1TotalSupplyAdjusted);
339
+ token0ImaginaryReserves = reserves.xa;
340
+ token1ImaginaryReserves = reserves.yb;
341
+ }
342
+ else {
343
+ // Inverse calculation for large geometric mean
344
+ const reserves = calculateReservesOutsideRange(10n ** 54n / geometricMean, 10n ** 54n / lowerRangePrice, unpackedVars.token1TotalSupplyAdjusted, unpackedVars.token0TotalSupplyAdjusted);
345
+ token1ImaginaryReserves = reserves.xa;
346
+ token0ImaginaryReserves = reserves.yb;
347
+ }
348
+ // Add actual supplies to imaginary reserves
349
+ token0ImaginaryReserves += unpackedVars.token0TotalSupplyAdjusted;
350
+ token1ImaginaryReserves += unpackedVars.token1TotalSupplyAdjusted;
351
+ return {
352
+ centerPrice,
353
+ upperRangePrice,
354
+ lowerRangePrice,
355
+ token0ImaginaryReserves,
356
+ token1ImaginaryReserves,
357
+ };
358
+ }
359
+ // Main swap calculation function
360
+ function calculateSwap(state, swap0To1, amountSpecified, side) {
361
+ const unpackedVars = unpackDexVariables(state.dexVariables);
362
+ // Basic validation
363
+ if (unpackedVars.token0TotalSupplyAdjusted === 0n &&
364
+ unpackedVars.token1TotalSupplyAdjusted === 0n) {
365
+ throw new FluidDexLiteMathError('Pool not initialized');
366
+ }
367
+ // Get current pricing with all shifting logic
368
+ const pricing = getPricesAndReserves(state);
369
+ if (side === constants_1.SwapSide.SELL) {
370
+ return calculateSwapIn(amountSpecified, swap0To1, unpackedVars, pricing.token0ImaginaryReserves, pricing.token1ImaginaryReserves);
371
+ }
372
+ else {
373
+ return calculateSwapOut(amountSpecified, swap0To1, unpackedVars, pricing.token0ImaginaryReserves, pricing.token1ImaginaryReserves);
374
+ }
375
+ }
376
+ // Calculate swap for exact input (SELL side)
377
+ function calculateSwapIn(amountIn, swap0To1, unpackedVars, token0ImaginaryReserves, token1ImaginaryReserves) {
378
+ let adjustedAmountIn = amountIn;
379
+ // Apply decimal adjustments
380
+ if (swap0To1) {
381
+ const token0Decimals = unpackedVars.token0Decimals;
382
+ if (token0Decimals > exports.TOKENS_DECIMALS_PRECISION) {
383
+ adjustedAmountIn =
384
+ adjustedAmountIn / tenPow(token0Decimals - exports.TOKENS_DECIMALS_PRECISION);
385
+ }
386
+ else {
387
+ adjustedAmountIn =
388
+ adjustedAmountIn * tenPow(exports.TOKENS_DECIMALS_PRECISION - token0Decimals);
389
+ }
390
+ }
391
+ else {
392
+ const token1Decimals = unpackedVars.token1Decimals;
393
+ if (token1Decimals > exports.TOKENS_DECIMALS_PRECISION) {
394
+ adjustedAmountIn =
395
+ adjustedAmountIn / tenPow(token1Decimals - exports.TOKENS_DECIMALS_PRECISION);
396
+ }
397
+ else {
398
+ adjustedAmountIn =
399
+ adjustedAmountIn * tenPow(exports.TOKENS_DECIMALS_PRECISION - token1Decimals);
400
+ }
401
+ }
402
+ // Validate amount - matches contract InvalidSwapAmounts error
403
+ if (adjustedAmountIn < exports.FOUR_DECIMALS || adjustedAmountIn > exports.X60) {
404
+ throw new FluidDexLiteMathError('Invalid swap amount');
405
+ }
406
+ // Check against half of reserves - matches contract ExcessiveSwapAmount error
407
+ const relevantReserves = swap0To1
408
+ ? token0ImaginaryReserves
409
+ : token1ImaginaryReserves;
410
+ if (adjustedAmountIn > relevantReserves / 2n) {
411
+ throw new FluidDexLiteMathError('Excessive swap amount');
412
+ }
413
+ const fee = (adjustedAmountIn * unpackedVars.fee) / exports.SIX_DECIMALS;
414
+ const amountInAfterFee = adjustedAmountIn - fee;
415
+ // Constant product formula: amountOut = (amountIn * reserveOut) / (reserveIn + amountIn)
416
+ let amountOut;
417
+ if (swap0To1) {
418
+ // Check for potential overflow in intermediate calculation
419
+ const numerator = amountInAfterFee * token1ImaginaryReserves;
420
+ const denominator = token0ImaginaryReserves + amountInAfterFee;
421
+ amountOut = numerator / denominator;
422
+ }
423
+ else {
424
+ const numerator = amountInAfterFee * token0ImaginaryReserves;
425
+ const denominator = token1ImaginaryReserves + amountInAfterFee;
426
+ amountOut = numerator / denominator;
427
+ }
428
+ // Apply decimal adjustments to output
429
+ if (swap0To1) {
430
+ const token1Decimals = unpackedVars.token1Decimals;
431
+ if (token1Decimals > exports.TOKENS_DECIMALS_PRECISION) {
432
+ amountOut =
433
+ amountOut * tenPow(token1Decimals - exports.TOKENS_DECIMALS_PRECISION);
434
+ }
435
+ else {
436
+ amountOut =
437
+ amountOut / tenPow(exports.TOKENS_DECIMALS_PRECISION - token1Decimals);
438
+ }
439
+ }
440
+ else {
441
+ const token0Decimals = unpackedVars.token0Decimals;
442
+ if (token0Decimals > exports.TOKENS_DECIMALS_PRECISION) {
443
+ amountOut =
444
+ amountOut * tenPow(token0Decimals - exports.TOKENS_DECIMALS_PRECISION);
445
+ }
446
+ else {
447
+ amountOut =
448
+ amountOut / tenPow(exports.TOKENS_DECIMALS_PRECISION - token0Decimals);
449
+ }
450
+ }
451
+ return {
452
+ amountIn: amountIn,
453
+ amountOut: amountOut,
454
+ };
455
+ }
456
+ // Calculate swap for exact output (BUY side)
457
+ function calculateSwapOut(amountOut, swap0To1, unpackedVars, token0ImaginaryReserves, token1ImaginaryReserves) {
458
+ let adjustedAmountOut = amountOut;
459
+ // Apply decimal adjustments
460
+ if (swap0To1) {
461
+ const token1Decimals = unpackedVars.token1Decimals;
462
+ if (token1Decimals > exports.TOKENS_DECIMALS_PRECISION) {
463
+ adjustedAmountOut =
464
+ adjustedAmountOut / tenPow(token1Decimals - exports.TOKENS_DECIMALS_PRECISION);
465
+ }
466
+ else {
467
+ adjustedAmountOut =
468
+ adjustedAmountOut * tenPow(exports.TOKENS_DECIMALS_PRECISION - token1Decimals);
469
+ }
470
+ }
471
+ else {
472
+ const token0Decimals = unpackedVars.token0Decimals;
473
+ if (token0Decimals > exports.TOKENS_DECIMALS_PRECISION) {
474
+ adjustedAmountOut =
475
+ adjustedAmountOut / tenPow(token0Decimals - exports.TOKENS_DECIMALS_PRECISION);
476
+ }
477
+ else {
478
+ adjustedAmountOut =
479
+ adjustedAmountOut * tenPow(exports.TOKENS_DECIMALS_PRECISION - token0Decimals);
480
+ }
481
+ }
482
+ // Validate amount - matches contract InvalidSwapAmounts error
483
+ if (adjustedAmountOut < exports.FOUR_DECIMALS || adjustedAmountOut > exports.X60) {
484
+ throw new FluidDexLiteMathError('Invalid swap amount');
485
+ }
486
+ // Check against half of reserves - matches contract ExcessiveSwapAmount error
487
+ const relevantReserves = swap0To1
488
+ ? token1ImaginaryReserves
489
+ : token0ImaginaryReserves;
490
+ if (adjustedAmountOut > relevantReserves / 2n) {
491
+ throw new FluidDexLiteMathError('Excessive swap amount');
492
+ }
493
+ // Reverse constant product formula: amountIn = (amountOut * reserveIn) / (reserveOut - amountOut)
494
+ let amountInBeforeFee;
495
+ if (swap0To1) {
496
+ const denominator = token1ImaginaryReserves - adjustedAmountOut;
497
+ if (denominator <= 0n) {
498
+ throw new FluidDexLiteMathError('Insufficient liquidity - amount out too large');
499
+ }
500
+ const numerator = adjustedAmountOut * token0ImaginaryReserves;
501
+ amountInBeforeFee = numerator / denominator;
502
+ }
503
+ else {
504
+ const denominator = token0ImaginaryReserves - adjustedAmountOut;
505
+ if (denominator <= 0n) {
506
+ throw new FluidDexLiteMathError('Insufficient liquidity - amount out too large');
507
+ }
508
+ const numerator = adjustedAmountOut * token1ImaginaryReserves;
509
+ amountInBeforeFee = numerator / denominator;
510
+ }
511
+ const feeDenominator = exports.SIX_DECIMALS - unpackedVars.fee;
512
+ const fee = (amountInBeforeFee * exports.SIX_DECIMALS) / feeDenominator - amountInBeforeFee;
513
+ const amountIn = amountInBeforeFee + fee;
514
+ // Apply decimal adjustments to input
515
+ let finalAmountIn = amountIn;
516
+ if (swap0To1) {
517
+ const token0Decimals = unpackedVars.token0Decimals;
518
+ if (token0Decimals > exports.TOKENS_DECIMALS_PRECISION) {
519
+ finalAmountIn =
520
+ finalAmountIn * tenPow(token0Decimals - exports.TOKENS_DECIMALS_PRECISION);
521
+ }
522
+ else {
523
+ finalAmountIn =
524
+ finalAmountIn / tenPow(exports.TOKENS_DECIMALS_PRECISION - token0Decimals);
525
+ }
526
+ }
527
+ else {
528
+ const token1Decimals = unpackedVars.token1Decimals;
529
+ if (token1Decimals > exports.TOKENS_DECIMALS_PRECISION) {
530
+ finalAmountIn =
531
+ finalAmountIn * tenPow(token1Decimals - exports.TOKENS_DECIMALS_PRECISION);
532
+ }
533
+ else {
534
+ finalAmountIn =
535
+ finalAmountIn / tenPow(exports.TOKENS_DECIMALS_PRECISION - token1Decimals);
536
+ }
537
+ }
538
+ return {
539
+ amountIn: finalAmountIn,
540
+ amountOut: amountOut,
541
+ };
542
+ }
543
+ //# sourceMappingURL=fluid-dex-lite-math.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fluid-dex-lite-math.js","sourceRoot":"","sources":["../../../src/dex/fluid-dex-lite/fluid-dex-lite-math.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ import { Interface } from '@ethersproject/abi';
2
+ import { DeepReadonly } from 'ts-essentials';
3
+ import { Log, BlockHeader, Logger } from '../../types';
4
+ import { StatefulEventSubscriber } from '../../stateful-event-subscriber';
5
+ import { IDexHelper } from '../../dex-helper/idex-helper';
6
+ import { PoolState, PoolParams } from './types';
7
+ export declare class FluidDexLiteEventPool extends StatefulEventSubscriber<PoolState> {
8
+ readonly parentName: string;
9
+ protected network: number;
10
+ protected dexHelper: IDexHelper;
11
+ protected fluidDexLiteIface: Interface;
12
+ protected fluidDexLiteAddress: string;
13
+ decoder: (log: Log) => import("@ethersproject/abi").LogDescription;
14
+ private handlers;
15
+ logDecoder: (log: Log) => any;
16
+ addressesSubscribed: string[];
17
+ poolParams: PoolParams;
18
+ constructor(parentName: string, network: number, dexHelper: IDexHelper, logger: Logger, mapKey: string, fluidDexLiteIface: Interface | undefined, poolParams: PoolParams, fluidDexLiteAddress: string);
19
+ /**
20
+ * The function is called every time any of the subscribed
21
+ * addresses release log. The function accepts the current
22
+ * state, updates the state according to the log, and returns
23
+ * the updated state.
24
+ */
25
+ protected processLog(state: DeepReadonly<PoolState>, log: Readonly<Log>, blockHeader: Readonly<BlockHeader>): DeepReadonly<PoolState> | null;
26
+ /**
27
+ * The function generates state using on-chain calls.
28
+ */
29
+ generateState(blockNumber: number): Promise<DeepReadonly<PoolState>>;
30
+ handleLogSwap(event: any, state: DeepReadonly<PoolState>, log: Readonly<Log>, blockHeader: Readonly<BlockHeader>): DeepReadonly<PoolState>;
31
+ }