@paraswap/dex-lib 2.50.8 → 2.50.9

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 (160) hide show
  1. package/build/abi/Redstone.json +739 -0
  2. package/build/abi/angle/stagToken.json +963 -0
  3. package/build/abi/angle-transmuter/MorphoOracle.json +193 -0
  4. package/build/abi/angle-transmuter/MorphoVault.json +2506 -0
  5. package/build/abi/angle-transmuter/Pyth.json +1534 -0
  6. package/build/abi/angle-transmuter/Transmuter.json +1711 -0
  7. package/build/abi/pharaoh/PharaohPool.abi.json +1582 -0
  8. package/build/abi/smardex/smardex-factory.json +185 -0
  9. package/build/abi/smardex/smardex-pool.json +578 -0
  10. package/build/abi/smardex/smardex-router.json +648 -0
  11. package/build/abi/trader-joe-v2_1/FactoryABI.json +1208 -0
  12. package/build/abi/trader-joe-v2_1/PairABI.json +1493 -0
  13. package/build/abi/trader-joe-v2_1/RouterABI.json +1489 -0
  14. package/build/abi/trader-joe-v2_1/StateMulticall.json +193 -0
  15. package/build/abi/wombat/pool.json +1289 -0
  16. package/build/config.js +8 -7
  17. package/build/config.js.map +1 -1
  18. package/build/dex/aave-v2/tokens-avalanche.json +44 -0
  19. package/build/dex/aave-v2/tokens-mainnet.json +188 -0
  20. package/build/dex/aave-v2/tokens-polygon.json +44 -0
  21. package/build/dex/angle-staked-stable/angle-staked-stable-pool.d.ts +56 -0
  22. package/build/dex/angle-staked-stable/angle-staked-stable-pool.js +197 -0
  23. package/build/dex/angle-staked-stable/angle-staked-stable-pool.js.map +1 -0
  24. package/build/dex/angle-staked-stable/angle-staked-stable.d.ts +48 -0
  25. package/build/dex/angle-staked-stable/angle-staked-stable.js +222 -0
  26. package/build/dex/angle-staked-stable/angle-staked-stable.js.map +1 -0
  27. package/build/dex/angle-staked-stable/config.d.ts +4 -0
  28. package/build/dex/angle-staked-stable/config.js +139 -0
  29. package/build/dex/angle-staked-stable/config.js.map +1 -0
  30. package/build/dex/angle-staked-stable/types.d.ts +15 -0
  31. package/build/dex/angle-staked-stable/types.js +3 -0
  32. package/build/dex/angle-staked-stable/types.js.map +1 -0
  33. package/build/dex/angle-transmuter/angle-transmuter-pool.d.ts +61 -0
  34. package/build/dex/angle-transmuter/angle-transmuter-pool.js +415 -0
  35. package/build/dex/angle-transmuter/angle-transmuter-pool.js.map +1 -0
  36. package/build/dex/angle-transmuter/angle-transmuter.d.ts +59 -0
  37. package/build/dex/angle-transmuter/angle-transmuter.js +262 -0
  38. package/build/dex/angle-transmuter/angle-transmuter.js.map +1 -0
  39. package/build/dex/angle-transmuter/backedOracle.d.ts +19 -0
  40. package/build/dex/angle-transmuter/backedOracle.js +56 -0
  41. package/build/dex/angle-transmuter/backedOracle.js.map +1 -0
  42. package/build/dex/angle-transmuter/config.d.ts +4 -0
  43. package/build/dex/angle-transmuter/config.js +30 -0
  44. package/build/dex/angle-transmuter/config.js.map +1 -0
  45. package/build/dex/angle-transmuter/constants.d.ts +77 -0
  46. package/build/dex/angle-transmuter/constants.js +94 -0
  47. package/build/dex/angle-transmuter/constants.js.map +1 -0
  48. package/build/dex/angle-transmuter/morphoOracle.d.ts +42 -0
  49. package/build/dex/angle-transmuter/morphoOracle.js +179 -0
  50. package/build/dex/angle-transmuter/morphoOracle.js.map +1 -0
  51. package/build/dex/angle-transmuter/morphoVault.d.ts +19 -0
  52. package/build/dex/angle-transmuter/morphoVault.js +78 -0
  53. package/build/dex/angle-transmuter/morphoVault.js.map +1 -0
  54. package/build/dex/angle-transmuter/pyth.d.ts +19 -0
  55. package/build/dex/angle-transmuter/pyth.js +70 -0
  56. package/build/dex/angle-transmuter/pyth.js.map +1 -0
  57. package/build/dex/angle-transmuter/redstone.d.ts +20 -0
  58. package/build/dex/angle-transmuter/redstone.js +73 -0
  59. package/build/dex/angle-transmuter/redstone.js.map +1 -0
  60. package/build/dex/angle-transmuter/transmuter.d.ts +52 -0
  61. package/build/dex/angle-transmuter/transmuter.js +374 -0
  62. package/build/dex/angle-transmuter/transmuter.js.map +1 -0
  63. package/build/dex/angle-transmuter/types.d.ts +188 -0
  64. package/build/dex/angle-transmuter/types.js +33 -0
  65. package/build/dex/angle-transmuter/types.js.map +1 -0
  66. package/build/dex/angle-transmuter/utils.d.ts +9 -0
  67. package/build/dex/angle-transmuter/utils.js +252 -0
  68. package/build/dex/angle-transmuter/utils.js.map +1 -0
  69. package/build/dex/index.js +2 -0
  70. package/build/dex/index.js.map +1 -1
  71. package/build/dex/smardex/subgraph-queries.d.ts +1 -0
  72. package/build/dex/smardex/subgraph-queries.js +17 -0
  73. package/build/dex/smardex/subgraph-queries.js.map +1 -0
  74. package/build/dex/smardex/usd-reserves.d.ts +23 -0
  75. package/build/dex/smardex/usd-reserves.js +86 -0
  76. package/build/dex/smardex/usd-reserves.js.map +1 -0
  77. package/build/dex/trader-joe-v2-1-2/config.d.ts +4 -0
  78. package/build/dex/trader-joe-v2-1-2/config.js +47 -0
  79. package/build/dex/trader-joe-v2-1-2/config.js.map +1 -0
  80. package/build/dex/trader-joe-v2-1-2/constants.d.ts +20 -0
  81. package/build/dex/trader-joe-v2-1-2/constants.js +22 -0
  82. package/build/dex/trader-joe-v2-1-2/constants.js.map +1 -0
  83. package/build/dex/trader-joe-v2-1-2/math/index.d.ts +37 -0
  84. package/build/dex/trader-joe-v2-1-2/math/index.js +291 -0
  85. package/build/dex/trader-joe-v2-1-2/math/index.js.map +1 -0
  86. package/build/dex/trader-joe-v2-1-2/trader-joe-v2-1-2-pool.d.ts +60 -0
  87. package/build/dex/trader-joe-v2-1-2/trader-joe-v2-1-2-pool.js +248 -0
  88. package/build/dex/trader-joe-v2-1-2/trader-joe-v2-1-2-pool.js.map +1 -0
  89. package/build/dex/trader-joe-v2-1-2/trader-joe-v2-1-2.d.ts +53 -0
  90. package/build/dex/trader-joe-v2-1-2/trader-joe-v2-1-2.js +307 -0
  91. package/build/dex/trader-joe-v2-1-2/trader-joe-v2-1-2.js.map +1 -0
  92. package/build/dex/trader-joe-v2-1-2/types.d.ts +82 -0
  93. package/build/dex/trader-joe-v2-1-2/types.js +9 -0
  94. package/build/dex/trader-joe-v2-1-2/types.js.map +1 -0
  95. package/build/dex/trader-joe-v2_1/config.d.ts +4 -0
  96. package/build/dex/trader-joe-v2_1/config.js +47 -0
  97. package/build/dex/trader-joe-v2_1/config.js.map +1 -0
  98. package/build/dex/trader-joe-v2_1/constants.d.ts +20 -0
  99. package/build/dex/trader-joe-v2_1/constants.js +22 -0
  100. package/build/dex/trader-joe-v2_1/constants.js.map +1 -0
  101. package/build/dex/trader-joe-v2_1/math/index.d.ts +37 -0
  102. package/build/dex/trader-joe-v2_1/math/index.js +291 -0
  103. package/build/dex/trader-joe-v2_1/math/index.js.map +1 -0
  104. package/build/dex/trader-joe-v2_1/trader-joe-v2.1.d.ts +0 -0
  105. package/build/dex/trader-joe-v2_1/trader-joe-v2.1.js +384 -0
  106. package/build/dex/trader-joe-v2_1/trader-joe-v2.1.js.map +1 -0
  107. package/build/dex/trader-joe-v2_1/trader-joe-v2_1-pool.d.ts +60 -0
  108. package/build/dex/trader-joe-v2_1/trader-joe-v2_1-pool.js +247 -0
  109. package/build/dex/trader-joe-v2_1/trader-joe-v2_1-pool.js.map +1 -0
  110. package/build/dex/trader-joe-v2_1/trader-joe-v2_1.d.ts +53 -0
  111. package/build/dex/trader-joe-v2_1/trader-joe-v2_1.js +307 -0
  112. package/build/dex/trader-joe-v2_1/trader-joe-v2_1.js.map +1 -0
  113. package/build/dex/trader-joe-v2_1/types.d.ts +82 -0
  114. package/build/dex/trader-joe-v2_1/types.js +9 -0
  115. package/build/dex/trader-joe-v2_1/types.js.map +1 -0
  116. package/build/dex/wombat/wombat-pool-poller.d.ts +22 -0
  117. package/build/dex/wombat/wombat-pool-poller.js +164 -0
  118. package/build/dex/wombat/wombat-pool-poller.js.map +1 -0
  119. package/build/dex-helper/Cache.d.ts +31 -0
  120. package/build/dex-helper/Cache.js +106 -0
  121. package/build/dex-helper/Cache.js.map +1 -0
  122. package/build/dex-helper/RedisBatcher.d.ts +20 -0
  123. package/build/dex-helper/RedisBatcher.js +75 -0
  124. package/build/dex-helper/RedisBatcher.js.map +1 -0
  125. package/build/dex-helper/RedisWrapper.d.ts +37 -0
  126. package/build/dex-helper/RedisWrapper.js +165 -0
  127. package/build/dex-helper/RedisWrapper.js.map +1 -0
  128. package/package.json +1 -1
  129. package/src/abi/angle/stagToken.json +963 -0
  130. package/src/config.ts +8 -7
  131. package/src/dex/angle-staked-stable/angle-staked-stable-e2e.test.ts +146 -0
  132. package/src/dex/angle-staked-stable/angle-staked-stable-events.test.ts +95 -0
  133. package/src/dex/angle-staked-stable/angle-staked-stable-integration.test.ts +476 -0
  134. package/src/dex/angle-staked-stable/angle-staked-stable-pool.ts +325 -0
  135. package/src/dex/angle-staked-stable/angle-staked-stable.ts +312 -0
  136. package/src/dex/angle-staked-stable/config.ts +139 -0
  137. package/src/dex/angle-staked-stable/types.ts +16 -0
  138. package/src/dex/index.ts +2 -0
  139. package/tests/constants-e2e.ts +112 -1
  140. package/build/dex/sdai/config.d.ts +0 -11
  141. package/build/dex/sdai/config.js +0 -21
  142. package/build/dex/sdai/config.js.map +0 -1
  143. package/build/dex/sdai/constants.d.ts +0 -2
  144. package/build/dex/sdai/constants.js +0 -6
  145. package/build/dex/sdai/constants.js.map +0 -1
  146. package/build/dex/sdai/scripts/validate-state.d.ts +0 -1
  147. package/build/dex/sdai/scripts/validate-state.js +0 -102
  148. package/build/dex/sdai/scripts/validate-state.js.map +0 -1
  149. package/build/dex/sdai/sdai-pool.d.ts +0 -16
  150. package/build/dex/sdai/sdai-pool.js +0 -85
  151. package/build/dex/sdai/sdai-pool.js.map +0 -1
  152. package/build/dex/sdai/sdai.d.ts +0 -51
  153. package/build/dex/sdai/sdai.js +0 -172
  154. package/build/dex/sdai/sdai.js.map +0 -1
  155. package/build/dex/sdai/types.d.ts +0 -21
  156. package/build/dex/sdai/types.js +0 -11
  157. package/build/dex/sdai/types.js.map +0 -1
  158. package/build/dex/sdai/utils.d.ts +0 -4
  159. package/build/dex/sdai/utils.js +0 -39
  160. package/build/dex/sdai/utils.js.map +0 -1
@@ -0,0 +1,139 @@
1
+ import { DexParams } from './types';
2
+ import { DexConfigMap, AdapterMappings } from '../../types';
3
+ import { Network, SwapSide } from '../../constants';
4
+
5
+ export const AngleStakedStableConfig: DexConfigMap<DexParams> = {
6
+ // USDA <-> stUSD
7
+ AngleStakedStableUSD: {
8
+ [Network.ARBITRUM]: {
9
+ agToken: '0x0000206329b97db379d5e1bf586bbdb969c63274',
10
+ stakeToken: '0x0022228a2cc5e7ef0274a7baa600d44da5ab5776',
11
+ },
12
+ [Network.MAINNET]: {
13
+ agToken: '0x0000206329b97db379d5e1bf586bbdb969c63274',
14
+ stakeToken: '0x0022228a2cc5e7ef0274a7baa600d44da5ab5776',
15
+ },
16
+ [Network.OPTIMISM]: {
17
+ agToken: '0x0000206329b97db379d5e1bf586bbdb969c63274',
18
+ stakeToken: '0x0022228a2cc5e7ef0274a7baa600d44da5ab5776',
19
+ },
20
+ [Network.POLYGON]: {
21
+ agToken: '0x0000206329b97db379d5e1bf586bbdb969c63274',
22
+ stakeToken: '0x0022228a2cc5e7ef0274a7baa600d44da5ab5776',
23
+ },
24
+ [Network.BASE]: {
25
+ agToken: '0x0000206329b97db379d5e1bf586bbdb969c63274',
26
+ stakeToken: '0x0022228a2cc5e7ef0274a7baa600d44da5ab5776',
27
+ },
28
+ [Network.BSC]: {
29
+ agToken: '0x0000206329b97db379d5e1bf586bbdb969c63274',
30
+ stakeToken: '0x0022228a2cc5e7ef0274a7baa600d44da5ab5776',
31
+ },
32
+ },
33
+ // EURA <-> stEUR
34
+ AngleStakedStableEUR: {
35
+ [Network.ARBITRUM]: {
36
+ agToken: '0xfa5ed56a203466cbbc2430a43c66b9d8723528e7',
37
+ stakeToken: '0x004626a008b1acdc4c74ab51644093b155e59a23',
38
+ },
39
+ [Network.MAINNET]: {
40
+ agToken: '0x1a7e4e63778b4f12a199c062f3efdd288afcbce8',
41
+ stakeToken: '0x004626a008b1acdc4c74ab51644093b155e59a23',
42
+ },
43
+ [Network.OPTIMISM]: {
44
+ agToken: '0x9485aca5bbbe1667ad97c7fe7c4531a624c8b1ed',
45
+ stakeToken: '0x004626a008b1acdc4c74ab51644093b155e59a23',
46
+ },
47
+ [Network.POLYGON]: {
48
+ agToken: '0xe0b52e49357fd4daf2c15e02058dce6bc0057db4',
49
+ stakeToken: '0x004626a008b1acdc4c74ab51644093b155e59a23',
50
+ },
51
+ },
52
+ };
53
+
54
+ export const Adapters: Record<number, AdapterMappings> = {
55
+ [Network.ARBITRUM]: {
56
+ [SwapSide.SELL]: [
57
+ {
58
+ name: 'ArbitrumAdapter03',
59
+ index: 1,
60
+ },
61
+ ],
62
+ [SwapSide.BUY]: [
63
+ {
64
+ name: 'ArbitrumBuyAdapter',
65
+ index: 10,
66
+ },
67
+ ],
68
+ },
69
+ [Network.MAINNET]: {
70
+ [SwapSide.SELL]: [
71
+ {
72
+ name: 'Adapter06',
73
+ index: 1,
74
+ },
75
+ ],
76
+ [SwapSide.BUY]: [
77
+ {
78
+ name: 'BuyAdapter02',
79
+ index: 4,
80
+ },
81
+ ],
82
+ },
83
+ [Network.OPTIMISM]: {
84
+ [SwapSide.SELL]: [
85
+ {
86
+ name: 'OptimismAdapter02',
87
+ index: 1,
88
+ },
89
+ ],
90
+ [SwapSide.BUY]: [
91
+ {
92
+ name: 'OptimismBuyAdapter',
93
+ index: 6,
94
+ },
95
+ ],
96
+ },
97
+ [Network.BASE]: {
98
+ [SwapSide.SELL]: [
99
+ {
100
+ name: 'BaseAdapter01',
101
+ index: 11,
102
+ },
103
+ ],
104
+ [SwapSide.BUY]: [
105
+ {
106
+ name: 'BaseBuyAdapter',
107
+ index: 7,
108
+ },
109
+ ],
110
+ },
111
+ [Network.POLYGON]: {
112
+ [SwapSide.SELL]: [
113
+ {
114
+ name: 'PolygonAdapter02',
115
+ index: 10,
116
+ },
117
+ ],
118
+ [SwapSide.BUY]: [
119
+ {
120
+ name: 'PolygonBuyAdapter',
121
+ index: 9,
122
+ },
123
+ ],
124
+ },
125
+ [Network.BSC]: {
126
+ [SwapSide.SELL]: [
127
+ {
128
+ name: 'BscAdapter02',
129
+ index: 10,
130
+ },
131
+ ],
132
+ [SwapSide.BUY]: [
133
+ {
134
+ name: 'BscBuyAdapter',
135
+ index: 8,
136
+ },
137
+ ],
138
+ },
139
+ };
@@ -0,0 +1,16 @@
1
+ import { Address } from '../../types';
2
+
3
+ export type PoolState = {
4
+ totalAssets: bigint;
5
+ totalSupply: bigint;
6
+ lastUpdate: bigint;
7
+ rate: bigint;
8
+ paused: boolean;
9
+ };
10
+
11
+ export type AngleStakedStableData = { exchange: Address };
12
+
13
+ export type DexParams = {
14
+ agToken: Address;
15
+ stakeToken: Address;
16
+ };
package/src/dex/index.ts CHANGED
@@ -79,6 +79,7 @@ import { SpiritSwapV3 } from './quickswap/spiritswap-v3';
79
79
  import { TraderJoeV21 } from './trader-joe-v2.1';
80
80
  import { PancakeswapV3 } from './pancakeswap-v3/pancakeswap-v3';
81
81
  import { Algebra } from './algebra/algebra';
82
+ import { AngleStakedStable } from './angle-staked-stable/angle-staked-stable';
82
83
  import { QuickPerps } from './quick-perps/quick-perps';
83
84
  import { NomiswapV2 } from './uniswap-v2/nomiswap-v2';
84
85
  import { Dexalot } from './dexalot/dexalot';
@@ -164,6 +165,7 @@ const Dexes = [
164
165
  MaverickV1,
165
166
  Camelot,
166
167
  SwaapV2,
168
+ AngleStakedStable,
167
169
  QuickPerps,
168
170
  NomiswapV2,
169
171
  SolidlyV3,
@@ -323,6 +323,22 @@ export const Tokens: {
323
323
  address: '0xc411db5f5eb3f7d552f9b8454b2d74097ccde6e3',
324
324
  decimals: 6,
325
325
  },
326
+ EURA: {
327
+ address: '0x1a7e4e63778b4f12a199c062f3efdd288afcbce8',
328
+ decimals: 18,
329
+ },
330
+ stEUR: {
331
+ address: '0x004626a008b1acdc4c74ab51644093b155e59a23',
332
+ decimals: 18,
333
+ },
334
+ USDA: {
335
+ address: '0x0000206329b97DB379d5E1Bf586BbDB969C63274',
336
+ decimals: 18,
337
+ },
338
+ stUSD: {
339
+ address: '0x0022228a2cc5E7eF0274A7Baa600d44da5aB5776',
340
+ decimals: 18,
341
+ },
326
342
  GHO: {
327
343
  address: '0x40d16fc0246ad3160ccc09b8d0d3a2cd28ae6c2f',
328
344
  decimals: 18,
@@ -489,6 +505,22 @@ export const Tokens: {
489
505
  address: '0xa3fa99a148fa48d14ed51d610c367c61876997f1',
490
506
  decimals: 18,
491
507
  },
508
+ EURA: {
509
+ address: '0xe0b52e49357fd4daf2c15e02058dce6bc0057db4',
510
+ decimals: 18,
511
+ },
512
+ stEUR: {
513
+ address: '0x004626a008b1acdc4c74ab51644093b155e59a23',
514
+ decimals: 18,
515
+ },
516
+ USDA: {
517
+ address: '0x0000206329b97DB379d5E1Bf586BbDB969C63274',
518
+ decimals: 18,
519
+ },
520
+ stUSD: {
521
+ address: '0x0022228a2cc5E7eF0274A7Baa600d44da5aB5776',
522
+ decimals: 18,
523
+ },
492
524
  BUSD: {
493
525
  address: '0x9C9e5fD8bbc25984B178FdCE6117Defa39d2db39',
494
526
  decimals: 18,
@@ -687,6 +719,18 @@ export const Tokens: {
687
719
  address: '0xFdc66A08B0d0Dc44c17bbd471B88f49F50CdD20F',
688
720
  decimals: 18,
689
721
  },
722
+ EURA: {
723
+ address: '0x12f31B73D812C6Bb0d735a218c086d44D5fe5f89',
724
+ decimals: 18,
725
+ },
726
+ USDA: {
727
+ address: '0x0000206329b97DB379d5E1Bf586BbDB969C63274',
728
+ decimals: 18,
729
+ },
730
+ stUSD: {
731
+ address: '0x0022228a2cc5E7eF0274A7Baa600d44da5aB5776',
732
+ decimals: 18,
733
+ },
690
734
  },
691
735
  [Network.AVALANCHE]: {
692
736
  PHAR: {
@@ -937,6 +981,22 @@ export const Tokens: {
937
981
  address: '0x6bB7A17AcC227fd1F6781D1EEDEAE01B42047eE0',
938
982
  decimals: 18,
939
983
  },
984
+ EURA: {
985
+ address: '0xfa5ed56a203466cbbc2430a43c66b9d8723528e7',
986
+ decimals: 18,
987
+ },
988
+ stEUR: {
989
+ address: '0x004626a008b1acdc4c74ab51644093b155e59a23',
990
+ decimals: 18,
991
+ },
992
+ USDA: {
993
+ address: '0x0000206329b97DB379d5E1Bf586BbDB969C63274',
994
+ decimals: 18,
995
+ },
996
+ stUSD: {
997
+ address: '0x0022228a2cc5E7eF0274A7Baa600d44da5aB5776',
998
+ decimals: 18,
999
+ },
940
1000
  GRAIL: {
941
1001
  address: '0x3d9907f9a368ad0a51be60f7da3b97cf940982d8',
942
1002
  decimals: 18,
@@ -1008,6 +1068,22 @@ export const Tokens: {
1008
1068
  address: '0x68f180fcCe6836688e9084f035309E29Bf0A2095',
1009
1069
  decimals: 8,
1010
1070
  },
1071
+ EURA: {
1072
+ address: '0x9485aca5bbbe1667ad97c7fe7c4531a624c8b1ed',
1073
+ decimals: 18,
1074
+ },
1075
+ stEUR: {
1076
+ address: '0x004626a008b1acdc4c74ab51644093b155e59a23',
1077
+ decimals: 18,
1078
+ },
1079
+ USDA: {
1080
+ address: '0x0000206329b97DB379d5E1Bf586BbDB969C63274',
1081
+ decimals: 18,
1082
+ },
1083
+ stUSD: {
1084
+ address: '0x0022228a2cc5E7eF0274A7Baa600d44da5aB5776',
1085
+ decimals: 18,
1086
+ },
1011
1087
  frxETH: {
1012
1088
  address: '0x6806411765Af15Bddd26f8f544A34cC40cb9838B',
1013
1089
  decimals: 18,
@@ -1076,6 +1152,18 @@ export const Tokens: {
1076
1152
  address: '0xFd4330b0312fdEEC6d4225075b82E00493FF2e3f',
1077
1153
  decimals: 18,
1078
1154
  },
1155
+ EURA: {
1156
+ address: '0xA61BeB4A3d02decb01039e378237032B351125B4',
1157
+ decimals: 18,
1158
+ },
1159
+ USDA: {
1160
+ address: '0x0000206329b97DB379d5E1Bf586BbDB969C63274',
1161
+ decimals: 18,
1162
+ },
1163
+ stUSD: {
1164
+ address: '0x0022228a2cc5E7eF0274A7Baa600d44da5aB5776',
1165
+ decimals: 18,
1166
+ },
1079
1167
  ETH: { address: ETHER_ADDRESS, decimals: 18 },
1080
1168
  },
1081
1169
  };
@@ -1128,7 +1216,7 @@ export const Holders: {
1128
1216
  EURS: '0xC1056Adeb61a01964Ea265cA95EffB7016f9Ed78',
1129
1217
  EURT: '0x6914FC70fAC4caB20a8922E900C4BA57fEECf8E1',
1130
1218
  CRV: '0x7a16fF8270133F063aAb6C9977183D9e72835428',
1131
- jEUR: '0x4f0CF2F63913524b85c1126AB7eE7957857f3482',
1219
+ jEUR: '0x937Df4e3d6dB229A10ff0098ab3A1bCC40C33ea4',
1132
1220
  UST: '0xf16e9b0d03470827a95cdfd0cb8a8a3b46969b91',
1133
1221
  SAITAMA: '0x763d5d93f27615aac852b70549f5877b92193864',
1134
1222
  aETH: '0xc03c4476fbe25138bf724fa1b95551c6e6b8fd2c',
@@ -1144,6 +1232,10 @@ export const Holders: {
1144
1232
  aEthWETH: '0x645C4c0c95C1Aa6EF25d12f4a25038cA9b0C6Cc7',
1145
1233
  dUSDC: '0x2FC2F705110A7F46Ce85F701d7217EF1018f01A3',
1146
1234
  PSP: '0xE5E5440a1CE69C5cf67BFFA74d185e57c31b43E5',
1235
+ EURA: '0xa116f421ff82a9704428259fd8cc63347127b777',
1236
+ stEUR: '0xdC7Aa225964267c7E0EfB35f4931426209E90312',
1237
+ USDA: '0x2686bC6A56D205010637CE1DF124b20Cb19E4054',
1238
+ stUSD: '0x4e83c0a323b68E3Bc7CC8a4E35326Fd0544A291E',
1147
1239
  crvUSD: '0xA920De414eA4Ab66b97dA1bFE9e6EcA7d4219635',
1148
1240
  GHO: '0x844Dc85EdD8492A56228D293cfEbb823EF3E10EC',
1149
1241
  wibBTC: '0xFbdCA68601f835b27790D98bbb8eC7f05FDEaA9B',
@@ -1189,6 +1281,10 @@ export const Holders: {
1189
1281
  amUSDC: '0x6e7f19cd23049c7118e14470e2bf85d2e26ee0ae',
1190
1282
  MAI: '0x9a8cf02f3e56c664ce75e395d0e4f3dc3dafe138',
1191
1283
  SDEX: '0xB0470cF15B22a6A32c49a7C20E3821B944A76058',
1284
+ EURA: '0x9A760aa1Fe631fD9aC0Aee0965736121c7c132cc',
1285
+ stEUR: '0xA9DdD91249DFdd450E81E1c56Ab60E1A62651701',
1286
+ USDA: '0x741383AbD73891b40822A069f14d6fc5b5685020',
1287
+ stUSD: '0xA9DdD91249DFdd450E81E1c56Ab60E1A62651701',
1192
1288
  crvUSD: '0x9D3a22A71C2bddFEF006f1c207C06B0A5f42f95F',
1193
1289
  },
1194
1290
  [Network.FANTOM]: {
@@ -1239,6 +1335,9 @@ export const Holders: {
1239
1335
  USDFI: '0x2E00D722e091836B39Db3e4dcE6eE51c90c5B221',
1240
1336
  SDEX: '0xB0470cF15B22a6A32c49a7C20E3821B944A76058',
1241
1337
  BNBx: '0xFF4606bd3884554CDbDabd9B6e25E2faD4f6fc54',
1338
+ EURA: '0x4A5362ef534FFB27510E4E4C9A215BB5436377C2',
1339
+ USDA: '0x230c1f68aBE6033Cba3Fe0D2C0D7097e9923C3bC',
1340
+ stUSD: '0x0022228a2cc5E7eF0274A7Baa600d44da5aB5776',
1242
1341
  },
1243
1342
  [Network.AVALANCHE]: {
1244
1343
  AVAX: '0xD6216fC19DB775Df9774a6E33526131dA7D19a2c',
@@ -1302,6 +1401,10 @@ export const Holders: {
1302
1401
  RDNT: '0x62383739d68dd0f844103db8dfb05a7eded5bbe6',
1303
1402
  SDEX: '0xb0470cf15b22a6a32c49a7c20e3821b944a76058',
1304
1403
  wstETH: '0x916792f7734089470de27297903bed8a4630b26d',
1404
+ EURA: '0x6dd7b830896b56812aa667bdd14b71c8b3252f8e',
1405
+ stEUR: '0xE588611e7A2392507879E3be80531654b85C16aA',
1406
+ USDA: '0xa86ff337db9107b54862d30d1a598f8be847b05e',
1407
+ stUSD: '0xa9ddd91249dfdd450e81e1c56ab60e1a62651701',
1305
1408
  crvUSD: '0x171c53d55b1bcb725f660677d9e8bad7fd084282',
1306
1409
  },
1307
1410
  [Network.OPTIMISM]: {
@@ -1321,6 +1424,10 @@ export const Holders: {
1321
1424
  rETH: '0x4c2e69e58b14de9afedfb94319519ce34e087283',
1322
1425
  WBTC: '0xb9c8f0d3254007ee4b98970b94544e473cd610ec',
1323
1426
  frxETH: '0x4d4edf8291d169f975b99914b6ab3326abb45938',
1427
+ EURA: '0xC18dAC166eDa9538933258d21A272C1775C19c73',
1428
+ stEUR: '0xA9DdD91249DFdd450E81E1c56Ab60E1A62651701',
1429
+ USDA: '0xC18dAC166eDa9538933258d21A272C1775C19c73',
1430
+ stUSD: '0xC98b0729695A25152B8D5b6B95709070605A7F60',
1324
1431
  crvUSD: '0xD1A992417a0ABFFa632Cbde4DA9F5DcF85CAa858',
1325
1432
  },
1326
1433
  [Network.ZKEVM]: {
@@ -1341,6 +1448,10 @@ export const Holders: {
1341
1448
  BAL: '0x854b004700885a61107b458f11ecc169a019b764',
1342
1449
  GOLD: '0x1374c25b3710758c326ee0c70ec48b595d5ccf8c',
1343
1450
  SDEX: '0xa5d378c05192e3f1f365d6298921879c4d51c5a3',
1451
+ EURA: '0x5b5614b9fffab7c751799eb12d5cb9165c8c40ad',
1452
+ stEUR: '0xA9DdD91249DFdd450E81E1c56Ab60E1A62651701',
1453
+ USDA: '0x177772af6669aca61c23d325ab4213e8ba56c79d',
1454
+ stUSD: '0x8deeffb6047b8ee91b09334eb2a4ca120f43f596',
1344
1455
  ALB: '0x365c6d588e8611125de3bea5b9280c304fa54113',
1345
1456
  },
1346
1457
  };
@@ -1,11 +0,0 @@
1
- import { SDaiParams } from './types';
2
- import { DexConfigMap } from '../../types';
3
- export declare const SDaiConfig: DexConfigMap<SDaiParams>;
4
- export declare const Adapters: {
5
- [chainId: number]: {
6
- [side: string]: {
7
- name: string;
8
- index: number;
9
- }[];
10
- };
11
- };
@@ -1,21 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Adapters = exports.SDaiConfig = void 0;
4
- const constants_1 = require("../../constants");
5
- const core_1 = require("@paraswap/core");
6
- exports.SDaiConfig = {
7
- sdai: {
8
- [constants_1.Network.MAINNET]: {
9
- sdaiAddress: '0x83F20F44975D03b1b09e64809B757c47f942BEeA',
10
- daiAddress: '0x6B175474E89094C44Da98b954EedeAC495271d0F',
11
- potAddress: '0x197E90f9FAD81970bA7976f33CbD77088E5D7cf7',
12
- },
13
- },
14
- };
15
- exports.Adapters = {
16
- [constants_1.Network.MAINNET]: {
17
- [core_1.SwapSide.SELL]: [{ name: 'Adapter06', index: 1 }],
18
- [core_1.SwapSide.BUY]: [{ name: 'BuyAdapter02', index: 4 }],
19
- },
20
- };
21
- //# sourceMappingURL=config.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/dex/sdai/config.ts"],"names":[],"mappings":";;;AAEA,+CAA0C;AAC1C,yCAA0C;AAE7B,QAAA,UAAU,GAA6B;IAClD,IAAI,EAAE;QACJ,CAAC,mBAAO,CAAC,OAAO,CAAC,EAAE;YACjB,WAAW,EAAE,4CAA4C;YACzD,UAAU,EAAE,4CAA4C;YACxD,UAAU,EAAE,4CAA4C;SACzD;KACF;CACF,CAAC;AAEW,QAAA,QAAQ,GAIjB;IACF,CAAC,mBAAO,CAAC,OAAO,CAAC,EAAE;QACjB,CAAC,eAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;QAClD,CAAC,eAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;KACrD;CACF,CAAC"}
@@ -1,2 +0,0 @@
1
- export declare const SDAI_DEPOSIT_GAS_COST = 165000;
2
- export declare const SDAI_REDEEM_GAS_COST = 90000;
@@ -1,6 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.SDAI_REDEEM_GAS_COST = exports.SDAI_DEPOSIT_GAS_COST = void 0;
4
- exports.SDAI_DEPOSIT_GAS_COST = 165000;
5
- exports.SDAI_REDEEM_GAS_COST = 90000;
6
- //# sourceMappingURL=constants.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/dex/sdai/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,qBAAqB,GAAG,MAAO,CAAC;AAChC,QAAA,oBAAoB,GAAG,KAAM,CAAC"}
@@ -1 +0,0 @@
1
- export {};
@@ -1,102 +0,0 @@
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
- /* eslint-disable no-console */
7
- const dotenv_1 = __importDefault(require("dotenv"));
8
- dotenv_1.default.config();
9
- const constants_1 = require("../../../constants");
10
- const dex_helper_1 = require("../../../dex-helper");
11
- const ethers_1 = require("ethers");
12
- const sdai_1 = require("../sdai");
13
- const config_1 = require("../config");
14
- const utils_1 = require("../utils");
15
- const abi_1 = require("@ethersproject/abi");
16
- const pot_json_1 = __importDefault(require("../../../abi/maker-psm/pot.json"));
17
- const network = constants_1.Network.MAINNET;
18
- const dexKey = 'sdai';
19
- const { potAddress } = config_1.SDaiConfig[dexKey][network];
20
- const blockHeaders = {};
21
- const dexHelper = new dex_helper_1.DummyDexHelper(network);
22
- const logger = dexHelper.getLogger(dexKey);
23
- function preprocessField(value) {
24
- if (typeof value === 'bigint' ||
25
- typeof value === 'number' ||
26
- ethers_1.ethers.BigNumber.isBigNumber(value)) {
27
- return value.toString();
28
- }
29
- return value;
30
- }
31
- function compareAndLogDifferences(obj1, obj2, keyNames, checkEachKey = false) {
32
- let isValid = true;
33
- let keys = keyNames;
34
- if (checkEachKey) {
35
- // find common keys
36
- const keys1 = Object.keys(obj1);
37
- const keys2 = new Set(Object.keys(obj2));
38
- keys = keys1.filter(key => keys2.has(key));
39
- }
40
- for (let fieldName of keys) {
41
- const value1 = preprocessField(obj1[fieldName]);
42
- const value2 = preprocessField(obj2[fieldName]);
43
- if (value1 !== value2) {
44
- console.log(`${fieldName.toString()} mismatch: actual: ${value1} vs pool: ${value2}`);
45
- isValid = false;
46
- }
47
- }
48
- return isValid;
49
- }
50
- async function isPoolStateEqualToReal(state, blockNumber) {
51
- const expected = await (0, utils_1.getOnChainState)(dexHelper.multiContract, potAddress, new abi_1.Interface(pot_json_1.default), blockNumber);
52
- const isValidState = compareAndLogDifferences(state, expected, [
53
- 'rho',
54
- 'dsr',
55
- 'dsr',
56
- ]);
57
- return isValidState;
58
- }
59
- async function checkPoolStateForBlockRange(startBlockNumber, endBlockNumber) {
60
- const network = constants_1.Network.MAINNET;
61
- const dexKey = 'sdai';
62
- const dexHelper = new dex_helper_1.DummyDexHelper(network);
63
- const sdai = new sdai_1.SDai(network, dexKey, dexHelper);
64
- const pool = await sdai.eventPool;
65
- const logsToDispatch = await dexHelper.provider.getLogs({
66
- fromBlock: startBlockNumber,
67
- toBlock: endBlockNumber,
68
- address: potAddress,
69
- });
70
- console.log(logsToDispatch.length);
71
- // group logs by block number
72
- const logsByBlockNumber = {};
73
- for (let log of logsToDispatch) {
74
- if (!logsByBlockNumber[log.blockNumber]) {
75
- logsByBlockNumber[log.blockNumber] = [];
76
- }
77
- logsByBlockNumber[log.blockNumber].push(log);
78
- }
79
- const sortedBlocks = Object.keys(logsByBlockNumber)
80
- .map(Number)
81
- .sort((a, b) => Number(a) - Number(b));
82
- for (let blockNumber of sortedBlocks) {
83
- if (!blockHeaders[blockNumber]) {
84
- blockHeaders[blockNumber] = await dexHelper.web3Provider.eth.getBlock(blockNumber);
85
- }
86
- await pool?.update(logsByBlockNumber[blockNumber], {
87
- [blockNumber]: blockHeaders[blockNumber],
88
- });
89
- }
90
- const state = pool?.getState(startBlockNumber);
91
- return isPoolStateEqualToReal(state, endBlockNumber);
92
- }
93
- async function main() {
94
- // use findBreakingBlock to find the block where the state is broken
95
- // console.log(await findBreakingBlock(startBlockNumber, endBlockNumber));
96
- // previously broken block 150502863
97
- console.log(await checkPoolStateForBlockRange(19199247 - 10000, 19199247));
98
- }
99
- main()
100
- .then(() => console.log('Done'))
101
- .catch(e => console.error(e));
102
- //# sourceMappingURL=validate-state.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"validate-state.js","sourceRoot":"","sources":["../../../../src/dex/sdai/scripts/validate-state.ts"],"names":[],"mappings":";;;;;AAAA,+BAA+B;AAC/B,oDAA4B;AAC5B,gBAAM,CAAC,MAAM,EAAE,CAAC;AAEhB,kDAA6C;AAC7C,oDAAqD;AAGrD,mCAAgC;AAChC,kCAA+B;AAC/B,sCAAuC;AACvC,oCAA2C;AAC3C,4CAA+C;AAC/C,+EAAqD;AAErD,MAAM,OAAO,GAAG,mBAAO,CAAC,OAAO,CAAC;AAChC,MAAM,MAAM,GAAG,MAAM,CAAC;AAEtB,MAAM,EAAE,UAAU,EAAE,GAAG,mBAAU,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC;AACnD,MAAM,YAAY,GAAgC,EAAE,CAAC;AAErD,MAAM,SAAS,GAAG,IAAI,2BAAc,CAAC,OAAO,CAAC,CAAC;AAC9C,MAAM,MAAM,GAAG,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;AAE3C,SAAS,eAAe,CAAC,KAAU;IACjC,IACE,OAAO,KAAK,KAAK,QAAQ;QACzB,OAAO,KAAK,KAAK,QAAQ;QACzB,eAAM,CAAC,SAAS,CAAC,WAAW,CAAC,KAAK,CAAC,EACnC;QACA,OAAO,KAAK,CAAC,QAAQ,EAAE,CAAC;KACzB;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,wBAAwB,CAC/B,IAAO,EACP,IAAO,EACP,QAAkC,EAClC,YAAY,GAAG,KAAK;IAEpB,IAAI,OAAO,GAAG,IAAI,CAAC;IACnB,IAAI,IAAI,GAAG,QAAQ,CAAC;IAEpB,IAAI,YAAY,EAAE;QAChB,mBAAmB;QACnB,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAChC,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACzC,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAA6B,CAAC;KACxE;IAED,KAAK,IAAI,SAAS,IAAI,IAAI,EAAE;QAC1B,MAAM,MAAM,GAAG,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;QAChD,MAAM,MAAM,GAAG,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;QAEhD,IAAI,MAAM,KAAK,MAAM,EAAE;YACrB,OAAO,CAAC,GAAG,CACT,GAAG,SAAS,CAAC,QAAQ,EAAE,sBAAsB,MAAM,aAAa,MAAM,EAAE,CACzE,CAAC;YACF,OAAO,GAAG,KAAK,CAAC;SACjB;KACF;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,KAAK,UAAU,sBAAsB,CACnC,KAAoB,EACpB,WAAmB;IAEnB,MAAM,QAAQ,GAAG,MAAM,IAAA,uBAAe,EACpC,SAAS,CAAC,aAAa,EACvB,UAAU,EACV,IAAI,eAAS,CAAC,kBAAM,CAAC,EACrB,WAAW,CACZ,CAAC;IAEF,MAAM,YAAY,GAAG,wBAAwB,CAAC,KAAK,EAAE,QAAQ,EAAE;QAC7D,KAAK;QACL,KAAK;QACL,KAAK;KACN,CAAC,CAAC;IAEH,OAAO,YAAY,CAAC;AACtB,CAAC;AAED,KAAK,UAAU,2BAA2B,CACxC,gBAAwB,EACxB,cAAsB;IAEtB,MAAM,OAAO,GAAG,mBAAO,CAAC,OAAO,CAAC;IAChC,MAAM,MAAM,GAAG,MAAM,CAAC;IACtB,MAAM,SAAS,GAAG,IAAI,2BAAc,CAAC,OAAO,CAAC,CAAC;IAE9C,MAAM,IAAI,GAAG,IAAI,WAAI,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;IAClD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC;IAElC,MAAM,cAAc,GAAG,MAAM,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC;QACtD,SAAS,EAAE,gBAAgB;QAC3B,OAAO,EAAE,cAAc;QACvB,OAAO,EAAE,UAAU;KACpB,CAAC,CAAC;IAEH,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;IAEnC,6BAA6B;IAC7B,MAAM,iBAAiB,GAA0B,EAAE,CAAC;IACpD,KAAK,IAAI,GAAG,IAAI,cAAc,EAAE;QAC9B,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE;YACvC,iBAAiB,CAAC,GAAG,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC;SACzC;QACD,iBAAiB,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;KAC9C;IAED,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC;SAChD,GAAG,CAAC,MAAM,CAAC;SACX,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IAEzC,KAAK,IAAI,WAAW,IAAI,YAAY,EAAE;QACpC,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,EAAE;YAC9B,YAAY,CAAC,WAAW,CAAC,GAAG,MAAM,SAAS,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,CACnE,WAAW,CACZ,CAAC;SACH;QAED,MAAM,IAAI,EAAE,MAAM,CAAC,iBAAiB,CAAC,WAAW,CAAC,EAAE;YACjD,CAAC,WAAW,CAAC,EAAE,YAAY,CAAC,WAAW,CAAC;SACzC,CAAC,CAAC;KACJ;IAED,MAAM,KAAK,GAAG,IAAI,EAAE,QAAQ,CAAC,gBAAgB,CAAkB,CAAC;IAChE,OAAO,sBAAsB,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC;AACvD,CAAC;AAED,KAAK,UAAU,IAAI;IACjB,oEAAoE;IACpE,0EAA0E;IAC1E,oCAAoC;IACpC,OAAO,CAAC,GAAG,CAAC,MAAM,2BAA2B,CAAC,QAAQ,GAAG,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC;AAC7E,CAAC;AAED,IAAI,EAAE;KACH,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;KAC/B,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC"}
@@ -1,16 +0,0 @@
1
- import { StatefulEventSubscriber } from '../../stateful-event-subscriber';
2
- import { Interface } from '@ethersproject/abi';
3
- import type { IDexHelper } from '../../dex-helper';
4
- import type { AsyncOrSync, DeepReadonly } from 'ts-essentials';
5
- import type { Address, BlockHeader, Log, Logger } from '../../types';
6
- import type { SDaiPoolState } from './types';
7
- export declare class SDaiEventPool extends StatefulEventSubscriber<SDaiPoolState> {
8
- protected dexHelper: IDexHelper;
9
- private potAddress;
10
- private potInterface;
11
- constructor(parentName: string, dexHelper: IDexHelper, potAddress: Address, potInterface: Interface, logger: Logger);
12
- protected processLog(state: DeepReadonly<SDaiPoolState>, log: Readonly<Log>, blockHeader: Readonly<BlockHeader>): AsyncOrSync<DeepReadonly<SDaiPoolState> | null>;
13
- generateState(blockNumber?: number | 'latest'): Promise<DeepReadonly<SDaiPoolState>>;
14
- convertToSDai(daiAmount: bigint, blockNumber: number): bigint;
15
- convertToDai(sdaiAmount: bigint, blockNumber: number): bigint;
16
- }
@@ -1,85 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.SDaiEventPool = void 0;
4
- const bigint_constants_1 = require("../../bigint-constants");
5
- const stateful_event_subscriber_1 = require("../../stateful-event-subscriber");
6
- const utils_1 = require("./utils");
7
- const RAY = bigint_constants_1.BI_POWS[27];
8
- const ZERO = BigInt(0);
9
- const TWO = BigInt(2);
10
- const HALF = RAY / TWO;
11
- // function file(bytes32,uint256)
12
- const FILE_TOPICHASH = `0x29ae811400000000000000000000000000000000000000000000000000000000`;
13
- // function drip()
14
- const DRIP_TOPICHASH = `0x9f678cca00000000000000000000000000000000000000000000000000000000`;
15
- // function cage()
16
- const CAGE_TOPICHASH = `0x6924500900000000000000000000000000000000000000000000000000000000`;
17
- // bytes32 repr of "dsr" string
18
- const DSR_TOPIC = `0x6473720000000000000000000000000000000000000000000000000000000000`;
19
- const rpow = (x, n) => {
20
- if (!x && !n)
21
- return RAY;
22
- if (!x)
23
- return ZERO;
24
- let z = n % TWO > ZERO ? x : RAY;
25
- for (n = n / TWO; n; n /= TWO) {
26
- x = (x * x + HALF) / RAY;
27
- if (n % TWO > ZERO) {
28
- z = (z * x + HALF) / RAY;
29
- }
30
- }
31
- return z;
32
- };
33
- const calcChi = (state, currentTimestamp) => {
34
- currentTimestamp || (currentTimestamp = Math.floor(Date.now() / 1000));
35
- if (!state.live)
36
- return RAY;
37
- const { dsr: dsr_, chi: chi_, rho: rho_ } = state;
38
- const now = BigInt(currentTimestamp);
39
- const rho = BigInt(rho_);
40
- const dsr = BigInt(dsr_);
41
- const chi = BigInt(chi_);
42
- return now > rho ? (rpow(dsr, now - rho) * chi) / RAY : chi;
43
- };
44
- class SDaiEventPool extends stateful_event_subscriber_1.StatefulEventSubscriber {
45
- constructor(parentName, dexHelper, potAddress, potInterface, logger) {
46
- super(parentName, 'sdai', dexHelper, logger);
47
- this.dexHelper = dexHelper;
48
- this.potAddress = potAddress;
49
- this.potInterface = potInterface;
50
- this.addressesSubscribed = [potAddress];
51
- }
52
- processLog(state, log, blockHeader) {
53
- if (log.topics[0] === FILE_TOPICHASH && log.topics[2] === DSR_TOPIC) {
54
- return {
55
- ...state,
56
- dsr: BigInt(log.topics[3]).toString(),
57
- };
58
- }
59
- if (log.topics[0] === DRIP_TOPICHASH) {
60
- return {
61
- ...state,
62
- rho: blockHeader.timestamp.toString(),
63
- chi: calcChi(state, +blockHeader.timestamp).toString(),
64
- };
65
- }
66
- return null;
67
- }
68
- async generateState(blockNumber = 'latest') {
69
- return (0, utils_1.getOnChainState)(this.dexHelper.multiContract, this.potAddress, this.potInterface, blockNumber);
70
- }
71
- convertToSDai(daiAmount, blockNumber) {
72
- const state = this.getState(blockNumber);
73
- if (!state)
74
- throw new Error(`SDai state at ${blockNumber} does not exists`);
75
- return (daiAmount * RAY) / calcChi(state);
76
- }
77
- convertToDai(sdaiAmount, blockNumber) {
78
- const state = this.getState(blockNumber);
79
- if (!state)
80
- throw new Error(`SDai state at ${blockNumber} does not exists`);
81
- return (sdaiAmount * calcChi(state)) / RAY;
82
- }
83
- }
84
- exports.SDaiEventPool = SDaiEventPool;
85
- //# sourceMappingURL=sdai-pool.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sdai-pool.js","sourceRoot":"","sources":["../../../src/dex/sdai/sdai-pool.ts"],"names":[],"mappings":"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"}