@paraswap/dex-lib 2.42.28 → 2.42.29

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 (130) hide show
  1. package/build/abi/{algebra/AlgebraPool.abi.json → solidly-v3/SolidlyV3Pool.abi.json} +293 -282
  2. package/build/abi/solidly-v3/SolidlyV3StateMulticall.abi.json +375 -0
  3. package/build/config.js +2 -2
  4. package/build/dex/index.js +2 -0
  5. package/build/dex/index.js.map +1 -1
  6. package/build/dex/solidly-v3/config.d.ts +9 -0
  7. package/build/dex/solidly-v3/config.js +58 -0
  8. package/build/dex/solidly-v3/config.js.map +1 -0
  9. package/build/dex/solidly-v3/constants.d.ts +27 -0
  10. package/build/dex/solidly-v3/constants.js +34 -0
  11. package/build/dex/solidly-v3/constants.js.map +1 -0
  12. package/build/dex/solidly-v3/contract-math/BitMath.d.ts +4 -0
  13. package/build/dex/solidly-v3/contract-math/BitMath.js +93 -0
  14. package/build/dex/solidly-v3/contract-math/BitMath.js.map +1 -0
  15. package/build/dex/solidly-v3/contract-math/FixedPoint128.d.ts +3 -0
  16. package/build/dex/solidly-v3/contract-math/FixedPoint128.js +8 -0
  17. package/build/dex/solidly-v3/contract-math/FixedPoint128.js.map +1 -0
  18. package/build/dex/solidly-v3/contract-math/FixedPoint96.d.ts +4 -0
  19. package/build/dex/solidly-v3/contract-math/FixedPoint96.js +9 -0
  20. package/build/dex/solidly-v3/contract-math/FixedPoint96.js.map +1 -0
  21. package/build/dex/solidly-v3/contract-math/FullMath.d.ts +4 -0
  22. package/build/dex/solidly-v3/contract-math/FullMath.js +19 -0
  23. package/build/dex/solidly-v3/contract-math/FullMath.js.map +1 -0
  24. package/build/dex/solidly-v3/contract-math/LiquidityMath.d.ts +3 -0
  25. package/build/dex/solidly-v3/contract-math/LiquidityMath.js +22 -0
  26. package/build/dex/solidly-v3/contract-math/LiquidityMath.js.map +1 -0
  27. package/build/dex/solidly-v3/contract-math/SqrtPriceMath.d.ts +10 -0
  28. package/build/dex/solidly-v3/contract-math/SqrtPriceMath.js +91 -0
  29. package/build/dex/solidly-v3/contract-math/SqrtPriceMath.js.map +1 -0
  30. package/build/dex/solidly-v3/contract-math/SwapMath.d.ts +8 -0
  31. package/build/dex/solidly-v3/contract-math/SwapMath.js +70 -0
  32. package/build/dex/solidly-v3/contract-math/SwapMath.js.map +1 -0
  33. package/build/dex/solidly-v3/contract-math/Tick.d.ts +7 -0
  34. package/build/dex/solidly-v3/contract-math/Tick.js +36 -0
  35. package/build/dex/solidly-v3/contract-math/Tick.js.map +1 -0
  36. package/build/dex/solidly-v3/contract-math/TickBitMap.d.ts +7 -0
  37. package/build/dex/solidly-v3/contract-math/TickBitMap.js +84 -0
  38. package/build/dex/solidly-v3/contract-math/TickBitMap.js.map +1 -0
  39. package/build/dex/solidly-v3/contract-math/TickMath.d.ts +8 -0
  40. package/build/dex/solidly-v3/contract-math/TickMath.js +162 -0
  41. package/build/dex/solidly-v3/contract-math/TickMath.js.map +1 -0
  42. package/build/dex/solidly-v3/contract-math/UnsafeMath.d.ts +3 -0
  43. package/build/dex/solidly-v3/contract-math/UnsafeMath.js +10 -0
  44. package/build/dex/solidly-v3/contract-math/UnsafeMath.js.map +1 -0
  45. package/build/dex/solidly-v3/contract-math/uniswap-v3-math.d.ts +31 -0
  46. package/build/dex/solidly-v3/contract-math/uniswap-v3-math.js +363 -0
  47. package/build/dex/solidly-v3/contract-math/uniswap-v3-math.js.map +1 -0
  48. package/build/dex/solidly-v3/contract-math/utils.d.ts +7 -0
  49. package/build/dex/solidly-v3/contract-math/utils.js +39 -0
  50. package/build/dex/solidly-v3/contract-math/utils.js.map +1 -0
  51. package/build/dex/solidly-v3/solidly-v3-factory.d.ts +26 -0
  52. package/build/dex/solidly-v3/solidly-v3-factory.js +44 -0
  53. package/build/dex/solidly-v3/solidly-v3-factory.js.map +1 -0
  54. package/build/dex/{algebra/algebra-pool.d.ts → solidly-v3/solidly-v3-pool.d.ts} +14 -16
  55. package/build/dex/{algebra/algebra-pool.js → solidly-v3/solidly-v3-pool.js} +127 -165
  56. package/build/dex/solidly-v3/solidly-v3-pool.js.map +1 -0
  57. package/build/dex/solidly-v3/solidly-v3.d.ts +67 -0
  58. package/build/dex/solidly-v3/solidly-v3.js +590 -0
  59. package/build/dex/solidly-v3/solidly-v3.js.map +1 -0
  60. package/build/dex/solidly-v3/types.d.ts +132 -0
  61. package/build/dex/solidly-v3/types.js +9 -0
  62. package/build/dex/solidly-v3/types.js.map +1 -0
  63. package/build/dex/solidly-v3/utils.d.ts +6 -0
  64. package/build/dex/solidly-v3/utils.js +53 -0
  65. package/build/dex/solidly-v3/utils.js.map +1 -0
  66. package/build/dex/trader-joe-v2-1-2/config.d.ts +4 -0
  67. package/build/dex/trader-joe-v2-1-2/config.js +15 -0
  68. package/build/dex/trader-joe-v2-1-2/config.js.map +1 -0
  69. package/build/dex/trader-joe-v2-1-2/trader-joe-v2-1-2-pool.d.ts +39 -0
  70. package/build/dex/trader-joe-v2-1-2/trader-joe-v2-1-2-pool.js +64 -0
  71. package/build/dex/trader-joe-v2-1-2/trader-joe-v2-1-2-pool.js.map +1 -0
  72. package/build/dex/trader-joe-v2-1-2/trader-joe-v2-1-2.d.ts +37 -0
  73. package/build/dex/trader-joe-v2-1-2/trader-joe-v2-1-2.js +126 -0
  74. package/build/dex/trader-joe-v2-1-2/trader-joe-v2-1-2.js.map +1 -0
  75. package/build/dex/trader-joe-v2-1-2/types.d.ts +6 -0
  76. package/build/dex/trader-joe-v2-1-2/types.js +3 -0
  77. package/build/dex/trader-joe-v2-1-2/types.js.map +1 -0
  78. package/build/dex/trader-joe-v2_1/config.d.ts +4 -0
  79. package/build/dex/trader-joe-v2_1/config.js +48 -0
  80. package/build/dex/trader-joe-v2_1/config.js.map +1 -0
  81. package/build/dex/trader-joe-v2_1/constants.d.ts +15 -0
  82. package/build/dex/trader-joe-v2_1/constants.js +17 -0
  83. package/build/dex/trader-joe-v2_1/constants.js.map +1 -0
  84. package/build/dex/trader-joe-v2_1/trader-joe-v2.1.d.ts +0 -0
  85. package/build/dex/trader-joe-v2_1/trader-joe-v2.1.js +183 -0
  86. package/build/dex/trader-joe-v2_1/trader-joe-v2.1.js.map +1 -0
  87. package/build/dex/trader-joe-v2_1/types.d.ts +39 -0
  88. package/build/dex/trader-joe-v2_1/types.js +3 -0
  89. package/build/dex/trader-joe-v2_1/types.js.map +1 -0
  90. package/build/dex/wombat/wombat-pool-poller.d.ts +22 -0
  91. package/build/dex/wombat/wombat-pool-poller.js +164 -0
  92. package/build/dex/wombat/wombat-pool-poller.js.map +1 -0
  93. package/package.json +1 -1
  94. package/src/abi/solidly-v3/SolidlyV3Pool.abi.json +738 -0
  95. package/src/abi/solidly-v3/SolidlyV3StateMulticall.abi.json +375 -0
  96. package/src/config.ts +2 -2
  97. package/src/dex/index.ts +2 -0
  98. package/src/dex/solidly-v3/config.ts +64 -0
  99. package/src/dex/solidly-v3/constants.ts +42 -0
  100. package/src/dex/solidly-v3/contract-math/BitMath.ts +90 -0
  101. package/src/dex/solidly-v3/contract-math/FixedPoint128.ts +3 -0
  102. package/src/dex/solidly-v3/contract-math/FixedPoint96.ts +4 -0
  103. package/src/dex/solidly-v3/contract-math/FullMath.ts +30 -0
  104. package/src/dex/solidly-v3/contract-math/LiquidityMath.ts +17 -0
  105. package/src/dex/solidly-v3/contract-math/SqrtPriceMath.ts +226 -0
  106. package/src/dex/solidly-v3/contract-math/SwapMath.ts +139 -0
  107. package/src/dex/solidly-v3/contract-math/Tick.ts +66 -0
  108. package/src/dex/solidly-v3/contract-math/TickBitMap.ts +123 -0
  109. package/src/dex/solidly-v3/contract-math/TickMath.ts +211 -0
  110. package/src/dex/solidly-v3/contract-math/UnsafeMath.ts +5 -0
  111. package/src/dex/solidly-v3/contract-math/uniswap-v3-math.ts +570 -0
  112. package/src/dex/solidly-v3/contract-math/utils.ts +50 -0
  113. package/src/dex/solidly-v3/solidly-v3-e2e.test.ts +124 -0
  114. package/src/dex/solidly-v3/solidly-v3-events.test.ts +144 -0
  115. package/src/dex/solidly-v3/solidly-v3-factory.ts +73 -0
  116. package/src/dex/solidly-v3/solidly-v3-integration.test.ts +358 -0
  117. package/src/dex/solidly-v3/solidly-v3-pool.ts +494 -0
  118. package/src/dex/solidly-v3/solidly-v3.ts +988 -0
  119. package/src/dex/solidly-v3/types.ts +158 -0
  120. package/src/dex/solidly-v3/utils.ts +71 -0
  121. package/src/dex/uniswap-v3/uniswap-v3-events.test.ts +3 -0
  122. package/build/abi/uniswap-v3/UniswapV3Quoter.abi.json +0 -193
  123. package/build/dex/algebra/algebra-pool.js.map +0 -1
  124. package/build/dex/quickswap/camelot-v3.d.ts +0 -6
  125. package/build/dex/quickswap/camelot-v3.js +0 -19
  126. package/build/dex/quickswap/camelot-v3.js.map +0 -1
  127. package/build/dex/quickswap/zyberswap-v3.d.ts +0 -6
  128. package/build/dex/quickswap/zyberswap-v3.js +0 -19
  129. package/build/dex/quickswap/zyberswap-v3.js.map +0 -1
  130. package/build/dex/uniswap-v2/rebase-tokens.json +0 -7
@@ -0,0 +1,211 @@
1
+ import { gt } from 'lodash';
2
+ import { BI_MAX_UINT256 } from '../../../bigint-constants';
3
+ import { _gt } from './utils';
4
+ import { _require } from '../../../utils';
5
+
6
+ export class TickMath {
7
+ static readonly MIN_TICK = -887272n;
8
+ static readonly MAX_TICK = -TickMath.MIN_TICK;
9
+ static readonly MIN_SQRT_RATIO = 4295128739n;
10
+ static readonly MAX_SQRT_RATIO =
11
+ 1461446703485210103287273052203988822378723970342n;
12
+
13
+ static getSqrtRatioAtTick(tick: bigint): bigint {
14
+ const absTick =
15
+ tick < 0n
16
+ ? BigInt.asUintN(256, -BigInt.asIntN(256, tick))
17
+ : BigInt.asUintN(256, BigInt.asIntN(256, tick));
18
+ _require(
19
+ absTick <= BigInt.asUintN(256, TickMath.MAX_TICK),
20
+ 'T',
21
+ { absTick },
22
+ 'absTick <= BigInt.asUintN(256, TickMath.MAX_TICK)',
23
+ );
24
+
25
+ let ratio =
26
+ (absTick & 0x1n) !== 0n
27
+ ? 0xfffcb933bd6fad37aa2d162d1a594001n
28
+ : 0x100000000000000000000000000000000n;
29
+ if ((absTick & 0x2n) !== 0n)
30
+ ratio = (ratio * 0xfff97272373d413259a46990580e213an) >> 128n;
31
+ if ((absTick & 0x4n) !== 0n)
32
+ ratio = (ratio * 0xfff2e50f5f656932ef12357cf3c7fdccn) >> 128n;
33
+ if ((absTick & 0x8n) !== 0n)
34
+ ratio = (ratio * 0xffe5caca7e10e4e61c3624eaa0941cd0n) >> 128n;
35
+ if ((absTick & 0x10n) !== 0n)
36
+ ratio = (ratio * 0xffcb9843d60f6159c9db58835c926644n) >> 128n;
37
+ if ((absTick & 0x20n) !== 0n)
38
+ ratio = (ratio * 0xff973b41fa98c081472e6896dfb254c0n) >> 128n;
39
+ if ((absTick & 0x40n) !== 0n)
40
+ ratio = (ratio * 0xff2ea16466c96a3843ec78b326b52861n) >> 128n;
41
+ if ((absTick & 0x80n) !== 0n)
42
+ ratio = (ratio * 0xfe5dee046a99a2a811c461f1969c3053n) >> 128n;
43
+ if ((absTick & 0x100n) !== 0n)
44
+ ratio = (ratio * 0xfcbe86c7900a88aedcffc83b479aa3a4n) >> 128n;
45
+ if ((absTick & 0x200n) !== 0n)
46
+ ratio = (ratio * 0xf987a7253ac413176f2b074cf7815e54n) >> 128n;
47
+ if ((absTick & 0x400n) !== 0n)
48
+ ratio = (ratio * 0xf3392b0822b70005940c7a398e4b70f3n) >> 128n;
49
+ if ((absTick & 0x800n) !== 0n)
50
+ ratio = (ratio * 0xe7159475a2c29b7443b29c7fa6e889d9n) >> 128n;
51
+ if ((absTick & 0x1000n) !== 0n)
52
+ ratio = (ratio * 0xd097f3bdfd2022b8845ad8f792aa5825n) >> 128n;
53
+ if ((absTick & 0x2000n) !== 0n)
54
+ ratio = (ratio * 0xa9f746462d870fdf8a65dc1f90e061e5n) >> 128n;
55
+ if ((absTick & 0x4000n) !== 0n)
56
+ ratio = (ratio * 0x70d869a156d2a1b890bb3df62baf32f7n) >> 128n;
57
+ if ((absTick & 0x8000n) !== 0n)
58
+ ratio = (ratio * 0x31be135f97d08fd981231505542fcfa6n) >> 128n;
59
+ if ((absTick & 0x10000n) !== 0n)
60
+ ratio = (ratio * 0x9aa508b5b7a84e1c677de54f3e99bc9n) >> 128n;
61
+ if ((absTick & 0x20000n) !== 0n)
62
+ ratio = (ratio * 0x5d6af8dedb81196699c329225ee604n) >> 128n;
63
+ if ((absTick & 0x40000n) !== 0n)
64
+ ratio = (ratio * 0x2216e584f5fa1ea926041bedfe98n) >> 128n;
65
+ if ((absTick & 0x80000n) !== 0n)
66
+ ratio = (ratio * 0x48a170391f7dc42444e8fa2n) >> 128n;
67
+
68
+ if (tick > 0) ratio = BI_MAX_UINT256 / ratio;
69
+ return BigInt.asUintN(
70
+ 160,
71
+ (ratio >> 32n) + (ratio % (1n << 32n) == 0n ? 0n : 1n),
72
+ );
73
+ }
74
+
75
+ static getTickAtSqrtRatio(sqrtPriceX96: bigint): bigint {
76
+ _require(
77
+ sqrtPriceX96 >= TickMath.MIN_SQRT_RATIO &&
78
+ sqrtPriceX96 < TickMath.MAX_SQRT_RATIO,
79
+ 'R',
80
+ { sqrtPriceX96 },
81
+ 'sqrtPriceX96 >= TickMath.MIN_SQRT_RATIO && sqrtPriceX96 < TickMath.MAX_SQRT_RATIO',
82
+ );
83
+
84
+ let ratio = BigInt.asUintN(256, sqrtPriceX96) << 32n;
85
+
86
+ let r = ratio;
87
+ let msb = 0n;
88
+
89
+ let f = _gt(r, 0xffffffffffffffffffffffffffffffffn) << 7n;
90
+ msb = msb | f;
91
+ r = r >> f;
92
+
93
+ f = _gt(r, 0xffffffffffffffffn) << 6n;
94
+ msb = msb | f;
95
+ r = r >> f;
96
+
97
+ f = _gt(r, 0xffffffffn) << 5n;
98
+ msb = msb | f;
99
+ r = r >> f;
100
+
101
+ f = _gt(r, 0xffffn) << 4n;
102
+ msb = msb | f;
103
+ r = r >> f;
104
+
105
+ f = _gt(r, 0xffn) << 3n;
106
+ msb = msb | f;
107
+ r = r >> f;
108
+
109
+ f = _gt(r, 0xfn) << 2n;
110
+ msb = msb | f;
111
+ r = r >> f;
112
+
113
+ f = _gt(r, 0x3n) << 1n;
114
+ msb = msb | f;
115
+ r = r >> f;
116
+
117
+ f = _gt(r, 0x1n);
118
+ msb = msb | f;
119
+
120
+ if (msb >= 128n) r = ratio >> (msb - 127n);
121
+ else r = ratio << (127n - msb);
122
+
123
+ let log_2 = (BigInt.asIntN(256, msb) - 128n) << 64n;
124
+
125
+ r = (r * r) >> 127n;
126
+ f = r >> 128n;
127
+ log_2 = log_2 | (f << 63n);
128
+ r = r >> f;
129
+
130
+ r = (r * r) >> 127n;
131
+ f = r >> 128n;
132
+ log_2 = log_2 | (f << 62n);
133
+ r = r >> f;
134
+
135
+ r = (r * r) >> 127n;
136
+ f = r >> 128n;
137
+ log_2 = log_2 | (f << 61n);
138
+ r = r >> f;
139
+
140
+ r = (r * r) >> 127n;
141
+ f = r >> 128n;
142
+ log_2 = log_2 | (f << 60n);
143
+ r = r >> f;
144
+
145
+ r = (r * r) >> 127n;
146
+ f = r >> 128n;
147
+ log_2 = log_2 | (f << 59n);
148
+ r = r >> f;
149
+
150
+ r = (r * r) >> 127n;
151
+ f = r >> 128n;
152
+ log_2 = log_2 | (f << 58n);
153
+ r = r >> f;
154
+
155
+ r = (r * r) >> 127n;
156
+ f = r >> 128n;
157
+ log_2 = log_2 | (f << 57n);
158
+ r = r >> f;
159
+
160
+ r = (r * r) >> 127n;
161
+ f = r >> 128n;
162
+ log_2 = log_2 | (f << 56n);
163
+ r = r >> f;
164
+
165
+ r = (r * r) >> 127n;
166
+ f = r >> 128n;
167
+ log_2 = log_2 | (f << 55n);
168
+ r = r >> f;
169
+
170
+ r = (r * r) >> 127n;
171
+ f = r >> 128n;
172
+ log_2 = log_2 | (f << 54n);
173
+ r = r >> f;
174
+
175
+ r = (r * r) >> 127n;
176
+ f = r >> 128n;
177
+ log_2 = log_2 | (f << 53n);
178
+ r = r >> f;
179
+
180
+ r = (r * r) >> 127n;
181
+ f = r >> 128n;
182
+ log_2 = log_2 | (f << 52n);
183
+ r = r >> f;
184
+
185
+ r = (r * r) >> 127n;
186
+ f = r >> 128n;
187
+ log_2 = log_2 | (f << 51n);
188
+ r = r >> f;
189
+
190
+ r = (r * r) >> 127n;
191
+ f = r >> 128n;
192
+ log_2 = log_2 | (f << 50n);
193
+
194
+ const log_sqrt10001 = log_2 * 255738958999603826347141n; // 128.128 number
195
+
196
+ const tickLow = BigInt.asIntN(
197
+ 24,
198
+ (log_sqrt10001 - 3402992956809132418596140100660247210n) >> 128n,
199
+ );
200
+ const tickHi = BigInt.asIntN(
201
+ 24,
202
+ (log_sqrt10001 + 291339464771989622907027621153398088495n) >> 128n,
203
+ );
204
+
205
+ return tickLow === tickHi
206
+ ? tickLow
207
+ : TickMath.getSqrtRatioAtTick(tickHi) <= sqrtPriceX96
208
+ ? tickHi
209
+ : tickLow;
210
+ }
211
+ }
@@ -0,0 +1,5 @@
1
+ export class UnsafeMath {
2
+ static divRoundingUp(x: bigint, y: bigint) {
3
+ return (x + y - 1n) / y;
4
+ }
5
+ }