@paraswap/dex-lib 3.5.2 → 3.5.3-v6.2-params

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 (164) hide show
  1. package/build/abi/Redstone.json +739 -0
  2. package/build/abi/angle-transmuter/MorphoOracle.json +193 -0
  3. package/build/abi/angle-transmuter/MorphoVault.json +2506 -0
  4. package/build/abi/angle-transmuter/Pyth.json +1534 -0
  5. package/build/abi/angle-transmuter/Transmuter.json +1711 -0
  6. package/build/abi/angle-transmuter/TransmuterSidechain.json +1798 -0
  7. package/build/abi/idle-dao/idle-cdo-factory.json +38 -0
  8. package/build/abi/idle-dao/idle-cdo.json +1245 -0
  9. package/build/abi/pharaoh/PharaohPool.abi.json +1582 -0
  10. package/build/abi/smardex/smardex-factory.json +185 -0
  11. package/build/abi/smardex/smardex-pool.json +578 -0
  12. package/build/abi/smardex/smardex-router.json +648 -0
  13. package/build/abi/trader-joe-v2_1/FactoryABI.json +1208 -0
  14. package/build/abi/trader-joe-v2_1/PairABI.json +1493 -0
  15. package/build/abi/trader-joe-v2_1/RouterABI.json +1489 -0
  16. package/build/abi/trader-joe-v2_1/StateMulticall.json +193 -0
  17. package/build/constants.d.ts +2 -0
  18. package/build/constants.js +3 -1
  19. package/build/constants.js.map +1 -1
  20. package/build/dex/aave-v1/aave-v1.js +0 -1
  21. package/build/dex/aave-v1/aave-v1.js.map +1 -1
  22. package/build/dex/angle-transmuter/angle-transmuter-pool.d.ts +61 -0
  23. package/build/dex/angle-transmuter/angle-transmuter-pool.js +424 -0
  24. package/build/dex/angle-transmuter/angle-transmuter-pool.js.map +1 -0
  25. package/build/dex/angle-transmuter/angle-transmuter.d.ts +60 -0
  26. package/build/dex/angle-transmuter/angle-transmuter.js +281 -0
  27. package/build/dex/angle-transmuter/angle-transmuter.js.map +1 -0
  28. package/build/dex/angle-transmuter/backedOracle.d.ts +19 -0
  29. package/build/dex/angle-transmuter/backedOracle.js +56 -0
  30. package/build/dex/angle-transmuter/backedOracle.js.map +1 -0
  31. package/build/dex/angle-transmuter/config.d.ts +4 -0
  32. package/build/dex/angle-transmuter/config.js +50 -0
  33. package/build/dex/angle-transmuter/config.js.map +1 -0
  34. package/build/dex/angle-transmuter/constants.d.ts +10 -0
  35. package/build/dex/angle-transmuter/constants.js +137 -0
  36. package/build/dex/angle-transmuter/constants.js.map +1 -0
  37. package/build/dex/angle-transmuter/morphoOracle.d.ts +42 -0
  38. package/build/dex/angle-transmuter/morphoOracle.js +179 -0
  39. package/build/dex/angle-transmuter/morphoOracle.js.map +1 -0
  40. package/build/dex/angle-transmuter/morphoVault.d.ts +20 -0
  41. package/build/dex/angle-transmuter/morphoVault.js +84 -0
  42. package/build/dex/angle-transmuter/morphoVault.js.map +1 -0
  43. package/build/dex/angle-transmuter/pyth.d.ts +19 -0
  44. package/build/dex/angle-transmuter/pyth.js +70 -0
  45. package/build/dex/angle-transmuter/pyth.js.map +1 -0
  46. package/build/dex/angle-transmuter/redstone.d.ts +20 -0
  47. package/build/dex/angle-transmuter/redstone.js +73 -0
  48. package/build/dex/angle-transmuter/redstone.js.map +1 -0
  49. package/build/dex/angle-transmuter/transmuter.d.ts +55 -0
  50. package/build/dex/angle-transmuter/transmuter.js +412 -0
  51. package/build/dex/angle-transmuter/transmuter.js.map +1 -0
  52. package/build/dex/angle-transmuter/types.d.ts +189 -0
  53. package/build/dex/angle-transmuter/types.js +33 -0
  54. package/build/dex/angle-transmuter/types.js.map +1 -0
  55. package/build/dex/angle-transmuter/utils.d.ts +9 -0
  56. package/build/dex/angle-transmuter/utils.js +257 -0
  57. package/build/dex/angle-transmuter/utils.js.map +1 -0
  58. package/build/dex/idle-dao/config.d.ts +7 -0
  59. package/build/dex/idle-dao/config.js +571 -0
  60. package/build/dex/idle-dao/config.js.map +1 -0
  61. package/build/dex/idle-dao/idle-dao-pool.d.ts +56 -0
  62. package/build/dex/idle-dao/idle-dao-pool.js +176 -0
  63. package/build/dex/idle-dao/idle-dao-pool.js.map +1 -0
  64. package/build/dex/idle-dao/idle-dao-pooling-pool.d.ts +16 -0
  65. package/build/dex/idle-dao/idle-dao-pooling-pool.js +57 -0
  66. package/build/dex/idle-dao/idle-dao-pooling-pool.js.map +1 -0
  67. package/build/dex/idle-dao/idle-dao.d.ts +52 -0
  68. package/build/dex/idle-dao/idle-dao.js +321 -0
  69. package/build/dex/idle-dao/idle-dao.js.map +1 -0
  70. package/build/dex/idle-dao/tokens.d.ts +16 -0
  71. package/build/dex/idle-dao/tokens.js +87 -0
  72. package/build/dex/idle-dao/tokens.js.map +1 -0
  73. package/build/dex/idle-dao/types.d.ts +37 -0
  74. package/build/dex/idle-dao/types.js +11 -0
  75. package/build/dex/idle-dao/types.js.map +1 -0
  76. package/build/dex/idle-dao/utils.d.ts +8 -0
  77. package/build/dex/idle-dao/utils.js +147 -0
  78. package/build/dex/idle-dao/utils.js.map +1 -0
  79. package/build/dex/platypus/platypus.js +3 -17
  80. package/build/dex/platypus/platypus.js.map +1 -1
  81. package/build/dex/smardex/subgraph-queries.d.ts +1 -0
  82. package/build/dex/smardex/subgraph-queries.js +17 -0
  83. package/build/dex/smardex/subgraph-queries.js.map +1 -0
  84. package/build/dex/smardex/usd-reserves.d.ts +23 -0
  85. package/build/dex/smardex/usd-reserves.js +86 -0
  86. package/build/dex/smardex/usd-reserves.js.map +1 -0
  87. package/build/dex/stable-pool.js +8 -1
  88. package/build/dex/stable-pool.js.map +1 -1
  89. package/build/dex/swaap-v1/swaap-v1.js +0 -4
  90. package/build/dex/swaap-v1/swaap-v1.js.map +1 -1
  91. package/build/dex/trader-joe-v2-1-2/config.d.ts +4 -0
  92. package/build/dex/trader-joe-v2-1-2/config.js +47 -0
  93. package/build/dex/trader-joe-v2-1-2/config.js.map +1 -0
  94. package/build/dex/trader-joe-v2-1-2/constants.d.ts +20 -0
  95. package/build/dex/trader-joe-v2-1-2/constants.js +22 -0
  96. package/build/dex/trader-joe-v2-1-2/constants.js.map +1 -0
  97. package/build/dex/trader-joe-v2-1-2/math/index.d.ts +37 -0
  98. package/build/dex/trader-joe-v2-1-2/math/index.js +291 -0
  99. package/build/dex/trader-joe-v2-1-2/math/index.js.map +1 -0
  100. package/build/dex/trader-joe-v2-1-2/trader-joe-v2-1-2-pool.d.ts +60 -0
  101. package/build/dex/trader-joe-v2-1-2/trader-joe-v2-1-2-pool.js +248 -0
  102. package/build/dex/trader-joe-v2-1-2/trader-joe-v2-1-2-pool.js.map +1 -0
  103. package/build/dex/trader-joe-v2-1-2/trader-joe-v2-1-2.d.ts +53 -0
  104. package/build/dex/trader-joe-v2-1-2/trader-joe-v2-1-2.js +307 -0
  105. package/build/dex/trader-joe-v2-1-2/trader-joe-v2-1-2.js.map +1 -0
  106. package/build/dex/trader-joe-v2-1-2/types.d.ts +82 -0
  107. package/build/dex/trader-joe-v2-1-2/types.js +9 -0
  108. package/build/dex/trader-joe-v2-1-2/types.js.map +1 -0
  109. package/build/dex/trader-joe-v2_1/config.d.ts +4 -0
  110. package/build/dex/trader-joe-v2_1/config.js +47 -0
  111. package/build/dex/trader-joe-v2_1/config.js.map +1 -0
  112. package/build/dex/trader-joe-v2_1/constants.d.ts +20 -0
  113. package/build/dex/trader-joe-v2_1/constants.js +22 -0
  114. package/build/dex/trader-joe-v2_1/constants.js.map +1 -0
  115. package/build/dex/trader-joe-v2_1/math/index.d.ts +37 -0
  116. package/build/dex/trader-joe-v2_1/math/index.js +291 -0
  117. package/build/dex/trader-joe-v2_1/math/index.js.map +1 -0
  118. package/build/dex/trader-joe-v2_1/trader-joe-v2.1.d.ts +0 -0
  119. package/build/dex/trader-joe-v2_1/trader-joe-v2.1.js +384 -0
  120. package/build/dex/trader-joe-v2_1/trader-joe-v2.1.js.map +1 -0
  121. package/build/dex/trader-joe-v2_1/trader-joe-v2_1-pool.d.ts +60 -0
  122. package/build/dex/trader-joe-v2_1/trader-joe-v2_1-pool.js +247 -0
  123. package/build/dex/trader-joe-v2_1/trader-joe-v2_1-pool.js.map +1 -0
  124. package/build/dex/trader-joe-v2_1/trader-joe-v2_1.d.ts +53 -0
  125. package/build/dex/trader-joe-v2_1/trader-joe-v2_1.js +307 -0
  126. package/build/dex/trader-joe-v2_1/trader-joe-v2_1.js.map +1 -0
  127. package/build/dex/trader-joe-v2_1/types.d.ts +82 -0
  128. package/build/dex/trader-joe-v2_1/types.js +9 -0
  129. package/build/dex/trader-joe-v2_1/types.js.map +1 -0
  130. package/build/dex/uniswap-v2/config.js +4 -3
  131. package/build/dex/uniswap-v2/config.js.map +1 -1
  132. package/build/dex/wombat/wombat-pool-poller.d.ts +22 -0
  133. package/build/dex/wombat/wombat-pool-poller.js +164 -0
  134. package/build/dex/wombat/wombat-pool-poller.js.map +1 -0
  135. package/build/dex-helper/Cache.d.ts +31 -0
  136. package/build/dex-helper/Cache.js +106 -0
  137. package/build/dex-helper/Cache.js.map +1 -0
  138. package/build/dex-helper/RedisBatcher.d.ts +20 -0
  139. package/build/dex-helper/RedisBatcher.js +75 -0
  140. package/build/dex-helper/RedisBatcher.js.map +1 -0
  141. package/build/dex-helper/RedisWrapper.d.ts +37 -0
  142. package/build/dex-helper/RedisWrapper.js +165 -0
  143. package/build/dex-helper/RedisWrapper.js.map +1 -0
  144. package/build/generic-swap-transaction-builder.d.ts +5 -3
  145. package/build/generic-swap-transaction-builder.js +22 -7
  146. package/build/generic-swap-transaction-builder.js.map +1 -1
  147. package/build/utils.d.ts +1 -1
  148. package/package.json +1 -1
  149. package/src/constants.ts +2 -0
  150. package/src/dex/uniswap-v2/config.ts +4 -4
  151. package/src/generic-swap-transaction-builder.ts +40 -0
  152. package/.vscode/launch.json +0 -53
  153. package/.vscode/settings.json +0 -2
  154. package/.vscode/tasks.json +0 -15
  155. package/build/abi/uniswap-v3/AlienBaseV3Router.abi.json +0 -52
  156. package/build/dex/solidly-v3/scripts/check-event-pool-event.d.ts +0 -1
  157. package/build/dex/solidly-v3/scripts/check-event-pool-event.js +0 -53
  158. package/build/dex/solidly-v3/scripts/check-event-pool-event.js.map +0 -1
  159. package/build/dex/uniswap-v3/forks/alien-base-v3/alien-base-v3.d.ts +0 -17
  160. package/build/dex/uniswap-v3/forks/alien-base-v3/alien-base-v3.js +0 -64
  161. package/build/dex/uniswap-v3/forks/alien-base-v3/alien-base-v3.js.map +0 -1
  162. package/build/dex/uniswap-v3/forks/alien-v3/alien-v3.d.ts +0 -17
  163. package/build/dex/uniswap-v3/forks/alien-v3/alien-v3.js +0 -79
  164. package/build/dex/uniswap-v3/forks/alien-v3/alien-v3.js.map +0 -1
@@ -0,0 +1,9 @@
1
+ import { Fees, QuoteType } from './types';
2
+ export declare function _quoteMintExactInput(oracleValue: number, amountIn: number, fees: Fees, stablecoinsIssued: number, otherStablecoinSupply: number, stablecoinCap: number): number;
3
+ export declare function _quoteMintExactOutput(oracleValue: number, amountOut: number, fees: Fees, stablecoinsIssued: number, otherStablecoinSupply: number, stablecoinCap: number): number;
4
+ export declare function _quoteBurnExactOutput(oracleValue: number, ratio: number, amountOut: number, fees: Fees, stablecoinsIssued: number, otherStablecoinSupply: number): number;
5
+ export declare function _quoteBurnExactInput(oracleValue: number, ratio: number, amountIn: number, fees: Fees, stablecoinsIssued: number, otherStablecoinSupply: number): number;
6
+ export declare function _quoteFees(fees: Fees, quoteType: QuoteType, amountStable: number, stablecoinsIssued: number, otherStablecoinSupply: number): number;
7
+ export declare function filterDictionaryOnly<T extends {
8
+ [key: string]: any;
9
+ }>(obj: T): Partial<T>;
@@ -0,0 +1,257 @@
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, stablecoinCap) {
7
+ let amountOut = oracleValue * amountIn;
8
+ amountOut = _quoteFees(fees, types_1.QuoteType.MintExactInput, amountOut, stablecoinsIssued, otherStablecoinSupply);
9
+ if (stablecoinCap >= 0 && amountOut + stablecoinsIssued > stablecoinCap)
10
+ throw new Error('InvalidSwap');
11
+ return amountOut;
12
+ }
13
+ exports._quoteMintExactInput = _quoteMintExactInput;
14
+ /// @notice Computes the `amountIn` of collateral to get during a mint of `amountOut` of stablecoins
15
+ function _quoteMintExactOutput(oracleValue, amountOut, fees, stablecoinsIssued, otherStablecoinSupply, stablecoinCap) {
16
+ if (stablecoinCap >= 0 && amountOut + stablecoinsIssued > stablecoinCap)
17
+ throw new Error('InvalidSwap');
18
+ const amountIn = _quoteFees(fees, types_1.QuoteType.MintExactOutput, amountOut, stablecoinsIssued, otherStablecoinSupply);
19
+ return amountIn / oracleValue;
20
+ }
21
+ exports._quoteMintExactOutput = _quoteMintExactOutput;
22
+ /// @notice Computes the `amountIn` of stablecoins to burn to release `amountOut` of `collateral`
23
+ function _quoteBurnExactOutput(oracleValue, ratio, amountOut, fees, stablecoinsIssued, otherStablecoinSupply) {
24
+ const amountIn = (amountOut * oracleValue) / ratio;
25
+ return _quoteFees(fees, types_1.QuoteType.BurnExactOutput, amountIn, stablecoinsIssued, otherStablecoinSupply);
26
+ }
27
+ exports._quoteBurnExactOutput = _quoteBurnExactOutput;
28
+ /// @notice Computes the `amountOut` of `collateral` to give during a burn operation of `amountIn` of stablecoins
29
+ function _quoteBurnExactInput(oracleValue, ratio, amountIn, fees, stablecoinsIssued, otherStablecoinSupply) {
30
+ const amountOut = _quoteFees(fees, types_1.QuoteType.BurnExactInput, amountIn, stablecoinsIssued, otherStablecoinSupply);
31
+ return (amountOut * ratio) / oracleValue;
32
+ }
33
+ exports._quoteBurnExactInput = _quoteBurnExactInput;
34
+ function _quoteFees(fees, quoteType, amountStable, stablecoinsIssued, otherStablecoinSupply) {
35
+ const isMint = _isMint(quoteType);
36
+ const isExact = _isExact(quoteType);
37
+ const n = isMint ? fees.xFeeMint.length : fees.xFeeBurn.length;
38
+ let currentExposure = (stablecoinsIssued * types_1.BASE_9) / (otherStablecoinSupply + stablecoinsIssued);
39
+ let amount = 0;
40
+ // Finding in which segment the current exposure to the collateral is
41
+ let i = findLowerBound(isMint, isMint ? fees.xFeeMint : fees.xFeeBurn, types_1.BASE_9, currentExposure);
42
+ let lowerExposure;
43
+ let upperExposure;
44
+ let lowerFees;
45
+ let upperFees;
46
+ let amountToNextBreakPoint;
47
+ while (i < n - 1) {
48
+ // We compute a linear by part function on the amount swapped
49
+ // The `amountToNextBreakPoint` variable is the `b_{i+1}` value from the whitepaper
50
+ if (isMint) {
51
+ lowerExposure = fees.xFeeMint[i];
52
+ upperExposure = fees.xFeeMint[i + 1];
53
+ lowerFees = fees.yFeeMint[i];
54
+ upperFees = fees.yFeeMint[i + 1];
55
+ amountToNextBreakPoint =
56
+ (otherStablecoinSupply * upperExposure) / (types_1.BASE_9 - upperExposure) -
57
+ stablecoinsIssued;
58
+ }
59
+ else {
60
+ // The exposures in the burn case are decreasing
61
+ lowerExposure = fees.xFeeBurn[i];
62
+ upperExposure = fees.xFeeBurn[i + 1];
63
+ lowerFees = fees.yFeeBurn[i];
64
+ upperFees = fees.yFeeBurn[i + 1];
65
+ // The `b_{i+1}` value in the burn case is the opposite value of the mint case
66
+ amountToNextBreakPoint =
67
+ stablecoinsIssued -
68
+ (otherStablecoinSupply * upperExposure) / (types_1.BASE_9 - upperExposure);
69
+ }
70
+ let currentFees;
71
+ if (lowerExposure * types_1.BASE_9 === currentExposure) {
72
+ currentFees = lowerFees;
73
+ }
74
+ else if (lowerFees === upperFees) {
75
+ currentFees = lowerFees;
76
+ }
77
+ else {
78
+ // This is the opposite of the `b_i` value from the whitepaper.
79
+ const amountFromPrevBreakPoint = isMint
80
+ ? stablecoinsIssued -
81
+ (otherStablecoinSupply * lowerExposure) / (types_1.BASE_9 - lowerExposure)
82
+ : (otherStablecoinSupply * lowerExposure) / (types_1.BASE_9 - lowerExposure) -
83
+ stablecoinsIssued;
84
+ // slope = (upperFees - lowerFees) / (amountToNextBreakPoint + amountFromPrevBreakPoint)
85
+ // `currentFees` is the `g(0)` value from the whitepaper
86
+ currentFees =
87
+ lowerFees +
88
+ ((upperFees - lowerFees) * amountFromPrevBreakPoint) /
89
+ (amountToNextBreakPoint + amountFromPrevBreakPoint);
90
+ }
91
+ {
92
+ const amountToNextBreakPointNormalizer = isExact
93
+ ? amountToNextBreakPoint
94
+ : isMint
95
+ ? _invertFeeMint(amountToNextBreakPoint, (upperFees + currentFees) / 2)
96
+ : _applyFeeBurn(amountToNextBreakPoint, (upperFees + currentFees) / 2);
97
+ if (amountToNextBreakPointNormalizer >= amountStable) {
98
+ let midFee;
99
+ if (isExact) {
100
+ // `(g_i(0) + g_i(M)) / 2 = g(0) + (f_{i+1} - g(0)) * M / (2 * b_{i+1})`
101
+ midFee =
102
+ currentFees +
103
+ (amountStable * (upperFees - currentFees)) /
104
+ (2 * amountToNextBreakPointNormalizer);
105
+ }
106
+ else {
107
+ // Here instead of computing the closed form expression for `m_t` derived in the whitepaper,
108
+ // 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
109
+ // 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
110
+ // in the computation of `m_t` in both the mint and burn case
111
+ const ac4 = (types_1.BASE_9 * (2 * amountStable * (upperFees - currentFees))) /
112
+ amountToNextBreakPoint;
113
+ if (isMint) {
114
+ // In the mint case:
115
+ // `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})`
116
+ // And so: g(0)+(f_{i+1}-f_i)/(b_{i+1}-b_i)m_t/2
117
+ // = (g(0)-1+sqrt[(1+g(0))**2+2M(f_{i+1}-g(0))/b_{i+1})])
118
+ midFee = Number((Math.sqrt((types_1.BASE_9 + currentFees) ** 2 + ac4) +
119
+ currentFees -
120
+ types_1.BASE_9) /
121
+ 2);
122
+ }
123
+ else {
124
+ // In the burn case:
125
+ // `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})`
126
+ // And so: g(0)+(f_{i+1}-f_i)/(b_{i+1}-b_i)m_t/2
127
+ // = (g(0)+1-sqrt[(1-g(0))**2-2M(f_{i+1}-g(0))/b_{i+1})])
128
+ const baseMinusCurrentSquared = (types_1.BASE_9 - currentFees) ** 2;
129
+ // Mathematically, this condition is always verified, but rounding errors may make this
130
+ // mathematical invariant break, in which case we consider that the square root is null
131
+ if (baseMinusCurrentSquared < ac4) {
132
+ midFee = (currentFees + types_1.BASE_9) / 2;
133
+ }
134
+ else {
135
+ midFee =
136
+ (currentFees +
137
+ types_1.BASE_9 -
138
+ Math.sqrt(baseMinusCurrentSquared - ac4)) /
139
+ 2;
140
+ }
141
+ }
142
+ }
143
+ return amount + _computeFee(quoteType, amountStable, midFee);
144
+ }
145
+ amountStable -= amountToNextBreakPointNormalizer;
146
+ amount += !isExact
147
+ ? amountToNextBreakPoint
148
+ : isMint
149
+ ? _invertFeeMint(amountToNextBreakPoint, (upperFees + currentFees) / 2)
150
+ : _applyFeeBurn(amountToNextBreakPoint, (upperFees + currentFees) / 2);
151
+ currentExposure = upperExposure * types_1.BASE_9;
152
+ ++i;
153
+ // Update for the rest of the swaps the stablecoins issued from the asset
154
+ stablecoinsIssued = isMint
155
+ ? stablecoinsIssued + amountToNextBreakPoint
156
+ : stablecoinsIssued - amountToNextBreakPoint;
157
+ }
158
+ }
159
+ return (amount +
160
+ _computeFee(quoteType, amountStable, isMint ? fees.yFeeMint[n - 1] : fees.yFeeBurn[n - 1]));
161
+ }
162
+ exports._quoteFees = _quoteFees;
163
+ function findLowerBound(increasingArray, array, normalizerArray, element) {
164
+ if (array.length === 0) {
165
+ return 0;
166
+ }
167
+ let low = 1;
168
+ let high = array.length;
169
+ if ((increasingArray && array[high - 1] * normalizerArray <= element) ||
170
+ (!increasingArray && array[high - 1] * normalizerArray >= element)) {
171
+ return high - 1;
172
+ }
173
+ while (low < high) {
174
+ const mid = Math.floor((low + high) / 2);
175
+ if (increasingArray
176
+ ? array[mid] * normalizerArray > element
177
+ : array[mid] * normalizerArray < element) {
178
+ high = mid;
179
+ }
180
+ else {
181
+ low = mid + 1;
182
+ }
183
+ }
184
+ return low - 1;
185
+ }
186
+ function _isMint(quoteType) {
187
+ return (quoteType === types_1.QuoteType.MintExactInput ||
188
+ quoteType === types_1.QuoteType.MintExactOutput);
189
+ }
190
+ function _isExact(quoteType) {
191
+ return (quoteType === types_1.QuoteType.MintExactOutput ||
192
+ quoteType === types_1.QuoteType.BurnExactInput);
193
+ }
194
+ function _applyFeeMint(amountIn, fees) {
195
+ if (fees >= 0) {
196
+ const castedFees = fees;
197
+ // Consider that if fees are above `BASE_12` this is equivalent to infinite fees
198
+ if (castedFees >= types_1.BASE_12)
199
+ throw new Error('InvalidSwap');
200
+ return (amountIn * types_1.BASE_9) / (types_1.BASE_9 + castedFees);
201
+ }
202
+ return (amountIn * types_1.BASE_9) / (types_1.BASE_9 - Math.abs(-fees));
203
+ }
204
+ function _invertFeeMint(amountOut, fees) {
205
+ if (fees >= 0) {
206
+ const castedFees = fees;
207
+ // Consider that if fees are above `BASE_12` this is equivalent to infinite fees
208
+ if (castedFees >= types_1.BASE_12)
209
+ throw new Error('InvalidSwap');
210
+ return (amountOut * (types_1.BASE_9 + castedFees)) / types_1.BASE_9;
211
+ }
212
+ return (amountOut * (types_1.BASE_9 - Math.abs(-fees))) / types_1.BASE_9;
213
+ }
214
+ function _applyFeeBurn(amountIn, fees) {
215
+ if (fees >= 0) {
216
+ const castedFees = fees;
217
+ if (castedFees >= types_1.MAX_BURN_FEE)
218
+ throw new Error('InvalidSwap');
219
+ return ((types_1.BASE_9 - castedFees) * amountIn) / types_1.BASE_9;
220
+ }
221
+ return ((types_1.BASE_9 + Math.abs(-fees)) * amountIn) / types_1.BASE_9;
222
+ }
223
+ function _invertFeeBurn(amountOut, fees) {
224
+ if (fees >= 0) {
225
+ const castedFees = fees;
226
+ if (castedFees >= types_1.MAX_BURN_FEE)
227
+ throw new Error('InvalidSwap');
228
+ return (amountOut * types_1.BASE_9) / (types_1.BASE_9 - castedFees);
229
+ }
230
+ return (amountOut * types_1.BASE_9) / (types_1.BASE_9 + Math.abs(-fees));
231
+ }
232
+ function _computeFee(quoteType, amount, fees) {
233
+ if (quoteType === types_1.QuoteType.MintExactInput) {
234
+ return _applyFeeMint(amount, fees);
235
+ }
236
+ if (quoteType === types_1.QuoteType.MintExactOutput) {
237
+ return _invertFeeMint(amount, fees);
238
+ }
239
+ if (quoteType === types_1.QuoteType.BurnExactInput) {
240
+ return _applyFeeBurn(amount, fees);
241
+ }
242
+ return _invertFeeBurn(amount, fees);
243
+ }
244
+ function filterDictionaryOnly(obj) {
245
+ const result = {};
246
+ Object.keys(obj).map(key => {
247
+ if (Object.prototype.hasOwnProperty.call(obj, key)) {
248
+ // Skip numeric keys to exclude array-like properties
249
+ if (Number.isNaN(Number(key))) {
250
+ result[key] = obj[key];
251
+ }
252
+ }
253
+ });
254
+ return result;
255
+ }
256
+ exports.filterDictionaryOnly = filterDictionaryOnly;
257
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/dex/angle-transmuter/utils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import { DexParams, IdleToken } from './types';
2
+ import { DexConfigMap, AdapterMappings } from '../../types';
3
+ export declare const CustomCdos: Record<string, number>;
4
+ export declare const Config: DexConfigMap<DexParams>;
5
+ export declare const Adapters: Record<number, AdapterMappings>;
6
+ export declare const endpoints: Record<number, string>;
7
+ export declare const TOKEN_LISTS: IdleToken[];