@paraswap/dex-lib 4.0.10-destTokenPos-fix-ex02.1 → 4.0.10

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 (156) hide show
  1. package/.idea/aws.xml +17 -0
  2. package/.idea/codeStyles/Project.xml +19 -0
  3. package/.idea/codeStyles/codeStyleConfig.xml +5 -0
  4. package/.idea/misc.xml +6 -0
  5. package/.idea/modules.xml +8 -0
  6. package/.idea/paraswap-dex-lib.iml +9 -0
  7. package/.idea/prettier.xml +7 -0
  8. package/.idea/vcs.xml +6 -0
  9. package/build/abi/integral/factory.json +333 -0
  10. package/build/abi/integral/oracle.json +501 -0
  11. package/build/abi/{inception/inception-ineth-pool.json → integral/pool.json} +522 -543
  12. package/build/abi/{wombat/pool.json → integral/relayer.json} +720 -473
  13. package/build/dex/aave-v1/aave-v1.d.ts +1 -2
  14. package/build/dex/aave-v1/aave-v1.js +0 -23
  15. package/build/dex/aave-v1/aave-v1.js.map +1 -1
  16. package/build/dex/fluid-dex/fluid-dex-generate-pool.d.ts +49 -0
  17. package/build/dex/fluid-dex/fluid-dex-generate-pool.js +104 -0
  18. package/build/dex/fluid-dex/fluid-dex-generate-pool.js.map +1 -0
  19. package/build/dex/integral/config.d.ts +4 -0
  20. package/build/dex/integral/config.js +20 -0
  21. package/build/dex/integral/config.js.map +1 -0
  22. package/build/dex/integral/context.d.ts +40 -0
  23. package/build/dex/integral/context.js +158 -0
  24. package/build/dex/integral/context.js.map +1 -0
  25. package/build/dex/integral/integral-factory.d.ts +24 -0
  26. package/build/dex/integral/integral-factory.js +95 -0
  27. package/build/dex/integral/integral-factory.js.map +1 -0
  28. package/build/dex/integral/integral-pool.d.ts +50 -0
  29. package/build/dex/integral/integral-pool.js +149 -0
  30. package/build/dex/integral/integral-pool.js.map +1 -0
  31. package/build/dex/integral/integral-pricing.d.ts +18 -0
  32. package/build/dex/integral/integral-pricing.js +114 -0
  33. package/build/dex/integral/integral-pricing.js.map +1 -0
  34. package/build/dex/integral/integral-relayer.d.ts +42 -0
  35. package/build/dex/integral/integral-relayer.js +192 -0
  36. package/build/dex/integral/integral-relayer.js.map +1 -0
  37. package/build/dex/integral/integral-token.d.ts +27 -0
  38. package/build/dex/integral/integral-token.js +59 -0
  39. package/build/dex/integral/integral-token.js.map +1 -0
  40. package/build/dex/integral/integral.d.ts +41 -0
  41. package/build/dex/integral/integral.js +376 -0
  42. package/build/dex/integral/integral.js.map +1 -0
  43. package/build/dex/integral/types.d.ts +85 -0
  44. package/build/dex/integral/types.js +9 -0
  45. package/build/dex/integral/types.js.map +1 -0
  46. package/build/dex/integral/utils-e2e.d.ts +9 -0
  47. package/build/dex/integral/utils-e2e.js +131 -0
  48. package/build/dex/integral/utils-e2e.js.map +1 -0
  49. package/build/dex/integral/utils.d.ts +17 -0
  50. package/build/dex/integral/utils.js +94 -0
  51. package/build/dex/integral/utils.js.map +1 -0
  52. package/build/dex/jarvis.d.ts +1 -2
  53. package/build/dex/jarvis.js +0 -58
  54. package/build/dex/jarvis.js.map +1 -1
  55. package/build/dex/platypus/platypus.d.ts +1 -2
  56. package/build/dex/platypus/platypus.js +0 -45
  57. package/build/dex/platypus/platypus.js.map +1 -1
  58. package/build/dex/stable-pool.js +8 -1
  59. package/build/dex/stable-pool.js.map +1 -1
  60. package/build/dex/swaap-v1/swaap-v1.d.ts +1 -2
  61. package/build/dex/swaap-v1/swaap-v1.js +0 -14
  62. package/build/dex/swaap-v1/swaap-v1.js.map +1 -1
  63. package/build/dex/trader-joe-v2.1/optimizer.d.ts +2 -0
  64. package/build/dex/trader-joe-v2.1/optimizer.js +47 -0
  65. package/build/dex/trader-joe-v2.1/optimizer.js.map +1 -0
  66. package/build/dex/zerox/index.d.ts +26 -4
  67. package/build/dex/zerox/index.js +42 -50
  68. package/build/dex/zerox/index.js.map +1 -1
  69. package/build/dex/zerox/types.d.ts +0 -29
  70. package/build/dex/zerox/types.js +1 -8
  71. package/build/dex/zerox/types.js.map +1 -1
  72. package/package.json +1 -1
  73. package/.vscode/launch.json +0 -53
  74. package/.vscode/settings.json +0 -2
  75. package/.vscode/tasks.json +0 -15
  76. package/build/abi/inception/inception-ratio-feed.json +0 -329
  77. package/build/abi/inception/inception-vault.json +0 -991
  78. package/build/abi/uniswap-v3/AlienBaseV3Router.abi.json +0 -52
  79. package/build/abi/usual-m-smart-m/usualM.abi.json +0 -483
  80. package/build/dex/aave-v2/tokens-avalanche.json +0 -44
  81. package/build/dex/aave-v2/tokens-mainnet.json +0 -188
  82. package/build/dex/aave-v2/tokens-polygon.json +0 -44
  83. package/build/dex/balancer-v3/abi/balancerBatchRouter.d.ts +0 -729
  84. package/build/dex/balancer-v3/abi/balancerBatchRouter.js +0 -732
  85. package/build/dex/balancer-v3/abi/balancerBatchRouter.js.map +0 -1
  86. package/build/dex/balancer-v3/abi/balancerRouter.d.ts +0 -1406
  87. package/build/dex/balancer-v3/abi/balancerRouter.js +0 -1175
  88. package/build/dex/balancer-v3/abi/balancerRouter.js.map +0 -1
  89. package/build/dex/balancer-v3/abi/vaultExtension.V3.d.ts +0 -2081
  90. package/build/dex/balancer-v3/abi/vaultExtension.V3.js +0 -1851
  91. package/build/dex/balancer-v3/abi/vaultExtension.V3.js.map +0 -1
  92. package/build/dex/balancer-v3/balancer-v3-sepolia-pools.d.ts +0 -34
  93. package/build/dex/balancer-v3/balancer-v3-sepolia-pools.js +0 -406
  94. package/build/dex/balancer-v3/balancer-v3-sepolia-pools.js.map +0 -1
  95. package/build/dex/inception/config.d.ts +0 -4
  96. package/build/dex/inception/config.js +0 -109
  97. package/build/dex/inception/config.js.map +0 -1
  98. package/build/dex/inception/inception-event-pool.d.ts +0 -16
  99. package/build/dex/inception/inception-event-pool.js +0 -49
  100. package/build/dex/inception/inception-event-pool.js.map +0 -1
  101. package/build/dex/inception/inception.d.ts +0 -43
  102. package/build/dex/inception/inception.js +0 -180
  103. package/build/dex/inception/inception.js.map +0 -1
  104. package/build/dex/inception/tokens.d.ts +0 -9
  105. package/build/dex/inception/tokens.js +0 -28
  106. package/build/dex/inception/tokens.js.map +0 -1
  107. package/build/dex/inception/types.d.ts +0 -22
  108. package/build/dex/inception/types.js +0 -3
  109. package/build/dex/inception/types.js.map +0 -1
  110. package/build/dex/inception/utils.d.ts +0 -7
  111. package/build/dex/inception/utils.js +0 -58
  112. package/build/dex/inception/utils.js.map +0 -1
  113. package/build/dex/maker-psm/scripts/gem.abi.json +0 -136
  114. package/build/dex/maker-psm/scripts/validate-state.d.ts +0 -0
  115. package/build/dex/maker-psm/scripts/validate-state.js +0 -185
  116. package/build/dex/maker-psm/scripts/validate-state.js.map +0 -1
  117. package/build/dex/maker-psm/scripts/vat.abi.json +0 -243
  118. package/build/dex/solidly-v3/scripts/check-event-pool-event.d.ts +0 -1
  119. package/build/dex/solidly-v3/scripts/check-event-pool-event.js +0 -53
  120. package/build/dex/solidly-v3/scripts/check-event-pool-event.js.map +0 -1
  121. package/build/dex/uniswap-v3/forks/alien-base-v3/alien-base-v3.d.ts +0 -17
  122. package/build/dex/uniswap-v3/forks/alien-base-v3/alien-base-v3.js +0 -64
  123. package/build/dex/uniswap-v3/forks/alien-base-v3/alien-base-v3.js.map +0 -1
  124. package/build/dex/uniswap-v3/forks/alien-v3/alien-v3.d.ts +0 -17
  125. package/build/dex/uniswap-v3/forks/alien-v3/alien-v3.js +0 -79
  126. package/build/dex/uniswap-v3/forks/alien-v3/alien-v3.js.map +0 -1
  127. package/build/dex/uniswap-v3/uniswap-v3-pricing.d.ts +0 -4
  128. package/build/dex/uniswap-v3/uniswap-v3-pricing.js +0 -43
  129. package/build/dex/uniswap-v3/uniswap-v3-pricing.js.map +0 -1
  130. package/build/dex/uniswap-v3/uniswap-v3-worker.d.ts +0 -1
  131. package/build/dex/uniswap-v3/uniswap-v3-worker.js +0 -10
  132. package/build/dex/uniswap-v3/uniswap-v3-worker.js.map +0 -1
  133. package/build/dex/usual/usual-m-smart-m.d.ts +0 -17
  134. package/build/dex/usual/usual-m-smart-m.js +0 -50
  135. package/build/dex/usual/usual-m-smart-m.js.map +0 -1
  136. package/build/dex/usual-m-smart-m/config.d.ts +0 -3
  137. package/build/dex/usual-m-smart-m/config.js +0 -13
  138. package/build/dex/usual-m-smart-m/config.js.map +0 -1
  139. package/build/dex/usual-m-smart-m/types.d.ts +0 -7
  140. package/build/dex/usual-m-smart-m/types.js +0 -3
  141. package/build/dex/usual-m-smart-m/types.js.map +0 -1
  142. package/build/dex/usual-m-smart-m/usual-m-smart-m.d.ts +0 -35
  143. package/build/dex/usual-m-smart-m/usual-m-smart-m.js +0 -161
  144. package/build/dex/usual-m-smart-m/usual-m-smart-m.js.map +0 -1
  145. package/build/dex/usual-m-usd0/config.d.ts +0 -3
  146. package/build/dex/usual-m-usd0/config.js +0 -14
  147. package/build/dex/usual-m-usd0/config.js.map +0 -1
  148. package/build/dex/usual-m-usd0/types.d.ts +0 -8
  149. package/build/dex/usual-m-usd0/types.js +0 -3
  150. package/build/dex/usual-m-usd0/types.js.map +0 -1
  151. package/build/dex/usual-m-usd0/usual-m-usd0.d.ts +0 -35
  152. package/build/dex/usual-m-usd0/usual-m-usd0.js +0 -159
  153. package/build/dex/usual-m-usd0/usual-m-usd0.js.map +0 -1
  154. package/build/lib/pub-sub.d.ts +0 -39
  155. package/build/lib/pub-sub.js +0 -153
  156. package/build/lib/pub-sub.js.map +0 -1
@@ -1,5 +1,5 @@
1
1
  import { Interface } from '@ethersproject/abi';
2
- import { Token, Address, ExchangePrices, PoolPrices, AdapterExchangeParam, SimpleExchangeParam, PoolLiquidity, Logger, NumberAsString, DexExchangeParam } from '../../types';
2
+ import { Token, Address, ExchangePrices, PoolPrices, AdapterExchangeParam, SimpleExchangeParam, PoolLiquidity, Logger } from '../../types';
3
3
  import { SwapSide, Network } from '../../constants';
4
4
  import { IDex } from '../../dex/idex';
5
5
  import { IDexHelper } from '../../dex-helper/idex-helper';
@@ -28,7 +28,6 @@ export declare class AaveV1 extends SimpleExchange implements IDex<AaveV1Data, A
28
28
  getCalldataGasCost(poolPrices: PoolPrices<AaveV1Data>): number | number[];
29
29
  getAdapterParam(srcToken: string, destToken: string, srcAmount: string, destAmount: string, data: AaveV1Data, side: SwapSide): AdapterExchangeParam;
30
30
  getSimpleParam(srcToken: string, destToken: string, srcAmount: string, destAmount: string, data: AaveV1Data, side: SwapSide): Promise<SimpleExchangeParam>;
31
- getDexParam(srcToken: Address, destToken: Address, srcAmount: NumberAsString, destAmount: NumberAsString, recipient: Address, data: AaveV1Data, side: SwapSide): DexExchangeParam;
32
31
  updatePoolState(): Promise<void>;
33
32
  getTopPoolsForToken(tokenAddress: Address, limit: number): Promise<PoolLiquidity[]>;
34
33
  }
@@ -139,29 +139,6 @@ class AaveV1 extends simple_exchange_1.SimpleExchange {
139
139
  const swapData = Interface.encodeFunctionData(swapFunction, swapFunctionParams);
140
140
  return this.buildSimpleParamWithoutWETHConversion(srcToken, amount, destToken, destAmount, swapData, swapCallee, spender);
141
141
  }
142
- // DEAD
143
- getDexParam(srcToken, destToken, srcAmount, destAmount, recipient, data, side) {
144
- const amount = side === constants_1.SwapSide.SELL ? srcAmount : destAmount;
145
- const [Interface, swapFunction, swapFunctionParams, swapCallee] = (() => {
146
- if (data.fromAToken) {
147
- return [this.aContract, AaveV1Functions.redeem, [amount], srcToken];
148
- }
149
- return [
150
- this.aavePool,
151
- AaveV1Functions.deposit,
152
- [srcToken, amount, REF_CODE],
153
- AAVE_LENDING_POOL,
154
- ];
155
- })();
156
- const exchangeData = Interface.encodeFunctionData(swapFunction, swapFunctionParams);
157
- return {
158
- needWrapNative: this.needWrapNative,
159
- dexFuncHasRecipient: false,
160
- exchangeData,
161
- targetExchange: swapCallee,
162
- returnAmountPos: undefined,
163
- };
164
- }
165
142
  // This is called once before getTopPoolsForToken is
166
143
  // called for multiple tokens. This can be helpful to
167
144
  // update common state required for calculating
@@ -1 +1 @@
1
- {"version":3,"file":"aave-v1.js","sourceRoot":"","sources":["../../../src/dex/aave-v1/aave-v1.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"aave-v1.js","sourceRoot":"","sources":["../../../src/dex/aave-v1/aave-v1.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,4CAA6D;AAW7D,+CAAoD;AACpD,2EAA6D;AAC7D,uCAAkE;AAIlE,wDAAoD;AACpD,qCAAkD;AAClD,kGAA0E;AAC1E,sEAAyC;AACzC,qCAAsC;AAEtC,MAAM,WAAW,GAAG,GAAG,GAAG,IAAI,CAAC;AAE/B,IAAK,eAGJ;AAHD,WAAK,eAAe;IAClB,sCAAmB,CAAA;IACnB,oCAAiB,CAAA;AACnB,CAAC,EAHI,eAAe,KAAf,eAAe,QAGnB;AAED,MAAM,iBAAiB,GAAG,4CAA4C,CAAC;AACvE,MAAM,UAAU,GAAG,4CAA4C,CAAC;AAChE,MAAM,QAAQ,GAAG,CAAC,CAAC;AAEnB,MAAa,MACX,SAAQ,gCAAc;IAatB,YACY,OAAgB,EAC1B,MAAc,EACJ,SAAqB;QAE/B,KAAK,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QAJf,YAAO,GAAP,OAAO,CAAS;QAEhB,cAAS,GAAT,SAAS,CAAY;QAbxB,iCAA4B,GAAG,IAAI,CAAC;QACpC,6BAAwB,GAAG,KAAK,CAAC;QAexC,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAC1C,IAAI,CAAC,QAAQ,GAAG,IAAI,eAAS,CAAC,kCAA0C,CAAC,CAAC;QAC1E,IAAI,CAAC,SAAS,GAAG,IAAI,eAAS,CAAC,oBAAuB,CAAC,CAAC;IAC1D,CAAC;IAED,KAAK,CAAC,iBAAiB,CAAC,WAAmB,IAAG,CAAC;IAE/C,yDAAyD;IACzD,wDAAwD;IACxD,WAAW,CAAC,IAAc;QACxB,OAAO,iBAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC;IACtC,CAAC;IAED,oDAAoD;IACpD,mDAAmD;IACnD,yCAAyC;IACzC,+CAA+C;IAC/C,KAAK,CAAC,kBAAkB,CACtB,QAAe,EACf,SAAgB,EAChB,IAAc,EACd,WAAmB;QAEnB,MAAM,MAAM,GAAG,IAAA,mBAAU,EAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;QAC7D,IAAI,MAAM,KAAK,IAAI,EAAE;YACnB,OAAO,EAAE,CAAC;SACX;QACD,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;IAC9C,CAAC;IAED,mCAAmC;IACnC,oDAAoD;IACpD,kDAAkD;IAClD,yBAAyB;IACzB,KAAK,CAAC,eAAe,CACnB,QAAe,EACf,SAAgB,EAChB,OAAiB,EACjB,IAAc,EACd,WAAmB,EACnB,UAAqB;QAErB,MAAM,MAAM,GAAG,IAAA,mBAAU,EAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;QAC7D,IAAI,CAAC,MAAM,EAAE;YACX,OAAO,IAAI,CAAC;SACb;QACD,MAAM,UAAU,GAAG,MAAM,IAAI,QAAQ,CAAC;QACtC,OAAO;YACL;gBACE,MAAM,EAAE,OAAO;gBACf,IAAI,EAAE,IAAA,oBAAY,EAChB,CAAC,IAAI,KAAK,oBAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,QAAQ,CACzD;gBACD,OAAO,EAAE,WAAW;gBACpB,QAAQ,EAAE,IAAI,CAAC,MAAM;gBACrB,IAAI,EAAE;oBACJ,UAAU;oBACV,IAAI,EAAE,KAAK;iBACZ;gBACD,aAAa,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC;aACnE;SACF,CAAC;IACJ,CAAC;IAED,mEAAmE;IACnE,kBAAkB,CAAC,UAAkC;QACnD,OAAO,CACL,iBAAiB,CAAC,YAAY;YAC9B,iBAAiB,CAAC,YAAY;YAC9B,iBAAiB,CAAC,OAAO,CAC1B,CAAC;IACJ,CAAC;IAED,iDAAiD;IACjD,qCAAqC;IACrC,eAAe,CACb,QAAgB,EAChB,SAAiB,EACjB,SAAiB,EACjB,UAAkB,EAClB,IAAgB,EAChB,IAAc;QAEd,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,UAAU;QACjE,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,eAAe,CAC3C;YACE,YAAY,EAAE;gBACZ,MAAM,EAAE,SAAS;aAClB;SACF,EACD,EAAE,MAAM,EAAE,CACX,CAAC;QAEF,OAAO;YACL,cAAc,EAAE,iBAAiB;YACjC,OAAO;YACP,UAAU,EAAE,GAAG;SAChB,CAAC;IACJ,CAAC;IAED,mDAAmD;IACnD,kCAAkC;IAClC,mDAAmD;IACnD,kBAAkB;IAClB,KAAK,CAAC,cAAc,CAClB,QAAgB,EAChB,SAAiB,EACjB,SAAiB,EACjB,UAAkB,EAClB,IAAgB,EAChB,IAAc;QAEd,MAAM,MAAM,GAAG,IAAI,KAAK,oBAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC;QAC/D,MAAM,CAAC,SAAS,EAAE,YAAY,EAAE,kBAAkB,EAAE,UAAU,EAAE,OAAO,CAAC,GACtE,CAAC,GAAiE,EAAE;YAClE,IAAI,IAAI,CAAC,UAAU,EAAE;gBACnB,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,eAAe,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC,CAAC;aACrE;YAED,OAAO;gBACL,IAAI,CAAC,QAAQ;gBACb,eAAe,CAAC,OAAO;gBACvB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC;gBAC5B,iBAAiB;gBACjB,UAAU,EAAE,UAAU;aACvB,CAAC;QACJ,CAAC,CAAC,EAAE,CAAC;QAEP,MAAM,QAAQ,GAAG,SAAS,CAAC,kBAAkB,CAC3C,YAAY,EACZ,kBAAkB,CACnB,CAAC;QAEF,OAAO,IAAI,CAAC,qCAAqC,CAC/C,QAAQ,EACR,MAAM,EACN,SAAS,EACT,UAAU,EACV,QAAQ,EACR,UAAU,EACV,OAAO,CACR,CAAC;IACJ,CAAC;IAED,oDAAoD;IACpD,qDAAqD;IACrD,+CAA+C;IAC/C,gDAAgD;IAChD,oBAAoB;IACpB,eAAe;QACb,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC3B,CAAC;IAED,oDAAoD;IACpD,yCAAyC;IACzC,KAAK,CAAC,mBAAmB,CACvB,YAAqB,EACrB,KAAa;QAEb,OAAO,EAAE,CAAC;IACZ,CAAC;;AApLH,wBAqLC;AA9Ke,yBAAkB,GAC9B,IAAA,6BAAqB,EAAC,qBAAY,CAAC,CAAC"}
@@ -0,0 +1,49 @@
1
+ import { Interface } from '@ethersproject/abi';
2
+ import { BytesLike } from 'ethers/lib/utils';
3
+ import { DeepReadonly } from 'ts-essentials';
4
+ import { Log, Logger } from '../../types';
5
+ import { StatefulEventSubscriber } from '../../stateful-event-subscriber';
6
+ import { IDexHelper } from '../../dex-helper/idex-helper';
7
+ import { CommonAddresses, Pool } from './types';
8
+ import { MultiResult } from '../../lib/multi-wrapper';
9
+ import { Address } from '../../types';
10
+ export declare class FluidDexCommonAddresses extends StatefulEventSubscriber<Pool[]> {
11
+ readonly parentName: string;
12
+ readonly commonAddresses: CommonAddresses;
13
+ protected network: number;
14
+ protected dexHelper: IDexHelper;
15
+ handlers: {
16
+ [event: string]: (event: any, state: DeepReadonly<Pool[]>, log: Readonly<Log>) => Promise<DeepReadonly<Pool[]> | null>;
17
+ };
18
+ logDecoder: (log: Log) => any;
19
+ addressesSubscribed: Address[];
20
+ protected dexFactoryIface: Interface;
21
+ protected resolverIface: Interface;
22
+ constructor(parentName: string, commonAddresses: CommonAddresses, network: number, dexHelper: IDexHelper, logger: Logger);
23
+ /**
24
+ * Handle a trade rate change on the pool.
25
+ */
26
+ handleDexDeployed(event: any, state: DeepReadonly<Pool[]>, log: Readonly<Log>): Promise<DeepReadonly<Pool[]> | null>;
27
+ decodePool: (result: MultiResult<BytesLike> | BytesLike) => Pool;
28
+ /**
29
+ * The function is called every time any of the subscribed
30
+ * addresses release log. The function accepts the current
31
+ * state, updates the state according to the log, and returns
32
+ * the updated state.
33
+ * @param state - Current state of event subscriber
34
+ * @param log - Log released by one of the subscribed addresses
35
+ * @returns Updates state of the event subscriber after the log
36
+ */
37
+ processLog(state: DeepReadonly<Pool[]>, log: Readonly<Log>): Promise<DeepReadonly<Pool[]> | null>;
38
+ getStateOrGenerate(blockNumber: number, readonly?: boolean): Promise<DeepReadonly<Pool[]>>;
39
+ /**
40
+ * The function generates state using on-chain calls. This
41
+ * function is called to regenerate state if the event based
42
+ * system fails to fetch events and the local state is no
43
+ * more correct.
44
+ * @param blockNumber - Blocknumber for which the state should
45
+ * should be generated
46
+ * @returns state of the event subscriber at blocknumber
47
+ */
48
+ generateState(blockNumber: number): Promise<DeepReadonly<Pool[]>>;
49
+ }
@@ -0,0 +1,104 @@
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
+ exports.FluidDexCommonAddresses = void 0;
7
+ const abi_1 = require("@ethersproject/abi");
8
+ const utils_1 = require("../../utils");
9
+ const stateful_event_subscriber_1 = require("../../stateful-event-subscriber");
10
+ const resolver_abi_json_1 = __importDefault(require("../../abi/fluid-dex/resolver.abi.json"));
11
+ const dexFactory_abi_json_1 = __importDefault(require("../../abi/fluid-dex/dexFactory.abi.json"));
12
+ const decoders_1 = require("../../lib/decoders");
13
+ const ethers_1 = require("ethers");
14
+ class FluidDexCommonAddresses extends stateful_event_subscriber_1.StatefulEventSubscriber {
15
+ constructor(parentName, commonAddresses, network, dexHelper, logger) {
16
+ super(parentName, 'getAllPools', dexHelper, logger);
17
+ this.parentName = parentName;
18
+ this.commonAddresses = commonAddresses;
19
+ this.network = network;
20
+ this.dexHelper = dexHelper;
21
+ this.handlers = {};
22
+ this.dexFactoryIface = new abi_1.Interface(dexFactory_abi_json_1.default);
23
+ this.resolverIface = new abi_1.Interface(resolver_abi_json_1.default);
24
+ this.decodePool = (result) => {
25
+ return (0, decoders_1.generalDecoder)(result, ['tuple(address pool, address token0, address token1, uint256 fee)'], undefined, decoded => {
26
+ return {
27
+ address: decoded[0].toLowerCase(),
28
+ token0: decoded[1].toLowerCase(),
29
+ token1: decoded[2].toLowerCase(),
30
+ };
31
+ });
32
+ };
33
+ this.logDecoder = (log) => this.dexFactoryIface.parseLog(log);
34
+ this.addressesSubscribed = [commonAddresses.dexFactory];
35
+ // Add handlers
36
+ this.handlers['DexDeployed'] = this.handleDexDeployed.bind(this);
37
+ }
38
+ /**
39
+ * Handle a trade rate change on the pool.
40
+ */
41
+ async handleDexDeployed(event, state, log) {
42
+ const blockNumber_ = await this.dexHelper.provider.getBlockNumber();
43
+ return this.getStateOrGenerate(blockNumber_, false);
44
+ }
45
+ /**
46
+ * The function is called every time any of the subscribed
47
+ * addresses release log. The function accepts the current
48
+ * state, updates the state according to the log, and returns
49
+ * the updated state.
50
+ * @param state - Current state of event subscriber
51
+ * @param log - Log released by one of the subscribed addresses
52
+ * @returns Updates state of the event subscriber after the log
53
+ */
54
+ async processLog(state, log) {
55
+ try {
56
+ let event;
57
+ try {
58
+ event = this.logDecoder(log);
59
+ }
60
+ catch (e) {
61
+ return null;
62
+ }
63
+ if (event.name in this.handlers) {
64
+ return await this.handlers[event.name](event, state, log);
65
+ }
66
+ }
67
+ catch (e) {
68
+ (0, utils_1.catchParseLogError)(e, this.logger);
69
+ }
70
+ return null;
71
+ }
72
+ async getStateOrGenerate(blockNumber, readonly = false) {
73
+ let state = this.getState(blockNumber);
74
+ if (!state) {
75
+ state = await this.generateState(blockNumber);
76
+ if (!readonly)
77
+ this.setState(state, blockNumber);
78
+ }
79
+ return state;
80
+ }
81
+ /**
82
+ * The function generates state using on-chain calls. This
83
+ * function is called to regenerate state if the event based
84
+ * system fails to fetch events and the local state is no
85
+ * more correct.
86
+ * @param blockNumber - Blocknumber for which the state should
87
+ * should be generated
88
+ * @returns state of the event subscriber at blocknumber
89
+ */
90
+ async generateState(blockNumber) {
91
+ const resolverContract = new ethers_1.Contract(this.commonAddresses.resolver, resolver_abi_json_1.default, this.dexHelper.provider);
92
+ const rawResult = await resolverContract.callStatic.getAllPools({
93
+ blockTag: blockNumber,
94
+ });
95
+ const pools = rawResult.map((result) => ({
96
+ address: result[0],
97
+ token0: result[1],
98
+ token1: result[2],
99
+ }));
100
+ return pools;
101
+ }
102
+ }
103
+ exports.FluidDexCommonAddresses = FluidDexCommonAddresses;
104
+ //# sourceMappingURL=fluid-dex-generate-pool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fluid-dex-generate-pool.js","sourceRoot":"","sources":["../../../src/dex/fluid-dex/fluid-dex-generate-pool.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import { DexParams } from './types';
2
+ import { DexConfigMap, AdapterMappings } from '../../types';
3
+ export declare const IntegralConfig: DexConfigMap<DexParams>;
4
+ export declare const Adapters: Record<number, AdapterMappings>;
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Adapters = exports.IntegralConfig = void 0;
4
+ const constants_1 = require("../../constants");
5
+ exports.IntegralConfig = {
6
+ Integral: {
7
+ [constants_1.Network.MAINNET]: {
8
+ factoryAddress: '0xC480b33eE5229DE3FbDFAD1D2DCD3F3BAD0C56c6',
9
+ relayerAddress: '0xd17b3c9784510E33cD5B87b490E79253BcD81e2E',
10
+ subgraphURL: 'ANd5QJuYtyfngmXvBMu9kZAv935vhcqp4xAGBkmCADN3',
11
+ },
12
+ [constants_1.Network.ARBITRUM]: {
13
+ factoryAddress: '0x717EF162cf831db83c51134734A15D1EBe9E516a',
14
+ relayerAddress: '0x3c6951FDB433b5b8442e7aa126D50fBFB54b5f42',
15
+ subgraphURL: 'HXeVedRK7VgogXwbK5Sc4mjyLkhBAS5akskRvbSYnkHU',
16
+ },
17
+ },
18
+ };
19
+ exports.Adapters = {};
20
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/dex/integral/config.ts"],"names":[],"mappings":";;;AAEA,+CAA0C;AAE7B,QAAA,cAAc,GAA4B;IACrD,QAAQ,EAAE;QACR,CAAC,mBAAO,CAAC,OAAO,CAAC,EAAE;YACjB,cAAc,EAAE,4CAA4C;YAC5D,cAAc,EAAE,4CAA4C;YAC5D,WAAW,EAAE,8CAA8C;SAC5D;QACD,CAAC,mBAAO,CAAC,QAAQ,CAAC,EAAE;YAClB,cAAc,EAAE,4CAA4C;YAC5D,cAAc,EAAE,4CAA4C;YAC5D,WAAW,EAAE,8CAA8C;SAC5D;KACF;CACF,CAAC;AAEW,QAAA,QAAQ,GAAoC,EAAE,CAAC"}
@@ -0,0 +1,40 @@
1
+ import { Address } from '@paraswap/core';
2
+ import { IntegralFactory } from './integral-factory';
3
+ import { IntegralRelayer } from './integral-relayer';
4
+ import { Network } from '../../constants';
5
+ import { IDexHelper } from '../../dex-helper';
6
+ import { Logger } from 'log4js';
7
+ import { Interface } from '@ethersproject/abi';
8
+ import { IntegralPool, PoolInitProps, RelayerPoolState } from './types';
9
+ import { IntegralToken } from './integral-token';
10
+ export declare class IntegralContext {
11
+ readonly network: Network;
12
+ readonly dexKey: string;
13
+ readonly dexHelper: IDexHelper;
14
+ readonly erc20Interface: Interface;
15
+ readonly factoryAddress: Address;
16
+ readonly relayerAddress: Address;
17
+ static instances: {
18
+ [network: number]: IntegralContext;
19
+ };
20
+ pools: {
21
+ [poolId: string]: IntegralPool;
22
+ };
23
+ tokens: {
24
+ [tokenAddress: Address]: IntegralToken;
25
+ };
26
+ factory: IntegralFactory;
27
+ relayer: IntegralRelayer;
28
+ logger: Logger;
29
+ private constructor();
30
+ addPools(pools: PoolInitProps, blockNumber: number, initPhase?: boolean): Promise<void>;
31
+ getPoolAddresses(): string[];
32
+ private removeDisabledPoolInitProps;
33
+ static initialize(network: Network, dexKey: string, dexHelper: IDexHelper, erc20Interface: Interface, factoryAddress: Address, relayerAddress: Address): IntegralContext;
34
+ static getInstance(network: Network): IntegralContext;
35
+ onRelayerPoolEnabledSet(poolAddress: Address, state: RelayerPoolState, blockNumber: number): Promise<void>;
36
+ onRebalanceSellOrderExecuted(blockNumber: number, orderId: bigint): void;
37
+ onPoolCreatedAddPool(token0: Address, token1: Address, poolAddress: Address, blockNumber: number): Promise<void>;
38
+ onPoolSwapForRelayer(blockNumber: number, poolAddress: Address, recipient: Address, amount0Out: bigint, amount1Out: bigint): Promise<void>;
39
+ onTransferUpdateBalance(token: Address, from: Address, to: Address, amount: bigint, blockNumber: number): Promise<void>;
40
+ }
@@ -0,0 +1,158 @@
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
+ exports.IntegralContext = void 0;
7
+ const integral_pool_1 = require("./integral-pool");
8
+ const integral_pricing_1 = require("./integral-pricing");
9
+ const integral_factory_1 = require("./integral-factory");
10
+ const integral_relayer_1 = require("./integral-relayer");
11
+ const integral_token_1 = require("./integral-token");
12
+ const utils_1 = require("./utils");
13
+ const lodash_1 = __importDefault(require("lodash"));
14
+ class IntegralContext {
15
+ constructor(network, dexKey, dexHelper, erc20Interface, factoryAddress, relayerAddress) {
16
+ this.network = network;
17
+ this.dexKey = dexKey;
18
+ this.dexHelper = dexHelper;
19
+ this.erc20Interface = erc20Interface;
20
+ this.factoryAddress = factoryAddress;
21
+ this.relayerAddress = relayerAddress;
22
+ this.pools = {};
23
+ this.tokens = {};
24
+ this.logger = dexHelper.getLogger(dexKey);
25
+ this.factory = new integral_factory_1.IntegralFactory(dexHelper, dexKey, this.factoryAddress, this.onPoolCreatedAddPool, this.logger);
26
+ this.relayer = new integral_relayer_1.IntegralRelayer(dexHelper, dexKey, this.erc20Interface, this.relayerAddress, {}, this.onRelayerPoolEnabledSet, this.logger);
27
+ }
28
+ async addPools(pools, blockNumber, initPhase = false) {
29
+ this.relayer.addPools(pools);
30
+ if (initPhase) {
31
+ await this.relayer.initialize(blockNumber);
32
+ }
33
+ const _relayerState = this.relayer.getState(blockNumber);
34
+ const relayerState = _relayerState
35
+ ? _relayerState
36
+ : await this.relayer.generateState(blockNumber);
37
+ if (!_relayerState) {
38
+ this.relayer.setState(relayerState, blockNumber);
39
+ }
40
+ const poolInitProps = this.removeDisabledPoolInitProps(relayerState, pools);
41
+ const bases = Object.entries(poolInitProps).map(([poolAddress, p]) => {
42
+ const poolId = (0, utils_1.getPoolIdentifier)(this.dexKey, p.token0, p.token1);
43
+ const base = (this.pools[poolId] && this.pools[poolId].base) ||
44
+ new integral_pool_1.IntegralEventPool(this.dexKey, this.network, this.dexHelper, poolAddress, p.token0, p.token1, this.logger);
45
+ this.pools[poolId] = { base, enabled: true };
46
+ return base;
47
+ });
48
+ await Promise.all(bases.map(base => !base.isInitialized && base.initialize(blockNumber)));
49
+ const pricings = await Promise.all(bases.map(async (base) => {
50
+ const _poolState = base.getState(blockNumber);
51
+ const poolState = _poolState
52
+ ? _poolState
53
+ : await base.generateState(blockNumber);
54
+ const poolId = (0, utils_1.getPoolIdentifier)(this.dexKey, base.token0, base.token1);
55
+ const pricing = (this.pools[poolId] && this.pools[poolId].pricing) ||
56
+ new integral_pricing_1.IntegralPricing(this.dexHelper, poolId, this.erc20Interface, poolState.uniswapPool, base.token0, base.token1, poolState.uniswapPoolFee, this.logger, this.network);
57
+ this.pools[poolId].pricing = pricing;
58
+ return pricing;
59
+ }));
60
+ await Promise.all(pricings.map(pricing => !pricing.isInitialized && pricing.initialize(blockNumber)));
61
+ const initIntegralToken = (token) => new integral_token_1.IntegralToken(this.network, this.dexHelper, this.dexKey, this.erc20Interface, token, this.relayerAddress, this.onTransferUpdateBalance, this.logger);
62
+ bases.map(base => {
63
+ this.tokens[base.token0] =
64
+ this.tokens[base.token0] || initIntegralToken(base.token0);
65
+ this.tokens[base.token1] =
66
+ this.tokens[base.token1] || initIntegralToken(base.token1);
67
+ });
68
+ await Promise.all(Object.values(this.tokens).map(token => !token.isInitialized && token.initialize(blockNumber)));
69
+ }
70
+ getPoolAddresses() {
71
+ return Object.values(this.pools)
72
+ .filter((pool) => !!pool.base && pool.enabled)
73
+ .map(({ base }) => base.poolAddress);
74
+ }
75
+ removeDisabledPoolInitProps(state, props) {
76
+ Object.entries(state.pools).forEach(([poolAddress, poolState]) => !poolState.isEnabled && delete props[poolAddress]);
77
+ return props;
78
+ }
79
+ static initialize(network, dexKey, dexHelper, erc20Interface, factoryAddress, relayerAddress) {
80
+ if (!this.instances[network]) {
81
+ this.instances[network] = new IntegralContext(network, dexKey, dexHelper, erc20Interface, factoryAddress, relayerAddress);
82
+ }
83
+ return this.instances[network];
84
+ }
85
+ static getInstance(network) {
86
+ if (!this.instances[network]) {
87
+ throw new Error('IntegralContext instance not initialized');
88
+ }
89
+ return this.instances[network];
90
+ }
91
+ async onRelayerPoolEnabledSet(poolAddress, state, blockNumber) {
92
+ const poolEntry = (0, utils_1.getPoolBackReferencedFrom)(this, poolAddress);
93
+ if (state.isEnabled && (!poolEntry || !poolEntry[1].enabled)) {
94
+ const _factoryState = this.factory.getStaleState();
95
+ const factoryState = _factoryState
96
+ ? _factoryState
97
+ : await this.factory.generateState(blockNumber);
98
+ const { token0, token1 } = factoryState.pools[poolAddress];
99
+ await this.addPools({ [poolAddress]: { token0, token1 } }, blockNumber);
100
+ }
101
+ else if (!state.isEnabled && poolEntry && poolEntry[1].enabled) {
102
+ this.pools[poolEntry[0]].enabled = false;
103
+ }
104
+ }
105
+ onRebalanceSellOrderExecuted(blockNumber, orderId) {
106
+ this.relayer.executeOrder(orderId, blockNumber);
107
+ }
108
+ async onPoolCreatedAddPool(token0, token1, poolAddress, blockNumber) {
109
+ await this.addPools({ [poolAddress]: { token0, token1 } }, blockNumber);
110
+ }
111
+ async onPoolSwapForRelayer(blockNumber, poolAddress, recipient, amount0Out, amount1Out) {
112
+ if (recipient.toLowerCase() === this.relayerAddress.toLowerCase()) {
113
+ const pools = this.relayer.getPools();
114
+ if (pools[poolAddress.toLowerCase()]) {
115
+ const token0 = pools[poolAddress.toLowerCase()].token0;
116
+ const token1 = pools[poolAddress.toLowerCase()].token1;
117
+ let _state = this.relayer.getStaleState();
118
+ if (!_state) {
119
+ _state = await this.relayer.generateState(blockNumber);
120
+ this.relayer.setState(_state, blockNumber);
121
+ return;
122
+ }
123
+ else {
124
+ blockNumber = this.relayer.getStateBlockNumber();
125
+ }
126
+ const state = lodash_1.default.cloneDeep(_state);
127
+ if (amount1Out > 0n) {
128
+ state.tokens[token1].balance += amount1Out;
129
+ }
130
+ else {
131
+ state.tokens[token0].balance += amount0Out;
132
+ }
133
+ this.relayer.setState(state, blockNumber);
134
+ }
135
+ else {
136
+ this.logger.error('Integral Relayer: Pool address not found for', poolAddress);
137
+ }
138
+ }
139
+ }
140
+ async onTransferUpdateBalance(token, from, to, amount, blockNumber) {
141
+ let _state = this.relayer.getStaleState();
142
+ if (!_state) {
143
+ this.logger.error('Integral Token: Relayer stale state not found');
144
+ return;
145
+ }
146
+ const state = lodash_1.default.cloneDeep(_state);
147
+ if (this.relayer.relayerAddress.toLowerCase() === from) {
148
+ state.tokens[token].balance -= amount;
149
+ }
150
+ else if (this.relayer.relayerAddress.toLowerCase() === to) {
151
+ state.tokens[token].balance += amount;
152
+ }
153
+ this.relayer.setState(state, blockNumber);
154
+ }
155
+ }
156
+ exports.IntegralContext = IntegralContext;
157
+ IntegralContext.instances = {};
158
+ //# sourceMappingURL=context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../../../src/dex/integral/context.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ import { Interface } from '@ethersproject/abi';
2
+ import { LogDescription } from 'ethers/lib/utils';
3
+ import { IDexHelper } from '../../dex-helper';
4
+ import { StatefulEventSubscriber } from '../../stateful-event-subscriber';
5
+ import { Address, BlockHeader, Log, Logger } from '../../types';
6
+ import { FactoryState } from './types';
7
+ export declare type OnPoolCreatedCallback = (token0: Address, token1: Address, poolAddress: Address, blockNumber: number) => Promise<void>;
8
+ export declare class IntegralFactory extends StatefulEventSubscriber<FactoryState> {
9
+ readonly dexHelper: IDexHelper;
10
+ protected readonly factoryAddress: Address;
11
+ protected readonly onPoolCreated: OnPoolCreatedCallback;
12
+ handlers: {
13
+ [event: string]: (event: any, state: FactoryState, blockHeader: Readonly<BlockHeader>) => Promise<FactoryState>;
14
+ };
15
+ logDecoder: (log: Log) => any;
16
+ readonly factoryIface: Interface;
17
+ constructor(dexHelper: IDexHelper, parentName: string, factoryAddress: Address, onPoolCreated: OnPoolCreatedCallback, logger: Logger, mapKey?: string);
18
+ protected getPoolIdentifierData(): {
19
+ factory: string;
20
+ };
21
+ generateState(blockNumber?: number | 'latest'): Promise<FactoryState>;
22
+ protected processLog(state: FactoryState, log: Readonly<Log>, blockHeader: Readonly<BlockHeader>): Promise<FactoryState>;
23
+ handlePairCreated(event: LogDescription, state: FactoryState, blockHeader: Readonly<BlockHeader>): Promise<FactoryState>;
24
+ }
@@ -0,0 +1,95 @@
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
+ exports.IntegralFactory = void 0;
7
+ const abi_1 = require("@ethersproject/abi");
8
+ const stateful_event_subscriber_1 = require("../../stateful-event-subscriber");
9
+ const factory_json_1 = __importDefault(require("../../abi/integral/factory.json"));
10
+ const pool_json_1 = __importDefault(require("../../abi/integral/pool.json"));
11
+ const decoders_1 = require("../../lib/decoders");
12
+ class IntegralFactory extends stateful_event_subscriber_1.StatefulEventSubscriber {
13
+ constructor(dexHelper, parentName, factoryAddress, onPoolCreated, logger, mapKey = '') {
14
+ super(parentName, `${parentName} Factory`, dexHelper, logger, true, mapKey);
15
+ this.dexHelper = dexHelper;
16
+ this.factoryAddress = factoryAddress;
17
+ this.onPoolCreated = onPoolCreated;
18
+ this.handlers = {};
19
+ this.factoryIface = new abi_1.Interface(factory_json_1.default);
20
+ this.addressesSubscribed = [factoryAddress];
21
+ this.logDecoder = (log) => this.factoryIface.parseLog(log);
22
+ this.handlers['PairCreated'] = this.handlePairCreated.bind(this);
23
+ }
24
+ getPoolIdentifierData() {
25
+ return { factory: this.factoryAddress };
26
+ }
27
+ async generateState(blockNumber) {
28
+ const factory = new this.dexHelper.web3Provider.eth.Contract(factory_json_1.default, this.factoryAddress);
29
+ const poolCountResult = await factory.methods
30
+ .allPairsLength()
31
+ .call(undefined, blockNumber);
32
+ const poolCount = Number(poolCountResult);
33
+ const poolAddressCallDatas = [
34
+ ...Array(poolCount),
35
+ ].map((_, i) => {
36
+ return {
37
+ target: this.factoryAddress,
38
+ callData: factory.methods.allPairs(i).encodeABI(),
39
+ decodeFunction: decoders_1.addressDecode,
40
+ };
41
+ });
42
+ const poolAddresses = await this.dexHelper.multiWrapper.tryAggregate(false, poolAddressCallDatas, blockNumber, this.dexHelper.multiWrapper.defaultBatchSize, false);
43
+ const poolIface = new abi_1.Interface(pool_json_1.default);
44
+ const poolInfosCallDatas = poolAddresses
45
+ .map(poolAddress => {
46
+ return [
47
+ {
48
+ target: poolAddress.returnData,
49
+ callData: poolIface.encodeFunctionData('token0', []),
50
+ decodeFunction: decoders_1.addressDecode,
51
+ },
52
+ {
53
+ target: poolAddress.returnData,
54
+ callData: poolIface.encodeFunctionData('token1', []),
55
+ decodeFunction: decoders_1.addressDecode,
56
+ },
57
+ ];
58
+ })
59
+ .flat();
60
+ const poolInfos = await this.dexHelper.multiWrapper.aggregate(poolInfosCallDatas, blockNumber);
61
+ const state = { pools: {} };
62
+ poolAddresses.forEach((poolAddress, i) => {
63
+ const tokens = [
64
+ poolInfos[i * 2].toLowerCase(),
65
+ poolInfos[i * 2 + 1].toLowerCase(),
66
+ ];
67
+ state.pools[poolAddress.returnData.toLowerCase()] = {
68
+ token0: tokens[0],
69
+ token1: tokens[1],
70
+ };
71
+ });
72
+ return state;
73
+ }
74
+ async processLog(state, log, blockHeader) {
75
+ const event = this.logDecoder(log);
76
+ if (event.name in this.handlers) {
77
+ return await this.handlers[event.name](event, state, blockHeader);
78
+ }
79
+ return state;
80
+ }
81
+ async handlePairCreated(event, state, blockHeader) {
82
+ const tokens = [
83
+ event.args.token0.toLowerCase(),
84
+ event.args.token1.toLowerCase(),
85
+ ];
86
+ state.pools[event.args.pair.toLowerCase()] = {
87
+ token0: tokens[0],
88
+ token1: tokens[1],
89
+ };
90
+ await this.onPoolCreated(tokens[0], tokens[1], event.args.pair.toLowerCase(), blockHeader.number);
91
+ return state;
92
+ }
93
+ }
94
+ exports.IntegralFactory = IntegralFactory;
95
+ //# sourceMappingURL=integral-factory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"integral-factory.js","sourceRoot":"","sources":["../../../src/dex/integral/integral-factory.ts"],"names":[],"mappings":"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"}