@defisaver/automation-sdk 3.1.4-dev-2 → 3.1.5

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