@paraswap/dex-lib 3.7.2 → 3.7.3

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 (236) hide show
  1. package/build/abi/Redstone.json +739 -0
  2. package/build/abi/aavev3stata/Factory.json +128 -0
  3. package/build/abi/aavev3stata/Token.json +735 -0
  4. package/build/abi/angle-transmuter/MorphoOracle.json +193 -0
  5. package/build/abi/angle-transmuter/MorphoVault.json +2506 -0
  6. package/build/abi/angle-transmuter/Pyth.json +1534 -0
  7. package/build/abi/angle-transmuter/Transmuter.json +1711 -0
  8. package/build/abi/angle-transmuter/TransmuterSidechain.json +1798 -0
  9. package/build/abi/idle-dao/idle-cdo-factory.json +38 -0
  10. package/build/abi/idle-dao/idle-cdo.json +1245 -0
  11. package/build/dex/aave-v1/aave-v1.d.ts +2 -1
  12. package/build/dex/aave-v1/aave-v1.js +22 -0
  13. package/build/dex/aave-v1/aave-v1.js.map +1 -1
  14. package/build/dex/aave-v3-stata/aave-v3-stata.d.ts +50 -0
  15. package/build/dex/aave-v3-stata/aave-v3-stata.js +365 -0
  16. package/build/dex/aave-v3-stata/aave-v3-stata.js.map +1 -0
  17. package/build/dex/aave-v3-stata/config.d.ts +4 -0
  18. package/build/dex/aave-v3-stata/config.js +50 -0
  19. package/build/dex/aave-v3-stata/config.js.map +1 -0
  20. package/build/dex/aave-v3-stata/tokens.d.ts +9 -0
  21. package/build/dex/aave-v3-stata/tokens.js +37 -0
  22. package/build/dex/aave-v3-stata/tokens.js.map +1 -0
  23. package/build/dex/aave-v3-stata/types.d.ts +46 -0
  24. package/build/dex/aave-v3-stata/types.js +23 -0
  25. package/build/dex/aave-v3-stata/types.js.map +1 -0
  26. package/build/dex/aave-v3-stata/utils.d.ts +4 -0
  27. package/build/dex/aave-v3-stata/utils.js +67 -0
  28. package/build/dex/aave-v3-stata/utils.js.map +1 -0
  29. package/build/dex/angle-transmuter/angle-transmuter-pool.d.ts +67 -0
  30. package/build/dex/angle-transmuter/angle-transmuter-pool.js +448 -0
  31. package/build/dex/angle-transmuter/angle-transmuter-pool.js.map +1 -0
  32. package/build/dex/angle-transmuter/angle-transmuter.d.ts +59 -0
  33. package/build/dex/angle-transmuter/angle-transmuter.js +264 -0
  34. package/build/dex/angle-transmuter/angle-transmuter.js.map +1 -0
  35. package/build/dex/angle-transmuter/backedOracle.d.ts +19 -0
  36. package/build/dex/angle-transmuter/backedOracle.js +56 -0
  37. package/build/dex/angle-transmuter/backedOracle.js.map +1 -0
  38. package/build/dex/angle-transmuter/config.d.ts +4 -0
  39. package/build/dex/angle-transmuter/config.js +50 -0
  40. package/build/dex/angle-transmuter/config.js.map +1 -0
  41. package/build/dex/angle-transmuter/constants.d.ts +9 -0
  42. package/build/dex/angle-transmuter/constants.js +136 -0
  43. package/build/dex/angle-transmuter/constants.js.map +1 -0
  44. package/build/dex/angle-transmuter/morphoOracle.d.ts +42 -0
  45. package/build/dex/angle-transmuter/morphoOracle.js +179 -0
  46. package/build/dex/angle-transmuter/morphoOracle.js.map +1 -0
  47. package/build/dex/angle-transmuter/morphoVault.d.ts +20 -0
  48. package/build/dex/angle-transmuter/morphoVault.js +84 -0
  49. package/build/dex/angle-transmuter/morphoVault.js.map +1 -0
  50. package/build/dex/angle-transmuter/pyth.d.ts +19 -0
  51. package/build/dex/angle-transmuter/pyth.js +70 -0
  52. package/build/dex/angle-transmuter/pyth.js.map +1 -0
  53. package/build/dex/angle-transmuter/redstone.d.ts +20 -0
  54. package/build/dex/angle-transmuter/redstone.js +64 -0
  55. package/build/dex/angle-transmuter/redstone.js.map +1 -0
  56. package/build/dex/angle-transmuter/transmuter.d.ts +55 -0
  57. package/build/dex/angle-transmuter/transmuter.js +398 -0
  58. package/build/dex/angle-transmuter/transmuter.js.map +1 -0
  59. package/build/dex/angle-transmuter/types.d.ts +189 -0
  60. package/build/dex/angle-transmuter/types.js +33 -0
  61. package/build/dex/angle-transmuter/types.js.map +1 -0
  62. package/build/dex/angle-transmuter/utils.d.ts +9 -0
  63. package/build/dex/angle-transmuter/utils.js +257 -0
  64. package/build/dex/angle-transmuter/utils.js.map +1 -0
  65. package/build/dex/idle-dao/config.d.ts +6 -0
  66. package/build/dex/idle-dao/config.js +307 -0
  67. package/build/dex/idle-dao/config.js.map +1 -0
  68. package/build/dex/idle-dao/idle-dao-pool.d.ts +56 -0
  69. package/build/dex/idle-dao/idle-dao-pool.js +176 -0
  70. package/build/dex/idle-dao/idle-dao-pool.js.map +1 -0
  71. package/build/dex/idle-dao/idle-dao-pooling-pool.d.ts +16 -0
  72. package/build/dex/idle-dao/idle-dao-pooling-pool.js +57 -0
  73. package/build/dex/idle-dao/idle-dao-pooling-pool.js.map +1 -0
  74. package/build/dex/idle-dao/idle-dao.d.ts +41 -0
  75. package/build/dex/idle-dao/idle-dao.js +238 -0
  76. package/build/dex/idle-dao/idle-dao.js.map +1 -0
  77. package/build/dex/idle-dao/scripts.d.ts +9 -0
  78. package/build/dex/idle-dao/scripts.js +552 -0
  79. package/build/dex/idle-dao/scripts.js.map +1 -0
  80. package/build/dex/idle-dao/tokens.d.ts +9 -0
  81. package/build/dex/idle-dao/tokens.js +65 -0
  82. package/build/dex/idle-dao/tokens.js.map +1 -0
  83. package/build/dex/idle-dao/types.d.ts +35 -0
  84. package/build/dex/idle-dao/types.js +11 -0
  85. package/build/dex/idle-dao/types.js.map +1 -0
  86. package/build/dex/idle-dao/utils.d.ts +8 -0
  87. package/build/dex/idle-dao/utils.js +148 -0
  88. package/build/dex/idle-dao/utils.js.map +1 -0
  89. package/build/dex/index.js +2 -0
  90. package/build/dex/index.js.map +1 -1
  91. package/build/dex/platypus/platypus.d.ts +2 -1
  92. package/build/dex/platypus/platypus.js +31 -0
  93. package/build/dex/platypus/platypus.js.map +1 -1
  94. package/build/dex/swaap-v1/swaap-v1.d.ts +2 -1
  95. package/build/dex/swaap-v1/swaap-v1.js +10 -0
  96. package/build/dex/swaap-v1/swaap-v1.js.map +1 -1
  97. package/build/lib/chainlink.d.ts +2 -0
  98. package/build/lib/chainlink.js +9 -0
  99. package/build/lib/chainlink.js.map +1 -1
  100. package/build/utils.d.ts +1 -1
  101. package/package.json +1 -1
  102. package/src/abi/Redstone.json +739 -0
  103. package/src/abi/angle-transmuter/ChainlinkAccessControlledOffchainAggregator.json +1246 -0
  104. package/src/abi/angle-transmuter/ChainlinkEACAggregatorProxy.json +509 -0
  105. package/src/abi/angle-transmuter/MorphoOracle.json +193 -0
  106. package/src/abi/angle-transmuter/MorphoVault.json +2506 -0
  107. package/src/abi/angle-transmuter/Pyth.json +1534 -0
  108. package/src/abi/angle-transmuter/Transmuter.json +1711 -0
  109. package/src/abi/angle-transmuter/TransmuterSidechain.json +1798 -0
  110. package/src/dex/angle-transmuter/angle-transmuter-e2e.test.ts +156 -0
  111. package/src/dex/angle-transmuter/angle-transmuter-events.test.ts +365 -0
  112. package/src/dex/angle-transmuter/angle-transmuter-integration.test.ts +390 -0
  113. package/src/dex/angle-transmuter/angle-transmuter-pool.ts +895 -0
  114. package/src/dex/angle-transmuter/angle-transmuter.ts +408 -0
  115. package/src/dex/angle-transmuter/backedOracle.ts +91 -0
  116. package/src/dex/angle-transmuter/config.ts +50 -0
  117. package/src/dex/angle-transmuter/constants.ts +138 -0
  118. package/src/dex/angle-transmuter/morphoOracle.ts +335 -0
  119. package/src/dex/angle-transmuter/morphoVault.ts +134 -0
  120. package/src/dex/angle-transmuter/pyth.ts +105 -0
  121. package/src/dex/angle-transmuter/redstone.ts +105 -0
  122. package/src/dex/angle-transmuter/transmuter.ts +619 -0
  123. package/src/dex/angle-transmuter/types.ts +203 -0
  124. package/src/dex/angle-transmuter/utils.ts +358 -0
  125. package/src/dex/index.ts +2 -0
  126. package/src/lib/chainlink.ts +15 -0
  127. package/tests/constants-e2e.ts +48 -3
  128. package/build/abi/Uncompressor.json +0 -250
  129. package/build/dex/bProtocol.d.ts +0 -18
  130. package/build/dex/bProtocol.js +0 -39
  131. package/build/dex/bProtocol.js.map +0 -1
  132. package/build/dex/bancor.d.ts +0 -26
  133. package/build/dex/bancor.js +0 -58
  134. package/build/dex/bancor.js.map +0 -1
  135. package/build/dex/compound.d.ts +0 -18
  136. package/build/dex/compound.js +0 -46
  137. package/build/dex/compound.js.map +0 -1
  138. package/build/dex/curve-v2.d.ts +0 -58
  139. package/build/dex/curve-v2.js +0 -180
  140. package/build/dex/curve-v2.js.map +0 -1
  141. package/build/dex/dodo-v1.d.ts +0 -33
  142. package/build/dex/dodo-v1.js +0 -63
  143. package/build/dex/dodo-v1.js.map +0 -1
  144. package/build/dex/etherfi/etherfi.d.ts +0 -26
  145. package/build/dex/etherfi/etherfi.js +0 -96
  146. package/build/dex/etherfi/etherfi.js.map +0 -1
  147. package/build/dex/lido.d.ts +0 -19
  148. package/build/dex/lido.js +0 -42
  149. package/build/dex/lido.js.map +0 -1
  150. package/build/dex/onebit.d.ts +0 -25
  151. package/build/dex/onebit.js +0 -42
  152. package/build/dex/onebit.js.map +0 -1
  153. package/build/dex/sdai/config.d.ts +0 -11
  154. package/build/dex/sdai/config.js +0 -21
  155. package/build/dex/sdai/config.js.map +0 -1
  156. package/build/dex/sdai/constants.d.ts +0 -2
  157. package/build/dex/sdai/constants.js +0 -6
  158. package/build/dex/sdai/constants.js.map +0 -1
  159. package/build/dex/sdai/scripts/validate-state.d.ts +0 -1
  160. package/build/dex/sdai/scripts/validate-state.js +0 -102
  161. package/build/dex/sdai/scripts/validate-state.js.map +0 -1
  162. package/build/dex/sdai/sdai-pool.d.ts +0 -16
  163. package/build/dex/sdai/sdai-pool.js +0 -85
  164. package/build/dex/sdai/sdai-pool.js.map +0 -1
  165. package/build/dex/sdai/sdai.d.ts +0 -51
  166. package/build/dex/sdai/sdai.js +0 -172
  167. package/build/dex/sdai/sdai.js.map +0 -1
  168. package/build/dex/sdai/types.d.ts +0 -21
  169. package/build/dex/sdai/types.js +0 -11
  170. package/build/dex/sdai/types.js.map +0 -1
  171. package/build/dex/sdai/utils.d.ts +0 -4
  172. package/build/dex/sdai/utils.js +0 -39
  173. package/build/dex/sdai/utils.js.map +0 -1
  174. package/build/dex/smoothy.d.ts +0 -26
  175. package/build/dex/smoothy.js +0 -48
  176. package/build/dex/smoothy.js.map +0 -1
  177. package/build/dex/stable-pool.d.ts +0 -28
  178. package/build/dex/stable-pool.js +0 -62
  179. package/build/dex/stable-pool.js.map +0 -1
  180. package/build/dex/trader-joe-v2.1.d.ts +0 -43
  181. package/build/dex/trader-joe-v2.1.js +0 -79
  182. package/build/dex/trader-joe-v2.1.js.map +0 -1
  183. package/build/executor/compressor/Compressor.d.ts +0 -23
  184. package/build/executor/compressor/Compressor.js +0 -144
  185. package/build/executor/compressor/Compressor.js.map +0 -1
  186. package/build/executor/compressor/compress.d.ts +0 -17
  187. package/build/executor/compressor/compress.js +0 -187
  188. package/build/executor/compressor/compress.js.map +0 -1
  189. package/build/executor/compressor/compress_functions/addressSubstitution.d.ts +0 -6
  190. package/build/executor/compressor/compress_functions/addressSubstitution.js +0 -29
  191. package/build/executor/compressor/compress_functions/addressSubstitution.js.map +0 -1
  192. package/build/executor/compressor/compress_functions/addressSubstitutionFromObject.d.ts +0 -10
  193. package/build/executor/compressor/compress_functions/addressSubstitutionFromObject.js +0 -40
  194. package/build/executor/compressor/compress_functions/addressSubstitutionFromObject.js.map +0 -1
  195. package/build/executor/compressor/compress_functions/byteSubstitution.d.ts +0 -11
  196. package/build/executor/compressor/compress_functions/byteSubstitution.js +0 -64
  197. package/build/executor/compressor/compress_functions/byteSubstitution.js.map +0 -1
  198. package/build/executor/compressor/compress_functions/ffSubstitution.d.ts +0 -7
  199. package/build/executor/compressor/compress_functions/ffSubstitution.js +0 -54
  200. package/build/executor/compressor/compress_functions/ffSubstitution.js.map +0 -1
  201. package/build/executor/compressor/compress_functions/findLongestAndSubstitute.d.ts +0 -8
  202. package/build/executor/compressor/compress_functions/findLongestAndSubstitute.js +0 -67
  203. package/build/executor/compressor/compress_functions/findLongestAndSubstitute.js.map +0 -1
  204. package/build/executor/compressor/compress_functions/findLongestAndSubstitute_old.d.ts +0 -8
  205. package/build/executor/compressor/compress_functions/findLongestAndSubstitute_old.js +0 -61
  206. package/build/executor/compressor/compress_functions/findLongestAndSubstitute_old.js.map +0 -1
  207. package/build/executor/compressor/compress_functions/reverseAddressSubstitution.d.ts +0 -6
  208. package/build/executor/compressor/compress_functions/reverseAddressSubstitution.js +0 -37
  209. package/build/executor/compressor/compress_functions/reverseAddressSubstitution.js.map +0 -1
  210. package/build/executor/compressor/compress_functions/searchUnusedBytes.d.ts +0 -9
  211. package/build/executor/compressor/compress_functions/searchUnusedBytes.js +0 -33
  212. package/build/executor/compressor/compress_functions/searchUnusedBytes.js.map +0 -1
  213. package/build/executor/compressor/fetchSaved.d.ts +0 -0
  214. package/build/executor/compressor/fetchSaved.js +0 -17
  215. package/build/executor/compressor/fetchSaved.js.map +0 -1
  216. package/build/executor/compressor/utils/computeCostL2.d.ts +0 -2
  217. package/build/executor/compressor/utils/computeCostL2.js +0 -14
  218. package/build/executor/compressor/utils/computeCostL2.js.map +0 -1
  219. package/build/executor/compressor/utils/findLongestDuplicatedString.d.ts +0 -2
  220. package/build/executor/compressor/utils/findLongestDuplicatedString.js +0 -30
  221. package/build/executor/compressor/utils/findLongestDuplicatedString.js.map +0 -1
  222. package/build/executor/compressor/utils/getAllIndexes.d.ts +0 -2
  223. package/build/executor/compressor/utils/getAllIndexes.js +0 -12
  224. package/build/executor/compressor/utils/getAllIndexes.js.map +0 -1
  225. package/build/executor/compressor/utils/getByteForAddress.d.ts +0 -2
  226. package/build/executor/compressor/utils/getByteForAddress.js +0 -14
  227. package/build/executor/compressor/utils/getByteForAddress.js.map +0 -1
  228. package/build/executor/compressor/utils/intTo2Bytes.d.ts +0 -2
  229. package/build/executor/compressor/utils/intTo2Bytes.js +0 -14
  230. package/build/executor/compressor/utils/intTo2Bytes.js.map +0 -1
  231. package/build/executor/compressor/utils/intTo3Bytes.d.ts +0 -2
  232. package/build/executor/compressor/utils/intTo3Bytes.js +0 -18
  233. package/build/executor/compressor/utils/intTo3Bytes.js.map +0 -1
  234. package/build/executor/compressor/utils/intToByte.d.ts +0 -2
  235. package/build/executor/compressor/utils/intToByte.js +0 -10
  236. package/build/executor/compressor/utils/intToByte.js.map +0 -1
@@ -0,0 +1,156 @@
1
+ /* eslint-disable no-console */
2
+ import dotenv from 'dotenv';
3
+ dotenv.config();
4
+
5
+ import { testE2E } from '../../../tests/utils-e2e';
6
+ import {
7
+ Tokens,
8
+ Holders,
9
+ NativeTokenSymbols,
10
+ } from '../../../tests/constants-e2e';
11
+ import { Network, ContractMethod, SwapSide } from '../../constants';
12
+ import { StaticJsonRpcProvider } from '@ethersproject/providers';
13
+ import { generateConfig } from '../../config';
14
+ import { Collateral } from './angle-transmuter-integration.test';
15
+ import { BI_POWS } from '../../bigint-constants';
16
+ import { SmartTokenParams } from '../../../tests/smart-tokens';
17
+
18
+ function testForNetwork(
19
+ network: Network,
20
+ dexKey: string,
21
+ tokenASymbol: string,
22
+ tokenBSymbol: string,
23
+ tokenAAmount: string,
24
+ tokenBAmount: string,
25
+ nativeTokenAmount: string,
26
+ isKYC: boolean,
27
+ ) {
28
+ const provider = new StaticJsonRpcProvider(
29
+ generateConfig(network).privateHttpProvider,
30
+ network,
31
+ );
32
+ const tokens = Tokens[network];
33
+ const holders = Holders[network];
34
+ const nativeTokenSymbol = NativeTokenSymbols[network];
35
+
36
+ const sideToContractMethods = new Map([
37
+ [SwapSide.SELL, [ContractMethod.swapExactAmountIn]],
38
+ [SwapSide.BUY, [ContractMethod.swapExactAmountOut]],
39
+ ]);
40
+
41
+ describe(`${network}`, () => {
42
+ sideToContractMethods.forEach((contractMethods, side) =>
43
+ describe(`${side}`, () => {
44
+ contractMethods.forEach((contractMethod: ContractMethod) => {
45
+ describe(`${contractMethod}`, () => {
46
+ it(`${tokenASymbol} -> ${tokenBSymbol}`, async () => {
47
+ await testE2E(
48
+ tokens[tokenASymbol],
49
+ tokens[tokenBSymbol],
50
+ holders[tokenASymbol],
51
+ side === SwapSide.SELL ? tokenAAmount : tokenBAmount,
52
+ side,
53
+ dexKey,
54
+ contractMethod,
55
+ network,
56
+ provider,
57
+ );
58
+ });
59
+ if (!isKYC) {
60
+ it(`${tokenBSymbol} -> ${tokenASymbol}`, async () => {
61
+ await testE2E(
62
+ tokens[tokenBSymbol],
63
+ tokens[tokenASymbol],
64
+ holders[tokenBSymbol],
65
+ side === SwapSide.SELL ? tokenBAmount : tokenAAmount,
66
+ side,
67
+ dexKey,
68
+ contractMethod,
69
+ network,
70
+ provider,
71
+ );
72
+ });
73
+ }
74
+ });
75
+ });
76
+ }),
77
+ );
78
+ });
79
+ }
80
+
81
+ describe('AngleTransmuter E2E', () => {
82
+ const dexKey = 'AngleTransmuter';
83
+
84
+ const networks = [Network.MAINNET, Network.ARBITRUM, Network.BASE];
85
+ const stablesPerNetwork: { [network: number]: SmartTokenParams[] } = {
86
+ [Network.MAINNET]: [
87
+ Tokens[Network.MAINNET].EURA,
88
+ Tokens[Network.MAINNET].USDA,
89
+ ],
90
+ [Network.ARBITRUM]: [Tokens[Network.ARBITRUM].USDA],
91
+ [Network.BASE]: [Tokens[Network.BASE].USDA],
92
+ };
93
+ const collateralsPerNetwork: {
94
+ [network: number]: { [stable: string]: SmartTokenParams[] };
95
+ } = {
96
+ [Network.MAINNET]: {
97
+ USDA: [
98
+ Tokens[Network.MAINNET].bIB01,
99
+ Tokens[Network.MAINNET].USDC,
100
+ Tokens[Network.MAINNET].steakUSDC,
101
+ ],
102
+ EURA: [
103
+ Tokens[Network.MAINNET].EUROC,
104
+ Tokens[Network.MAINNET].bC3M,
105
+ Tokens[Network.MAINNET].bERNX,
106
+ ],
107
+ },
108
+ [Network.ARBITRUM]: {
109
+ USDA: [Tokens[Network.ARBITRUM].USDC],
110
+ },
111
+ [Network.BASE]: {
112
+ USDA: [Tokens[Network.BASE].USDC],
113
+ },
114
+ };
115
+
116
+ networks.forEach(network =>
117
+ describe('Mainnet', () => {
118
+ const tokens = Tokens[network];
119
+
120
+ const stables = stablesPerNetwork[network];
121
+ const collaterals = collateralsPerNetwork[network];
122
+
123
+ const isKYC: { [token: string]: boolean } = {};
124
+ if (network === Network.MAINNET) {
125
+ isKYC[tokens.bIB01.symbol!] = true;
126
+ isKYC[tokens.bC3M.symbol!] = true;
127
+ isKYC[tokens.bERNX.symbol!] = true;
128
+ }
129
+
130
+ stables.forEach(stable =>
131
+ collaterals[stable.symbol! as keyof Collateral].forEach(collateral =>
132
+ describe(`${stable.symbol}/${collateral.symbol}`, () => {
133
+ const stableAmount: string = (
134
+ 1n * BI_POWS[stable.decimals]
135
+ ).toString();
136
+ const collateralAmount: string = (
137
+ 1n * BI_POWS[collateral.decimals]
138
+ ).toString();
139
+ const nativeTokenAmount = '1000000000000000000';
140
+
141
+ testForNetwork(
142
+ network,
143
+ dexKey,
144
+ collateral.symbol!,
145
+ stable.symbol!,
146
+ collateralAmount,
147
+ stableAmount,
148
+ nativeTokenAmount,
149
+ isKYC[collateral.symbol!],
150
+ );
151
+ }),
152
+ ),
153
+ );
154
+ }),
155
+ );
156
+ });
@@ -0,0 +1,365 @@
1
+ /* eslint-disable no-console */
2
+ import dotenv from 'dotenv';
3
+ dotenv.config();
4
+
5
+ import { AngleTransmuterEventPool } from './angle-transmuter-pool';
6
+ import { Network } from '../../constants';
7
+ import { Address } from '../../types';
8
+ import { DummyDexHelper } from '../../dex-helper/index';
9
+ import { testEventSubscriber } from '../../../tests/utils-events';
10
+ import { PoolState } from './types';
11
+ import { DeepReadonly } from 'ts-essentials';
12
+ import {
13
+ configEUR,
14
+ configUSD,
15
+ configUSDArbitrum,
16
+ configUSDBase,
17
+ } from './constants';
18
+
19
+ jest.setTimeout(50 * 1000);
20
+
21
+ async function fetchPoolState(
22
+ angleTransmuterPools: AngleTransmuterEventPool,
23
+ blockNumber: number,
24
+ poolAddress: string,
25
+ ): Promise<DeepReadonly<PoolState>> {
26
+ return angleTransmuterPools.generateState(blockNumber);
27
+ }
28
+
29
+ // eventName -> blockNumbers
30
+ type EventMappings = Record<string, number[]>;
31
+
32
+ describe('AngleTransmuter EventPool Mainnet', () => {
33
+ const dexKey = 'AngleTransmuter';
34
+ const network = Network.MAINNET;
35
+ const dexHelper = new DummyDexHelper(network);
36
+ const logger = dexHelper.getLogger(dexKey);
37
+ let angleTransmuterPoolEUR: AngleTransmuterEventPool;
38
+ let angleTransmuterPoolUSD: AngleTransmuterEventPool;
39
+
40
+ // poolAddress -> EventMappings
41
+
42
+ // EUR
43
+ const eventsToTestEUR: Record<Address, EventMappings> = {
44
+ //Transmuter Events
45
+ '0x00253582b2a3FE112feEC532221d9708c64cEFAb': {
46
+ FeesSet: [],
47
+ RedemptionCurveParamsSet: [],
48
+ OracleSet: [],
49
+ Swap: [
50
+ 19582703, 19584048, 19589408, 19602964, 19607526, 19614332, 19623965,
51
+ 19625332, 19631246, 19631653, 19633515, 19638468, 19667763,
52
+ ],
53
+ Redeemed: [],
54
+ ReservesAdjusted: [],
55
+ CollateralAdded: [],
56
+ CollateralRevoked: [],
57
+ CollateralWhitelistStatusUpdated: [],
58
+ WhitelistStatusToggled: [],
59
+ },
60
+ // Pyth Events
61
+ '0x4305FB66699C3B2702D4d05CF36551390A4c69C6': {
62
+ PriceFeedUpdate: [
63
+ 19611413, 19618548, 19625698, 19632847, 19633586, 19639991, 19647112,
64
+ 19649850, 19649850, 19654237,
65
+ ],
66
+ },
67
+ // Backed Events
68
+ '0x83Ec02059F686E747392A22ddfED7833bA0d7cE3': {
69
+ AnswerUpdated: [
70
+ 19574099, 19574442, 19581598, 19588736, 19610148, 19617280, 19624427,
71
+ 19638723, 19667243, 19674385,
72
+ ],
73
+ },
74
+ '0x475855DAe09af1e3f2d380d766b9E630926ad3CE': {
75
+ AnswerUpdated: [
76
+ 19574095, 19574443, 19581596, 19588737, 19610145, 19617284, 19624426,
77
+ 19631578, 19638720, 19667241, 19674386,
78
+ ],
79
+ },
80
+ //Redstone Events
81
+ '0x6E27A25999B3C665E44D903B2139F5a4Be2B6C26': {
82
+ AnswerUpdated: [],
83
+ },
84
+ };
85
+
86
+ const eventsToTestUSD: Record<Address, EventMappings> = {
87
+ //Transmuter Events
88
+ '0x222222fD79264BBE280b4986F6FEfBC3524d0137': {
89
+ FeesSet: [19539198, 19539199],
90
+ RedemptionCurveParamsSet: [],
91
+ OracleSet: [],
92
+ Swap: [
93
+ 19628073, 19628437, 19629497, 19630262, 19630452, 19630569, 19630846,
94
+ 19630998, 19631045, 19631072, 19631526, 19631561, 19631603, 19631653,
95
+ 19632250, 19633153, 19633531, 19633556, 19633605, 19634664, 19635866,
96
+ 19636522, 19636596, 19637181, 19637803, 19637913, 19638541, 19640895,
97
+ ],
98
+ Redeemed: [],
99
+ ReservesAdjusted: [],
100
+ CollateralAdded: [],
101
+ CollateralRevoked: [],
102
+ CollateralWhitelistStatusUpdated: [],
103
+ WhitelistStatusToggled: [],
104
+ },
105
+ // Chainlink
106
+ '0x8fFfFfd4AfB6115b954Bd326cbe7B4BA576818f6': {
107
+ AnswerUpdated: [
108
+ 19573923, 19581071, 19588215, 19595354, 19602491, 19609623, 19616758,
109
+ 19623902, 19631050, 19638196, 19645326, 19652441, 19659587, 19666715,
110
+ 19673861, 19681014, 19688159, 19695297, 19702450, 19709605, 19716765,
111
+ ],
112
+ },
113
+ '0x32d1463EB53b73C095625719Afa544D5426354cB': {
114
+ AnswerUpdated: [
115
+ 19574020, 19581171, 19588315, 19595453, 19602589, 19609722, 19616859,
116
+ 19623999, 19631149, 19638297, 19645426, 19652545, 19652547, 19659686,
117
+ 19666816, 19673959, 19681115, 19688255, 19695398, 19702554, 19709707,
118
+ 19716863,
119
+ ],
120
+ },
121
+ // Morpho
122
+ '0xBEEF01735c132Ada46AA9aA4c54623cAA92A64CB': {
123
+ UpdateLastTotalAssets: [
124
+ 19680251, 19680544, 19681017, 19682815, 19689659, 19689880, 19692533,
125
+ 19697311, 19697903, 19698704, 19698867, 19701099, 19701428, 19702068,
126
+ 19703302, 19703569, 19704999, 19705931, 19705954, 19706402, 19706567,
127
+ 19708213, 19708713, 19708727, 19712712, 19713229, 19714392, 19720091,
128
+ 19720560, 19722127,
129
+ ],
130
+ Deposit: [
131
+ 19697903, 19698704, 19698867, 19701099, 19701428, 19702068, 19703302,
132
+ 19703569, 19705931, 19705954, 19706402, 19706567, 19708213, 19708713,
133
+ 19708727, 19713229, 19714392, 19720091, 19720560, 19722127, 19723842,
134
+ 19724873, 19724886, 19727258, 19727832, 19727836, 19727900,
135
+ ],
136
+ Withdraw: [
137
+ 19641771, 19642216, 19643013, 19644465, 19646888, 19648977, 19649555,
138
+ 19649742, 19651107, 19651169, 19651577, 19652313, 19662862, 19667407,
139
+ 19669210, 19669302, 19676127, 19680251, 19680544, 19681017, 19682815,
140
+ 19689659, 19704999, 19712712, 19723728,
141
+ ],
142
+ },
143
+ };
144
+
145
+ beforeEach(async () => {
146
+ angleTransmuterPoolEUR = new AngleTransmuterEventPool(
147
+ `${dexKey}_EUR`,
148
+ network,
149
+ dexHelper,
150
+ logger,
151
+ configEUR,
152
+ );
153
+ angleTransmuterPoolUSD = new AngleTransmuterEventPool(
154
+ `${dexKey}_USD`,
155
+ network,
156
+ dexHelper,
157
+ logger,
158
+ configUSD,
159
+ );
160
+ });
161
+
162
+ Object.entries(eventsToTestEUR).forEach(
163
+ ([poolAddress, events]: [string, EventMappings]) => {
164
+ describe(`Events for ${poolAddress}`, () => {
165
+ Object.entries(events).forEach(
166
+ ([eventName, blockNumbers]: [string, number[]]) => {
167
+ describe(`${eventName}`, () => {
168
+ blockNumbers.forEach((blockNumber: number) => {
169
+ it(`State after ${blockNumber}`, async () => {
170
+ await testEventSubscriber(
171
+ angleTransmuterPoolEUR,
172
+ angleTransmuterPoolEUR.addressesSubscribed,
173
+ (_blockNumber: number) =>
174
+ fetchPoolState(
175
+ angleTransmuterPoolEUR,
176
+ _blockNumber,
177
+ poolAddress,
178
+ ),
179
+ blockNumber,
180
+ `${dexKey}_${poolAddress}`,
181
+ dexHelper.provider,
182
+ );
183
+ });
184
+ });
185
+ });
186
+ },
187
+ );
188
+ });
189
+ },
190
+ );
191
+
192
+ Object.entries(eventsToTestUSD).forEach(
193
+ ([poolAddress, events]: [string, EventMappings]) => {
194
+ describe(`Events for ${poolAddress}`, () => {
195
+ Object.entries(events).forEach(
196
+ ([eventName, blockNumbers]: [string, number[]]) => {
197
+ describe(`${eventName}`, () => {
198
+ blockNumbers.forEach((blockNumber: number) => {
199
+ it(`State after ${blockNumber}`, async () => {
200
+ await testEventSubscriber(
201
+ angleTransmuterPoolUSD,
202
+ angleTransmuterPoolUSD.addressesSubscribed,
203
+ (_blockNumber: number) =>
204
+ fetchPoolState(
205
+ angleTransmuterPoolUSD,
206
+ _blockNumber,
207
+ poolAddress,
208
+ ),
209
+ blockNumber,
210
+ `${dexKey}_${poolAddress}`,
211
+ dexHelper.provider,
212
+ );
213
+ });
214
+ });
215
+ });
216
+ },
217
+ );
218
+ });
219
+ },
220
+ );
221
+ });
222
+
223
+ describe('AngleTransmuter EventPool - Arbitrum', () => {
224
+ const dexKey = 'AngleTransmuter';
225
+ const network = Network.ARBITRUM;
226
+ const dexHelper = new DummyDexHelper(network);
227
+ const logger = dexHelper.getLogger(dexKey);
228
+ let angleTransmuterPoolUSD: AngleTransmuterEventPool;
229
+
230
+ // poolAddress -> EventMappings
231
+
232
+ const eventsToTestUSD: Record<Address, EventMappings> = {
233
+ //Transmuter Events
234
+ '0xD253b62108d1831aEd298Fc2434A5A8e4E418053': {
235
+ FeesSet: [],
236
+ RedemptionCurveParamsSet: [],
237
+ OracleSet: [],
238
+ Swap: [216524984, 216616166],
239
+ Redeemed: [],
240
+ ReservesAdjusted: [],
241
+ CollateralAdded: [],
242
+ CollateralRevoked: [],
243
+ CollateralWhitelistStatusUpdated: [],
244
+ WhitelistStatusToggled: [],
245
+ StablecoinCapSet: [],
246
+ },
247
+ // Chainlink
248
+ '0x50834F3163758fcC1Df9973b6e91f0F0F0434aD3': {
249
+ AnswerUpdated: [
250
+ 216725917, 217070222, 217415479, 217760769, 218104896, 218449091,
251
+ ],
252
+ },
253
+ };
254
+
255
+ beforeEach(async () => {
256
+ angleTransmuterPoolUSD = new AngleTransmuterEventPool(
257
+ `${dexKey}_USD`,
258
+ network,
259
+ dexHelper,
260
+ logger,
261
+ configUSDArbitrum,
262
+ );
263
+ });
264
+
265
+ Object.entries(eventsToTestUSD).forEach(
266
+ ([poolAddress, events]: [string, EventMappings]) => {
267
+ describe(`Events for ${poolAddress}`, () => {
268
+ Object.entries(events).forEach(
269
+ ([eventName, blockNumbers]: [string, number[]]) => {
270
+ describe(`${eventName}`, () => {
271
+ blockNumbers.forEach((blockNumber: number) => {
272
+ it(`State after ${blockNumber}`, async () => {
273
+ await testEventSubscriber(
274
+ angleTransmuterPoolUSD,
275
+ angleTransmuterPoolUSD.addressesSubscribed,
276
+ (_blockNumber: number) =>
277
+ fetchPoolState(
278
+ angleTransmuterPoolUSD,
279
+ _blockNumber,
280
+ poolAddress,
281
+ ),
282
+ blockNumber,
283
+ `${dexKey}_${poolAddress}`,
284
+ dexHelper.provider,
285
+ );
286
+ });
287
+ });
288
+ });
289
+ },
290
+ );
291
+ });
292
+ },
293
+ );
294
+ });
295
+
296
+ describe('AngleTransmuter EventPool - Base', () => {
297
+ const dexKey = 'AngleTransmuter';
298
+ const network = Network.BASE;
299
+ const dexHelper = new DummyDexHelper(network);
300
+ const logger = dexHelper.getLogger(dexKey);
301
+ let angleTransmuterPoolUSD: AngleTransmuterEventPool;
302
+
303
+ // poolAddress -> EventMappings
304
+
305
+ const eventsToTestUSD: Record<Address, EventMappings> = {
306
+ //Transmuter Events
307
+ '0x222222880e079445Df703c0604706E71a538Fd4f': {
308
+ FeesSet: [],
309
+ RedemptionCurveParamsSet: [],
310
+ OracleSet: [],
311
+ Swap: [],
312
+ Redeemed: [],
313
+ ReservesAdjusted: [],
314
+ CollateralAdded: [],
315
+ CollateralRevoked: [],
316
+ CollateralWhitelistStatusUpdated: [],
317
+ WhitelistStatusToggled: [],
318
+ StablecoinCapSet: [],
319
+ },
320
+ // Chainlink
321
+ '0x7e860098F58bBFC8648a4311b374B1D669a2bc6B': {
322
+ AnswerUpdated: [15401397],
323
+ },
324
+ };
325
+
326
+ beforeEach(async () => {
327
+ angleTransmuterPoolUSD = new AngleTransmuterEventPool(
328
+ `${dexKey}_USD`,
329
+ network,
330
+ dexHelper,
331
+ logger,
332
+ configUSDBase,
333
+ );
334
+ });
335
+
336
+ Object.entries(eventsToTestUSD).forEach(
337
+ ([poolAddress, events]: [string, EventMappings]) => {
338
+ describe(`Events for ${poolAddress}`, () => {
339
+ Object.entries(events).forEach(
340
+ ([eventName, blockNumbers]: [string, number[]]) => {
341
+ describe(`${eventName}`, () => {
342
+ blockNumbers.forEach((blockNumber: number) => {
343
+ it(`State after ${blockNumber}`, async () => {
344
+ await testEventSubscriber(
345
+ angleTransmuterPoolUSD,
346
+ angleTransmuterPoolUSD.addressesSubscribed,
347
+ (_blockNumber: number) =>
348
+ fetchPoolState(
349
+ angleTransmuterPoolUSD,
350
+ _blockNumber,
351
+ poolAddress,
352
+ ),
353
+ blockNumber,
354
+ `${dexKey}_${poolAddress}`,
355
+ dexHelper.provider,
356
+ );
357
+ });
358
+ });
359
+ });
360
+ },
361
+ );
362
+ });
363
+ },
364
+ );
365
+ });