@defisaver/automation-sdk 2.0.5 → 2.0.8

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 (50) hide show
  1. package/.env.dev +5 -0
  2. package/.tests.sh +3 -0
  3. package/README.md +3 -1
  4. package/esm/automation/private/LegacyProtocol.test.d.ts +1 -0
  5. package/esm/automation/private/LegacyProtocol.test.js +25 -0
  6. package/esm/automation/private/Protocol.test.d.ts +1 -0
  7. package/esm/automation/private/Protocol.test.js +25 -0
  8. package/esm/automation/private/StrategiesAutomation.js +1 -1
  9. package/esm/constants/index.js +15 -0
  10. package/esm/services/contractService.d.ts +3 -2
  11. package/esm/services/contractService.js +7 -1
  12. package/esm/services/ethereumService.test.d.ts +1 -0
  13. package/esm/services/ethereumService.test.js +241 -0
  14. package/esm/services/strategiesService.js +40 -0
  15. package/esm/services/strategiesService.test.d.ts +1 -0
  16. package/esm/services/strategiesService.test.js +108 -0
  17. package/esm/services/strategySubService.d.ts +17 -3
  18. package/esm/services/strategySubService.js +17 -6
  19. package/esm/services/strategySubService.test.d.ts +1 -0
  20. package/esm/services/strategySubService.test.js +692 -0
  21. package/esm/services/subDataService.d.ts +8 -1
  22. package/esm/services/subDataService.js +23 -14
  23. package/esm/services/subDataService.test.d.ts +1 -0
  24. package/esm/services/subDataService.test.js +993 -0
  25. package/esm/services/triggerService.d.ts +17 -0
  26. package/esm/services/triggerService.js +42 -1
  27. package/esm/services/triggerService.test.js +119 -17
  28. package/esm/types/enums.d.ts +10 -2
  29. package/esm/types/enums.js +8 -0
  30. package/esm/types/index.d.ts +19 -2
  31. package/package.json +3 -3
  32. package/src/automation/private/LegacyProtocol.test.ts +24 -0
  33. package/src/automation/private/Protocol.test.ts +24 -0
  34. package/src/automation/private/StrategiesAutomation.ts +1 -1
  35. package/src/constants/index.ts +15 -0
  36. package/src/services/contractService.ts +17 -4
  37. package/src/services/ethereumService.test.ts +256 -0
  38. package/src/services/ethereumService.ts +2 -1
  39. package/src/services/strategiesService.test.ts +103 -0
  40. package/src/services/strategiesService.ts +66 -3
  41. package/src/services/strategySubService.test.ts +835 -0
  42. package/src/services/strategySubService.ts +50 -15
  43. package/src/services/subDataService.test.ts +1063 -0
  44. package/src/services/subDataService.ts +29 -14
  45. package/src/services/triggerService.test.ts +133 -20
  46. package/src/services/triggerService.ts +55 -0
  47. package/src/services/utils.test.ts +1 -1
  48. package/src/types/enums.ts +8 -0
  49. package/src/types/index.ts +27 -3
  50. package/umd/index.js +282 -115
@@ -1,11 +1,14 @@
1
1
  import Dec from 'decimal.js';
2
2
  import { getAssetInfo } from '@defisaver/tokens';
3
3
 
4
+ import type { OrderType } from '../types/enums';
4
5
  import {
5
6
  Bundles, ChainId, RatioState, Strategies,
6
7
  } from '../types/enums';
7
8
  import type { EthereumAddress, StrategyOrBundleIds } from '../types';
8
9
 
10
+ import { STRATEGY_IDS } from '../constants';
11
+
9
12
  import * as subDataService from './subDataService';
10
13
  import * as triggerService from './triggerService';
11
14
  import { compareAddresses, requireAddress, requireAddresses } from './utils';
@@ -73,12 +76,12 @@ export const makerEncode = {
73
76
  return [strategyOrBundleId, isBundle, triggerData, subData];
74
77
  },
75
78
  leverageManagement(
76
- vaultId:number,
77
- triggerRepayRatio:string,
78
- triggerBoostRatio:string,
79
- targetBoostRatio:string,
80
- targetRepayRatio:string,
81
- boostEnabled:boolean,
79
+ vaultId: number,
80
+ triggerRepayRatio: string,
81
+ triggerBoostRatio: string,
82
+ targetBoostRatio: string,
83
+ targetRepayRatio: string,
84
+ boostEnabled: boolean,
82
85
  ) {
83
86
  return [
84
87
  vaultId,
@@ -192,6 +195,21 @@ export const liquityEncode = {
192
195
 
193
196
  const isBundle = false;
194
197
 
198
+ return [strategyOrBundleId, isBundle, triggerData, subData];
199
+ },
200
+ debtInFrontRepay(
201
+ proxyAddress: EthereumAddress,
202
+ debtInFrontMin: string,
203
+ targetRatioIncrease: number,
204
+ ) {
205
+ requireAddress(proxyAddress);
206
+ const subData = subDataService.liquityDebtInFrontRepaySubData.encode(targetRatioIncrease);
207
+ const triggerData = triggerService.liquityDebtInFrontWithLimitTrigger.encode(proxyAddress, debtInFrontMin);
208
+
209
+ const strategyOrBundleId = Strategies.MainnetIds.LIQUITY_DEBT_IN_FRONT_REPAY;
210
+
211
+ const isBundle = false;
212
+
195
213
  return [strategyOrBundleId, isBundle, triggerData, subData];
196
214
  },
197
215
  };
@@ -256,6 +274,28 @@ export const aaveV3Encode = {
256
274
  } = triggerData;
257
275
  const triggerDataEncoded = triggerService.aaveV3QuotePriceTrigger.encode(baseTokenAddress, quoteTokenAddress, price, ratioState);
258
276
 
277
+ return [strategyOrBundleId, isBundle, triggerDataEncoded, subDataEncoded];
278
+ },
279
+ closeToAssetWithMaximumGasPrice(
280
+ strategyOrBundleId: number,
281
+ isBundle: boolean = true,
282
+ triggerData: {
283
+ baseTokenAddress: EthereumAddress, quoteTokenAddress: EthereumAddress, price: number, ratioState: RatioState, maximumGasPrice: number
284
+ },
285
+ subData: {
286
+ collAsset: EthereumAddress, collAssetId: number, debtAsset: EthereumAddress, debtAssetId: number,
287
+ },
288
+ ) {
289
+ const {
290
+ collAsset, collAssetId, debtAsset, debtAssetId,
291
+ } = subData;
292
+ const subDataEncoded = subDataService.aaveV3QuotePriceSubData.encode(collAsset, collAssetId, debtAsset, debtAssetId);
293
+
294
+ const {
295
+ baseTokenAddress, quoteTokenAddress, price, maximumGasPrice, ratioState,
296
+ } = triggerData;
297
+ const triggerDataEncoded = triggerService.aaveV3QuotePriceWithMaximumGasPriceTrigger.encode(baseTokenAddress, quoteTokenAddress, price, ratioState, maximumGasPrice);
298
+
259
299
  return [strategyOrBundleId, isBundle, triggerDataEncoded, subDataEncoded];
260
300
  },
261
301
  };
@@ -306,18 +346,13 @@ export const exchangeEncode = {
306
346
  amount: string,
307
347
  timestamp: number,
308
348
  interval: number,
309
- network: number,
349
+ network: ChainId,
310
350
  ) {
311
351
  requireAddresses([fromToken, toToken]);
312
352
  const subData = subDataService.exchangeDcaSubData.encode(fromToken, toToken, amount, interval);
313
353
  const triggerData = triggerService.exchangeTimestampTrigger.encode(timestamp, interval);
314
- const selectedNetwork = network === 1
315
- ? 'MainnetIds'
316
- : network === 10
317
- ? 'OptimismIds'
318
- : 'ArbitrumIds';
319
354
 
320
- const strategyId = Strategies[selectedNetwork].EXCHANGE_DCA;
355
+ const strategyId = STRATEGY_IDS[network].EXCHANGE_DCA;
321
356
 
322
357
  return [strategyId, false, triggerData, subData];
323
358
  },
@@ -326,8 +361,8 @@ export const exchangeEncode = {
326
361
  toToken: EthereumAddress,
327
362
  amount: string,
328
363
  targetPrice: string,
329
- goodUntil: string,
330
- orderType: number,
364
+ goodUntil: string | number,
365
+ orderType: OrderType,
331
366
  ) {
332
367
  return subDataService.exchangeLimitOrderSubData.encode(fromToken, toToken, amount, targetPrice, goodUntil, orderType);
333
368
  },