@paraswap/dex-lib 4.5.11 → 4.5.12-fluid-dex-lite.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (195) 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/dex/bunni-v2/bunni-v2-pool.d.ts +61 -0
  18. package/build/dex/bunni-v2/bunni-v2-pool.js +495 -0
  19. package/build/dex/bunni-v2/bunni-v2-pool.js.map +1 -0
  20. package/build/dex/bunni-v2/bunni-v2.d.ts +49 -0
  21. package/build/dex/bunni-v2/bunni-v2.js +435 -0
  22. package/build/dex/bunni-v2/bunni-v2.js.map +1 -0
  23. package/build/dex/bunni-v2/config.d.ts +3 -0
  24. package/build/dex/bunni-v2/config.js +130 -0
  25. package/build/dex/bunni-v2/config.js.map +1 -0
  26. package/build/dex/bunni-v2/encoder.d.ts +19 -0
  27. package/build/dex/bunni-v2/encoder.js +400 -0
  28. package/build/dex/bunni-v2/encoder.js.map +1 -0
  29. package/build/dex/bunni-v2/getOnChainState.d.ts +25 -0
  30. package/build/dex/bunni-v2/getOnChainState.js +455 -0
  31. package/build/dex/bunni-v2/getOnChainState.js.map +1 -0
  32. package/build/dex/bunni-v2/hook/BunniSwapMath.d.ts +7 -0
  33. package/build/dex/bunni-v2/hook/BunniSwapMath.js +198 -0
  34. package/build/dex/bunni-v2/hook/BunniSwapMath.js.map +1 -0
  35. package/build/dex/bunni-v2/hook/SwapMath.d.ts +8 -0
  36. package/build/dex/bunni-v2/hook/SwapMath.js +65 -0
  37. package/build/dex/bunni-v2/hook/SwapMath.js.map +1 -0
  38. package/build/dex/bunni-v2/hooklet/FeeOverrideHooklet.d.ts +33 -0
  39. package/build/dex/bunni-v2/hooklet/FeeOverrideHooklet.js +33 -0
  40. package/build/dex/bunni-v2/hooklet/FeeOverrideHooklet.js.map +1 -0
  41. package/build/dex/bunni-v2/hooklet/index.d.ts +21 -0
  42. package/build/dex/bunni-v2/hooklet/index.js +64 -0
  43. package/build/dex/bunni-v2/hooklet/index.js.map +1 -0
  44. package/build/dex/bunni-v2/ldf/CarpetedDoubleGeometricDistribution.d.ts +70 -0
  45. package/build/dex/bunni-v2/ldf/CarpetedDoubleGeometricDistribution.js +277 -0
  46. package/build/dex/bunni-v2/ldf/CarpetedDoubleGeometricDistribution.js.map +1 -0
  47. package/build/dex/bunni-v2/ldf/CarpetedGeometricDistribution.d.ts +64 -0
  48. package/build/dex/bunni-v2/ldf/CarpetedGeometricDistribution.js +262 -0
  49. package/build/dex/bunni-v2/ldf/CarpetedGeometricDistribution.js.map +1 -0
  50. package/build/dex/bunni-v2/ldf/DoubleGeometricDistribution.d.ts +60 -0
  51. package/build/dex/bunni-v2/ldf/DoubleGeometricDistribution.js +224 -0
  52. package/build/dex/bunni-v2/ldf/DoubleGeometricDistribution.js.map +1 -0
  53. package/build/dex/bunni-v2/ldf/GeometricDistribution.d.ts +56 -0
  54. package/build/dex/bunni-v2/ldf/GeometricDistribution.js +489 -0
  55. package/build/dex/bunni-v2/ldf/GeometricDistribution.js.map +1 -0
  56. package/build/dex/bunni-v2/ldf/LDFType.d.ts +5 -0
  57. package/build/dex/bunni-v2/ldf/LDFType.js +10 -0
  58. package/build/dex/bunni-v2/ldf/LDFType.js.map +1 -0
  59. package/build/dex/bunni-v2/ldf/ShiftMode.d.ts +7 -0
  60. package/build/dex/bunni-v2/ldf/ShiftMode.js +19 -0
  61. package/build/dex/bunni-v2/ldf/ShiftMode.js.map +1 -0
  62. package/build/dex/bunni-v2/ldf/UniformDistribution.d.ts +55 -0
  63. package/build/dex/bunni-v2/ldf/UniformDistribution.js +291 -0
  64. package/build/dex/bunni-v2/ldf/UniformDistribution.js.map +1 -0
  65. package/build/dex/bunni-v2/ldf/index.d.ts +15 -0
  66. package/build/dex/bunni-v2/ldf/index.js +21 -0
  67. package/build/dex/bunni-v2/ldf/index.js.map +1 -0
  68. package/build/dex/bunni-v2/lib/AmAmmPayload.d.ts +4 -0
  69. package/build/dex/bunni-v2/lib/AmAmmPayload.js +10 -0
  70. package/build/dex/bunni-v2/lib/AmAmmPayload.js.map +1 -0
  71. package/build/dex/bunni-v2/lib/BitMath.d.ts +4 -0
  72. package/build/dex/bunni-v2/lib/BitMath.js +24 -0
  73. package/build/dex/bunni-v2/lib/BitMath.js.map +1 -0
  74. package/build/dex/bunni-v2/lib/Constants.d.ts +14 -0
  75. package/build/dex/bunni-v2/lib/Constants.js +18 -0
  76. package/build/dex/bunni-v2/lib/Constants.js.map +1 -0
  77. package/build/dex/bunni-v2/lib/ExpMath.d.ts +5 -0
  78. package/build/dex/bunni-v2/lib/ExpMath.js +121 -0
  79. package/build/dex/bunni-v2/lib/ExpMath.js.map +1 -0
  80. package/build/dex/bunni-v2/lib/FeeMath.d.ts +2 -0
  81. package/build/dex/bunni-v2/lib/FeeMath.js +27 -0
  82. package/build/dex/bunni-v2/lib/FeeMath.js.map +1 -0
  83. package/build/dex/bunni-v2/lib/FixedPointMath.d.ts +3 -0
  84. package/build/dex/bunni-v2/lib/FixedPointMath.js +15 -0
  85. package/build/dex/bunni-v2/lib/FixedPointMath.js.map +1 -0
  86. package/build/dex/bunni-v2/lib/FullMathX96.d.ts +4 -0
  87. package/build/dex/bunni-v2/lib/FullMathX96.js +21 -0
  88. package/build/dex/bunni-v2/lib/FullMathX96.js.map +1 -0
  89. package/build/dex/bunni-v2/lib/IdleBalance.d.ts +11 -0
  90. package/build/dex/bunni-v2/lib/IdleBalance.js +33 -0
  91. package/build/dex/bunni-v2/lib/IdleBalance.js.map +1 -0
  92. package/build/dex/bunni-v2/lib/LiquidityAmounts.d.ts +6 -0
  93. package/build/dex/bunni-v2/lib/LiquidityAmounts.js +25 -0
  94. package/build/dex/bunni-v2/lib/LiquidityAmounts.js.map +1 -0
  95. package/build/dex/bunni-v2/lib/Math.d.ts +28 -0
  96. package/build/dex/bunni-v2/lib/Math.js +169 -0
  97. package/build/dex/bunni-v2/lib/Math.js.map +1 -0
  98. package/build/dex/bunni-v2/lib/Oracle.d.ts +27 -0
  99. package/build/dex/bunni-v2/lib/Oracle.js +180 -0
  100. package/build/dex/bunni-v2/lib/Oracle.js.map +1 -0
  101. package/build/dex/bunni-v2/lib/QueryLDF.d.ts +12 -0
  102. package/build/dex/bunni-v2/lib/QueryLDF.js +90 -0
  103. package/build/dex/bunni-v2/lib/QueryLDF.js.map +1 -0
  104. package/build/dex/bunni-v2/lib/QueryTwap.d.ts +2 -0
  105. package/build/dex/bunni-v2/lib/QueryTwap.js +13 -0
  106. package/build/dex/bunni-v2/lib/QueryTwap.js.map +1 -0
  107. package/build/dex/bunni-v2/lib/SqrtPriceMath.d.ts +8 -0
  108. package/build/dex/bunni-v2/lib/SqrtPriceMath.js +84 -0
  109. package/build/dex/bunni-v2/lib/SqrtPriceMath.js.map +1 -0
  110. package/build/dex/bunni-v2/lib/TickMath.d.ts +11 -0
  111. package/build/dex/bunni-v2/lib/TickMath.js +100 -0
  112. package/build/dex/bunni-v2/lib/TickMath.js.map +1 -0
  113. package/build/dex/bunni-v2/lib/VaultMath.d.ts +2 -0
  114. package/build/dex/bunni-v2/lib/VaultMath.js +11 -0
  115. package/build/dex/bunni-v2/lib/VaultMath.js.map +1 -0
  116. package/build/dex/bunni-v2/logic/AmAmm.d.ts +11 -0
  117. package/build/dex/bunni-v2/logic/AmAmm.js +156 -0
  118. package/build/dex/bunni-v2/logic/AmAmm.js.map +1 -0
  119. package/build/dex/bunni-v2/logic/BunniHookLogic.d.ts +10 -0
  120. package/build/dex/bunni-v2/logic/BunniHookLogic.js +298 -0
  121. package/build/dex/bunni-v2/logic/BunniHookLogic.js.map +1 -0
  122. package/build/dex/bunni-v2/logic/BunniHubLogic.d.ts +5 -0
  123. package/build/dex/bunni-v2/logic/BunniHubLogic.js +245 -0
  124. package/build/dex/bunni-v2/logic/BunniHubLogic.js.map +1 -0
  125. package/build/dex/bunni-v2/logic/BunniQuoter.d.ts +12 -0
  126. package/build/dex/bunni-v2/logic/BunniQuoter.js +201 -0
  127. package/build/dex/bunni-v2/logic/BunniQuoter.js.map +1 -0
  128. package/build/dex/bunni-v2/subgraph.d.ts +7 -0
  129. package/build/dex/bunni-v2/subgraph.js +184 -0
  130. package/build/dex/bunni-v2/subgraph.js.map +1 -0
  131. package/build/dex/bunni-v2/types.d.ts +256 -0
  132. package/build/dex/bunni-v2/types.js +3 -0
  133. package/build/dex/bunni-v2/types.js.map +1 -0
  134. package/build/dex/bunni-v2/utils.d.ts +12 -0
  135. package/build/dex/bunni-v2/utils.js +181 -0
  136. package/build/dex/bunni-v2/utils.js.map +1 -0
  137. package/build/dex/fluid-dex-lite/config.d.ts +3 -0
  138. package/build/dex/fluid-dex-lite/config.js +12 -0
  139. package/build/dex/fluid-dex-lite/config.js.map +1 -0
  140. package/build/dex/fluid-dex-lite/fluid-dex-lite-math.d.ts +63 -0
  141. package/build/dex/fluid-dex-lite/fluid-dex-lite-math.js +543 -0
  142. package/build/dex/fluid-dex-lite/fluid-dex-lite-math.js.map +1 -0
  143. package/build/dex/fluid-dex-lite/fluid-dex-lite-pool.d.ts +42 -0
  144. package/build/dex/fluid-dex-lite/fluid-dex-lite-pool.js +191 -0
  145. package/build/dex/fluid-dex-lite/fluid-dex-lite-pool.js.map +1 -0
  146. package/build/dex/fluid-dex-lite/fluid-dex-lite.d.ts +46 -0
  147. package/build/dex/fluid-dex-lite/fluid-dex-lite.js +477 -0
  148. package/build/dex/fluid-dex-lite/fluid-dex-lite.js.map +1 -0
  149. package/build/dex/fluid-dex-lite/types.d.ts +54 -0
  150. package/build/dex/fluid-dex-lite/types.js +3 -0
  151. package/build/dex/fluid-dex-lite/types.js.map +1 -0
  152. package/build/dex/fluid-dex-lite/utils.d.ts +12 -0
  153. package/build/dex/fluid-dex-lite/utils.js +51 -0
  154. package/build/dex/fluid-dex-lite/utils.js.map +1 -0
  155. package/build/dex/index.js +2 -0
  156. package/build/dex/index.js.map +1 -1
  157. package/build/dex/miro-migrator/config.js +10 -3
  158. package/build/dex/miro-migrator/config.js.map +1 -1
  159. package/build/dex/miro-migrator/constants.d.ts +1 -2
  160. package/build/dex/miro-migrator/constants.js +2 -3
  161. package/build/dex/miro-migrator/constants.js.map +1 -1
  162. package/build/dex/miro-migrator/miro-migrator-pool.d.ts +5 -9
  163. package/build/dex/miro-migrator/miro-migrator-pool.js +30 -49
  164. package/build/dex/miro-migrator/miro-migrator-pool.js.map +1 -1
  165. package/build/dex/miro-migrator/miro-migrator-state.d.ts +27 -0
  166. package/build/dex/miro-migrator/miro-migrator-state.js +89 -0
  167. package/build/dex/miro-migrator/miro-migrator-state.js.map +1 -0
  168. package/build/dex/miro-migrator/miro-migrator.d.ts +4 -5
  169. package/build/dex/miro-migrator/miro-migrator.js +83 -41
  170. package/build/dex/miro-migrator/miro-migrator.js.map +1 -1
  171. package/build/dex/miro-migrator/types.d.ts +4 -2
  172. package/build/dex/miro-migrator/types.js +2 -1
  173. package/build/dex/miro-migrator/types.js.map +1 -1
  174. package/build/dex/uniswap-v3/forks/pangolin-v3/utils.d.ts +4 -0
  175. package/build/dex/uniswap-v3/forks/pangolin-v3/utils.js +56 -0
  176. package/build/dex/uniswap-v3/forks/pangolin-v3/utils.js.map +1 -0
  177. package/build/dex/uniswap-v4/hooks/cabalcoin-hook/cabalcoin-hook-pool.d.ts +7 -0
  178. package/build/dex/uniswap-v4/hooks/cabalcoin-hook/cabalcoin-hook-pool.js +28 -0
  179. package/build/dex/uniswap-v4/hooks/cabalcoin-hook/cabalcoin-hook-pool.js.map +1 -0
  180. package/build/dex/uniswap-v4/hooks/cabalcoin-hook/types.d.ts +0 -0
  181. package/build/dex/uniswap-v4/hooks/cabalcoin-hook/types.js +2 -0
  182. package/build/dex/uniswap-v4/hooks/cabalcoin-hook/types.js.map +1 -0
  183. package/build/dex/uniswap-v4/hooks/fee-hook/fee-hook-pool.d.ts +7 -0
  184. package/build/dex/uniswap-v4/hooks/fee-hook/fee-hook-pool.js +28 -0
  185. package/build/dex/uniswap-v4/hooks/fee-hook/fee-hook-pool.js.map +1 -0
  186. package/build/dex/uniswap-v4/hooks/fee-hook/types.d.ts +0 -0
  187. package/build/dex/uniswap-v4/hooks/fee-hook/types.js +2 -0
  188. package/build/dex/uniswap-v4/hooks/fee-hook/types.js.map +1 -0
  189. package/build/dex/uniswap-v4/hooks/index.d.ts +2 -0
  190. package/build/dex/uniswap-v4/hooks/index.js +8 -0
  191. package/build/dex/uniswap-v4/hooks/index.js.map +1 -0
  192. package/build/dex/usdc-transmuter/usdc-transmuter-pool.d.ts +26 -0
  193. package/build/dex/usdc-transmuter/usdc-transmuter-pool.js +75 -0
  194. package/build/dex/usdc-transmuter/usdc-transmuter-pool.js.map +1 -0
  195. 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,42 @@
1
+ import { Interface } from '@ethersproject/abi';
2
+ import { DeepReadonly } from 'ts-essentials';
3
+ import { Log, 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>): 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>): DeepReadonly<PoolState>;
31
+ handleLogInitialize(event: any, state: DeepReadonly<PoolState>): DeepReadonly<PoolState>;
32
+ handleLogUpdateFeeAndRevenueCut(event: any, state: DeepReadonly<PoolState>): DeepReadonly<PoolState>;
33
+ handleLogUpdateRebalancingStatus(event: any, state: DeepReadonly<PoolState>): DeepReadonly<PoolState>;
34
+ handleLogUpdateRangePercents(event: any, state: DeepReadonly<PoolState>): DeepReadonly<PoolState>;
35
+ handleLogUpdateShiftTime(event: any, state: DeepReadonly<PoolState>): DeepReadonly<PoolState>;
36
+ handleLogUpdateCenterPriceLimits(event: any, state: DeepReadonly<PoolState>): DeepReadonly<PoolState>;
37
+ handleLogUpdateThresholdPercent(event: any, state: DeepReadonly<PoolState>): DeepReadonly<PoolState>;
38
+ handleLogUpdateCenterPriceAddress(event: any, state: DeepReadonly<PoolState>): DeepReadonly<PoolState>;
39
+ handleLogDeposit(event: any, state: DeepReadonly<PoolState>): DeepReadonly<PoolState>;
40
+ handleLogWithdraw(event: any, state: DeepReadonly<PoolState>): DeepReadonly<PoolState>;
41
+ private isCurrentDexId;
42
+ }