@paraswap/dex-lib 3.8.30 → 3.8.32

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 (237) hide show
  1. package/build/abi/AaveV1_lending_pool.json +27 -0
  2. package/build/abi/Aave_GSM.json +751 -0
  3. package/build/abi/aave-gsm/Aave_GSM.json +751 -0
  4. package/build/abi/aave-gsm/IFeeStrategy.json +78 -0
  5. package/build/abi/inception/inception-ineth-pool.json +1062 -0
  6. package/build/abi/inception/inception-ineth.json +609 -0
  7. package/build/abi/inception/inception-ratio-feed.json +93 -0
  8. package/build/abi/inception/inception-vault.json +991 -0
  9. package/build/abi/platypus/asset.json +490 -0
  10. package/build/abi/platypus/avax-pool.json +820 -0
  11. package/build/abi/platypus/oracle.json +119 -0
  12. package/build/abi/platypus/pool.json +677 -0
  13. package/build/abi/smardex/all/smardex-router.json +648 -0
  14. package/build/abi/smardex/layer-1/smardex-factory.json +242 -0
  15. package/build/abi/smardex/layer-1/smardex-pool.json +506 -0
  16. package/build/abi/smardex/layer-2/smardex-factory.json +185 -0
  17. package/build/abi/smardex/layer-2/smardex-pool.json +578 -0
  18. package/build/abi/stkGHO.json +1131 -0
  19. package/build/abi/swaap-v1/pool.json +1346 -0
  20. package/build/abi/usual-bond/usd0pp.abi.json +867 -0
  21. package/build/dex/aave-gsm/aave-gsm-pool.d.ts +28 -0
  22. package/build/dex/aave-gsm/aave-gsm-pool.js +117 -0
  23. package/build/dex/aave-gsm/aave-gsm-pool.js.map +1 -0
  24. package/build/dex/aave-gsm/aave-gsm.d.ts +43 -0
  25. package/build/dex/aave-gsm/aave-gsm.js +306 -0
  26. package/build/dex/aave-gsm/aave-gsm.js.map +1 -0
  27. package/build/dex/aave-gsm/config.d.ts +3 -0
  28. package/build/dex/aave-gsm/config.js +17 -0
  29. package/build/dex/aave-gsm/config.js.map +1 -0
  30. package/build/dex/aave-gsm/types.d.ts +18 -0
  31. package/build/dex/aave-gsm/types.js +3 -0
  32. package/build/dex/aave-gsm/types.js.map +1 -0
  33. package/build/dex/aave-v1/aave-v1.d.ts +34 -0
  34. package/build/dex/aave-v1/aave-v1.js +180 -0
  35. package/build/dex/aave-v1/aave-v1.js.map +1 -0
  36. package/build/dex/aave-v1/config.d.ts +11 -0
  37. package/build/dex/aave-v1/config.js +20 -0
  38. package/build/dex/aave-v1/config.js.map +1 -0
  39. package/build/dex/aave-v1/tokens-mainnet.json +134 -0
  40. package/build/dex/aave-v1/tokens.d.ts +3 -0
  41. package/build/dex/aave-v1/tokens.js +50 -0
  42. package/build/dex/aave-v1/tokens.js.map +1 -0
  43. package/build/dex/aave-v1/types.d.ts +12 -0
  44. package/build/dex/aave-v1/types.js +3 -0
  45. package/build/dex/aave-v1/types.js.map +1 -0
  46. package/build/dex/idle-dao/idle-dao-pool.d.ts +56 -0
  47. package/build/dex/idle-dao/idle-dao-pool.js +176 -0
  48. package/build/dex/idle-dao/idle-dao-pool.js.map +1 -0
  49. package/build/dex/idle-dao/idle-dao-pooling-pool.d.ts +16 -0
  50. package/build/dex/idle-dao/idle-dao-pooling-pool.js +57 -0
  51. package/build/dex/idle-dao/idle-dao-pooling-pool.js.map +1 -0
  52. package/build/dex/idle-dao/scripts.d.ts +9 -0
  53. package/build/dex/idle-dao/scripts.js +552 -0
  54. package/build/dex/idle-dao/scripts.js.map +1 -0
  55. package/build/dex/inception/config.d.ts +5 -0
  56. package/build/dex/inception/config.js +112 -0
  57. package/build/dex/inception/config.js.map +1 -0
  58. package/build/dex/inception/inception-event-pool.d.ts +25 -0
  59. package/build/dex/inception/inception-event-pool.js +57 -0
  60. package/build/dex/inception/inception-event-pool.js.map +1 -0
  61. package/build/dex/inception/inception-native.d.ts +43 -0
  62. package/build/dex/inception/inception-native.js +131 -0
  63. package/build/dex/inception/inception-native.js.map +1 -0
  64. package/build/dex/inception/inception-pool.d.ts +18 -0
  65. package/build/dex/inception/inception-pool.js +32 -0
  66. package/build/dex/inception/inception-pool.js.map +1 -0
  67. package/build/dex/inception/inception-price-feed.d.ts +19 -0
  68. package/build/dex/inception/inception-price-feed.js +51 -0
  69. package/build/dex/inception/inception-price-feed.js.map +1 -0
  70. package/build/dex/inception/inception.d.ts +44 -0
  71. package/build/dex/inception/inception.js +177 -0
  72. package/build/dex/inception/inception.js.map +1 -0
  73. package/build/dex/inception/tokens.d.ts +9 -0
  74. package/build/dex/inception/tokens.js +28 -0
  75. package/build/dex/inception/tokens.js.map +1 -0
  76. package/build/dex/inception/types.d.ts +22 -0
  77. package/build/dex/inception/types.js +3 -0
  78. package/build/dex/inception/types.js.map +1 -0
  79. package/build/dex/inception/utils.d.ts +7 -0
  80. package/build/dex/inception/utils.js +58 -0
  81. package/build/dex/inception/utils.js.map +1 -0
  82. package/build/dex/index.js +4 -0
  83. package/build/dex/index.js.map +1 -1
  84. package/build/dex/platypus/asset.d.ts +14 -0
  85. package/build/dex/platypus/asset.js +97 -0
  86. package/build/dex/platypus/asset.js.map +1 -0
  87. package/build/dex/platypus/config.d.ts +11 -0
  88. package/build/dex/platypus/config.js +69 -0
  89. package/build/dex/platypus/config.js.map +1 -0
  90. package/build/dex/platypus/platypus.d.ts +63 -0
  91. package/build/dex/platypus/platypus.js +473 -0
  92. package/build/dex/platypus/platypus.js.map +1 -0
  93. package/build/dex/platypus/pool-avax.d.ts +8 -0
  94. package/build/dex/platypus/pool-avax.js +54 -0
  95. package/build/dex/platypus/pool-avax.js.map +1 -0
  96. package/build/dex/platypus/pool-base.d.ts +19 -0
  97. package/build/dex/platypus/pool-base.js +86 -0
  98. package/build/dex/platypus/pool-base.js.map +1 -0
  99. package/build/dex/platypus/pool-pure.d.ts +8 -0
  100. package/build/dex/platypus/pool-pure.js +37 -0
  101. package/build/dex/platypus/pool-pure.js.map +1 -0
  102. package/build/dex/platypus/pool-subscriber.d.ts +14 -0
  103. package/build/dex/platypus/pool-subscriber.js +167 -0
  104. package/build/dex/platypus/pool-subscriber.js.map +1 -0
  105. package/build/dex/platypus/pool.d.ts +8 -0
  106. package/build/dex/platypus/pool.js +58 -0
  107. package/build/dex/platypus/pool.js.map +1 -0
  108. package/build/dex/platypus/types.d.ts +92 -0
  109. package/build/dex/platypus/types.js +10 -0
  110. package/build/dex/platypus/types.js.map +1 -0
  111. package/build/dex/quickswap/spiritswap-v3.d.ts +6 -0
  112. package/build/dex/quickswap/spiritswap-v3.js +19 -0
  113. package/build/dex/quickswap/spiritswap-v3.js.map +1 -0
  114. package/build/dex/smardex/config.d.ts +4 -0
  115. package/build/dex/smardex/config.js +64 -0
  116. package/build/dex/smardex/config.js.map +1 -0
  117. package/build/dex/smardex/constants.d.ts +18 -0
  118. package/build/dex/smardex/constants.js +33 -0
  119. package/build/dex/smardex/constants.js.map +1 -0
  120. package/build/dex/smardex/sdk/constants.d.ts +6 -0
  121. package/build/dex/smardex/sdk/constants.js +13 -0
  122. package/build/dex/smardex/sdk/constants.js.map +1 -0
  123. package/build/dex/smardex/sdk/core.d.ts +113 -0
  124. package/build/dex/smardex/sdk/core.js +499 -0
  125. package/build/dex/smardex/sdk/core.js.map +1 -0
  126. package/build/dex/smardex/sdk/errors.d.ts +15 -0
  127. package/build/dex/smardex/sdk/errors.js +22 -0
  128. package/build/dex/smardex/sdk/errors.js.map +1 -0
  129. package/build/dex/smardex/sdk/types.d.ts +62 -0
  130. package/build/dex/smardex/sdk/types.js +3 -0
  131. package/build/dex/smardex/sdk/types.js.map +1 -0
  132. package/build/dex/smardex/sdk/utils.d.ts +44 -0
  133. package/build/dex/smardex/sdk/utils.js +133 -0
  134. package/build/dex/smardex/sdk/utils.js.map +1 -0
  135. package/build/dex/smardex/smardex-event-pool.d.ts +28 -0
  136. package/build/dex/smardex/smardex-event-pool.js +119 -0
  137. package/build/dex/smardex/smardex-event-pool.js.map +1 -0
  138. package/build/dex/smardex/smardex.d.ts +65 -0
  139. package/build/dex/smardex/smardex.js +519 -0
  140. package/build/dex/smardex/smardex.js.map +1 -0
  141. package/build/dex/smardex/types.d.ts +55 -0
  142. package/build/dex/smardex/types.js +3 -0
  143. package/build/dex/smardex/types.js.map +1 -0
  144. package/build/dex/solidly/forks-override/cone.d.ts +22 -0
  145. package/build/dex/solidly/forks-override/cone.js +53 -0
  146. package/build/dex/solidly/forks-override/cone.js.map +1 -0
  147. package/build/dex/solidly/forks-override/solisnek.d.ts +8 -0
  148. package/build/dex/solidly/forks-override/solisnek.js +15 -0
  149. package/build/dex/solidly/forks-override/solisnek.js.map +1 -0
  150. package/build/dex/stkgho/config.d.ts +3 -0
  151. package/build/dex/stkgho/config.js +14 -0
  152. package/build/dex/stkgho/config.js.map +1 -0
  153. package/build/dex/stkgho/stkgho-pool.d.ts +41 -0
  154. package/build/dex/stkgho/stkgho-pool.js +81 -0
  155. package/build/dex/stkgho/stkgho-pool.js.map +1 -0
  156. package/build/dex/stkgho/stkgho.d.ts +41 -0
  157. package/build/dex/stkgho/stkgho.js +163 -0
  158. package/build/dex/stkgho/stkgho.js.map +1 -0
  159. package/build/dex/stkgho/types.d.ts +11 -0
  160. package/build/dex/stkgho/types.js +3 -0
  161. package/build/dex/stkgho/types.js.map +1 -0
  162. package/build/dex/swaap-v1/config.d.ts +17 -0
  163. package/build/dex/swaap-v1/config.js +56 -0
  164. package/build/dex/swaap-v1/config.js.map +1 -0
  165. package/build/dex/swaap-v1/constants.d.ts +6 -0
  166. package/build/dex/swaap-v1/constants.js +17 -0
  167. package/build/dex/swaap-v1/constants.js.map +1 -0
  168. package/build/dex/swaap-v1/libraries/ChainlinkUtils.d.ts +25 -0
  169. package/build/dex/swaap-v1/libraries/ChainlinkUtils.js +62 -0
  170. package/build/dex/swaap-v1/libraries/ChainlinkUtils.js.map +1 -0
  171. package/build/dex/swaap-v1/libraries/Const.d.ts +18 -0
  172. package/build/dex/swaap-v1/libraries/Const.js +26 -0
  173. package/build/dex/swaap-v1/libraries/Const.js.map +1 -0
  174. package/build/dex/swaap-v1/libraries/GeometricBrownianMotion.d.ts +77 -0
  175. package/build/dex/swaap-v1/libraries/GeometricBrownianMotion.js +316 -0
  176. package/build/dex/swaap-v1/libraries/GeometricBrownianMotion.js.map +1 -0
  177. package/build/dex/swaap-v1/libraries/LogExpMath.d.ts +75 -0
  178. package/build/dex/swaap-v1/libraries/LogExpMath.js +418 -0
  179. package/build/dex/swaap-v1/libraries/LogExpMath.js.map +1 -0
  180. package/build/dex/swaap-v1/libraries/MathMMM.d.ts +185 -0
  181. package/build/dex/swaap-v1/libraries/MathMMM.js +453 -0
  182. package/build/dex/swaap-v1/libraries/MathMMM.js.map +1 -0
  183. package/build/dex/swaap-v1/libraries/Num.d.ts +31 -0
  184. package/build/dex/swaap-v1/libraries/Num.js +167 -0
  185. package/build/dex/swaap-v1/libraries/Num.js.map +1 -0
  186. package/build/dex/swaap-v1/libraries/PoolQuotations.d.ts +23 -0
  187. package/build/dex/swaap-v1/libraries/PoolQuotations.js +131 -0
  188. package/build/dex/swaap-v1/libraries/PoolQuotations.js.map +1 -0
  189. package/build/dex/swaap-v1/libraries/Struct.d.ts +56 -0
  190. package/build/dex/swaap-v1/libraries/Struct.js +3 -0
  191. package/build/dex/swaap-v1/libraries/Struct.js.map +1 -0
  192. package/build/dex/swaap-v1/swaap-v1-pool.d.ts +45 -0
  193. package/build/dex/swaap-v1/swaap-v1-pool.js +656 -0
  194. package/build/dex/swaap-v1/swaap-v1-pool.js.map +1 -0
  195. package/build/dex/swaap-v1/swaap-v1.d.ts +62 -0
  196. package/build/dex/swaap-v1/swaap-v1.js +379 -0
  197. package/build/dex/swaap-v1/swaap-v1.js.map +1 -0
  198. package/build/dex/swaap-v1/types.d.ts +106 -0
  199. package/build/dex/swaap-v1/types.js +9 -0
  200. package/build/dex/swaap-v1/types.js.map +1 -0
  201. package/build/dex/usual-bond/config.d.ts +3 -0
  202. package/build/dex/usual-bond/config.js +13 -0
  203. package/build/dex/usual-bond/config.js.map +1 -0
  204. package/build/dex/usual-bond/types.d.ts +7 -0
  205. package/build/dex/usual-bond/types.js +3 -0
  206. package/build/dex/usual-bond/types.js.map +1 -0
  207. package/build/dex/usual-bond/usual-bond.d.ts +35 -0
  208. package/build/dex/usual-bond/usual-bond.js +162 -0
  209. package/build/dex/usual-bond/usual-bond.js.map +1 -0
  210. package/build/dex/zerox/index.d.ts +1 -1
  211. package/build/dex/zerox/index.js.map +1 -1
  212. package/package.json +2 -3
  213. package/src/abi/aave-gsm/Aave_GSM.json +751 -0
  214. package/src/abi/aave-gsm/IFeeStrategy.json +78 -0
  215. package/src/abi/stkGHO.json +1131 -0
  216. package/src/dex/aave-gsm/aave-gsm-e2e.test.ts +109 -0
  217. package/src/dex/aave-gsm/aave-gsm-events.test.ts +79 -0
  218. package/src/dex/aave-gsm/aave-gsm-integration.test.ts +522 -0
  219. package/src/dex/aave-gsm/aave-gsm-pool.ts +178 -0
  220. package/src/dex/aave-gsm/aave-gsm.ts +410 -0
  221. package/src/dex/aave-gsm/config.ts +16 -0
  222. package/src/dex/aave-gsm/types.ts +23 -0
  223. package/src/dex/index.ts +4 -0
  224. package/src/dex/stkgho/config.ts +14 -0
  225. package/src/dex/stkgho/stkgho-e2e.test.ts +77 -0
  226. package/src/dex/stkgho/stkgho-events.test.ts +79 -0
  227. package/src/dex/stkgho/stkgho-integration.test.ts +226 -0
  228. package/src/dex/stkgho/stkgho-pool.ts +111 -0
  229. package/src/dex/stkgho/stkgho.ts +221 -0
  230. package/src/dex/stkgho/types.ts +14 -0
  231. package/tests/constants-e2e.ts +4 -0
  232. package/.idea/codeStyles/Project.xml +0 -59
  233. package/.idea/codeStyles/codeStyleConfig.xml +0 -5
  234. package/.idea/inspectionProfiles/Project_Default.xml +0 -6
  235. package/.idea/modules.xml +0 -8
  236. package/.idea/paraswap-dex-lib.iml +0 -12
  237. package/.idea/vcs.xml +0 -6
@@ -0,0 +1,53 @@
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.Cone = void 0;
7
+ const solidly_1 = require("../solidly");
8
+ const abi_1 = require("@ethersproject/abi");
9
+ const config_1 = require("../config");
10
+ const utils_1 = require("../../../utils");
11
+ const lodash_1 = __importDefault(require("lodash"));
12
+ const swapFeeFunctionName = 'swapFee';
13
+ const ConePairABI = [
14
+ {
15
+ inputs: [],
16
+ name: swapFeeFunctionName,
17
+ outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],
18
+ stateMutability: 'view',
19
+ type: 'function',
20
+ },
21
+ ];
22
+ const conePairIface = new abi_1.Interface(ConePairABI);
23
+ class Cone extends solidly_1.Solidly {
24
+ constructor(network, dexKey, dexHelper) {
25
+ super(network, dexKey, dexHelper, true);
26
+ this.network = network;
27
+ this.dexHelper = dexHelper;
28
+ this.feeFactor = 1e4;
29
+ }
30
+ callDecoder(values) {
31
+ const fees = parseInt(conePairIface
32
+ .decodeFunctionResult(swapFeeFunctionName, values)[0]
33
+ .toString());
34
+ if (!fees)
35
+ return 0;
36
+ // noinspection UnnecessaryLocalVariableJS
37
+ const feeCode = Math.ceil(this.feeFactor / fees);
38
+ return feeCode;
39
+ }
40
+ getFeesMultiCallData(pair) {
41
+ const callEntry = {
42
+ target: pair.exchange,
43
+ callData: conePairIface.encodeFunctionData(swapFeeFunctionName, []),
44
+ };
45
+ return {
46
+ callEntry,
47
+ callDecoder: this.callDecoder.bind(this),
48
+ };
49
+ }
50
+ }
51
+ exports.Cone = Cone;
52
+ Cone.dexKeysWithNetwork = (0, utils_1.getDexKeysWithNetwork)(lodash_1.default.pick(config_1.SolidlyConfig, ['Cone']));
53
+ //# sourceMappingURL=cone.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cone.js","sourceRoot":"","sources":["../../../../src/dex/solidly/forks-override/cone.ts"],"names":[],"mappings":";;;;;;AAAA,wCAAqC;AAIrC,4CAA+C;AAC/C,sCAA0C;AAC1C,0CAAuD;AACvD,oDAAuB;AAEvB,MAAM,mBAAmB,GAAG,SAAS,CAAC;AAEtC,MAAM,WAAW,GAAG;IAClB;QACE,MAAM,EAAE,EAAE;QACV,IAAI,EAAE,mBAAmB;QACzB,OAAO,EAAE,CAAC,EAAE,YAAY,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;QACjE,eAAe,EAAE,MAAM;QACvB,IAAI,EAAE,UAAU;KACjB;CACF,CAAC;AAEF,MAAM,aAAa,GAAG,IAAI,eAAS,CAAC,WAAW,CAAC,CAAC;AAEjD,MAAa,IAAK,SAAQ,iBAAO;IAM/B,YACY,OAAgB,EAC1B,MAAc,EACJ,SAAqB;QAE/B,KAAK,CACH,OAAO,EACP,MAAM,EACN,SAAS,EACT,IAAI,CACL,CAAC;QATQ,YAAO,GAAP,OAAO,CAAS;QAEhB,cAAS,GAAT,SAAS,CAAY;QARjC,cAAS,GAAG,GAAG,CAAC;IAgBhB,CAAC;IAEO,WAAW,CAAC,MAAa;QAC/B,MAAM,IAAI,GAAG,QAAQ,CACnB,aAAa;aACV,oBAAoB,CAAC,mBAAmB,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;aACpD,QAAQ,EAAE,CACd,CAAC;QACF,IAAI,CAAC,IAAI;YAAE,OAAO,CAAC,CAAC;QAEpB,0CAA0C;QAC1C,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC;QACjD,OAAO,OAAO,CAAC;IACjB,CAAC;IAES,oBAAoB,CAAC,IAAiB;QAC9C,MAAM,SAAS,GAAG;YAChB,MAAM,EAAE,IAAI,CAAC,QAAS;YACtB,QAAQ,EAAE,aAAa,CAAC,kBAAkB,CAAC,mBAAmB,EAAE,EAAE,CAAC;SACpE,CAAC;QAEF,OAAO;YACL,SAAS;YACT,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;SACzC,CAAC;IACJ,CAAC;;AA1CH,oBA2CC;AAxCe,uBAAkB,GAC9B,IAAA,6BAAqB,EAAC,gBAAC,CAAC,IAAI,CAAC,sBAAa,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { Velodrome } from './velodrome';
2
+ import { Network } from '../../../constants';
3
+ export declare class SoliSnek extends Velodrome {
4
+ static dexKeysWithNetwork: {
5
+ key: string;
6
+ networks: Network[];
7
+ }[];
8
+ }
@@ -0,0 +1,15 @@
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.SoliSnek = void 0;
7
+ const velodrome_1 = require("./velodrome");
8
+ const utils_1 = require("../../../utils");
9
+ const config_1 = require("../config");
10
+ const lodash_1 = __importDefault(require("lodash"));
11
+ class SoliSnek extends velodrome_1.Velodrome {
12
+ }
13
+ exports.SoliSnek = SoliSnek;
14
+ SoliSnek.dexKeysWithNetwork = (0, utils_1.getDexKeysWithNetwork)(lodash_1.default.pick(config_1.SolidlyConfig, ['SoliSnek']));
15
+ //# sourceMappingURL=solisnek.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"solisnek.js","sourceRoot":"","sources":["../../../../src/dex/solidly/forks-override/solisnek.ts"],"names":[],"mappings":";;;;;;AAAA,2CAAwC;AAExC,0CAAuD;AACvD,sCAA0C;AAC1C,oDAAuB;AAEvB,MAAa,QAAS,SAAQ,qBAAS;;AAAvC,4BAGC;AAFe,2BAAkB,GAC9B,IAAA,6BAAqB,EAAC,gBAAC,CAAC,IAAI,CAAC,sBAAa,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { DexParams } from './types';
2
+ import { DexConfigMap } from '../../types';
3
+ export declare const StkGHOConfig: DexConfigMap<DexParams>;
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.StkGHOConfig = void 0;
4
+ const constants_1 = require("../../constants");
5
+ const aave_address_book_1 = require("@bgd-labs/aave-address-book");
6
+ exports.StkGHOConfig = {
7
+ StkGHO: {
8
+ [constants_1.Network.MAINNET]: {
9
+ stkGHO: '0x1a88Df1cFe15Af22B3c4c783D4e6F7F9e0C1885d',
10
+ GHO: aave_address_book_1.MiscEthereum.GHO_TOKEN,
11
+ },
12
+ },
13
+ };
14
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/dex/stkgho/config.ts"],"names":[],"mappings":";;;AAEA,+CAA0C;AAE1C,mEAA2D;AAE9C,QAAA,YAAY,GAA4B;IACnD,MAAM,EAAE;QACN,CAAC,mBAAO,CAAC,OAAO,CAAC,EAAE;YACjB,MAAM,EAAE,4CAA4C;YACpD,GAAG,EAAE,gCAAY,CAAC,SAAS;SAC5B;KACF;CACF,CAAC"}
@@ -0,0 +1,41 @@
1
+ import { Interface } from '@ethersproject/abi';
2
+ import { DeepReadonly } from 'ts-essentials';
3
+ import { Log, Logger } from '../../types';
4
+ import { StatefulEventSubscriber } from '../../stateful-event-subscriber';
5
+ import { IDexHelper } from '../../dex-helper/idex-helper';
6
+ import { PoolState } from './types';
7
+ export declare class StkGHOEventPool extends StatefulEventSubscriber<PoolState> {
8
+ readonly poolName: string;
9
+ readonly parentName: string;
10
+ protected network: number;
11
+ protected dexHelper: IDexHelper;
12
+ protected stkGHOIface: Interface;
13
+ handlers: {
14
+ [event: string]: (event: any, state: DeepReadonly<PoolState>, log: Readonly<Log>) => DeepReadonly<PoolState> | null;
15
+ };
16
+ logDecoder: (log: Log) => any;
17
+ addressesSubscribed: string[];
18
+ constructor(poolName: string, parentName: string, network: number, dexHelper: IDexHelper, logger: Logger, stkGHOIface?: Interface);
19
+ getIdentifier(): string;
20
+ /**
21
+ * The function is called every time any of the subscribed
22
+ * addresses release log. The function accepts the current
23
+ * state, updates the state according to the log, and returns
24
+ * the updated state.
25
+ * @param state - Current state of event subscriber
26
+ * @param log - Log released by one of the subscribed addresses
27
+ * @returns Updates state of the event subscriber after the log
28
+ */
29
+ protected processLog(state: DeepReadonly<PoolState>, log: Readonly<Log>): DeepReadonly<PoolState> | null;
30
+ /**
31
+ * The function generates state using on-chain calls. This
32
+ * function is called to regenerate state if the event based
33
+ * system fails to fetch events and the local state is no
34
+ * more correct.
35
+ * @param blockNumber - Blocknumber for which the state should
36
+ * should be generated
37
+ * @returns state of the event subscriber at blocknumber
38
+ */
39
+ generateState(blockNumber: number): Promise<DeepReadonly<PoolState>>;
40
+ handleExchangeRateChanged(event: any, state: DeepReadonly<PoolState>, log: Readonly<Log>): DeepReadonly<PoolState> | null;
41
+ }
@@ -0,0 +1,81 @@
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.StkGHOEventPool = 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 stkGHO_json_1 = __importDefault(require("../../abi/stkGHO.json"));
11
+ const config_1 = require("./config");
12
+ const decoders_1 = require("../../lib/decoders");
13
+ class StkGHOEventPool extends stateful_event_subscriber_1.StatefulEventSubscriber {
14
+ constructor(poolName, parentName, network, dexHelper, logger, stkGHOIface = new abi_1.Interface(stkGHO_json_1.default)) {
15
+ super(parentName, poolName, dexHelper, logger);
16
+ this.poolName = poolName;
17
+ this.parentName = parentName;
18
+ this.network = network;
19
+ this.dexHelper = dexHelper;
20
+ this.stkGHOIface = stkGHOIface;
21
+ this.handlers = {};
22
+ this.logDecoder = (log) => this.stkGHOIface.parseLog(log);
23
+ this.addressesSubscribed = [config_1.StkGHOConfig[parentName][network].stkGHO];
24
+ this.handlers['ExchangeRateChanged'] =
25
+ this.handleExchangeRateChanged.bind(this);
26
+ }
27
+ getIdentifier() {
28
+ return `${this.parentName}`;
29
+ }
30
+ /**
31
+ * The function is called every time any of the subscribed
32
+ * addresses release log. The function accepts the current
33
+ * state, updates the state according to the log, and returns
34
+ * the updated state.
35
+ * @param state - Current state of event subscriber
36
+ * @param log - Log released by one of the subscribed addresses
37
+ * @returns Updates state of the event subscriber after the log
38
+ */
39
+ processLog(state, log) {
40
+ try {
41
+ const event = this.logDecoder(log);
42
+ if (event.name in this.handlers) {
43
+ return this.handlers[event.name](event, state, log);
44
+ }
45
+ }
46
+ catch (e) {
47
+ (0, utils_1.catchParseLogError)(e, this.logger);
48
+ }
49
+ return null;
50
+ }
51
+ /**
52
+ * The function generates state using on-chain calls. This
53
+ * function is called to regenerate state if the event based
54
+ * system fails to fetch events and the local state is no
55
+ * more correct.
56
+ * @param blockNumber - Blocknumber for which the state should
57
+ * should be generated
58
+ * @returns state of the event subscriber at blocknumber
59
+ */
60
+ async generateState(blockNumber) {
61
+ const callData = [
62
+ {
63
+ target: this.addressesSubscribed[0],
64
+ callData: this.stkGHOIface.encodeFunctionData('getExchangeRate', []),
65
+ decodeFunction: decoders_1.uint256ToBigInt,
66
+ },
67
+ ];
68
+ const res = await this.dexHelper.multiWrapper.tryAggregate(true, callData, blockNumber);
69
+ const result = {
70
+ exchangeRate: res[0].returnData,
71
+ };
72
+ return result;
73
+ }
74
+ handleExchangeRateChanged(event, state, log) {
75
+ return {
76
+ exchangeRate: BigInt(event.args.exchangeRate),
77
+ };
78
+ }
79
+ }
80
+ exports.StkGHOEventPool = StkGHOEventPool;
81
+ //# sourceMappingURL=stkgho-pool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stkgho-pool.js","sourceRoot":"","sources":["../../../src/dex/stkgho/stkgho-pool.ts"],"names":[],"mappings":";;;;;;AAAA,4CAA+C;AAG/C,uCAAiD;AACjD,+EAA0E;AAG1E,wEAA+C;AAC/C,qCAAwC;AACxC,iDAAqD;AAErD,MAAa,eAAgB,SAAQ,mDAAkC;IAarE,YACW,QAAgB,EAChB,UAAkB,EACjB,OAAe,EACf,SAAqB,EAC/B,MAAc,EACJ,cAAc,IAAI,eAAS,CAAC,qBAAU,CAAC;QAEjD,KAAK,CAAC,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;QAPtC,aAAQ,GAAR,QAAQ,CAAQ;QAChB,eAAU,GAAV,UAAU,CAAQ;QACjB,YAAO,GAAP,OAAO,CAAQ;QACf,cAAS,GAAT,SAAS,CAAY;QAErB,gBAAW,GAAX,WAAW,CAA4B;QAlBnD,aAAQ,GAMJ,EAAE,CAAC;QAgBL,IAAI,CAAC,UAAU,GAAG,CAAC,GAAQ,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QAC/D,IAAI,CAAC,mBAAmB,GAAG,CAAC,qBAAY,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC;QAEtE,IAAI,CAAC,QAAQ,CAAC,qBAAqB,CAAC;YAClC,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9C,CAAC;IAED,aAAa;QACX,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;IAC9B,CAAC;IAED;;;;;;;;OAQG;IACO,UAAU,CAClB,KAA8B,EAC9B,GAAkB;QAElB,IAAI;YACF,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;YACnC,IAAI,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ,EAAE;gBAC/B,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;aACrD;SACF;QAAC,OAAO,CAAC,EAAE;YACV,IAAA,0BAAkB,EAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;SACpC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;;;OAQG;IACH,KAAK,CAAC,aAAa,CAAC,WAAmB;QACrC,MAAM,QAAQ,GAAG;YACf;gBACE,MAAM,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC;gBACnC,QAAQ,EAAE,IAAI,CAAC,WAAW,CAAC,kBAAkB,CAAC,iBAAiB,EAAE,EAAE,CAAC;gBACpE,cAAc,EAAE,0BAAe;aAChC;SACF,CAAC;QAEF,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,YAAY,CACxD,IAAI,EACJ,QAAQ,EACR,WAAW,CACZ,CAAC;QAEF,MAAM,MAAM,GAAG;YACb,YAAY,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU;SAChC,CAAC;QAEF,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,yBAAyB,CACvB,KAAU,EACV,KAA8B,EAC9B,GAAkB;QAElB,OAAO;YACL,YAAY,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC;SAC9C,CAAC;IACJ,CAAC;CACF;AAnGD,0CAmGC"}
@@ -0,0 +1,41 @@
1
+ import { AsyncOrSync } from 'ts-essentials';
2
+ import { Token, Address, ExchangePrices, PoolPrices, AdapterExchangeParam, PoolLiquidity, Logger, NumberAsString, DexExchangeParam } from '../../types';
3
+ import { SwapSide, Network } from '../../constants';
4
+ import { IDex } from '../../dex/idex';
5
+ import { IDexHelper } from '../../dex-helper/idex-helper';
6
+ import { DexParams, PoolState, StkGHOData } from './types';
7
+ import { SimpleExchange } from '../simple-exchange';
8
+ import { StkGHOEventPool } from './stkgho-pool';
9
+ import { Interface } from '@ethersproject/abi';
10
+ export declare class StkGHO extends SimpleExchange implements IDex<StkGHOData> {
11
+ readonly network: Network;
12
+ readonly dexKey: string;
13
+ readonly dexHelper: IDexHelper;
14
+ static readonly stkGHOInterface: Interface;
15
+ protected eventPool: StkGHOEventPool;
16
+ readonly hasConstantPriceLargeAmounts = false;
17
+ readonly needWrapNative = true;
18
+ protected config: DexParams;
19
+ readonly isFeeOnTransferSupported = false;
20
+ readonly exchangeRateUnit = 1000000000000000000n;
21
+ static dexKeysWithNetwork: {
22
+ key: string;
23
+ networks: Network[];
24
+ }[];
25
+ logger: Logger;
26
+ constructor(network: Network, dexKey: string, dexHelper: IDexHelper);
27
+ initializePricing(blockNumber: number): Promise<void>;
28
+ getAdapters(side: SwapSide): {
29
+ name: string;
30
+ index: number;
31
+ }[] | null;
32
+ getPoolIdentifiers(srcToken: Token, destToken: Token, side: SwapSide, blockNumber: number): Promise<string[]>;
33
+ getPoolState(blockNumber: number): Promise<PoolState>;
34
+ getPricesVolume(srcToken: Token, destToken: Token, amounts: bigint[], side: SwapSide, blockNumber: number, limitPools?: string[]): Promise<null | ExchangePrices<StkGHOData>>;
35
+ getCalldataGasCost(poolPrices: PoolPrices<StkGHOData>): number | number[];
36
+ getAdapterParam(srcToken: string, destToken: string, srcAmount: string, destAmount: string, data: StkGHOData, side: SwapSide): AdapterExchangeParam;
37
+ updatePoolState(): Promise<void>;
38
+ getDexParam(srcToken: Address, destToken: Address, srcAmount: NumberAsString, destAmount: NumberAsString, recipient: Address, data: StkGHOData, side: SwapSide): Promise<DexExchangeParam>;
39
+ getTopPoolsForToken(tokenAddress: Address, limit: number): Promise<PoolLiquidity[]>;
40
+ releaseResources(): AsyncOrSync<void>;
41
+ }
@@ -0,0 +1,163 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __importDefault = (this && this.__importDefault) || function (mod) {
26
+ return (mod && mod.__esModule) ? mod : { "default": mod };
27
+ };
28
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ exports.StkGHO = void 0;
30
+ const constants_1 = require("../../constants");
31
+ const CALLDATA_GAS_COST = __importStar(require("../../calldata-gas-cost"));
32
+ const utils_1 = require("../../utils");
33
+ const simple_exchange_1 = require("../simple-exchange");
34
+ const config_1 = require("./config");
35
+ const stkgho_pool_1 = require("./stkgho-pool");
36
+ const abi_1 = require("@ethersproject/abi");
37
+ const stkGHO_json_1 = __importDefault(require("../../abi/stkGHO.json"));
38
+ class StkGHO extends simple_exchange_1.SimpleExchange {
39
+ constructor(network, dexKey, dexHelper) {
40
+ super(dexHelper, dexKey);
41
+ this.network = network;
42
+ this.dexKey = dexKey;
43
+ this.dexHelper = dexHelper;
44
+ this.hasConstantPriceLargeAmounts = false;
45
+ this.needWrapNative = true;
46
+ this.isFeeOnTransferSupported = false;
47
+ this.exchangeRateUnit = 1000000000000000000n;
48
+ this.logger = dexHelper.getLogger(dexKey);
49
+ this.eventPool = new stkgho_pool_1.StkGHOEventPool(dexKey, dexKey, network, dexHelper, this.logger);
50
+ const config = config_1.StkGHOConfig[dexKey][network];
51
+ this.config = {
52
+ stkGHO: config.stkGHO.toLowerCase(),
53
+ GHO: config.GHO.toLowerCase(),
54
+ };
55
+ }
56
+ async initializePricing(blockNumber) {
57
+ const state = await this.eventPool.generateState(blockNumber);
58
+ this.eventPool.initialize(blockNumber, {
59
+ state,
60
+ });
61
+ }
62
+ getAdapters(side) {
63
+ return null;
64
+ }
65
+ async getPoolIdentifiers(srcToken, destToken, side, blockNumber) {
66
+ const srcTokenAddress = srcToken.address.toLowerCase();
67
+ const destTokenAddress = destToken.address.toLowerCase();
68
+ if (srcTokenAddress === this.config.GHO &&
69
+ destTokenAddress === this.config.stkGHO) {
70
+ return [`${this.dexKey}`];
71
+ }
72
+ else {
73
+ return [];
74
+ }
75
+ }
76
+ async getPoolState(blockNumber) {
77
+ const eventState = this.eventPool.getState(blockNumber);
78
+ if (eventState)
79
+ return eventState;
80
+ const onChainState = await this.eventPool.generateState(blockNumber);
81
+ this.eventPool.setState(onChainState, blockNumber);
82
+ return onChainState;
83
+ }
84
+ async getPricesVolume(srcToken, destToken, amounts, side, blockNumber, limitPools) {
85
+ if (side === constants_1.SwapSide.BUY) {
86
+ return null;
87
+ }
88
+ const srcTokenAddress = srcToken.address.toLowerCase();
89
+ const destTokenAddress = destToken.address.toLowerCase();
90
+ if (srcTokenAddress != this.config.GHO ||
91
+ destTokenAddress != this.config.stkGHO) {
92
+ return null;
93
+ }
94
+ const state = await this.getPoolState(blockNumber);
95
+ return [
96
+ {
97
+ unit: state.exchangeRate,
98
+ prices: amounts.map(amount => (state.exchangeRate * amount) / this.exchangeRateUnit),
99
+ data: {
100
+ exchange: this.dexKey,
101
+ },
102
+ poolAddresses: [this.config.stkGHO],
103
+ exchange: this.dexKey,
104
+ gasCost: 100000,
105
+ poolIdentifier: `${this.dexKey}`,
106
+ },
107
+ ];
108
+ }
109
+ getCalldataGasCost(poolPrices) {
110
+ return CALLDATA_GAS_COST.DEX_NO_PAYLOAD;
111
+ }
112
+ getAdapterParam(srcToken, destToken, srcAmount, destAmount, data, side) {
113
+ const { exchange } = data;
114
+ const payload = '';
115
+ return {
116
+ targetExchange: exchange,
117
+ payload,
118
+ networkFee: '0',
119
+ };
120
+ }
121
+ async updatePoolState() { }
122
+ async getDexParam(srcToken, destToken, srcAmount, destAmount, recipient, data, side) {
123
+ const exchangeData = StkGHO.stkGHOInterface.encodeFunctionData('stake', [
124
+ recipient,
125
+ srcAmount,
126
+ ]);
127
+ return {
128
+ needWrapNative: this.needWrapNative,
129
+ dexFuncHasRecipient: true,
130
+ exchangeData,
131
+ targetExchange: this.config.stkGHO,
132
+ returnAmountPos: undefined,
133
+ };
134
+ }
135
+ async getTopPoolsForToken(tokenAddress, limit) {
136
+ tokenAddress = tokenAddress.toLowerCase();
137
+ if (tokenAddress == this.config.GHO) {
138
+ return [
139
+ {
140
+ exchange: this.dexKey,
141
+ address: this.config.stkGHO,
142
+ connectorTokens: [
143
+ {
144
+ decimals: 18,
145
+ address: this.config.stkGHO,
146
+ },
147
+ ],
148
+ liquidityUSD: 1000000000000, // GHO to stkGHO supply is unlimited
149
+ },
150
+ ];
151
+ }
152
+ else {
153
+ return [];
154
+ }
155
+ }
156
+ // This is optional function in case if your implementation has acquired any resources
157
+ // you need to release for graceful shutdown. For example, it may be any interval timer
158
+ releaseResources() { }
159
+ }
160
+ exports.StkGHO = StkGHO;
161
+ StkGHO.stkGHOInterface = new abi_1.Interface(stkGHO_json_1.default);
162
+ StkGHO.dexKeysWithNetwork = (0, utils_1.getDexKeysWithNetwork)(config_1.StkGHOConfig);
163
+ //# sourceMappingURL=stkgho.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stkgho.js","sourceRoot":"","sources":["../../../src/dex/stkgho/stkgho.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import { Address } from '../../types';
2
+ export declare type PoolState = {
3
+ exchangeRate: bigint;
4
+ };
5
+ export declare type StkGHOData = {
6
+ exchange: Address;
7
+ };
8
+ export declare type DexParams = {
9
+ stkGHO: Address;
10
+ GHO: Address;
11
+ };
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/dex/stkgho/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,17 @@
1
+ import { DexParams } from './types';
2
+ import { DexConfigMap } from '../../types';
3
+ export declare const MAX_GAS_COST_ESTIMATION: number;
4
+ export declare const SUBGRAPH_TIMEOUT: number;
5
+ export declare const MAX_POOL_CNT = 1000;
6
+ export declare const POOL_CACHE_TTL: number;
7
+ export declare const RECCURING_POOL_FETCH_INTERVAL_MS: number;
8
+ export declare const SwaapV1Config: DexConfigMap<DexParams>;
9
+ export declare const Adapters: {
10
+ [chainId: number]: {
11
+ [side: string]: {
12
+ name: string;
13
+ index: number;
14
+ }[] | null;
15
+ };
16
+ };
17
+ export declare const SUBGRAPH_FETCH_ALL_POOOLS_RQ = "query ($count: Int) {\n pools: pools(first: $count, orderBy: liquidity, orderDirection: desc, where: {finalized: true}) {\n id\n tokens {\n address\n decimals\n oracleInitialState {\n proxy\n price: fixedPointPrice\n decimals\n }\n }\n liquidityUSD: liquidity\n swapFee\n dynamicCoverageFeesZ\n dynamicCoverageFeesHorizon\n priceStatisticsLookbackInSec\n priceStatisticsLookbackInRound\n priceStatisticsLookbackStepInRound\n maxPriceUnpegRatio\n }\n}";
@@ -0,0 +1,56 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SUBGRAPH_FETCH_ALL_POOOLS_RQ = exports.Adapters = exports.SwaapV1Config = exports.RECCURING_POOL_FETCH_INTERVAL_MS = exports.POOL_CACHE_TTL = exports.MAX_POOL_CNT = exports.SUBGRAPH_TIMEOUT = exports.MAX_GAS_COST_ESTIMATION = void 0;
4
+ const constants_1 = require("../../constants");
5
+ exports.MAX_GAS_COST_ESTIMATION = 375 * 1000;
6
+ exports.SUBGRAPH_TIMEOUT = 1000 * 10;
7
+ exports.MAX_POOL_CNT = 1000;
8
+ exports.POOL_CACHE_TTL = 60 * 60; // 1hr
9
+ exports.RECCURING_POOL_FETCH_INTERVAL_MS = 12 * 3600 * 1000; // 12h (in ms)
10
+ exports.SwaapV1Config = {
11
+ SwaapV1: {
12
+ [constants_1.Network.POLYGON]: {
13
+ subgraphURL: 'https://api.thegraph.com/subgraphs/name/swaap-labs/swaapv1',
14
+ exchangeProxy: '0x718cc95685a0b0af73c2c8534243039a28687037',
15
+ },
16
+ },
17
+ };
18
+ exports.Adapters = {
19
+ [constants_1.Network.POLYGON]: {
20
+ [constants_1.SwapSide.SELL]: [
21
+ {
22
+ name: 'PolygonAdapter02',
23
+ index: 6,
24
+ },
25
+ ],
26
+ [constants_1.SwapSide.BUY]: [
27
+ {
28
+ name: 'PolygonBuyAdapter',
29
+ index: 4,
30
+ },
31
+ ],
32
+ },
33
+ };
34
+ exports.SUBGRAPH_FETCH_ALL_POOOLS_RQ = `query ($count: Int) {
35
+ pools: pools(first: $count, orderBy: liquidity, orderDirection: desc, where: {finalized: true}) {
36
+ id
37
+ tokens {
38
+ address
39
+ decimals
40
+ oracleInitialState {
41
+ proxy
42
+ price: fixedPointPrice
43
+ decimals
44
+ }
45
+ }
46
+ liquidityUSD: liquidity
47
+ swapFee
48
+ dynamicCoverageFeesZ
49
+ dynamicCoverageFeesHorizon
50
+ priceStatisticsLookbackInSec
51
+ priceStatisticsLookbackInRound
52
+ priceStatisticsLookbackStepInRound
53
+ maxPriceUnpegRatio
54
+ }
55
+ }`;
56
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/dex/swaap-v1/config.ts"],"names":[],"mappings":";;;AAEA,+CAAoD;AAEvC,QAAA,uBAAuB,GAAG,GAAG,GAAG,IAAI,CAAC;AACrC,QAAA,gBAAgB,GAAG,IAAI,GAAG,EAAE,CAAC;AAC7B,QAAA,YAAY,GAAG,IAAI,CAAC;AACpB,QAAA,cAAc,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,MAAM;AAChC,QAAA,gCAAgC,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,cAAc;AAEnE,QAAA,aAAa,GAA4B;IACpD,OAAO,EAAE;QACP,CAAC,mBAAO,CAAC,OAAO,CAAC,EAAE;YACjB,WAAW,EAAE,4DAA4D;YACzE,aAAa,EAAE,4CAA4C;SAC5D;KACF;CACF,CAAC;AAEW,QAAA,QAAQ,GAIjB;IACF,CAAC,mBAAO,CAAC,OAAO,CAAC,EAAE;QACjB,CAAC,oBAAQ,CAAC,IAAI,CAAC,EAAE;YACf;gBACE,IAAI,EAAE,kBAAkB;gBACxB,KAAK,EAAE,CAAC;aACT;SACF;QACD,CAAC,oBAAQ,CAAC,GAAG,CAAC,EAAE;YACd;gBACE,IAAI,EAAE,mBAAmB;gBACzB,KAAK,EAAE,CAAC;aACT;SACF;KACF;CACF,CAAC;AAEW,QAAA,4BAA4B,GAAG;;;;;;;;;;;;;;;;;;;;;EAqB1C,CAAC"}
@@ -0,0 +1,6 @@
1
+ import { BigNumber } from '@0x/utils';
2
+ import { SwaapV1PoolParameters, SwaapV1PoolLiquidities, SwaapV1PoolOracles } from './types';
3
+ export declare const defaultParametersState: SwaapV1PoolParameters;
4
+ export declare const defaultLiquiditiesState: SwaapV1PoolLiquidities;
5
+ export declare const defaultOraclesState: SwaapV1PoolOracles;
6
+ export declare const protocolPrecision: BigNumber;
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.protocolPrecision = exports.defaultOraclesState = exports.defaultLiquiditiesState = exports.defaultParametersState = void 0;
4
+ const utils_1 = require("@0x/utils");
5
+ exports.defaultParametersState = {
6
+ swapFee: BigInt(10 ** 12),
7
+ priceStatisticsLookbackInRound: 5,
8
+ priceStatisticsLookbackStepInRound: 4,
9
+ dynamicCoverageFeesZ: BigInt(6),
10
+ dynamicCoverageFeesHorizon: BigInt(5),
11
+ priceStatisticsLookbackInSec: BigInt(3600),
12
+ maxPriceUnpegRatio: BigInt(1025000000000000000),
13
+ };
14
+ exports.defaultLiquiditiesState = {};
15
+ exports.defaultOraclesState = {};
16
+ exports.protocolPrecision = new utils_1.BigNumber(10).pow(new utils_1.BigNumber(18));
17
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/dex/swaap-v1/constants.ts"],"names":[],"mappings":";;;AAAA,qCAAsC;AAOzB,QAAA,sBAAsB,GAA0B;IAC3D,OAAO,EAAE,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC;IACzB,8BAA8B,EAAE,CAAC;IACjC,kCAAkC,EAAE,CAAC;IACrC,oBAAoB,EAAE,MAAM,CAAC,CAAC,CAAC;IAC/B,0BAA0B,EAAE,MAAM,CAAC,CAAC,CAAC;IACrC,4BAA4B,EAAE,MAAM,CAAC,IAAI,CAAC;IAC1C,kBAAkB,EAAE,MAAM,CAAC,mBAAmB,CAAC;CAChD,CAAC;AAEW,QAAA,uBAAuB,GAA2B,EAAE,CAAC;AAErD,QAAA,mBAAmB,GAAuB,EAAE,CAAC;AAE7C,QAAA,iBAAiB,GAAG,IAAI,iBAAS,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,iBAAS,CAAC,EAAE,CAAC,CAAC,CAAC"}
@@ -0,0 +1,25 @@
1
+ import * as Struct from './Struct';
2
+ import { ChainLinkData } from '../types';
3
+ export declare class ChainlinkUtils {
4
+ static getLatestRound(latestRoundId: number, historicalPrices: ChainLinkData, currentTimestamp: bigint): Struct.LatestRound;
5
+ /**
6
+ * @notice Retrieves historical data from round id.
7
+ * @dev Special cases:
8
+ * - if retrieved price is negative --> fails
9
+ * - if no data can be found --> returns (0,0)
10
+ * @param oracle The price feed oracle
11
+ * @param _roundId The the round of interest ID
12
+ * @return The round price
13
+ * @return The round timestamp
14
+ */
15
+ static getRoundData(_roundId: number, historicalPrices: ChainLinkData): [bigint, bigint];
16
+ /**
17
+ * @notice Computes the price of token 2 in terms of token 1
18
+ * @param price_1 The latest price data for token 1
19
+ * @param decimals_1 The sum of the decimals of token 1 its oracle
20
+ * @param price_2 The latest price data for token 2
21
+ * @param decimals_2 The sum of the decimals of token 2 its oracle
22
+ * @return The last price of token 2 divded by the last price of token 1
23
+ */
24
+ static getTokenRelativePrice(price_1: bigint, decimals_1: bigint, price_2: bigint, decimals_2: bigint): bigint;
25
+ }