@defisaver/automation-sdk 3.3.12-strategies-refactor-3-dev → 3.3.12-strategies-refactor-5-dev

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.
@@ -892,6 +892,7 @@ function parseMorphoBlueLeverageManagementOnPrice(position, parseData) {
892
892
  debtAsset: subData.loanToken,
893
893
  price: triggerData.price,
894
894
  ratio: subData.targetRatio,
895
+ ratioState: triggerData.priceState,
895
896
  };
896
897
  return _position;
897
898
  }
@@ -5,14 +5,12 @@ export declare const makerEncode: {
5
5
  repayFromSavings(bundleId: StrategyOrBundleIds, vaultId: number, triggerRepayRatio: number, targetRepayRatio: number, isBundle?: boolean, chainId?: ChainId, daiAddr?: EthereumAddress, mcdCdpManagerAddr?: EthereumAddress): (boolean | string[] | Strategies.MainnetIds | Strategies.OptimismIds | Strategies.ArbitrumIds | Strategies.BaseIds | Bundles.MainnetIds | Bundles.OptimismIds | Bundles.ArbitrumIds | Bundles.BaseIds)[];
6
6
  closeOnPrice(vaultId: number, ratioState: RatioState, price: string, closeToAssetAddr: EthereumAddress, chainlinkCollAddress: EthereumAddress, chainId?: ChainId, daiAddr?: EthereumAddress, mcdCdpManagerAddr?: EthereumAddress): (boolean | string[] | Strategies.MainnetIds)[];
7
7
  trailingStop(vaultId: number, triggerPercentage: number, closeToAssetAddr: EthereumAddress, chainlinkCollAddress: EthereumAddress, roundId: number, chainId?: ChainId, daiAddr?: EthereumAddress, mcdCdpManagerAddr?: EthereumAddress): (boolean | string[] | Strategies.MainnetIds)[];
8
- leverageManagement(vaultId: number, triggerRepayRatio: string, triggerBoostRatio: string, targetBoostRatio: string, targetRepayRatio: string, boostEnabled: boolean): (string | number | boolean)[];
9
8
  leverageManagementWithoutSubProxy(vaultId: number, triggerRatio: number, targetRatio: number, ratioState: RatioState, isBoost: boolean, daiAddr?: EthereumAddress): (boolean | string[] | Bundles.MainnetIds)[];
10
9
  };
11
10
  export declare const liquityEncode: {
12
11
  closeOnPrice(priceOverOrUnder: RatioState, price: string, closeToAssetAddr: EthereumAddress, chainlinkCollAddress: EthereumAddress, chainId?: ChainId, collAddr?: EthereumAddress, debtAddr?: EthereumAddress): (boolean | string[] | Strategies.MainnetIds)[];
13
12
  trailingStop(triggerPercentage: number, closeToAssetAddr: EthereumAddress, chainlinkCollAddress: EthereumAddress, roundId: number, chainId?: ChainId, collAddr?: EthereumAddress, debtAddr?: EthereumAddress): (boolean | string[] | Strategies.MainnetIds)[];
14
13
  paybackFromChickenBondStrategySub(proxyAddress: EthereumAddress, ratio: number, sourceId: string, sourceType: number, ratioState?: RatioState): (boolean | string[] | Bundles.MainnetIds)[];
15
- leverageManagement(triggerRepayRatio: string, triggerBoostRatio: string, targetBoostRatio: string, targetRepayRatio: string, boostEnabled: boolean): (string | boolean)[];
16
14
  leverageManagementWithoutSubProxy(strategyOrBundleId: number, user: EthereumAddress, ratioState: RatioState, targetRatio: number, triggerRatio: number): (number | boolean | string[])[];
17
15
  dsrPayback(proxyAddress: EthereumAddress, triggerRatio: number, targetRatio: number): (boolean | string[] | Strategies.MainnetIds)[];
18
16
  dsrSupply(proxyAddress: EthereumAddress, triggerRatio: number, targetRatio: number): (boolean | string[] | Strategies.MainnetIds)[];
@@ -22,11 +20,9 @@ export declare const chickenBondsEncode: {
22
20
  rebond(bondId: number): string[];
23
21
  };
24
22
  export declare const aaveV2Encode: {
25
- leverageManagement(triggerRepayRatio: number, triggerBoostRatio: number, targetBoostRatio: number, targetRepayRatio: number, boostEnabled: boolean): string[];
26
23
  leverageManagementWithoutSubProxy(strategyOrBundleId: number, market: EthereumAddress, user: EthereumAddress, ratioState: RatioState, targetRatio: number, triggerRatio: number): (number | boolean | string[])[];
27
24
  };
28
25
  export declare const aaveV3Encode: {
29
- leverageManagement(triggerRepayRatio: number, triggerBoostRatio: number, targetBoostRatio: number, targetRepayRatio: number, boostEnabled: boolean): string;
30
26
  closeToAsset(strategyOrBundleId: number, isBundle: boolean | undefined, triggerData: {
31
27
  baseTokenAddress: EthereumAddress;
32
28
  quoteTokenAddress: EthereumAddress;
@@ -69,11 +65,9 @@ export declare const aaveV3Encode: {
69
65
  collateralSwitch(strategyOrBundleId: number, fromAsset: EthereumAddress, fromAssetId: number, toAsset: EthereumAddress, toAssetId: number, marketAddr: EthereumAddress, amountToSwitch: string, baseTokenAddress: EthereumAddress, quoteTokenAddress: EthereumAddress, price: number, state: RatioState): (number | boolean | string[])[];
70
66
  };
71
67
  export declare const compoundV2Encode: {
72
- leverageManagement(triggerRepayRatio: number, triggerBoostRatio: number, targetBoostRatio: number, targetRepayRatio: number, boostEnabled: boolean): string[];
73
68
  leverageManagementWithoutSubProxy(strategyOrBundleId: number, user: EthereumAddress, ratioState: RatioState, targetRatio: number, triggerRatio: number): (number | boolean | string[])[];
74
69
  };
75
70
  export declare const compoundV3Encode: {
76
- leverageManagement(market: EthereumAddress, baseToken: EthereumAddress, triggerRepayRatio: number, triggerBoostRatio: number, targetBoostRatio: number, targetRepayRatio: number, boostEnabled: boolean, isEOA: boolean): string[];
77
71
  leverageManagementWithoutSubProxy(strategyOrBundleId: number, market: EthereumAddress, baseToken: EthereumAddress, user: EthereumAddress, ratioState: RatioState, targetRatio: number, triggerRatio: number): (number | boolean | string[])[];
78
72
  leverageManagementOnPrice(strategyOrBundleId: number, market: EthereumAddress, collToken: EthereumAddress, baseToken: EthereumAddress, targetRatio: number, price: number, priceState: RatioState, ratioState: RatioState, user: EthereumAddress): (number | boolean | string[])[];
79
73
  closeOnPrice(strategyOrBundleId: number, market: EthereumAddress, collToken: EthereumAddress, baseToken: EthereumAddress, stopLossPrice: number | undefined, stopLossType: CloseToAssetType | undefined, takeProfitPrice: number | undefined, takeProfitType: CloseToAssetType | undefined, user: EthereumAddress): (number | boolean | string[])[];
@@ -83,11 +77,9 @@ export declare const morphoAaveV2Encode: {
83
77
  };
84
78
  export declare const exchangeEncode: {
85
79
  dca(fromToken: EthereumAddress, toToken: EthereumAddress, amount: string, timestamp: number, interval: number, network: ChainId): (boolean | string[] | Strategies.MainnetIds | Strategies.OptimismIds | Strategies.ArbitrumIds | Strategies.BaseIds)[];
86
- limitOrder(fromToken: EthereumAddress, toToken: EthereumAddress, amount: string, targetPrice: string, goodUntil: string | number, orderType: OrderType): string[];
87
80
  limitOrderWithoutSubProxy(fromToken: EthereumAddress, toToken: EthereumAddress, amount: string, targetPrice: string, goodUntil: string | number, orderType: OrderType, fromTokenDecimals: number, toTokenDecimals: number, network: ChainId): (boolean | string[] | Strategies.MainnetIds | Strategies.OptimismIds | Strategies.ArbitrumIds | Strategies.BaseIds)[];
88
81
  };
89
82
  export declare const sparkEncode: {
90
- leverageManagement(triggerRepayRatio: number, triggerBoostRatio: number, targetBoostRatio: number, targetRepayRatio: number, boostEnabled: boolean): string;
91
83
  leverageManagementOnPrice(strategyOrBundleId: number, isBundle: boolean | undefined, triggerData: {
92
84
  baseTokenAddr: EthereumAddress;
93
85
  quoteTokenAddr: EthereumAddress;
@@ -22,12 +22,8 @@ var __importStar = (this && this.__importStar) || function (mod) {
22
22
  __setModuleDefault(result, mod);
23
23
  return result;
24
24
  };
25
- var __importDefault = (this && this.__importDefault) || function (mod) {
26
- return (mod && mod.__esModule) ? mod : { "default": mod };
27
- };
28
25
  Object.defineProperty(exports, "__esModule", { value: true });
29
26
  exports.aaveV4Encode = exports.fluidEncode = exports.liquityV2Encode = exports.morphoBlueEncode = exports.crvUSDEncode = exports.sparkEncode = exports.exchangeEncode = exports.morphoAaveV2Encode = exports.compoundV3Encode = exports.compoundV2Encode = exports.aaveV3Encode = exports.aaveV2Encode = exports.chickenBondsEncode = exports.liquityEncode = exports.makerEncode = void 0;
30
- const decimal_js_1 = __importDefault(require("decimal.js"));
31
27
  const tokens_1 = require("@defisaver/tokens");
32
28
  const enums_1 = require("../types/enums");
33
29
  const constants_1 = require("../constants");
@@ -60,16 +56,6 @@ exports.makerEncode = {
60
56
  const isBundle = false;
61
57
  return [strategyOrBundleId, isBundle, triggerData, subData];
62
58
  },
63
- leverageManagement(vaultId, triggerRepayRatio, triggerBoostRatio, targetBoostRatio, targetRepayRatio, boostEnabled) {
64
- return [
65
- vaultId,
66
- new decimal_js_1.default(triggerRepayRatio).mul(1e16).toString(),
67
- new decimal_js_1.default(triggerBoostRatio).mul(1e16).toString(),
68
- new decimal_js_1.default(targetBoostRatio).mul(1e16).toString(),
69
- new decimal_js_1.default(targetRepayRatio).mul(1e16).toString(),
70
- boostEnabled,
71
- ];
72
- },
73
59
  leverageManagementWithoutSubProxy(vaultId, triggerRatio, targetRatio, ratioState, isBoost, daiAddr) {
74
60
  const bundleId = isBoost ? enums_1.Bundles.MainnetIds.MAKER_BOOST : enums_1.Bundles.MainnetIds.MAKER_REPAY;
75
61
  const triggerData = triggerService.makerRatioTrigger.encode(vaultId, triggerRatio, ratioState);
@@ -107,15 +93,6 @@ exports.liquityEncode = {
107
93
  const isBundle = true;
108
94
  return [strategyId, isBundle, triggerData, subData];
109
95
  },
110
- leverageManagement(triggerRepayRatio, triggerBoostRatio, targetBoostRatio, targetRepayRatio, boostEnabled) {
111
- return [
112
- new decimal_js_1.default(triggerRepayRatio).mul(1e16).toString(),
113
- new decimal_js_1.default(triggerBoostRatio).mul(1e16).toString(),
114
- new decimal_js_1.default(targetBoostRatio).mul(1e16).toString(),
115
- new decimal_js_1.default(targetRepayRatio).mul(1e16).toString(),
116
- boostEnabled,
117
- ];
118
- },
119
96
  leverageManagementWithoutSubProxy(strategyOrBundleId, user, ratioState, targetRatio, triggerRatio) {
120
97
  const isBundle = true;
121
98
  const subData = subDataService.liquityLeverageManagementSubDataWithoutSubProxy.encode(targetRatio, ratioState);
@@ -153,9 +130,6 @@ exports.chickenBondsEncode = {
153
130
  },
154
131
  };
155
132
  exports.aaveV2Encode = {
156
- leverageManagement(triggerRepayRatio, triggerBoostRatio, targetBoostRatio, targetRepayRatio, boostEnabled) {
157
- return subDataService.aaveV2LeverageManagementSubData.encode(triggerRepayRatio, triggerBoostRatio, targetBoostRatio, targetRepayRatio, boostEnabled);
158
- },
159
133
  leverageManagementWithoutSubProxy(strategyOrBundleId, market, user, ratioState, targetRatio, triggerRatio) {
160
134
  const isBundle = true;
161
135
  const subData = subDataService.aaveV2LeverageManagementSubDataWithoutSubProxy.encode(market, targetRatio, ratioState);
@@ -164,19 +138,6 @@ exports.aaveV2Encode = {
164
138
  },
165
139
  };
166
140
  exports.aaveV3Encode = {
167
- leverageManagement(triggerRepayRatio, triggerBoostRatio, targetBoostRatio, targetRepayRatio, boostEnabled) {
168
- let subInput = '0x';
169
- subInput = subInput.concat(new decimal_js_1.default(triggerRepayRatio).mul(1e16).toHex().slice(2)
170
- .padStart(32, '0'));
171
- subInput = subInput.concat(new decimal_js_1.default(triggerBoostRatio).mul(1e16).toHex().slice(2)
172
- .padStart(32, '0'));
173
- subInput = subInput.concat(new decimal_js_1.default(targetBoostRatio).mul(1e16).toHex().slice(2)
174
- .padStart(32, '0'));
175
- subInput = subInput.concat(new decimal_js_1.default(targetRepayRatio).mul(1e16).toHex().slice(2)
176
- .padStart(32, '0'));
177
- subInput = subInput.concat(boostEnabled ? '01' : '00');
178
- return subInput;
179
- },
180
141
  closeToAsset(strategyOrBundleId, isBundle = true, triggerData, subData) {
181
142
  const { collAsset, collAssetId, debtAsset, debtAssetId, } = subData;
182
143
  const subDataEncoded = subDataService.aaveV3QuotePriceSubData.encode(collAsset, collAssetId, debtAsset, debtAssetId);
@@ -225,9 +186,6 @@ exports.aaveV3Encode = {
225
186
  },
226
187
  };
227
188
  exports.compoundV2Encode = {
228
- leverageManagement(triggerRepayRatio, triggerBoostRatio, targetBoostRatio, targetRepayRatio, boostEnabled) {
229
- return subDataService.compoundV2LeverageManagementSubData.encode(triggerRepayRatio, triggerBoostRatio, targetBoostRatio, targetRepayRatio, boostEnabled);
230
- },
231
189
  leverageManagementWithoutSubProxy(strategyOrBundleId, user, ratioState, targetRatio, triggerRatio) {
232
190
  const isBundle = true;
233
191
  const subData = subDataService.compoundV2LeverageManagementSubDataWithoutSubProxy.encode(targetRatio, ratioState);
@@ -236,9 +194,6 @@ exports.compoundV2Encode = {
236
194
  },
237
195
  };
238
196
  exports.compoundV3Encode = {
239
- leverageManagement(market, baseToken, triggerRepayRatio, triggerBoostRatio, targetBoostRatio, targetRepayRatio, boostEnabled, isEOA) {
240
- return subDataService.compoundV3LeverageManagementSubData.encode(market, baseToken, triggerRepayRatio, triggerBoostRatio, targetBoostRatio, targetRepayRatio, boostEnabled, isEOA);
241
- },
242
197
  leverageManagementWithoutSubProxy(strategyOrBundleId, market, baseToken, user, ratioState, targetRatio, triggerRatio) {
243
198
  const isBundle = true;
244
199
  const subData = subDataService.compoundV3LeverageManagementSubDataWithoutSubProxy.encode(market, baseToken, targetRatio, ratioState);
@@ -273,9 +228,6 @@ exports.exchangeEncode = {
273
228
  const strategyId = constants_1.STRATEGY_IDS[network].EXCHANGE_DCA;
274
229
  return [strategyId, false, triggerData, subData];
275
230
  },
276
- limitOrder(fromToken, toToken, amount, targetPrice, goodUntil, orderType) {
277
- return subDataService.exchangeLimitOrderSubData.encode(fromToken, toToken, amount, targetPrice, goodUntil, orderType);
278
- },
279
231
  limitOrderWithoutSubProxy(fromToken, toToken, amount, targetPrice, goodUntil, orderType, fromTokenDecimals, toTokenDecimals, network) {
280
232
  (0, utils_1.requireAddresses)([fromToken, toToken]);
281
233
  const subData = subDataService.exchangeLimitOrderSubDataWithoutSubProxy.encode(fromToken, toToken, amount);
@@ -285,19 +237,6 @@ exports.exchangeEncode = {
285
237
  },
286
238
  };
287
239
  exports.sparkEncode = {
288
- leverageManagement(triggerRepayRatio, triggerBoostRatio, targetBoostRatio, targetRepayRatio, boostEnabled) {
289
- let subInput = '0x';
290
- subInput = subInput.concat(new decimal_js_1.default(triggerRepayRatio).mul(1e16).toHex().slice(2)
291
- .padStart(32, '0'));
292
- subInput = subInput.concat(new decimal_js_1.default(triggerBoostRatio).mul(1e16).toHex().slice(2)
293
- .padStart(32, '0'));
294
- subInput = subInput.concat(new decimal_js_1.default(targetBoostRatio).mul(1e16).toHex().slice(2)
295
- .padStart(32, '0'));
296
- subInput = subInput.concat(new decimal_js_1.default(targetRepayRatio).mul(1e16).toHex().slice(2)
297
- .padStart(32, '0'));
298
- subInput = subInput.concat(boostEnabled ? '01' : '00');
299
- return subInput;
300
- },
301
240
  leverageManagementOnPrice(strategyOrBundleId, isBundle = true, triggerData, subData) {
302
241
  const { collAsset, collAssetId, debtAsset, debtAssetId, marketAddr, targetRatio, } = subData;
303
242
  const subDataEncoded = subDataService.sparkLeverageManagementOnPriceSubData.encode(collAsset, collAssetId, debtAsset, debtAssetId, marketAddr, targetRatio);
@@ -124,28 +124,6 @@ describe('Feature: strategySubService.ts', () => {
124
124
  });
125
125
  });
126
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
127
  describe('leverageManagementWithoutSubProxy()', () => {
150
128
  const examples = [
151
129
  // Repay scenario (isBoost=false, RatioState.UNDER)
@@ -245,27 +223,6 @@ describe('Feature: strategySubService.ts', () => {
245
223
  });
246
224
  });
247
225
  });
248
- describe('leverageManagement()', () => {
249
- const examples = [
250
- [
251
- [
252
- new decimal_js_1.default('210').mul(1e16).toString(),
253
- new decimal_js_1.default('290').mul(1e16).toString(),
254
- new decimal_js_1.default('240').mul(1e16).toString(),
255
- new decimal_js_1.default('240').mul(1e16).toString(),
256
- false,
257
- ],
258
- [
259
- '210', '290', '240', '240', false,
260
- ]
261
- ]
262
- ];
263
- examples.forEach(([expected, actual]) => {
264
- it(`Given ${actual} should return expected value: ${JSON.stringify(expected)}`, () => {
265
- (0, chai_1.expect)(strategySubService_1.liquityEncode.leverageManagement(...actual)).to.eql(expected);
266
- });
267
- });
268
- });
269
226
  describe('paybackFromChickenBondStrategySub()', () => {
270
227
  const examples = [
271
228
  [
@@ -352,43 +309,7 @@ describe('Feature: strategySubService.ts', () => {
352
309
  });
353
310
  });
354
311
  });
355
- describe('When testing strategySubService.aaveV2Encode', () => {
356
- describe('leverageManagement()', () => {
357
- const examples = [
358
- [
359
- [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],
360
- [160, 220, 180, 190, true]
361
- ],
362
- [
363
- [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],
364
- [160, 200, 180, 190, false]
365
- ],
366
- ];
367
- examples.forEach(([expected, actual]) => {
368
- it(`Given ${actual} should return expected value: ${JSON.stringify(expected)}`, () => {
369
- (0, chai_1.expect)(strategySubService_1.aaveV2Encode.leverageManagement(...actual)).to.eql(expected);
370
- });
371
- });
372
- });
373
- });
374
312
  describe('When testing strategySubService.aaveV3Encode', () => {
375
- describe('leverageManagement()', () => {
376
- const examples = [
377
- [
378
- '0x000000000000000016345785d8a0000000000000000000001e87f85809dc0000000000000000000018fae27693b4000000000000000000001a5e27eef13e000001',
379
- [160, 220, 180, 190, true]
380
- ],
381
- [
382
- '0x000000000000000016345785d8a0000000000000000000001bc16d674ec80000000000000000000018fae27693b4000000000000000000001a5e27eef13e000000',
383
- [160, 200, 180, 190, false]
384
- ],
385
- ];
386
- examples.forEach(([expected, actual]) => {
387
- it(`Given ${actual} should return expected value: ${JSON.stringify(expected)}`, () => {
388
- (0, chai_1.expect)(strategySubService_1.aaveV3Encode.leverageManagement(...actual)).to.eql(expected);
389
- });
390
- });
391
- });
392
313
  describe('closeToAsset()', () => {
393
314
  const examples = [
394
315
  [
@@ -955,69 +876,7 @@ describe('Feature: strategySubService.ts', () => {
955
876
  });
956
877
  });
957
878
  });
958
- describe('When testing strategySubService.compoundV2Encode', () => {
959
- describe('leverageManagement()', () => {
960
- const examples = [
961
- [
962
- [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],
963
- [160, 220, 180, 190, true]
964
- ],
965
- [
966
- [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],
967
- [160, 200, 180, 190, false]
968
- ],
969
- ];
970
- examples.forEach(([expected, actual]) => {
971
- it(`Given ${actual} should return expected value: ${JSON.stringify(expected)}`, () => {
972
- (0, chai_1.expect)(strategySubService_1.compoundV2Encode.leverageManagement(...actual)).to.eql(expected);
973
- });
974
- });
975
- });
976
- });
977
879
  describe('When testing strategySubService.compoundV3Encode', () => {
978
- describe('leverageManagement()', () => {
979
- const examples = [
980
- [
981
- [
982
- web3Utils.toChecksumAddress('0x1C0F620155e85491f8D35440eb17538Ca5c55212'),
983
- web3Utils.toChecksumAddress((0, tokens_1.getAssetInfo)('USDC', enums_1.ChainId.Ethereum).address),
984
- new decimal_js_1.default(160).mul(1e16).toString(),
985
- new decimal_js_1.default(220).mul(1e16).toString(),
986
- new decimal_js_1.default(180).mul(1e16).toString(),
987
- new decimal_js_1.default(190).mul(1e16).toString(),
988
- true, false,
989
- ],
990
- [
991
- web3Utils.toChecksumAddress('0x1C0F620155e85491f8D35440eb17538Ca5c55212'),
992
- web3Utils.toChecksumAddress((0, tokens_1.getAssetInfo)('USDC', enums_1.ChainId.Ethereum).address),
993
- 160, 220, 180, 190,
994
- true, false,
995
- ]
996
- ],
997
- [
998
- [
999
- web3Utils.toChecksumAddress('0xaC0F620155e85491f8D35440eb17538Ca5c55212'),
1000
- web3Utils.toChecksumAddress((0, tokens_1.getAssetInfo)('WETH', enums_1.ChainId.Ethereum).address),
1001
- new decimal_js_1.default(160).mul(1e16).toString(),
1002
- new decimal_js_1.default(210).mul(1e16).toString(),
1003
- new decimal_js_1.default(180).mul(1e16).toString(),
1004
- new decimal_js_1.default(190).mul(1e16).toString(),
1005
- false, true,
1006
- ],
1007
- [
1008
- web3Utils.toChecksumAddress('0xaC0F620155e85491f8D35440eb17538Ca5c55212'),
1009
- web3Utils.toChecksumAddress((0, tokens_1.getAssetInfo)('WETH', enums_1.ChainId.Ethereum).address),
1010
- 160, 210, 180, 190,
1011
- false, true,
1012
- ]
1013
- ],
1014
- ];
1015
- examples.forEach(([expected, actual]) => {
1016
- it(`Given ${actual} should return expected value: ${JSON.stringify(expected)}`, () => {
1017
- (0, chai_1.expect)(strategySubService_1.compoundV3Encode.leverageManagement(...actual)).to.eql(expected);
1018
- });
1019
- });
1020
- });
1021
880
  describe('leverageManagementOnPrice()', () => {
1022
881
  const examples = [
1023
882
  [
@@ -1192,51 +1051,6 @@ describe('Feature: strategySubService.ts', () => {
1192
1051
  });
1193
1052
  });
1194
1053
  });
1195
- describe('limitOrder()', () => {
1196
- const examples = [
1197
- [
1198
- [
1199
- web3Utils.toChecksumAddress((0, tokens_1.getAssetInfo)('WETH', enums_1.ChainId.Ethereum).address),
1200
- web3Utils.toChecksumAddress((0, tokens_1.getAssetInfo)('DAI', enums_1.ChainId.Ethereum).address),
1201
- '2131',
1202
- '0.53123',
1203
- '1696590921159',
1204
- `${enums_1.OrderType.STOP_LOSS}`
1205
- ],
1206
- [
1207
- web3Utils.toChecksumAddress((0, tokens_1.getAssetInfo)('WETH', enums_1.ChainId.Ethereum).address),
1208
- web3Utils.toChecksumAddress((0, tokens_1.getAssetInfo)('DAI', enums_1.ChainId.Ethereum).address),
1209
- '2131',
1210
- '0.53123',
1211
- 1696590921159,
1212
- enums_1.OrderType.STOP_LOSS
1213
- ]
1214
- ],
1215
- [
1216
- [
1217
- web3Utils.toChecksumAddress((0, tokens_1.getAssetInfo)('LINK', enums_1.ChainId.Arbitrum).address),
1218
- web3Utils.toChecksumAddress((0, tokens_1.getAssetInfo)('USDC', enums_1.ChainId.Arbitrum).address),
1219
- '2131',
1220
- '0.43123',
1221
- '1646590921159',
1222
- `${enums_1.OrderType.TAKE_PROFIT}`
1223
- ],
1224
- [
1225
- web3Utils.toChecksumAddress((0, tokens_1.getAssetInfo)('LINK', enums_1.ChainId.Arbitrum).address),
1226
- web3Utils.toChecksumAddress((0, tokens_1.getAssetInfo)('USDC', enums_1.ChainId.Arbitrum).address),
1227
- '2131',
1228
- '0.43123',
1229
- 1646590921159,
1230
- enums_1.OrderType.TAKE_PROFIT
1231
- ]
1232
- ],
1233
- ];
1234
- examples.forEach(([expected, actual]) => {
1235
- it(`Given ${actual} should return expected value: ${JSON.stringify(expected)}`, () => {
1236
- (0, chai_1.expect)(strategySubService_1.exchangeEncode.limitOrder(...actual)).to.eql(expected);
1237
- });
1238
- });
1239
- });
1240
1054
  });
1241
1055
  describe('When testing strategySubService.crvUSDEncode', () => {
1242
1056
  describe('leverageManagement()', () => {
@@ -1451,23 +1265,6 @@ describe('Feature: strategySubService.ts', () => {
1451
1265
  });
1452
1266
  });
1453
1267
  describe('When testing strategySubService.sparkEncode', () => {
1454
- describe('leverageManagement()', () => {
1455
- const examples = [
1456
- [
1457
- '0x0000000000000000136dcc951d8c00000000000000000000214e8348c4f0000000000000000000001d24b2dfac52000000000000000000001a5e27eef13e000001',
1458
- [140, 240, 210, 190, true]
1459
- ],
1460
- [
1461
- '0x0000000000000000130337bdce49000000000000000000001988fe4052b800000000000000000000281b57b028e1000000000000000000002223acf76376000000',
1462
- [137, 184, 289, 246, false]
1463
- ]
1464
- ];
1465
- examples.forEach(([expected, actual]) => {
1466
- it(`Given ${actual} should return expected value: ${JSON.stringify(expected)}`, () => {
1467
- (0, chai_1.expect)(strategySubService_1.sparkEncode.leverageManagement(...actual)).to.eql(expected);
1468
- });
1469
- });
1470
- });
1471
1268
  describe('leverageManagementOnPrice()', () => {
1472
1269
  const examples = [
1473
1270
  [
@@ -863,6 +863,7 @@ function parseMorphoBlueLeverageManagementOnPrice(position, parseData) {
863
863
  debtAsset: subData.loanToken,
864
864
  price: triggerData.price,
865
865
  ratio: subData.targetRatio,
866
+ ratioState: triggerData.priceState,
866
867
  };
867
868
  return _position;
868
869
  }
@@ -5,14 +5,12 @@ export declare const makerEncode: {
5
5
  repayFromSavings(bundleId: StrategyOrBundleIds, vaultId: number, triggerRepayRatio: number, targetRepayRatio: number, isBundle?: boolean, chainId?: ChainId, daiAddr?: EthereumAddress, mcdCdpManagerAddr?: EthereumAddress): (boolean | string[] | Strategies.MainnetIds | Strategies.OptimismIds | Strategies.ArbitrumIds | Strategies.BaseIds | Bundles.MainnetIds | Bundles.OptimismIds | Bundles.ArbitrumIds | Bundles.BaseIds)[];
6
6
  closeOnPrice(vaultId: number, ratioState: RatioState, price: string, closeToAssetAddr: EthereumAddress, chainlinkCollAddress: EthereumAddress, chainId?: ChainId, daiAddr?: EthereumAddress, mcdCdpManagerAddr?: EthereumAddress): (boolean | string[] | Strategies.MainnetIds)[];
7
7
  trailingStop(vaultId: number, triggerPercentage: number, closeToAssetAddr: EthereumAddress, chainlinkCollAddress: EthereumAddress, roundId: number, chainId?: ChainId, daiAddr?: EthereumAddress, mcdCdpManagerAddr?: EthereumAddress): (boolean | string[] | Strategies.MainnetIds)[];
8
- leverageManagement(vaultId: number, triggerRepayRatio: string, triggerBoostRatio: string, targetBoostRatio: string, targetRepayRatio: string, boostEnabled: boolean): (string | number | boolean)[];
9
8
  leverageManagementWithoutSubProxy(vaultId: number, triggerRatio: number, targetRatio: number, ratioState: RatioState, isBoost: boolean, daiAddr?: EthereumAddress): (boolean | string[] | Bundles.MainnetIds)[];
10
9
  };
11
10
  export declare const liquityEncode: {
12
11
  closeOnPrice(priceOverOrUnder: RatioState, price: string, closeToAssetAddr: EthereumAddress, chainlinkCollAddress: EthereumAddress, chainId?: ChainId, collAddr?: EthereumAddress, debtAddr?: EthereumAddress): (boolean | string[] | Strategies.MainnetIds)[];
13
12
  trailingStop(triggerPercentage: number, closeToAssetAddr: EthereumAddress, chainlinkCollAddress: EthereumAddress, roundId: number, chainId?: ChainId, collAddr?: EthereumAddress, debtAddr?: EthereumAddress): (boolean | string[] | Strategies.MainnetIds)[];
14
13
  paybackFromChickenBondStrategySub(proxyAddress: EthereumAddress, ratio: number, sourceId: string, sourceType: number, ratioState?: RatioState): (boolean | string[] | Bundles.MainnetIds)[];
15
- leverageManagement(triggerRepayRatio: string, triggerBoostRatio: string, targetBoostRatio: string, targetRepayRatio: string, boostEnabled: boolean): (string | boolean)[];
16
14
  leverageManagementWithoutSubProxy(strategyOrBundleId: number, user: EthereumAddress, ratioState: RatioState, targetRatio: number, triggerRatio: number): (number | boolean | string[])[];
17
15
  dsrPayback(proxyAddress: EthereumAddress, triggerRatio: number, targetRatio: number): (boolean | string[] | Strategies.MainnetIds)[];
18
16
  dsrSupply(proxyAddress: EthereumAddress, triggerRatio: number, targetRatio: number): (boolean | string[] | Strategies.MainnetIds)[];
@@ -22,11 +20,9 @@ export declare const chickenBondsEncode: {
22
20
  rebond(bondId: number): string[];
23
21
  };
24
22
  export declare const aaveV2Encode: {
25
- leverageManagement(triggerRepayRatio: number, triggerBoostRatio: number, targetBoostRatio: number, targetRepayRatio: number, boostEnabled: boolean): string[];
26
23
  leverageManagementWithoutSubProxy(strategyOrBundleId: number, market: EthereumAddress, user: EthereumAddress, ratioState: RatioState, targetRatio: number, triggerRatio: number): (number | boolean | string[])[];
27
24
  };
28
25
  export declare const aaveV3Encode: {
29
- leverageManagement(triggerRepayRatio: number, triggerBoostRatio: number, targetBoostRatio: number, targetRepayRatio: number, boostEnabled: boolean): string;
30
26
  closeToAsset(strategyOrBundleId: number, isBundle: boolean | undefined, triggerData: {
31
27
  baseTokenAddress: EthereumAddress;
32
28
  quoteTokenAddress: EthereumAddress;
@@ -69,11 +65,9 @@ export declare const aaveV3Encode: {
69
65
  collateralSwitch(strategyOrBundleId: number, fromAsset: EthereumAddress, fromAssetId: number, toAsset: EthereumAddress, toAssetId: number, marketAddr: EthereumAddress, amountToSwitch: string, baseTokenAddress: EthereumAddress, quoteTokenAddress: EthereumAddress, price: number, state: RatioState): (number | boolean | string[])[];
70
66
  };
71
67
  export declare const compoundV2Encode: {
72
- leverageManagement(triggerRepayRatio: number, triggerBoostRatio: number, targetBoostRatio: number, targetRepayRatio: number, boostEnabled: boolean): string[];
73
68
  leverageManagementWithoutSubProxy(strategyOrBundleId: number, user: EthereumAddress, ratioState: RatioState, targetRatio: number, triggerRatio: number): (number | boolean | string[])[];
74
69
  };
75
70
  export declare const compoundV3Encode: {
76
- leverageManagement(market: EthereumAddress, baseToken: EthereumAddress, triggerRepayRatio: number, triggerBoostRatio: number, targetBoostRatio: number, targetRepayRatio: number, boostEnabled: boolean, isEOA: boolean): string[];
77
71
  leverageManagementWithoutSubProxy(strategyOrBundleId: number, market: EthereumAddress, baseToken: EthereumAddress, user: EthereumAddress, ratioState: RatioState, targetRatio: number, triggerRatio: number): (number | boolean | string[])[];
78
72
  leverageManagementOnPrice(strategyOrBundleId: number, market: EthereumAddress, collToken: EthereumAddress, baseToken: EthereumAddress, targetRatio: number, price: number, priceState: RatioState, ratioState: RatioState, user: EthereumAddress): (number | boolean | string[])[];
79
73
  closeOnPrice(strategyOrBundleId: number, market: EthereumAddress, collToken: EthereumAddress, baseToken: EthereumAddress, stopLossPrice: number | undefined, stopLossType: CloseToAssetType | undefined, takeProfitPrice: number | undefined, takeProfitType: CloseToAssetType | undefined, user: EthereumAddress): (number | boolean | string[])[];
@@ -83,11 +77,9 @@ export declare const morphoAaveV2Encode: {
83
77
  };
84
78
  export declare const exchangeEncode: {
85
79
  dca(fromToken: EthereumAddress, toToken: EthereumAddress, amount: string, timestamp: number, interval: number, network: ChainId): (boolean | string[] | Strategies.MainnetIds | Strategies.OptimismIds | Strategies.ArbitrumIds | Strategies.BaseIds)[];
86
- limitOrder(fromToken: EthereumAddress, toToken: EthereumAddress, amount: string, targetPrice: string, goodUntil: string | number, orderType: OrderType): string[];
87
80
  limitOrderWithoutSubProxy(fromToken: EthereumAddress, toToken: EthereumAddress, amount: string, targetPrice: string, goodUntil: string | number, orderType: OrderType, fromTokenDecimals: number, toTokenDecimals: number, network: ChainId): (boolean | string[] | Strategies.MainnetIds | Strategies.OptimismIds | Strategies.ArbitrumIds | Strategies.BaseIds)[];
88
81
  };
89
82
  export declare const sparkEncode: {
90
- leverageManagement(triggerRepayRatio: number, triggerBoostRatio: number, targetBoostRatio: number, targetRepayRatio: number, boostEnabled: boolean): string;
91
83
  leverageManagementOnPrice(strategyOrBundleId: number, isBundle: boolean | undefined, triggerData: {
92
84
  baseTokenAddr: EthereumAddress;
93
85
  quoteTokenAddr: EthereumAddress;
@@ -1,4 +1,3 @@
1
- import Dec from 'decimal.js';
2
1
  import { getAssetInfo } from '@defisaver/tokens';
3
2
  import { CloseToAssetType, Bundles, ChainId, RatioState, Strategies, } from '../types/enums';
4
3
  import { STRATEGY_IDS } from '../constants';
@@ -31,16 +30,6 @@ export const makerEncode = {
31
30
  const isBundle = false;
32
31
  return [strategyOrBundleId, isBundle, triggerData, subData];
33
32
  },
34
- leverageManagement(vaultId, triggerRepayRatio, triggerBoostRatio, targetBoostRatio, targetRepayRatio, boostEnabled) {
35
- return [
36
- vaultId,
37
- new Dec(triggerRepayRatio).mul(1e16).toString(),
38
- new Dec(triggerBoostRatio).mul(1e16).toString(),
39
- new Dec(targetBoostRatio).mul(1e16).toString(),
40
- new Dec(targetRepayRatio).mul(1e16).toString(),
41
- boostEnabled,
42
- ];
43
- },
44
33
  leverageManagementWithoutSubProxy(vaultId, triggerRatio, targetRatio, ratioState, isBoost, daiAddr) {
45
34
  const bundleId = isBoost ? Bundles.MainnetIds.MAKER_BOOST : Bundles.MainnetIds.MAKER_REPAY;
46
35
  const triggerData = triggerService.makerRatioTrigger.encode(vaultId, triggerRatio, ratioState);
@@ -78,15 +67,6 @@ export const liquityEncode = {
78
67
  const isBundle = true;
79
68
  return [strategyId, isBundle, triggerData, subData];
80
69
  },
81
- leverageManagement(triggerRepayRatio, triggerBoostRatio, targetBoostRatio, targetRepayRatio, boostEnabled) {
82
- return [
83
- new Dec(triggerRepayRatio).mul(1e16).toString(),
84
- new Dec(triggerBoostRatio).mul(1e16).toString(),
85
- new Dec(targetBoostRatio).mul(1e16).toString(),
86
- new Dec(targetRepayRatio).mul(1e16).toString(),
87
- boostEnabled,
88
- ];
89
- },
90
70
  leverageManagementWithoutSubProxy(strategyOrBundleId, user, ratioState, targetRatio, triggerRatio) {
91
71
  const isBundle = true;
92
72
  const subData = subDataService.liquityLeverageManagementSubDataWithoutSubProxy.encode(targetRatio, ratioState);
@@ -124,9 +104,6 @@ export const chickenBondsEncode = {
124
104
  },
125
105
  };
126
106
  export const aaveV2Encode = {
127
- leverageManagement(triggerRepayRatio, triggerBoostRatio, targetBoostRatio, targetRepayRatio, boostEnabled) {
128
- return subDataService.aaveV2LeverageManagementSubData.encode(triggerRepayRatio, triggerBoostRatio, targetBoostRatio, targetRepayRatio, boostEnabled);
129
- },
130
107
  leverageManagementWithoutSubProxy(strategyOrBundleId, market, user, ratioState, targetRatio, triggerRatio) {
131
108
  const isBundle = true;
132
109
  const subData = subDataService.aaveV2LeverageManagementSubDataWithoutSubProxy.encode(market, targetRatio, ratioState);
@@ -135,19 +112,6 @@ export const aaveV2Encode = {
135
112
  },
136
113
  };
137
114
  export const aaveV3Encode = {
138
- leverageManagement(triggerRepayRatio, triggerBoostRatio, targetBoostRatio, targetRepayRatio, boostEnabled) {
139
- let subInput = '0x';
140
- subInput = subInput.concat(new Dec(triggerRepayRatio).mul(1e16).toHex().slice(2)
141
- .padStart(32, '0'));
142
- subInput = subInput.concat(new Dec(triggerBoostRatio).mul(1e16).toHex().slice(2)
143
- .padStart(32, '0'));
144
- subInput = subInput.concat(new Dec(targetBoostRatio).mul(1e16).toHex().slice(2)
145
- .padStart(32, '0'));
146
- subInput = subInput.concat(new Dec(targetRepayRatio).mul(1e16).toHex().slice(2)
147
- .padStart(32, '0'));
148
- subInput = subInput.concat(boostEnabled ? '01' : '00');
149
- return subInput;
150
- },
151
115
  closeToAsset(strategyOrBundleId, isBundle = true, triggerData, subData) {
152
116
  const { collAsset, collAssetId, debtAsset, debtAssetId, } = subData;
153
117
  const subDataEncoded = subDataService.aaveV3QuotePriceSubData.encode(collAsset, collAssetId, debtAsset, debtAssetId);
@@ -196,9 +160,6 @@ export const aaveV3Encode = {
196
160
  },
197
161
  };
198
162
  export const compoundV2Encode = {
199
- leverageManagement(triggerRepayRatio, triggerBoostRatio, targetBoostRatio, targetRepayRatio, boostEnabled) {
200
- return subDataService.compoundV2LeverageManagementSubData.encode(triggerRepayRatio, triggerBoostRatio, targetBoostRatio, targetRepayRatio, boostEnabled);
201
- },
202
163
  leverageManagementWithoutSubProxy(strategyOrBundleId, user, ratioState, targetRatio, triggerRatio) {
203
164
  const isBundle = true;
204
165
  const subData = subDataService.compoundV2LeverageManagementSubDataWithoutSubProxy.encode(targetRatio, ratioState);
@@ -207,9 +168,6 @@ export const compoundV2Encode = {
207
168
  },
208
169
  };
209
170
  export const compoundV3Encode = {
210
- leverageManagement(market, baseToken, triggerRepayRatio, triggerBoostRatio, targetBoostRatio, targetRepayRatio, boostEnabled, isEOA) {
211
- return subDataService.compoundV3LeverageManagementSubData.encode(market, baseToken, triggerRepayRatio, triggerBoostRatio, targetBoostRatio, targetRepayRatio, boostEnabled, isEOA);
212
- },
213
171
  leverageManagementWithoutSubProxy(strategyOrBundleId, market, baseToken, user, ratioState, targetRatio, triggerRatio) {
214
172
  const isBundle = true;
215
173
  const subData = subDataService.compoundV3LeverageManagementSubDataWithoutSubProxy.encode(market, baseToken, targetRatio, ratioState);
@@ -244,9 +202,6 @@ export const exchangeEncode = {
244
202
  const strategyId = STRATEGY_IDS[network].EXCHANGE_DCA;
245
203
  return [strategyId, false, triggerData, subData];
246
204
  },
247
- limitOrder(fromToken, toToken, amount, targetPrice, goodUntil, orderType) {
248
- return subDataService.exchangeLimitOrderSubData.encode(fromToken, toToken, amount, targetPrice, goodUntil, orderType);
249
- },
250
205
  limitOrderWithoutSubProxy(fromToken, toToken, amount, targetPrice, goodUntil, orderType, fromTokenDecimals, toTokenDecimals, network) {
251
206
  requireAddresses([fromToken, toToken]);
252
207
  const subData = subDataService.exchangeLimitOrderSubDataWithoutSubProxy.encode(fromToken, toToken, amount);
@@ -256,19 +211,6 @@ export const exchangeEncode = {
256
211
  },
257
212
  };
258
213
  export const sparkEncode = {
259
- leverageManagement(triggerRepayRatio, triggerBoostRatio, targetBoostRatio, targetRepayRatio, boostEnabled) {
260
- let subInput = '0x';
261
- subInput = subInput.concat(new Dec(triggerRepayRatio).mul(1e16).toHex().slice(2)
262
- .padStart(32, '0'));
263
- subInput = subInput.concat(new Dec(triggerBoostRatio).mul(1e16).toHex().slice(2)
264
- .padStart(32, '0'));
265
- subInput = subInput.concat(new Dec(targetBoostRatio).mul(1e16).toHex().slice(2)
266
- .padStart(32, '0'));
267
- subInput = subInput.concat(new Dec(targetRepayRatio).mul(1e16).toHex().slice(2)
268
- .padStart(32, '0'));
269
- subInput = subInput.concat(boostEnabled ? '01' : '00');
270
- return subInput;
271
- },
272
214
  leverageManagementOnPrice(strategyOrBundleId, isBundle = true, triggerData, subData) {
273
215
  const { collAsset, collAssetId, debtAsset, debtAssetId, marketAddr, targetRatio, } = subData;
274
216
  const subDataEncoded = subDataService.sparkLeverageManagementOnPriceSubData.encode(collAsset, collAssetId, debtAsset, debtAssetId, marketAddr, targetRatio);