@defisaver/automation-sdk 3.1.10 → 3.1.14-spark-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.
Files changed (72) hide show
  1. package/cjs/automation/private/StrategiesAutomation.d.ts +5 -3
  2. package/cjs/automation/private/StrategiesAutomation.js +27 -10
  3. package/cjs/automation/private/StrategiesAutomation.test.js +25 -0
  4. package/cjs/constants/index.d.ts +1 -0
  5. package/cjs/constants/index.js +352 -11
  6. package/cjs/index.d.ts +2 -1
  7. package/cjs/index.js +1 -1
  8. package/cjs/services/ethereumService.js +21 -14
  9. package/cjs/services/ethereumService.test.js +3 -0
  10. package/cjs/services/strategiesService.js +329 -54
  11. package/cjs/services/strategiesService.test.js +1 -0
  12. package/cjs/services/strategySubService.d.ts +24 -5
  13. package/cjs/services/strategySubService.js +116 -10
  14. package/cjs/services/strategySubService.test.js +1049 -173
  15. package/cjs/services/subDataService.d.ts +361 -88
  16. package/cjs/services/subDataService.js +799 -249
  17. package/cjs/services/subDataService.test.js +1287 -142
  18. package/cjs/services/triggerService.d.ts +100 -9
  19. package/cjs/services/triggerService.js +188 -19
  20. package/cjs/services/triggerService.test.js +437 -46
  21. package/cjs/services/utils.d.ts +1 -1
  22. package/cjs/services/utils.js +10 -2
  23. package/cjs/services/utils.test.js +0 -77
  24. package/cjs/types/enums.d.ts +88 -12
  25. package/cjs/types/enums.js +78 -2
  26. package/cjs/types/index.d.ts +59 -1
  27. package/esm/automation/private/StrategiesAutomation.d.ts +5 -3
  28. package/esm/automation/private/StrategiesAutomation.js +27 -10
  29. package/esm/automation/private/StrategiesAutomation.test.js +25 -0
  30. package/esm/constants/index.d.ts +1 -0
  31. package/esm/constants/index.js +351 -10
  32. package/esm/index.d.ts +2 -1
  33. package/esm/index.js +2 -2
  34. package/esm/services/ethereumService.js +21 -14
  35. package/esm/services/ethereumService.test.js +3 -0
  36. package/esm/services/strategiesService.js +330 -55
  37. package/esm/services/strategiesService.test.js +1 -0
  38. package/esm/services/strategySubService.d.ts +24 -5
  39. package/esm/services/strategySubService.js +115 -9
  40. package/esm/services/strategySubService.test.js +1052 -176
  41. package/esm/services/subDataService.d.ts +361 -88
  42. package/esm/services/subDataService.js +799 -249
  43. package/esm/services/subDataService.test.js +1288 -143
  44. package/esm/services/triggerService.d.ts +100 -9
  45. package/esm/services/triggerService.js +187 -18
  46. package/esm/services/triggerService.test.js +438 -47
  47. package/esm/services/utils.d.ts +1 -1
  48. package/esm/services/utils.js +10 -2
  49. package/esm/services/utils.test.js +1 -52
  50. package/esm/types/enums.d.ts +88 -12
  51. package/esm/types/enums.js +78 -2
  52. package/esm/types/index.d.ts +59 -1
  53. package/package.json +4 -5
  54. package/src/automation/private/StrategiesAutomation.test.ts +40 -0
  55. package/src/automation/private/StrategiesAutomation.ts +38 -15
  56. package/src/constants/index.ts +353 -11
  57. package/src/index.ts +4 -2
  58. package/src/services/ethereumService.test.ts +3 -0
  59. package/src/services/ethereumService.ts +23 -16
  60. package/src/services/strategiesService.test.ts +1 -0
  61. package/src/services/strategiesService.ts +387 -72
  62. package/src/services/strategySubService.test.ts +1330 -316
  63. package/src/services/strategySubService.ts +365 -12
  64. package/src/services/subDataService.test.ts +1413 -170
  65. package/src/services/subDataService.ts +1148 -431
  66. package/src/services/triggerService.test.ts +482 -52
  67. package/src/services/triggerService.ts +272 -27
  68. package/src/services/utils.test.ts +0 -59
  69. package/src/services/utils.ts +15 -4
  70. package/src/types/enums.ts +78 -2
  71. package/src/types/index.ts +74 -1
  72. package/umd/index.js +0 -34219
@@ -90,6 +90,21 @@ export declare const liquityDebtInFrontWithLimitTrigger: {
90
90
  debtInFrontMin: string;
91
91
  };
92
92
  };
93
+ export declare const liquityV2DebtInFrontTrigger: {
94
+ encode(market: EthereumAddress, troveId: string, debtInFrontMin: string): string[];
95
+ decode(triggerData: string[]): {
96
+ market: EthereumAddress;
97
+ troveId: string;
98
+ debtInFrontMin: string;
99
+ };
100
+ };
101
+ export declare const liquityV2AdjustTimeTrigger: {
102
+ encode(market: EthereumAddress, troveId: string): string[];
103
+ decode(triggerData: string[]): {
104
+ market: EthereumAddress;
105
+ troveId: string;
106
+ };
107
+ };
93
108
  export declare const aaveV2RatioTrigger: {
94
109
  encode(owner: EthereumAddress, market: EthereumAddress, ratioPercentage: number, ratioState: RatioState): string[];
95
110
  decode(triggerData: string[]): {
@@ -138,15 +153,6 @@ export declare const sparkRatioTrigger: {
138
153
  ratioState: number;
139
154
  };
140
155
  };
141
- export declare const sparkQuotePriceTrigger: {
142
- encode(baseTokenAddress: EthereumAddress, quoteTokenAddress: EthereumAddress, price: number, ratioState: RatioState): string[];
143
- decode(triggerData: string[]): {
144
- baseTokenAddress: EthereumAddress;
145
- quoteTokenAddress: EthereumAddress;
146
- price: string;
147
- ratioState: RatioState;
148
- };
149
- };
150
156
  export declare const curveUsdBorrowRateTrigger: {
151
157
  encode(market: EthereumAddress, targetRate: string, rateState: RatioState): string[];
152
158
  decode(triggerData: string[]): {
@@ -232,3 +238,88 @@ export declare const fluidRatioTrigger: {
232
238
  ratioState: number;
233
239
  };
234
240
  };
241
+ export declare const compoundV3PriceTrigger: {
242
+ encode(market: EthereumAddress, collToken: EthereumAddress, user: EthereumAddress, price: number, priceState: RatioState): string[];
243
+ decode(triggerData: string[]): {
244
+ market: string;
245
+ collToken: string;
246
+ user: string;
247
+ price: string;
248
+ priceState: number;
249
+ };
250
+ };
251
+ export declare const compoundV3PriceRangeTrigger: {
252
+ encode(market: EthereumAddress, collToken: EthereumAddress, lowerPrice: number, upperPrice: number): string[];
253
+ decode(triggerData: string[]): {
254
+ market: string;
255
+ collToken: string;
256
+ lowerPrice: string;
257
+ upperPrice: string;
258
+ };
259
+ };
260
+ export declare const aaveV3QuotePriceRangeTrigger: {
261
+ encode(collToken: EthereumAddress, debtToken: EthereumAddress, lowerPrice: number, upperPrice: number): string[];
262
+ decode(triggerData: string[]): {
263
+ collToken: string;
264
+ debtToken: string;
265
+ lowerPrice: string;
266
+ upperPrice: string;
267
+ };
268
+ };
269
+ export declare const sparkQuotePriceRangeTrigger: {
270
+ encode(collToken: EthereumAddress, debtToken: EthereumAddress, lowerPrice: number, upperPrice: number): string[];
271
+ decode(triggerData: string[]): {
272
+ collToken: string;
273
+ debtToken: string;
274
+ lowerPrice: string;
275
+ upperPrice: string;
276
+ };
277
+ };
278
+ export declare const morphoBluePriceRangeTrigger: {
279
+ encode(oracle: EthereumAddress, collateralToken: EthereumAddress, loanToken: EthereumAddress, lowerPrice: number, upperPrice: number): string[];
280
+ decode(triggerData: string[]): {
281
+ oracle: string;
282
+ collateralToken: string;
283
+ loanToken: string;
284
+ lowerPrice: string;
285
+ upperPrice: string;
286
+ };
287
+ };
288
+ export declare const sparkQuotePriceTrigger: {
289
+ encode(baseTokenAddr: EthereumAddress, quoteTokenAddr: EthereumAddress, price: number, ratioState: RatioState): string[];
290
+ decode(triggerData: string[]): {
291
+ baseTokenAddr: string;
292
+ quoteTokenAddr: string;
293
+ price: string;
294
+ ratioState: number;
295
+ };
296
+ };
297
+ export declare const aaveV4RatioTrigger: {
298
+ encode(owner: EthereumAddress, spoke: EthereumAddress, ratioPercentage: number, ratioState: RatioState): string[];
299
+ decode(triggerData: string[]): {
300
+ owner: string;
301
+ spoke: string;
302
+ ratio: number;
303
+ ratioState: number;
304
+ };
305
+ };
306
+ export declare const aaveV4QuotePriceTrigger: {
307
+ encode(spoke: EthereumAddress, baseTokenId: number, quoteTokenId: number, price: string, ratioState: RatioState): string[];
308
+ decode(triggerData: string[]): {
309
+ spoke: string;
310
+ baseTokenId: number;
311
+ quoteTokenId: number;
312
+ price: string;
313
+ ratioState: number;
314
+ };
315
+ };
316
+ export declare const aaveV4QuotePriceRangeTrigger: {
317
+ encode(spoke: EthereumAddress, baseTokenId: number, quoteTokenId: number, lowerPrice: string, upperPrice: string): string[];
318
+ decode(triggerData: string[]): {
319
+ spoke: string;
320
+ baseTokenId: number;
321
+ quoteTokenId: number;
322
+ lowerPrice: string;
323
+ upperPrice: string;
324
+ };
325
+ };
@@ -150,6 +150,32 @@ export const liquityDebtInFrontTrigger = {
150
150
  },
151
151
  };
152
152
  export const liquityDebtInFrontWithLimitTrigger = liquityDebtInFrontTrigger;
153
+ export const liquityV2DebtInFrontTrigger = {
154
+ encode(market, troveId, debtInFrontMin) {
155
+ const debtInFrontMinWei = web3Utils.toWei(new Dec(debtInFrontMin).toString(), 'ether');
156
+ return [AbiCoder.encodeParameters(['address', 'uint256', 'uint256'], [market, troveId, debtInFrontMinWei])];
157
+ },
158
+ decode(triggerData) {
159
+ const decodedData = AbiCoder.decodeParameters(['address', 'uint256', 'uint256'], triggerData[0]);
160
+ return {
161
+ market: decodedData[0],
162
+ troveId: decodedData[1],
163
+ debtInFrontMin: new Dec(decodedData[2]).div(Math.pow(10, 18)).toString(),
164
+ };
165
+ },
166
+ };
167
+ export const liquityV2AdjustTimeTrigger = {
168
+ encode(market, troveId) {
169
+ return [AbiCoder.encodeParameters(['address', 'uint256'], [market, troveId])];
170
+ },
171
+ decode(triggerData) {
172
+ const decodedData = AbiCoder.decodeParameters(['address', 'uint256'], triggerData[0]);
173
+ return {
174
+ market: decodedData[0],
175
+ troveId: decodedData[1],
176
+ };
177
+ },
178
+ };
153
179
  export const aaveV2RatioTrigger = {
154
180
  encode(owner, market, ratioPercentage, ratioState) {
155
181
  const ratioWei = ratioPercentageToWei(ratioPercentage);
@@ -235,24 +261,6 @@ export const sparkRatioTrigger = {
235
261
  };
236
262
  },
237
263
  };
238
- export const sparkQuotePriceTrigger = {
239
- encode(baseTokenAddress, quoteTokenAddress, price, ratioState) {
240
- // Price is always in 8 decimals
241
- const _price = new Dec(price.toString()).mul(Math.pow(10, 8)).floor().toString();
242
- return [AbiCoder.encodeParameters(['address', 'address', 'uint256', 'uint8'], [baseTokenAddress, quoteTokenAddress, _price, ratioState])];
243
- },
244
- decode(triggerData) {
245
- const decodedData = AbiCoder.decodeParameters(['address', 'address', 'uint256', 'uint8'], triggerData[0]);
246
- // Price is always in 8 decimals
247
- const price = new Dec(decodedData[2]).div(Math.pow(10, 8)).toDP(8).toString();
248
- return {
249
- price,
250
- baseTokenAddress: decodedData[0],
251
- quoteTokenAddress: decodedData[1],
252
- ratioState: +decodedData[3],
253
- };
254
- },
255
- };
256
264
  export const curveUsdBorrowRateTrigger = {
257
265
  encode(market, targetRate, rateState) {
258
266
  // the form is x = (e**(rate*365*86400))-1 where x*100 is number in %
@@ -416,3 +424,164 @@ export const fluidRatioTrigger = {
416
424
  };
417
425
  },
418
426
  };
427
+ export const compoundV3PriceTrigger = {
428
+ encode(market, collToken, user, price, priceState) {
429
+ const _price = new Dec(price.toString()).mul(1e8).floor().toString();
430
+ return [
431
+ AbiCoder.encodeParameters(['address', 'address', 'address', 'uint256', 'uint8'], [market, collToken, user, _price, priceState]),
432
+ ];
433
+ },
434
+ decode(triggerData) {
435
+ const decodedData = AbiCoder.decodeParameters(['address', 'address', 'address', 'uint256', 'uint8'], triggerData[0]);
436
+ return {
437
+ market: decodedData[0],
438
+ collToken: decodedData[1],
439
+ user: decodedData[2],
440
+ price: new Dec(decodedData[3]).div(1e8).toString(),
441
+ priceState: Number(decodedData[4]),
442
+ };
443
+ },
444
+ };
445
+ export const compoundV3PriceRangeTrigger = {
446
+ encode(market, collToken, lowerPrice, upperPrice) {
447
+ const lowerPriceFormatted = new Dec(lowerPrice).mul(1e8).floor().toString();
448
+ const upperPriceFormatted = new Dec(upperPrice).mul(1e8).floor().toString();
449
+ return [
450
+ AbiCoder.encodeParameters(['address', 'address', 'uint256', 'uint256'], [market, collToken, lowerPriceFormatted, upperPriceFormatted]),
451
+ ];
452
+ },
453
+ decode(triggerData) {
454
+ const decodedData = AbiCoder.decodeParameters(['address', 'address', 'uint256', 'uint256'], triggerData[0]);
455
+ return {
456
+ market: decodedData[0],
457
+ collToken: decodedData[1],
458
+ lowerPrice: new Dec(decodedData[2]).div(1e8).toString(),
459
+ upperPrice: new Dec(decodedData[3]).div(1e8).toString(),
460
+ };
461
+ },
462
+ };
463
+ export const aaveV3QuotePriceRangeTrigger = {
464
+ encode(collToken, debtToken, lowerPrice, upperPrice) {
465
+ // Price is scaled to 1e8
466
+ const lowerPriceFormatted = new Dec(lowerPrice).mul(1e8).floor().toString();
467
+ const upperPriceFormatted = new Dec(upperPrice).mul(1e8).floor().toString();
468
+ return [
469
+ AbiCoder.encodeParameters(['address', 'address', 'uint256', 'uint256'], [collToken, debtToken, lowerPriceFormatted, upperPriceFormatted]),
470
+ ];
471
+ },
472
+ decode(triggerData) {
473
+ const decodedData = AbiCoder.decodeParameters(['address', 'address', 'uint256', 'uint256'], triggerData[0]);
474
+ return {
475
+ collToken: decodedData[0],
476
+ debtToken: decodedData[1],
477
+ lowerPrice: new Dec(decodedData[2]).div(1e8).toString(),
478
+ upperPrice: new Dec(decodedData[3]).div(1e8).toString(),
479
+ };
480
+ },
481
+ };
482
+ export const sparkQuotePriceRangeTrigger = {
483
+ encode(collToken, debtToken, lowerPrice, upperPrice) {
484
+ // Price is scaled to 1e8
485
+ const lowerPriceFormatted = new Dec(lowerPrice).mul(1e8).floor().toString();
486
+ const upperPriceFormatted = new Dec(upperPrice).mul(1e8).floor().toString();
487
+ return [
488
+ AbiCoder.encodeParameters(['address', 'address', 'uint256', 'uint256'], [collToken, debtToken, lowerPriceFormatted, upperPriceFormatted]),
489
+ ];
490
+ },
491
+ decode(triggerData) {
492
+ const decodedData = AbiCoder.decodeParameters(['address', 'address', 'uint256', 'uint256'], triggerData[0]);
493
+ return {
494
+ collToken: decodedData[0],
495
+ debtToken: decodedData[1],
496
+ lowerPrice: new Dec(decodedData[2]).div(1e8).toString(),
497
+ upperPrice: new Dec(decodedData[3]).div(1e8).toString(),
498
+ };
499
+ },
500
+ };
501
+ export const morphoBluePriceRangeTrigger = {
502
+ encode(oracle, collateralToken, loanToken, lowerPrice, upperPrice) {
503
+ // Price is scaled to 1e8
504
+ const lowerPriceFormatted = new Dec(lowerPrice).mul(1e8).floor().toString();
505
+ const upperPriceFormatted = new Dec(upperPrice).mul(1e8).floor().toString();
506
+ return [
507
+ AbiCoder.encodeParameters(['address', 'address', 'address', 'uint256', 'uint256'], [oracle, collateralToken, loanToken, lowerPriceFormatted, upperPriceFormatted]),
508
+ ];
509
+ },
510
+ decode(triggerData) {
511
+ const decodedData = AbiCoder.decodeParameters(['address', 'address', 'address', 'uint256', 'uint256'], triggerData[0]);
512
+ return {
513
+ oracle: decodedData[0],
514
+ collateralToken: decodedData[1],
515
+ loanToken: decodedData[2],
516
+ lowerPrice: new Dec(decodedData[3]).div(1e8).toString(),
517
+ upperPrice: new Dec(decodedData[4]).div(1e8).toString(),
518
+ };
519
+ },
520
+ };
521
+ export const sparkQuotePriceTrigger = {
522
+ encode(baseTokenAddr, quoteTokenAddr, price, ratioState) {
523
+ const _price = new Dec(price.toString()).mul(1e8).floor().toString();
524
+ return [AbiCoder.encodeParameters(['address', 'address', 'uint256', 'uint8'], [baseTokenAddr, quoteTokenAddr, _price, ratioState])];
525
+ },
526
+ decode(triggerData) {
527
+ const decodedData = AbiCoder.decodeParameters(['address', 'address', 'uint256', 'uint8'], triggerData[0]);
528
+ return {
529
+ baseTokenAddr: decodedData[0],
530
+ quoteTokenAddr: decodedData[1],
531
+ price: new Dec(decodedData[2]).div(1e8).toString(),
532
+ ratioState: Number(decodedData[3]),
533
+ };
534
+ },
535
+ };
536
+ export const aaveV4RatioTrigger = {
537
+ encode(owner, spoke, ratioPercentage, ratioState) {
538
+ const ratioWei = ratioPercentageToWei(ratioPercentage);
539
+ return [AbiCoder.encodeParameters(['address', 'address', 'uint256', 'uint8'], [owner, spoke, ratioWei, ratioState])];
540
+ },
541
+ decode(triggerData) {
542
+ const decodedData = AbiCoder.decodeParameters(['address', 'address', 'uint256', 'uint8'], triggerData[0]);
543
+ return {
544
+ owner: decodedData[0],
545
+ spoke: decodedData[1],
546
+ ratio: weiToRatioPercentage(decodedData[2]),
547
+ ratioState: Number(decodedData[3]),
548
+ };
549
+ },
550
+ };
551
+ export const aaveV4QuotePriceTrigger = {
552
+ encode(spoke, baseTokenId, quoteTokenId, price, ratioState) {
553
+ // Price is intentionally scaled to 1e18 for higher precision.
554
+ const _price = new Dec(price).mul(1e18).floor().toString();
555
+ return [AbiCoder.encodeParameters(['address', 'uint256', 'uint256', 'uint256', 'uint8'], [spoke, baseTokenId, quoteTokenId, _price, ratioState])];
556
+ },
557
+ decode(triggerData) {
558
+ const decodedData = AbiCoder.decodeParameters(['address', 'uint256', 'uint256', 'uint256', 'uint8'], triggerData[0]);
559
+ return {
560
+ spoke: decodedData[0],
561
+ baseTokenId: Number(decodedData[1]),
562
+ quoteTokenId: Number(decodedData[2]),
563
+ price: new Dec(decodedData[3]).div(1e18).toString(),
564
+ ratioState: Number(decodedData[4]),
565
+ };
566
+ },
567
+ };
568
+ export const aaveV4QuotePriceRangeTrigger = {
569
+ encode(spoke, baseTokenId, quoteTokenId, lowerPrice, upperPrice) {
570
+ // Price is intentionally scaled to 1e18 for higher precision.
571
+ const lowerPriceFormatted = new Dec(lowerPrice).mul(1e18).floor().toString();
572
+ const upperPriceFormatted = new Dec(upperPrice).mul(1e18).floor().toString();
573
+ return [
574
+ AbiCoder.encodeParameters(['address', 'uint256', 'uint256', 'uint256', 'uint256'], [spoke, baseTokenId, quoteTokenId, lowerPriceFormatted, upperPriceFormatted]),
575
+ ];
576
+ },
577
+ decode(triggerData) {
578
+ const decodedData = AbiCoder.decodeParameters(['address', 'uint256', 'uint256', 'uint256', 'uint256'], triggerData[0]);
579
+ return {
580
+ spoke: decodedData[0],
581
+ baseTokenId: Number(decodedData[1]),
582
+ quoteTokenId: Number(decodedData[2]),
583
+ lowerPrice: new Dec(decodedData[3]).div(1e18).toString(),
584
+ upperPrice: new Dec(decodedData[4]).div(1e18).toString(),
585
+ };
586
+ },
587
+ };