@paraswap/dex-lib 2.47.4-hashflow-mm → 2.47.4

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 (145) hide show
  1. package/build/abi/balancer-v2/gyro-e.abi.json +1595 -0
  2. package/build/dex/balancer-v2/balancer-v2.d.ts +6 -3
  3. package/build/dex/balancer-v2/balancer-v2.js +55 -35
  4. package/build/dex/balancer-v2/balancer-v2.js.map +1 -1
  5. package/build/dex/balancer-v2/pools/gyro/Gyro3Pool.d.ts +32 -0
  6. package/build/dex/balancer-v2/pools/gyro/Gyro3Pool.js +149 -0
  7. package/build/dex/balancer-v2/pools/gyro/Gyro3Pool.js.map +1 -0
  8. package/build/dex/balancer-v2/pools/gyro/GyroEPool.d.ts +37 -0
  9. package/build/dex/balancer-v2/pools/gyro/GyroEPool.js +222 -0
  10. package/build/dex/balancer-v2/pools/gyro/GyroEPool.js.map +1 -0
  11. package/build/dex/balancer-v2/pools/gyro/gyro-helpers.d.ts +2 -0
  12. package/build/dex/balancer-v2/pools/gyro/gyro-helpers.js +19 -0
  13. package/build/dex/balancer-v2/pools/gyro/gyro-helpers.js.map +1 -0
  14. package/build/dex/balancer-v2/queryOnChain.d.ts +1 -0
  15. package/build/dex/balancer-v2/queryOnChain.js +40 -0
  16. package/build/dex/balancer-v2/queryOnChain.js.map +1 -0
  17. package/build/dex/balancer-v2/types.d.ts +24 -1
  18. package/build/dex/balancer-v2/types.js +2 -0
  19. package/build/dex/balancer-v2/types.js.map +1 -1
  20. package/build/dex/balancer-v2/utils.d.ts +8 -0
  21. package/build/dex/balancer-v2/utils.js +17 -1
  22. package/build/dex/balancer-v2/utils.js.map +1 -1
  23. package/build/dex/hashflow/constants.js +1 -1
  24. package/build/dex/hashflow/constants.js.map +1 -1
  25. package/build/dex/hashflow/hashflow.js +0 -1
  26. package/build/dex/hashflow/hashflow.js.map +1 -1
  27. package/package.json +2 -1
  28. package/src/abi/balancer-v2/gyro-e.abi.json +1595 -0
  29. package/src/dex/balancer-v2/balancer-v2-e2e.test.ts +94 -0
  30. package/src/dex/balancer-v2/balancer-v2-gyro3.test.ts +268 -0
  31. package/src/dex/balancer-v2/balancer-v2-gyroE.test.ts +401 -0
  32. package/src/dex/balancer-v2/balancer-v2-integration.test.ts +253 -112
  33. package/src/dex/balancer-v2/balancer-v2.ts +105 -69
  34. package/src/dex/balancer-v2/pools/gyro/Gyro3Pool.ts +255 -0
  35. package/src/dex/balancer-v2/pools/gyro/GyroEPool.ts +403 -0
  36. package/src/dex/balancer-v2/pools/gyro/gyro-helpers.ts +15 -0
  37. package/src/dex/balancer-v2/queryOnChain.ts +48 -0
  38. package/src/dex/balancer-v2/types.ts +26 -0
  39. package/src/dex/balancer-v2/utils.ts +16 -0
  40. package/src/dex/hashflow/constants.ts +1 -1
  41. package/src/dex/hashflow/hashflow.ts +1 -4
  42. package/src/dex/synthetix/synthetix-state.ts +2 -2
  43. package/tests/constants-e2e.ts +26 -0
  44. package/build/abi/Redstone.json +0 -739
  45. package/build/abi/angle/stagToken.json +0 -963
  46. package/build/abi/angle-transmuter/Pyth.json +0 -1534
  47. package/build/abi/angle-transmuter/Transmuter.json +0 -1719
  48. package/build/abi/smardex/smardex-factory.json +0 -185
  49. package/build/abi/smardex/smardex-pool.json +0 -578
  50. package/build/abi/smardex/smardex-router.json +0 -648
  51. package/build/abi/trader-joe-v2_1/FactoryABI.json +0 -1208
  52. package/build/abi/trader-joe-v2_1/PairABI.json +0 -1493
  53. package/build/abi/trader-joe-v2_1/RouterABI.json +0 -1489
  54. package/build/abi/trader-joe-v2_1/StateMulticall.json +0 -193
  55. package/build/abi/wombat/pool.json +0 -1289
  56. package/build/dex/angle-staked-stable/angle-staked-stable-pool.d.ts +0 -53
  57. package/build/dex/angle-staked-stable/angle-staked-stable-pool.js +0 -175
  58. package/build/dex/angle-staked-stable/angle-staked-stable-pool.js.map +0 -1
  59. package/build/dex/angle-staked-stable/angle-staked-stable.d.ts +0 -42
  60. package/build/dex/angle-staked-stable/angle-staked-stable.js +0 -232
  61. package/build/dex/angle-staked-stable/angle-staked-stable.js.map +0 -1
  62. package/build/dex/angle-staked-stable/config.d.ts +0 -4
  63. package/build/dex/angle-staked-stable/config.js +0 -26
  64. package/build/dex/angle-staked-stable/config.js.map +0 -1
  65. package/build/dex/angle-staked-stable/types.d.ts +0 -15
  66. package/build/dex/angle-staked-stable/types.js +0 -3
  67. package/build/dex/angle-staked-stable/types.js.map +0 -1
  68. package/build/dex/angle-transmuter/angle-transmuter-pool.d.ts +0 -43
  69. package/build/dex/angle-transmuter/angle-transmuter-pool.js +0 -309
  70. package/build/dex/angle-transmuter/angle-transmuter-pool.js.map +0 -1
  71. package/build/dex/angle-transmuter/angle-transmuter.d.ts +0 -46
  72. package/build/dex/angle-transmuter/angle-transmuter.js +0 -233
  73. package/build/dex/angle-transmuter/angle-transmuter.js.map +0 -1
  74. package/build/dex/angle-transmuter/backedOracle.d.ts +0 -19
  75. package/build/dex/angle-transmuter/backedOracle.js +0 -56
  76. package/build/dex/angle-transmuter/backedOracle.js.map +0 -1
  77. package/build/dex/angle-transmuter/config.d.ts +0 -4
  78. package/build/dex/angle-transmuter/config.js +0 -20
  79. package/build/dex/angle-transmuter/config.js.map +0 -1
  80. package/build/dex/angle-transmuter/constants.d.ts +0 -4
  81. package/build/dex/angle-transmuter/constants.js +0 -8
  82. package/build/dex/angle-transmuter/constants.js.map +0 -1
  83. package/build/dex/angle-transmuter/pyth.d.ts +0 -19
  84. package/build/dex/angle-transmuter/pyth.js +0 -71
  85. package/build/dex/angle-transmuter/pyth.js.map +0 -1
  86. package/build/dex/angle-transmuter/redstone.d.ts +0 -20
  87. package/build/dex/angle-transmuter/redstone.js +0 -73
  88. package/build/dex/angle-transmuter/redstone.js.map +0 -1
  89. package/build/dex/angle-transmuter/transmuter.d.ts +0 -50
  90. package/build/dex/angle-transmuter/transmuter.js +0 -314
  91. package/build/dex/angle-transmuter/transmuter.js.map +0 -1
  92. package/build/dex/angle-transmuter/types.d.ts +0 -144
  93. package/build/dex/angle-transmuter/types.js +0 -31
  94. package/build/dex/angle-transmuter/types.js.map +0 -1
  95. package/build/dex/angle-transmuter/utils.d.ts +0 -9
  96. package/build/dex/angle-transmuter/utils.js +0 -264
  97. package/build/dex/angle-transmuter/utils.js.map +0 -1
  98. package/build/dex/smardex/subgraph-queries.d.ts +0 -1
  99. package/build/dex/smardex/subgraph-queries.js +0 -17
  100. package/build/dex/smardex/subgraph-queries.js.map +0 -1
  101. package/build/dex/smardex/usd-reserves.d.ts +0 -23
  102. package/build/dex/smardex/usd-reserves.js +0 -86
  103. package/build/dex/smardex/usd-reserves.js.map +0 -1
  104. package/build/dex/trader-joe-v2-1-2/config.d.ts +0 -4
  105. package/build/dex/trader-joe-v2-1-2/config.js +0 -47
  106. package/build/dex/trader-joe-v2-1-2/config.js.map +0 -1
  107. package/build/dex/trader-joe-v2-1-2/constants.d.ts +0 -20
  108. package/build/dex/trader-joe-v2-1-2/constants.js +0 -22
  109. package/build/dex/trader-joe-v2-1-2/constants.js.map +0 -1
  110. package/build/dex/trader-joe-v2-1-2/math/index.d.ts +0 -37
  111. package/build/dex/trader-joe-v2-1-2/math/index.js +0 -291
  112. package/build/dex/trader-joe-v2-1-2/math/index.js.map +0 -1
  113. package/build/dex/trader-joe-v2-1-2/trader-joe-v2-1-2-pool.d.ts +0 -60
  114. package/build/dex/trader-joe-v2-1-2/trader-joe-v2-1-2-pool.js +0 -248
  115. package/build/dex/trader-joe-v2-1-2/trader-joe-v2-1-2-pool.js.map +0 -1
  116. package/build/dex/trader-joe-v2-1-2/trader-joe-v2-1-2.d.ts +0 -53
  117. package/build/dex/trader-joe-v2-1-2/trader-joe-v2-1-2.js +0 -307
  118. package/build/dex/trader-joe-v2-1-2/trader-joe-v2-1-2.js.map +0 -1
  119. package/build/dex/trader-joe-v2-1-2/types.d.ts +0 -82
  120. package/build/dex/trader-joe-v2-1-2/types.js +0 -9
  121. package/build/dex/trader-joe-v2-1-2/types.js.map +0 -1
  122. package/build/dex/trader-joe-v2_1/config.d.ts +0 -4
  123. package/build/dex/trader-joe-v2_1/config.js +0 -47
  124. package/build/dex/trader-joe-v2_1/config.js.map +0 -1
  125. package/build/dex/trader-joe-v2_1/constants.d.ts +0 -20
  126. package/build/dex/trader-joe-v2_1/constants.js +0 -22
  127. package/build/dex/trader-joe-v2_1/constants.js.map +0 -1
  128. package/build/dex/trader-joe-v2_1/math/index.d.ts +0 -37
  129. package/build/dex/trader-joe-v2_1/math/index.js +0 -291
  130. package/build/dex/trader-joe-v2_1/math/index.js.map +0 -1
  131. package/build/dex/trader-joe-v2_1/trader-joe-v2.1.d.ts +0 -0
  132. package/build/dex/trader-joe-v2_1/trader-joe-v2.1.js +0 -384
  133. package/build/dex/trader-joe-v2_1/trader-joe-v2.1.js.map +0 -1
  134. package/build/dex/trader-joe-v2_1/trader-joe-v2_1-pool.d.ts +0 -60
  135. package/build/dex/trader-joe-v2_1/trader-joe-v2_1-pool.js +0 -247
  136. package/build/dex/trader-joe-v2_1/trader-joe-v2_1-pool.js.map +0 -1
  137. package/build/dex/trader-joe-v2_1/trader-joe-v2_1.d.ts +0 -53
  138. package/build/dex/trader-joe-v2_1/trader-joe-v2_1.js +0 -307
  139. package/build/dex/trader-joe-v2_1/trader-joe-v2_1.js.map +0 -1
  140. package/build/dex/trader-joe-v2_1/types.d.ts +0 -82
  141. package/build/dex/trader-joe-v2_1/types.js +0 -9
  142. package/build/dex/trader-joe-v2_1/types.js.map +0 -1
  143. package/build/dex/wombat/wombat-pool-poller.d.ts +0 -22
  144. package/build/dex/wombat/wombat-pool-poller.js +0 -164
  145. package/build/dex/wombat/wombat-pool-poller.js.map +0 -1
@@ -1,264 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.filterDictionaryOnly = exports._quoteFees = exports._quoteBurnExactInput = exports._quoteBurnExactOutput = exports._quoteMintExactOutput = exports._quoteMintExactInput = void 0;
4
- const types_1 = require("./types");
5
- /// @notice Computes the `amountOut` of stablecoins to mint from `tokenIn` of a collateral with data `collatInfo`
6
- function _quoteMintExactInput(oracleValue, amountIn, fees, stablecoinsIssued, otherStablecoinSupply) {
7
- const amountOut = oracleValue * amountIn;
8
- return _quoteFees(fees, types_1.QuoteType.MintExactInput, amountOut, stablecoinsIssued, otherStablecoinSupply);
9
- }
10
- exports._quoteMintExactInput = _quoteMintExactInput;
11
- /// @notice Computes the `amountIn` of collateral to get during a mint of `amountOut` of stablecoins
12
- function _quoteMintExactOutput(oracleValue, amountOut, fees, stablecoinsIssued, otherStablecoinSupply) {
13
- const amountIn = _quoteFees(fees, types_1.QuoteType.MintExactOutput, amountOut, stablecoinsIssued, otherStablecoinSupply);
14
- return amountIn / oracleValue;
15
- }
16
- exports._quoteMintExactOutput = _quoteMintExactOutput;
17
- /// @notice Computes the `amountIn` of stablecoins to burn to release `amountOut` of `collateral`
18
- function _quoteBurnExactOutput(oracleValue, ratio, amountOut, fees, stablecoinsIssued, otherStablecoinSupply) {
19
- const amountIn = (amountOut * oracleValue) / ratio;
20
- return _quoteFees(fees, types_1.QuoteType.BurnExactOutput, amountIn, stablecoinsIssued, otherStablecoinSupply);
21
- }
22
- exports._quoteBurnExactOutput = _quoteBurnExactOutput;
23
- /// @notice Computes the `amountOut` of `collateral` to give during a burn operation of `amountIn` of stablecoins
24
- function _quoteBurnExactInput(oracleValue, ratio, amountIn, fees, stablecoinsIssued, otherStablecoinSupply) {
25
- const amountOut = _quoteFees(fees, types_1.QuoteType.BurnExactInput, amountIn, stablecoinsIssued, otherStablecoinSupply);
26
- return (amountOut * ratio) / oracleValue;
27
- }
28
- exports._quoteBurnExactInput = _quoteBurnExactInput;
29
- function _quoteFees(fees, quoteType, amountStable, stablecoinsIssued, otherStablecoinSupply) {
30
- const isMint = _isMint(quoteType);
31
- const isExact = _isExact(quoteType);
32
- const n = isMint ? fees.xFeeMint.length : fees.xFeeBurn.length;
33
- let currentExposure = (stablecoinsIssued * types_1.BASE_9) / (otherStablecoinSupply + stablecoinsIssued);
34
- let amount = 0;
35
- // Finding in which segment the current exposure to the collateral is
36
- let i = findLowerBound(isMint, isMint ? fees.xFeeMint : fees.xFeeBurn, types_1.BASE_9, currentExposure);
37
- let lowerExposure;
38
- let upperExposure;
39
- let lowerFees;
40
- let upperFees;
41
- let amountToNextBreakPoint;
42
- while (i < n - 1) {
43
- // We compute a linear by part function on the amount swapped
44
- // The `amountToNextBreakPoint` variable is the `b_{i+1}` value from the whitepaper
45
- if (isMint) {
46
- lowerExposure = fees.xFeeMint[i];
47
- upperExposure = fees.xFeeMint[i + 1];
48
- lowerFees = fees.yFeeMint[i];
49
- upperFees = fees.yFeeMint[i + 1];
50
- amountToNextBreakPoint =
51
- (otherStablecoinSupply * upperExposure) / (types_1.BASE_9 - upperExposure) -
52
- stablecoinsIssued;
53
- }
54
- else {
55
- // The exposures in the burn case are decreasing
56
- lowerExposure = fees.xFeeBurn[i];
57
- upperExposure = fees.xFeeBurn[i + 1];
58
- lowerFees = fees.yFeeBurn[i];
59
- upperFees = fees.yFeeBurn[i + 1];
60
- // The `b_{i+1}` value in the burn case is the opposite value of the mint case
61
- amountToNextBreakPoint =
62
- stablecoinsIssued -
63
- (otherStablecoinSupply * upperExposure) / (types_1.BASE_9 - upperExposure);
64
- }
65
- let currentFees;
66
- if (lowerExposure * types_1.BASE_9 === currentExposure) {
67
- currentFees = lowerFees;
68
- }
69
- else if (lowerFees === upperFees) {
70
- currentFees = lowerFees;
71
- }
72
- else {
73
- // This is the opposite of the `b_i` value from the whitepaper.
74
- const amountFromPrevBreakPoint = isMint
75
- ? stablecoinsIssued -
76
- (otherStablecoinSupply * lowerExposure) / (types_1.BASE_9 - lowerExposure)
77
- : (otherStablecoinSupply * lowerExposure) / (types_1.BASE_9 - lowerExposure) -
78
- stablecoinsIssued;
79
- // slope = (upperFees - lowerFees) / (amountToNextBreakPoint + amountFromPrevBreakPoint)
80
- // `currentFees` is the `g(0)` value from the whitepaper
81
- currentFees =
82
- lowerFees +
83
- ((upperFees - lowerFees) * amountFromPrevBreakPoint) /
84
- (amountToNextBreakPoint + amountFromPrevBreakPoint);
85
- }
86
- {
87
- let amountToNextBreakPointNormalizer = isExact
88
- ? amountToNextBreakPoint
89
- : isMint
90
- ? _invertFeeMint(amountToNextBreakPoint, (upperFees + currentFees) / 2)
91
- : _applyFeeBurn(amountToNextBreakPoint, (upperFees + currentFees) / 2);
92
- if (amountToNextBreakPointNormalizer >= amountStable) {
93
- let midFee;
94
- if (isExact) {
95
- // `(g_i(0) + g_i(M)) / 2 = g(0) + (f_{i+1} - g(0)) * M / (2 * b_{i+1})`
96
- midFee =
97
- currentFees +
98
- (amountStable * (upperFees - currentFees)) /
99
- (2 * amountToNextBreakPointNormalizer);
100
- }
101
- else {
102
- // Here instead of computing the closed form expression for `m_t` derived in the whitepaper,
103
- // we are computing: `(g(0)+g_i(m_t))/2 = g(0)+(f_{i+1}-f_i)/(b_{i+1}-b_i)m_t/2
104
- // ac4 is the value of `2M(f_{i+1}-f_i)/(b_{i+1}-b_i) = 2M(f_{i+1}-g(0))/b_{i+1}` used
105
- // in the computation of `m_t` in both the mint and burn case
106
- const ac4 = (types_1.BASE_9 * (2 * amountStable * (upperFees - currentFees))) /
107
- amountToNextBreakPoint;
108
- if (isMint) {
109
- // In the mint case:
110
- // `m_t = (-1-g(0)+sqrt[(1+g(0))**2+2M(f_{i+1}-g(0))/b_{i+1})]/((f_{i+1}-g(0))/b_{i+1})`
111
- // And so: g(0)+(f_{i+1}-f_i)/(b_{i+1}-b_i)m_t/2
112
- // = (g(0)-1+sqrt[(1+g(0))**2+2M(f_{i+1}-g(0))/b_{i+1})])
113
- midFee = Number((Math.sqrt((types_1.BASE_9 + currentFees) ** 2 + ac4) +
114
- currentFees -
115
- types_1.BASE_9) /
116
- 2);
117
- }
118
- else {
119
- // In the burn case:
120
- // `m_t = (1-g(0)+sqrt[(1-g(0))**2-2M(f_{i+1}-g(0))/b_{i+1})]/((f_{i+1}-g(0))/b_{i+1})`
121
- // And so: g(0)+(f_{i+1}-f_i)/(b_{i+1}-b_i)m_t/2
122
- // = (g(0)+1-sqrt[(1-g(0))**2-2M(f_{i+1}-g(0))/b_{i+1})])
123
- const baseMinusCurrentSquared = (types_1.BASE_9 - currentFees) ** 2;
124
- // Mathematically, this condition is always verified, but rounding errors may make this
125
- // mathematical invariant break, in which case we consider that the square root is null
126
- if (baseMinusCurrentSquared < ac4) {
127
- midFee = (currentFees + types_1.BASE_9) / 2;
128
- }
129
- else {
130
- midFee =
131
- (currentFees +
132
- types_1.BASE_9 -
133
- Math.sqrt(baseMinusCurrentSquared - ac4)) /
134
- 2;
135
- }
136
- }
137
- }
138
- return amount + _computeFee(quoteType, amountStable, midFee);
139
- }
140
- else {
141
- amountStable -= amountToNextBreakPointNormalizer;
142
- amount += !isExact
143
- ? amountToNextBreakPoint
144
- : isMint
145
- ? _invertFeeMint(amountToNextBreakPoint, (upperFees + currentFees) / 2)
146
- : _applyFeeBurn(amountToNextBreakPoint, (upperFees + currentFees) / 2);
147
- currentExposure = upperExposure * types_1.BASE_9;
148
- ++i;
149
- // Update for the rest of the swaps the stablecoins issued from the asset
150
- stablecoinsIssued = isMint
151
- ? stablecoinsIssued + amountToNextBreakPoint
152
- : stablecoinsIssued - amountToNextBreakPoint;
153
- }
154
- }
155
- }
156
- return (amount +
157
- _computeFee(quoteType, amountStable, isMint ? fees.yFeeMint[n - 1] : fees.yFeeBurn[n - 1]));
158
- }
159
- exports._quoteFees = _quoteFees;
160
- function findLowerBound(increasingArray, array, normalizerArray, element) {
161
- if (array.length === 0) {
162
- return 0;
163
- }
164
- let low = 1;
165
- let high = array.length;
166
- if ((increasingArray && array[high - 1] * normalizerArray <= element) ||
167
- (!increasingArray && array[high - 1] * normalizerArray >= element)) {
168
- return high - 1;
169
- }
170
- while (low < high) {
171
- const mid = Math.floor((low + high) / 2);
172
- if (increasingArray
173
- ? array[mid] * normalizerArray > element
174
- : array[mid] * normalizerArray < element) {
175
- high = mid;
176
- }
177
- else {
178
- low = mid + 1;
179
- }
180
- }
181
- return low - 1;
182
- }
183
- function _isMint(quoteType) {
184
- return (quoteType === types_1.QuoteType.MintExactInput ||
185
- quoteType === types_1.QuoteType.MintExactOutput);
186
- }
187
- function _isExact(quoteType) {
188
- return (quoteType === types_1.QuoteType.MintExactOutput ||
189
- quoteType === types_1.QuoteType.BurnExactInput);
190
- }
191
- function _applyFeeMint(amountIn, fees) {
192
- if (fees >= 0) {
193
- const castedFees = fees;
194
- // Consider that if fees are above `BASE_12` this is equivalent to infinite fees
195
- if (castedFees >= types_1.BASE_12)
196
- throw new Error('InvalidSwap');
197
- return (amountIn * types_1.BASE_9) / (types_1.BASE_9 + castedFees);
198
- }
199
- else {
200
- return (amountIn * types_1.BASE_9) / (types_1.BASE_9 - Math.abs(-fees));
201
- }
202
- }
203
- function _invertFeeMint(amountOut, fees) {
204
- if (fees >= 0) {
205
- const castedFees = fees;
206
- // Consider that if fees are above `BASE_12` this is equivalent to infinite fees
207
- if (castedFees >= types_1.BASE_12)
208
- throw new Error('InvalidSwap');
209
- return (amountOut * (types_1.BASE_9 + castedFees)) / types_1.BASE_9;
210
- }
211
- else {
212
- return (amountOut * (types_1.BASE_9 - Math.abs(-fees))) / types_1.BASE_9;
213
- }
214
- }
215
- function _applyFeeBurn(amountIn, fees) {
216
- if (fees >= 0) {
217
- const castedFees = fees;
218
- if (castedFees >= types_1.MAX_BURN_FEE)
219
- throw new Error('InvalidSwap');
220
- return ((types_1.BASE_9 - castedFees) * amountIn) / types_1.BASE_9;
221
- }
222
- else {
223
- return ((types_1.BASE_9 + Math.abs(-fees)) * amountIn) / types_1.BASE_9;
224
- }
225
- }
226
- function _invertFeeBurn(amountOut, fees) {
227
- if (fees >= 0) {
228
- const castedFees = fees;
229
- if (castedFees >= types_1.MAX_BURN_FEE)
230
- throw new Error('InvalidSwap');
231
- return (amountOut * types_1.BASE_9) / (types_1.BASE_9 - castedFees);
232
- }
233
- else {
234
- return (amountOut * types_1.BASE_9) / (types_1.BASE_9 + Math.abs(-fees));
235
- }
236
- }
237
- function _computeFee(quoteType, amount, fees) {
238
- if (quoteType === types_1.QuoteType.MintExactInput) {
239
- return _applyFeeMint(amount, fees);
240
- }
241
- else if (quoteType === types_1.QuoteType.MintExactOutput) {
242
- return _invertFeeMint(amount, fees);
243
- }
244
- else if (quoteType === types_1.QuoteType.BurnExactInput) {
245
- return _applyFeeBurn(amount, fees);
246
- }
247
- else {
248
- return _invertFeeBurn(amount, fees);
249
- }
250
- }
251
- function filterDictionaryOnly(obj) {
252
- const result = {};
253
- Object.keys(obj).map(key => {
254
- if (Object.prototype.hasOwnProperty.call(obj, key)) {
255
- // Skip numeric keys to exclude array-like properties
256
- if (isNaN(Number(key))) {
257
- result[key] = obj[key];
258
- }
259
- }
260
- });
261
- return result;
262
- }
263
- exports.filterDictionaryOnly = filterDictionaryOnly;
264
- //# sourceMappingURL=utils.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/dex/angle-transmuter/utils.ts"],"names":[],"mappings":";;;AAAA,mCAAyE;AAEzE,iHAAiH;AACjH,SAAgB,oBAAoB,CAClC,WAAmB,EACnB,QAAgB,EAChB,IAAU,EACV,iBAAyB,EACzB,qBAA6B;IAE7B,MAAM,SAAS,GAAG,WAAW,GAAG,QAAQ,CAAC;IACzC,OAAO,UAAU,CACf,IAAI,EACJ,iBAAS,CAAC,cAAc,EACxB,SAAS,EACT,iBAAiB,EACjB,qBAAqB,CACtB,CAAC;AACJ,CAAC;AAfD,oDAeC;AAED,oGAAoG;AACpG,SAAgB,qBAAqB,CACnC,WAAmB,EACnB,SAAiB,EACjB,IAAU,EACV,iBAAyB,EACzB,qBAA6B;IAE7B,MAAM,QAAQ,GAAG,UAAU,CACzB,IAAI,EACJ,iBAAS,CAAC,eAAe,EACzB,SAAS,EACT,iBAAiB,EACjB,qBAAqB,CACtB,CAAC;IACF,OAAO,QAAQ,GAAG,WAAW,CAAC;AAChC,CAAC;AAfD,sDAeC;AAED,iGAAiG;AACjG,SAAgB,qBAAqB,CACnC,WAAmB,EACnB,KAAa,EACb,SAAiB,EACjB,IAAU,EACV,iBAAyB,EACzB,qBAA6B;IAE7B,MAAM,QAAQ,GAAG,CAAC,SAAS,GAAG,WAAW,CAAC,GAAG,KAAK,CAAC;IACnD,OAAO,UAAU,CACf,IAAI,EACJ,iBAAS,CAAC,eAAe,EACzB,QAAQ,EACR,iBAAiB,EACjB,qBAAqB,CACtB,CAAC;AACJ,CAAC;AAhBD,sDAgBC;AAED,iHAAiH;AACjH,SAAgB,oBAAoB,CAClC,WAAmB,EACnB,KAAa,EACb,QAAgB,EAChB,IAAU,EACV,iBAAyB,EACzB,qBAA6B;IAE7B,MAAM,SAAS,GAAG,UAAU,CAC1B,IAAI,EACJ,iBAAS,CAAC,cAAc,EACxB,QAAQ,EACR,iBAAiB,EACjB,qBAAqB,CACtB,CAAC;IACF,OAAO,CAAC,SAAS,GAAG,KAAK,CAAC,GAAG,WAAW,CAAC;AAC3C,CAAC;AAhBD,oDAgBC;AAED,SAAgB,UAAU,CACxB,IAAU,EACV,SAAoB,EACpB,YAAoB,EACpB,iBAAyB,EACzB,qBAA6B;IAE7B,MAAM,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;IAClC,MAAM,OAAO,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC;IAEpC,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;IAE/D,IAAI,eAAe,GACjB,CAAC,iBAAiB,GAAG,cAAM,CAAC,GAAG,CAAC,qBAAqB,GAAG,iBAAiB,CAAC,CAAC;IAE7E,IAAI,MAAM,GAAW,CAAC,CAAC;IAEvB,qEAAqE;IACrE,IAAI,CAAC,GAAG,cAAc,CACpB,MAAM,EACN,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,EACtC,cAAM,EACN,eAAe,CAChB,CAAC;IAEF,IAAI,aAAqB,CAAC;IAC1B,IAAI,aAAqB,CAAC;IAC1B,IAAI,SAAiB,CAAC;IACtB,IAAI,SAAiB,CAAC;IACtB,IAAI,sBAA8B,CAAC;IAEnC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;QAChB,6DAA6D;QAC7D,mFAAmF;QACnF,IAAI,MAAM,EAAE;YACV,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YACjC,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YACrC,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YAC7B,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YACjC,sBAAsB;gBACpB,CAAC,qBAAqB,GAAG,aAAa,CAAC,GAAG,CAAC,cAAM,GAAG,aAAa,CAAC;oBAClE,iBAAiB,CAAC;SACrB;aAAM;YACL,gDAAgD;YAChD,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YACjC,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YACrC,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YAC7B,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YACjC,8EAA8E;YAC9E,sBAAsB;gBACpB,iBAAiB;oBACjB,CAAC,qBAAqB,GAAG,aAAa,CAAC,GAAG,CAAC,cAAM,GAAG,aAAa,CAAC,CAAC;SACtE;QAED,IAAI,WAAmB,CAAC;QACxB,IAAI,aAAa,GAAG,cAAM,KAAK,eAAe,EAAE;YAC9C,WAAW,GAAG,SAAS,CAAC;SACzB;aAAM,IAAI,SAAS,KAAK,SAAS,EAAE;YAClC,WAAW,GAAG,SAAS,CAAC;SACzB;aAAM;YACL,+DAA+D;YAC/D,MAAM,wBAAwB,GAAG,MAAM;gBACrC,CAAC,CAAC,iBAAiB;oBACjB,CAAC,qBAAqB,GAAG,aAAa,CAAC,GAAG,CAAC,cAAM,GAAG,aAAa,CAAC;gBACpE,CAAC,CAAC,CAAC,qBAAqB,GAAG,aAAa,CAAC,GAAG,CAAC,cAAM,GAAG,aAAa,CAAC;oBAClE,iBAAiB,CAAC;YAEtB,wFAAwF;YACxF,wDAAwD;YACxD,WAAW;gBACT,SAAS;oBACT,CAAC,CAAC,SAAS,GAAG,SAAS,CAAC,GAAG,wBAAwB,CAAC;wBAClD,CAAC,sBAAsB,GAAG,wBAAwB,CAAC,CAAC;SACzD;QACD;YACE,IAAI,gCAAgC,GAAW,OAAO;gBACpD,CAAC,CAAC,sBAAsB;gBACxB,CAAC,CAAC,MAAM;oBACR,CAAC,CAAC,cAAc,CAAC,sBAAsB,EAAE,CAAC,SAAS,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;oBACvE,CAAC,CAAC,aAAa,CAAC,sBAAsB,EAAE,CAAC,SAAS,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;YAEzE,IAAI,gCAAgC,IAAI,YAAY,EAAE;gBACpD,IAAI,MAAc,CAAC;gBACnB,IAAI,OAAO,EAAE;oBACX,wEAAwE;oBACxE,MAAM;wBACJ,WAAW;4BACX,CAAC,YAAY,GAAG,CAAC,SAAS,GAAG,WAAW,CAAC,CAAC;gCACxC,CAAC,CAAC,GAAG,gCAAgC,CAAC,CAAC;iBAC5C;qBAAM;oBACL,4FAA4F;oBAC5F,+EAA+E;oBAE/E,sFAAsF;oBACtF,6DAA6D;oBAC7D,MAAM,GAAG,GACP,CAAC,cAAM,GAAG,CAAC,CAAC,GAAG,YAAY,GAAG,CAAC,SAAS,GAAG,WAAW,CAAC,CAAC,CAAC;wBACzD,sBAAsB,CAAC;oBACzB,IAAI,MAAM,EAAE;wBACV,oBAAoB;wBACpB,wFAAwF;wBACxF,gDAAgD;wBAChD,8EAA8E;wBAC9E,MAAM,GAAG,MAAM,CACb,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,cAAM,GAAG,WAAW,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC;4BAC3C,WAAW;4BACX,cAAM,CAAC;4BACP,CAAC,CACJ,CAAC;qBACH;yBAAM;wBACL,oBAAoB;wBACpB,uFAAuF;wBACvF,gDAAgD;wBAChD,8EAA8E;wBAE9E,MAAM,uBAAuB,GAAG,CAAC,cAAM,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;wBAC5D,uFAAuF;wBACvF,uFAAuF;wBACvF,IAAI,uBAAuB,GAAG,GAAG,EAAE;4BACjC,MAAM,GAAG,CAAC,WAAW,GAAG,cAAM,CAAC,GAAG,CAAC,CAAC;yBACrC;6BAAM;4BACL,MAAM;gCACJ,CAAC,WAAW;oCACV,cAAM;oCACN,IAAI,CAAC,IAAI,CAAC,uBAAuB,GAAG,GAAG,CAAC,CAAC;oCAC3C,CAAC,CAAC;yBACL;qBACF;iBACF;gBACD,OAAO,MAAM,GAAG,WAAW,CAAC,SAAS,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC;aAC9D;iBAAM;gBACL,YAAY,IAAI,gCAAgC,CAAC;gBACjD,MAAM,IAAI,CAAC,OAAO;oBAChB,CAAC,CAAC,sBAAsB;oBACxB,CAAC,CAAC,MAAM;wBACR,CAAC,CAAC,cAAc,CACZ,sBAAsB,EACtB,CAAC,SAAS,GAAG,WAAW,CAAC,GAAG,CAAC,CAC9B;wBACH,CAAC,CAAC,aAAa,CACX,sBAAsB,EACtB,CAAC,SAAS,GAAG,WAAW,CAAC,GAAG,CAAC,CAC9B,CAAC;gBACN,eAAe,GAAG,aAAa,GAAG,cAAM,CAAC;gBACzC,EAAE,CAAC,CAAC;gBACJ,yEAAyE;gBACzE,iBAAiB,GAAG,MAAM;oBACxB,CAAC,CAAC,iBAAiB,GAAG,sBAAsB;oBAC5C,CAAC,CAAC,iBAAiB,GAAG,sBAAsB,CAAC;aAChD;SACF;KACF;IAED,OAAO,CACL,MAAM;QACN,WAAW,CACT,SAAS,EACT,YAAY,EACZ,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CACrD,CACF,CAAC;AACJ,CAAC;AAjKD,gCAiKC;AAED,SAAS,cAAc,CACrB,eAAwB,EACxB,KAAe,EACf,eAAuB,EACvB,OAAe;IAEf,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;QACtB,OAAO,CAAC,CAAC;KACV;IACD,IAAI,GAAG,GAAG,CAAC,CAAC;IACZ,IAAI,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC;IAExB,IACE,CAAC,eAAe,IAAI,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,eAAe,IAAI,OAAO,CAAC;QACjE,CAAC,CAAC,eAAe,IAAI,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,eAAe,IAAI,OAAO,CAAC,EAClE;QACA,OAAO,IAAI,GAAG,CAAC,CAAC;KACjB;IAED,OAAO,GAAG,GAAG,IAAI,EAAE;QACjB,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QAEzC,IACE,eAAe;YACb,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,eAAe,GAAG,OAAO;YACxC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,eAAe,GAAG,OAAO,EAC1C;YACA,IAAI,GAAG,GAAG,CAAC;SACZ;aAAM;YACL,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;SACf;KACF;IAED,OAAO,GAAG,GAAG,CAAC,CAAC;AACjB,CAAC;AAED,SAAS,OAAO,CAAC,SAAoB;IACnC,OAAO,CACL,SAAS,KAAK,iBAAS,CAAC,cAAc;QACtC,SAAS,KAAK,iBAAS,CAAC,eAAe,CACxC,CAAC;AACJ,CAAC;AAED,SAAS,QAAQ,CAAC,SAAoB;IACpC,OAAO,CACL,SAAS,KAAK,iBAAS,CAAC,eAAe;QACvC,SAAS,KAAK,iBAAS,CAAC,cAAc,CACvC,CAAC;AACJ,CAAC;AAED,SAAS,aAAa,CAAC,QAAgB,EAAE,IAAY;IACnD,IAAI,IAAI,IAAI,CAAC,EAAE;QACb,MAAM,UAAU,GAAG,IAAI,CAAC;QACxB,gFAAgF;QAChF,IAAI,UAAU,IAAI,eAAO;YAAE,MAAM,IAAI,KAAK,CAAC,aAAa,CAAC,CAAC;QAC1D,OAAO,CAAC,QAAQ,GAAG,cAAM,CAAC,GAAG,CAAC,cAAM,GAAG,UAAU,CAAC,CAAC;KACpD;SAAM;QACL,OAAO,CAAC,QAAQ,GAAG,cAAM,CAAC,GAAG,CAAC,cAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;KACzD;AACH,CAAC;AAED,SAAS,cAAc,CAAC,SAAiB,EAAE,IAAY;IACrD,IAAI,IAAI,IAAI,CAAC,EAAE;QACb,MAAM,UAAU,GAAG,IAAI,CAAC;QACxB,gFAAgF;QAChF,IAAI,UAAU,IAAI,eAAO;YAAE,MAAM,IAAI,KAAK,CAAC,aAAa,CAAC,CAAC;QAC1D,OAAO,CAAC,SAAS,GAAG,CAAC,cAAM,GAAG,UAAU,CAAC,CAAC,GAAG,cAAM,CAAC;KACrD;SAAM;QACL,OAAO,CAAC,SAAS,GAAG,CAAC,cAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,cAAM,CAAC;KAC1D;AACH,CAAC;AAED,SAAS,aAAa,CAAC,QAAgB,EAAE,IAAY;IACnD,IAAI,IAAI,IAAI,CAAC,EAAE;QACb,MAAM,UAAU,GAAG,IAAI,CAAC;QACxB,IAAI,UAAU,IAAI,oBAAY;YAAE,MAAM,IAAI,KAAK,CAAC,aAAa,CAAC,CAAC;QAC/D,OAAO,CAAC,CAAC,cAAM,GAAG,UAAU,CAAC,GAAG,QAAQ,CAAC,GAAG,cAAM,CAAC;KACpD;SAAM;QACL,OAAO,CAAC,CAAC,cAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,QAAQ,CAAC,GAAG,cAAM,CAAC;KACzD;AACH,CAAC;AAED,SAAS,cAAc,CAAC,SAAiB,EAAE,IAAY;IACrD,IAAI,IAAI,IAAI,CAAC,EAAE;QACb,MAAM,UAAU,GAAG,IAAI,CAAC;QACxB,IAAI,UAAU,IAAI,oBAAY;YAAE,MAAM,IAAI,KAAK,CAAC,aAAa,CAAC,CAAC;QAC/D,OAAO,CAAC,SAAS,GAAG,cAAM,CAAC,GAAG,CAAC,cAAM,GAAG,UAAU,CAAC,CAAC;KACrD;SAAM;QACL,OAAO,CAAC,SAAS,GAAG,cAAM,CAAC,GAAG,CAAC,cAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;KAC1D;AACH,CAAC;AAED,SAAS,WAAW,CAClB,SAAoB,EACpB,MAAc,EACd,IAAY;IAEZ,IAAI,SAAS,KAAK,iBAAS,CAAC,cAAc,EAAE;QAC1C,OAAO,aAAa,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;KACpC;SAAM,IAAI,SAAS,KAAK,iBAAS,CAAC,eAAe,EAAE;QAClD,OAAO,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;KACrC;SAAM,IAAI,SAAS,KAAK,iBAAS,CAAC,cAAc,EAAE;QACjD,OAAO,aAAa,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;KACpC;SAAM;QACL,OAAO,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;KACrC;AACH,CAAC;AAED,SAAgB,oBAAoB,CAClC,GAAM;IAEN,MAAM,MAAM,GAAe,EAAE,CAAC;IAC9B,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;QACzB,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE;YAClD,qDAAqD;YACrD,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE;gBACtB,MAAM,CAAC,GAAc,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;aACnC;SACF;IACH,CAAC,CAAC,CAAC;IACH,OAAO,MAAM,CAAC;AAChB,CAAC;AAbD,oDAaC"}
@@ -1 +0,0 @@
1
- export declare const fetchPaginatedPairUSDReservesQuery: (first: number, skip: number) => string;
@@ -1,17 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.fetchPaginatedPairUSDReservesQuery = void 0;
4
- const fetchPaginatedPairUSDReservesQuery = (first, skip) => `query {
5
- pairs(
6
- orderBy: reserveUSD
7
- orderDirection: desc
8
- where: {reserve0_gt: 1, reserve1_gt: 1}
9
- first: ${first}
10
- skip: ${skip}
11
- ) {
12
- id
13
- reserveUSD
14
- }
15
- }`;
16
- exports.fetchPaginatedPairUSDReservesQuery = fetchPaginatedPairUSDReservesQuery;
17
- //# sourceMappingURL=subgraph-queries.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"subgraph-queries.js","sourceRoot":"","sources":["../../../src/dex/smardex/subgraph-queries.ts"],"names":[],"mappings":";;;AAAO,MAAM,kCAAkC,GAAG,CAChD,KAAa,EACb,IAAY,EACZ,EAAE,CACF;;;;;eAKa,KAAK;cACN,IAAI;;;;;IAKd,CAAC;AAfQ,QAAA,kCAAkC,sCAe1C"}
@@ -1,23 +0,0 @@
1
- import { Network } from '../../constants';
2
- import { IDexHelper } from '../../dex-helper';
3
- import { Address } from '../../types';
4
- import { USDReserve } from './types';
5
- export declare class USDReservesService {
6
- private static readonly CACHE_KEY_LOCK;
7
- private static readonly CACHE_TTL_LOCK;
8
- private static readonly CACHE_TTL_RESERVES;
9
- private static readonly CACHE_RESERVE_KEY_SUFFIX;
10
- private readonly subgraphURL;
11
- private readonly dexHelper;
12
- private readonly dexKey;
13
- private readonly network;
14
- private readonly logger;
15
- constructor(dexKey: string, network: Network, dexHelper: IDexHelper, subgraphURL: string);
16
- getUSDReserveForPair(pairAddress: Address): Promise<number>;
17
- private refreshUSDReservesIfNeeded;
18
- private lockUSDReservesCache;
19
- private areUSDReservesOutdated;
20
- private cacheUSDReserves;
21
- fetchSubgraphReserves(): Promise<USDReserve[]>;
22
- fetchPaginatedReserves(page: number, pageSize: number): Promise<USDReserve[]>;
23
- }
@@ -1,86 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.USDReservesService = void 0;
4
- const constants_1 = require("../../constants");
5
- const subgraph_queries_1 = require("./subgraph-queries");
6
- // Service for managing USD reserves for Smardex
7
- class USDReservesService {
8
- constructor(dexKey, network, dexHelper, subgraphURL) {
9
- this.dexKey = dexKey;
10
- this.subgraphURL = subgraphURL;
11
- this.network = network;
12
- this.dexHelper = dexHelper;
13
- this.logger = dexHelper.getLogger();
14
- }
15
- // Retrieves USD reserve for a specific pair from the cache
16
- async getUSDReserveForPair(pairAddress) {
17
- const suffix = USDReservesService.CACHE_RESERVE_KEY_SUFFIX;
18
- await this.refreshUSDReservesIfNeeded();
19
- const cachedReserve = await this.dexHelper.cache.get(this.dexKey, this.network, `${pairAddress.toLowerCase()}${suffix}`);
20
- return cachedReserve ? Number(cachedReserve) : 0;
21
- }
22
- // Updates USD reserves if they are outdated
23
- async refreshUSDReservesIfNeeded() {
24
- if (!this.subgraphURL || !(await this.areUSDReservesOutdated())) {
25
- return;
26
- }
27
- await this.lockUSDReservesCache();
28
- const pairs = await this.fetchSubgraphReserves();
29
- await this.cacheUSDReserves(pairs);
30
- }
31
- // Acquires a lock on the USD reserves cache
32
- async lockUSDReservesCache() {
33
- await this.dexHelper.cache.setex(this.dexKey, this.network, USDReservesService.CACHE_KEY_LOCK, USDReservesService.CACHE_TTL_LOCK, Date.now().toString());
34
- }
35
- // Checks if the USD reserves are outdated
36
- async areUSDReservesOutdated() {
37
- const lastUpdate = await this.dexHelper.cache.get(this.dexKey, this.network, USDReservesService.CACHE_KEY_LOCK);
38
- return !lastUpdate;
39
- }
40
- // Caches USD reserves for all pairs
41
- async cacheUSDReserves(reserves) {
42
- const suffix = USDReservesService.CACHE_RESERVE_KEY_SUFFIX;
43
- for (const reserve of reserves) {
44
- await this.dexHelper.cache.setex(this.dexKey, this.network, `${reserve.pairAddress}${suffix}`, USDReservesService.CACHE_TTL_RESERVES, reserve.reserveUSD.toString());
45
- }
46
- }
47
- async fetchSubgraphReserves() {
48
- const pageSize = 100;
49
- let page = 1;
50
- let pairs = [];
51
- let paginatedPairs = await this.fetchPaginatedReserves(page, pageSize);
52
- while (paginatedPairs.length > 0) {
53
- pairs = [...pairs, ...paginatedPairs];
54
- page++;
55
- paginatedPairs = await this.fetchPaginatedReserves(page, pageSize);
56
- }
57
- return pairs;
58
- }
59
- // Fetches pair data from the subgraph
60
- async fetchPaginatedReserves(page, pageSize) {
61
- const skip = Math.max(0, page - 1) * pageSize;
62
- const limit = pageSize;
63
- const paginatedQuery = (0, subgraph_queries_1.fetchPaginatedPairUSDReservesQuery)(limit, skip);
64
- try {
65
- const apiToken = this.dexHelper.config.data.smardexSubgraphAuthToken;
66
- const response = await this.dexHelper.httpRequest.post(this.subgraphURL, { query: paginatedQuery }, constants_1.SUBGRAPH_TIMEOUT, { 'x-api-key': apiToken });
67
- if (!response.data || !response.data.pairs) {
68
- return [];
69
- }
70
- return response.data.pairs.map((pair) => ({
71
- pairAddress: pair.id,
72
- reserveUSD: pair.reserveUSD,
73
- }));
74
- }
75
- catch (error) {
76
- this.logger.error('Error fetching paginated reserves from subgraph', error);
77
- return [];
78
- }
79
- }
80
- }
81
- exports.USDReservesService = USDReservesService;
82
- USDReservesService.CACHE_KEY_LOCK = 'cached-reserves-usd';
83
- USDReservesService.CACHE_TTL_LOCK = 120; // 2 minutes
84
- USDReservesService.CACHE_TTL_RESERVES = 60 * 60; // 1 hour
85
- USDReservesService.CACHE_RESERVE_KEY_SUFFIX = '-usd-reserve';
86
- //# sourceMappingURL=usd-reserves.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"usd-reserves.js","sourceRoot":"","sources":["../../../src/dex/smardex/usd-reserves.ts"],"names":[],"mappings":"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"}
@@ -1,4 +0,0 @@
1
- import { DexParams } from './types';
2
- import { DexConfigMap, AdapterMappings } from '../../types';
3
- export declare const TraderJoeV2_1Config: DexConfigMap<DexParams>;
4
- export declare const Adapters: Record<number, AdapterMappings>;
@@ -1,47 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Adapters = exports.TraderJoeV2_1Config = void 0;
4
- const constants_1 = require("../../constants");
5
- exports.TraderJoeV2_1Config = {
6
- TraderJoeV2_1: {
7
- [constants_1.Network.MAINNET]: {
8
- factory: '0xDC8d77b69155c7E68A95a4fb0f06a71FF90B943a',
9
- router: '0x9A93a421b74F1c5755b83dD2C211614dC419C44b',
10
- stateMulticall: '',
11
- },
12
- [constants_1.Network.ARBITRUM]: {
13
- factory: '0x8e42f2F4101563bF679975178e880FD87d3eFd4e',
14
- router: '0xb4315e873dBcf96Ffd0acd8EA43f689D8c20fB30',
15
- stateMulticall: '',
16
- },
17
- [constants_1.Network.BSC]: {
18
- factory: '0x8e42f2F4101563bF679975178e880FD87d3eFd4e',
19
- router: '0xb4315e873dBcf96Ffd0acd8EA43f689D8c20fB30',
20
- stateMulticall: '',
21
- },
22
- [constants_1.Network.AVALANCHE]: {
23
- factory: '0x8e42f2F4101563bF679975178e880FD87d3eFd4e',
24
- router: '0xb4315e873dBcf96Ffd0acd8EA43f689D8c20fB30',
25
- stateMulticall: '0xBAEeb4540f59d30E567a5B563CC0c4587eDd9366',
26
- },
27
- },
28
- };
29
- exports.Adapters = {
30
- [constants_1.Network.MAINNET]: {
31
- [constants_1.SwapSide.SELL]: [{ name: 'Adapter04', index: 5 }],
32
- [constants_1.SwapSide.BUY]: [{ name: 'BuyAdapter02', index: 1 }],
33
- },
34
- [constants_1.Network.ARBITRUM]: {
35
- [constants_1.SwapSide.SELL]: [{ name: 'ArbitrumAdapter02', index: 4 }],
36
- [constants_1.SwapSide.BUY]: [{ name: 'ArbitrumBuyAdapter', index: 7 }],
37
- },
38
- [constants_1.Network.BSC]: {
39
- [constants_1.SwapSide.SELL]: [{ name: 'BscAdapter02', index: 5 }],
40
- [constants_1.SwapSide.BUY]: [{ name: 'BscBuyAdapter', index: 6 }],
41
- },
42
- [constants_1.Network.AVALANCHE]: {
43
- [constants_1.SwapSide.SELL]: [{ name: 'AvalancheAdapter02', index: 4 }],
44
- [constants_1.SwapSide.BUY]: [{ name: 'AvalancheBuyAdapter', index: 5 }],
45
- },
46
- };
47
- //# sourceMappingURL=config.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/dex/trader-joe-v2-1-2/config.ts"],"names":[],"mappings":";;;AAEA,+CAAoD;AAEvC,QAAA,mBAAmB,GAA4B;IAC1D,aAAa,EAAE;QACb,CAAC,mBAAO,CAAC,OAAO,CAAC,EAAE;YACjB,OAAO,EAAE,4CAA4C;YACrD,MAAM,EAAE,4CAA4C;YACpD,cAAc,EAAE,EAAE;SACnB;QACD,CAAC,mBAAO,CAAC,QAAQ,CAAC,EAAE;YAClB,OAAO,EAAE,4CAA4C;YACrD,MAAM,EAAE,4CAA4C;YACpD,cAAc,EAAE,EAAE;SACnB;QACD,CAAC,mBAAO,CAAC,GAAG,CAAC,EAAE;YACb,OAAO,EAAE,4CAA4C;YACrD,MAAM,EAAE,4CAA4C;YACpD,cAAc,EAAE,EAAE;SACnB;QACD,CAAC,mBAAO,CAAC,SAAS,CAAC,EAAE;YACnB,OAAO,EAAE,4CAA4C;YACrD,MAAM,EAAE,4CAA4C;YACpD,cAAc,EAAE,4CAA4C;SAC7D;KACF;CACF,CAAC;AAEW,QAAA,QAAQ,GAAoC;IACvD,CAAC,mBAAO,CAAC,OAAO,CAAC,EAAE;QACjB,CAAC,oBAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;QAClD,CAAC,oBAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;KACrD;IACD,CAAC,mBAAO,CAAC,QAAQ,CAAC,EAAE;QAClB,CAAC,oBAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,mBAAmB,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;QAC1D,CAAC,oBAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,oBAAoB,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;KAC3D;IACD,CAAC,mBAAO,CAAC,GAAG,CAAC,EAAE;QACb,CAAC,oBAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;QACrD,CAAC,oBAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;KACtD;IACD,CAAC,mBAAO,CAAC,SAAS,CAAC,EAAE;QACnB,CAAC,oBAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,oBAAoB,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;QAC3D,CAAC,oBAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,qBAAqB,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;KAC5D;CACF,CAAC"}
@@ -1,20 +0,0 @@
1
- export declare const TRADER_JOE_V2_CHUNKS = 10;
2
- export declare const TRADER_JOE_V2_QUOTE_GASLIMIT = 200000;
3
- export declare const EMPTY_POOL_CACHE_TTL: number;
4
- export declare const POPULATED_POOL_CACHE_TTL: number;
5
- export declare const BASIS_POINT_MAX = 10000n;
6
- export declare const SCALE_OFFSET = 128n;
7
- export declare const PRECISION: bigint;
8
- export declare const CACHE_PREFIX = "dl";
9
- export declare const MinLBPairAbi: {
10
- inputs: never[];
11
- name: string;
12
- outputs: {
13
- internalType: string;
14
- name: string;
15
- type: string;
16
- }[];
17
- stateMutability: string;
18
- type: string;
19
- }[];
20
- export declare const SUPPORTED_BIN_STEPS: bigint[];
@@ -1,22 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.SUPPORTED_BIN_STEPS = exports.MinLBPairAbi = exports.CACHE_PREFIX = exports.PRECISION = exports.SCALE_OFFSET = exports.BASIS_POINT_MAX = exports.POPULATED_POOL_CACHE_TTL = exports.EMPTY_POOL_CACHE_TTL = exports.TRADER_JOE_V2_QUOTE_GASLIMIT = exports.TRADER_JOE_V2_CHUNKS = void 0;
4
- exports.TRADER_JOE_V2_CHUNKS = 10;
5
- exports.TRADER_JOE_V2_QUOTE_GASLIMIT = 200000;
6
- exports.EMPTY_POOL_CACHE_TTL = 60 * 60;
7
- exports.POPULATED_POOL_CACHE_TTL = 12 * 60 * 60;
8
- exports.BASIS_POINT_MAX = 10000n;
9
- exports.SCALE_OFFSET = 128n;
10
- exports.PRECISION = BigInt(1e18);
11
- exports.CACHE_PREFIX = 'dl';
12
- exports.MinLBPairAbi = [
13
- {
14
- inputs: [],
15
- name: 'getTokenX',
16
- outputs: [{ internalType: 'contract IERC20', name: '', type: 'address' }],
17
- stateMutability: 'view',
18
- type: 'function',
19
- },
20
- ];
21
- exports.SUPPORTED_BIN_STEPS = [1n, 2n, 5n, 10n, 15n, 20n, 25n, 50n, 100n];
22
- //# sourceMappingURL=constants.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/dex/trader-joe-v2-1-2/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,oBAAoB,GAAG,EAAE,CAAC;AAC1B,QAAA,4BAA4B,GAAG,MAAO,CAAC;AAEvC,QAAA,oBAAoB,GAAG,EAAE,GAAG,EAAE,CAAC;AAC/B,QAAA,wBAAwB,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;AAExC,QAAA,eAAe,GAAG,MAAO,CAAC;AAC1B,QAAA,YAAY,GAAG,IAAI,CAAC;AACpB,QAAA,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;AACzB,QAAA,YAAY,GAAG,IAAI,CAAC;AAEpB,QAAA,YAAY,GAAG;IAC1B;QACE,MAAM,EAAE,EAAE;QACV,IAAI,EAAE,WAAW;QACjB,OAAO,EAAE,CAAC,EAAE,YAAY,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;QACzE,eAAe,EAAE,MAAM;QACvB,IAAI,EAAE,UAAU;KACjB;CACF,CAAC;AAEW,QAAA,mBAAmB,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC"}
@@ -1,37 +0,0 @@
1
- import { DeepReadonly } from 'ts-essentials';
2
- import { PoolState } from '../types';
3
- export declare class TraderJoeV21Math {
4
- private readonly BASIS_POINT_MAX;
5
- private readonly SCALE_OFFSET;
6
- private readonly PRECISION;
7
- private readonly REAL_ID_SHIFT;
8
- private readonly SCALE;
9
- private readonly MAX_FEE;
10
- getSwapIn(state: DeepReadonly<PoolState>, amountOut: bigint, binStep: bigint, swapForY: boolean): bigint;
11
- getSwapOut(state: DeepReadonly<PoolState>, amountIn: bigint, binStep: bigint, swapForY: boolean): bigint;
12
- updateVolatilityAccumulator(state: DeepReadonly<PoolState>, newIdReference: bigint, newVolatilityReference: bigint): bigint;
13
- getAmountsFromReserves(state: DeepReadonly<PoolState>, binStep: bigint, binId: bigint, amountInLeft: bigint, binReserves: bigint, swapForY: boolean, volatilityAccumulator: bigint): [bigint, bigint, bigint];
14
- getPriceFromId(binStep: bigint, id: bigint): bigint;
15
- getBase(binStep: bigint): bigint;
16
- pow(x: bigint, y: bigint): bigint;
17
- getTotalFee(state: PoolState, binStep: bigint, newVolatilityAccumulator: bigint): bigint;
18
- getBaseFee(state: DeepReadonly<PoolState>, binStep: bigint): bigint;
19
- getVariableFee(state: DeepReadonly<PoolState>, binStep: bigint, newVolatilityAccumulator: bigint): bigint;
20
- getFeeAmount(maxAmountIn: bigint, totalFee: bigint): bigint;
21
- getFeeAmountFrom(amountInWithFees: bigint, totalFee: bigint): bigint;
22
- verifyFee(fee: bigint): void;
23
- shiftDivRoundUp(x: bigint, offset: bigint, denominator: bigint): bigint;
24
- shiftDivRoundDown(x: bigint, offset: bigint, denominator: bigint): bigint;
25
- getEndOfDivRoundDown(x: bigint, y: bigint, denominator: bigint, prod0: bigint, prod1: bigint): bigint;
26
- manualShiftRight(x: bigint, shift: bigint): bigint;
27
- mulMod(x: bigint, y: bigint, mod: bigint): bigint;
28
- improvePrecision(denominator: bigint, inverse: bigint): bigint;
29
- mulShiftRoundUp(x: bigint, y: bigint, offset: bigint): bigint;
30
- mulShiftRoundDown(x: bigint, y: bigint, offset: bigint): bigint;
31
- getMulProds(x: bigint, y: bigint): [bigint, bigint];
32
- updateReferences(state: DeepReadonly<PoolState>): {
33
- idReference: bigint;
34
- volatilityReference: bigint;
35
- };
36
- updateVolatilityReference(state: DeepReadonly<PoolState>): bigint;
37
- }