@paraswap/dex-lib 4.1.10 → 4.1.11-erc-4626.0

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 (260) hide show
  1. package/.vscode/launch.json +53 -0
  2. package/.vscode/settings.json +2 -0
  3. package/.vscode/tasks.json +15 -0
  4. package/build/abi/ERC4626.json +757 -0
  5. package/build/abi/{integral/pool.json → inception/inception-ineth-pool.json} +558 -537
  6. package/build/abi/inception/inception-ratio-feed.json +329 -0
  7. package/build/abi/inception/inception-vault.json +991 -0
  8. package/build/abi/uniswap-v3/AlienBaseV3Router.abi.json +52 -0
  9. package/build/abi/usual-m-smart-m/usualM.abi.json +483 -0
  10. package/build/abi/{integral/relayer.json → wombat/pool.json} +474 -721
  11. package/build/dex/aave-v1/aave-v1.d.ts +2 -1
  12. package/build/dex/aave-v1/aave-v1.js +23 -0
  13. package/build/dex/aave-v1/aave-v1.js.map +1 -1
  14. package/build/dex/aave-v2/tokens-avalanche.json +44 -0
  15. package/build/dex/aave-v2/tokens-mainnet.json +188 -0
  16. package/build/dex/aave-v2/tokens-polygon.json +44 -0
  17. package/build/dex/balancer-v3/abi/balancerBatchRouter.d.ts +729 -0
  18. package/build/dex/balancer-v3/abi/balancerBatchRouter.js +732 -0
  19. package/build/dex/balancer-v3/abi/balancerBatchRouter.js.map +1 -0
  20. package/build/dex/balancer-v3/abi/balancerRouter.d.ts +1406 -0
  21. package/build/dex/balancer-v3/abi/balancerRouter.js +1175 -0
  22. package/build/dex/balancer-v3/abi/balancerRouter.js.map +1 -0
  23. package/build/dex/balancer-v3/abi/vaultExtension.V3.d.ts +2081 -0
  24. package/build/dex/balancer-v3/abi/vaultExtension.V3.js +1851 -0
  25. package/build/dex/balancer-v3/abi/vaultExtension.V3.js.map +1 -0
  26. package/build/dex/balancer-v3/balancer-v3-sepolia-pools.d.ts +34 -0
  27. package/build/dex/balancer-v3/balancer-v3-sepolia-pools.js +406 -0
  28. package/build/dex/balancer-v3/balancer-v3-sepolia-pools.js.map +1 -0
  29. package/build/dex/balancer-v3/gyroECLPPool.d.ts +11 -0
  30. package/build/dex/balancer-v3/gyroECLPPool.js +6 -0
  31. package/build/dex/balancer-v3/gyroECLPPool.js.map +1 -0
  32. package/build/dex/balancer-v3/utils.d.ts +2 -0
  33. package/build/dex/balancer-v3/utils.js +11 -0
  34. package/build/dex/balancer-v3/utils.js.map +1 -0
  35. package/build/dex/erc4626/config.d.ts +3 -0
  36. package/build/dex/erc4626/config.js +42 -0
  37. package/build/dex/erc4626/config.js.map +1 -0
  38. package/build/dex/erc4626/constants.d.ts +3 -0
  39. package/build/dex/erc4626/constants.js +7 -0
  40. package/build/dex/erc4626/constants.js.map +1 -0
  41. package/build/dex/erc4626/erc-4626-pool.d.ts +24 -0
  42. package/build/dex/erc4626/erc-4626-pool.js +92 -0
  43. package/build/dex/erc4626/erc-4626-pool.js.map +1 -0
  44. package/build/dex/erc4626/erc4626.d.ts +46 -0
  45. package/build/dex/erc4626/erc4626.js +247 -0
  46. package/build/dex/erc4626/erc4626.js.map +1 -0
  47. package/build/dex/erc4626/scripts/validate-state.d.ts +0 -0
  48. package/build/dex/erc4626/scripts/validate-state.js +146 -0
  49. package/build/dex/erc4626/scripts/validate-state.js.map +1 -0
  50. package/build/dex/erc4626/types.d.ts +18 -0
  51. package/build/dex/erc4626/types.js +11 -0
  52. package/build/dex/erc4626/types.js.map +1 -0
  53. package/build/dex/inception/config.d.ts +4 -0
  54. package/build/dex/inception/config.js +109 -0
  55. package/build/dex/inception/config.js.map +1 -0
  56. package/build/dex/inception/inception-event-pool.d.ts +16 -0
  57. package/build/dex/inception/inception-event-pool.js +49 -0
  58. package/build/dex/inception/inception-event-pool.js.map +1 -0
  59. package/build/dex/inception/inception.d.ts +43 -0
  60. package/build/dex/inception/inception.js +180 -0
  61. package/build/dex/inception/inception.js.map +1 -0
  62. package/build/dex/inception/tokens.d.ts +9 -0
  63. package/build/dex/inception/tokens.js +28 -0
  64. package/build/dex/inception/tokens.js.map +1 -0
  65. package/build/dex/inception/types.d.ts +22 -0
  66. package/build/dex/{m-token → inception}/types.js.map +1 -1
  67. package/build/dex/inception/utils.d.ts +7 -0
  68. package/build/dex/inception/utils.js +58 -0
  69. package/build/dex/inception/utils.js.map +1 -0
  70. package/build/dex/index.js +2 -2
  71. package/build/dex/index.js.map +1 -1
  72. package/build/dex/jarvis.d.ts +2 -1
  73. package/build/dex/jarvis.js +58 -0
  74. package/build/dex/jarvis.js.map +1 -1
  75. package/build/dex/maker-psm/scripts/gem.abi.json +136 -0
  76. package/build/dex/maker-psm/scripts/validate-state.d.ts +0 -0
  77. package/build/dex/maker-psm/scripts/validate-state.js +185 -0
  78. package/build/dex/maker-psm/scripts/validate-state.js.map +1 -0
  79. package/build/dex/maker-psm/scripts/vat.abi.json +243 -0
  80. package/build/dex/platypus/platypus.d.ts +2 -1
  81. package/build/dex/platypus/platypus.js +45 -0
  82. package/build/dex/platypus/platypus.js.map +1 -1
  83. package/build/dex/solidly-v3/scripts/check-event-pool-event.d.ts +1 -0
  84. package/build/dex/solidly-v3/scripts/check-event-pool-event.js +53 -0
  85. package/build/dex/solidly-v3/scripts/check-event-pool-event.js.map +1 -0
  86. package/build/dex/stable-pool.js +1 -8
  87. package/build/dex/stable-pool.js.map +1 -1
  88. package/build/dex/swaap-v1/swaap-v1.d.ts +2 -1
  89. package/build/dex/swaap-v1/swaap-v1.js +14 -0
  90. package/build/dex/swaap-v1/swaap-v1.js.map +1 -1
  91. package/build/dex/uniswap-v3/forks/alien-base-v3/alien-base-v3.d.ts +17 -0
  92. package/build/dex/uniswap-v3/forks/alien-base-v3/alien-base-v3.js +64 -0
  93. package/build/dex/uniswap-v3/forks/alien-base-v3/alien-base-v3.js.map +1 -0
  94. package/build/dex/uniswap-v3/forks/alien-v3/alien-v3.d.ts +17 -0
  95. package/build/dex/uniswap-v3/forks/alien-v3/alien-v3.js +79 -0
  96. package/build/dex/uniswap-v3/forks/alien-v3/alien-v3.js.map +1 -0
  97. package/build/dex/uniswap-v3/uniswap-v3-pricing.d.ts +4 -0
  98. package/build/dex/uniswap-v3/uniswap-v3-pricing.js +43 -0
  99. package/build/dex/uniswap-v3/uniswap-v3-pricing.js.map +1 -0
  100. package/build/dex/uniswap-v3/uniswap-v3-worker.d.ts +1 -0
  101. package/build/dex/uniswap-v3/uniswap-v3-worker.js +10 -0
  102. package/build/dex/uniswap-v3/uniswap-v3-worker.js.map +1 -0
  103. package/build/dex/uniswap-v4/config.js +0 -43
  104. package/build/dex/uniswap-v4/config.js.map +1 -1
  105. package/build/dex/uniswap-v4/encoder.js +2 -12
  106. package/build/dex/uniswap-v4/encoder.js.map +1 -1
  107. package/build/dex/uniswap-v4/types.d.ts +2 -36
  108. package/build/dex/uniswap-v4/uniswap-v4.d.ts +6 -6
  109. package/build/dex/uniswap-v4/uniswap-v4.js +47 -29
  110. package/build/dex/uniswap-v4/uniswap-v4.js.map +1 -1
  111. package/build/dex/usual/usual-m-smart-m.d.ts +17 -0
  112. package/build/dex/usual/usual-m-smart-m.js +50 -0
  113. package/build/dex/usual/usual-m-smart-m.js.map +1 -0
  114. package/build/dex/usual-m-smart-m/config.d.ts +3 -0
  115. package/build/dex/usual-m-smart-m/config.js +13 -0
  116. package/build/dex/usual-m-smart-m/config.js.map +1 -0
  117. package/build/dex/usual-m-smart-m/types.d.ts +7 -0
  118. package/build/dex/usual-m-smart-m/types.js +3 -0
  119. package/build/dex/usual-m-smart-m/types.js.map +1 -0
  120. package/build/dex/usual-m-smart-m/usual-m-smart-m.d.ts +35 -0
  121. package/build/dex/usual-m-smart-m/usual-m-smart-m.js +161 -0
  122. package/build/dex/usual-m-smart-m/usual-m-smart-m.js.map +1 -0
  123. package/build/dex/{m-token → usual-m-usd0}/config.d.ts +2 -2
  124. package/build/dex/usual-m-usd0/config.js +14 -0
  125. package/build/dex/usual-m-usd0/config.js.map +1 -0
  126. package/build/dex/usual-m-usd0/types.d.ts +8 -0
  127. package/build/dex/usual-m-usd0/types.js +3 -0
  128. package/build/dex/usual-m-usd0/types.js.map +1 -0
  129. package/build/dex/usual-m-usd0/usual-m-usd0.d.ts +35 -0
  130. package/build/dex/usual-m-usd0/usual-m-usd0.js +159 -0
  131. package/build/dex/usual-m-usd0/usual-m-usd0.js.map +1 -0
  132. package/build/dex/zerox/index.d.ts +4 -26
  133. package/build/dex/zerox/index.js +50 -42
  134. package/build/dex/zerox/index.js.map +1 -1
  135. package/build/dex/zerox/types.d.ts +29 -0
  136. package/build/dex/zerox/types.js +8 -1
  137. package/build/dex/zerox/types.js.map +1 -1
  138. package/package.json +1 -1
  139. package/src/dex/erc4626/config.ts +41 -0
  140. package/src/dex/{wusdm → erc4626}/constants.ts +2 -0
  141. package/src/dex/{wusdm/wusdm-pool.ts → erc4626/erc-4626-pool.ts} +38 -15
  142. package/src/dex/erc4626/erc4626-event.test.ts +134 -0
  143. package/src/dex/{wusdm/wusdm-integration.test.ts → erc4626/erc4626-integration.test.ts} +3 -3
  144. package/src/dex/{wusdm/wusdm.ts → erc4626/erc4626.ts} +69 -64
  145. package/src/dex/erc4626/old-events.test.ts +249 -0
  146. package/src/dex/erc4626/scripts/validate-state.ts +168 -0
  147. package/src/dex/{wusdm → erc4626}/types.ts +6 -6
  148. package/src/dex/index.ts +2 -2
  149. package/tests/constants-e2e.ts +1 -1
  150. package/.idea/aws.xml +0 -17
  151. package/.idea/codeStyles/Project.xml +0 -19
  152. package/.idea/codeStyles/codeStyleConfig.xml +0 -5
  153. package/.idea/misc.xml +0 -6
  154. package/.idea/modules.xml +0 -8
  155. package/.idea/paraswap-dex-lib.iml +0 -9
  156. package/.idea/prettier.xml +0 -7
  157. package/.idea/vcs.xml +0 -6
  158. package/build/abi/integral/factory.json +0 -333
  159. package/build/abi/integral/oracle.json +0 -501
  160. package/build/abi/uniswap-v4/pool-manager.abi.json +0 -1366
  161. package/build/abi/uniswap-v4/state-view.abi.json +0 -365
  162. package/build/dex/fluid-dex/fluid-dex-generate-pool.d.ts +0 -49
  163. package/build/dex/fluid-dex/fluid-dex-generate-pool.js +0 -104
  164. package/build/dex/fluid-dex/fluid-dex-generate-pool.js.map +0 -1
  165. package/build/dex/integral/config.d.ts +0 -4
  166. package/build/dex/integral/config.js +0 -20
  167. package/build/dex/integral/config.js.map +0 -1
  168. package/build/dex/integral/context.d.ts +0 -40
  169. package/build/dex/integral/context.js +0 -158
  170. package/build/dex/integral/context.js.map +0 -1
  171. package/build/dex/integral/integral-factory.d.ts +0 -24
  172. package/build/dex/integral/integral-factory.js +0 -95
  173. package/build/dex/integral/integral-factory.js.map +0 -1
  174. package/build/dex/integral/integral-pool.d.ts +0 -50
  175. package/build/dex/integral/integral-pool.js +0 -149
  176. package/build/dex/integral/integral-pool.js.map +0 -1
  177. package/build/dex/integral/integral-pricing.d.ts +0 -18
  178. package/build/dex/integral/integral-pricing.js +0 -114
  179. package/build/dex/integral/integral-pricing.js.map +0 -1
  180. package/build/dex/integral/integral-relayer.d.ts +0 -42
  181. package/build/dex/integral/integral-relayer.js +0 -192
  182. package/build/dex/integral/integral-relayer.js.map +0 -1
  183. package/build/dex/integral/integral-token.d.ts +0 -27
  184. package/build/dex/integral/integral-token.js +0 -59
  185. package/build/dex/integral/integral-token.js.map +0 -1
  186. package/build/dex/integral/integral.d.ts +0 -41
  187. package/build/dex/integral/integral.js +0 -376
  188. package/build/dex/integral/integral.js.map +0 -1
  189. package/build/dex/integral/types.d.ts +0 -85
  190. package/build/dex/integral/types.js +0 -9
  191. package/build/dex/integral/types.js.map +0 -1
  192. package/build/dex/integral/utils-e2e.d.ts +0 -9
  193. package/build/dex/integral/utils-e2e.js +0 -131
  194. package/build/dex/integral/utils-e2e.js.map +0 -1
  195. package/build/dex/integral/utils.d.ts +0 -17
  196. package/build/dex/integral/utils.js +0 -94
  197. package/build/dex/integral/utils.js.map +0 -1
  198. package/build/dex/m-token/config.js +0 -19
  199. package/build/dex/m-token/config.js.map +0 -1
  200. package/build/dex/m-token/m-token.d.ts +0 -29
  201. package/build/dex/m-token/m-token.js +0 -145
  202. package/build/dex/m-token/m-token.js.map +0 -1
  203. package/build/dex/m-token/m-wrapped-m.d.ts +0 -17
  204. package/build/dex/m-token/m-wrapped-m.js +0 -50
  205. package/build/dex/m-token/m-wrapped-m.js.map +0 -1
  206. package/build/dex/m-token/types.d.ts +0 -12
  207. package/build/dex/trader-joe-v2.1/optimizer.d.ts +0 -2
  208. package/build/dex/trader-joe-v2.1/optimizer.js +0 -47
  209. package/build/dex/trader-joe-v2.1/optimizer.js.map +0 -1
  210. package/build/dex/uniswap-v4/constants.d.ts +0 -7
  211. package/build/dex/uniswap-v4/constants.js +0 -18
  212. package/build/dex/uniswap-v4/constants.js.map +0 -1
  213. package/build/dex/uniswap-v4/contract-math/BitMath.d.ts +0 -4
  214. package/build/dex/uniswap-v4/contract-math/BitMath.js +0 -93
  215. package/build/dex/uniswap-v4/contract-math/BitMath.js.map +0 -1
  216. package/build/dex/uniswap-v4/contract-math/FixedPoint128.d.ts +0 -3
  217. package/build/dex/uniswap-v4/contract-math/FixedPoint128.js +0 -8
  218. package/build/dex/uniswap-v4/contract-math/FixedPoint128.js.map +0 -1
  219. package/build/dex/uniswap-v4/contract-math/FixedPoint96.d.ts +0 -4
  220. package/build/dex/uniswap-v4/contract-math/FixedPoint96.js +0 -9
  221. package/build/dex/uniswap-v4/contract-math/FixedPoint96.js.map +0 -1
  222. package/build/dex/uniswap-v4/contract-math/FullMath.d.ts +0 -4
  223. package/build/dex/uniswap-v4/contract-math/FullMath.js +0 -19
  224. package/build/dex/uniswap-v4/contract-math/FullMath.js.map +0 -1
  225. package/build/dex/uniswap-v4/contract-math/LiquidityMath.d.ts +0 -3
  226. package/build/dex/uniswap-v4/contract-math/LiquidityMath.js +0 -22
  227. package/build/dex/uniswap-v4/contract-math/LiquidityMath.js.map +0 -1
  228. package/build/dex/uniswap-v4/contract-math/SqrtPriceMath.d.ts +0 -10
  229. package/build/dex/uniswap-v4/contract-math/SqrtPriceMath.js +0 -91
  230. package/build/dex/uniswap-v4/contract-math/SqrtPriceMath.js.map +0 -1
  231. package/build/dex/uniswap-v4/contract-math/SwapMath.d.ts +0 -8
  232. package/build/dex/uniswap-v4/contract-math/SwapMath.js +0 -70
  233. package/build/dex/uniswap-v4/contract-math/SwapMath.js.map +0 -1
  234. package/build/dex/uniswap-v4/contract-math/TickBitMap.d.ts +0 -7
  235. package/build/dex/uniswap-v4/contract-math/TickBitMap.js +0 -86
  236. package/build/dex/uniswap-v4/contract-math/TickBitMap.js.map +0 -1
  237. package/build/dex/uniswap-v4/contract-math/TickMath.d.ts +0 -8
  238. package/build/dex/uniswap-v4/contract-math/TickMath.js +0 -162
  239. package/build/dex/uniswap-v4/contract-math/TickMath.js.map +0 -1
  240. package/build/dex/uniswap-v4/contract-math/UnsafeMath.d.ts +0 -3
  241. package/build/dex/uniswap-v4/contract-math/UnsafeMath.js +0 -10
  242. package/build/dex/uniswap-v4/contract-math/UnsafeMath.js.map +0 -1
  243. package/build/dex/uniswap-v4/contract-math/uniswap-v4-math.d.ts +0 -8
  244. package/build/dex/uniswap-v4/contract-math/uniswap-v4-math.js +0 -12
  245. package/build/dex/uniswap-v4/contract-math/uniswap-v4-math.js.map +0 -1
  246. package/build/dex/uniswap-v4/subgraph.d.ts +0 -5
  247. package/build/dex/uniswap-v4/subgraph.js +0 -80
  248. package/build/dex/uniswap-v4/subgraph.js.map +0 -1
  249. package/build/dex/uniswap-v4/uniswap-v4-pool-manager.d.ts +0 -30
  250. package/build/dex/uniswap-v4/uniswap-v4-pool-manager.js +0 -139
  251. package/build/dex/uniswap-v4/uniswap-v4-pool-manager.js.map +0 -1
  252. package/build/dex/uniswap-v4/utils.d.ts +0 -2
  253. package/build/dex/uniswap-v4/utils.js +0 -15
  254. package/build/dex/uniswap-v4/utils.js.map +0 -1
  255. package/src/dex/wusdm/config.ts +0 -43
  256. package/src/dex/wusdm/wusdm-event.test.ts +0 -104
  257. /package/build/dex/{m-token → inception}/types.js +0 -0
  258. /package/src/abi/{wUSDM.json → ERC4626.json} +0 -0
  259. /package/src/dex/{wusdm/wusdm-e2e.test.ts → erc4626/erc4626-e2e.test.ts} +0 -0
  260. /package/src/dex/{wusdm/wusdm-gas-estimation.test.ts → erc4626/erc4626-gas-estimation.test.ts} +0 -0
@@ -1,3 +1,4 @@
1
+ import { Address } from '@paraswap/sdk';
1
2
  import { NumberAsString } from '../../types';
2
3
  export declare enum OrderStatus {
3
4
  INVALID = 0,
@@ -41,4 +42,32 @@ export interface ZeroXSignedOrderV4 {
41
42
  signature: any;
42
43
  }
43
44
  export declare type ZeroXSignedOrder = ZeroXSignedOrderV2 | ZeroXSignedOrderV4;
45
+ export declare enum ZeroXFunctions {
46
+ swapOnZeroXv2 = "swapOnZeroXv2",
47
+ swapOnZeroXv4 = "swapOnZeroXv4",
48
+ swapOnZeroXv2WithPermit = "swapOnZeroXv2WithPermit",
49
+ swapOnZeroXv4WithPermit = "swapOnZeroXv4WithPermit"
50
+ }
51
+ export declare type ZeroXData = {
52
+ version: number;
53
+ order: ZeroXSignedOrder;
54
+ };
55
+ export declare type SwapOnZeroXParam = [
56
+ srcToken: Address,
57
+ destToken: Address,
58
+ srcAmount: NumberAsString,
59
+ destAmount: NumberAsString,
60
+ exchange: Address,
61
+ payload: string
62
+ ];
63
+ export declare type SwapOnZeroXWithPermitParam = [
64
+ srcToken: Address,
65
+ destToken: Address,
66
+ srcAmount: NumberAsString,
67
+ destAmount: NumberAsString,
68
+ exchange: Address,
69
+ payload: string,
70
+ permit: string
71
+ ];
72
+ export declare type ZeroXParam = SwapOnZeroXParam | SwapOnZeroXWithPermitParam;
44
73
  export {};
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.OrderStatus = void 0;
3
+ exports.ZeroXFunctions = exports.OrderStatus = void 0;
4
4
  var OrderStatus;
5
5
  (function (OrderStatus) {
6
6
  OrderStatus[OrderStatus["INVALID"] = 0] = "INVALID";
@@ -11,4 +11,11 @@ var OrderStatus;
11
11
  OrderStatus[OrderStatus["FULLY_FILLED"] = 5] = "FULLY_FILLED";
12
12
  OrderStatus[OrderStatus["CANCELLED"] = 6] = "CANCELLED";
13
13
  })(OrderStatus = exports.OrderStatus || (exports.OrderStatus = {}));
14
+ var ZeroXFunctions;
15
+ (function (ZeroXFunctions) {
16
+ ZeroXFunctions["swapOnZeroXv2"] = "swapOnZeroXv2";
17
+ ZeroXFunctions["swapOnZeroXv4"] = "swapOnZeroXv4";
18
+ ZeroXFunctions["swapOnZeroXv2WithPermit"] = "swapOnZeroXv2WithPermit";
19
+ ZeroXFunctions["swapOnZeroXv4WithPermit"] = "swapOnZeroXv4WithPermit";
20
+ })(ZeroXFunctions = exports.ZeroXFunctions || (exports.ZeroXFunctions = {}));
14
21
  //# sourceMappingURL=types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/dex/zerox/types.ts"],"names":[],"mappings":";;;AAEA,IAAY,WAQX;AARD,WAAY,WAAW;IACrB,mDAAO,CAAA;IACP,yFAA0B,CAAA;IAC1B,yFAA0B,CAAA;IAC1B,qDAAQ,CAAA;IACR,mDAAO,CAAA;IACP,6DAAY,CAAA;IACZ,uDAAS,CAAA;AACX,CAAC,EARW,WAAW,GAAX,mBAAW,KAAX,mBAAW,QAQtB"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/dex/zerox/types.ts"],"names":[],"mappings":";;;AAGA,IAAY,WAQX;AARD,WAAY,WAAW;IACrB,mDAAO,CAAA;IACP,yFAA0B,CAAA;IAC1B,yFAA0B,CAAA;IAC1B,qDAAQ,CAAA;IACR,mDAAO,CAAA;IACP,6DAAY,CAAA;IACZ,uDAAS,CAAA;AACX,CAAC,EARW,WAAW,GAAX,mBAAW,KAAX,mBAAW,QAQtB;AAuCD,IAAY,cAKX;AALD,WAAY,cAAc;IACxB,iDAA+B,CAAA;IAC/B,iDAA+B,CAAA;IAC/B,qEAAmD,CAAA;IACnD,qEAAmD,CAAA;AACrD,CAAC,EALW,cAAc,GAAd,sBAAc,KAAd,sBAAc,QAKzB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@paraswap/dex-lib",
3
- "version": "4.1.10",
3
+ "version": "4.1.11-erc-4626.0",
4
4
  "main": "build/index.js",
5
5
  "types": "build/index.d.ts",
6
6
  "repository": "https://github.com/paraswap/paraswap-dex-lib",
@@ -0,0 +1,41 @@
1
+ import { ERC4626Params } from './types';
2
+ import { DexConfigMap } from '../../types';
3
+ import { Network } from '../../constants';
4
+
5
+ export const ERC4626Config: DexConfigMap<ERC4626Params> = {
6
+ wUSDM: {
7
+ [Network.MAINNET]: {
8
+ vault: '0x57F5E098CaD7A3D1Eed53991D4d66C45C9AF7812',
9
+ asset: '0x59D9356E565Ab3A36dD77763Fc0d87fEaf85508C',
10
+ },
11
+ [Network.OPTIMISM]: {
12
+ vault: '0x57F5E098CaD7A3D1Eed53991D4d66C45C9AF7812',
13
+ asset: '0x59D9356E565Ab3A36dD77763Fc0d87fEaf85508C',
14
+ },
15
+ [Network.ARBITRUM]: {
16
+ vault: '0x57F5E098CaD7A3D1Eed53991D4d66C45C9AF7812',
17
+ asset: '0x59D9356E565Ab3A36dD77763Fc0d87fEaf85508C',
18
+ },
19
+ [Network.BASE]: {
20
+ vault: '0x57F5E098CaD7A3D1Eed53991D4d66C45C9AF7812',
21
+ asset: '0x59D9356E565Ab3A36dD77763Fc0d87fEaf85508C',
22
+ },
23
+ [Network.POLYGON]: {
24
+ vault: '0x57F5E098CaD7A3D1Eed53991D4d66C45C9AF7812',
25
+ asset: '0x59D9356E565Ab3A36dD77763Fc0d87fEaf85508C',
26
+ },
27
+ },
28
+ // might give 1wei difference on BUY
29
+ sDAI: {
30
+ [Network.GNOSIS]: {
31
+ vault: '0xaf204776c7245bF4147c2612BF6e5972Ee483701', // sDAI
32
+ asset: '0xe91D153E0b41518A2Ce8Dd3D7944Fa863463a97d', // WXDAI
33
+ },
34
+ },
35
+ wUSDL: {
36
+ [Network.MAINNET]: {
37
+ vault: '0x7751E2F4b8ae93EF6B79d86419d42FE3295A4559', // wUSDL
38
+ asset: '0xbdC7c08592Ee4aa51D06C27Ee23D5087D65aDbcD', // USDL
39
+ },
40
+ },
41
+ };
@@ -2,3 +2,5 @@ export const WITHDRAW_TOPIC =
2
2
  '0xfbde797d201c681b91056529119e0b02407c7bb96a4a2c75c01fc9667232c8db';
3
3
  export const DEPOSIT_TOPIC =
4
4
  '0xdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d7';
5
+ export const TRANSFER_TOPIC =
6
+ '0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef';
@@ -4,11 +4,11 @@ import { Interface } from '@ethersproject/abi';
4
4
  import type { IDexHelper } from '../../dex-helper';
5
5
  import type { DeepReadonly } from 'ts-essentials';
6
6
  import type { Address, BlockHeader, Log, Logger } from '../../types';
7
- import type { WusdmPoolState } from './types';
7
+ import type { ERC4626PoolState } from './types';
8
8
  import { uint256ToBigInt } from '../../lib/decoders';
9
9
  import { Network } from '../../constants';
10
10
 
11
- export class WusdmEventPool extends StatefulEventSubscriber<WusdmPoolState> {
11
+ export class ERC4626EventPool extends StatefulEventSubscriber<ERC4626PoolState> {
12
12
  logDecoder: (log: Log) => any;
13
13
 
14
14
  constructor(
@@ -16,23 +16,34 @@ export class WusdmEventPool extends StatefulEventSubscriber<WusdmPoolState> {
16
16
  network: Network,
17
17
  poolName: string,
18
18
  protected dexHelper: IDexHelper,
19
- private wrapperAddress: Address,
19
+ private vault: Address,
20
+ private asset: Address,
20
21
  private wrapperInterface: Interface,
21
22
  logger: Logger,
22
23
  private depositTopic: string,
23
24
  private withdrawTopic: string,
25
+ private transferTopic: string,
24
26
  ) {
25
27
  super(parentName, poolName, dexHelper, logger);
26
- this.addressesSubscribed = [wrapperAddress];
28
+ this.addressesSubscribed = [vault, asset];
29
+ this.vault = vault.toLowerCase();
30
+ this.asset = asset.toLowerCase();
27
31
  this.logDecoder = (log: Log) => this.wrapperInterface.parseLog(log);
28
32
  }
29
33
 
30
34
  protected async processLog(
31
- state: DeepReadonly<WusdmPoolState>,
35
+ state: DeepReadonly<ERC4626PoolState>,
32
36
  log: Readonly<Log>,
33
37
  blockHeader: Readonly<BlockHeader>,
34
- ): Promise<DeepReadonly<WusdmPoolState> | null> {
38
+ ): Promise<DeepReadonly<ERC4626PoolState> | null> {
35
39
  const event = this.logDecoder(log);
40
+ if (
41
+ log.topics[0] === this.transferTopic &&
42
+ log.address.toLowerCase() === this.asset &&
43
+ event.args.to.toLowerCase() === this.vault
44
+ ) {
45
+ return this.handleAssetTransferToVault(event, state, log);
46
+ }
36
47
  if (log.topics[0] === this.depositTopic) {
37
48
  return this.handleDeposit(event, state, log);
38
49
  }
@@ -44,15 +55,15 @@ export class WusdmEventPool extends StatefulEventSubscriber<WusdmPoolState> {
44
55
 
45
56
  async generateState(
46
57
  blockNumber: number | 'latest' = 'latest',
47
- ): Promise<DeepReadonly<WusdmPoolState>> {
58
+ ): Promise<DeepReadonly<ERC4626PoolState>> {
48
59
  const calls = [
49
60
  {
50
- target: this.wrapperAddress,
61
+ target: this.vault,
51
62
  callData: this.wrapperInterface.encodeFunctionData('totalAssets', []),
52
63
  decodeFunction: uint256ToBigInt,
53
64
  },
54
65
  {
55
- target: this.wrapperAddress,
66
+ target: this.vault,
56
67
  callData: this.wrapperInterface.encodeFunctionData('totalSupply', []),
57
68
  decodeFunction: uint256ToBigInt,
58
69
  },
@@ -71,7 +82,7 @@ export class WusdmEventPool extends StatefulEventSubscriber<WusdmPoolState> {
71
82
  };
72
83
  }
73
84
 
74
- async getOrGenerateState(blockNumber: number): Promise<WusdmPoolState> {
85
+ async getOrGenerateState(blockNumber: number): Promise<ERC4626PoolState> {
75
86
  let state = this.getState(blockNumber);
76
87
  if (!state) {
77
88
  state = await this.generateState(blockNumber);
@@ -82,20 +93,32 @@ export class WusdmEventPool extends StatefulEventSubscriber<WusdmPoolState> {
82
93
 
83
94
  async handleDeposit(
84
95
  event: any,
85
- state: DeepReadonly<WusdmPoolState>,
96
+ state: DeepReadonly<ERC4626PoolState>,
86
97
  log: Readonly<Log>,
87
- ): Promise<DeepReadonly<WusdmPoolState>> {
98
+ ): Promise<DeepReadonly<ERC4626PoolState>> {
88
99
  return {
89
- totalAssets: state.totalAssets + BigInt(event.args.assets),
100
+ // skip assets update, as it should be already handled in handleAssetTransferToVault
101
+ totalAssets: state.totalAssets,
90
102
  totalShares: state.totalShares + BigInt(event.args.shares),
91
103
  };
92
104
  }
93
105
 
106
+ async handleAssetTransferToVault(
107
+ event: any,
108
+ state: DeepReadonly<ERC4626PoolState>,
109
+ log: Readonly<Log>,
110
+ ): Promise<DeepReadonly<ERC4626PoolState>> {
111
+ return {
112
+ totalAssets: state.totalAssets + BigInt(event.args.value),
113
+ totalShares: state.totalShares,
114
+ };
115
+ }
116
+
94
117
  async handleWithdraw(
95
118
  event: any,
96
- state: DeepReadonly<WusdmPoolState>,
119
+ state: DeepReadonly<ERC4626PoolState>,
97
120
  log: Readonly<Log>,
98
- ): Promise<DeepReadonly<WusdmPoolState>> {
121
+ ): Promise<DeepReadonly<ERC4626PoolState>> {
99
122
  return {
100
123
  totalAssets: BigInt(state.totalAssets) - BigInt(event.args.assets),
101
124
  totalShares: BigInt(state.totalShares) - BigInt(event.args.shares),
@@ -0,0 +1,134 @@
1
+ import dotenv from 'dotenv';
2
+
3
+ dotenv.config();
4
+
5
+ import { ERC4626EventPool } from './erc-4626-pool';
6
+ import { ERC4626Config } from './config';
7
+ import { Network } from '../../constants';
8
+ import { DummyDexHelper } from '../../dex-helper/index';
9
+ import ERC4626_ABI from '../../abi/ERC4626.json';
10
+ import ERC20ABI from '../../abi/erc20.json';
11
+ import { DEPOSIT_TOPIC, TRANSFER_TOPIC, WITHDRAW_TOPIC } from './constants';
12
+ import { testEventSubscriber } from '../../../tests/utils-events';
13
+ import { ERC4626PoolState } from './types';
14
+
15
+ import { Interface } from '@ethersproject/abi';
16
+ import _ from 'lodash';
17
+
18
+ jest.setTimeout(50 * 1000);
19
+ const networks = [
20
+ Network.MAINNET,
21
+ Network.ARBITRUM,
22
+ Network.BASE,
23
+ Network.POLYGON,
24
+ Network.OPTIMISM,
25
+ Network.GNOSIS,
26
+ ];
27
+
28
+ async function fetchPoolState(
29
+ wusdmPool: ERC4626EventPool,
30
+ blockNumber: number,
31
+ ): Promise<ERC4626PoolState> {
32
+ const eventState = wusdmPool.getState(blockNumber);
33
+ if (eventState) return eventState;
34
+ const onChainState = await wusdmPool.generateState(blockNumber);
35
+ wusdmPool.setState(onChainState, blockNumber);
36
+ return onChainState;
37
+ }
38
+
39
+ describe('Wusdm', function () {
40
+ const dexKey = 'Wusdm';
41
+ const multichainBlockNumbers: {
42
+ [network: string]: { [eventName: string]: number[] };
43
+ } = {
44
+ [Network.MAINNET]: {
45
+ deposit: [20808811, 20692902, 20685702],
46
+ withdraw: [20873278, 20869272, 20862960],
47
+ },
48
+ [Network.ARBITRUM]: {
49
+ deposit: [259463653, 259456755, 259448821],
50
+ withdraw: [259421319, 259420791, 259419437],
51
+ },
52
+ [Network.BASE]: {
53
+ deposit: [20521934, 20460747, 20436449],
54
+ withdraw: [20492729, 20409282, 20274826],
55
+ },
56
+ [Network.POLYGON]: {
57
+ deposit: [62509681, 62359608, 62160587],
58
+ withdraw: [62505429, 62381506, 62125779],
59
+ },
60
+ [Network.OPTIMISM]: {
61
+ deposit: [126118678, 126116167, 126110439],
62
+ withdraw: [126113314, 126108196, 126107784],
63
+ },
64
+ [Network.GNOSIS]: {
65
+ deposit: [
66
+ 38964215, 38964218, 38964219, 38964222, 38964224, 38964243, 38964244,
67
+ 38964245, 38964247, 38964249, 38964253, 38964263, 38964303, 38964309,
68
+ 38964311, 38964314,
69
+ ],
70
+ withdraw: [
71
+ 38964215, 38964218, 38964219, 38964221, 38964222, 38964224, 38964225,
72
+ 38964230, 38964233, 38964236, 38964238, 38964243, 38964244, 38964245,
73
+ 38964246, 38964277, 38964278, 38964279, 38964289, 38964294, 38964302,
74
+ 38964309, 38964314,
75
+ ],
76
+ },
77
+ };
78
+
79
+ networks.forEach(network => {
80
+ describe(`${network}`, function () {
81
+ const dexKey = network === Network.GNOSIS ? 'sDAI' : 'wUSDM';
82
+
83
+ const wUSDMAddress = ERC4626Config[dexKey][network].vault;
84
+ const USDMAddress = ERC4626Config[dexKey][network].asset;
85
+
86
+ const wUSDMIface: Interface = new Interface([
87
+ // Vault abi
88
+ ...ERC4626_ABI,
89
+ // asset abi (specifically to handle Transfer to vault event)
90
+ ...ERC20ABI,
91
+ ]);
92
+
93
+ const blockNumbers = Array.from(
94
+ new Set(
95
+ Object.values(multichainBlockNumbers[network])
96
+ .flat()
97
+ .sort((a, b) => a - b),
98
+ ),
99
+ );
100
+
101
+ blockNumbers.forEach((blockNumber: number) => {
102
+ it(`Should return the correct state after the ${blockNumber}`, async function () {
103
+ const dexHelper = new DummyDexHelper(network);
104
+ const logger = dexHelper.getLogger(dexKey);
105
+
106
+ const wusdmPool = new ERC4626EventPool(
107
+ dexKey,
108
+ network,
109
+ `wusdm-pool`,
110
+ dexHelper,
111
+ wUSDMAddress,
112
+ USDMAddress,
113
+ wUSDMIface,
114
+ logger,
115
+ DEPOSIT_TOPIC,
116
+ WITHDRAW_TOPIC,
117
+ TRANSFER_TOPIC,
118
+ );
119
+
120
+ // await wusdmPool.initialize(blockNumber - 1);
121
+
122
+ await testEventSubscriber(
123
+ wusdmPool,
124
+ wusdmPool.addressesSubscribed,
125
+ (_blockNumber: number) => fetchPoolState(wusdmPool, _blockNumber),
126
+ blockNumber,
127
+ `${dexKey}_${wUSDMAddress}`,
128
+ dexHelper.provider,
129
+ );
130
+ });
131
+ });
132
+ });
133
+ });
134
+ });
@@ -5,7 +5,7 @@ dotenv.config();
5
5
  import { DummyDexHelper } from '../../dex-helper/index';
6
6
  import { Network, SwapSide } from '../../constants';
7
7
  import { BI_POWS } from '../../bigint-constants';
8
- import { WUSDM } from './wusdm';
8
+ import { ERC4626 } from './erc4626';
9
9
  import { checkPoolPrices, checkPoolsLiquidity } from '../../../tests/utils';
10
10
  import { Tokens } from '../../../tests/constants-e2e';
11
11
 
@@ -29,12 +29,12 @@ describe('WUSDM', function () {
29
29
  const amounts = [0n, BI_POWS[18], 2000000000000000000n];
30
30
  let dexHelper: DummyDexHelper;
31
31
  let blocknumber: number;
32
- let wusdm: WUSDM;
32
+ let wusdm: ERC4626;
33
33
 
34
34
  beforeAll(async () => {
35
35
  dexHelper = new DummyDexHelper(network);
36
36
  blocknumber = await dexHelper.web3Provider.eth.getBlockNumber();
37
- wusdm = new WUSDM(network, dexKey, dexHelper);
37
+ wusdm = new ERC4626(network, dexKey, dexHelper);
38
38
  if (wusdm.initializePricing) {
39
39
  await wusdm.initializePricing(blocknumber);
40
40
  }