@defisaver/automation-sdk 3.0.9 → 3.1.1-dev-2

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 (242) hide show
  1. package/.babelrc +3 -3
  2. package/.editorconfig +9 -9
  3. package/.env.dev +4 -4
  4. package/.eslintignore +6 -7
  5. package/.eslintrc.js +39 -41
  6. package/.mocharc.json +5 -0
  7. package/.nvmrc +1 -0
  8. package/README.md +47 -41
  9. package/cjs/abis/Erc20.json +223 -0
  10. package/cjs/abis/SubStorage.json +21 -0
  11. package/cjs/abis/UniMulticall.json +17 -0
  12. package/cjs/abis/index.d.ts +9 -0
  13. package/cjs/abis/index.js +30 -0
  14. package/cjs/abis/legacy_AaveV2Subscriptions.json +8 -0
  15. package/cjs/abis/legacy_AuthCheck.json +8 -0
  16. package/cjs/abis/legacy_CompoundV2Subscriptions.json +9 -0
  17. package/cjs/abis/legacy_MakerSubscriptions.json +9 -0
  18. package/cjs/automation/private/Automation.d.ts +12 -0
  19. package/cjs/automation/private/Automation.js +42 -0
  20. package/cjs/automation/private/LegacyAutomation.d.ts +25 -0
  21. package/cjs/automation/private/LegacyAutomation.js +118 -0
  22. package/cjs/automation/private/LegacyProtocol.d.ts +22 -0
  23. package/cjs/automation/private/LegacyProtocol.js +41 -0
  24. package/cjs/automation/private/LegacyProtocol.test.d.ts +1 -0
  25. package/cjs/automation/private/LegacyProtocol.test.js +25 -0
  26. package/cjs/automation/private/Protocol.d.ts +22 -0
  27. package/cjs/automation/private/Protocol.js +41 -0
  28. package/cjs/automation/private/Protocol.test.d.ts +1 -0
  29. package/cjs/automation/private/Protocol.test.js +25 -0
  30. package/cjs/automation/private/StrategiesAutomation.d.ts +33 -0
  31. package/cjs/automation/private/StrategiesAutomation.js +181 -0
  32. package/cjs/automation/private/StrategiesAutomation.test.d.ts +1 -0
  33. package/cjs/automation/private/StrategiesAutomation.test.js +671 -0
  34. package/cjs/automation/public/ArbitrumStrategies.d.ts +5 -0
  35. package/cjs/automation/public/ArbitrumStrategies.js +13 -0
  36. package/cjs/automation/public/BaseStrategies.d.ts +5 -0
  37. package/cjs/automation/public/BaseStrategies.js +13 -0
  38. package/cjs/automation/public/EthereumStrategies.d.ts +5 -0
  39. package/cjs/automation/public/EthereumStrategies.js +13 -0
  40. package/cjs/automation/public/OptimismStrategies.d.ts +5 -0
  41. package/cjs/automation/public/OptimismStrategies.js +13 -0
  42. package/cjs/automation/public/legacy/LegacyAaveAutomation.d.ts +6 -0
  43. package/cjs/automation/public/legacy/LegacyAaveAutomation.js +20 -0
  44. package/cjs/automation/public/legacy/LegacyCompoundAutomation.d.ts +6 -0
  45. package/cjs/automation/public/legacy/LegacyCompoundAutomation.js +20 -0
  46. package/cjs/automation/public/legacy/LegacyMakerAutomation.d.ts +6 -0
  47. package/cjs/automation/public/legacy/LegacyMakerAutomation.js +20 -0
  48. package/cjs/configuration.d.ts +1 -0
  49. package/cjs/configuration.js +12 -0
  50. package/cjs/constants/index.d.ts +28 -0
  51. package/cjs/constants/index.js +489 -0
  52. package/cjs/index.d.ts +23 -0
  53. package/cjs/index.js +65 -0
  54. package/cjs/services/contractService.d.ts +12 -0
  55. package/cjs/services/contractService.js +54 -0
  56. package/cjs/services/ethereumService.d.ts +7 -0
  57. package/cjs/services/ethereumService.js +49 -0
  58. package/cjs/services/ethereumService.test.d.ts +1 -0
  59. package/cjs/services/ethereumService.test.js +242 -0
  60. package/cjs/services/strategiesService.d.ts +2 -0
  61. package/cjs/services/strategiesService.js +778 -0
  62. package/cjs/services/strategiesService.test.d.ts +1 -0
  63. package/cjs/services/strategiesService.test.js +110 -0
  64. package/cjs/services/strategySubService.d.ts +104 -0
  65. package/cjs/services/strategySubService.js +286 -0
  66. package/cjs/services/strategySubService.test.d.ts +1 -0
  67. package/cjs/services/strategySubService.test.js +934 -0
  68. package/cjs/services/subDataService.d.ts +211 -0
  69. package/cjs/services/subDataService.js +529 -0
  70. package/cjs/services/subDataService.test.d.ts +1 -0
  71. package/cjs/services/subDataService.test.js +1282 -0
  72. package/cjs/services/triggerService.d.ts +208 -0
  73. package/cjs/services/triggerService.js +399 -0
  74. package/cjs/services/triggerService.test.d.ts +1 -0
  75. package/cjs/services/triggerService.test.js +926 -0
  76. package/cjs/services/utils.d.ts +26 -0
  77. package/cjs/services/utils.js +159 -0
  78. package/cjs/services/utils.test.d.ts +1 -0
  79. package/cjs/services/utils.test.js +376 -0
  80. package/cjs/types/contracts/generated/Erc20.d.ts +53 -0
  81. package/cjs/types/contracts/generated/Erc20.js +5 -0
  82. package/cjs/types/contracts/generated/Legacy_AaveV2Subscriptions.d.ts +129 -0
  83. package/cjs/types/contracts/generated/Legacy_AaveV2Subscriptions.js +5 -0
  84. package/cjs/types/contracts/generated/Legacy_AuthCheck.d.ts +20 -0
  85. package/cjs/types/contracts/generated/Legacy_AuthCheck.js +5 -0
  86. package/cjs/types/contracts/generated/Legacy_CompoundV2Subscriptions.d.ts +128 -0
  87. package/cjs/types/contracts/generated/Legacy_CompoundV2Subscriptions.js +5 -0
  88. package/cjs/types/contracts/generated/Legacy_MakerSubscriptions.d.ts +246 -0
  89. package/cjs/types/contracts/generated/Legacy_MakerSubscriptions.js +5 -0
  90. package/cjs/types/contracts/generated/SubStorage.d.ts +114 -0
  91. package/cjs/types/contracts/generated/SubStorage.js +5 -0
  92. package/cjs/types/contracts/generated/UniMulticall.d.ts +55 -0
  93. package/cjs/types/contracts/generated/UniMulticall.js +5 -0
  94. package/cjs/types/contracts/generated/index.d.ts +7 -0
  95. package/cjs/types/contracts/generated/index.js +2 -0
  96. package/cjs/types/contracts/generated/types.d.ts +54 -0
  97. package/cjs/types/contracts/generated/types.js +2 -0
  98. package/cjs/types/enums.d.ts +208 -0
  99. package/cjs/types/enums.js +234 -0
  100. package/cjs/types/index.d.ts +224 -0
  101. package/cjs/types/index.js +2 -0
  102. package/esm/abis/Erc20.json +223 -223
  103. package/esm/abis/SubStorage.json +21 -17
  104. package/esm/abis/UniMulticall.json +17 -14
  105. package/esm/abis/index.d.ts +9 -9
  106. package/esm/abis/index.js +18 -30
  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 -42
  113. package/esm/automation/private/LegacyAutomation.d.ts +25 -25
  114. package/esm/automation/private/LegacyAutomation.js +112 -118
  115. package/esm/automation/private/LegacyProtocol.d.ts +22 -22
  116. package/esm/automation/private/LegacyProtocol.js +38 -41
  117. package/esm/automation/private/LegacyProtocol.test.d.ts +1 -1
  118. package/esm/automation/private/LegacyProtocol.test.js +20 -25
  119. package/esm/automation/private/Protocol.d.ts +22 -22
  120. package/esm/automation/private/Protocol.js +38 -41
  121. package/esm/automation/private/Protocol.test.d.ts +1 -1
  122. package/esm/automation/private/Protocol.test.js +20 -25
  123. package/esm/automation/private/StrategiesAutomation.d.ts +33 -33
  124. package/esm/automation/private/StrategiesAutomation.js +175 -181
  125. package/esm/automation/private/StrategiesAutomation.test.d.ts +1 -1
  126. package/esm/automation/private/StrategiesAutomation.test.js +666 -671
  127. package/esm/automation/public/ArbitrumStrategies.d.ts +5 -5
  128. package/esm/automation/public/ArbitrumStrategies.js +7 -13
  129. package/esm/automation/public/BaseStrategies.d.ts +5 -0
  130. package/esm/automation/public/BaseStrategies.js +7 -0
  131. package/esm/automation/public/EthereumStrategies.d.ts +5 -5
  132. package/esm/automation/public/EthereumStrategies.js +7 -13
  133. package/esm/automation/public/OptimismStrategies.d.ts +5 -5
  134. package/esm/automation/public/OptimismStrategies.js +7 -13
  135. package/esm/automation/public/legacy/LegacyAaveAutomation.d.ts +6 -6
  136. package/esm/automation/public/legacy/LegacyAaveAutomation.js +14 -20
  137. package/esm/automation/public/legacy/LegacyCompoundAutomation.d.ts +6 -6
  138. package/esm/automation/public/legacy/LegacyCompoundAutomation.js +14 -20
  139. package/esm/automation/public/legacy/LegacyMakerAutomation.d.ts +6 -6
  140. package/esm/automation/public/legacy/LegacyMakerAutomation.js +14 -20
  141. package/esm/configuration.d.ts +1 -1
  142. package/esm/configuration.js +7 -12
  143. package/esm/constants/index.d.ts +28 -24
  144. package/esm/constants/index.js +483 -426
  145. package/esm/index.d.ts +23 -22
  146. package/esm/index.js +23 -63
  147. package/esm/services/contractService.d.ts +12 -12
  148. package/esm/services/contractService.js +45 -54
  149. package/esm/services/ethereumService.d.ts +7 -7
  150. package/esm/services/ethereumService.js +41 -49
  151. package/esm/services/ethereumService.test.d.ts +1 -1
  152. package/esm/services/ethereumService.test.js +237 -242
  153. package/esm/services/strategiesService.d.ts +2 -2
  154. package/esm/services/strategiesService.js +751 -722
  155. package/esm/services/strategiesService.test.d.ts +1 -1
  156. package/esm/services/strategiesService.test.js +108 -110
  157. package/esm/services/strategySubService.d.ts +104 -100
  158. package/esm/services/strategySubService.js +257 -264
  159. package/esm/services/strategySubService.test.d.ts +1 -1
  160. package/esm/services/strategySubService.test.js +906 -934
  161. package/esm/services/subDataService.d.ts +211 -192
  162. package/esm/services/subDataService.js +523 -475
  163. package/esm/services/subDataService.test.d.ts +1 -1
  164. package/esm/services/subDataService.test.js +1254 -1282
  165. package/esm/services/triggerService.d.ts +208 -191
  166. package/esm/services/triggerService.js +370 -367
  167. package/esm/services/triggerService.test.d.ts +1 -1
  168. package/esm/services/triggerService.test.js +901 -926
  169. package/esm/services/utils.d.ts +26 -25
  170. package/esm/services/utils.js +109 -131
  171. package/esm/services/utils.test.d.ts +1 -1
  172. package/esm/services/utils.test.js +348 -376
  173. package/esm/types/contracts/generated/Erc20.d.ts +53 -53
  174. package/esm/types/contracts/generated/Erc20.js +4 -5
  175. package/esm/types/contracts/generated/Legacy_AaveV2Subscriptions.d.ts +129 -129
  176. package/esm/types/contracts/generated/Legacy_AaveV2Subscriptions.js +4 -5
  177. package/esm/types/contracts/generated/Legacy_AuthCheck.d.ts +20 -20
  178. package/esm/types/contracts/generated/Legacy_AuthCheck.js +4 -5
  179. package/esm/types/contracts/generated/Legacy_CompoundV2Subscriptions.d.ts +128 -128
  180. package/esm/types/contracts/generated/Legacy_CompoundV2Subscriptions.js +4 -5
  181. package/esm/types/contracts/generated/Legacy_MakerSubscriptions.d.ts +246 -246
  182. package/esm/types/contracts/generated/Legacy_MakerSubscriptions.js +4 -5
  183. package/esm/types/contracts/generated/SubStorage.d.ts +114 -114
  184. package/esm/types/contracts/generated/SubStorage.js +4 -5
  185. package/esm/types/contracts/generated/UniMulticall.d.ts +55 -55
  186. package/esm/types/contracts/generated/UniMulticall.js +4 -5
  187. package/esm/types/contracts/generated/index.d.ts +7 -7
  188. package/esm/types/contracts/generated/index.js +1 -2
  189. package/esm/types/contracts/generated/types.d.ts +54 -54
  190. package/esm/types/contracts/generated/types.js +1 -2
  191. package/esm/types/enums.d.ts +208 -168
  192. package/esm/types/enums.js +231 -188
  193. package/esm/types/index.d.ts +224 -220
  194. package/esm/types/index.js +1 -2
  195. package/package.json +61 -71
  196. package/scripts/generateContractTypes.js +39 -39
  197. package/src/abis/Erc20.json +222 -222
  198. package/src/abis/SubStorage.json +21 -17
  199. package/src/abis/UniMulticall.json +17 -14
  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 -0
  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 +507 -441
  222. package/src/index.ts +39 -38
  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 +1008 -932
  228. package/src/services/strategySubService.test.ts +1119 -1119
  229. package/src/services/strategySubService.ts +567 -518
  230. package/src/services/subDataService.test.ts +1387 -1387
  231. package/src/services/subDataService.ts +725 -644
  232. package/src/services/triggerService.test.ts +1004 -1004
  233. package/src/services/triggerService.ts +502 -449
  234. package/src/services/utils.test.ts +430 -430
  235. package/src/services/utils.ts +137 -103
  236. package/src/types/enums.ts +228 -182
  237. package/src/types/index.ts +279 -273
  238. package/tsconfig.esm.json +8 -0
  239. package/tsconfig.json +22 -79
  240. package/umd/index.js +17 -133
  241. package/.tests.sh +0 -3
  242. package/webpack.umd.js +0 -52
@@ -0,0 +1,934 @@
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
+ const chai_1 = require("chai");
30
+ const decimal_js_1 = __importDefault(require("decimal.js"));
31
+ const sdk_1 = require("@defisaver/sdk");
32
+ const tokens_1 = require("@defisaver/tokens");
33
+ const web3Utils = __importStar(require("web3-utils"));
34
+ const enums_1 = require("../types/enums");
35
+ require("../configuration");
36
+ const strategySubService_1 = require("./strategySubService");
37
+ describe('Feature: strategySubService.ts', () => {
38
+ describe('When testing strategySubService.makerEncode', () => {
39
+ // @ts-ignore // TODO - this requires change in @defisaver/tokens
40
+ const mcdCdpManagerAddr = (0, sdk_1.otherAddresses)(enums_1.ChainId.Ethereum).McdCdpManager;
41
+ describe('repayFromSavings()', () => {
42
+ const examples = [
43
+ [
44
+ [
45
+ enums_1.Bundles.MainnetIds.MAKER_REPAY_FROM_SMART_SAVINGS_RARI,
46
+ true,
47
+ ['0x00000000000000000000000000000000000000000000000000000000000000de000000000000000000000000000000000000000000000000136dcc951d8c00000000000000000000000000000000000000000000000000000000000000000001'],
48
+ [
49
+ '0x00000000000000000000000000000000000000000000000000000000000000de', '0x00000000000000000000000000000000000000000000000018fae27693b40000',
50
+ '0x0000000000000000000000006b175474e89094c44da98b954eedeac495271d0f', '0x0000000000000000000000005ef30b9986345249bc32d8928b7ee64de9435e39',
51
+ ],
52
+ ],
53
+ [
54
+ enums_1.Bundles.MainnetIds.MAKER_REPAY_FROM_SMART_SAVINGS_RARI,
55
+ 222,
56
+ 140,
57
+ 180,
58
+ true,
59
+ enums_1.ChainId.Ethereum,
60
+ (0, tokens_1.getAssetInfo)('DAI').address,
61
+ mcdCdpManagerAddr,
62
+ ]
63
+ ]
64
+ ];
65
+ examples.forEach(([expected, actual]) => {
66
+ it(`Given ${actual} should return expected value: ${JSON.stringify(expected)}`, () => {
67
+ (0, chai_1.expect)(strategySubService_1.makerEncode.repayFromSavings(...actual)).to.eql(expected);
68
+ });
69
+ });
70
+ });
71
+ describe('closeOnPrice()', () => {
72
+ const examples = [
73
+ [
74
+ [
75
+ enums_1.Strategies.MainnetIds.MAKER_CLOSE_ON_PRICE_TO_DAI,
76
+ false,
77
+ ['0x0000000000000000000000002260fac5e5542a773aa44fbcfedf7c193bc2c5990000000000000000000000000000000000000000000000000000000002cc9e4c0000000000000000000000000000000000000000000000000000000000000000'],
78
+ [
79
+ '0x0000000000000000000000000000000000000000000000000000000000000078', '0x0000000000000000000000006b175474e89094c44da98b954eedeac495271d0f',
80
+ '0x0000000000000000000000005ef30b9986345249bc32d8928b7ee64de9435e39',
81
+ ],
82
+ ],
83
+ [
84
+ 120,
85
+ enums_1.RatioState.OVER,
86
+ '0.469643',
87
+ (0, tokens_1.getAssetInfo)('DAI').address,
88
+ (0, tokens_1.getAssetInfo)('WBTC').address,
89
+ enums_1.ChainId.Ethereum,
90
+ ]
91
+ ]
92
+ ];
93
+ examples.forEach(([expected, actual]) => {
94
+ it(`Given ${actual} should return expected value: ${JSON.stringify(expected)}`, () => {
95
+ (0, chai_1.expect)(strategySubService_1.makerEncode.closeOnPrice(...actual)).to.eql(expected);
96
+ });
97
+ });
98
+ });
99
+ describe('trailingStop()', () => {
100
+ const examples = [
101
+ [
102
+ [
103
+ enums_1.Strategies.MainnetIds.MAKER_TRAILING_STOP_LOSS_TO_COLL,
104
+ false,
105
+ ['0x0000000000000000000000002260fac5e5542a773aa44fbcfedf7c193bc2c599000000000000000000000000000000000000000000000000000000055ae82600000000000000000000000000000000000000000000000000000000000000007b'],
106
+ [
107
+ '0x000000000000000000000000000000000000000000000000000000000000096e', '0x0000000000000000000000002260fac5e5542a773aa44fbcfedf7c193bc2c599',
108
+ '0x0000000000000000000000006b175474e89094c44da98b954eedeac495271d0f', '0x0000000000000000000000005ef30b9986345249bc32d8928b7ee64de9435e39',
109
+ ],
110
+ ],
111
+ [
112
+ 2414,
113
+ 230,
114
+ (0, tokens_1.getAssetInfo)('WBTC').address,
115
+ (0, tokens_1.getAssetInfo)('WBTC').address,
116
+ 123,
117
+ enums_1.ChainId.Ethereum,
118
+ ]
119
+ ]
120
+ ];
121
+ examples.forEach(([expected, actual]) => {
122
+ it(`Given ${actual} should return expected value: ${JSON.stringify(expected)}`, () => {
123
+ (0, chai_1.expect)(strategySubService_1.makerEncode.trailingStop(...actual)).to.eql(expected);
124
+ });
125
+ });
126
+ });
127
+ describe('leverageManagement()', () => {
128
+ const examples = [
129
+ [
130
+ [
131
+ 5791,
132
+ new decimal_js_1.default('210').mul(1e16).toString(),
133
+ new decimal_js_1.default('290').mul(1e16).toString(),
134
+ new decimal_js_1.default('240').mul(1e16).toString(),
135
+ new decimal_js_1.default('240').mul(1e16).toString(),
136
+ true,
137
+ ],
138
+ [
139
+ 5791, '210', '290', '240', '240', true,
140
+ ]
141
+ ]
142
+ ];
143
+ examples.forEach(([expected, actual]) => {
144
+ it(`Given ${actual} should return expected value: ${JSON.stringify(expected)}`, () => {
145
+ (0, chai_1.expect)(strategySubService_1.makerEncode.leverageManagement(...actual)).to.eql(expected);
146
+ });
147
+ });
148
+ });
149
+ });
150
+ describe('When testing strategySubService.liquityEncode', () => {
151
+ describe('closeOnPrice()', () => {
152
+ const examples = [
153
+ [
154
+ [
155
+ enums_1.Strategies.MainnetIds.LIQUITY_CLOSE_ON_PRICE_TO_COLL,
156
+ false,
157
+ ['0x000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc20000000000000000000000000000000000000000000000000000001c027053000000000000000000000000000000000000000000000000000000000000000000'],
158
+ [
159
+ '0x000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2', '0x0000000000000000000000005f98805a4e8be255a32880fdec7f6728c6568ba0',
160
+ ],
161
+ ],
162
+ [
163
+ enums_1.RatioState.OVER,
164
+ '1203',
165
+ (0, tokens_1.getAssetInfo)('WETH').address,
166
+ (0, tokens_1.getAssetInfo)('WETH').address,
167
+ ]
168
+ ]
169
+ ];
170
+ examples.forEach(([expected, actual]) => {
171
+ it(`Given ${actual} should return expected value: ${JSON.stringify(expected)}`, () => {
172
+ (0, chai_1.expect)(strategySubService_1.liquityEncode.closeOnPrice(...actual)).to.eql(expected);
173
+ });
174
+ });
175
+ });
176
+ describe('trailingStop()', () => {
177
+ const examples = [
178
+ [
179
+ [
180
+ enums_1.Strategies.MainnetIds.LIQUITY_TRAILING_STOP_LOSS_TO_COLL,
181
+ false,
182
+ ['0x000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2000000000000000000000000000000000000000000000000000000055ae826000000000000000000000000000000000000000000000000000000000000000c97'],
183
+ [
184
+ '0x000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2', '0x0000000000000000000000005f98805a4e8be255a32880fdec7f6728c6568ba0',
185
+ ],
186
+ ],
187
+ [
188
+ 230,
189
+ (0, tokens_1.getAssetInfo)('WETH').address,
190
+ (0, tokens_1.getAssetInfo)('WETH').address,
191
+ 3223,
192
+ ]
193
+ ]
194
+ ];
195
+ examples.forEach(([expected, actual]) => {
196
+ it(`Given ${actual} should return expected value: ${JSON.stringify(expected)}`, () => {
197
+ (0, chai_1.expect)(strategySubService_1.liquityEncode.trailingStop(...actual)).to.eql(expected);
198
+ });
199
+ });
200
+ });
201
+ describe('leverageManagement()', () => {
202
+ const examples = [
203
+ [
204
+ [
205
+ new decimal_js_1.default('210').mul(1e16).toString(),
206
+ new decimal_js_1.default('290').mul(1e16).toString(),
207
+ new decimal_js_1.default('240').mul(1e16).toString(),
208
+ new decimal_js_1.default('240').mul(1e16).toString(),
209
+ false,
210
+ ],
211
+ [
212
+ '210', '290', '240', '240', false,
213
+ ]
214
+ ]
215
+ ];
216
+ examples.forEach(([expected, actual]) => {
217
+ it(`Given ${actual} should return expected value: ${JSON.stringify(expected)}`, () => {
218
+ (0, chai_1.expect)(strategySubService_1.liquityEncode.leverageManagement(...actual)).to.eql(expected);
219
+ });
220
+ });
221
+ });
222
+ describe('paybackFromChickenBondStrategySub()', () => {
223
+ const examples = [
224
+ [
225
+ [
226
+ enums_1.Bundles.MainnetIds.LIQUITY_PAYBACK_USING_CHICKEN_BOND,
227
+ true,
228
+ ['0x0000000000000000000000002439d211133afab8f2b819b1066c7e434ad94e9e0000000000000000000000000000000000000000000000002dcbf4840eca00000000000000000000000000000000000000000000000000000000000000000000'],
229
+ [
230
+ '0x000000000000000000000000000000000000000000000000000000000000007b', '0x0000000000000000000000000000000000000000000000000000000000000000',
231
+ '0x0000000000000000000000005f98805a4e8be255a32880fdec7f6728c6568ba0', '0x000000000000000000000000b9d7dddca9a4ac480991865efef82e01273f79c3',
232
+ ],
233
+ ],
234
+ [
235
+ web3Utils.toChecksumAddress('0x2439d211133AFaB8F2B819B1066c7E434Ad94E9e'),
236
+ 330,
237
+ '123',
238
+ 0,
239
+ enums_1.RatioState.OVER
240
+ ]
241
+ ]
242
+ ];
243
+ examples.forEach(([expected, actual]) => {
244
+ it(`Given ${actual} should return expected value: ${JSON.stringify(expected)}`, () => {
245
+ (0, chai_1.expect)(strategySubService_1.liquityEncode.paybackFromChickenBondStrategySub(...actual)).to.eql(expected);
246
+ });
247
+ });
248
+ });
249
+ describe('dsrPayback()', () => {
250
+ const examples = [
251
+ [
252
+ [
253
+ enums_1.Strategies.MainnetIds.LIQUITY_DSR_PAYBACK,
254
+ false,
255
+ ['0x0000000000000000000000002439d211133afab8f2b819b1066c7e434ad94e9e000000000000000000000000000000000000000000000000250dbeda8e4b00000000000000000000000000000000000000000000000000000000000000000001'],
256
+ [
257
+ '0x0000000000000000000000000000000000000000000000000000000000000001', '0x00000000000000000000000000000000000000000000000029a2241af62c0000',
258
+ '0x0000000000000000000000006b175474e89094c44da98b954eedeac495271d0f', '0x0000000000000000000000005f98805a4e8be255a32880fdec7f6728c6568ba0',
259
+ ],
260
+ ],
261
+ [web3Utils.toChecksumAddress('0x2439d211133AFaB8F2B819B1066c7E434Ad94E9e'), 267, 300]
262
+ ]
263
+ ];
264
+ examples.forEach(([expected, actual]) => {
265
+ it(`Given ${actual} should return expected value: ${JSON.stringify(expected)}`, () => {
266
+ (0, chai_1.expect)(strategySubService_1.liquityEncode.dsrPayback(...actual)).to.eql(expected);
267
+ });
268
+ });
269
+ });
270
+ describe('debtInFrontRepay()', () => {
271
+ const examples = [
272
+ [
273
+ [
274
+ enums_1.Strategies.MainnetIds.LIQUITY_DEBT_IN_FRONT_REPAY,
275
+ false,
276
+ ['0x000000000000000000000000235d6a8db3c57c3f7b4eba749e1738db6093732a0000000000000000000000000000000000000000019d971e4fe8401e74000000'],
277
+ [
278
+ '0x000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2', '0x0000000000000000000000005f98805a4e8be255a32880fdec7f6728c6568ba0',
279
+ '0x000000000000000000000000000000000000000000000000063eb89da4ed0000', '0x0000000000000000000000000000000000000000000000000000000000000001',
280
+ '0x0000000000000000000000000000000000000000000000000000000000000000'
281
+ ],
282
+ ],
283
+ [web3Utils.toChecksumAddress('0x235d6A8DB3C57c3f7b4ebA749E1738Db6093732a'), '500000000', 45]
284
+ ]
285
+ ];
286
+ examples.forEach(([expected, actual]) => {
287
+ it(`Given ${actual} should return expected value: ${JSON.stringify(expected)}`, () => {
288
+ (0, chai_1.expect)(strategySubService_1.liquityEncode.debtInFrontRepay(...actual)).to.eql(expected);
289
+ });
290
+ });
291
+ });
292
+ });
293
+ describe('When testing strategySubService.chickenBondsEncode', () => {
294
+ describe('rebond()', () => {
295
+ const examples = [
296
+ [
297
+ ['0x00000000000000000000000000000000000000000000000000000000000005e3'],
298
+ [1507]
299
+ ]
300
+ ];
301
+ examples.forEach(([expected, actual]) => {
302
+ it(`Given ${actual} should return expected value: ${JSON.stringify(expected)}`, () => {
303
+ (0, chai_1.expect)(strategySubService_1.chickenBondsEncode.rebond(...actual)).to.eql(expected);
304
+ });
305
+ });
306
+ });
307
+ });
308
+ describe('When testing strategySubService.aaveV2Encode', () => {
309
+ describe('leverageManagement()', () => {
310
+ const examples = [
311
+ [
312
+ [new decimal_js_1.default(160).mul(1e16).toString(), new decimal_js_1.default(220).mul(1e16).toString(), new decimal_js_1.default(180).mul(1e16).toString(), new decimal_js_1.default(190).mul(1e16).toString(), true],
313
+ [160, 220, 180, 190, true]
314
+ ],
315
+ [
316
+ [new decimal_js_1.default(160).mul(1e16).toString(), new decimal_js_1.default(200).mul(1e16).toString(), new decimal_js_1.default(180).mul(1e16).toString(), new decimal_js_1.default(190).mul(1e16).toString(), false],
317
+ [160, 200, 180, 190, false]
318
+ ],
319
+ ];
320
+ examples.forEach(([expected, actual]) => {
321
+ it(`Given ${actual} should return expected value: ${JSON.stringify(expected)}`, () => {
322
+ (0, chai_1.expect)(strategySubService_1.aaveV2Encode.leverageManagement(...actual)).to.eql(expected);
323
+ });
324
+ });
325
+ });
326
+ });
327
+ describe('When testing strategySubService.aaveV3Encode', () => {
328
+ describe('leverageManagement()', () => {
329
+ const examples = [
330
+ [
331
+ '0x000000000000000016345785d8a0000000000000000000001e87f85809dc0000000000000000000018fae27693b4000000000000000000001a5e27eef13e000001',
332
+ [160, 220, 180, 190, true]
333
+ ],
334
+ [
335
+ '0x000000000000000016345785d8a0000000000000000000001bc16d674ec80000000000000000000018fae27693b4000000000000000000001a5e27eef13e000000',
336
+ [160, 200, 180, 190, false]
337
+ ],
338
+ ];
339
+ examples.forEach(([expected, actual]) => {
340
+ it(`Given ${actual} should return expected value: ${JSON.stringify(expected)}`, () => {
341
+ (0, chai_1.expect)(strategySubService_1.aaveV3Encode.leverageManagement(...actual)).to.eql(expected);
342
+ });
343
+ });
344
+ });
345
+ describe('closeToAsset()', () => {
346
+ const examples = [
347
+ [
348
+ [
349
+ enums_1.Bundles.MainnetIds.AAVE_V3_CLOSE_TO_COLLATERAL,
350
+ true,
351
+ ['0x000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc20000000000000000000000006b175474e89094c44da98b954eedeac495271d0f00000000000000000000000000000000000000000000000000000026e1f9c6000000000000000000000000000000000000000000000000000000000000000000'],
352
+ [
353
+ '0x000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2', '0x0000000000000000000000000000000000000000000000000000000000000015',
354
+ '0x0000000000000000000000006b175474e89094c44da98b954eedeac495271d0f', '0x0000000000000000000000000000000000000000000000000000000000000020',
355
+ '0x0000000000000000000000000000000000000000000000000000000000000000',
356
+ ],
357
+ ],
358
+ [
359
+ enums_1.Bundles.MainnetIds.AAVE_V3_CLOSE_TO_COLLATERAL,
360
+ true,
361
+ {
362
+ baseTokenAddress: (0, tokens_1.getAssetInfo)('WETH').address, quoteTokenAddress: (0, tokens_1.getAssetInfo)('DAI').address, price: 1670, ratioState: enums_1.RatioState.OVER
363
+ },
364
+ {
365
+ collAsset: (0, tokens_1.getAssetInfo)('WETH').address, collAssetId: 21, debtAsset: (0, tokens_1.getAssetInfo)('DAI').address, debtAssetId: 32,
366
+ },
367
+ ]
368
+ ],
369
+ [
370
+ [
371
+ enums_1.Bundles.MainnetIds.AAVE_V3_CLOSE_TO_DEBT,
372
+ true,
373
+ ['0x000000000000000000000000514910771af9ca656af840dff83e8264ecf986ca0000000000000000000000006b175474e89094c44da98b954eedeac495271d0f0000000000000000000000000000000000000000000000000000000000084d000000000000000000000000000000000000000000000000000000000000000001'],
374
+ [
375
+ '0x0000000000000000000000006b175474e89094c44da98b954eedeac495271d0f', '0x0000000000000000000000000000000000000000000000000000000000000015',
376
+ '0x000000000000000000000000514910771af9ca656af840dff83e8264ecf986ca', '0x0000000000000000000000000000000000000000000000000000000000000020',
377
+ '0x0000000000000000000000000000000000000000000000000000000000000000',
378
+ ],
379
+ ],
380
+ [
381
+ enums_1.Bundles.MainnetIds.AAVE_V3_CLOSE_TO_DEBT,
382
+ true,
383
+ {
384
+ baseTokenAddress: (0, tokens_1.getAssetInfo)('LINK').address, quoteTokenAddress: (0, tokens_1.getAssetInfo)('DAI').address, price: 0.00544, ratioState: enums_1.RatioState.UNDER
385
+ },
386
+ {
387
+ collAsset: (0, tokens_1.getAssetInfo)('DAI').address, collAssetId: 21, debtAsset: (0, tokens_1.getAssetInfo)('LINK').address, debtAssetId: 32,
388
+ },
389
+ ]
390
+ ]
391
+ ];
392
+ examples.forEach(([expected, actual]) => {
393
+ it(`Given ${actual} should return expected value: ${JSON.stringify(expected)}`, () => {
394
+ (0, chai_1.expect)(strategySubService_1.aaveV3Encode.closeToAsset(...actual)).to.eql(expected);
395
+ });
396
+ });
397
+ });
398
+ describe('closeToAssetWithMaximumGasPrice()', () => {
399
+ const examples = [
400
+ [
401
+ [
402
+ enums_1.Bundles.MainnetIds.AAVE_V3_CLOSE_TO_COLLATERAL,
403
+ true,
404
+ [
405
+ '0x000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc20000000000000000000000006b175474e89094c44da98b954eedeac495271d0f00000000000000000000000000000000000000000000000000000026e1f9c6000000000000000000000000000000000000000000000000000000000000000000',
406
+ '0x00000000000000000000000000000000000000000000000000000002cb417800',
407
+ ],
408
+ [
409
+ '0x000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2', '0x0000000000000000000000000000000000000000000000000000000000000015',
410
+ '0x0000000000000000000000006b175474e89094c44da98b954eedeac495271d0f', '0x0000000000000000000000000000000000000000000000000000000000000020',
411
+ '0x0000000000000000000000000000000000000000000000000000000000000000',
412
+ ],
413
+ ],
414
+ [
415
+ enums_1.Bundles.MainnetIds.AAVE_V3_CLOSE_TO_COLLATERAL,
416
+ true,
417
+ {
418
+ baseTokenAddress: (0, tokens_1.getAssetInfo)('WETH').address, quoteTokenAddress: (0, tokens_1.getAssetInfo)('DAI').address, price: 1670, ratioState: enums_1.RatioState.OVER, maximumGasPrice: 12,
419
+ },
420
+ {
421
+ collAsset: (0, tokens_1.getAssetInfo)('WETH').address, collAssetId: 21, debtAsset: (0, tokens_1.getAssetInfo)('DAI').address, debtAssetId: 32,
422
+ },
423
+ ]
424
+ ],
425
+ [
426
+ [
427
+ enums_1.Bundles.MainnetIds.AAVE_V3_CLOSE_TO_DEBT,
428
+ true,
429
+ [
430
+ '0x000000000000000000000000514910771af9ca656af840dff83e8264ecf986ca0000000000000000000000006b175474e89094c44da98b954eedeac495271d0f0000000000000000000000000000000000000000000000000000000000084d000000000000000000000000000000000000000000000000000000000000000001',
431
+ '0x0000000000000000000000000000000000000000000000000000004a817c8000',
432
+ ],
433
+ [
434
+ '0x0000000000000000000000006b175474e89094c44da98b954eedeac495271d0f', '0x0000000000000000000000000000000000000000000000000000000000000015',
435
+ '0x000000000000000000000000514910771af9ca656af840dff83e8264ecf986ca', '0x0000000000000000000000000000000000000000000000000000000000000020',
436
+ '0x0000000000000000000000000000000000000000000000000000000000000000',
437
+ ],
438
+ ],
439
+ [
440
+ enums_1.Bundles.MainnetIds.AAVE_V3_CLOSE_TO_DEBT,
441
+ true,
442
+ {
443
+ baseTokenAddress: (0, tokens_1.getAssetInfo)('LINK').address, quoteTokenAddress: (0, tokens_1.getAssetInfo)('DAI').address, price: 0.00544, ratioState: enums_1.RatioState.UNDER, maximumGasPrice: 320,
444
+ },
445
+ {
446
+ collAsset: (0, tokens_1.getAssetInfo)('DAI').address, collAssetId: 21, debtAsset: (0, tokens_1.getAssetInfo)('LINK').address, debtAssetId: 32,
447
+ },
448
+ ]
449
+ ]
450
+ ];
451
+ examples.forEach(([expected, actual]) => {
452
+ it(`Given ${actual} should return expected value: ${JSON.stringify(expected)}`, () => {
453
+ (0, chai_1.expect)(strategySubService_1.aaveV3Encode.closeToAssetWithMaximumGasPrice(...actual)).to.eql(expected);
454
+ });
455
+ });
456
+ });
457
+ describe('openOrder()', () => {
458
+ const examples = [
459
+ [
460
+ [
461
+ enums_1.Bundles.MainnetIds.AAVE_V3_OPEN_ORDER_FROM_COLLATERAL,
462
+ true,
463
+ ['0x000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc20000000000000000000000006b175474e89094c44da98b954eedeac495271d0f0000000000000000000000000000000000000000000000000000007acead34980000000000000000000000000000000000000000000000000000000000000001'],
464
+ [
465
+ '0x000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2',
466
+ '0x000000000000000000000000000000000000000000000000000000000000000a',
467
+ '0x0000000000000000000000006b175474e89094c44da98b954eedeac495271d0f',
468
+ '0x0000000000000000000000000000000000000000000000000000000000000004',
469
+ '0x0000000000000000000000002f39d218133afab8f2b819b1066c7e434ad94e9e',
470
+ '0x0000000000000000000000000000000000000000000000001bc16d674ec80000',
471
+ '0x0000000000000000000000000000000000000000000000000000000000000000',
472
+ ],
473
+ ],
474
+ [
475
+ enums_1.Bundles.MainnetIds.AAVE_V3_OPEN_ORDER_FROM_COLLATERAL,
476
+ true,
477
+ {
478
+ baseTokenAddress: (0, tokens_1.getAssetInfo)('WETH').address, quoteTokenAddress: (0, tokens_1.getAssetInfo)('DAI').address, price: 5274.534678, state: enums_1.RatioState.UNDER
479
+ },
480
+ {
481
+ collAsset: (0, tokens_1.getAssetInfo)('WETH').address,
482
+ collAssetId: 10,
483
+ debtAsset: (0, tokens_1.getAssetInfo)('DAI').address,
484
+ debtAssetId: 4,
485
+ marketAddr: '0x2f39d218133afab8f2b819b1066c7e434ad94e9e',
486
+ targetRatio: 200,
487
+ },
488
+ ]
489
+ ],
490
+ ];
491
+ examples.forEach(([expected, actual]) => {
492
+ it(`Given ${actual} should return expected value: ${JSON.stringify(expected)}`, () => {
493
+ (0, chai_1.expect)(strategySubService_1.aaveV3Encode.openOrder(...actual)).to.eql(expected);
494
+ });
495
+ });
496
+ });
497
+ });
498
+ describe('When testing strategySubService.compoundV2Encode', () => {
499
+ describe('leverageManagement()', () => {
500
+ const examples = [
501
+ [
502
+ [new decimal_js_1.default(160).mul(1e16).toString(), new decimal_js_1.default(220).mul(1e16).toString(), new decimal_js_1.default(180).mul(1e16).toString(), new decimal_js_1.default(190).mul(1e16).toString(), true],
503
+ [160, 220, 180, 190, true]
504
+ ],
505
+ [
506
+ [new decimal_js_1.default(160).mul(1e16).toString(), new decimal_js_1.default(200).mul(1e16).toString(), new decimal_js_1.default(180).mul(1e16).toString(), new decimal_js_1.default(190).mul(1e16).toString(), false],
507
+ [160, 200, 180, 190, false]
508
+ ],
509
+ ];
510
+ examples.forEach(([expected, actual]) => {
511
+ it(`Given ${actual} should return expected value: ${JSON.stringify(expected)}`, () => {
512
+ (0, chai_1.expect)(strategySubService_1.compoundV2Encode.leverageManagement(...actual)).to.eql(expected);
513
+ });
514
+ });
515
+ });
516
+ });
517
+ describe('When testing strategySubService.compoundV3Encode', () => {
518
+ describe('leverageManagement()', () => {
519
+ const examples = [
520
+ [
521
+ [
522
+ web3Utils.toChecksumAddress('0x1C0F620155e85491f8D35440eb17538Ca5c55212'),
523
+ web3Utils.toChecksumAddress((0, tokens_1.getAssetInfo)('USDC', enums_1.ChainId.Ethereum).address),
524
+ new decimal_js_1.default(160).mul(1e16).toString(),
525
+ new decimal_js_1.default(220).mul(1e16).toString(),
526
+ new decimal_js_1.default(180).mul(1e16).toString(),
527
+ new decimal_js_1.default(190).mul(1e16).toString(),
528
+ true, false,
529
+ ],
530
+ [
531
+ web3Utils.toChecksumAddress('0x1C0F620155e85491f8D35440eb17538Ca5c55212'),
532
+ web3Utils.toChecksumAddress((0, tokens_1.getAssetInfo)('USDC', enums_1.ChainId.Ethereum).address),
533
+ 160, 220, 180, 190,
534
+ true, false,
535
+ ]
536
+ ],
537
+ [
538
+ [
539
+ web3Utils.toChecksumAddress('0xaC0F620155e85491f8D35440eb17538Ca5c55212'),
540
+ web3Utils.toChecksumAddress((0, tokens_1.getAssetInfo)('WETH', enums_1.ChainId.Ethereum).address),
541
+ new decimal_js_1.default(160).mul(1e16).toString(),
542
+ new decimal_js_1.default(210).mul(1e16).toString(),
543
+ new decimal_js_1.default(180).mul(1e16).toString(),
544
+ new decimal_js_1.default(190).mul(1e16).toString(),
545
+ false, true,
546
+ ],
547
+ [
548
+ web3Utils.toChecksumAddress('0xaC0F620155e85491f8D35440eb17538Ca5c55212'),
549
+ web3Utils.toChecksumAddress((0, tokens_1.getAssetInfo)('WETH', enums_1.ChainId.Ethereum).address),
550
+ 160, 210, 180, 190,
551
+ false, true,
552
+ ]
553
+ ],
554
+ ];
555
+ examples.forEach(([expected, actual]) => {
556
+ it(`Given ${actual} should return expected value: ${JSON.stringify(expected)}`, () => {
557
+ (0, chai_1.expect)(strategySubService_1.compoundV3Encode.leverageManagement(...actual)).to.eql(expected);
558
+ });
559
+ });
560
+ });
561
+ });
562
+ describe('When testing strategySubService.morphoAaveV2Encode', () => {
563
+ describe('leverageManagement()', () => {
564
+ const examples = [
565
+ [
566
+ [new decimal_js_1.default(160).mul(1e16).toString(), new decimal_js_1.default(220).mul(1e16).toString(), new decimal_js_1.default(180).mul(1e16).toString(), new decimal_js_1.default(190).mul(1e16).toString(), true],
567
+ [160, 220, 180, 190, true]
568
+ ],
569
+ [
570
+ [new decimal_js_1.default(160).mul(1e16).toString(), new decimal_js_1.default(200).mul(1e16).toString(), new decimal_js_1.default(180).mul(1e16).toString(), new decimal_js_1.default(190).mul(1e16).toString(), false],
571
+ [160, 200, 180, 190, false]
572
+ ],
573
+ ];
574
+ examples.forEach(([expected, actual]) => {
575
+ it(`Given ${actual} should return expected value: ${JSON.stringify(expected)}`, () => {
576
+ (0, chai_1.expect)(strategySubService_1.morphoAaveV2Encode.leverageManagement(...actual)).to.eql(expected);
577
+ });
578
+ });
579
+ });
580
+ });
581
+ describe('When testing strategySubService.exchangeEncode', () => {
582
+ describe('dca()', () => {
583
+ const examples = [
584
+ [
585
+ [
586
+ enums_1.Strategies.ArbitrumIds.EXCHANGE_DCA,
587
+ false,
588
+ ['0x0000000000000000000000000000000000000000000000000000018b23bd88cd000000000000000000000000000000000000000000000000000000000012d068'],
589
+ [
590
+ '0x000000000000000000000000da10009cbd5d07dd0cecc66161fc93d7c9000da1', '0x000000000000000000000000af88d065e77c8cc2239327c5edb3a432268e5831',
591
+ '0x0000000000000000000000000000000000000000000000000000000000038270', '0x000000000000000000000000000000000000000000000000000000000012d068'
592
+ ],
593
+ ],
594
+ [(0, tokens_1.getAssetInfo)('DAI', enums_1.ChainId.Arbitrum).address, (0, tokens_1.getAssetInfo)('USDC', enums_1.ChainId.Arbitrum).address, '230000', 1697111705805, 1233000, enums_1.ChainId.Arbitrum]
595
+ ],
596
+ [
597
+ [
598
+ enums_1.Strategies.MainnetIds.EXCHANGE_DCA,
599
+ false,
600
+ ['0x0000000000000000000000000000000000000000000000000000018b23bd88cd0000000000000000000000000000000000000000000000000000000000067458'],
601
+ [
602
+ '0x0000000000000000000000002260fac5e5542a773aa44fbcfedf7c193bc2c599', '0x000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee',
603
+ '0x0000000000000000000000000000000000000000000000000000000000000015', '0x0000000000000000000000000000000000000000000000000000000000067458',
604
+ ],
605
+ ],
606
+ [(0, tokens_1.getAssetInfo)('WBTC').address, (0, tokens_1.getAssetInfo)('ETH').address, '21', 1697111705805, 423000, enums_1.ChainId.Ethereum]
607
+ ],
608
+ ];
609
+ examples.forEach(([expected, actual]) => {
610
+ it(`Given ${actual} should return expected value: ${JSON.stringify(expected)}`, () => {
611
+ (0, chai_1.expect)(strategySubService_1.exchangeEncode.dca(...actual)).to.eql(expected);
612
+ });
613
+ });
614
+ });
615
+ describe('limitOrder()', () => {
616
+ const examples = [
617
+ [
618
+ [
619
+ web3Utils.toChecksumAddress((0, tokens_1.getAssetInfo)('WETH', enums_1.ChainId.Ethereum).address),
620
+ web3Utils.toChecksumAddress((0, tokens_1.getAssetInfo)('DAI', enums_1.ChainId.Ethereum).address),
621
+ '2131',
622
+ '0.53123',
623
+ '1696590921159',
624
+ `${enums_1.OrderType.STOP_LOSS}`
625
+ ],
626
+ [
627
+ web3Utils.toChecksumAddress((0, tokens_1.getAssetInfo)('WETH', enums_1.ChainId.Ethereum).address),
628
+ web3Utils.toChecksumAddress((0, tokens_1.getAssetInfo)('DAI', enums_1.ChainId.Ethereum).address),
629
+ '2131',
630
+ '0.53123',
631
+ 1696590921159,
632
+ enums_1.OrderType.STOP_LOSS
633
+ ]
634
+ ],
635
+ [
636
+ [
637
+ web3Utils.toChecksumAddress((0, tokens_1.getAssetInfo)('LINK', enums_1.ChainId.Arbitrum).address),
638
+ web3Utils.toChecksumAddress((0, tokens_1.getAssetInfo)('USDC', enums_1.ChainId.Arbitrum).address),
639
+ '2131',
640
+ '0.43123',
641
+ '1646590921159',
642
+ `${enums_1.OrderType.TAKE_PROFIT}`
643
+ ],
644
+ [
645
+ web3Utils.toChecksumAddress((0, tokens_1.getAssetInfo)('LINK', enums_1.ChainId.Arbitrum).address),
646
+ web3Utils.toChecksumAddress((0, tokens_1.getAssetInfo)('USDC', enums_1.ChainId.Arbitrum).address),
647
+ '2131',
648
+ '0.43123',
649
+ 1646590921159,
650
+ enums_1.OrderType.TAKE_PROFIT
651
+ ]
652
+ ],
653
+ ];
654
+ examples.forEach(([expected, actual]) => {
655
+ it(`Given ${actual} should return expected value: ${JSON.stringify(expected)}`, () => {
656
+ (0, chai_1.expect)(strategySubService_1.exchangeEncode.limitOrder(...actual)).to.eql(expected);
657
+ });
658
+ });
659
+ });
660
+ });
661
+ describe('When testing strategySubService.sparkEncode', () => {
662
+ describe('leverageManagement()', () => {
663
+ const examples = [
664
+ [
665
+ '0x000000000000000016345785d8a0000000000000000000001e87f85809dc0000000000000000000018fae27693b4000000000000000000001a5e27eef13e000001',
666
+ [160, 220, 180, 190, true]
667
+ ],
668
+ [
669
+ '0x000000000000000016345785d8a0000000000000000000001bc16d674ec80000000000000000000018fae27693b4000000000000000000001a5e27eef13e000000',
670
+ [160, 200, 180, 190, false]
671
+ ],
672
+ ];
673
+ examples.forEach(([expected, actual]) => {
674
+ it(`Given ${actual} should return expected value: ${JSON.stringify(expected)}`, () => {
675
+ (0, chai_1.expect)(strategySubService_1.sparkEncode.leverageManagement(...actual)).to.eql(expected);
676
+ });
677
+ });
678
+ });
679
+ describe('closeToAsset()', () => {
680
+ const examples = [
681
+ [
682
+ [
683
+ enums_1.Bundles.MainnetIds.SPARK_CLOSE_TO_COLLATERAL,
684
+ true,
685
+ ['0x000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc20000000000000000000000006b175474e89094c44da98b954eedeac495271d0f00000000000000000000000000000000000000000000000000000026e1f9c6000000000000000000000000000000000000000000000000000000000000000000'],
686
+ [
687
+ '0x000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2', '0x0000000000000000000000000000000000000000000000000000000000000015',
688
+ '0x0000000000000000000000006b175474e89094c44da98b954eedeac495271d0f', '0x0000000000000000000000000000000000000000000000000000000000000020',
689
+ '0x0000000000000000000000000000000000000000000000000000000000000000',
690
+ ],
691
+ ],
692
+ [
693
+ enums_1.Bundles.MainnetIds.SPARK_CLOSE_TO_COLLATERAL,
694
+ true,
695
+ {
696
+ baseTokenAddress: (0, tokens_1.getAssetInfo)('WETH').address, quoteTokenAddress: (0, tokens_1.getAssetInfo)('DAI').address, price: 1670, ratioState: enums_1.RatioState.OVER
697
+ },
698
+ {
699
+ collAsset: (0, tokens_1.getAssetInfo)('WETH').address, collAssetId: 21, debtAsset: (0, tokens_1.getAssetInfo)('DAI').address, debtAssetId: 32,
700
+ },
701
+ ]
702
+ ],
703
+ [
704
+ [
705
+ enums_1.Bundles.MainnetIds.SPARK_CLOSE_TO_DEBT,
706
+ true,
707
+ ['0x000000000000000000000000514910771af9ca656af840dff83e8264ecf986ca0000000000000000000000006b175474e89094c44da98b954eedeac495271d0f0000000000000000000000000000000000000000000000000000000000084d000000000000000000000000000000000000000000000000000000000000000001'],
708
+ [
709
+ '0x0000000000000000000000006b175474e89094c44da98b954eedeac495271d0f', '0x0000000000000000000000000000000000000000000000000000000000000015',
710
+ '0x000000000000000000000000514910771af9ca656af840dff83e8264ecf986ca', '0x0000000000000000000000000000000000000000000000000000000000000020',
711
+ '0x0000000000000000000000000000000000000000000000000000000000000000',
712
+ ],
713
+ ],
714
+ [
715
+ enums_1.Bundles.MainnetIds.SPARK_CLOSE_TO_DEBT,
716
+ true,
717
+ {
718
+ baseTokenAddress: (0, tokens_1.getAssetInfo)('LINK').address, quoteTokenAddress: (0, tokens_1.getAssetInfo)('DAI').address, price: 0.00544, ratioState: enums_1.RatioState.UNDER
719
+ },
720
+ {
721
+ collAsset: (0, tokens_1.getAssetInfo)('DAI').address, collAssetId: 21, debtAsset: (0, tokens_1.getAssetInfo)('LINK').address, debtAssetId: 32,
722
+ },
723
+ ]
724
+ ]
725
+ ];
726
+ examples.forEach(([expected, actual]) => {
727
+ it(`Given ${actual} should return expected value: ${JSON.stringify(expected)}`, () => {
728
+ (0, chai_1.expect)(strategySubService_1.sparkEncode.closeToAsset(...actual)).to.eql(expected);
729
+ });
730
+ });
731
+ });
732
+ });
733
+ describe('When testing strategySubService.crvUSDEncode', () => {
734
+ describe('leverageManagement()', () => {
735
+ const examples = [
736
+ [
737
+ [
738
+ enums_1.Bundles.MainnetIds.CRVUSD_REPAY,
739
+ true,
740
+ [
741
+ '0x0000000000000000000000001031d218133afab8c2b819b1366c7e434ad91e9c000000000000000000000000a920de414ea4ab66b97da1bfe9e6eca7d4219635000000000000000000000000000000000000000000000000136dcc951d8c00000000000000000000000000000000000000000000000000000000000000000001',
742
+ ],
743
+ [
744
+ '0x000000000000000000000000a920de414ea4ab66b97da1bfe9e6eca7d4219635',
745
+ '0x0000000000000000000000000000000000000000000000000000000000000001',
746
+ '0x0000000000000000000000000000000000000000000000001a5e27eef13e0000',
747
+ '0x000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2',
748
+ '0x000000000000000000000000f939e0a03fb07f59a73314e73794be0e57ac1b4e',
749
+ ],
750
+ ],
751
+ [
752
+ web3Utils.toChecksumAddress('0x1031d218133AFaB8c2B819B1366c7E434Ad91E9c'),
753
+ web3Utils.toChecksumAddress('0xa920de414ea4ab66b97da1bfe9e6eca7d4219635'),
754
+ enums_1.RatioState.UNDER,
755
+ 190,
756
+ 140,
757
+ '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2',
758
+ '0xf939E0A03FB07F59A73314E73794Be0E57ac1b4E',
759
+ ]
760
+ ],
761
+ [
762
+ [
763
+ enums_1.Bundles.MainnetIds.CRVUSD_BOOST,
764
+ true,
765
+ [
766
+ '0x0000000000000000000000000043d218133afab8f2b829b106633e434ad94e2c000000000000000000000000a920de414ea4ab66b97da1bfe9e6eca7d42196350000000000000000000000000000000000000000000000001bc16d674ec800000000000000000000000000000000000000000000000000000000000000000000'
767
+ ],
768
+ [
769
+ '0x000000000000000000000000a920de414ea4ab66b97da1bfe9e6eca7d4219635',
770
+ '0x0000000000000000000000000000000000000000000000000000000000000000',
771
+ '0x00000000000000000000000000000000000000000000000016345785d8a00000',
772
+ '0x000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2',
773
+ '0x000000000000000000000000f939e0a03fb07f59a73314e73794be0e57ac1b4e',
774
+ ],
775
+ ],
776
+ [
777
+ web3Utils.toChecksumAddress('0x0043d218133AFaB8F2B829B106633E434Ad94E2c'),
778
+ web3Utils.toChecksumAddress('0xa920de414ea4ab66b97da1bfe9e6eca7d4219635'),
779
+ enums_1.RatioState.OVER,
780
+ 160,
781
+ 200,
782
+ '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2',
783
+ '0xf939E0A03FB07F59A73314E73794Be0E57ac1b4E',
784
+ ]
785
+ ],
786
+ ];
787
+ examples.forEach(([expected, actual]) => {
788
+ it(`Given ${actual} should return expected value: ${JSON.stringify(expected)}`, () => {
789
+ (0, chai_1.expect)(strategySubService_1.crvUSDEncode.leverageManagement(...actual)).to.eql(expected);
790
+ });
791
+ });
792
+ });
793
+ describe('payback()', () => {
794
+ const examples = [
795
+ [
796
+ [
797
+ enums_1.Strategies.MainnetIds.CURVEUSD_PAYBACK,
798
+ false,
799
+ [
800
+ '0x0000000000000000000000007a2af22ba3276108cd331c8985ef9528e10a871a000000000000000000000000a920de414ea4ab66b97da1bfe9e6eca7d421963500000000000000000000000000000000000000000000000002c68af0bb140000',
801
+ ],
802
+ [
803
+ '0x000000000000000000000000a920de414ea4ab66b97da1bfe9e6eca7d4219635',
804
+ '0x000000000000000000000000dc0ad7a48088f1aa55d26f8b36f7c1e827ddd280',
805
+ '0x000000000000000000000000dc0ad7a48088f1aa55d26f8b36f7c1e827ddd280',
806
+ '0x00000000000000000000000000000000000000000000043c33c1937564800000',
807
+ '0x000000000000000000000000f939e0a03fb07f59a73314e73794be0e57ac1b4e'
808
+ ],
809
+ ],
810
+ [
811
+ web3Utils.toChecksumAddress('0x7a2af22ba3276108cd331c8985ef9528e10a871a'),
812
+ web3Utils.toChecksumAddress('0xDc0Ad7a48088f1AA55d26f8b36F7C1E827DdD280'),
813
+ web3Utils.toChecksumAddress('0xDc0Ad7a48088f1AA55d26f8b36F7C1E827DdD280'),
814
+ '20000',
815
+ '0xf939E0A03FB07F59A73314E73794Be0E57ac1b4E',
816
+ web3Utils.toChecksumAddress('0xA920De414eA4Ab66b97dA1bFE9e6EcA7d4219635'),
817
+ 20,
818
+ ]
819
+ ]
820
+ ];
821
+ examples.forEach(([expected, actual]) => {
822
+ it(`Given ${actual} should return expected value: ${JSON.stringify(expected)}`, () => {
823
+ (0, chai_1.expect)(strategySubService_1.crvUSDEncode.payback(...actual)).to.eql(expected);
824
+ });
825
+ });
826
+ });
827
+ });
828
+ describe('When testing strategySubService.morphoBlueEncode', () => {
829
+ describe('leverageManagement()', () => {
830
+ const examples = [
831
+ [
832
+ [
833
+ enums_1.Bundles.MainnetIds.MORPHO_BLUE_REPAY,
834
+ true,
835
+ [
836
+ '0xc54d7acf14de29e0e5527cabd7a576506870346a78a11a6762e2cca66322ec410000000000000000000000001031d218133afab8c2b819b1366c7e434ad91e9c00000000000000000000000000000000000000000000000010a741a4627800000000000000000000000000000000000000000000000000000000000000000001',
837
+ ],
838
+ [
839
+ '0x000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2',
840
+ '0x0000000000000000000000007f39c581f595b53c5cb19bd0b3f8da6c935e2ca0',
841
+ '0x0000000000000000000000002a01eb9496094da03c4e364def50f5ad1280ad72',
842
+ '0x000000000000000000000000870ac11d48b15db9a138cf899d20f13f79ba00bc',
843
+ '0x0000000000000000000000000000000000000000000000000d1d507e40be8000',
844
+ '0x0000000000000000000000000000000000000000000000000000000000000001',
845
+ '0x000000000000000000000000000000000000000000000000136dcc951d8c0000',
846
+ '0x0000000000000000000000001031d218133afab8c2b819b1366c7e434ad91e9c',
847
+ '0x0000000000000000000000000000000000000000000000000000000000000000',
848
+ ],
849
+ ],
850
+ [
851
+ '0xc54d7acf14de29e0e5527cabd7a576506870346a78a11a6762e2cca66322ec41',
852
+ web3Utils.toChecksumAddress('0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2'),
853
+ web3Utils.toChecksumAddress('0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0'),
854
+ web3Utils.toChecksumAddress('0x2a01eb9496094da03c4e364def50f5ad1280ad72'),
855
+ web3Utils.toChecksumAddress('0x870aC11D48B15DB9a138Cf899d20F13F79Ba00BC'),
856
+ '945000000000000000',
857
+ enums_1.RatioState.UNDER,
858
+ 140,
859
+ 120,
860
+ web3Utils.toChecksumAddress('0x1031d218133AFaB8c2B819B1366c7E434Ad91E9c'),
861
+ false,
862
+ ]
863
+ ],
864
+ [
865
+ [
866
+ enums_1.Bundles.MainnetIds.MORPHO_BLUE_BOOST,
867
+ true,
868
+ [
869
+ '0xc54d7acf14de29e0e5527cabd7a576506870346a78a11a6762e2cca66322ec410000000000000000000000001031d218133afab8c2b819b1366c7e434ad91e9c0000000000000000000000000000000000000000000000001bc16d674ec800000000000000000000000000000000000000000000000000000000000000000000'
870
+ ],
871
+ [
872
+ '0x000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2',
873
+ '0x0000000000000000000000007f39c581f595b53c5cb19bd0b3f8da6c935e2ca0',
874
+ '0x0000000000000000000000002a01eb9496094da03c4e364def50f5ad1280ad72',
875
+ '0x000000000000000000000000870ac11d48b15db9a138cf899d20f13f79ba00bc',
876
+ '0x0000000000000000000000000000000000000000000000000d1d507e40be8000',
877
+ '0x0000000000000000000000000000000000000000000000000000000000000000',
878
+ '0x00000000000000000000000000000000000000000000000016345785d8a00000',
879
+ '0x0000000000000000000000001031d218133afab8c2b819b1366c7e434ad91e9c',
880
+ '0x0000000000000000000000000000000000000000000000000000000000000000',
881
+ ],
882
+ ],
883
+ [
884
+ '0xc54d7acf14de29e0e5527cabd7a576506870346a78a11a6762e2cca66322ec41',
885
+ web3Utils.toChecksumAddress('0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2'),
886
+ web3Utils.toChecksumAddress('0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0'),
887
+ web3Utils.toChecksumAddress('0x2a01eb9496094da03c4e364def50f5ad1280ad72'),
888
+ web3Utils.toChecksumAddress('0x870aC11D48B15DB9a138Cf899d20F13F79Ba00BC'),
889
+ '945000000000000000',
890
+ enums_1.RatioState.OVER,
891
+ 160,
892
+ 200,
893
+ web3Utils.toChecksumAddress('0x1031d218133AFaB8c2B819B1366c7E434Ad91E9c'),
894
+ false,
895
+ ]
896
+ ],
897
+ ];
898
+ examples.forEach(([expected, actual]) => {
899
+ it(`Given ${actual} should return expected value: ${JSON.stringify(expected)}`, () => {
900
+ (0, chai_1.expect)(strategySubService_1.morphoBlueEncode.leverageManagement(...actual)).to.eql(expected);
901
+ });
902
+ });
903
+ });
904
+ });
905
+ describe('When testing strategySubService.compoundV3L2Encode', () => {
906
+ describe('leverageManagement()', () => {
907
+ const examples = [
908
+ [
909
+ '0x0313D212133AFab8F2b829B1066c7e43caD94e2c0213D212133AfaB8F2b829B1066C7E43cAD94E2c000000000000000016345785d8a0000000000000000000001e87f85809dc0000000000000000000018fae27693b4000000000000000000001a5e27eef13e000001',
910
+ [
911
+ web3Utils.toChecksumAddress('0x0313d212133AFaB8F2B829B1066c7E43cAd94E2c'),
912
+ web3Utils.toChecksumAddress('0x0213d212133AFaB8F2B829B1066c7E43cAd94E2c'),
913
+ 160, 220, 180, 190,
914
+ true
915
+ ],
916
+ ],
917
+ [
918
+ '0x0313D212133AFab8F2b829B1066c7e43caD94e2c0413d212133afAb8F2B829b1066C7e43cAd94e2c000000000000000016345785d8a0000000000000000000001e87f85809dc0000000000000000000018fae27693b4000000000000000000000f43fc2c04ee000000',
919
+ [
920
+ web3Utils.toChecksumAddress('0x0313d212133AFaB8F2B829B1066c7E43cAd94E2c'),
921
+ web3Utils.toChecksumAddress('0x0413d212133AFaB8F2B829B1066c7E43cAd94E2c'),
922
+ 160, 220, 180, 110,
923
+ false
924
+ ],
925
+ ],
926
+ ];
927
+ examples.forEach(([expected, actual]) => {
928
+ it(`Given ${actual} should return expected value: ${JSON.stringify(expected)}`, () => {
929
+ (0, chai_1.expect)(strategySubService_1.compoundV3L2Encode.leverageManagement(...actual)).to.eql(expected);
930
+ });
931
+ });
932
+ });
933
+ });
934
+ });