@paraswap/dex-lib 3.8.22-infusion → 3.8.22

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 (235) hide show
  1. package/.idea/aws.xml +17 -0
  2. package/.idea/codeStyles/Project.xml +19 -0
  3. package/.idea/codeStyles/codeStyleConfig.xml +5 -0
  4. package/.idea/misc.xml +6 -0
  5. package/.idea/modules.xml +8 -0
  6. package/.idea/paraswap-dex-lib.iml +9 -0
  7. package/.idea/prettier.xml +7 -0
  8. package/.idea/vcs.xml +6 -0
  9. package/build/abi/maverick-v2/MaverickV2Router.json +778 -0
  10. package/build/dex/index.js +0 -2
  11. package/build/dex/index.js.map +1 -1
  12. package/build/dex/lite-psm/lite-psm.js +1 -1
  13. package/build/dex/lite-psm/lite-psm.js.map +1 -1
  14. package/build/dex/maker-psm/maker-psm.js +1 -1
  15. package/build/dex/trader-joe-v2.1/optimizer.d.ts +2 -0
  16. package/build/dex/trader-joe-v2.1/optimizer.js +47 -0
  17. package/build/dex/trader-joe-v2.1/optimizer.js.map +1 -0
  18. package/build/dex/trader-joe-v2.1/trader-joe-v2.1-new.d.ts +7 -0
  19. package/build/dex/trader-joe-v2.1/trader-joe-v2.1-new.js +20 -0
  20. package/build/dex/trader-joe-v2.1/trader-joe-v2.1-new.js.map +1 -0
  21. package/package.json +1 -1
  22. package/src/dex/index.ts +0 -2
  23. package/src/dex/lite-psm/lite-psm.ts +1 -1
  24. package/src/dex/maker-psm/maker-psm.ts +1 -1
  25. package/tests/constants-e2e.ts +1 -1
  26. package/build/abi/AaveV1_lending_pool.json +0 -27
  27. package/build/abi/inception/inception-ineth-pool.json +0 -1062
  28. package/build/abi/inception/inception-ineth.json +0 -609
  29. package/build/abi/inception/inception-ratio-feed.json +0 -93
  30. package/build/abi/inception/inception-vault.json +0 -991
  31. package/build/abi/infusion/InfusionFactory.json +0 -147
  32. package/build/abi/infusion/InfusionPair.json +0 -658
  33. package/build/abi/infusion/InfusionRouter.json +0 -442
  34. package/build/abi/oswap/oswap.abi.json +0 -452
  35. package/build/abi/platypus/asset.json +0 -490
  36. package/build/abi/platypus/avax-pool.json +0 -820
  37. package/build/abi/platypus/oracle.json +0 -119
  38. package/build/abi/platypus/pool.json +0 -677
  39. package/build/abi/smardex/all/smardex-router.json +0 -648
  40. package/build/abi/smardex/layer-1/smardex-factory.json +0 -242
  41. package/build/abi/smardex/layer-1/smardex-pool.json +0 -506
  42. package/build/abi/smardex/layer-2/smardex-factory.json +0 -185
  43. package/build/abi/smardex/layer-2/smardex-pool.json +0 -578
  44. package/build/abi/swaap-v1/pool.json +0 -1346
  45. package/build/dex/aave-v1/aave-v1.d.ts +0 -34
  46. package/build/dex/aave-v1/aave-v1.js +0 -180
  47. package/build/dex/aave-v1/aave-v1.js.map +0 -1
  48. package/build/dex/aave-v1/config.d.ts +0 -11
  49. package/build/dex/aave-v1/config.js +0 -20
  50. package/build/dex/aave-v1/config.js.map +0 -1
  51. package/build/dex/aave-v1/tokens-mainnet.json +0 -134
  52. package/build/dex/aave-v1/tokens.d.ts +0 -3
  53. package/build/dex/aave-v1/tokens.js +0 -50
  54. package/build/dex/aave-v1/tokens.js.map +0 -1
  55. package/build/dex/aave-v1/types.d.ts +0 -12
  56. package/build/dex/aave-v1/types.js +0 -3
  57. package/build/dex/aave-v1/types.js.map +0 -1
  58. package/build/dex/idle-dao/idle-dao-pool.d.ts +0 -56
  59. package/build/dex/idle-dao/idle-dao-pool.js +0 -176
  60. package/build/dex/idle-dao/idle-dao-pool.js.map +0 -1
  61. package/build/dex/idle-dao/idle-dao-pooling-pool.d.ts +0 -16
  62. package/build/dex/idle-dao/idle-dao-pooling-pool.js +0 -57
  63. package/build/dex/idle-dao/idle-dao-pooling-pool.js.map +0 -1
  64. package/build/dex/idle-dao/scripts.d.ts +0 -9
  65. package/build/dex/idle-dao/scripts.js +0 -552
  66. package/build/dex/idle-dao/scripts.js.map +0 -1
  67. package/build/dex/inception/config.d.ts +0 -5
  68. package/build/dex/inception/config.js +0 -112
  69. package/build/dex/inception/config.js.map +0 -1
  70. package/build/dex/inception/inception-event-pool.d.ts +0 -23
  71. package/build/dex/inception/inception-event-pool.js +0 -34
  72. package/build/dex/inception/inception-event-pool.js.map +0 -1
  73. package/build/dex/inception/inception-native.d.ts +0 -43
  74. package/build/dex/inception/inception-native.js +0 -131
  75. package/build/dex/inception/inception-native.js.map +0 -1
  76. package/build/dex/inception/inception-pool.d.ts +0 -18
  77. package/build/dex/inception/inception-pool.js +0 -32
  78. package/build/dex/inception/inception-pool.js.map +0 -1
  79. package/build/dex/inception/inception-price-feed.d.ts +0 -19
  80. package/build/dex/inception/inception-price-feed.js +0 -51
  81. package/build/dex/inception/inception-price-feed.js.map +0 -1
  82. package/build/dex/inception/inception.d.ts +0 -44
  83. package/build/dex/inception/inception.js +0 -162
  84. package/build/dex/inception/inception.js.map +0 -1
  85. package/build/dex/inception/tokens.d.ts +0 -9
  86. package/build/dex/inception/tokens.js +0 -28
  87. package/build/dex/inception/tokens.js.map +0 -1
  88. package/build/dex/inception/types.d.ts +0 -22
  89. package/build/dex/inception/types.js +0 -3
  90. package/build/dex/inception/types.js.map +0 -1
  91. package/build/dex/inception/utils.d.ts +0 -7
  92. package/build/dex/inception/utils.js +0 -58
  93. package/build/dex/inception/utils.js.map +0 -1
  94. package/build/dex/infusion/config.d.ts +0 -4
  95. package/build/dex/infusion/config.js +0 -25
  96. package/build/dex/infusion/config.js.map +0 -1
  97. package/build/dex/infusion/infusion-stable-pool.d.ts +0 -4
  98. package/build/dex/infusion/infusion-stable-pool.js +0 -74
  99. package/build/dex/infusion/infusion-stable-pool.js.map +0 -1
  100. package/build/dex/infusion/infusion.d.ts +0 -54
  101. package/build/dex/infusion/infusion.js +0 -510
  102. package/build/dex/infusion/infusion.js.map +0 -1
  103. package/build/dex/infusion/types.d.ts +0 -47
  104. package/build/dex/infusion/types.js +0 -3
  105. package/build/dex/infusion/types.js.map +0 -1
  106. package/build/dex/infusion/utils/isStablePair.d.ts +0 -2
  107. package/build/dex/infusion/utils/isStablePair.js +0 -18
  108. package/build/dex/infusion/utils/isStablePair.js.map +0 -1
  109. package/build/dex/oswap/config.d.ts +0 -5
  110. package/build/dex/oswap/config.js +0 -31
  111. package/build/dex/oswap/config.js.map +0 -1
  112. package/build/dex/oswap/oswap-pool.d.ts +0 -51
  113. package/build/dex/oswap/oswap-pool.js +0 -150
  114. package/build/dex/oswap/oswap-pool.js.map +0 -1
  115. package/build/dex/oswap/oswap.d.ts +0 -46
  116. package/build/dex/oswap/oswap.js +0 -273
  117. package/build/dex/oswap/oswap.js.map +0 -1
  118. package/build/dex/oswap/types.d.ts +0 -20
  119. package/build/dex/oswap/types.js +0 -3
  120. package/build/dex/oswap/types.js.map +0 -1
  121. package/build/dex/platypus/asset.d.ts +0 -14
  122. package/build/dex/platypus/asset.js +0 -97
  123. package/build/dex/platypus/asset.js.map +0 -1
  124. package/build/dex/platypus/config.d.ts +0 -11
  125. package/build/dex/platypus/config.js +0 -69
  126. package/build/dex/platypus/config.js.map +0 -1
  127. package/build/dex/platypus/platypus.d.ts +0 -63
  128. package/build/dex/platypus/platypus.js +0 -473
  129. package/build/dex/platypus/platypus.js.map +0 -1
  130. package/build/dex/platypus/pool-avax.d.ts +0 -8
  131. package/build/dex/platypus/pool-avax.js +0 -54
  132. package/build/dex/platypus/pool-avax.js.map +0 -1
  133. package/build/dex/platypus/pool-base.d.ts +0 -19
  134. package/build/dex/platypus/pool-base.js +0 -86
  135. package/build/dex/platypus/pool-base.js.map +0 -1
  136. package/build/dex/platypus/pool-pure.d.ts +0 -8
  137. package/build/dex/platypus/pool-pure.js +0 -37
  138. package/build/dex/platypus/pool-pure.js.map +0 -1
  139. package/build/dex/platypus/pool-subscriber.d.ts +0 -14
  140. package/build/dex/platypus/pool-subscriber.js +0 -167
  141. package/build/dex/platypus/pool-subscriber.js.map +0 -1
  142. package/build/dex/platypus/pool.d.ts +0 -8
  143. package/build/dex/platypus/pool.js +0 -58
  144. package/build/dex/platypus/pool.js.map +0 -1
  145. package/build/dex/platypus/types.d.ts +0 -92
  146. package/build/dex/platypus/types.js +0 -10
  147. package/build/dex/platypus/types.js.map +0 -1
  148. package/build/dex/quickswap/spiritswap-v3.d.ts +0 -6
  149. package/build/dex/quickswap/spiritswap-v3.js +0 -19
  150. package/build/dex/quickswap/spiritswap-v3.js.map +0 -1
  151. package/build/dex/smardex/config.d.ts +0 -4
  152. package/build/dex/smardex/config.js +0 -64
  153. package/build/dex/smardex/config.js.map +0 -1
  154. package/build/dex/smardex/constants.d.ts +0 -18
  155. package/build/dex/smardex/constants.js +0 -33
  156. package/build/dex/smardex/constants.js.map +0 -1
  157. package/build/dex/smardex/sdk/constants.d.ts +0 -6
  158. package/build/dex/smardex/sdk/constants.js +0 -13
  159. package/build/dex/smardex/sdk/constants.js.map +0 -1
  160. package/build/dex/smardex/sdk/core.d.ts +0 -113
  161. package/build/dex/smardex/sdk/core.js +0 -499
  162. package/build/dex/smardex/sdk/core.js.map +0 -1
  163. package/build/dex/smardex/sdk/errors.d.ts +0 -15
  164. package/build/dex/smardex/sdk/errors.js +0 -22
  165. package/build/dex/smardex/sdk/errors.js.map +0 -1
  166. package/build/dex/smardex/sdk/types.d.ts +0 -62
  167. package/build/dex/smardex/sdk/types.js +0 -3
  168. package/build/dex/smardex/sdk/types.js.map +0 -1
  169. package/build/dex/smardex/sdk/utils.d.ts +0 -44
  170. package/build/dex/smardex/sdk/utils.js +0 -133
  171. package/build/dex/smardex/sdk/utils.js.map +0 -1
  172. package/build/dex/smardex/smardex-event-pool.d.ts +0 -28
  173. package/build/dex/smardex/smardex-event-pool.js +0 -119
  174. package/build/dex/smardex/smardex-event-pool.js.map +0 -1
  175. package/build/dex/smardex/smardex.d.ts +0 -65
  176. package/build/dex/smardex/smardex.js +0 -519
  177. package/build/dex/smardex/smardex.js.map +0 -1
  178. package/build/dex/smardex/types.d.ts +0 -55
  179. package/build/dex/smardex/types.js +0 -3
  180. package/build/dex/smardex/types.js.map +0 -1
  181. package/build/dex/solidly/forks-override/cone.d.ts +0 -22
  182. package/build/dex/solidly/forks-override/cone.js +0 -53
  183. package/build/dex/solidly/forks-override/cone.js.map +0 -1
  184. package/build/dex/solidly/forks-override/solisnek.d.ts +0 -8
  185. package/build/dex/solidly/forks-override/solisnek.js +0 -15
  186. package/build/dex/solidly/forks-override/solisnek.js.map +0 -1
  187. package/build/dex/swaap-v1/config.d.ts +0 -17
  188. package/build/dex/swaap-v1/config.js +0 -56
  189. package/build/dex/swaap-v1/config.js.map +0 -1
  190. package/build/dex/swaap-v1/constants.d.ts +0 -6
  191. package/build/dex/swaap-v1/constants.js +0 -17
  192. package/build/dex/swaap-v1/constants.js.map +0 -1
  193. package/build/dex/swaap-v1/libraries/ChainlinkUtils.d.ts +0 -25
  194. package/build/dex/swaap-v1/libraries/ChainlinkUtils.js +0 -62
  195. package/build/dex/swaap-v1/libraries/ChainlinkUtils.js.map +0 -1
  196. package/build/dex/swaap-v1/libraries/Const.d.ts +0 -18
  197. package/build/dex/swaap-v1/libraries/Const.js +0 -26
  198. package/build/dex/swaap-v1/libraries/Const.js.map +0 -1
  199. package/build/dex/swaap-v1/libraries/GeometricBrownianMotion.d.ts +0 -77
  200. package/build/dex/swaap-v1/libraries/GeometricBrownianMotion.js +0 -316
  201. package/build/dex/swaap-v1/libraries/GeometricBrownianMotion.js.map +0 -1
  202. package/build/dex/swaap-v1/libraries/LogExpMath.d.ts +0 -75
  203. package/build/dex/swaap-v1/libraries/LogExpMath.js +0 -418
  204. package/build/dex/swaap-v1/libraries/LogExpMath.js.map +0 -1
  205. package/build/dex/swaap-v1/libraries/MathMMM.d.ts +0 -185
  206. package/build/dex/swaap-v1/libraries/MathMMM.js +0 -453
  207. package/build/dex/swaap-v1/libraries/MathMMM.js.map +0 -1
  208. package/build/dex/swaap-v1/libraries/Num.d.ts +0 -31
  209. package/build/dex/swaap-v1/libraries/Num.js +0 -167
  210. package/build/dex/swaap-v1/libraries/Num.js.map +0 -1
  211. package/build/dex/swaap-v1/libraries/PoolQuotations.d.ts +0 -23
  212. package/build/dex/swaap-v1/libraries/PoolQuotations.js +0 -131
  213. package/build/dex/swaap-v1/libraries/PoolQuotations.js.map +0 -1
  214. package/build/dex/swaap-v1/libraries/Struct.d.ts +0 -56
  215. package/build/dex/swaap-v1/libraries/Struct.js +0 -3
  216. package/build/dex/swaap-v1/libraries/Struct.js.map +0 -1
  217. package/build/dex/swaap-v1/swaap-v1-pool.d.ts +0 -45
  218. package/build/dex/swaap-v1/swaap-v1-pool.js +0 -656
  219. package/build/dex/swaap-v1/swaap-v1-pool.js.map +0 -1
  220. package/build/dex/swaap-v1/swaap-v1.d.ts +0 -62
  221. package/build/dex/swaap-v1/swaap-v1.js +0 -379
  222. package/build/dex/swaap-v1/swaap-v1.js.map +0 -1
  223. package/build/dex/swaap-v1/types.d.ts +0 -106
  224. package/build/dex/swaap-v1/types.js +0 -9
  225. package/build/dex/swaap-v1/types.js.map +0 -1
  226. package/src/abi/infusion/InfusionFactory.json +0 -147
  227. package/src/abi/infusion/InfusionPair.json +0 -658
  228. package/src/abi/infusion/InfusionRouter.json +0 -442
  229. package/src/dex/infusion/config.ts +0 -27
  230. package/src/dex/infusion/infusion-e2e.test.ts +0 -110
  231. package/src/dex/infusion/infusion-integration.test.ts +0 -232
  232. package/src/dex/infusion/infusion-stable-pool.ts +0 -91
  233. package/src/dex/infusion/infusion.ts +0 -749
  234. package/src/dex/infusion/types.ts +0 -60
  235. package/src/dex/infusion/utils/isStablePair.ts +0 -18
@@ -1,232 +0,0 @@
1
- /* eslint-disable no-console */
2
- import dotenv from 'dotenv';
3
- dotenv.config();
4
-
5
- import { DummyDexHelper } from '../../dex-helper';
6
- import { Network, SwapSide } from '../../constants';
7
- import { checkPoolPrices, checkPoolsLiquidity } from '../../../tests/utils';
8
- import { BI_POWS } from '../../bigint-constants';
9
- import { Infusion } from './infusion';
10
- import { Tokens } from '../../../tests/constants-e2e';
11
- import { Interface, Result } from '@ethersproject/abi';
12
- import infusionPairABI from '../../abi/infusion/InfusionPair.json';
13
-
14
- const amounts18 = [0n, BI_POWS[18], 2000000000000000000n];
15
- const amounts6 = [0n, BI_POWS[6], 2000000n];
16
-
17
- function getReaderCalldata(
18
- exchangeAddress: string,
19
- readerIface: Interface,
20
- amounts: bigint[],
21
- funcName: string,
22
- tokenIn: string,
23
- ) {
24
- return amounts.map(amount => ({
25
- target: exchangeAddress,
26
- callData: readerIface.encodeFunctionData(funcName, [amount, tokenIn]),
27
- }));
28
- }
29
-
30
- function decodeReaderResult(
31
- results: Result,
32
- readerIface: Interface,
33
- funcName: string,
34
- ) {
35
- return results.map(result => {
36
- const parsed = readerIface.decodeFunctionResult(funcName, result);
37
- return BigInt(parsed[0]._hex);
38
- });
39
- }
40
-
41
- const constructCheckOnChainPricing =
42
- (dexHelper: DummyDexHelper) =>
43
- async (
44
- infusion: Infusion,
45
- funcName: string,
46
- blockNumber: number,
47
- prices: bigint[],
48
- exchangeAddress: string,
49
- tokenIn: string,
50
- amounts: bigint[],
51
- ) => {
52
- const readerIface = new Interface(infusionPairABI as any);
53
-
54
- const readerCallData = getReaderCalldata(
55
- exchangeAddress,
56
- readerIface,
57
- amounts.slice(1),
58
- funcName,
59
- tokenIn,
60
- );
61
-
62
- const readerResult = (
63
- await dexHelper.multiContract.methods
64
- .aggregate(readerCallData)
65
- .call({}, blockNumber)
66
- ).returnData;
67
- const expectedPrices = [0n].concat(
68
- decodeReaderResult(readerResult, readerIface, funcName),
69
- );
70
-
71
- console.log('ON-CHAIN PRICES: ', expectedPrices);
72
-
73
- expect(prices.map(p => p.toString())).toEqual(
74
- expectedPrices.map(p => p.toString()),
75
- );
76
- };
77
-
78
- describe('Infusion integration tests', () => {
79
- describe('Base', () => {
80
- const network = Network.BASE;
81
- const dexHelper = new DummyDexHelper(network);
82
- const checkOnChainPricing = constructCheckOnChainPricing(dexHelper);
83
-
84
- describe('Infusion', () => {
85
- const dexKey = 'Infusion';
86
- const infusion = new Infusion(network, dexKey, dexHelper);
87
-
88
- describe('UniswapV2 like pool', function () {
89
- const TokenASymbol = 'USDC';
90
- const tokenA = Tokens[network][TokenASymbol];
91
- const TokenBSymbol = 'WETH';
92
- const tokenB = Tokens[network][TokenBSymbol];
93
-
94
- const amounts = amounts18;
95
-
96
- it('getPoolIdentifiers and getPricesVolume SELL', async function () {
97
- const blocknumber = await dexHelper.web3Provider.eth.getBlockNumber();
98
- const pools = await infusion.getPoolIdentifiers(
99
- tokenA,
100
- tokenB,
101
- SwapSide.SELL,
102
- blocknumber,
103
- );
104
- console.log(
105
- `${TokenASymbol} <> ${TokenBSymbol} Pool Identifiers: `,
106
- pools,
107
- );
108
-
109
- expect(pools.length).toBeGreaterThan(0);
110
-
111
- const poolPrices = await infusion.getPricesVolume(
112
- tokenA,
113
- tokenB,
114
- amounts,
115
- SwapSide.SELL,
116
- blocknumber,
117
- pools,
118
- );
119
- console.log(
120
- `${TokenASymbol} <> ${TokenBSymbol} Pool Prices: `,
121
- poolPrices,
122
- );
123
-
124
- expect(poolPrices).not.toBeNull();
125
- checkPoolPrices(poolPrices!, amounts, SwapSide.SELL, dexKey);
126
-
127
- // Check if onchain pricing equals to calculated ones
128
-
129
- for (const poolPrice of poolPrices || []) {
130
- await checkOnChainPricing(
131
- infusion,
132
- 'getAmountOut',
133
- blocknumber,
134
- poolPrice.prices,
135
- poolPrice.poolAddresses![0],
136
- tokenA.address,
137
- amounts,
138
- );
139
- }
140
- });
141
-
142
- it('getTopPoolsForToken', async function () {
143
- const dexHelper = new DummyDexHelper(Network.BASE);
144
- const infusion = new Infusion(Network.BASE, dexKey, dexHelper);
145
-
146
- const poolLiquidity = await infusion.getTopPoolsForToken(
147
- '0x4200000000000000000000000000000000000006',
148
- 10,
149
- );
150
- console.log('WETH Top Pools:', poolLiquidity);
151
-
152
- checkPoolsLiquidity(
153
- poolLiquidity,
154
- '0x4200000000000000000000000000000000000006',
155
- dexKey,
156
- );
157
- });
158
- });
159
-
160
- describe('Curve like stable pool', function () {
161
- const TokenASymbol = 'USDbC';
162
- const tokenA = Tokens[network][TokenASymbol];
163
- const TokenBSymbol = 'USDC';
164
- const tokenB = Tokens[network][TokenBSymbol];
165
-
166
- const amounts = amounts6;
167
-
168
- it('getPoolIdentifiers and getPricesVolume SELL', async function () {
169
- const blocknumber = await dexHelper.web3Provider.eth.getBlockNumber();
170
- const pools = await infusion.getPoolIdentifiers(
171
- tokenA,
172
- tokenB,
173
- SwapSide.SELL,
174
- blocknumber,
175
- );
176
- console.log(
177
- `${TokenASymbol} <> ${TokenBSymbol} Pool Identifiers: `,
178
- pools,
179
- );
180
-
181
- expect(pools.length).toBeGreaterThan(0);
182
-
183
- const poolPrices = await infusion.getPricesVolume(
184
- tokenA,
185
- tokenB,
186
- amounts,
187
- SwapSide.SELL,
188
- blocknumber,
189
- pools,
190
- );
191
- console.log(
192
- `${TokenASymbol} <> ${TokenBSymbol} Pool Prices: `,
193
- poolPrices,
194
- );
195
-
196
- expect(poolPrices).not.toBeNull();
197
- checkPoolPrices(poolPrices!, amounts, SwapSide.SELL, dexKey);
198
-
199
- // Check if onchain pricing equals to calculated ones
200
- for (const poolPrice of poolPrices || []) {
201
- await checkOnChainPricing(
202
- infusion,
203
- 'getAmountOut',
204
- blocknumber,
205
- poolPrice.prices,
206
- poolPrice.poolAddresses![0],
207
- tokenA.address,
208
- amounts,
209
- );
210
- }
211
- });
212
-
213
- it('getTopPoolsForToken', async function () {
214
- const dexHelper = new DummyDexHelper(Network.BASE);
215
- const infusion = new Infusion(Network.BASE, dexKey, dexHelper);
216
-
217
- const poolLiquidity = await infusion.getTopPoolsForToken(
218
- '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913',
219
- 10,
220
- );
221
- console.log('WETH Top Pools:', poolLiquidity);
222
-
223
- checkPoolsLiquidity(
224
- poolLiquidity,
225
- '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913',
226
- dexKey,
227
- );
228
- });
229
- });
230
- });
231
- });
232
- });
@@ -1,91 +0,0 @@
1
- import { BI_POWS } from '../../bigint-constants';
2
- import { RESERVE_LIMIT } from '../uniswap-v2/uniswap-v2';
3
- import { InfusionPoolOrderedParams } from './types';
4
-
5
- const e18 = BI_POWS[18];
6
-
7
- function _k(
8
- x: bigint,
9
- y: bigint,
10
- decimals0: bigint,
11
- decimals1: bigint,
12
- ): bigint {
13
- const _x = (x * e18) / decimals0;
14
- const _y = (y * e18) / decimals1;
15
- const _a = (_x * _y) / e18;
16
- const _b = (_x * _x) / e18 + (_y * _y) / e18;
17
- // x3y+y3x >= k
18
- return (_a * _b) / e18;
19
- }
20
-
21
- function _f(x0: bigint, y: bigint): bigint {
22
- return (
23
- (x0 * ((((y * y) / e18) * y) / e18)) / e18 +
24
- (((((x0 * x0) / e18) * x0) / e18) * y) / e18
25
- );
26
- }
27
-
28
- function _d(x0: bigint, y: bigint): bigint {
29
- return (3n * x0 * ((y * y) / e18)) / e18 + (((x0 * x0) / e18) * x0) / e18;
30
- }
31
-
32
- function _getY(x0: bigint, xy: bigint, y: bigint): bigint {
33
- for (let i = 0; i < 255; i++) {
34
- const yPrev = y;
35
- const k = _f(x0, y);
36
- if (k < xy) {
37
- const dy = ((xy - k) * e18) / _d(x0, y);
38
- y = y + dy;
39
- } else {
40
- const dy = ((k - xy) * e18) / _d(x0, y);
41
- y = y - dy;
42
- }
43
- if (_closeTo(y, yPrev, 1n)) {
44
- break;
45
- }
46
- }
47
- return y;
48
- }
49
-
50
- function _closeTo(a: bigint, b: bigint, target: bigint) {
51
- if (a > b) {
52
- if (a - b <= target) {
53
- return true;
54
- }
55
- } else {
56
- if (b - a <= target) {
57
- return true;
58
- }
59
- }
60
- return false;
61
- }
62
-
63
- export class InfusionStablePool {
64
- static async getSellPrice(
65
- priceParams: InfusionPoolOrderedParams,
66
- srcAmount: bigint,
67
- feeFactor: number,
68
- ): Promise<bigint> {
69
- const { reservesIn, reservesOut, decimalsIn, decimalsOut, fee } =
70
- priceParams;
71
-
72
- // FIXME: some dexes use uint112 others use uint256
73
- if (BigInt(reservesIn) + srcAmount > RESERVE_LIMIT) {
74
- return 0n;
75
- }
76
-
77
- const amountIn = srcAmount - (srcAmount * BigInt(fee)) / BigInt(feeFactor);
78
-
79
- const reservesInN = BigInt(reservesIn);
80
- const reservesOutN = BigInt(reservesOut);
81
- const decimalsInN = 10n ** BigInt(decimalsIn);
82
- const decimalsOutN = 10n ** BigInt(decimalsOut);
83
-
84
- const xy = _k(reservesInN, reservesOutN, decimalsInN, decimalsOutN);
85
- const reserveA = (reservesInN * e18) / decimalsInN;
86
- const reserveB = (reservesOutN * e18) / decimalsOutN;
87
- const amountInNorm = (amountIn * e18) / decimalsInN;
88
- const y = reserveB - _getY(amountInNorm + reserveA, xy, reserveB);
89
- return (y * decimalsOutN) / e18;
90
- }
91
- }