@paraswap/dex-lib 4.7.24-inactive-dexs-cleanup.0 → 4.7.24-inactive-dexs-cleanup.2

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 (114) hide show
  1. package/build/abi/ekubo-v3/core.json +797 -0
  2. package/build/abi/ekubo-v3/mev-capture-router.json +936 -0
  3. package/build/abi/ekubo-v3/quote-data-fetcher.json +161 -0
  4. package/build/abi/ekubo-v3/twamm-data-fetcher.json +216 -0
  5. package/build/abi/ekubo-v3/twamm.json +613 -0
  6. package/build/dex/angle-staked-stable/config.js +0 -32
  7. package/build/dex/angle-staked-stable/config.js.map +1 -1
  8. package/build/dex/angle-transmuter/config.js +0 -20
  9. package/build/dex/angle-transmuter/config.js.map +1 -1
  10. package/build/dex/curve-v1/constants.js +2 -4
  11. package/build/dex/curve-v1/constants.js.map +1 -1
  12. package/build/dex/dodo-v1/config.js +0 -10
  13. package/build/dex/dodo-v1/config.js.map +1 -1
  14. package/build/dex/ekubo-v3/config.d.ts +13 -0
  15. package/build/dex/ekubo-v3/config.js +23 -0
  16. package/build/dex/ekubo-v3/config.js.map +1 -0
  17. package/build/dex/ekubo-v3/ekubo-v3-pool-manager.d.ts +34 -0
  18. package/build/dex/ekubo-v3/ekubo-v3-pool-manager.js +421 -0
  19. package/build/dex/ekubo-v3/ekubo-v3-pool-manager.js.map +1 -0
  20. package/build/dex/ekubo-v3/ekubo-v3.d.ts +38 -0
  21. package/build/dex/ekubo-v3/ekubo-v3.js +274 -0
  22. package/build/dex/ekubo-v3/ekubo-v3.js.map +1 -0
  23. package/build/dex/ekubo-v3/pools/base.d.ts +42 -0
  24. package/build/dex/ekubo-v3/pools/base.js +307 -0
  25. package/build/dex/ekubo-v3/pools/base.js.map +1 -0
  26. package/build/dex/ekubo-v3/pools/full-range.d.ts +25 -0
  27. package/build/dex/ekubo-v3/pools/full-range.js +105 -0
  28. package/build/dex/ekubo-v3/pools/full-range.js.map +1 -0
  29. package/build/dex/ekubo-v3/pools/math/constants.d.ts +12 -0
  30. package/build/dex/ekubo-v3/pools/math/constants.js +16 -0
  31. package/build/dex/ekubo-v3/pools/math/constants.js.map +1 -0
  32. package/build/dex/ekubo-v3/pools/math/delta.d.ts +2 -0
  33. package/build/dex/ekubo-v3/pools/math/delta.js +51 -0
  34. package/build/dex/ekubo-v3/pools/math/delta.js.map +1 -0
  35. package/build/dex/ekubo-v3/pools/math/sqrt-ratio.d.ts +8 -0
  36. package/build/dex/ekubo-v3/pools/math/sqrt-ratio.js +113 -0
  37. package/build/dex/ekubo-v3/pools/math/sqrt-ratio.js.map +1 -0
  38. package/build/dex/ekubo-v3/pools/math/swap.d.ts +18 -0
  39. package/build/dex/ekubo-v3/pools/math/swap.js +128 -0
  40. package/build/dex/ekubo-v3/pools/math/swap.js.map +1 -0
  41. package/build/dex/ekubo-v3/pools/math/tick.d.ts +8 -0
  42. package/build/dex/ekubo-v3/pools/math/tick.js +129 -0
  43. package/build/dex/ekubo-v3/pools/math/tick.js.map +1 -0
  44. package/build/dex/ekubo-v3/pools/math/twamm/exp2.d.ts +1 -0
  45. package/build/dex/ekubo-v3/pools/math/twamm/exp2.js +86 -0
  46. package/build/dex/ekubo-v3/pools/math/twamm/exp2.js.map +1 -0
  47. package/build/dex/ekubo-v3/pools/math/twamm/sqrt-ratio.d.ts +1 -0
  48. package/build/dex/ekubo-v3/pools/math/twamm/sqrt-ratio.js +56 -0
  49. package/build/dex/ekubo-v3/pools/math/twamm/sqrt-ratio.js.map +1 -0
  50. package/build/dex/ekubo-v3/pools/mev-capture.d.ts +8 -0
  51. package/build/dex/ekubo-v3/pools/mev-capture.js +42 -0
  52. package/build/dex/ekubo-v3/pools/mev-capture.js.map +1 -0
  53. package/build/dex/ekubo-v3/pools/oracle.d.ts +8 -0
  54. package/build/dex/ekubo-v3/pools/oracle.js +18 -0
  55. package/build/dex/ekubo-v3/pools/oracle.js.map +1 -0
  56. package/build/dex/ekubo-v3/pools/pool.d.ts +56 -0
  57. package/build/dex/ekubo-v3/pools/pool.js +88 -0
  58. package/build/dex/ekubo-v3/pools/pool.js.map +1 -0
  59. package/build/dex/ekubo-v3/pools/stableswap.d.ts +22 -0
  60. package/build/dex/ekubo-v3/pools/stableswap.js +123 -0
  61. package/build/dex/ekubo-v3/pools/stableswap.js.map +1 -0
  62. package/build/dex/ekubo-v3/pools/twamm.d.ts +40 -0
  63. package/build/dex/ekubo-v3/pools/twamm.js +265 -0
  64. package/build/dex/ekubo-v3/pools/twamm.js.map +1 -0
  65. package/build/dex/ekubo-v3/pools/utils.d.ts +62 -0
  66. package/build/dex/ekubo-v3/pools/utils.js +160 -0
  67. package/build/dex/ekubo-v3/pools/utils.js.map +1 -0
  68. package/build/dex/ekubo-v3/types.d.ts +58 -0
  69. package/build/dex/ekubo-v3/types.js +3 -0
  70. package/build/dex/ekubo-v3/types.js.map +1 -0
  71. package/build/dex/ekubo-v3/utils.d.ts +10 -0
  72. package/build/dex/ekubo-v3/utils.js +54 -0
  73. package/build/dex/ekubo-v3/utils.js.map +1 -0
  74. package/build/dex/erc4626/config.js +0 -18
  75. package/build/dex/erc4626/config.js.map +1 -1
  76. package/build/dex/index.js +0 -30
  77. package/build/dex/index.js.map +1 -1
  78. package/build/dex/nerve/config.js +0 -244
  79. package/build/dex/nerve/config.js.map +1 -1
  80. package/build/dex/solidly/config.js +10 -64
  81. package/build/dex/solidly/config.js.map +1 -1
  82. package/build/dex/solidly/forks-override/velodromeV2.js +1 -1
  83. package/build/dex/solidly/forks-override/velodromeV2.js.map +1 -1
  84. package/build/dex/solidly/solidly-stable-pool.d.ts +1 -1
  85. package/build/dex/solidly/solidly-stable-pool.js +1 -1
  86. package/build/dex/solidly/solidly-stable-pool.js.map +1 -1
  87. package/build/dex/solidly/solidly.d.ts +6 -4
  88. package/build/dex/solidly/solidly.js +119 -76
  89. package/build/dex/solidly/solidly.js.map +1 -1
  90. package/build/dex/solidly/types.d.ts +3 -0
  91. package/build/dex/stable-pool/stable-pool.js +1 -1
  92. package/build/dex/stable-pool/stable-pool.js.map +1 -1
  93. package/build/dex/trader-joe-v2.1/config.d.ts +0 -3
  94. package/build/dex/trader-joe-v2.1/config.js +1 -6
  95. package/build/dex/trader-joe-v2.1/config.js.map +1 -1
  96. package/build/dex/uniswap-v2/config.js +0 -162
  97. package/build/dex/uniswap-v2/config.js.map +1 -1
  98. package/build/dex/uniswap-v2/constants.js +1 -12
  99. package/build/dex/uniswap-v2/constants.js.map +1 -1
  100. package/build/dex/uniswap-v2/uniswap-v2.d.ts +6 -4
  101. package/build/dex/uniswap-v2/uniswap-v2.js +32 -20
  102. package/build/dex/uniswap-v2/uniswap-v2.js.map +1 -1
  103. package/build/dex/uniswap-v3/forks/pharaoh-v3/pharaoh-v3.d.ts +5 -0
  104. package/build/dex/uniswap-v3/forks/pharaoh-v3/pharaoh-v3.js +11 -0
  105. package/build/dex/uniswap-v3/forks/pharaoh-v3/pharaoh-v3.js.map +1 -1
  106. package/build/dex/uniswap-v3/forks/velodrome-slipstream/velodrome-slipstream-pool.d.ts +1 -4
  107. package/build/dex/uniswap-v3/forks/velodrome-slipstream/velodrome-slipstream-pool.js +0 -30
  108. package/build/dex/uniswap-v3/forks/velodrome-slipstream/velodrome-slipstream-pool.js.map +1 -1
  109. package/build/dex/uniswap-v3/forks/velodrome-slipstream/velodrome-slipstream.d.ts +7 -0
  110. package/build/dex/uniswap-v3/forks/velodrome-slipstream/velodrome-slipstream.js +58 -0
  111. package/build/dex/uniswap-v3/forks/velodrome-slipstream/velodrome-slipstream.js.map +1 -1
  112. package/build/dex/wombat/config.js +0 -3
  113. package/build/dex/wombat/config.js.map +1 -1
  114. package/package.json +1 -1
@@ -0,0 +1,265 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TwammPoolState = exports.TwammPool = void 0;
4
+ const full_range_1 = require("./full-range");
5
+ const pool_1 = require("./pool");
6
+ const constants_1 = require("./math/constants");
7
+ const sqrt_ratio_1 = require("./math/sqrt-ratio");
8
+ const tick_1 = require("./math/tick");
9
+ const sqrt_ratio_2 = require("./math/twamm/sqrt-ratio");
10
+ const utils_1 = require("./utils");
11
+ const base_1 = require("./base");
12
+ const utils_2 = require("ethers/lib/utils");
13
+ const utils_3 = require("../utils");
14
+ const SLOT_DURATION_SECS = 12n;
15
+ const BASE_GAS_COST_OF_ONE_TWAMM_SWAP = 30_716;
16
+ // TODO
17
+ const BASE_GAS_COST_OF_ONE_TWAMM_FULL_RANGE_SWAP = 19_000;
18
+ const GAS_COST_OF_ONE_VIRTUAL_ORDER_DELTA = 7_500;
19
+ const LOG_BASE_256 = Math.log(256);
20
+ class TwammPool extends pool_1.EkuboPool {
21
+ twammDataFetcher;
22
+ constructor(parentName, dexHelper, logger, contracts, initBlockNumber, key) {
23
+ const { contract: { address: coreAddress }, interface: coreIface, } = contracts.core;
24
+ const { contract: { address: twammAddress }, interface: twammIface, quoteDataFetcher: twammDataFetcher, } = contracts.twamm;
25
+ super(parentName, dexHelper, logger, initBlockNumber, key, {
26
+ [coreAddress]: new pool_1.NamedEventHandlers(coreIface, {
27
+ PositionUpdated: (args, oldState) => TwammPoolState.fromPositionUpdatedEvent(oldState, args.liquidityDelta.toBigInt()),
28
+ }),
29
+ [twammAddress]: new pool_1.NamedEventHandlers(twammIface, {
30
+ OrderUpdated: (args, oldState) => {
31
+ const orderKey = args.orderKey;
32
+ if (key.token0 !== BigInt(orderKey.token0) ||
33
+ key.token1 !== BigInt(orderKey.token1) ||
34
+ key.config.fee !== BigInt((0, utils_2.hexDataSlice)(orderKey.config, 0, 8))) {
35
+ return null;
36
+ }
37
+ const isToken1 = Boolean(Number((0, utils_2.hexDataSlice)(orderKey.config, 8, 9)));
38
+ return TwammPoolState.fromOrderUpdatedEvent(oldState, [
39
+ BigInt((0, utils_2.hexDataSlice)(orderKey.config, 16, 24)),
40
+ BigInt((0, utils_2.hexDataSlice)(orderKey.config, 24, 32)),
41
+ ], args.saleRateDelta.toBigInt(), isToken1);
42
+ },
43
+ }),
44
+ }, {
45
+ [coreAddress]: (data, oldState) => TwammPoolState.fromSwappedEvent(oldState, (0, utils_1.parseSwappedEvent)(data)),
46
+ [twammAddress]: (data, oldState, blockHeader) => TwammPoolState.fromVirtualOrdersExecutedEvent(oldState, parseVirtualOrdersExecutedEvent(data), BigInt(blockHeader.timestamp)),
47
+ });
48
+ this.twammDataFetcher = twammDataFetcher;
49
+ }
50
+ async generateState(blockNumber) {
51
+ const quoteData = await this.twammDataFetcher.getPoolState(this.key.toAbi(), {
52
+ blockTag: blockNumber,
53
+ });
54
+ return TwammPoolState.fromQuoter(quoteData);
55
+ }
56
+ _quote(amount, isToken1, state) {
57
+ return this.quoteTwamm(amount, isToken1, state);
58
+ }
59
+ quoteTwamm(amount, isToken1, state, overrideTime) {
60
+ const currentTime = overrideTime ??
61
+ (0, utils_3.bigintMax)(state.lastExecutionTime + SLOT_DURATION_SECS, BigInt(Math.floor(Date.now() / 1000)));
62
+ const fee = this.key.config.fee;
63
+ const quoteFullRangePool = full_range_1.FullRangePool.prototype.quoteFullRange.bind(this);
64
+ const liquidity = state.fullRangePoolState.liquidity;
65
+ let nextSqrtRatio = state.fullRangePoolState.sqrtRatio;
66
+ let token0SaleRate = state.token0SaleRate;
67
+ let token1SaleRate = state.token1SaleRate;
68
+ let lastExecutionTime = state.lastExecutionTime;
69
+ let virtualOrderDeltaTimesCrossed = 0;
70
+ let swapCount = 0;
71
+ let nextSaleRateDeltaIndex = state.virtualOrderDeltas.findIndex(srd => srd.time > lastExecutionTime);
72
+ let fullRangePoolState = state.fullRangePoolState;
73
+ while (lastExecutionTime != currentTime) {
74
+ const saleRateDelta = state.virtualOrderDeltas[nextSaleRateDeltaIndex];
75
+ const nextExecutionTime = saleRateDelta
76
+ ? (0, utils_3.bigintMin)(saleRateDelta.time, currentTime)
77
+ : currentTime;
78
+ const timeElapsed = nextExecutionTime - lastExecutionTime;
79
+ if (timeElapsed > constants_1.MAX_U32) {
80
+ throw new Error('Too much time passed since last execution');
81
+ }
82
+ const [amount0, amount1] = [
83
+ (token0SaleRate * BigInt(timeElapsed)) >> 32n,
84
+ (token1SaleRate * BigInt(timeElapsed)) >> 32n,
85
+ ];
86
+ if (amount0 > 0n && amount1 > 0n) {
87
+ let currentSqrtRatio = nextSqrtRatio;
88
+ if (currentSqrtRatio > tick_1.MAX_SQRT_RATIO) {
89
+ currentSqrtRatio = tick_1.MAX_SQRT_RATIO;
90
+ }
91
+ else if (currentSqrtRatio < tick_1.MIN_SQRT_RATIO) {
92
+ currentSqrtRatio = tick_1.MIN_SQRT_RATIO;
93
+ }
94
+ nextSqrtRatio = (0, sqrt_ratio_2.calculateNextSqrtRatio)(currentSqrtRatio, liquidity, token0SaleRate, token1SaleRate, timeElapsed, fee);
95
+ const [amount, isToken1] = currentSqrtRatio < nextSqrtRatio ? [amount1, true] : [amount0, false];
96
+ const quote = quoteFullRangePool(amount, isToken1, fullRangePoolState, nextSqrtRatio);
97
+ swapCount++;
98
+ fullRangePoolState = quote.stateAfter;
99
+ }
100
+ else if (amount0 > 0n || amount1 > 0n) {
101
+ const [amount, isToken1] = amount0 !== 0n ? [amount0, false] : [amount1, true];
102
+ const quote = quoteFullRangePool(amount, isToken1, fullRangePoolState);
103
+ swapCount++;
104
+ fullRangePoolState = quote.stateAfter;
105
+ nextSqrtRatio = quote.stateAfter.sqrtRatio;
106
+ }
107
+ if (saleRateDelta) {
108
+ if (saleRateDelta.time === nextExecutionTime) {
109
+ token0SaleRate += saleRateDelta.saleRateDelta0;
110
+ token1SaleRate += saleRateDelta.saleRateDelta1;
111
+ nextSaleRateDeltaIndex++;
112
+ virtualOrderDeltaTimesCrossed++;
113
+ }
114
+ }
115
+ lastExecutionTime = nextExecutionTime;
116
+ }
117
+ const finalQuote = quoteFullRangePool(amount, isToken1, fullRangePoolState);
118
+ return {
119
+ calculatedAmount: finalQuote.calculatedAmount,
120
+ consumedAmount: finalQuote.consumedAmount,
121
+ gasConsumed: BASE_GAS_COST_OF_ONE_TWAMM_SWAP +
122
+ swapCount * BASE_GAS_COST_OF_ONE_TWAMM_FULL_RANGE_SWAP +
123
+ virtualOrderDeltaTimesCrossed * GAS_COST_OF_ONE_VIRTUAL_ORDER_DELTA +
124
+ (Math.log(Number(currentTime - state.lastExecutionTime)) /
125
+ LOG_BASE_256) *
126
+ base_1.GAS_COST_OF_ONE_EXTRA_BITMAP_SLOAD,
127
+ skipAhead: finalQuote.skipAhead,
128
+ };
129
+ }
130
+ _computeTvl(state) {
131
+ return full_range_1.FullRangePoolState.computeTvl(state.fullRangePoolState);
132
+ }
133
+ }
134
+ exports.TwammPool = TwammPool;
135
+ function parseVirtualOrdersExecutedEvent(data) {
136
+ let n = BigInt(data);
137
+ const token1SaleRate = BigInt.asUintN(112, n);
138
+ n >>= 112n;
139
+ const token0SaleRate = BigInt.asUintN(112, n);
140
+ return {
141
+ token0SaleRate,
142
+ token1SaleRate,
143
+ };
144
+ }
145
+ var TwammPoolState;
146
+ (function (TwammPoolState) {
147
+ function fromPoolInitialization(state) {
148
+ return {
149
+ fullRangePoolState: full_range_1.FullRangePoolState.fromPoolInitialization(state),
150
+ token0SaleRate: 0n,
151
+ token1SaleRate: 0n,
152
+ lastExecutionTime: BigInt(state.blockHeader.timestamp),
153
+ virtualOrderDeltas: [],
154
+ };
155
+ }
156
+ TwammPoolState.fromPoolInitialization = fromPoolInitialization;
157
+ function fromQuoter(data) {
158
+ const liquidity = data.liquidity.toBigInt();
159
+ const sqrtRatioFloat = data.sqrtRatio.toBigInt();
160
+ return {
161
+ fullRangePoolState: {
162
+ sqrtRatio: (0, sqrt_ratio_1.floatSqrtRatioToFixed)(sqrtRatioFloat),
163
+ liquidity,
164
+ },
165
+ token0SaleRate: data.saleRateToken0.toBigInt(),
166
+ token1SaleRate: data.saleRateToken1.toBigInt(),
167
+ lastExecutionTime: data.lastVirtualOrderExecutionTime.toBigInt(),
168
+ virtualOrderDeltas: data.saleRateDeltas.map(srd => ({
169
+ time: srd.time.toBigInt(),
170
+ saleRateDelta0: srd.saleRateDelta0.toBigInt(),
171
+ saleRateDelta1: srd.saleRateDelta1.toBigInt(),
172
+ })),
173
+ };
174
+ }
175
+ TwammPoolState.fromQuoter = fromQuoter;
176
+ function fromSwappedEvent(oldState, ev) {
177
+ const clonedState = structuredClone(oldState);
178
+ clonedState.fullRangePoolState.liquidity = ev.liquidityAfter;
179
+ clonedState.fullRangePoolState.sqrtRatio = ev.sqrtRatioAfter;
180
+ return clonedState;
181
+ }
182
+ TwammPoolState.fromSwappedEvent = fromSwappedEvent;
183
+ function fromPositionUpdatedEvent(oldState, liquidityDelta) {
184
+ if (liquidityDelta === 0n) {
185
+ return null;
186
+ }
187
+ const clonedState = structuredClone(oldState);
188
+ clonedState.fullRangePoolState.liquidity += liquidityDelta;
189
+ return clonedState;
190
+ }
191
+ TwammPoolState.fromPositionUpdatedEvent = fromPositionUpdatedEvent;
192
+ function fromVirtualOrdersExecutedEvent(oldState, ev, timestamp) {
193
+ const clonedState = structuredClone(oldState);
194
+ clonedState.lastExecutionTime = timestamp;
195
+ clonedState.token0SaleRate = ev.token0SaleRate;
196
+ clonedState.token1SaleRate = ev.token1SaleRate;
197
+ const virtualOrderDeltas = clonedState.virtualOrderDeltas;
198
+ for (let virtualOrder = virtualOrderDeltas[0]; typeof virtualOrder !== 'undefined'; virtualOrder = virtualOrderDeltas[0]) {
199
+ if (virtualOrder.time > timestamp) {
200
+ break;
201
+ }
202
+ virtualOrderDeltas.shift();
203
+ }
204
+ return clonedState;
205
+ }
206
+ TwammPoolState.fromVirtualOrdersExecutedEvent = fromVirtualOrdersExecutedEvent;
207
+ function fromOrderUpdatedEvent(oldState, [startTime, endTime], orderSaleRateDelta, isToken1) {
208
+ if (orderSaleRateDelta === 0n) {
209
+ return null;
210
+ }
211
+ const clonedState = structuredClone(oldState);
212
+ const virtualOrderDeltas = clonedState.virtualOrderDeltas;
213
+ let startIndex = 0;
214
+ for (const [time, saleRateDelta] of [
215
+ [startTime, orderSaleRateDelta],
216
+ [endTime, -orderSaleRateDelta],
217
+ ]) {
218
+ if (time > clonedState.lastExecutionTime) {
219
+ let idx = findOrderIndex(virtualOrderDeltas, time, startIndex);
220
+ if (idx < 0) {
221
+ idx = ~idx;
222
+ virtualOrderDeltas.splice(idx, 0, {
223
+ time,
224
+ saleRateDelta0: 0n,
225
+ saleRateDelta1: 0n,
226
+ });
227
+ }
228
+ const virtualOrderDelta = virtualOrderDeltas[idx];
229
+ virtualOrderDelta[`saleRateDelta${isToken1 ? '1' : '0'}`] +=
230
+ saleRateDelta;
231
+ if (virtualOrderDelta.saleRateDelta0 === 0n &&
232
+ virtualOrderDelta.saleRateDelta1 === 0n) {
233
+ virtualOrderDeltas.splice(idx, 1);
234
+ startIndex = idx;
235
+ }
236
+ else {
237
+ startIndex = idx + 1;
238
+ }
239
+ }
240
+ else {
241
+ clonedState[`token${isToken1 ? '1' : '0'}SaleRate`] += saleRateDelta;
242
+ }
243
+ }
244
+ return clonedState;
245
+ }
246
+ TwammPoolState.fromOrderUpdatedEvent = fromOrderUpdatedEvent;
247
+ function findOrderIndex(virtualOrderDeltas, searchTime, startIndex = 0) {
248
+ let l = startIndex, r = virtualOrderDeltas.length - 1;
249
+ while (l <= r) {
250
+ const mid = Math.floor((l + r) / 2);
251
+ const midOrderTime = virtualOrderDeltas[mid].time;
252
+ if (midOrderTime === searchTime) {
253
+ return mid;
254
+ }
255
+ else if (midOrderTime < searchTime) {
256
+ l = mid + 1;
257
+ }
258
+ else {
259
+ r = mid - 1;
260
+ }
261
+ }
262
+ return ~l; // Bitwise NOT of the insertion point
263
+ }
264
+ })(TwammPoolState || (exports.TwammPoolState = TwammPoolState = {}));
265
+ //# sourceMappingURL=twamm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"twamm.js","sourceRoot":"","sources":["../../../../src/dex/ekubo-v3/pools/twamm.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,62 @@
1
+ import { AbiPoolKey } from '../types';
2
+ export type EkuboPoolKey = PoolKey<StableswapPoolTypeConfig | ConcentratedPoolTypeConfig>;
3
+ export declare class PoolKey<C extends PoolTypeConfig> {
4
+ readonly token0: bigint;
5
+ readonly token1: bigint;
6
+ readonly config: PoolConfig<C>;
7
+ private _numId?;
8
+ private _stringId?;
9
+ constructor(token0: bigint, token1: bigint, config: PoolConfig<C>, _numId?: bigint | undefined);
10
+ static fromAbi(abiPk: AbiPoolKey): EkuboPoolKey;
11
+ static fromStringId(stringId: string): EkuboPoolKey;
12
+ get stringId(): string;
13
+ get numId(): bigint;
14
+ toAbi(): AbiPoolKey;
15
+ }
16
+ export interface PoolTypeConfig {
17
+ readonly kind: 'stableswap' | 'concentrated';
18
+ compressed(): bigint;
19
+ stringId(): string;
20
+ }
21
+ export declare class StableswapPoolTypeConfig implements PoolTypeConfig {
22
+ centerTick: number;
23
+ amplificationFactor: number;
24
+ readonly kind = "stableswap";
25
+ static fullRangeConfig(): StableswapPoolTypeConfig;
26
+ constructor(centerTick: number, amplificationFactor: number);
27
+ isFullRange(): boolean;
28
+ compressed(): bigint;
29
+ stringId(): string;
30
+ }
31
+ export declare class ConcentratedPoolTypeConfig implements PoolTypeConfig {
32
+ tickSpacing: number;
33
+ readonly kind = "concentrated";
34
+ constructor(tickSpacing: number);
35
+ compressed(): bigint;
36
+ stringId(): string;
37
+ }
38
+ export type PoolTypeConfigUnion = {
39
+ kind: 'stableswap';
40
+ amplificationFactor: number;
41
+ centerTick: number;
42
+ } | {
43
+ kind: 'concentrated';
44
+ tickSpacing: number;
45
+ };
46
+ export declare class PoolConfig<C extends PoolTypeConfig> {
47
+ readonly extension: bigint;
48
+ readonly fee: bigint;
49
+ readonly poolTypeConfig: C;
50
+ private _compressed?;
51
+ static fromCompressed(compressed: bigint): PoolConfig<ConcentratedPoolTypeConfig | StableswapPoolTypeConfig>;
52
+ constructor(extension: bigint, fee: bigint, poolTypeConfig: C, _compressed?: bigint | undefined);
53
+ get compressed(): bigint;
54
+ }
55
+ export declare function isStableswapKey(key: EkuboPoolKey): key is PoolKey<StableswapPoolTypeConfig>;
56
+ export declare function isConcentratedKey(key: EkuboPoolKey): key is PoolKey<ConcentratedPoolTypeConfig>;
57
+ export interface SwappedEvent {
58
+ tickAfter: number;
59
+ sqrtRatioAfter: bigint;
60
+ liquidityAfter: bigint;
61
+ }
62
+ export declare function parseSwappedEvent(data: string): SwappedEvent;
@@ -0,0 +1,160 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PoolConfig = exports.ConcentratedPoolTypeConfig = exports.StableswapPoolTypeConfig = exports.PoolKey = void 0;
4
+ exports.isStableswapKey = isStableswapKey;
5
+ exports.isConcentratedKey = isConcentratedKey;
6
+ exports.parseSwappedEvent = parseSwappedEvent;
7
+ const abi_1 = require("@ethersproject/abi");
8
+ const utils_1 = require("ethers/lib/utils");
9
+ const web3_utils_1 = require("web3-utils");
10
+ const sqrt_ratio_1 = require("./math/sqrt-ratio");
11
+ class PoolKey {
12
+ token0;
13
+ token1;
14
+ config;
15
+ _numId;
16
+ _stringId;
17
+ constructor(token0, token1, config, _numId) {
18
+ this.token0 = token0;
19
+ this.token1 = token1;
20
+ this.config = config;
21
+ this._numId = _numId;
22
+ }
23
+ static fromAbi(abiPk) {
24
+ return new PoolKey(BigInt(abiPk.token0), BigInt(abiPk.token1), PoolConfig.fromCompressed(BigInt(abiPk.config)));
25
+ }
26
+ static fromStringId(stringId) {
27
+ const [_dexIdentifier, token0, token1, extension, fee, poolTypeConfigDiscriminator, poolTypeConfig1, poolTypeConfig2,] = stringId.split('_');
28
+ let poolTypeConfig;
29
+ if (poolTypeConfigDiscriminator === 'stableswap') {
30
+ poolTypeConfig = new StableswapPoolTypeConfig(Number(poolTypeConfig2), Number(poolTypeConfig1));
31
+ }
32
+ else if (poolTypeConfigDiscriminator === 'concentrated') {
33
+ poolTypeConfig = new ConcentratedPoolTypeConfig(Number(poolTypeConfig1));
34
+ }
35
+ else {
36
+ throw new Error(`unknown pool type config discriminator "${poolTypeConfigDiscriminator}"`);
37
+ }
38
+ const poolKey = new PoolKey(BigInt(token0), BigInt(token1), new PoolConfig(BigInt(extension), BigInt(fee), poolTypeConfig));
39
+ poolKey._stringId = stringId;
40
+ return poolKey;
41
+ }
42
+ get stringId() {
43
+ this._stringId ??= [
44
+ 'ekubov3',
45
+ (0, utils_1.hexZeroPad)((0, utils_1.hexlify)(this.token0), 20),
46
+ (0, utils_1.hexZeroPad)((0, utils_1.hexlify)(this.token1), 20),
47
+ (0, utils_1.hexZeroPad)((0, utils_1.hexlify)(this.config.extension), 20),
48
+ this.config.fee,
49
+ this.config.poolTypeConfig.stringId(),
50
+ ].join('_');
51
+ return this._stringId;
52
+ }
53
+ get numId() {
54
+ this._numId ??= BigInt((0, web3_utils_1.keccak256)(abi_1.defaultAbiCoder.encode(['address', 'address', 'bytes32'], [
55
+ (0, utils_1.hexZeroPad)((0, utils_1.hexlify)(this.token0), 20),
56
+ (0, utils_1.hexZeroPad)((0, utils_1.hexlify)(this.token1), 20),
57
+ (0, utils_1.hexZeroPad)((0, utils_1.hexlify)(this.config.compressed), 32),
58
+ ])));
59
+ return this._numId;
60
+ }
61
+ toAbi() {
62
+ return {
63
+ token0: (0, utils_1.hexZeroPad)((0, utils_1.hexlify)(this.token0), 20),
64
+ token1: (0, utils_1.hexZeroPad)((0, utils_1.hexlify)(this.token1), 20),
65
+ config: (0, utils_1.hexZeroPad)((0, utils_1.hexlify)(this.config.compressed), 32),
66
+ };
67
+ }
68
+ }
69
+ exports.PoolKey = PoolKey;
70
+ class StableswapPoolTypeConfig {
71
+ centerTick;
72
+ amplificationFactor;
73
+ kind = 'stableswap';
74
+ static fullRangeConfig() {
75
+ return new StableswapPoolTypeConfig(0, 0);
76
+ }
77
+ constructor(centerTick, amplificationFactor) {
78
+ this.centerTick = centerTick;
79
+ this.amplificationFactor = amplificationFactor;
80
+ }
81
+ isFullRange() {
82
+ return this.centerTick === 0 && this.amplificationFactor === 0;
83
+ }
84
+ compressed() {
85
+ // Store the bit pattern of a signed in a truncated unsigned bigint
86
+ const centerTick = BigInt.asUintN(24, BigInt(this.centerTick));
87
+ return (BigInt(this.amplificationFactor) << 24n) | centerTick;
88
+ }
89
+ stringId() {
90
+ return `stableswap_${this.amplificationFactor}_${this.centerTick}`;
91
+ }
92
+ }
93
+ exports.StableswapPoolTypeConfig = StableswapPoolTypeConfig;
94
+ class ConcentratedPoolTypeConfig {
95
+ tickSpacing;
96
+ kind = 'concentrated';
97
+ constructor(tickSpacing) {
98
+ this.tickSpacing = tickSpacing;
99
+ }
100
+ compressed() {
101
+ return BigInt(this.tickSpacing) + (1n << 31n);
102
+ }
103
+ stringId() {
104
+ return `concentrated_${this.tickSpacing}`;
105
+ }
106
+ }
107
+ exports.ConcentratedPoolTypeConfig = ConcentratedPoolTypeConfig;
108
+ class PoolConfig {
109
+ extension;
110
+ fee;
111
+ poolTypeConfig;
112
+ _compressed;
113
+ static fromCompressed(compressed) {
114
+ const poolTypeConfigRaw = compressed % 2n ** 32n;
115
+ let poolTypeConfig;
116
+ if ((poolTypeConfigRaw & 0x80000000n) === 0n) {
117
+ poolTypeConfig = new StableswapPoolTypeConfig(Number(BigInt.asIntN(24, poolTypeConfigRaw)), Number(BigInt.asUintN(7, poolTypeConfigRaw >> 24n)));
118
+ }
119
+ else {
120
+ poolTypeConfig = new ConcentratedPoolTypeConfig(Number(BigInt.asUintN(31, poolTypeConfigRaw)));
121
+ }
122
+ const config = new PoolConfig(compressed >> 96n, (compressed >> 32n) % 2n ** 64n, poolTypeConfig);
123
+ config._compressed = compressed;
124
+ return config;
125
+ }
126
+ constructor(extension, fee, poolTypeConfig, _compressed) {
127
+ this.extension = extension;
128
+ this.fee = fee;
129
+ this.poolTypeConfig = poolTypeConfig;
130
+ this._compressed = _compressed;
131
+ }
132
+ get compressed() {
133
+ this._compressed ??=
134
+ this.poolTypeConfig.compressed() +
135
+ (this.fee << 32n) +
136
+ (this.extension << 96n);
137
+ return this._compressed;
138
+ }
139
+ }
140
+ exports.PoolConfig = PoolConfig;
141
+ function isStableswapKey(key) {
142
+ return key.config.poolTypeConfig.kind === 'stableswap';
143
+ }
144
+ function isConcentratedKey(key) {
145
+ return key.config.poolTypeConfig.kind === 'concentrated';
146
+ }
147
+ function parseSwappedEvent(data) {
148
+ let n = BigInt(data);
149
+ const liquidityAfter = BigInt.asUintN(128, n);
150
+ n >>= 128n;
151
+ const tickAfter = Number(BigInt.asIntN(32, n));
152
+ n >>= 32n;
153
+ const sqrtRatioAfter = (0, sqrt_ratio_1.floatSqrtRatioToFixed)(BigInt.asUintN(96, n));
154
+ return {
155
+ tickAfter,
156
+ sqrtRatioAfter,
157
+ liquidityAfter,
158
+ };
159
+ }
160
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/dex/ekubo-v3/pools/utils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,58 @@
1
+ import { Interface } from '@ethersproject/abi';
2
+ import { BigNumber, Contract } from 'ethers';
3
+ import { PoolKey } from '../synthetix/types';
4
+ import { BlockHeader } from 'web3-eth';
5
+ export type Pool = {
6
+ key: PoolKey;
7
+ activeTick: number;
8
+ liquidity: bigint;
9
+ sqrtRatio: bigint;
10
+ ticks: bigint[];
11
+ };
12
+ export type BasicQuoteData = {
13
+ tick: number;
14
+ sqrtRatio: BigNumber;
15
+ liquidity: BigNumber;
16
+ minTick: number;
17
+ maxTick: number;
18
+ ticks: {
19
+ number: number;
20
+ liquidityDelta: BigNumber;
21
+ }[];
22
+ };
23
+ export type TwammQuoteData = {
24
+ sqrtRatio: BigNumber;
25
+ liquidity: BigNumber;
26
+ lastVirtualOrderExecutionTime: BigNumber;
27
+ saleRateToken0: BigNumber;
28
+ saleRateToken1: BigNumber;
29
+ saleRateDeltas: {
30
+ time: BigNumber;
31
+ saleRateDelta0: BigNumber;
32
+ saleRateDelta1: BigNumber;
33
+ }[];
34
+ };
35
+ export type EkuboData = {
36
+ poolKeyAbi: AbiPoolKey;
37
+ isToken1: boolean;
38
+ skipAhead: Record<string, number>;
39
+ };
40
+ export type DexParams = {
41
+ subgraphId: string;
42
+ };
43
+ export type EkuboContract = {
44
+ contract: Contract;
45
+ interface: Interface;
46
+ quoteDataFetcher: Contract;
47
+ };
48
+ export type EkuboContracts = Record<'core' | 'twamm', EkuboContract>;
49
+ export type AbiPoolKey = {
50
+ token0: string;
51
+ token1: string;
52
+ config: string;
53
+ };
54
+ export type PoolInitializationState = {
55
+ tick: number;
56
+ sqrtRatio: bigint;
57
+ blockHeader: Readonly<BlockHeader>;
58
+ };
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/dex/ekubo-v3/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,10 @@
1
+ import { Provider } from '@ethersproject/providers';
2
+ import { Token } from '../../types';
3
+ import { EkuboContracts } from './types';
4
+ export declare const NATIVE_TOKEN_ADDRESS = 0n;
5
+ export declare function convertParaSwapToEkubo(address: string): bigint;
6
+ export declare function convertEkuboToParaSwap(address: bigint): string;
7
+ export declare function convertAndSortTokens(tokenA: Token, tokenB: Token): [bigint, bigint];
8
+ export declare function ekuboContracts(provider: Provider): EkuboContracts;
9
+ export declare const bigintMax: (a: bigint, b: bigint) => bigint;
10
+ export declare const bigintMin: (a: bigint, b: bigint) => bigint;
@@ -0,0 +1,54 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.bigintMin = exports.bigintMax = exports.NATIVE_TOKEN_ADDRESS = void 0;
7
+ exports.convertParaSwapToEkubo = convertParaSwapToEkubo;
8
+ exports.convertEkuboToParaSwap = convertEkuboToParaSwap;
9
+ exports.convertAndSortTokens = convertAndSortTokens;
10
+ exports.ekuboContracts = ekuboContracts;
11
+ const utils_1 = require("ethers/lib/utils");
12
+ const ethers_1 = require("ethers");
13
+ const constants_1 = require("../../constants");
14
+ const utils_2 = require("../../utils");
15
+ const core_json_1 = __importDefault(require("../../abi/ekubo-v3/core.json"));
16
+ const quote_data_fetcher_json_1 = __importDefault(require("../../abi/ekubo-v3/quote-data-fetcher.json"));
17
+ const twamm_data_fetcher_json_1 = __importDefault(require("../../abi/ekubo-v3/twamm-data-fetcher.json"));
18
+ const twamm_json_1 = __importDefault(require("../../abi/ekubo-v3/twamm.json"));
19
+ const config_1 = require("./config");
20
+ exports.NATIVE_TOKEN_ADDRESS = 0x0000000000000000000000000000000000000000n;
21
+ function convertParaSwapToEkubo(address) {
22
+ return (0, utils_2.isETHAddress)(address) ? exports.NATIVE_TOKEN_ADDRESS : BigInt(address);
23
+ }
24
+ function convertEkuboToParaSwap(address) {
25
+ return address === exports.NATIVE_TOKEN_ADDRESS
26
+ ? constants_1.ETHER_ADDRESS
27
+ : (0, utils_1.hexZeroPad)((0, utils_1.hexlify)(address), 20);
28
+ }
29
+ function convertAndSortTokens(tokenA, tokenB) {
30
+ const [a, b] = [
31
+ convertParaSwapToEkubo(tokenA.address),
32
+ convertParaSwapToEkubo(tokenB.address),
33
+ ];
34
+ return a > b ? [b, a] : [a, b];
35
+ }
36
+ function ekuboContracts(provider) {
37
+ return {
38
+ core: {
39
+ contract: new ethers_1.Contract(config_1.CORE_ADDRESS, core_json_1.default, provider),
40
+ interface: new utils_1.Interface(core_json_1.default),
41
+ quoteDataFetcher: new ethers_1.Contract(config_1.QUOTE_DATA_FETCHER_ADDRESS, quote_data_fetcher_json_1.default, provider),
42
+ },
43
+ twamm: {
44
+ contract: new ethers_1.Contract(config_1.TWAMM_ADDRESS, twamm_json_1.default, provider),
45
+ interface: new utils_1.Interface(twamm_json_1.default),
46
+ quoteDataFetcher: new ethers_1.Contract(config_1.TWAMM_DATA_FETCHER_ADDRESS, twamm_data_fetcher_json_1.default, provider),
47
+ },
48
+ };
49
+ }
50
+ const bigintMax = (a, b) => (a > b ? a : b);
51
+ exports.bigintMax = bigintMax;
52
+ const bigintMin = (a, b) => (a < b ? a : b);
53
+ exports.bigintMin = bigintMin;
54
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/dex/ekubo-v3/utils.ts"],"names":[],"mappings":";;;;;;AAqBA,wDAEC;AAED,wDAIC;AAED,oDASC;AAED,wCAqBC;AA9DD,4CAAkE;AAClE,mCAAkC;AAClC,+CAAgD;AAEhD,uCAA2C;AAG3C,6EAAmD;AACnD,yGAA6E;AAC7E,yGAA6E;AAC7E,+EAAqD;AACrD,qCAKkB;AAEL,QAAA,oBAAoB,GAAG,2CAA2C,CAAC;AAEhF,SAAgB,sBAAsB,CAAC,OAAe;IACpD,OAAO,IAAA,oBAAY,EAAC,OAAO,CAAC,CAAC,CAAC,CAAC,4BAAoB,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AACxE,CAAC;AAED,SAAgB,sBAAsB,CAAC,OAAe;IACpD,OAAO,OAAO,KAAK,4BAAoB;QACrC,CAAC,CAAC,yBAAa;QACf,CAAC,CAAC,IAAA,kBAAU,EAAC,IAAA,eAAO,EAAC,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;AACvC,CAAC;AAED,SAAgB,oBAAoB,CAClC,MAAa,EACb,MAAa;IAEb,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG;QACb,sBAAsB,CAAC,MAAM,CAAC,OAAO,CAAC;QACtC,sBAAsB,CAAC,MAAM,CAAC,OAAO,CAAC;KACvC,CAAC;IACF,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACjC,CAAC;AAED,SAAgB,cAAc,CAAC,QAAkB;IAC/C,OAAO;QACL,IAAI,EAAE;YACJ,QAAQ,EAAE,IAAI,iBAAQ,CAAC,qBAAY,EAAE,mBAAO,EAAE,QAAQ,CAAC;YACvD,SAAS,EAAE,IAAI,iBAAS,CAAC,mBAAO,CAAC;YACjC,gBAAgB,EAAE,IAAI,iBAAQ,CAC5B,mCAA0B,EAC1B,iCAAmB,EACnB,QAAQ,CACT;SACF;QACD,KAAK,EAAE;YACL,QAAQ,EAAE,IAAI,iBAAQ,CAAC,sBAAa,EAAE,oBAAQ,EAAE,QAAQ,CAAC;YACzD,SAAS,EAAE,IAAI,iBAAS,CAAC,oBAAQ,CAAC;YAClC,gBAAgB,EAAE,IAAI,iBAAQ,CAC5B,mCAA0B,EAC1B,iCAAmB,EACnB,QAAQ,CACT;SACF;KACF,CAAC;AACJ,CAAC;AAEM,MAAM,SAAS,GAAG,CAAC,CAAS,EAAE,CAAS,EAAU,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAA9D,QAAA,SAAS,aAAqD;AAEpE,MAAM,SAAS,GAAG,CAAC,CAAS,EAAE,CAAS,EAAU,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAA9D,QAAA,SAAS,aAAqD"}