@defisaver/automation-sdk 3.1.3 → 3.2.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 (246) hide show
  1. package/.babelrc +3 -3
  2. package/.editorconfig +9 -9
  3. package/.env +5 -0
  4. package/.env.dev +4 -4
  5. package/.eslintignore +6 -6
  6. package/.eslintrc.js +39 -39
  7. package/.mocharc.json +4 -4
  8. package/.nvmrc +1 -1
  9. package/README.md +46 -46
  10. package/cjs/abis/Erc20.json +223 -223
  11. package/cjs/abis/SubStorage.json +21 -21
  12. package/cjs/abis/UniMulticall.json +17 -17
  13. package/cjs/abis/index.d.ts +9 -9
  14. package/cjs/abis/index.js +30 -30
  15. package/cjs/abis/legacy_AaveV2Subscriptions.json +8 -8
  16. package/cjs/abis/legacy_AuthCheck.json +8 -8
  17. package/cjs/abis/legacy_CompoundV2Subscriptions.json +9 -9
  18. package/cjs/abis/legacy_MakerSubscriptions.json +9 -9
  19. package/cjs/automation/private/Automation.d.ts +12 -12
  20. package/cjs/automation/private/Automation.js +42 -42
  21. package/cjs/automation/private/LegacyAutomation.d.ts +25 -25
  22. package/cjs/automation/private/LegacyAutomation.js +118 -118
  23. package/cjs/automation/private/LegacyProtocol.d.ts +22 -22
  24. package/cjs/automation/private/LegacyProtocol.js +41 -41
  25. package/cjs/automation/private/LegacyProtocol.test.d.ts +1 -1
  26. package/cjs/automation/private/LegacyProtocol.test.js +25 -25
  27. package/cjs/automation/private/Protocol.d.ts +22 -22
  28. package/cjs/automation/private/Protocol.js +41 -41
  29. package/cjs/automation/private/Protocol.test.d.ts +1 -1
  30. package/cjs/automation/private/Protocol.test.js +25 -25
  31. package/cjs/automation/private/StrategiesAutomation.d.ts +33 -33
  32. package/cjs/automation/private/StrategiesAutomation.js +190 -181
  33. package/cjs/automation/private/StrategiesAutomation.test.d.ts +1 -1
  34. package/cjs/automation/private/StrategiesAutomation.test.js +671 -671
  35. package/cjs/automation/public/ArbitrumStrategies.d.ts +5 -5
  36. package/cjs/automation/public/ArbitrumStrategies.js +13 -13
  37. package/cjs/automation/public/BaseStrategies.d.ts +5 -5
  38. package/cjs/automation/public/BaseStrategies.js +13 -13
  39. package/cjs/automation/public/EthereumStrategies.d.ts +5 -5
  40. package/cjs/automation/public/EthereumStrategies.js +13 -13
  41. package/cjs/automation/public/OptimismStrategies.d.ts +5 -5
  42. package/cjs/automation/public/OptimismStrategies.js +13 -13
  43. package/cjs/automation/public/Strategies.test.d.ts +1 -0
  44. package/cjs/automation/public/Strategies.test.js +61 -0
  45. package/cjs/automation/public/legacy/LegacyAaveAutomation.d.ts +6 -6
  46. package/cjs/automation/public/legacy/LegacyAaveAutomation.js +20 -20
  47. package/cjs/automation/public/legacy/LegacyCompoundAutomation.d.ts +6 -6
  48. package/cjs/automation/public/legacy/LegacyCompoundAutomation.js +20 -20
  49. package/cjs/automation/public/legacy/LegacyMakerAutomation.d.ts +6 -6
  50. package/cjs/automation/public/legacy/LegacyMakerAutomation.js +20 -20
  51. package/cjs/configuration.d.ts +1 -1
  52. package/cjs/configuration.js +12 -12
  53. package/cjs/constants/index.d.ts +28 -28
  54. package/cjs/constants/index.js +494 -489
  55. package/cjs/index.d.ts +23 -23
  56. package/cjs/index.js +65 -65
  57. package/cjs/services/contractService.d.ts +12 -12
  58. package/cjs/services/contractService.js +54 -54
  59. package/cjs/services/ethereumService.d.ts +7 -7
  60. package/cjs/services/ethereumService.js +49 -49
  61. package/cjs/services/ethereumService.test.d.ts +1 -1
  62. package/cjs/services/ethereumService.test.js +242 -242
  63. package/cjs/services/strategiesService.d.ts +2 -2
  64. package/cjs/services/strategiesService.js +724 -723
  65. package/cjs/services/strategiesService.test.d.ts +1 -1
  66. package/cjs/services/strategiesService.test.js +110 -110
  67. package/cjs/services/strategySubService.d.ts +100 -100
  68. package/cjs/services/strategySubService.js +267 -267
  69. package/cjs/services/strategySubService.test.d.ts +1 -1
  70. package/cjs/services/strategySubService.test.js +936 -936
  71. package/cjs/services/subDataService.d.ts +192 -192
  72. package/cjs/services/subDataService.js +475 -475
  73. package/cjs/services/subDataService.test.d.ts +1 -1
  74. package/cjs/services/subDataService.test.js +1282 -1282
  75. package/cjs/services/triggerService.d.ts +191 -191
  76. package/cjs/services/triggerService.js +367 -367
  77. package/cjs/services/triggerService.test.d.ts +1 -1
  78. package/cjs/services/triggerService.test.js +926 -926
  79. package/cjs/services/utils.d.ts +25 -25
  80. package/cjs/services/utils.js +131 -131
  81. package/cjs/services/utils.test.d.ts +1 -1
  82. package/cjs/services/utils.test.js +376 -376
  83. package/cjs/types/contracts/generated/Erc20.d.ts +53 -53
  84. package/cjs/types/contracts/generated/Erc20.js +5 -5
  85. package/cjs/types/contracts/generated/Legacy_AaveV2Subscriptions.d.ts +129 -129
  86. package/cjs/types/contracts/generated/Legacy_AaveV2Subscriptions.js +5 -5
  87. package/cjs/types/contracts/generated/Legacy_AuthCheck.d.ts +20 -20
  88. package/cjs/types/contracts/generated/Legacy_AuthCheck.js +5 -5
  89. package/cjs/types/contracts/generated/Legacy_CompoundV2Subscriptions.d.ts +128 -128
  90. package/cjs/types/contracts/generated/Legacy_CompoundV2Subscriptions.js +5 -5
  91. package/cjs/types/contracts/generated/Legacy_MakerSubscriptions.d.ts +246 -246
  92. package/cjs/types/contracts/generated/Legacy_MakerSubscriptions.js +5 -5
  93. package/cjs/types/contracts/generated/SubStorage.d.ts +110 -114
  94. package/cjs/types/contracts/generated/SubStorage.js +5 -5
  95. package/cjs/types/contracts/generated/UniMulticall.d.ts +55 -55
  96. package/cjs/types/contracts/generated/UniMulticall.js +5 -5
  97. package/cjs/types/contracts/generated/index.d.ts +7 -7
  98. package/cjs/types/contracts/generated/index.js +2 -2
  99. package/cjs/types/contracts/generated/types.d.ts +54 -54
  100. package/cjs/types/contracts/generated/types.js +2 -2
  101. package/cjs/types/enums.d.ts +186 -184
  102. package/cjs/types/enums.js +208 -206
  103. package/cjs/types/index.d.ts +224 -224
  104. package/cjs/types/index.js +2 -2
  105. package/esm/abis/Erc20.json +223 -223
  106. package/esm/abis/SubStorage.json +21 -21
  107. package/esm/abis/UniMulticall.json +17 -17
  108. package/esm/abis/index.d.ts +9 -9
  109. package/esm/abis/index.js +18 -18
  110. package/esm/abis/legacy_AaveV2Subscriptions.json +8 -8
  111. package/esm/abis/legacy_AuthCheck.json +8 -8
  112. package/esm/abis/legacy_CompoundV2Subscriptions.json +9 -9
  113. package/esm/abis/legacy_MakerSubscriptions.json +9 -9
  114. package/esm/automation/private/Automation.d.ts +12 -12
  115. package/esm/automation/private/Automation.js +39 -39
  116. package/esm/automation/private/LegacyAutomation.d.ts +25 -25
  117. package/esm/automation/private/LegacyAutomation.js +112 -112
  118. package/esm/automation/private/LegacyProtocol.d.ts +22 -22
  119. package/esm/automation/private/LegacyProtocol.js +38 -38
  120. package/esm/automation/private/LegacyProtocol.test.d.ts +1 -1
  121. package/esm/automation/private/LegacyProtocol.test.js +20 -20
  122. package/esm/automation/private/Protocol.d.ts +22 -22
  123. package/esm/automation/private/Protocol.js +38 -38
  124. package/esm/automation/private/Protocol.test.d.ts +1 -1
  125. package/esm/automation/private/Protocol.test.js +20 -20
  126. package/esm/automation/private/StrategiesAutomation.d.ts +33 -33
  127. package/esm/automation/private/StrategiesAutomation.js +184 -175
  128. package/esm/automation/private/StrategiesAutomation.test.d.ts +1 -1
  129. package/esm/automation/private/StrategiesAutomation.test.js +666 -666
  130. package/esm/automation/public/ArbitrumStrategies.d.ts +5 -5
  131. package/esm/automation/public/ArbitrumStrategies.js +7 -7
  132. package/esm/automation/public/BaseStrategies.d.ts +5 -5
  133. package/esm/automation/public/BaseStrategies.js +7 -7
  134. package/esm/automation/public/EthereumStrategies.d.ts +5 -5
  135. package/esm/automation/public/EthereumStrategies.js +7 -7
  136. package/esm/automation/public/OptimismStrategies.d.ts +5 -5
  137. package/esm/automation/public/OptimismStrategies.js +7 -7
  138. package/esm/automation/public/Strategies.test.d.ts +1 -0
  139. package/esm/automation/public/Strategies.test.js +56 -0
  140. package/esm/automation/public/legacy/LegacyAaveAutomation.d.ts +6 -6
  141. package/esm/automation/public/legacy/LegacyAaveAutomation.js +14 -14
  142. package/esm/automation/public/legacy/LegacyCompoundAutomation.d.ts +6 -6
  143. package/esm/automation/public/legacy/LegacyCompoundAutomation.js +14 -14
  144. package/esm/automation/public/legacy/LegacyMakerAutomation.d.ts +6 -6
  145. package/esm/automation/public/legacy/LegacyMakerAutomation.js +14 -14
  146. package/esm/configuration.d.ts +1 -1
  147. package/esm/configuration.js +7 -7
  148. package/esm/constants/index.d.ts +28 -28
  149. package/esm/constants/index.js +488 -483
  150. package/esm/index.d.ts +23 -23
  151. package/esm/index.js +23 -23
  152. package/esm/services/contractService.d.ts +12 -12
  153. package/esm/services/contractService.js +45 -45
  154. package/esm/services/ethereumService.d.ts +7 -7
  155. package/esm/services/ethereumService.js +41 -41
  156. package/esm/services/ethereumService.test.d.ts +1 -1
  157. package/esm/services/ethereumService.test.js +237 -237
  158. package/esm/services/strategiesService.d.ts +2 -2
  159. package/esm/services/strategiesService.js +697 -696
  160. package/esm/services/strategiesService.test.d.ts +1 -1
  161. package/esm/services/strategiesService.test.js +108 -108
  162. package/esm/services/strategySubService.d.ts +100 -100
  163. package/esm/services/strategySubService.js +238 -238
  164. package/esm/services/strategySubService.test.d.ts +1 -1
  165. package/esm/services/strategySubService.test.js +908 -908
  166. package/esm/services/subDataService.d.ts +192 -192
  167. package/esm/services/subDataService.js +469 -469
  168. package/esm/services/subDataService.test.d.ts +1 -1
  169. package/esm/services/subDataService.test.js +1254 -1254
  170. package/esm/services/triggerService.d.ts +191 -191
  171. package/esm/services/triggerService.js +338 -338
  172. package/esm/services/triggerService.test.d.ts +1 -1
  173. package/esm/services/triggerService.test.js +901 -901
  174. package/esm/services/utils.d.ts +25 -25
  175. package/esm/services/utils.js +82 -82
  176. package/esm/services/utils.test.d.ts +1 -1
  177. package/esm/services/utils.test.js +348 -348
  178. package/esm/types/contracts/generated/Erc20.d.ts +53 -53
  179. package/esm/types/contracts/generated/Erc20.js +4 -4
  180. package/esm/types/contracts/generated/Legacy_AaveV2Subscriptions.d.ts +129 -129
  181. package/esm/types/contracts/generated/Legacy_AaveV2Subscriptions.js +4 -4
  182. package/esm/types/contracts/generated/Legacy_AuthCheck.d.ts +20 -20
  183. package/esm/types/contracts/generated/Legacy_AuthCheck.js +4 -4
  184. package/esm/types/contracts/generated/Legacy_CompoundV2Subscriptions.d.ts +128 -128
  185. package/esm/types/contracts/generated/Legacy_CompoundV2Subscriptions.js +4 -4
  186. package/esm/types/contracts/generated/Legacy_MakerSubscriptions.d.ts +246 -246
  187. package/esm/types/contracts/generated/Legacy_MakerSubscriptions.js +4 -4
  188. package/esm/types/contracts/generated/SubStorage.d.ts +110 -114
  189. package/esm/types/contracts/generated/SubStorage.js +4 -4
  190. package/esm/types/contracts/generated/UniMulticall.d.ts +55 -55
  191. package/esm/types/contracts/generated/UniMulticall.js +4 -4
  192. package/esm/types/contracts/generated/index.d.ts +7 -7
  193. package/esm/types/contracts/generated/index.js +1 -1
  194. package/esm/types/contracts/generated/types.d.ts +54 -54
  195. package/esm/types/contracts/generated/types.js +1 -1
  196. package/esm/types/enums.d.ts +186 -184
  197. package/esm/types/enums.js +205 -203
  198. package/esm/types/index.d.ts +224 -224
  199. package/esm/types/index.js +1 -1
  200. package/package.json +62 -61
  201. package/scripts/generateContractTypes.js +39 -39
  202. package/src/abis/Erc20.json +222 -222
  203. package/src/abis/SubStorage.json +21 -21
  204. package/src/abis/UniMulticall.json +17 -17
  205. package/src/abis/index.ts +28 -28
  206. package/src/abis/legacy_AaveV2Subscriptions.json +7 -7
  207. package/src/abis/legacy_AuthCheck.json +7 -7
  208. package/src/abis/legacy_CompoundV2Subscriptions.json +8 -8
  209. package/src/abis/legacy_MakerSubscriptions.json +8 -8
  210. package/src/automation/private/Automation.ts +44 -44
  211. package/src/automation/private/LegacyAutomation.ts +135 -135
  212. package/src/automation/private/LegacyProtocol.test.ts +23 -23
  213. package/src/automation/private/LegacyProtocol.ts +51 -51
  214. package/src/automation/private/Protocol.test.ts +23 -23
  215. package/src/automation/private/Protocol.ts +51 -51
  216. package/src/automation/private/StrategiesAutomation.test.ts +663 -663
  217. package/src/automation/private/StrategiesAutomation.ts +254 -242
  218. package/src/automation/public/ArbitrumStrategies.ts +10 -10
  219. package/src/automation/public/BaseStrategies.ts +10 -10
  220. package/src/automation/public/EthereumStrategies.ts +10 -10
  221. package/src/automation/public/OptimismStrategies.ts +10 -10
  222. package/src/automation/public/Strategies.test.ts +49 -0
  223. package/src/automation/public/legacy/LegacyAaveAutomation.ts +20 -20
  224. package/src/automation/public/legacy/LegacyCompoundAutomation.ts +20 -20
  225. package/src/automation/public/legacy/LegacyMakerAutomation.ts +20 -20
  226. package/src/configuration.ts +8 -8
  227. package/src/constants/index.ts +523 -507
  228. package/src/index.ts +39 -39
  229. package/src/services/contractService.ts +77 -77
  230. package/src/services/ethereumService.test.ts +257 -257
  231. package/src/services/ethereumService.ts +69 -69
  232. package/src/services/strategiesService.test.ts +105 -105
  233. package/src/services/strategiesService.ts +935 -934
  234. package/src/services/strategySubService.test.ts +1122 -1122
  235. package/src/services/strategySubService.ts +524 -524
  236. package/src/services/subDataService.test.ts +1387 -1387
  237. package/src/services/subDataService.ts +645 -645
  238. package/src/services/triggerService.test.ts +1004 -1004
  239. package/src/services/triggerService.ts +449 -449
  240. package/src/services/utils.test.ts +430 -430
  241. package/src/services/utils.ts +103 -103
  242. package/src/types/enums.ts +202 -200
  243. package/src/types/index.ts +279 -279
  244. package/tsconfig.esm.json +8 -8
  245. package/tsconfig.json +22 -22
  246. package/umd/index.js +0 -34103
@@ -1,723 +1,724 @@
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
- Object.defineProperty(exports, "__esModule", { value: true });
26
- exports.parseStrategiesAutomatedPosition = void 0;
27
- const tokens_1 = require("@defisaver/tokens");
28
- const lodash_1 = require("lodash");
29
- const constants_1 = require("../constants");
30
- const enums_1 = require("../types/enums");
31
- const utils_1 = require("./utils");
32
- const subDataService = __importStar(require("./subDataService"));
33
- const triggerService = __importStar(require("./triggerService"));
34
- const SPARK_MARKET_ADDRESSES = {
35
- [enums_1.ChainId.Ethereum]: '0x02C3eA4e34C0cBd694D2adFa2c690EECbC1793eE',
36
- };
37
- const AAVE_V3_MARKET_ADDRESSES = {
38
- [enums_1.ChainId.Ethereum]: '0x2f39d218133AFaB8F2B819B1066c7E434Ad94E9e',
39
- [enums_1.ChainId.Optimism]: '0xa97684ead0e402dC232d5A977953DF7ECBaB3CDb',
40
- [enums_1.ChainId.Arbitrum]: '0xa97684ead0e402dC232d5A977953DF7ECBaB3CDb',
41
- [enums_1.ChainId.Base]: '0xe20fCBdBfFC4Dd138cE8b2E6FBb6CB49777ad64D',
42
- };
43
- function parseMakerSavingsLiqProtection(position, parseData) {
44
- const _position = (0, lodash_1.cloneDeep)(position);
45
- const { subStruct } = parseData.subscriptionEventData;
46
- const triggerData = triggerService.makerRatioTrigger.decode(subStruct.triggerData);
47
- const subData = subDataService.makerRepayFromSavingsSubData.decode(subStruct.subData);
48
- _position.strategyData.decoded.triggerData = triggerData;
49
- _position.strategyData.decoded.subData = subData;
50
- _position.positionId = (0, utils_1.getPositionId)(_position.chainId, _position.protocol.id, subData.vaultId);
51
- _position.specific = {
52
- triggerRepayRatio: Number(triggerData.ratio),
53
- targetRepayRatio: Number(subData.targetRatio),
54
- repayEnabled: true,
55
- boostEnabled: false,
56
- };
57
- return _position;
58
- }
59
- function parseMakerCloseOnPrice(position, parseData) {
60
- const _position = (0, lodash_1.cloneDeep)(position);
61
- const { subStruct } = parseData.subscriptionEventData;
62
- const triggerData = triggerService.chainlinkPriceTrigger.decode(subStruct.triggerData);
63
- const subData = subDataService.makerCloseSubData.decode(subStruct.subData);
64
- _position.strategyData.decoded.triggerData = triggerData;
65
- _position.strategyData.decoded.subData = subData;
66
- _position.positionId = (0, utils_1.getPositionId)(_position.chainId, _position.protocol.id, subData.vaultId);
67
- const isTakeProfit = (0, utils_1.isRatioStateOver)(Number(triggerData.state));
68
- _position.strategy.strategyId = isTakeProfit ? enums_1.Strategies.IdOverrides.TakeProfit : enums_1.Strategies.IdOverrides.StopLoss;
69
- _position.specific = {
70
- price: triggerData.price,
71
- closeToAssetAddr: subData.closeToAssetAddr,
72
- };
73
- return _position;
74
- }
75
- function parseMakerTrailingStop(position, parseData) {
76
- const _position = (0, lodash_1.cloneDeep)(position);
77
- const { subStruct } = parseData.subscriptionEventData;
78
- const triggerData = triggerService.trailingStopTrigger.decode(subStruct.triggerData);
79
- const subData = subDataService.makerCloseSubData.decode(subStruct.subData);
80
- _position.strategyData.decoded.triggerData = triggerData;
81
- _position.strategyData.decoded.subData = subData;
82
- _position.positionId = (0, utils_1.getPositionId)(_position.chainId, _position.protocol.id, subData.vaultId);
83
- _position.strategy.strategyId = enums_1.Strategies.IdOverrides.TrailingStop;
84
- _position.specific = {
85
- triggerPercentage: Number(triggerData.triggerPercentage),
86
- roundId: Number(triggerData.roundId),
87
- closeToAssetAddr: subData.closeToAssetAddr,
88
- };
89
- return _position;
90
- }
91
- function parseMakerLeverageManagement(position, parseData) {
92
- const _position = (0, lodash_1.cloneDeep)(position);
93
- const { subStruct, subId } = parseData.subscriptionEventData;
94
- const { isEnabled } = parseData.strategiesSubsData;
95
- const triggerData = triggerService.makerRatioTrigger.decode(subStruct.triggerData);
96
- const subData = subDataService.makerLeverageManagementSubData.decode(subStruct.subData);
97
- _position.strategyData.decoded.triggerData = triggerData;
98
- _position.strategyData.decoded.subData = subData;
99
- _position.positionId = (0, utils_1.getPositionId)(_position.chainId, _position.protocol.id, subData.vaultId);
100
- const isRepay = _position.strategy.strategyId === enums_1.Strategies.Identifiers.Repay;
101
- if (isRepay) {
102
- _position.specific = {
103
- triggerRepayRatio: triggerData.ratio,
104
- targetRepayRatio: subData.targetRatio,
105
- repayEnabled: true,
106
- subId1: Number(subId),
107
- mergeWithId: enums_1.Strategies.Identifiers.Boost,
108
- };
109
- }
110
- else {
111
- _position.specific = {
112
- triggerBoostRatio: triggerData.ratio,
113
- targetBoostRatio: subData.targetRatio,
114
- boostEnabled: isEnabled,
115
- subId2: Number(subId),
116
- mergeId: enums_1.Strategies.Identifiers.Boost,
117
- };
118
- }
119
- _position.strategy.strategyId = enums_1.Strategies.IdOverrides.LeverageManagement;
120
- return _position;
121
- }
122
- function parseLiquityCloseOnPrice(position, parseData) {
123
- const _position = (0, lodash_1.cloneDeep)(position);
124
- const { subStruct } = parseData.subscriptionEventData;
125
- const triggerData = triggerService.chainlinkPriceTrigger.decode(subStruct.triggerData);
126
- const subData = subDataService.liquityCloseSubData.decode(subStruct.subData);
127
- _position.strategyData.decoded.triggerData = triggerData;
128
- _position.strategyData.decoded.subData = subData;
129
- _position.positionId = (0, utils_1.getPositionId)(_position.chainId, _position.protocol.id, _position.owner);
130
- const isTakeProfit = (0, utils_1.isRatioStateOver)(Number(triggerData.state));
131
- _position.strategy.strategyId = isTakeProfit ? enums_1.Strategies.IdOverrides.TakeProfit : enums_1.Strategies.IdOverrides.StopLoss;
132
- _position.specific = {
133
- price: triggerData.price,
134
- closeToAssetAddr: subData.closeToAssetAddr,
135
- };
136
- return _position;
137
- }
138
- function parseLiquityTrailingStop(position, parseData) {
139
- const _position = (0, lodash_1.cloneDeep)(position);
140
- const { subStruct } = parseData.subscriptionEventData;
141
- const triggerData = triggerService.trailingStopTrigger.decode(subStruct.triggerData);
142
- const subData = subDataService.liquityCloseSubData.decode(subStruct.subData);
143
- _position.strategyData.decoded.triggerData = triggerData;
144
- _position.strategyData.decoded.subData = subData;
145
- _position.positionId = (0, utils_1.getPositionId)(_position.chainId, _position.protocol.id, _position.owner);
146
- _position.strategy.strategyId = enums_1.Strategies.IdOverrides.TrailingStop;
147
- _position.specific = {
148
- triggerPercentage: Number(triggerData.triggerPercentage),
149
- roundId: Number(triggerData.roundId),
150
- closeToAssetAddr: subData.closeToAssetAddr,
151
- };
152
- return _position;
153
- }
154
- function parseAaveV2LeverageManagement(position, parseData) {
155
- const _position = (0, lodash_1.cloneDeep)(position);
156
- const { subStruct, subId } = parseData.subscriptionEventData;
157
- const { isEnabled } = parseData.strategiesSubsData;
158
- const triggerData = triggerService.aaveV2RatioTrigger.decode(subStruct.triggerData);
159
- const subData = subDataService.aaveV2LeverageManagementSubData.decode(subStruct.subData);
160
- _position.strategyData.decoded.triggerData = triggerData;
161
- _position.strategyData.decoded.subData = subData;
162
- _position.positionId = (0, utils_1.getPositionId)(_position.chainId, _position.protocol.id, _position.owner, triggerData.market);
163
- const isRepay = _position.strategy.strategyId === enums_1.Strategies.Identifiers.Repay;
164
- if (isRepay) {
165
- _position.specific = {
166
- triggerRepayRatio: triggerData.ratio,
167
- targetRepayRatio: subData.targetRatio,
168
- repayEnabled: true,
169
- subId1: Number(subId),
170
- mergeWithId: enums_1.Strategies.Identifiers.Boost,
171
- };
172
- }
173
- else {
174
- _position.specific = {
175
- triggerBoostRatio: triggerData.ratio,
176
- targetBoostRatio: subData.targetRatio,
177
- boostEnabled: isEnabled,
178
- subId2: Number(subId),
179
- mergeId: enums_1.Strategies.Identifiers.Boost,
180
- };
181
- }
182
- _position.strategy.strategyId = enums_1.Strategies.IdOverrides.LeverageManagement;
183
- return _position;
184
- }
185
- function parseAaveV3LeverageManagement(position, parseData) {
186
- const _position = (0, lodash_1.cloneDeep)(position);
187
- const { subStruct, subId } = parseData.subscriptionEventData;
188
- const { isEnabled } = parseData.strategiesSubsData;
189
- const triggerData = triggerService.aaveV3RatioTrigger.decode(subStruct.triggerData);
190
- const subData = subDataService.aaveV3LeverageManagementSubData.decode(subStruct.subData);
191
- _position.strategyData.decoded.triggerData = triggerData;
192
- _position.strategyData.decoded.subData = subData;
193
- _position.positionId = (0, utils_1.getPositionId)(_position.chainId, _position.protocol.id, _position.owner, triggerData.market);
194
- const isRepay = _position.strategy.strategyId === enums_1.Strategies.Identifiers.Repay;
195
- if (isRepay) {
196
- _position.specific = {
197
- triggerRepayRatio: triggerData.ratio,
198
- targetRepayRatio: subData.targetRatio,
199
- repayEnabled: true,
200
- subId1: Number(subId),
201
- mergeWithId: enums_1.Strategies.Identifiers.Boost,
202
- };
203
- }
204
- else {
205
- _position.specific = {
206
- triggerBoostRatio: triggerData.ratio,
207
- targetBoostRatio: subData.targetRatio,
208
- boostEnabled: isEnabled,
209
- subId2: Number(subId),
210
- mergeId: enums_1.Strategies.Identifiers.Boost,
211
- };
212
- }
213
- _position.strategy.strategyId = enums_1.Strategies.IdOverrides.LeverageManagement;
214
- return _position;
215
- }
216
- function parseMorphoAaveV2LeverageManagement(position, parseData) {
217
- const _position = (0, lodash_1.cloneDeep)(position);
218
- const { subStruct, subId } = parseData.subscriptionEventData;
219
- const { isEnabled } = parseData.strategiesSubsData;
220
- const triggerData = triggerService.morphoAaveV2RatioTrigger.decode(subStruct.triggerData);
221
- const subData = subDataService.morphoAaveV2LeverageManagementSubData.decode(subStruct.subData);
222
- _position.strategyData.decoded.triggerData = triggerData;
223
- _position.strategyData.decoded.subData = subData;
224
- _position.positionId = (0, utils_1.getPositionId)(_position.chainId, _position.protocol.id, _position.owner);
225
- const isRepay = _position.strategy.strategyId === enums_1.Strategies.Identifiers.Repay;
226
- if (isRepay) {
227
- _position.specific = {
228
- triggerRepayRatio: triggerData.ratio,
229
- targetRepayRatio: subData.targetRatio,
230
- repayEnabled: true,
231
- subId1: Number(subId),
232
- mergeWithId: enums_1.Strategies.Identifiers.Boost,
233
- };
234
- }
235
- else {
236
- _position.specific = {
237
- triggerBoostRatio: triggerData.ratio,
238
- targetBoostRatio: subData.targetRatio,
239
- boostEnabled: isEnabled,
240
- subId2: Number(subId),
241
- mergeId: enums_1.Strategies.Identifiers.Boost,
242
- };
243
- }
244
- _position.strategy.strategyId = enums_1.Strategies.IdOverrides.LeverageManagement;
245
- return _position;
246
- }
247
- function parseAaveV3CloseOnPrice(position, parseData) {
248
- const _position = (0, lodash_1.cloneDeep)(position);
249
- const { subStruct } = parseData.subscriptionEventData;
250
- const triggerData = triggerService.aaveV3QuotePriceTrigger.decode(subStruct.triggerData);
251
- const subData = subDataService.aaveV3QuotePriceSubData.decode(subStruct.subData);
252
- _position.strategyData.decoded.triggerData = triggerData;
253
- _position.strategyData.decoded.subData = subData;
254
- _position.positionId = (0, utils_1.getPositionId)(_position.chainId, _position.protocol.id, _position.owner, AAVE_V3_MARKET_ADDRESSES[_position.chainId]);
255
- _position.specific = {
256
- collAsset: subData.collAsset,
257
- collAssetId: subData.collAssetId,
258
- debtAsset: subData.debtAsset,
259
- debtAssetId: subData.debtAssetId,
260
- baseToken: triggerData.baseTokenAddress,
261
- quoteToken: triggerData.quoteTokenAddress,
262
- price: triggerData.price,
263
- ratioState: triggerData.ratioState,
264
- };
265
- const { ratioState } = (0, utils_1.getRatioStateInfoForAaveCloseStrategy)(_position.specific.ratioState, (0, utils_1.wethToEthByAddress)(_position.specific.collAsset, parseData.chainId), (0, utils_1.wethToEthByAddress)(_position.specific.debtAsset, parseData.chainId), parseData.chainId);
266
- _position.strategy.strategyId = (0, utils_1.isRatioStateOver)(ratioState) ? enums_1.Strategies.IdOverrides.TakeProfit : enums_1.Strategies.IdOverrides.StopLoss;
267
- return _position;
268
- }
269
- function parseAaveV3CloseOnPriceWithMaximumGasPrice(position, parseData) {
270
- const _position = (0, lodash_1.cloneDeep)(position);
271
- const { subStruct } = parseData.subscriptionEventData;
272
- const triggerData = triggerService.aaveV3QuotePriceWithMaximumGasPriceTrigger.decode(subStruct.triggerData);
273
- const subData = subDataService.aaveV3QuotePriceSubData.decode(subStruct.subData);
274
- _position.strategyData.decoded.triggerData = triggerData;
275
- _position.strategyData.decoded.subData = subData;
276
- _position.positionId = (0, utils_1.getPositionId)(_position.chainId, _position.protocol.id, _position.owner, AAVE_V3_MARKET_ADDRESSES[_position.chainId]);
277
- _position.specific = {
278
- collAsset: subData.collAsset,
279
- collAssetId: subData.collAssetId,
280
- debtAsset: subData.debtAsset,
281
- debtAssetId: subData.debtAssetId,
282
- baseToken: triggerData.baseTokenAddress,
283
- quoteToken: triggerData.quoteTokenAddress,
284
- price: triggerData.price,
285
- maximumGasPrice: triggerData.maximumGasPrice,
286
- ratioState: triggerData.ratioState,
287
- };
288
- const { ratioState } = (0, utils_1.getRatioStateInfoForAaveCloseStrategy)(_position.specific.ratioState, (0, utils_1.wethToEthByAddress)(_position.specific.collAsset, parseData.chainId), (0, utils_1.wethToEthByAddress)(_position.specific.debtAsset, parseData.chainId), parseData.chainId);
289
- _position.strategy.strategyId = (0, utils_1.isRatioStateOver)(ratioState)
290
- ? enums_1.Strategies.IdOverrides.TakeProfitWithGasPrice
291
- : enums_1.Strategies.IdOverrides.StopLossWithGasPrice;
292
- return _position;
293
- }
294
- function parseCompoundV2LeverageManagement(position, parseData) {
295
- const _position = (0, lodash_1.cloneDeep)(position);
296
- const { subStruct, subId } = parseData.subscriptionEventData;
297
- const { isEnabled } = parseData.strategiesSubsData;
298
- const triggerData = triggerService.compoundV2RatioTrigger.decode(subStruct.triggerData);
299
- const subData = subDataService.compoundV2LeverageManagementSubData.decode(subStruct.subData);
300
- _position.strategyData.decoded.triggerData = triggerData;
301
- _position.strategyData.decoded.subData = subData;
302
- _position.owner = triggerData.owner.toLowerCase();
303
- _position.positionId = (0, utils_1.getPositionId)(_position.chainId, _position.protocol.id, _position.owner);
304
- const isRepay = [enums_1.Strategies.Identifiers.Repay, enums_1.Strategies.Identifiers.EoaRepay].includes(_position.strategy.strategyId);
305
- if (isRepay) {
306
- _position.specific = {
307
- triggerRepayRatio: triggerData.ratio,
308
- targetRepayRatio: subData.targetRatio,
309
- repayEnabled: true,
310
- subId1: Number(subId),
311
- mergeWithId: enums_1.Strategies.Identifiers.Boost,
312
- };
313
- }
314
- else {
315
- _position.specific = {
316
- triggerBoostRatio: triggerData.ratio,
317
- targetBoostRatio: subData.targetRatio,
318
- boostEnabled: isEnabled,
319
- subId2: Number(subId),
320
- mergeId: enums_1.Strategies.Identifiers.Boost,
321
- };
322
- }
323
- _position.strategy.strategyId = enums_1.Strategies.IdOverrides.LeverageManagement;
324
- return _position;
325
- }
326
- function parseCompoundV3LeverageManagement(position, parseData) {
327
- const _position = (0, lodash_1.cloneDeep)(position);
328
- const { subStruct, subId } = parseData.subscriptionEventData;
329
- const { isEnabled } = parseData.strategiesSubsData;
330
- const subDataDecoder = position.chainId !== 1
331
- ? subDataService.compoundV3L2LeverageManagementSubData
332
- : subDataService.compoundV3LeverageManagementSubData;
333
- const triggerData = triggerService.compoundV3RatioTrigger.decode(subStruct.triggerData);
334
- const subData = subDataDecoder.decode(subStruct.subData);
335
- _position.strategyData.decoded.triggerData = triggerData;
336
- _position.strategyData.decoded.subData = subData;
337
- _position.positionId = (0, utils_1.getPositionId)(_position.chainId, _position.protocol.id, triggerData.owner.toLowerCase(), triggerData.market);
338
- const isRepay = [enums_1.Strategies.Identifiers.Repay, enums_1.Strategies.Identifiers.EoaRepay].includes(_position.strategy.strategyId);
339
- if (isRepay) {
340
- _position.specific = {
341
- triggerRepayRatio: triggerData.ratio,
342
- targetRepayRatio: subData.targetRatio,
343
- repayEnabled: true,
344
- subId1: Number(subId),
345
- mergeWithId: enums_1.Strategies.Identifiers.Boost,
346
- };
347
- }
348
- else {
349
- _position.specific = {
350
- triggerBoostRatio: triggerData.ratio,
351
- targetBoostRatio: subData.targetRatio,
352
- boostEnabled: isEnabled,
353
- subId2: Number(subId),
354
- mergeId: enums_1.Strategies.Identifiers.Boost,
355
- };
356
- }
357
- const isEOA = _position.strategy.strategyId.includes('eoa');
358
- _position.strategy.strategyId = isEOA ? enums_1.Strategies.IdOverrides.EoaLeverageManagement : enums_1.Strategies.IdOverrides.LeverageManagement;
359
- return _position;
360
- }
361
- function parseChickenBondsRebond(position, parseData) {
362
- const _position = (0, lodash_1.cloneDeep)(position);
363
- const { subStruct } = parseData.subscriptionEventData;
364
- _position.strategyData.decoded.triggerData = triggerService.cBondsRebondTrigger.decode(subStruct.triggerData);
365
- _position.strategyData.decoded.subData = subDataService.cBondsRebondSubData.decode(subStruct.subData);
366
- _position.positionId = (0, utils_1.getPositionId)(_position.chainId, _position.protocol.id, _position.strategyData.decoded.triggerData.bondId);
367
- return _position;
368
- }
369
- function parseLiquityBondProtection(position, parseData) {
370
- const _position = (0, lodash_1.cloneDeep)(position);
371
- const { subStruct } = parseData.subscriptionEventData;
372
- const triggerData = triggerService.liquityRatioTrigger.decode(subStruct.triggerData);
373
- _position.strategyData.decoded.triggerData = triggerData;
374
- _position.strategyData.decoded.subData = subDataService.liquityPaybackUsingChickenBondSubData.decode(subStruct.subData);
375
- _position.positionId = (0, utils_1.getPositionId)(_position.chainId, _position.protocol.id, _position.owner);
376
- _position.specific = {
377
- triggerRepayRatio: Number(triggerData.ratio),
378
- targetRepayRatio: Infinity,
379
- repayEnabled: true,
380
- };
381
- return _position;
382
- }
383
- function parseExchangeDca(position, parseData, chainId) {
384
- const _position = (0, lodash_1.cloneDeep)(position);
385
- const { subStruct } = parseData.subscriptionEventData;
386
- _position.strategyData.decoded.triggerData = triggerService.exchangeTimestampTrigger.decode(subStruct.triggerData);
387
- _position.strategyData.decoded.subData = subDataService.exchangeDcaSubData.decode(subStruct.subData, chainId);
388
- _position.positionId = (0, utils_1.getPositionId)(_position.chainId, _position.protocol.id, _position.owner, Math.random());
389
- return _position;
390
- }
391
- function parseExchangeLimitOrder(position, parseData, chainId) {
392
- const _position = (0, lodash_1.cloneDeep)(position);
393
- const { subStruct } = parseData.subscriptionEventData;
394
- _position.strategyData.decoded.subData = subDataService.exchangeLimitOrderSubData.decode(subStruct.subData, chainId);
395
- const fromTokenDecimals = (0, tokens_1.getAssetInfoByAddress)(_position.strategyData.decoded.subData.fromToken, chainId).decimals;
396
- const toTokenDecimals = (0, tokens_1.getAssetInfoByAddress)(_position.strategyData.decoded.subData.toToken, chainId).decimals;
397
- _position.strategyData.decoded.triggerData = triggerService.exchangeOffchainPriceTrigger.decode(subStruct.triggerData, fromTokenDecimals, toTokenDecimals);
398
- _position.positionId = (0, utils_1.getPositionId)(_position.chainId, _position.protocol.id, _position.owner, Math.random());
399
- return _position;
400
- }
401
- function parseLiquityLeverageManagement(position, parseData) {
402
- const _position = (0, lodash_1.cloneDeep)(position);
403
- const { subStruct, subId } = parseData.subscriptionEventData;
404
- const { isEnabled } = parseData.strategiesSubsData;
405
- const triggerData = triggerService.liquityRatioTrigger.decode(subStruct.triggerData);
406
- const subData = subDataService.liquityLeverageManagementSubData.decode(subStruct.subData);
407
- _position.strategyData.decoded.triggerData = triggerData;
408
- _position.strategyData.decoded.subData = subData;
409
- _position.positionId = (0, utils_1.getPositionId)(_position.chainId, _position.protocol.id, _position.owner);
410
- const isRepay = _position.strategy.strategyId === enums_1.Strategies.Identifiers.Repay;
411
- if (isRepay) {
412
- _position.specific = {
413
- triggerRepayRatio: triggerData.ratio,
414
- targetRepayRatio: subData.targetRatio,
415
- repayEnabled: true,
416
- subId1: Number(subId),
417
- mergeWithId: enums_1.Strategies.Identifiers.Boost,
418
- };
419
- }
420
- else {
421
- _position.specific = {
422
- triggerBoostRatio: triggerData.ratio,
423
- targetBoostRatio: subData.targetRatio,
424
- boostEnabled: isEnabled,
425
- subId2: Number(subId),
426
- mergeId: enums_1.Strategies.Identifiers.Boost,
427
- };
428
- }
429
- _position.strategy.strategyId = enums_1.Strategies.IdOverrides.LeverageManagement;
430
- return _position;
431
- }
432
- function parseSparkLeverageManagement(position, parseData) {
433
- const _position = (0, lodash_1.cloneDeep)(position);
434
- const { subStruct, subId } = parseData.subscriptionEventData;
435
- const { isEnabled } = parseData.strategiesSubsData;
436
- const triggerData = triggerService.sparkRatioTrigger.decode(subStruct.triggerData);
437
- const subData = subDataService.sparkLeverageManagementSubData.decode(subStruct.subData);
438
- _position.strategyData.decoded.triggerData = triggerData;
439
- _position.strategyData.decoded.subData = subData;
440
- _position.positionId = (0, utils_1.getPositionId)(_position.chainId, _position.protocol.id, _position.owner, triggerData.market);
441
- const isRepay = _position.strategy.strategyId === enums_1.Strategies.Identifiers.Repay;
442
- if (isRepay) {
443
- _position.specific = {
444
- triggerRepayRatio: triggerData.ratio,
445
- targetRepayRatio: subData.targetRatio,
446
- repayEnabled: true,
447
- subId1: Number(subId),
448
- mergeWithId: enums_1.Strategies.Identifiers.Boost,
449
- };
450
- }
451
- else {
452
- _position.specific = {
453
- triggerBoostRatio: triggerData.ratio,
454
- targetBoostRatio: subData.targetRatio,
455
- boostEnabled: isEnabled,
456
- subId2: Number(subId),
457
- mergeId: enums_1.Strategies.Identifiers.Boost,
458
- };
459
- }
460
- _position.strategy.strategyId = enums_1.Strategies.IdOverrides.LeverageManagement;
461
- return _position;
462
- }
463
- function parseSparkCloseOnPrice(position, parseData) {
464
- const _position = (0, lodash_1.cloneDeep)(position);
465
- const { subStruct } = parseData.subscriptionEventData;
466
- const triggerData = triggerService.sparkQuotePriceTrigger.decode(subStruct.triggerData);
467
- const subData = subDataService.sparkQuotePriceSubData.decode(subStruct.subData);
468
- _position.strategyData.decoded.triggerData = triggerData;
469
- _position.strategyData.decoded.subData = subData;
470
- _position.positionId = (0, utils_1.getPositionId)(_position.chainId, _position.protocol.id, _position.owner, SPARK_MARKET_ADDRESSES[_position.chainId]);
471
- _position.specific = {
472
- collAsset: subData.collAsset,
473
- collAssetId: subData.collAssetId,
474
- debtAsset: subData.debtAsset,
475
- debtAssetId: subData.debtAssetId,
476
- baseToken: triggerData.baseTokenAddress,
477
- quoteToken: triggerData.quoteTokenAddress,
478
- price: triggerData.price,
479
- ratioState: triggerData.ratioState,
480
- };
481
- const { ratioState } = (0, utils_1.getRatioStateInfoForAaveCloseStrategy)(_position.specific.ratioState, (0, utils_1.wethToEthByAddress)(_position.specific.collAsset, parseData.chainId), (0, utils_1.wethToEthByAddress)(_position.specific.debtAsset, parseData.chainId), parseData.chainId);
482
- _position.strategy.strategyId = (0, utils_1.isRatioStateOver)(ratioState) ? enums_1.Strategies.IdOverrides.TakeProfit : enums_1.Strategies.IdOverrides.StopLoss;
483
- return _position;
484
- }
485
- function parseLiquitySavingsLiqProtection(position, parseData) {
486
- const _position = (0, lodash_1.cloneDeep)(position);
487
- const { subStruct } = parseData.subscriptionEventData;
488
- const triggerData = triggerService.liquityRatioTrigger.decode(subStruct.triggerData);
489
- const subData = subDataService.liquityRepayFromSavingsSubData.decode(subStruct.subData);
490
- _position.strategyData.decoded.triggerData = triggerData;
491
- _position.strategyData.decoded.subData = subData;
492
- _position.positionId = (0, utils_1.getPositionId)(_position.chainId, _position.protocol.id, _position.owner);
493
- _position.specific = {
494
- triggerRepayRatio: triggerData.ratio,
495
- targetRepayRatio: subData.targetRatio,
496
- repayEnabled: true,
497
- boostEnabled: false,
498
- };
499
- return _position;
500
- }
501
- function parseLiquityDebtInFrontRepay(position, parseData) {
502
- const _position = (0, lodash_1.cloneDeep)(position);
503
- const { subStruct } = parseData.subscriptionEventData;
504
- const triggerData = triggerService.liquityDebtInFrontWithLimitTrigger.decode(subStruct.triggerData);
505
- const subData = subDataService.liquityDebtInFrontRepaySubData.decode(subStruct.subData);
506
- _position.strategyData.decoded.triggerData = triggerData;
507
- _position.strategyData.decoded.subData = subData;
508
- _position.positionId = (0, utils_1.getPositionId)(_position.chainId, _position.protocol.id, _position.owner);
509
- _position.specific = {
510
- debtInFrontMin: triggerData.debtInFrontMin,
511
- targetRepayRatioIncrease: subData.targetRatioIncrease,
512
- };
513
- return _position;
514
- }
515
- function parseCrvUSDLeverageManagement(position, parseData) {
516
- const _position = (0, lodash_1.cloneDeep)(position);
517
- const { subStruct, subId, subHash } = parseData.subscriptionEventData;
518
- const { isEnabled } = parseData.strategiesSubsData;
519
- const triggerData = triggerService.crvUSDRatioTrigger.decode(subStruct.triggerData);
520
- const subData = subDataService.crvUSDLeverageManagementSubData.decode(subStruct.subData);
521
- _position.strategyData.decoded.triggerData = triggerData;
522
- _position.strategyData.decoded.subData = subData;
523
- _position.positionId = (0, utils_1.getPositionId)(_position.chainId, _position.protocol.id, _position.owner, triggerData.controller);
524
- const isRepay = _position.strategy.strategyId === enums_1.Strategies.Identifiers.Repay;
525
- if (isRepay) {
526
- _position.specific = {
527
- triggerRepayRatio: triggerData.ratio,
528
- targetRepayRatio: subData.targetRatio,
529
- repayEnabled: isEnabled,
530
- subId1: Number(subId),
531
- subHashRepay: subHash,
532
- mergeWithId: enums_1.Strategies.Identifiers.Boost,
533
- };
534
- }
535
- else {
536
- _position.specific = {
537
- triggerBoostRatio: triggerData.ratio,
538
- targetBoostRatio: subData.targetRatio,
539
- boostEnabled: isEnabled,
540
- subId2: Number(subId),
541
- subHashBoost: subHash,
542
- mergeId: enums_1.Strategies.Identifiers.Boost,
543
- };
544
- }
545
- _position.strategy.strategyId = enums_1.Strategies.IdOverrides.LeverageManagement;
546
- return _position;
547
- }
548
- function parseCrvUSDPayback(position, parseData) {
549
- const _position = (0, lodash_1.cloneDeep)(position);
550
- const { subStruct } = parseData.subscriptionEventData;
551
- const triggerData = triggerService.crvUsdHealthRatioTrigger.decode(subStruct.triggerData);
552
- const subData = subDataService.crvUSDPaybackSubData.decode(subStruct.subData);
553
- _position.strategyData.decoded.triggerData = triggerData;
554
- _position.strategyData.decoded.subData = subData;
555
- _position.positionId = (0, utils_1.getPositionId)(_position.chainId, _position.protocol.id, _position.owner, triggerData.controller, Math.random());
556
- _position.strategy.strategyId = enums_1.Strategies.Identifiers.Payback;
557
- return _position;
558
- }
559
- function parseMorphoBlueLeverageManagement(position, parseData) {
560
- const _position = (0, lodash_1.cloneDeep)(position);
561
- const { subStruct, subId, subHash } = parseData.subscriptionEventData;
562
- const { isEnabled } = parseData.strategiesSubsData;
563
- const triggerData = triggerService.morphoBlueRatioTrigger.decode(subStruct.triggerData);
564
- const subData = subDataService.morphoBlueLeverageManagementSubData.decode(subStruct.subData);
565
- _position.strategyData.decoded.triggerData = triggerData;
566
- _position.strategyData.decoded.subData = subData;
567
- _position.positionId = (0, utils_1.getPositionId)(_position.chainId, _position.protocol.id, triggerData.owner.toLowerCase(), triggerData.marketId);
568
- const isRepay = [enums_1.Strategies.Identifiers.Repay, enums_1.Strategies.Identifiers.EoaRepay].includes(_position.strategy.strategyId);
569
- if (isRepay) {
570
- _position.specific = {
571
- triggerRepayRatio: triggerData.ratio,
572
- targetRepayRatio: subData.targetRatio,
573
- repayEnabled: isEnabled,
574
- subId1: Number(subId),
575
- subHashRepay: subHash,
576
- mergeWithId: enums_1.Strategies.Identifiers.Boost,
577
- };
578
- }
579
- else {
580
- _position.specific = {
581
- triggerBoostRatio: triggerData.ratio,
582
- targetBoostRatio: subData.targetRatio,
583
- boostEnabled: isEnabled,
584
- subId2: Number(subId),
585
- subHashBoost: subHash,
586
- mergeId: enums_1.Strategies.Identifiers.Boost,
587
- };
588
- }
589
- const isEOA = _position.strategy.strategyId.includes('eoa');
590
- _position.strategy.strategyId = isEOA ? enums_1.Strategies.IdOverrides.EoaLeverageManagement : enums_1.Strategies.IdOverrides.LeverageManagement;
591
- return _position;
592
- }
593
- function parseAaveV3OpenOrderFromCollateral(position, parseData) {
594
- const _position = (0, lodash_1.cloneDeep)(position);
595
- const { subStruct } = parseData.subscriptionEventData;
596
- const triggerData = triggerService.aaveV3QuotePriceTrigger.decode(subStruct.triggerData);
597
- const subData = subDataService.aaveV3OpenOrderSubData.decode(subStruct.subData);
598
- _position.strategyData.decoded.triggerData = triggerData;
599
- _position.strategyData.decoded.subData = subData;
600
- _position.positionId = (0, utils_1.getPositionId)(_position.chainId, _position.protocol.id, _position.owner, Math.random());
601
- _position.specific = {
602
- collAsset: subData.collAsset,
603
- debtAsset: subData.debtAsset,
604
- baseToken: triggerData.baseTokenAddress,
605
- quoteToken: triggerData.quoteTokenAddress,
606
- price: triggerData.price,
607
- ratioState: triggerData.ratioState,
608
- debtAssetId: subData.debtAssetId,
609
- collAssetId: subData.collAssetId,
610
- ratio: subData.targetRatio,
611
- };
612
- return _position;
613
- }
614
- const parsingMethodsMapping = {
615
- [enums_1.ProtocolIdentifiers.StrategiesAutomation.MakerDAO]: {
616
- [enums_1.Strategies.Identifiers.SavingsLiqProtection]: parseMakerSavingsLiqProtection,
617
- [enums_1.Strategies.Identifiers.CloseOnPriceToDebt]: parseMakerCloseOnPrice,
618
- [enums_1.Strategies.Identifiers.CloseOnPriceToColl]: parseMakerCloseOnPrice,
619
- [enums_1.Strategies.Identifiers.TrailingStopToColl]: parseMakerTrailingStop,
620
- [enums_1.Strategies.Identifiers.TrailingStopToDebt]: parseMakerTrailingStop,
621
- [enums_1.Strategies.Identifiers.Repay]: parseMakerLeverageManagement,
622
- [enums_1.Strategies.Identifiers.Boost]: parseMakerLeverageManagement,
623
- },
624
- [enums_1.ProtocolIdentifiers.StrategiesAutomation.Liquity]: {
625
- [enums_1.Strategies.Identifiers.CloseOnPriceToColl]: parseLiquityCloseOnPrice,
626
- [enums_1.Strategies.Identifiers.TrailingStopToColl]: parseLiquityTrailingStop,
627
- [enums_1.Strategies.Identifiers.BondProtection]: parseLiquityBondProtection,
628
- [enums_1.Strategies.Identifiers.Repay]: parseLiquityLeverageManagement,
629
- [enums_1.Strategies.Identifiers.Boost]: parseLiquityLeverageManagement,
630
- [enums_1.Strategies.Identifiers.SavingsDsrPayback]: parseLiquitySavingsLiqProtection,
631
- [enums_1.Strategies.Identifiers.SavingsDsrSupply]: parseLiquitySavingsLiqProtection,
632
- [enums_1.Strategies.Identifiers.DebtInFrontRepay]: parseLiquityDebtInFrontRepay,
633
- },
634
- [enums_1.ProtocolIdentifiers.StrategiesAutomation.AaveV2]: {
635
- [enums_1.Strategies.Identifiers.Repay]: parseAaveV2LeverageManagement,
636
- [enums_1.Strategies.Identifiers.Boost]: parseAaveV2LeverageManagement,
637
- },
638
- [enums_1.ProtocolIdentifiers.StrategiesAutomation.AaveV3]: {
639
- [enums_1.Strategies.Identifiers.Repay]: parseAaveV3LeverageManagement,
640
- [enums_1.Strategies.Identifiers.Boost]: parseAaveV3LeverageManagement,
641
- [enums_1.Strategies.Identifiers.CloseToDebt]: parseAaveV3CloseOnPrice,
642
- [enums_1.Strategies.Identifiers.CloseToDebtWithGasPrice]: parseAaveV3CloseOnPriceWithMaximumGasPrice,
643
- [enums_1.Strategies.Identifiers.CloseToCollateral]: parseAaveV3CloseOnPrice,
644
- [enums_1.Strategies.Identifiers.CloseToCollateralWithGasPrice]: parseAaveV3CloseOnPriceWithMaximumGasPrice,
645
- [enums_1.Strategies.Identifiers.OpenOrderFromCollateral]: parseAaveV3OpenOrderFromCollateral,
646
- },
647
- [enums_1.ProtocolIdentifiers.StrategiesAutomation.CompoundV2]: {
648
- [enums_1.Strategies.Identifiers.Repay]: parseCompoundV2LeverageManagement,
649
- [enums_1.Strategies.Identifiers.Boost]: parseCompoundV2LeverageManagement,
650
- },
651
- [enums_1.ProtocolIdentifiers.StrategiesAutomation.CompoundV3]: {
652
- [enums_1.Strategies.Identifiers.Repay]: parseCompoundV3LeverageManagement,
653
- [enums_1.Strategies.Identifiers.Boost]: parseCompoundV3LeverageManagement,
654
- [enums_1.Strategies.Identifiers.EoaRepay]: parseCompoundV3LeverageManagement,
655
- [enums_1.Strategies.Identifiers.EoaBoost]: parseCompoundV3LeverageManagement,
656
- },
657
- [enums_1.ProtocolIdentifiers.StrategiesAutomation.ChickenBonds]: {
658
- [enums_1.Strategies.Identifiers.Rebond]: parseChickenBondsRebond,
659
- },
660
- [enums_1.ProtocolIdentifiers.StrategiesAutomation.MorphoAaveV2]: {
661
- [enums_1.Strategies.Identifiers.Repay]: parseMorphoAaveV2LeverageManagement,
662
- [enums_1.Strategies.Identifiers.Boost]: parseMorphoAaveV2LeverageManagement,
663
- },
664
- [enums_1.ProtocolIdentifiers.StrategiesAutomation.Exchange]: {
665
- [enums_1.Strategies.Identifiers.Dca]: parseExchangeDca,
666
- [enums_1.Strategies.Identifiers.LimitOrder]: parseExchangeLimitOrder,
667
- },
668
- [enums_1.ProtocolIdentifiers.StrategiesAutomation.Spark]: {
669
- [enums_1.Strategies.Identifiers.Repay]: parseSparkLeverageManagement,
670
- [enums_1.Strategies.Identifiers.Boost]: parseSparkLeverageManagement,
671
- [enums_1.Strategies.Identifiers.CloseToDebt]: parseSparkCloseOnPrice,
672
- [enums_1.Strategies.Identifiers.CloseToCollateral]: parseSparkCloseOnPrice,
673
- },
674
- [enums_1.ProtocolIdentifiers.StrategiesAutomation.CrvUSD]: {
675
- [enums_1.Strategies.Identifiers.Repay]: parseCrvUSDLeverageManagement,
676
- [enums_1.Strategies.Identifiers.Boost]: parseCrvUSDLeverageManagement,
677
- [enums_1.Strategies.Identifiers.Payback]: parseCrvUSDPayback,
678
- },
679
- [enums_1.ProtocolIdentifiers.StrategiesAutomation.MorphoBlue]: {
680
- [enums_1.Strategies.Identifiers.Repay]: parseMorphoBlueLeverageManagement,
681
- [enums_1.Strategies.Identifiers.Boost]: parseMorphoBlueLeverageManagement,
682
- [enums_1.Strategies.Identifiers.EoaRepay]: parseMorphoBlueLeverageManagement,
683
- [enums_1.Strategies.Identifiers.EoaBoost]: parseMorphoBlueLeverageManagement,
684
- },
685
- };
686
- function getParsingMethod(id, strategy) {
687
- return parsingMethodsMapping[id][strategy.strategyId];
688
- }
689
- function parseStrategiesAutomatedPosition(parseData) {
690
- const { chainId, blockNumber, subscriptionEventData, strategiesSubsData, } = parseData;
691
- const { subStruct, proxy, subId, subHash, } = subscriptionEventData;
692
- const { isEnabled } = strategiesSubsData;
693
- const id = subStruct.strategyOrBundleId;
694
- const strategyOrBundleInfo = (subStruct.isBundle
695
- ? constants_1.BUNDLES_INFO[chainId][id]
696
- : constants_1.STRATEGIES_INFO[chainId][id]);
697
- if (!strategyOrBundleInfo)
698
- return null;
699
- const position = {
700
- isEnabled,
701
- chainId,
702
- subHash,
703
- blockNumber,
704
- positionId: 'positionId parsing not implemented.',
705
- subId: Number(subId),
706
- owner: proxy.toLowerCase(),
707
- protocol: Object.assign({}, strategyOrBundleInfo.protocol),
708
- strategy: Object.assign({ isBundle: subStruct.isBundle }, strategyOrBundleInfo),
709
- strategyData: {
710
- encoded: {
711
- triggerData: subStruct.triggerData,
712
- subData: subStruct.subData,
713
- },
714
- decoded: {
715
- triggerData: null,
716
- subData: null,
717
- },
718
- },
719
- specific: {},
720
- };
721
- return getParsingMethod(position.protocol.id, position.strategy)(position, parseData, chainId);
722
- }
723
- exports.parseStrategiesAutomatedPosition = parseStrategiesAutomatedPosition;
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
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.parseStrategiesAutomatedPosition = void 0;
27
+ const tokens_1 = require("@defisaver/tokens");
28
+ const lodash_1 = require("lodash");
29
+ const constants_1 = require("../constants");
30
+ const enums_1 = require("../types/enums");
31
+ const utils_1 = require("./utils");
32
+ const subDataService = __importStar(require("./subDataService"));
33
+ const triggerService = __importStar(require("./triggerService"));
34
+ const SPARK_MARKET_ADDRESSES = {
35
+ [enums_1.ChainId.Ethereum]: '0x02C3eA4e34C0cBd694D2adFa2c690EECbC1793eE',
36
+ };
37
+ const AAVE_V3_MARKET_ADDRESSES = {
38
+ [enums_1.ChainId.Ethereum]: '0x2f39d218133AFaB8F2B819B1066c7E434Ad94E9e',
39
+ [enums_1.ChainId.Optimism]: '0xa97684ead0e402dC232d5A977953DF7ECBaB3CDb',
40
+ [enums_1.ChainId.Arbitrum]: '0xa97684ead0e402dC232d5A977953DF7ECBaB3CDb',
41
+ [enums_1.ChainId.Base]: '0xe20fCBdBfFC4Dd138cE8b2E6FBb6CB49777ad64D',
42
+ };
43
+ function parseMakerSavingsLiqProtection(position, parseData) {
44
+ const _position = (0, lodash_1.cloneDeep)(position);
45
+ const { subStruct } = parseData.subscriptionEventData;
46
+ const triggerData = triggerService.makerRatioTrigger.decode(subStruct.triggerData);
47
+ const subData = subDataService.makerRepayFromSavingsSubData.decode(subStruct.subData);
48
+ _position.strategyData.decoded.triggerData = triggerData;
49
+ _position.strategyData.decoded.subData = subData;
50
+ _position.positionId = (0, utils_1.getPositionId)(_position.chainId, _position.protocol.id, subData.vaultId);
51
+ _position.specific = {
52
+ triggerRepayRatio: Number(triggerData.ratio),
53
+ targetRepayRatio: Number(subData.targetRatio),
54
+ repayEnabled: true,
55
+ boostEnabled: false,
56
+ };
57
+ return _position;
58
+ }
59
+ function parseMakerCloseOnPrice(position, parseData) {
60
+ const _position = (0, lodash_1.cloneDeep)(position);
61
+ const { subStruct } = parseData.subscriptionEventData;
62
+ const triggerData = triggerService.chainlinkPriceTrigger.decode(subStruct.triggerData);
63
+ const subData = subDataService.makerCloseSubData.decode(subStruct.subData);
64
+ _position.strategyData.decoded.triggerData = triggerData;
65
+ _position.strategyData.decoded.subData = subData;
66
+ _position.positionId = (0, utils_1.getPositionId)(_position.chainId, _position.protocol.id, subData.vaultId);
67
+ const isTakeProfit = (0, utils_1.isRatioStateOver)(Number(triggerData.state));
68
+ _position.strategy.strategyId = isTakeProfit ? enums_1.Strategies.IdOverrides.TakeProfit : enums_1.Strategies.IdOverrides.StopLoss;
69
+ _position.specific = {
70
+ price: triggerData.price,
71
+ closeToAssetAddr: subData.closeToAssetAddr,
72
+ };
73
+ return _position;
74
+ }
75
+ function parseMakerTrailingStop(position, parseData) {
76
+ const _position = (0, lodash_1.cloneDeep)(position);
77
+ const { subStruct } = parseData.subscriptionEventData;
78
+ const triggerData = triggerService.trailingStopTrigger.decode(subStruct.triggerData);
79
+ const subData = subDataService.makerCloseSubData.decode(subStruct.subData);
80
+ _position.strategyData.decoded.triggerData = triggerData;
81
+ _position.strategyData.decoded.subData = subData;
82
+ _position.positionId = (0, utils_1.getPositionId)(_position.chainId, _position.protocol.id, subData.vaultId);
83
+ _position.strategy.strategyId = enums_1.Strategies.IdOverrides.TrailingStop;
84
+ _position.specific = {
85
+ triggerPercentage: Number(triggerData.triggerPercentage),
86
+ roundId: Number(triggerData.roundId),
87
+ closeToAssetAddr: subData.closeToAssetAddr,
88
+ };
89
+ return _position;
90
+ }
91
+ function parseMakerLeverageManagement(position, parseData) {
92
+ const _position = (0, lodash_1.cloneDeep)(position);
93
+ const { subStruct, subId } = parseData.subscriptionEventData;
94
+ const { isEnabled } = parseData.strategiesSubsData;
95
+ const triggerData = triggerService.makerRatioTrigger.decode(subStruct.triggerData);
96
+ const subData = subDataService.makerLeverageManagementSubData.decode(subStruct.subData);
97
+ _position.strategyData.decoded.triggerData = triggerData;
98
+ _position.strategyData.decoded.subData = subData;
99
+ _position.positionId = (0, utils_1.getPositionId)(_position.chainId, _position.protocol.id, subData.vaultId);
100
+ const isRepay = _position.strategy.strategyId === enums_1.Strategies.Identifiers.Repay;
101
+ if (isRepay) {
102
+ _position.specific = {
103
+ triggerRepayRatio: triggerData.ratio,
104
+ targetRepayRatio: subData.targetRatio,
105
+ repayEnabled: true,
106
+ subId1: Number(subId),
107
+ mergeWithId: enums_1.Strategies.Identifiers.Boost,
108
+ };
109
+ }
110
+ else {
111
+ _position.specific = {
112
+ triggerBoostRatio: triggerData.ratio,
113
+ targetBoostRatio: subData.targetRatio,
114
+ boostEnabled: isEnabled,
115
+ subId2: Number(subId),
116
+ mergeId: enums_1.Strategies.Identifiers.Boost,
117
+ };
118
+ }
119
+ _position.strategy.strategyId = enums_1.Strategies.IdOverrides.LeverageManagement;
120
+ return _position;
121
+ }
122
+ function parseLiquityCloseOnPrice(position, parseData) {
123
+ const _position = (0, lodash_1.cloneDeep)(position);
124
+ const { subStruct } = parseData.subscriptionEventData;
125
+ const triggerData = triggerService.chainlinkPriceTrigger.decode(subStruct.triggerData);
126
+ const subData = subDataService.liquityCloseSubData.decode(subStruct.subData);
127
+ _position.strategyData.decoded.triggerData = triggerData;
128
+ _position.strategyData.decoded.subData = subData;
129
+ _position.positionId = (0, utils_1.getPositionId)(_position.chainId, _position.protocol.id, _position.owner);
130
+ const isTakeProfit = (0, utils_1.isRatioStateOver)(Number(triggerData.state));
131
+ _position.strategy.strategyId = isTakeProfit ? enums_1.Strategies.IdOverrides.TakeProfit : enums_1.Strategies.IdOverrides.StopLoss;
132
+ _position.specific = {
133
+ price: triggerData.price,
134
+ closeToAssetAddr: subData.closeToAssetAddr,
135
+ };
136
+ return _position;
137
+ }
138
+ function parseLiquityTrailingStop(position, parseData) {
139
+ const _position = (0, lodash_1.cloneDeep)(position);
140
+ const { subStruct } = parseData.subscriptionEventData;
141
+ const triggerData = triggerService.trailingStopTrigger.decode(subStruct.triggerData);
142
+ const subData = subDataService.liquityCloseSubData.decode(subStruct.subData);
143
+ _position.strategyData.decoded.triggerData = triggerData;
144
+ _position.strategyData.decoded.subData = subData;
145
+ _position.positionId = (0, utils_1.getPositionId)(_position.chainId, _position.protocol.id, _position.owner);
146
+ _position.strategy.strategyId = enums_1.Strategies.IdOverrides.TrailingStop;
147
+ _position.specific = {
148
+ triggerPercentage: Number(triggerData.triggerPercentage),
149
+ roundId: Number(triggerData.roundId),
150
+ closeToAssetAddr: subData.closeToAssetAddr,
151
+ };
152
+ return _position;
153
+ }
154
+ function parseAaveV2LeverageManagement(position, parseData) {
155
+ const _position = (0, lodash_1.cloneDeep)(position);
156
+ const { subStruct, subId } = parseData.subscriptionEventData;
157
+ const { isEnabled } = parseData.strategiesSubsData;
158
+ const triggerData = triggerService.aaveV2RatioTrigger.decode(subStruct.triggerData);
159
+ const subData = subDataService.aaveV2LeverageManagementSubData.decode(subStruct.subData);
160
+ _position.strategyData.decoded.triggerData = triggerData;
161
+ _position.strategyData.decoded.subData = subData;
162
+ _position.positionId = (0, utils_1.getPositionId)(_position.chainId, _position.protocol.id, _position.owner, triggerData.market);
163
+ const isRepay = _position.strategy.strategyId === enums_1.Strategies.Identifiers.Repay;
164
+ if (isRepay) {
165
+ _position.specific = {
166
+ triggerRepayRatio: triggerData.ratio,
167
+ targetRepayRatio: subData.targetRatio,
168
+ repayEnabled: true,
169
+ subId1: Number(subId),
170
+ mergeWithId: enums_1.Strategies.Identifiers.Boost,
171
+ };
172
+ }
173
+ else {
174
+ _position.specific = {
175
+ triggerBoostRatio: triggerData.ratio,
176
+ targetBoostRatio: subData.targetRatio,
177
+ boostEnabled: isEnabled,
178
+ subId2: Number(subId),
179
+ mergeId: enums_1.Strategies.Identifiers.Boost,
180
+ };
181
+ }
182
+ _position.strategy.strategyId = enums_1.Strategies.IdOverrides.LeverageManagement;
183
+ return _position;
184
+ }
185
+ function parseAaveV3LeverageManagement(position, parseData) {
186
+ const _position = (0, lodash_1.cloneDeep)(position);
187
+ const { subStruct, subId } = parseData.subscriptionEventData;
188
+ const { isEnabled } = parseData.strategiesSubsData;
189
+ const triggerData = triggerService.aaveV3RatioTrigger.decode(subStruct.triggerData);
190
+ const subData = subDataService.aaveV3LeverageManagementSubData.decode(subStruct.subData);
191
+ _position.strategyData.decoded.triggerData = triggerData;
192
+ _position.strategyData.decoded.subData = subData;
193
+ _position.positionId = (0, utils_1.getPositionId)(_position.chainId, _position.protocol.id, _position.owner, triggerData.market);
194
+ const isRepay = _position.strategy.strategyId === enums_1.Strategies.Identifiers.Repay;
195
+ if (isRepay) {
196
+ _position.specific = {
197
+ triggerRepayRatio: triggerData.ratio,
198
+ targetRepayRatio: subData.targetRatio,
199
+ repayEnabled: true,
200
+ subId1: Number(subId),
201
+ mergeWithId: enums_1.Strategies.Identifiers.Boost,
202
+ };
203
+ }
204
+ else {
205
+ _position.specific = {
206
+ triggerBoostRatio: triggerData.ratio,
207
+ targetBoostRatio: subData.targetRatio,
208
+ boostEnabled: isEnabled,
209
+ subId2: Number(subId),
210
+ mergeId: enums_1.Strategies.Identifiers.Boost,
211
+ };
212
+ }
213
+ _position.strategy.strategyId = enums_1.Strategies.IdOverrides.LeverageManagement;
214
+ return _position;
215
+ }
216
+ function parseMorphoAaveV2LeverageManagement(position, parseData) {
217
+ const _position = (0, lodash_1.cloneDeep)(position);
218
+ const { subStruct, subId } = parseData.subscriptionEventData;
219
+ const { isEnabled } = parseData.strategiesSubsData;
220
+ const triggerData = triggerService.morphoAaveV2RatioTrigger.decode(subStruct.triggerData);
221
+ const subData = subDataService.morphoAaveV2LeverageManagementSubData.decode(subStruct.subData);
222
+ _position.strategyData.decoded.triggerData = triggerData;
223
+ _position.strategyData.decoded.subData = subData;
224
+ _position.positionId = (0, utils_1.getPositionId)(_position.chainId, _position.protocol.id, _position.owner);
225
+ const isRepay = _position.strategy.strategyId === enums_1.Strategies.Identifiers.Repay;
226
+ if (isRepay) {
227
+ _position.specific = {
228
+ triggerRepayRatio: triggerData.ratio,
229
+ targetRepayRatio: subData.targetRatio,
230
+ repayEnabled: true,
231
+ subId1: Number(subId),
232
+ mergeWithId: enums_1.Strategies.Identifiers.Boost,
233
+ };
234
+ }
235
+ else {
236
+ _position.specific = {
237
+ triggerBoostRatio: triggerData.ratio,
238
+ targetBoostRatio: subData.targetRatio,
239
+ boostEnabled: isEnabled,
240
+ subId2: Number(subId),
241
+ mergeId: enums_1.Strategies.Identifiers.Boost,
242
+ };
243
+ }
244
+ _position.strategy.strategyId = enums_1.Strategies.IdOverrides.LeverageManagement;
245
+ return _position;
246
+ }
247
+ function parseAaveV3CloseOnPrice(position, parseData) {
248
+ const _position = (0, lodash_1.cloneDeep)(position);
249
+ const { subStruct } = parseData.subscriptionEventData;
250
+ const triggerData = triggerService.aaveV3QuotePriceTrigger.decode(subStruct.triggerData);
251
+ const subData = subDataService.aaveV3QuotePriceSubData.decode(subStruct.subData);
252
+ _position.strategyData.decoded.triggerData = triggerData;
253
+ _position.strategyData.decoded.subData = subData;
254
+ _position.positionId = (0, utils_1.getPositionId)(_position.chainId, _position.protocol.id, _position.owner, AAVE_V3_MARKET_ADDRESSES[_position.chainId]);
255
+ _position.specific = {
256
+ collAsset: subData.collAsset,
257
+ collAssetId: subData.collAssetId,
258
+ debtAsset: subData.debtAsset,
259
+ debtAssetId: subData.debtAssetId,
260
+ baseToken: triggerData.baseTokenAddress,
261
+ quoteToken: triggerData.quoteTokenAddress,
262
+ price: triggerData.price,
263
+ ratioState: triggerData.ratioState,
264
+ };
265
+ const { ratioState } = (0, utils_1.getRatioStateInfoForAaveCloseStrategy)(_position.specific.ratioState, (0, utils_1.wethToEthByAddress)(_position.specific.collAsset, parseData.chainId), (0, utils_1.wethToEthByAddress)(_position.specific.debtAsset, parseData.chainId), parseData.chainId);
266
+ _position.strategy.strategyId = (0, utils_1.isRatioStateOver)(ratioState) ? enums_1.Strategies.IdOverrides.TakeProfit : enums_1.Strategies.IdOverrides.StopLoss;
267
+ return _position;
268
+ }
269
+ function parseAaveV3CloseOnPriceWithMaximumGasPrice(position, parseData) {
270
+ const _position = (0, lodash_1.cloneDeep)(position);
271
+ const { subStruct } = parseData.subscriptionEventData;
272
+ const triggerData = triggerService.aaveV3QuotePriceWithMaximumGasPriceTrigger.decode(subStruct.triggerData);
273
+ const subData = subDataService.aaveV3QuotePriceSubData.decode(subStruct.subData);
274
+ _position.strategyData.decoded.triggerData = triggerData;
275
+ _position.strategyData.decoded.subData = subData;
276
+ _position.positionId = (0, utils_1.getPositionId)(_position.chainId, _position.protocol.id, _position.owner, AAVE_V3_MARKET_ADDRESSES[_position.chainId]);
277
+ _position.specific = {
278
+ collAsset: subData.collAsset,
279
+ collAssetId: subData.collAssetId,
280
+ debtAsset: subData.debtAsset,
281
+ debtAssetId: subData.debtAssetId,
282
+ baseToken: triggerData.baseTokenAddress,
283
+ quoteToken: triggerData.quoteTokenAddress,
284
+ price: triggerData.price,
285
+ maximumGasPrice: triggerData.maximumGasPrice,
286
+ ratioState: triggerData.ratioState,
287
+ };
288
+ const { ratioState } = (0, utils_1.getRatioStateInfoForAaveCloseStrategy)(_position.specific.ratioState, (0, utils_1.wethToEthByAddress)(_position.specific.collAsset, parseData.chainId), (0, utils_1.wethToEthByAddress)(_position.specific.debtAsset, parseData.chainId), parseData.chainId);
289
+ _position.strategy.strategyId = (0, utils_1.isRatioStateOver)(ratioState)
290
+ ? enums_1.Strategies.IdOverrides.TakeProfitWithGasPrice
291
+ : enums_1.Strategies.IdOverrides.StopLossWithGasPrice;
292
+ return _position;
293
+ }
294
+ function parseCompoundV2LeverageManagement(position, parseData) {
295
+ const _position = (0, lodash_1.cloneDeep)(position);
296
+ const { subStruct, subId } = parseData.subscriptionEventData;
297
+ const { isEnabled } = parseData.strategiesSubsData;
298
+ const triggerData = triggerService.compoundV2RatioTrigger.decode(subStruct.triggerData);
299
+ const subData = subDataService.compoundV2LeverageManagementSubData.decode(subStruct.subData);
300
+ _position.strategyData.decoded.triggerData = triggerData;
301
+ _position.strategyData.decoded.subData = subData;
302
+ _position.owner = triggerData.owner.toLowerCase();
303
+ _position.positionId = (0, utils_1.getPositionId)(_position.chainId, _position.protocol.id, _position.owner);
304
+ const isRepay = [enums_1.Strategies.Identifiers.Repay, enums_1.Strategies.Identifiers.EoaRepay].includes(_position.strategy.strategyId);
305
+ if (isRepay) {
306
+ _position.specific = {
307
+ triggerRepayRatio: triggerData.ratio,
308
+ targetRepayRatio: subData.targetRatio,
309
+ repayEnabled: true,
310
+ subId1: Number(subId),
311
+ mergeWithId: enums_1.Strategies.Identifiers.Boost,
312
+ };
313
+ }
314
+ else {
315
+ _position.specific = {
316
+ triggerBoostRatio: triggerData.ratio,
317
+ targetBoostRatio: subData.targetRatio,
318
+ boostEnabled: isEnabled,
319
+ subId2: Number(subId),
320
+ mergeId: enums_1.Strategies.Identifiers.Boost,
321
+ };
322
+ }
323
+ _position.strategy.strategyId = enums_1.Strategies.IdOverrides.LeverageManagement;
324
+ return _position;
325
+ }
326
+ function parseCompoundV3LeverageManagement(position, parseData) {
327
+ const _position = (0, lodash_1.cloneDeep)(position);
328
+ const { subStruct, subId } = parseData.subscriptionEventData;
329
+ const { isEnabled } = parseData.strategiesSubsData;
330
+ const subDataDecoder = position.chainId !== 1
331
+ ? subDataService.compoundV3L2LeverageManagementSubData
332
+ : subDataService.compoundV3LeverageManagementSubData;
333
+ const triggerData = triggerService.compoundV3RatioTrigger.decode(subStruct.triggerData);
334
+ const subData = subDataDecoder.decode(subStruct.subData);
335
+ _position.strategyData.decoded.triggerData = triggerData;
336
+ _position.strategyData.decoded.subData = subData;
337
+ _position.positionId = (0, utils_1.getPositionId)(_position.chainId, _position.protocol.id, triggerData.owner.toLowerCase(), triggerData.market);
338
+ const isRepay = [enums_1.Strategies.Identifiers.Repay, enums_1.Strategies.Identifiers.EoaRepay].includes(_position.strategy.strategyId);
339
+ if (isRepay) {
340
+ _position.specific = {
341
+ triggerRepayRatio: triggerData.ratio,
342
+ targetRepayRatio: subData.targetRatio,
343
+ repayEnabled: true,
344
+ subId1: Number(subId),
345
+ mergeWithId: enums_1.Strategies.Identifiers.Boost,
346
+ };
347
+ }
348
+ else {
349
+ _position.specific = {
350
+ triggerBoostRatio: triggerData.ratio,
351
+ targetBoostRatio: subData.targetRatio,
352
+ boostEnabled: isEnabled,
353
+ subId2: Number(subId),
354
+ mergeId: enums_1.Strategies.Identifiers.Boost,
355
+ };
356
+ }
357
+ const isEOA = _position.strategy.strategyId.includes('eoa');
358
+ _position.strategy.strategyId = isEOA ? enums_1.Strategies.IdOverrides.EoaLeverageManagement : enums_1.Strategies.IdOverrides.LeverageManagement;
359
+ return _position;
360
+ }
361
+ function parseChickenBondsRebond(position, parseData) {
362
+ const _position = (0, lodash_1.cloneDeep)(position);
363
+ const { subStruct } = parseData.subscriptionEventData;
364
+ _position.strategyData.decoded.triggerData = triggerService.cBondsRebondTrigger.decode(subStruct.triggerData);
365
+ _position.strategyData.decoded.subData = subDataService.cBondsRebondSubData.decode(subStruct.subData);
366
+ _position.positionId = (0, utils_1.getPositionId)(_position.chainId, _position.protocol.id, _position.strategyData.decoded.triggerData.bondId);
367
+ return _position;
368
+ }
369
+ function parseLiquityBondProtection(position, parseData) {
370
+ const _position = (0, lodash_1.cloneDeep)(position);
371
+ const { subStruct } = parseData.subscriptionEventData;
372
+ const triggerData = triggerService.liquityRatioTrigger.decode(subStruct.triggerData);
373
+ _position.strategyData.decoded.triggerData = triggerData;
374
+ _position.strategyData.decoded.subData = subDataService.liquityPaybackUsingChickenBondSubData.decode(subStruct.subData);
375
+ _position.positionId = (0, utils_1.getPositionId)(_position.chainId, _position.protocol.id, _position.owner);
376
+ _position.specific = {
377
+ triggerRepayRatio: Number(triggerData.ratio),
378
+ targetRepayRatio: Infinity,
379
+ repayEnabled: true,
380
+ };
381
+ return _position;
382
+ }
383
+ function parseExchangeDca(position, parseData, chainId) {
384
+ const _position = (0, lodash_1.cloneDeep)(position);
385
+ const { subStruct } = parseData.subscriptionEventData;
386
+ _position.strategyData.decoded.triggerData = triggerService.exchangeTimestampTrigger.decode(subStruct.triggerData);
387
+ _position.strategyData.decoded.subData = subDataService.exchangeDcaSubData.decode(subStruct.subData, chainId);
388
+ _position.positionId = (0, utils_1.getPositionId)(_position.chainId, _position.protocol.id, _position.owner, Math.random());
389
+ return _position;
390
+ }
391
+ function parseExchangeLimitOrder(position, parseData, chainId) {
392
+ const _position = (0, lodash_1.cloneDeep)(position);
393
+ const { subStruct } = parseData.subscriptionEventData;
394
+ _position.strategyData.decoded.subData = subDataService.exchangeLimitOrderSubData.decode(subStruct.subData, chainId);
395
+ const fromTokenDecimals = (0, tokens_1.getAssetInfoByAddress)(_position.strategyData.decoded.subData.fromToken, chainId).decimals;
396
+ const toTokenDecimals = (0, tokens_1.getAssetInfoByAddress)(_position.strategyData.decoded.subData.toToken, chainId).decimals;
397
+ _position.strategyData.decoded.triggerData = triggerService.exchangeOffchainPriceTrigger.decode(subStruct.triggerData, fromTokenDecimals, toTokenDecimals);
398
+ _position.positionId = (0, utils_1.getPositionId)(_position.chainId, _position.protocol.id, _position.owner, Math.random());
399
+ return _position;
400
+ }
401
+ function parseLiquityLeverageManagement(position, parseData) {
402
+ const _position = (0, lodash_1.cloneDeep)(position);
403
+ const { subStruct, subId } = parseData.subscriptionEventData;
404
+ const { isEnabled } = parseData.strategiesSubsData;
405
+ const triggerData = triggerService.liquityRatioTrigger.decode(subStruct.triggerData);
406
+ const subData = subDataService.liquityLeverageManagementSubData.decode(subStruct.subData);
407
+ _position.strategyData.decoded.triggerData = triggerData;
408
+ _position.strategyData.decoded.subData = subData;
409
+ _position.positionId = (0, utils_1.getPositionId)(_position.chainId, _position.protocol.id, _position.owner);
410
+ const isRepay = _position.strategy.strategyId === enums_1.Strategies.Identifiers.Repay;
411
+ if (isRepay) {
412
+ _position.specific = {
413
+ triggerRepayRatio: triggerData.ratio,
414
+ targetRepayRatio: subData.targetRatio,
415
+ repayEnabled: true,
416
+ subId1: Number(subId),
417
+ mergeWithId: enums_1.Strategies.Identifiers.Boost,
418
+ };
419
+ }
420
+ else {
421
+ _position.specific = {
422
+ triggerBoostRatio: triggerData.ratio,
423
+ targetBoostRatio: subData.targetRatio,
424
+ boostEnabled: isEnabled,
425
+ subId2: Number(subId),
426
+ mergeId: enums_1.Strategies.Identifiers.Boost,
427
+ };
428
+ }
429
+ _position.strategy.strategyId = enums_1.Strategies.IdOverrides.LeverageManagement;
430
+ return _position;
431
+ }
432
+ function parseSparkLeverageManagement(position, parseData) {
433
+ const _position = (0, lodash_1.cloneDeep)(position);
434
+ const { subStruct, subId } = parseData.subscriptionEventData;
435
+ const { isEnabled } = parseData.strategiesSubsData;
436
+ const triggerData = triggerService.sparkRatioTrigger.decode(subStruct.triggerData);
437
+ const subData = subDataService.sparkLeverageManagementSubData.decode(subStruct.subData);
438
+ _position.strategyData.decoded.triggerData = triggerData;
439
+ _position.strategyData.decoded.subData = subData;
440
+ _position.positionId = (0, utils_1.getPositionId)(_position.chainId, _position.protocol.id, _position.owner, triggerData.market);
441
+ const isRepay = _position.strategy.strategyId === enums_1.Strategies.Identifiers.Repay;
442
+ if (isRepay) {
443
+ _position.specific = {
444
+ triggerRepayRatio: triggerData.ratio,
445
+ targetRepayRatio: subData.targetRatio,
446
+ repayEnabled: true,
447
+ subId1: Number(subId),
448
+ mergeWithId: enums_1.Strategies.Identifiers.Boost,
449
+ };
450
+ }
451
+ else {
452
+ _position.specific = {
453
+ triggerBoostRatio: triggerData.ratio,
454
+ targetBoostRatio: subData.targetRatio,
455
+ boostEnabled: isEnabled,
456
+ subId2: Number(subId),
457
+ mergeId: enums_1.Strategies.Identifiers.Boost,
458
+ };
459
+ }
460
+ _position.strategy.strategyId = enums_1.Strategies.IdOverrides.LeverageManagement;
461
+ return _position;
462
+ }
463
+ function parseSparkCloseOnPrice(position, parseData) {
464
+ const _position = (0, lodash_1.cloneDeep)(position);
465
+ const { subStruct } = parseData.subscriptionEventData;
466
+ const triggerData = triggerService.sparkQuotePriceTrigger.decode(subStruct.triggerData);
467
+ const subData = subDataService.sparkQuotePriceSubData.decode(subStruct.subData);
468
+ _position.strategyData.decoded.triggerData = triggerData;
469
+ _position.strategyData.decoded.subData = subData;
470
+ _position.positionId = (0, utils_1.getPositionId)(_position.chainId, _position.protocol.id, _position.owner, SPARK_MARKET_ADDRESSES[_position.chainId]);
471
+ _position.specific = {
472
+ collAsset: subData.collAsset,
473
+ collAssetId: subData.collAssetId,
474
+ debtAsset: subData.debtAsset,
475
+ debtAssetId: subData.debtAssetId,
476
+ baseToken: triggerData.baseTokenAddress,
477
+ quoteToken: triggerData.quoteTokenAddress,
478
+ price: triggerData.price,
479
+ ratioState: triggerData.ratioState,
480
+ };
481
+ const { ratioState } = (0, utils_1.getRatioStateInfoForAaveCloseStrategy)(_position.specific.ratioState, (0, utils_1.wethToEthByAddress)(_position.specific.collAsset, parseData.chainId), (0, utils_1.wethToEthByAddress)(_position.specific.debtAsset, parseData.chainId), parseData.chainId);
482
+ _position.strategy.strategyId = (0, utils_1.isRatioStateOver)(ratioState) ? enums_1.Strategies.IdOverrides.TakeProfit : enums_1.Strategies.IdOverrides.StopLoss;
483
+ return _position;
484
+ }
485
+ function parseLiquitySavingsLiqProtection(position, parseData) {
486
+ const _position = (0, lodash_1.cloneDeep)(position);
487
+ const { subStruct } = parseData.subscriptionEventData;
488
+ const triggerData = triggerService.liquityRatioTrigger.decode(subStruct.triggerData);
489
+ const subData = subDataService.liquityRepayFromSavingsSubData.decode(subStruct.subData);
490
+ _position.strategyData.decoded.triggerData = triggerData;
491
+ _position.strategyData.decoded.subData = subData;
492
+ _position.positionId = (0, utils_1.getPositionId)(_position.chainId, _position.protocol.id, _position.owner);
493
+ _position.specific = {
494
+ triggerRepayRatio: triggerData.ratio,
495
+ targetRepayRatio: subData.targetRatio,
496
+ repayEnabled: true,
497
+ boostEnabled: false,
498
+ };
499
+ return _position;
500
+ }
501
+ function parseLiquityDebtInFrontRepay(position, parseData) {
502
+ const _position = (0, lodash_1.cloneDeep)(position);
503
+ const { subStruct } = parseData.subscriptionEventData;
504
+ const triggerData = triggerService.liquityDebtInFrontWithLimitTrigger.decode(subStruct.triggerData);
505
+ const subData = subDataService.liquityDebtInFrontRepaySubData.decode(subStruct.subData);
506
+ _position.strategyData.decoded.triggerData = triggerData;
507
+ _position.strategyData.decoded.subData = subData;
508
+ _position.positionId = (0, utils_1.getPositionId)(_position.chainId, _position.protocol.id, _position.owner);
509
+ _position.specific = {
510
+ debtInFrontMin: triggerData.debtInFrontMin,
511
+ targetRepayRatioIncrease: subData.targetRatioIncrease,
512
+ };
513
+ return _position;
514
+ }
515
+ function parseCrvUSDLeverageManagement(position, parseData) {
516
+ const _position = (0, lodash_1.cloneDeep)(position);
517
+ const { subStruct, subId, subHash } = parseData.subscriptionEventData;
518
+ const { isEnabled } = parseData.strategiesSubsData;
519
+ const triggerData = triggerService.crvUSDRatioTrigger.decode(subStruct.triggerData);
520
+ const subData = subDataService.crvUSDLeverageManagementSubData.decode(subStruct.subData);
521
+ _position.strategyData.decoded.triggerData = triggerData;
522
+ _position.strategyData.decoded.subData = subData;
523
+ _position.positionId = (0, utils_1.getPositionId)(_position.chainId, _position.protocol.id, _position.owner, triggerData.controller);
524
+ const isRepay = _position.strategy.strategyId === enums_1.Strategies.Identifiers.Repay;
525
+ if (isRepay) {
526
+ _position.specific = {
527
+ triggerRepayRatio: triggerData.ratio,
528
+ targetRepayRatio: subData.targetRatio,
529
+ repayEnabled: isEnabled,
530
+ subId1: Number(subId),
531
+ subHashRepay: subHash,
532
+ mergeWithId: enums_1.Strategies.Identifiers.Boost,
533
+ };
534
+ }
535
+ else {
536
+ _position.specific = {
537
+ triggerBoostRatio: triggerData.ratio,
538
+ targetBoostRatio: subData.targetRatio,
539
+ boostEnabled: isEnabled,
540
+ subId2: Number(subId),
541
+ subHashBoost: subHash,
542
+ mergeId: enums_1.Strategies.Identifiers.Boost,
543
+ };
544
+ }
545
+ _position.strategy.strategyId = enums_1.Strategies.IdOverrides.LeverageManagement;
546
+ return _position;
547
+ }
548
+ function parseCrvUSDPayback(position, parseData) {
549
+ const _position = (0, lodash_1.cloneDeep)(position);
550
+ const { subStruct } = parseData.subscriptionEventData;
551
+ const triggerData = triggerService.crvUsdHealthRatioTrigger.decode(subStruct.triggerData);
552
+ const subData = subDataService.crvUSDPaybackSubData.decode(subStruct.subData);
553
+ _position.strategyData.decoded.triggerData = triggerData;
554
+ _position.strategyData.decoded.subData = subData;
555
+ _position.positionId = (0, utils_1.getPositionId)(_position.chainId, _position.protocol.id, _position.owner, triggerData.controller, Math.random());
556
+ _position.strategy.strategyId = enums_1.Strategies.Identifiers.Payback;
557
+ return _position;
558
+ }
559
+ function parseMorphoBlueLeverageManagement(position, parseData) {
560
+ const _position = (0, lodash_1.cloneDeep)(position);
561
+ const { subStruct, subId, subHash } = parseData.subscriptionEventData;
562
+ const { isEnabled } = parseData.strategiesSubsData;
563
+ const triggerData = triggerService.morphoBlueRatioTrigger.decode(subStruct.triggerData);
564
+ const subData = subDataService.morphoBlueLeverageManagementSubData.decode(subStruct.subData);
565
+ _position.strategyData.decoded.triggerData = triggerData;
566
+ _position.strategyData.decoded.subData = subData;
567
+ _position.positionId = (0, utils_1.getPositionId)(_position.chainId, _position.protocol.id, triggerData.owner.toLowerCase(), triggerData.marketId);
568
+ const isRepay = [enums_1.Strategies.Identifiers.Repay, enums_1.Strategies.Identifiers.EoaRepay].includes(_position.strategy.strategyId);
569
+ if (isRepay) {
570
+ _position.specific = {
571
+ triggerRepayRatio: triggerData.ratio,
572
+ targetRepayRatio: subData.targetRatio,
573
+ repayEnabled: isEnabled,
574
+ subId1: Number(subId),
575
+ subHashRepay: subHash,
576
+ mergeWithId: enums_1.Strategies.Identifiers.Boost,
577
+ };
578
+ }
579
+ else {
580
+ _position.specific = {
581
+ triggerBoostRatio: triggerData.ratio,
582
+ targetBoostRatio: subData.targetRatio,
583
+ boostEnabled: isEnabled,
584
+ subId2: Number(subId),
585
+ subHashBoost: subHash,
586
+ mergeId: enums_1.Strategies.Identifiers.Boost,
587
+ };
588
+ }
589
+ const isEOA = _position.strategy.strategyId.includes('eoa');
590
+ _position.strategy.strategyId = isEOA ? enums_1.Strategies.IdOverrides.EoaLeverageManagement : enums_1.Strategies.IdOverrides.LeverageManagement;
591
+ return _position;
592
+ }
593
+ function parseAaveV3LeverageManagementOnPrice(position, parseData) {
594
+ const _position = (0, lodash_1.cloneDeep)(position);
595
+ const { subStruct } = parseData.subscriptionEventData;
596
+ const triggerData = triggerService.aaveV3QuotePriceTrigger.decode(subStruct.triggerData);
597
+ const subData = subDataService.aaveV3LeverageManagementOnPriceSubData.decode(subStruct.subData);
598
+ _position.strategyData.decoded.triggerData = triggerData;
599
+ _position.strategyData.decoded.subData = subData;
600
+ _position.positionId = (0, utils_1.getPositionId)(_position.chainId, _position.protocol.id, _position.owner, Math.random());
601
+ _position.specific = {
602
+ collAsset: subData.collAsset,
603
+ debtAsset: subData.debtAsset,
604
+ baseToken: triggerData.baseTokenAddress,
605
+ quoteToken: triggerData.quoteTokenAddress,
606
+ price: triggerData.price,
607
+ ratioState: triggerData.ratioState,
608
+ debtAssetId: subData.debtAssetId,
609
+ collAssetId: subData.collAssetId,
610
+ ratio: subData.targetRatio,
611
+ };
612
+ return _position;
613
+ }
614
+ const parsingMethodsMapping = {
615
+ [enums_1.ProtocolIdentifiers.StrategiesAutomation.MakerDAO]: {
616
+ [enums_1.Strategies.Identifiers.SavingsLiqProtection]: parseMakerSavingsLiqProtection,
617
+ [enums_1.Strategies.Identifiers.CloseOnPriceToDebt]: parseMakerCloseOnPrice,
618
+ [enums_1.Strategies.Identifiers.CloseOnPriceToColl]: parseMakerCloseOnPrice,
619
+ [enums_1.Strategies.Identifiers.TrailingStopToColl]: parseMakerTrailingStop,
620
+ [enums_1.Strategies.Identifiers.TrailingStopToDebt]: parseMakerTrailingStop,
621
+ [enums_1.Strategies.Identifiers.Repay]: parseMakerLeverageManagement,
622
+ [enums_1.Strategies.Identifiers.Boost]: parseMakerLeverageManagement,
623
+ },
624
+ [enums_1.ProtocolIdentifiers.StrategiesAutomation.Liquity]: {
625
+ [enums_1.Strategies.Identifiers.CloseOnPriceToColl]: parseLiquityCloseOnPrice,
626
+ [enums_1.Strategies.Identifiers.TrailingStopToColl]: parseLiquityTrailingStop,
627
+ [enums_1.Strategies.Identifiers.BondProtection]: parseLiquityBondProtection,
628
+ [enums_1.Strategies.Identifiers.Repay]: parseLiquityLeverageManagement,
629
+ [enums_1.Strategies.Identifiers.Boost]: parseLiquityLeverageManagement,
630
+ [enums_1.Strategies.Identifiers.SavingsDsrPayback]: parseLiquitySavingsLiqProtection,
631
+ [enums_1.Strategies.Identifiers.SavingsDsrSupply]: parseLiquitySavingsLiqProtection,
632
+ [enums_1.Strategies.Identifiers.DebtInFrontRepay]: parseLiquityDebtInFrontRepay,
633
+ },
634
+ [enums_1.ProtocolIdentifiers.StrategiesAutomation.AaveV2]: {
635
+ [enums_1.Strategies.Identifiers.Repay]: parseAaveV2LeverageManagement,
636
+ [enums_1.Strategies.Identifiers.Boost]: parseAaveV2LeverageManagement,
637
+ },
638
+ [enums_1.ProtocolIdentifiers.StrategiesAutomation.AaveV3]: {
639
+ [enums_1.Strategies.Identifiers.Repay]: parseAaveV3LeverageManagement,
640
+ [enums_1.Strategies.Identifiers.Boost]: parseAaveV3LeverageManagement,
641
+ [enums_1.Strategies.Identifiers.CloseToDebt]: parseAaveV3CloseOnPrice,
642
+ [enums_1.Strategies.Identifiers.CloseToDebtWithGasPrice]: parseAaveV3CloseOnPriceWithMaximumGasPrice,
643
+ [enums_1.Strategies.Identifiers.CloseToCollateral]: parseAaveV3CloseOnPrice,
644
+ [enums_1.Strategies.Identifiers.CloseToCollateralWithGasPrice]: parseAaveV3CloseOnPriceWithMaximumGasPrice,
645
+ [enums_1.Strategies.Identifiers.OpenOrderFromCollateral]: parseAaveV3LeverageManagementOnPrice,
646
+ [enums_1.Strategies.Identifiers.RepayOnPrice]: parseAaveV3LeverageManagementOnPrice,
647
+ },
648
+ [enums_1.ProtocolIdentifiers.StrategiesAutomation.CompoundV2]: {
649
+ [enums_1.Strategies.Identifiers.Repay]: parseCompoundV2LeverageManagement,
650
+ [enums_1.Strategies.Identifiers.Boost]: parseCompoundV2LeverageManagement,
651
+ },
652
+ [enums_1.ProtocolIdentifiers.StrategiesAutomation.CompoundV3]: {
653
+ [enums_1.Strategies.Identifiers.Repay]: parseCompoundV3LeverageManagement,
654
+ [enums_1.Strategies.Identifiers.Boost]: parseCompoundV3LeverageManagement,
655
+ [enums_1.Strategies.Identifiers.EoaRepay]: parseCompoundV3LeverageManagement,
656
+ [enums_1.Strategies.Identifiers.EoaBoost]: parseCompoundV3LeverageManagement,
657
+ },
658
+ [enums_1.ProtocolIdentifiers.StrategiesAutomation.ChickenBonds]: {
659
+ [enums_1.Strategies.Identifiers.Rebond]: parseChickenBondsRebond,
660
+ },
661
+ [enums_1.ProtocolIdentifiers.StrategiesAutomation.MorphoAaveV2]: {
662
+ [enums_1.Strategies.Identifiers.Repay]: parseMorphoAaveV2LeverageManagement,
663
+ [enums_1.Strategies.Identifiers.Boost]: parseMorphoAaveV2LeverageManagement,
664
+ },
665
+ [enums_1.ProtocolIdentifiers.StrategiesAutomation.Exchange]: {
666
+ [enums_1.Strategies.Identifiers.Dca]: parseExchangeDca,
667
+ [enums_1.Strategies.Identifiers.LimitOrder]: parseExchangeLimitOrder,
668
+ },
669
+ [enums_1.ProtocolIdentifiers.StrategiesAutomation.Spark]: {
670
+ [enums_1.Strategies.Identifiers.Repay]: parseSparkLeverageManagement,
671
+ [enums_1.Strategies.Identifiers.Boost]: parseSparkLeverageManagement,
672
+ [enums_1.Strategies.Identifiers.CloseToDebt]: parseSparkCloseOnPrice,
673
+ [enums_1.Strategies.Identifiers.CloseToCollateral]: parseSparkCloseOnPrice,
674
+ },
675
+ [enums_1.ProtocolIdentifiers.StrategiesAutomation.CrvUSD]: {
676
+ [enums_1.Strategies.Identifiers.Repay]: parseCrvUSDLeverageManagement,
677
+ [enums_1.Strategies.Identifiers.Boost]: parseCrvUSDLeverageManagement,
678
+ [enums_1.Strategies.Identifiers.Payback]: parseCrvUSDPayback,
679
+ },
680
+ [enums_1.ProtocolIdentifiers.StrategiesAutomation.MorphoBlue]: {
681
+ [enums_1.Strategies.Identifiers.Repay]: parseMorphoBlueLeverageManagement,
682
+ [enums_1.Strategies.Identifiers.Boost]: parseMorphoBlueLeverageManagement,
683
+ [enums_1.Strategies.Identifiers.EoaRepay]: parseMorphoBlueLeverageManagement,
684
+ [enums_1.Strategies.Identifiers.EoaBoost]: parseMorphoBlueLeverageManagement,
685
+ },
686
+ };
687
+ function getParsingMethod(id, strategy) {
688
+ return parsingMethodsMapping[id][strategy.strategyId];
689
+ }
690
+ function parseStrategiesAutomatedPosition(parseData) {
691
+ const { chainId, blockNumber, subscriptionEventData, strategiesSubsData, } = parseData;
692
+ const { subStruct, proxy, subId, subHash, } = subscriptionEventData;
693
+ const { isEnabled } = strategiesSubsData;
694
+ const id = subStruct.strategyOrBundleId;
695
+ const strategyOrBundleInfo = (subStruct.isBundle
696
+ ? constants_1.BUNDLES_INFO[chainId][id]
697
+ : constants_1.STRATEGIES_INFO[chainId][id]);
698
+ if (!strategyOrBundleInfo)
699
+ return null;
700
+ const position = {
701
+ isEnabled,
702
+ chainId,
703
+ subHash,
704
+ blockNumber,
705
+ positionId: 'positionId parsing not implemented.',
706
+ subId: Number(subId),
707
+ owner: proxy.toLowerCase(),
708
+ protocol: Object.assign({}, strategyOrBundleInfo.protocol),
709
+ strategy: Object.assign({ isBundle: subStruct.isBundle }, strategyOrBundleInfo),
710
+ strategyData: {
711
+ encoded: {
712
+ triggerData: subStruct.triggerData,
713
+ subData: subStruct.subData,
714
+ },
715
+ decoded: {
716
+ triggerData: null,
717
+ subData: null,
718
+ },
719
+ },
720
+ specific: {},
721
+ };
722
+ return getParsingMethod(position.protocol.id, position.strategy)(position, parseData, chainId);
723
+ }
724
+ exports.parseStrategiesAutomatedPosition = parseStrategiesAutomatedPosition;