@defisaver/automation-sdk 3.1.4 → 3.1.6-fluid-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 (44) hide show
  1. package/cjs/automation/private/StrategiesAutomation.d.ts +2 -2
  2. package/cjs/automation/public/Strategies.test.d.ts +1 -0
  3. package/cjs/automation/public/Strategies.test.js +61 -0
  4. package/cjs/constants/index.js +45 -0
  5. package/cjs/services/strategiesService.js +155 -0
  6. package/cjs/services/strategySubService.d.ts +10 -1
  7. package/cjs/services/strategySubService.js +35 -1
  8. package/cjs/services/subDataService.d.ts +55 -1
  9. package/cjs/services/subDataService.js +174 -1
  10. package/cjs/services/triggerService.d.ts +43 -0
  11. package/cjs/services/triggerService.js +81 -1
  12. package/cjs/services/utils.d.ts +6 -1
  13. package/cjs/services/utils.js +52 -1
  14. package/cjs/types/enums.d.ts +38 -3
  15. package/cjs/types/enums.js +40 -1
  16. package/cjs/types/index.d.ts +16 -3
  17. package/esm/automation/private/StrategiesAutomation.d.ts +2 -2
  18. package/esm/automation/public/Strategies.test.d.ts +1 -0
  19. package/esm/automation/public/Strategies.test.js +56 -0
  20. package/esm/constants/index.js +45 -0
  21. package/esm/services/strategiesService.js +153 -1
  22. package/esm/services/strategySubService.d.ts +10 -1
  23. package/esm/services/strategySubService.js +36 -2
  24. package/esm/services/subDataService.d.ts +55 -1
  25. package/esm/services/subDataService.js +174 -1
  26. package/esm/services/triggerService.d.ts +43 -0
  27. package/esm/services/triggerService.js +80 -0
  28. package/esm/services/utils.d.ts +6 -1
  29. package/esm/services/utils.js +50 -1
  30. package/esm/types/enums.d.ts +38 -3
  31. package/esm/types/enums.js +39 -0
  32. package/esm/types/index.d.ts +16 -3
  33. package/package.json +3 -3
  34. package/src/automation/private/StrategiesAutomation.ts +2 -2
  35. package/src/automation/public/Strategies.test.ts +49 -0
  36. package/src/constants/index.ts +45 -0
  37. package/src/services/strategiesService.ts +199 -1
  38. package/src/services/strategySubService.ts +97 -1
  39. package/src/services/subDataService.ts +243 -2
  40. package/src/services/triggerService.ts +125 -0
  41. package/src/services/utils.ts +60 -1
  42. package/src/types/enums.ts +39 -0
  43. package/src/types/index.ts +20 -2
  44. package/umd/index.js +34219 -0
@@ -6,12 +6,12 @@ import type { ChainId } from '../../types/enums';
6
6
  import Automation from './Automation';
7
7
  interface IStrategiesAutomation extends Interfaces.Automation {
8
8
  chainId: ChainId;
9
- providerFork: Web3;
9
+ providerFork?: Web3;
10
10
  }
11
11
  export default class StrategiesAutomation extends Automation {
12
12
  protected chainId: ChainId;
13
13
  protected web3: Web3;
14
- protected web3Fork: Web3;
14
+ protected web3Fork?: Web3;
15
15
  protected subStorageContract: Contract.WithMeta<SubStorage>;
16
16
  protected subStorageContractFork: Contract.WithMeta<SubStorage> | null;
17
17
  constructor(args: IStrategiesAutomation);
@@ -0,0 +1 @@
1
+ import '../../configuration';
@@ -0,0 +1,61 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ const web3_1 = __importDefault(require("web3"));
16
+ require("../../configuration");
17
+ const EthereumStrategies_1 = __importDefault(require("./EthereumStrategies"));
18
+ const ArbitrumStrategies_1 = __importDefault(require("./ArbitrumStrategies"));
19
+ const OptimismStrategies_1 = __importDefault(require("./OptimismStrategies"));
20
+ const BaseStrategies_1 = __importDefault(require("./BaseStrategies"));
21
+ require('dotenv').config({ path: '.env' });
22
+ const Web3_1 = new web3_1.default(process.env.RPC_1);
23
+ const Web3_42161 = new web3_1.default(process.env.RPC_42161);
24
+ const Web3_10 = new web3_1.default(process.env.RPC_10);
25
+ const Web3_8453 = new web3_1.default(process.env.RPC_8453);
26
+ describe('Feature: StrategiesAutomation.ts', () => {
27
+ describe('Fetching subscriptions', () => {
28
+ it('can fetch subscriptions on Mainnet', function () {
29
+ return __awaiter(this, void 0, void 0, function* () {
30
+ this.timeout(120000);
31
+ const ethStrategies = new EthereumStrategies_1.default({ provider: Web3_1 });
32
+ const subs = yield ethStrategies.getSubscriptions({ mergeSubs: true });
33
+ console.log(subs.length);
34
+ });
35
+ });
36
+ it('can fetch subscriptions on Arbitrum', function () {
37
+ return __awaiter(this, void 0, void 0, function* () {
38
+ this.timeout(120000);
39
+ const arbiStrategies = new ArbitrumStrategies_1.default({ provider: Web3_42161 });
40
+ const subs = yield arbiStrategies.getSubscriptions({ mergeSubs: true });
41
+ console.log(subs.length);
42
+ });
43
+ });
44
+ it('can fetch subscriptions on Optimism', function () {
45
+ return __awaiter(this, void 0, void 0, function* () {
46
+ this.timeout(120000);
47
+ const optimismStrategies = new OptimismStrategies_1.default({ provider: Web3_10 });
48
+ const subs = yield optimismStrategies.getSubscriptions({ mergeSubs: true });
49
+ console.log(subs.length);
50
+ });
51
+ });
52
+ it('can fetch subscriptions on Base', function () {
53
+ return __awaiter(this, void 0, void 0, function* () {
54
+ this.timeout(120000);
55
+ const baseStrategies = new BaseStrategies_1.default({ provider: Web3_8453 });
56
+ const subs = yield baseStrategies.getSubscriptions({ mergeSubs: true });
57
+ console.log(subs.length);
58
+ });
59
+ });
60
+ });
61
+ });
@@ -353,6 +353,46 @@ exports.MAINNET_BUNDLES_INFO = {
353
353
  strategyId: enums_1.Strategies.Identifiers.RepayOnPrice,
354
354
  protocol: exports.PROTOCOLS.AaveV3,
355
355
  },
356
+ [enums_1.Bundles.MainnetIds.LIQUITY_V2_REPAY]: {
357
+ strategyOrBundleId: enums_1.Bundles.MainnetIds.LIQUITY_V2_REPAY,
358
+ strategyId: enums_1.Strategies.Identifiers.Repay,
359
+ protocol: exports.PROTOCOLS.LiquityV2,
360
+ },
361
+ [enums_1.Bundles.MainnetIds.LIQUITY_V2_BOOST]: {
362
+ strategyOrBundleId: enums_1.Bundles.MainnetIds.LIQUITY_V2_BOOST,
363
+ strategyId: enums_1.Strategies.Identifiers.Boost,
364
+ protocol: exports.PROTOCOLS.LiquityV2,
365
+ },
366
+ [enums_1.Bundles.MainnetIds.LIQUITY_V2_CLOSE]: {
367
+ strategyOrBundleId: enums_1.Bundles.MainnetIds.LIQUITY_V2_CLOSE,
368
+ strategyId: enums_1.Strategies.Identifiers.CloseOnPrice,
369
+ protocol: exports.PROTOCOLS.LiquityV2,
370
+ },
371
+ [enums_1.Bundles.MainnetIds.LIQUITY_V2_REPAY_ON_PRICE]: {
372
+ strategyOrBundleId: enums_1.Bundles.MainnetIds.LIQUITY_V2_REPAY_ON_PRICE,
373
+ strategyId: enums_1.Strategies.Identifiers.OpenOrderFromCollateral,
374
+ protocol: exports.PROTOCOLS.LiquityV2,
375
+ },
376
+ [enums_1.Bundles.MainnetIds.LIQUITY_V2_BOOST_ON_PRICE]: {
377
+ strategyOrBundleId: enums_1.Bundles.MainnetIds.LIQUITY_V2_BOOST_ON_PRICE,
378
+ strategyId: enums_1.Strategies.Identifiers.RepayOnPrice,
379
+ protocol: exports.PROTOCOLS.LiquityV2,
380
+ },
381
+ [enums_1.Bundles.MainnetIds.MORPHO_BLUE_BOOST_ON_PRICE]: {
382
+ strategyOrBundleId: enums_1.Bundles.MainnetIds.MORPHO_BLUE_BOOST_ON_PRICE,
383
+ strategyId: enums_1.Strategies.Identifiers.BoostOnPrice,
384
+ protocol: exports.PROTOCOLS.MorphoBlue,
385
+ },
386
+ [enums_1.Bundles.MainnetIds.FLUID_T1_REPAY]: {
387
+ strategyOrBundleId: enums_1.Bundles.MainnetIds.FLUID_T1_REPAY,
388
+ strategyId: enums_1.Strategies.Identifiers.Repay,
389
+ protocol: exports.PROTOCOLS.FluidT1,
390
+ },
391
+ [enums_1.Bundles.MainnetIds.FLUID_T2_BOOST]: {
392
+ strategyOrBundleId: enums_1.Bundles.MainnetIds.FLUID_T2_BOOST,
393
+ strategyId: enums_1.Strategies.Identifiers.Boost,
394
+ protocol: exports.PROTOCOLS.FluidT1,
395
+ },
356
396
  };
357
397
  exports.OPTIMISM_BUNDLES_INFO = {
358
398
  [enums_1.Bundles.OptimismIds.AAVE_V3_REPAY]: {
@@ -437,6 +477,11 @@ exports.BASE_BUNDLES_INFO = {
437
477
  strategyId: enums_1.Strategies.Identifiers.RepayOnPrice,
438
478
  protocol: exports.PROTOCOLS.AaveV3,
439
479
  },
480
+ [enums_1.Bundles.BaseIds.MORPHO_BLUE_BOOST_ON_PRICE]: {
481
+ strategyOrBundleId: enums_1.Bundles.BaseIds.MORPHO_BLUE_BOOST_ON_PRICE,
482
+ strategyId: enums_1.Strategies.Identifiers.BoostOnPrice,
483
+ protocol: exports.PROTOCOLS.MorphoBlue,
484
+ },
440
485
  };
441
486
  exports.ARBITRUM_BUNDLES_INFO = {
442
487
  [enums_1.Bundles.ArbitrumIds.AAVE_V3_REPAY]: {
@@ -22,15 +22,20 @@ 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
+ };
25
28
  Object.defineProperty(exports, "__esModule", { value: true });
26
29
  exports.parseStrategiesAutomatedPosition = void 0;
27
30
  const tokens_1 = require("@defisaver/tokens");
28
31
  const lodash_1 = require("lodash");
32
+ const web3_1 = __importDefault(require("web3"));
29
33
  const constants_1 = require("../constants");
30
34
  const enums_1 = require("../types/enums");
31
35
  const utils_1 = require("./utils");
32
36
  const subDataService = __importStar(require("./subDataService"));
33
37
  const triggerService = __importStar(require("./triggerService"));
38
+ const web3 = new web3_1.default();
34
39
  const SPARK_MARKET_ADDRESSES = {
35
40
  [enums_1.ChainId.Ethereum]: '0x02C3eA4e34C0cBd694D2adFa2c690EECbC1793eE',
36
41
  };
@@ -429,6 +434,39 @@ function parseLiquityLeverageManagement(position, parseData) {
429
434
  _position.strategy.strategyId = enums_1.Strategies.IdOverrides.LeverageManagement;
430
435
  return _position;
431
436
  }
437
+ function parseLiquityV2LeverageManagement(position, parseData) {
438
+ const _position = (0, lodash_1.cloneDeep)(position);
439
+ const { subStruct, subId, subHash } = parseData.subscriptionEventData;
440
+ const { isEnabled } = parseData.strategiesSubsData;
441
+ const triggerData = triggerService.liquityV2RatioTrigger.decode(subStruct.triggerData);
442
+ const subData = subDataService.liquityV2LeverageManagementSubData.decode(subStruct.subData);
443
+ _position.strategyData.decoded.triggerData = triggerData;
444
+ _position.strategyData.decoded.subData = subData;
445
+ _position.positionId = (0, utils_1.getPositionId)(_position.chainId, _position.protocol.id, _position.owner, triggerData.troveId, triggerData.market);
446
+ const isRepay = _position.strategy.strategyId === enums_1.Strategies.Identifiers.Repay;
447
+ if (isRepay) {
448
+ _position.specific = {
449
+ triggerRepayRatio: triggerData.ratio,
450
+ targetRepayRatio: subData.targetRatio,
451
+ repayEnabled: isEnabled,
452
+ subId1: Number(subId),
453
+ subHashRepay: subHash,
454
+ mergeWithId: enums_1.Strategies.Identifiers.Boost,
455
+ };
456
+ }
457
+ else {
458
+ _position.specific = {
459
+ triggerBoostRatio: triggerData.ratio,
460
+ targetBoostRatio: subData.targetRatio,
461
+ boostEnabled: isEnabled,
462
+ subId2: Number(subId),
463
+ subHashBoost: subHash,
464
+ mergeId: enums_1.Strategies.Identifiers.Boost,
465
+ };
466
+ }
467
+ _position.strategy.strategyId = enums_1.Strategies.IdOverrides.LeverageManagement;
468
+ return _position;
469
+ }
432
470
  function parseSparkLeverageManagement(position, parseData) {
433
471
  const _position = (0, lodash_1.cloneDeep)(position);
434
472
  const { subStruct, subId } = parseData.subscriptionEventData;
@@ -590,6 +628,32 @@ function parseMorphoBlueLeverageManagement(position, parseData) {
590
628
  _position.strategy.strategyId = isEOA ? enums_1.Strategies.IdOverrides.EoaLeverageManagement : enums_1.Strategies.IdOverrides.LeverageManagement;
591
629
  return _position;
592
630
  }
631
+ function parseMorphoBlueLeverageManagementOnPrice(position, parseData) {
632
+ const _position = (0, lodash_1.cloneDeep)(position);
633
+ const { subStruct } = parseData.subscriptionEventData;
634
+ const triggerData = triggerService.morphoBluePriceTrigger.decode(subStruct.triggerData);
635
+ const subData = subDataService.morphoBlueLeverageManagementOnPriceSubData.decode(subStruct.subData);
636
+ _position.strategyData.decoded.triggerData = triggerData;
637
+ _position.strategyData.decoded.subData = subData;
638
+ _position.positionId = (0, utils_1.getPositionId)(_position.chainId, _position.protocol.id, _position.owner, Math.random());
639
+ const marketIdEncodedData = web3.eth.abi.encodeParameters(['address', 'address', 'address', 'address', 'uint256'], [
640
+ subData.loanToken,
641
+ subData.collToken,
642
+ subData.oracle,
643
+ subData.irm,
644
+ subData.lltv,
645
+ ]);
646
+ const marketId = web3.utils.keccak256(marketIdEncodedData);
647
+ _position.specific = {
648
+ subHash: _position.subHash,
649
+ marketId,
650
+ collAsset: subData.collToken,
651
+ debtAsset: subData.loanToken,
652
+ price: triggerData.price,
653
+ ratio: subData.targetRatio,
654
+ };
655
+ return _position;
656
+ }
593
657
  function parseAaveV3LeverageManagementOnPrice(position, parseData) {
594
658
  const _position = (0, lodash_1.cloneDeep)(position);
595
659
  const { subStruct } = parseData.subscriptionEventData;
@@ -611,6 +675,85 @@ function parseAaveV3LeverageManagementOnPrice(position, parseData) {
611
675
  };
612
676
  return _position;
613
677
  }
678
+ function parseLiquityV2CloseOnPrice(position, parseData) {
679
+ const _position = (0, lodash_1.cloneDeep)(position);
680
+ const { subStruct } = parseData.subscriptionEventData;
681
+ const triggerData = triggerService.closePriceTrigger.decode(subStruct.triggerData);
682
+ const subData = subDataService.liquityV2CloseSubData.decode(subStruct.subData);
683
+ _position.strategyData.decoded.triggerData = triggerData;
684
+ _position.strategyData.decoded.subData = subData;
685
+ _position.positionId = (0, utils_1.getPositionId)(_position.chainId, _position.protocol.id, _position.owner, subData.troveId, subData.market);
686
+ const { takeProfitType, stopLossType } = (0, utils_1.getStopLossAndTakeProfitTypeByCloseStrategyType)(+subData.closeType);
687
+ // User can have:
688
+ // - Only TakeProfit
689
+ // - Only StopLoss
690
+ // - Both
691
+ // TODO: see on frontend what specific data we need here because stop-loss and take-profit is one bundle now
692
+ _position.strategy.strategyId = enums_1.Strategies.Identifiers.CloseOnPrice;
693
+ _position.specific = {
694
+ market: subData.market,
695
+ troveId: subData.troveId,
696
+ stopLossPrice: triggerData.lowerPrice,
697
+ takeProfitPrice: triggerData.upperPrice,
698
+ closeToAssetAddr: triggerData.tokenAddr,
699
+ takeProfitType,
700
+ stopLossType,
701
+ };
702
+ return _position;
703
+ }
704
+ function parseLiquityV2LeverageManagementOnPrice(position, parseData) {
705
+ const _position = (0, lodash_1.cloneDeep)(position);
706
+ const { subStruct } = parseData.subscriptionEventData;
707
+ const triggerData = triggerService.liquityV2QuotePriceTrigger.decode(subStruct.triggerData);
708
+ const subData = subDataService.liquityV2LeverageManagementOnPriceSubData.decode(subStruct.subData);
709
+ _position.strategyData.decoded.triggerData = triggerData;
710
+ _position.strategyData.decoded.subData = subData;
711
+ _position.positionId = (0, utils_1.getPositionId)(_position.chainId, _position.protocol.id, _position.owner, Math.random());
712
+ /// @TODO: what does even go here
713
+ /*
714
+ _position.specific = {
715
+ market: subData.market,
716
+ troveId: subData.troveId,
717
+ ratio: subData.targetRatio,
718
+ price: triggerData.price,
719
+ ratioState: triggerData.ratioState,
720
+ };
721
+ */
722
+ return _position;
723
+ }
724
+ function parseFluidT1LeverageManagement(position, parseData) {
725
+ const _position = (0, lodash_1.cloneDeep)(position);
726
+ const { subStruct, subId, subHash } = parseData.subscriptionEventData;
727
+ const { isEnabled } = parseData.strategiesSubsData;
728
+ const triggerData = triggerService.fluidRatioTrigger.decode(subStruct.triggerData);
729
+ const subData = subDataService.fluidLeverageManagementSubData.decode(subStruct.subData);
730
+ _position.strategyData.decoded.triggerData = triggerData;
731
+ _position.strategyData.decoded.subData = subData;
732
+ _position.positionId = (0, utils_1.getPositionId)(_position.chainId, _position.protocol.id, _position.owner, triggerData.nftId, subData.vault);
733
+ const isRepay = _position.strategy.strategyId === enums_1.Strategies.Identifiers.Repay;
734
+ if (isRepay) {
735
+ _position.specific = {
736
+ triggerRepayRatio: triggerData.ratio,
737
+ targetRepayRatio: subData.targetRatio,
738
+ repayEnabled: isEnabled,
739
+ subId1: Number(subId),
740
+ subHashRepay: subHash,
741
+ mergeWithId: enums_1.Strategies.Identifiers.Boost,
742
+ };
743
+ }
744
+ else {
745
+ _position.specific = {
746
+ triggerBoostRatio: triggerData.ratio,
747
+ targetBoostRatio: subData.targetRatio,
748
+ boostEnabled: isEnabled,
749
+ subId2: Number(subId),
750
+ subHashBoost: subHash,
751
+ mergeId: enums_1.Strategies.Identifiers.Boost,
752
+ };
753
+ }
754
+ _position.strategy.strategyId = enums_1.Strategies.IdOverrides.LeverageManagement;
755
+ return _position;
756
+ }
614
757
  const parsingMethodsMapping = {
615
758
  [enums_1.ProtocolIdentifiers.StrategiesAutomation.MakerDAO]: {
616
759
  [enums_1.Strategies.Identifiers.SavingsLiqProtection]: parseMakerSavingsLiqProtection,
@@ -631,6 +774,13 @@ const parsingMethodsMapping = {
631
774
  [enums_1.Strategies.Identifiers.SavingsDsrSupply]: parseLiquitySavingsLiqProtection,
632
775
  [enums_1.Strategies.Identifiers.DebtInFrontRepay]: parseLiquityDebtInFrontRepay,
633
776
  },
777
+ [enums_1.ProtocolIdentifiers.StrategiesAutomation.LiquityV2]: {
778
+ [enums_1.Strategies.Identifiers.Repay]: parseLiquityV2LeverageManagement,
779
+ [enums_1.Strategies.Identifiers.Boost]: parseLiquityV2LeverageManagement,
780
+ [enums_1.Strategies.Identifiers.CloseOnPrice]: parseLiquityV2CloseOnPrice,
781
+ [enums_1.Strategies.Identifiers.OpenOrderFromCollateral]: parseLiquityV2LeverageManagementOnPrice,
782
+ [enums_1.Strategies.Identifiers.RepayOnPrice]: parseLiquityV2LeverageManagementOnPrice,
783
+ },
634
784
  [enums_1.ProtocolIdentifiers.StrategiesAutomation.AaveV2]: {
635
785
  [enums_1.Strategies.Identifiers.Repay]: parseAaveV2LeverageManagement,
636
786
  [enums_1.Strategies.Identifiers.Boost]: parseAaveV2LeverageManagement,
@@ -682,6 +832,11 @@ const parsingMethodsMapping = {
682
832
  [enums_1.Strategies.Identifiers.Boost]: parseMorphoBlueLeverageManagement,
683
833
  [enums_1.Strategies.Identifiers.EoaRepay]: parseMorphoBlueLeverageManagement,
684
834
  [enums_1.Strategies.Identifiers.EoaBoost]: parseMorphoBlueLeverageManagement,
835
+ [enums_1.Strategies.Identifiers.BoostOnPrice]: parseMorphoBlueLeverageManagementOnPrice,
836
+ },
837
+ [enums_1.ProtocolIdentifiers.StrategiesAutomation.FluidT1]: {
838
+ [enums_1.Strategies.Identifiers.Repay]: parseFluidT1LeverageManagement,
839
+ [enums_1.Strategies.Identifiers.Boost]: parseFluidT1LeverageManagement,
685
840
  },
686
841
  };
687
842
  function getParsingMethod(id, strategy) {
@@ -1,5 +1,5 @@
1
1
  import type { OrderType } from '../types/enums';
2
- import { Bundles, ChainId, RatioState, Strategies } from '../types/enums';
2
+ import { CloseToAssetType, Bundles, ChainId, RatioState, Strategies } from '../types/enums';
3
3
  import type { EthereumAddress, StrategyOrBundleIds } from '../types';
4
4
  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)[];
@@ -97,4 +97,13 @@ export declare const crvUSDEncode: {
97
97
  };
98
98
  export declare const morphoBlueEncode: {
99
99
  leverageManagement(marketId: string, loanToken: EthereumAddress, collToken: EthereumAddress, oracle: EthereumAddress, irm: EthereumAddress, lltv: string, ratioState: RatioState, targetRatio: number, triggerRatio: number, user: EthereumAddress, isEOA: boolean, network: ChainId): (boolean | string[] | Bundles.MainnetIds)[] | (boolean | string[] | Bundles.BaseIds)[];
100
+ leverageManagementOnPrice(strategyOrBundleId: number, isBundle: boolean | undefined, loanToken: EthereumAddress, collToken: EthereumAddress, oracle: EthereumAddress, irm: EthereumAddress, lltv: string, user: EthereumAddress, targetRatio: number, price: number, priceState: RatioState): (number | boolean | string[])[];
101
+ };
102
+ export declare const liquityV2Encode: {
103
+ leverageManagement(market: EthereumAddress, troveId: string, collToken: EthereumAddress, boldToken: EthereumAddress, ratioState: RatioState, targetRatio: number, triggerRatio: number, strategyOrBundleId: number): (number | boolean | string[])[];
104
+ closeOnPrice(strategyOrBundleId: number, market: EthereumAddress, troveId: string, collToken: EthereumAddress, boldToken: EthereumAddress, stopLossPrice?: number, stopLossType?: CloseToAssetType, takeProfitPrice?: number, takeProfitType?: CloseToAssetType): (number | boolean | string[])[];
105
+ leverageManagementOnPrice(strategyOrBundleId: number, market: EthereumAddress, price: number, state: RatioState, troveId: string, collToken: EthereumAddress, boldToken: EthereumAddress, targetRatio: number, isRepayOnPrice: boolean): (number | boolean | string[])[];
106
+ };
107
+ export declare const fluidEncode: {
108
+ leverageManagement(nftId: string, vault: EthereumAddress, collToken: EthereumAddress, debtToken: EthereumAddress, ratioState: RatioState, targetRatio: number, triggerRatio: number, strategyOrBundleId: number): (number | boolean | string[])[];
100
109
  };
@@ -26,7 +26,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
26
26
  return (mod && mod.__esModule) ? mod : { "default": mod };
27
27
  };
28
28
  Object.defineProperty(exports, "__esModule", { value: true });
29
- exports.morphoBlueEncode = exports.crvUSDEncode = exports.sparkEncode = exports.exchangeEncode = exports.morphoAaveV2Encode = exports.compoundV3L2Encode = exports.compoundV3Encode = exports.compoundV2Encode = exports.aaveV3Encode = exports.aaveV2Encode = exports.chickenBondsEncode = exports.liquityEncode = exports.makerEncode = void 0;
29
+ exports.fluidEncode = exports.liquityV2Encode = exports.morphoBlueEncode = exports.crvUSDEncode = exports.sparkEncode = exports.exchangeEncode = exports.morphoAaveV2Encode = exports.compoundV3L2Encode = exports.compoundV3Encode = exports.compoundV2Encode = exports.aaveV3Encode = exports.aaveV2Encode = exports.chickenBondsEncode = exports.liquityEncode = exports.makerEncode = void 0;
30
30
  const decimal_js_1 = __importDefault(require("decimal.js"));
31
31
  const tokens_1 = require("@defisaver/tokens");
32
32
  const enums_1 = require("../types/enums");
@@ -264,4 +264,38 @@ exports.morphoBlueEncode = {
264
264
  const isBundle = true;
265
265
  return [strategyOrBundleId, isBundle, triggerData, subData];
266
266
  },
267
+ leverageManagementOnPrice(strategyOrBundleId, isBundle = true, loanToken, collToken, oracle, irm, lltv, user, targetRatio, price, priceState) {
268
+ const subData = subDataService.morphoBlueLeverageManagementOnPriceSubData.encode(loanToken, collToken, oracle, irm, lltv, targetRatio, user);
269
+ const triggerData = triggerService.morphoBluePriceTrigger.encode(oracle, collToken, loanToken, price, priceState);
270
+ return [strategyOrBundleId, isBundle, triggerData, subData];
271
+ },
272
+ };
273
+ exports.liquityV2Encode = {
274
+ leverageManagement(market, troveId, collToken, boldToken, ratioState, targetRatio, triggerRatio, strategyOrBundleId) {
275
+ const isBundle = true;
276
+ const subData = subDataService.liquityV2LeverageManagementSubData.encode(market, troveId, collToken, boldToken, ratioState, targetRatio);
277
+ const triggerData = triggerService.liquityV2RatioTrigger.encode(market, troveId, triggerRatio, ratioState);
278
+ return [strategyOrBundleId, isBundle, triggerData, subData];
279
+ },
280
+ closeOnPrice(strategyOrBundleId, market, troveId, collToken, boldToken, stopLossPrice = 0, stopLossType = enums_1.CloseToAssetType.DEBT, takeProfitPrice = 0, takeProfitType = enums_1.CloseToAssetType.COLLATERAL) {
281
+ const isBundle = true;
282
+ const closeType = (0, utils_1.getCloseStrategyType)(stopLossPrice, stopLossType, takeProfitPrice, takeProfitType);
283
+ const subData = subDataService.liquityV2CloseSubData.encode(market, troveId, collToken, boldToken, closeType);
284
+ const triggerData = triggerService.closePriceTrigger.encode(collToken, stopLossPrice, takeProfitPrice);
285
+ return [strategyOrBundleId, isBundle, triggerData, subData];
286
+ },
287
+ leverageManagementOnPrice(strategyOrBundleId, market, price, state, troveId, collToken, boldToken, targetRatio, isRepayOnPrice) {
288
+ const subDataEncoded = subDataService.liquityV2LeverageManagementOnPriceSubData.encode(market, troveId, collToken, boldToken, targetRatio, isRepayOnPrice);
289
+ const triggerDataEncoded = triggerService.liquityV2QuotePriceTrigger.encode(market, price, state);
290
+ const isBundle = true;
291
+ return [strategyOrBundleId, isBundle, triggerDataEncoded, subDataEncoded];
292
+ },
293
+ };
294
+ exports.fluidEncode = {
295
+ leverageManagement(nftId, vault, collToken, debtToken, ratioState, targetRatio, triggerRatio, strategyOrBundleId) {
296
+ const isBundle = true;
297
+ const subData = subDataService.fluidLeverageManagementSubData.encode(nftId, vault, collToken, debtToken, ratioState, targetRatio);
298
+ const triggerData = triggerService.fluidRatioTrigger.encode(nftId, triggerRatio, ratioState);
299
+ return [strategyOrBundleId, isBundle, triggerData, subData];
300
+ },
267
301
  };
@@ -1,5 +1,5 @@
1
1
  import type { EthereumAddress } from '../types';
2
- import type { OrderType } from '../types/enums';
2
+ import type { CloseStrategyType, OrderType } from '../types/enums';
3
3
  import { ChainId, RatioState } from '../types/enums';
4
4
  export declare const makerRepayFromSavingsSubData: {
5
5
  encode(vaultId: number, targetRatioPercentage: number, chainId: ChainId, daiAddr?: EthereumAddress, mcdCdpManagerAddr?: EthereumAddress): string[];
@@ -190,3 +190,57 @@ export declare const aaveV3LeverageManagementOnPriceSubData: {
190
190
  targetRatio: number;
191
191
  };
192
192
  };
193
+ export declare const liquityV2LeverageManagementSubData: {
194
+ encode: (market: EthereumAddress, troveId: string, collToken: EthereumAddress, boldToken: EthereumAddress, ratioState: RatioState, targetRatio: number) => string[];
195
+ decode: (subData: string[]) => {
196
+ market: string;
197
+ troveId: string;
198
+ collToken: string;
199
+ boldToken: string;
200
+ ratioState: RatioState;
201
+ targetRatio: number;
202
+ };
203
+ };
204
+ export declare const liquityV2CloseSubData: {
205
+ encode(market: EthereumAddress, troveId: string, collToken: EthereumAddress, boldToken: EthereumAddress, closeType: CloseStrategyType): string[];
206
+ decode(subData: string[]): {
207
+ market: EthereumAddress;
208
+ troveId: string;
209
+ collToken: EthereumAddress;
210
+ boldToken: EthereumAddress;
211
+ closeType: CloseStrategyType;
212
+ };
213
+ };
214
+ export declare const liquityV2LeverageManagementOnPriceSubData: {
215
+ encode(market: EthereumAddress, troveId: string, collToken: EthereumAddress, boldToken: EthereumAddress, targetRatio: number, isRepayOnPrice: boolean): string[];
216
+ decode(subData: string[]): {
217
+ market: EthereumAddress;
218
+ troveId: string;
219
+ collToken: EthereumAddress;
220
+ boldToken: EthereumAddress;
221
+ targetRatio: number;
222
+ };
223
+ };
224
+ export declare const morphoBlueLeverageManagementOnPriceSubData: {
225
+ encode(loanToken: EthereumAddress, collToken: EthereumAddress, oracle: EthereumAddress, irm: EthereumAddress, lltv: string, targetRatio: number, user: EthereumAddress): string[];
226
+ decode(subData: string[]): {
227
+ loanToken: string;
228
+ collToken: string;
229
+ oracle: string;
230
+ irm: string;
231
+ lltv: string;
232
+ targetRatio: number;
233
+ user: string;
234
+ };
235
+ };
236
+ export declare const fluidLeverageManagementSubData: {
237
+ encode: (nftId: string, vault: EthereumAddress, collToken: EthereumAddress, debtToken: EthereumAddress, ratioState: RatioState, targetRatio: number) => string[];
238
+ decode: (subData: string[]) => {
239
+ nftId: string;
240
+ vault: string;
241
+ collToken: string;
242
+ debtToken: string;
243
+ ratioState: RatioState;
244
+ targetRatio: number;
245
+ };
246
+ };