@defisaver/automation-sdk 3.0.0 → 3.0.1

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.
@@ -10,7 +10,7 @@ import type {
10
10
  import type { ChainId } from '../../types/enums';
11
11
  import { Strategies, ProtocolIdentifiers } from '../../types/enums';
12
12
 
13
- import { addToObjectIf, isDefined } from '../../services/utils';
13
+ import { addToObjectIf, isDefined, isUndefined } from '../../services/utils';
14
14
  import { getAbiItem, makeSubStorageContract } from '../../services/contractService';
15
15
  import { getEventsFromContract, multicall } from '../../services/ethereumService';
16
16
  import { parseStrategiesAutomatedPosition } from '../../services/strategiesService';
@@ -122,6 +122,52 @@ export default class StrategiesAutomation extends Automation {
122
122
  );
123
123
  }
124
124
 
125
+ protected mergeSubs(_subscriptions:(Position.Automated | null)[]) {
126
+ const mergeBase = _subscriptions.filter(s => isDefined(s) && isDefined(s.specific.mergeWithId)) as Position.Automated[];
127
+ const mergeExtension = _subscriptions.filter(s => isDefined(s) && isDefined(s.specific.mergeId)) as Position.Automated[];
128
+
129
+ let subscriptions:Position.Automated[] = (_subscriptions.filter(s => isDefined(s) && isUndefined(s.specific.mergeWithId) && isUndefined(s.specific.mergeId)) as Position.Automated[]).map((s) => ({
130
+ ...s,
131
+ subIds: [s.subId],
132
+ }));
133
+ mergeBase.forEach((current) => {
134
+ const mergePairIndexSubEnabled = mergeExtension.findIndex(s => this._mergeCheck(s, current) && s.isEnabled === current.isEnabled);
135
+ const mergePairIndexSubDisabled = mergeExtension.findIndex(s => this._mergeCheck(s, current));
136
+
137
+ const mergePairIndex = mergePairIndexSubEnabled !== -1 ? mergePairIndexSubEnabled : mergePairIndexSubDisabled;
138
+
139
+ if (mergePairIndex !== -1) {
140
+ const mergePair = mergeExtension[mergePairIndex];
141
+ mergeExtension.splice(mergePairIndex, 1);
142
+ subscriptions.push({
143
+ ...mergePair,
144
+ ...current,
145
+ // @ts-ignore
146
+ blockNumber: Dec.max(mergePair.blockNumber, current.blockNumber).toNumber(),
147
+ subIds: [current.subId, mergePair.subId],
148
+ isEnabled: mergePair.isEnabled || current.isEnabled,
149
+ specific: {
150
+ ...mergePair.specific,
151
+ ...current.specific,
152
+ },
153
+ });
154
+ } else {
155
+ subscriptions.push({
156
+ ...current,
157
+ subIds: [current.subId],
158
+ });
159
+ }
160
+ });
161
+ if (mergeExtension.length > 0) {
162
+ console.error('Not all merge-able extensions were used', mergeExtension);
163
+ subscriptions = [...subscriptions, ...mergeExtension.map((s) => ({
164
+ ...s,
165
+ subIds: [s.subId],
166
+ }))];
167
+ }
168
+ return subscriptions;
169
+ }
170
+
125
171
  protected async _getSubscriptions(addresses?: EthereumAddress[], options?: SubscriptionOptions): Promise<(Position.Automated | null)[]> {
126
172
  const _options = {
127
173
  ...addToObjectIf(isDefined(options), options),
@@ -169,46 +215,8 @@ export default class StrategiesAutomation extends Automation {
169
215
  });
170
216
  }));
171
217
 
172
- if (options?.mergeWithSameId) {
173
- const mergeBase = subscriptions.filter(s => isDefined(s) && s.specific.mergeWithId) as Position.Automated[];
174
- const mergeExtension = subscriptions.filter(s => isDefined(s) && s.specific.mergeId) as Position.Automated[];
175
-
176
- subscriptions = (subscriptions.filter(s => isDefined(s) && !s?.specific.mergeWithId && !s?.specific.mergeId) as Position.Automated[]).map((s) => ({
177
- ...s,
178
- subIds: [s.subId],
179
- }));
180
- mergeBase.forEach((current) => {
181
- const mergePairIndexWithEnabledCheck = mergeExtension.findIndex(s => this._mergeCheck(s, current) && s.isEnabled === current.isEnabled);
182
- const mergePairIndexWithoutEnabledCheck = mergeExtension.findIndex(s => this._mergeCheck(s, current));
183
-
184
- const mergePairIndex = mergePairIndexWithEnabledCheck !== -1 ? mergePairIndexWithEnabledCheck : mergePairIndexWithoutEnabledCheck;
185
-
186
- if (mergePairIndex !== -1) {
187
- const mergePair = mergeExtension[mergePairIndex];
188
- mergeExtension.splice(mergePairIndex, 1);
189
- subscriptions.push({
190
- ...mergePair,
191
- ...current,
192
- // @ts-ignore
193
- blockNumber: Dec.max(mergePair.blockNumber, current.blockNumber).toNumber(),
194
- subIds: [current.subId, mergePair.subId],
195
- isEnabled: mergePair.isEnabled || current.isEnabled,
196
- specific: {
197
- ...mergePair.specific,
198
- ...current.specific,
199
- },
200
- });
201
- } else {
202
- subscriptions.push(current);
203
- }
204
- });
205
- if (mergeExtension.length > 0) {
206
- console.error('Not all merge-able extensions were used', mergeExtension);
207
- subscriptions = [...subscriptions, ...mergeExtension.map((s) => ({
208
- ...s,
209
- subIds: [s.subId],
210
- }))];
211
- }
218
+ if (options?.mergeSubs) {
219
+ subscriptions = this.mergeSubs(subscriptions);
212
220
  }
213
221
  }
214
222
 
@@ -64,7 +64,7 @@ export declare namespace Multicall {
64
64
  interface _SubscriptionOptions {
65
65
  toBlock: BlockNumber,
66
66
  fromBlock: BlockNumber,
67
- mergeWithSameId: boolean,
67
+ mergeSubs: boolean,
68
68
  enabledOnly: boolean,
69
69
  unexpiredOnly: boolean,
70
70
  }
package/umd/index.js CHANGED
@@ -1522,6 +1522,40 @@ class StrategiesAutomation extends _Automation__WEBPACK_IMPORTED_MODULE_6__["def
1522
1522
  || s.strategyData.decoded.subData.vaultId === current.strategyData.decoded.triggerData.vaultId) && (s.protocol.id !== _types_enums__WEBPACK_IMPORTED_MODULE_1__.ProtocolIdentifiers.StrategiesAutomation.CrvUSD // merge only crvUSD leverage management for the same market
1523
1523
  || s.strategyData.decoded.subData.controller.toLowerCase() === current.strategyData.decoded.triggerData.controller.toLowerCase());
1524
1524
  }
1525
+ mergeSubs(_subscriptions) {
1526
+ var mergeBase = _subscriptions.filter(s => (0,_services_utils__WEBPACK_IMPORTED_MODULE_2__.isDefined)(s) && (0,_services_utils__WEBPACK_IMPORTED_MODULE_2__.isDefined)(s.specific.mergeWithId));
1527
+ var mergeExtension = _subscriptions.filter(s => (0,_services_utils__WEBPACK_IMPORTED_MODULE_2__.isDefined)(s) && (0,_services_utils__WEBPACK_IMPORTED_MODULE_2__.isDefined)(s.specific.mergeId));
1528
+ var subscriptions = _subscriptions.filter(s => (0,_services_utils__WEBPACK_IMPORTED_MODULE_2__.isDefined)(s) && (0,_services_utils__WEBPACK_IMPORTED_MODULE_2__.isUndefined)(s.specific.mergeWithId) && (0,_services_utils__WEBPACK_IMPORTED_MODULE_2__.isUndefined)(s.specific.mergeId)).map(s => _objectSpread(_objectSpread({}, s), {}, {
1529
+ subIds: [s.subId]
1530
+ }));
1531
+ mergeBase.forEach(current => {
1532
+ var mergePairIndexSubEnabled = mergeExtension.findIndex(s => this._mergeCheck(s, current) && s.isEnabled === current.isEnabled);
1533
+ var mergePairIndexSubDisabled = mergeExtension.findIndex(s => this._mergeCheck(s, current));
1534
+ var mergePairIndex = mergePairIndexSubEnabled !== -1 ? mergePairIndexSubEnabled : mergePairIndexSubDisabled;
1535
+ if (mergePairIndex !== -1) {
1536
+ var mergePair = mergeExtension[mergePairIndex];
1537
+ mergeExtension.splice(mergePairIndex, 1);
1538
+ subscriptions.push(_objectSpread(_objectSpread(_objectSpread({}, mergePair), current), {}, {
1539
+ // @ts-ignore
1540
+ blockNumber: decimal_js__WEBPACK_IMPORTED_MODULE_0___default().max(mergePair.blockNumber, current.blockNumber).toNumber(),
1541
+ subIds: [current.subId, mergePair.subId],
1542
+ isEnabled: mergePair.isEnabled || current.isEnabled,
1543
+ specific: _objectSpread(_objectSpread({}, mergePair.specific), current.specific)
1544
+ }));
1545
+ } else {
1546
+ subscriptions.push(_objectSpread(_objectSpread({}, current), {}, {
1547
+ subIds: [current.subId]
1548
+ }));
1549
+ }
1550
+ });
1551
+ if (mergeExtension.length > 0) {
1552
+ console.error('Not all merge-able extensions were used', mergeExtension);
1553
+ subscriptions = [...subscriptions, ...mergeExtension.map(s => _objectSpread(_objectSpread({}, s), {}, {
1554
+ subIds: [s.subId]
1555
+ }))];
1556
+ }
1557
+ return subscriptions;
1558
+ }
1525
1559
  _getSubscriptions(addresses, options) {
1526
1560
  var _this5 = this;
1527
1561
  return _asyncToGenerator(function* () {
@@ -1566,36 +1600,8 @@ class StrategiesAutomation extends _Automation__WEBPACK_IMPORTED_MODULE_6__["def
1566
1600
  return _ref.apply(this, arguments);
1567
1601
  };
1568
1602
  }()));
1569
- if (options !== null && options !== void 0 && options.mergeWithSameId) {
1570
- var mergeBase = subscriptions.filter(s => (0,_services_utils__WEBPACK_IMPORTED_MODULE_2__.isDefined)(s) && s.specific.mergeWithId);
1571
- var mergeExtension = subscriptions.filter(s => (0,_services_utils__WEBPACK_IMPORTED_MODULE_2__.isDefined)(s) && s.specific.mergeId);
1572
- subscriptions = subscriptions.filter(s => (0,_services_utils__WEBPACK_IMPORTED_MODULE_2__.isDefined)(s) && !(s !== null && s !== void 0 && s.specific.mergeWithId) && !(s !== null && s !== void 0 && s.specific.mergeId)).map(s => _objectSpread(_objectSpread({}, s), {}, {
1573
- subIds: [s.subId]
1574
- }));
1575
- mergeBase.forEach(current => {
1576
- var mergePairIndexWithEnabledCheck = mergeExtension.findIndex(s => _this5._mergeCheck(s, current) && s.isEnabled === current.isEnabled);
1577
- var mergePairIndexWithoutEnabledCheck = mergeExtension.findIndex(s => _this5._mergeCheck(s, current));
1578
- var mergePairIndex = mergePairIndexWithEnabledCheck !== -1 ? mergePairIndexWithEnabledCheck : mergePairIndexWithoutEnabledCheck;
1579
- if (mergePairIndex !== -1) {
1580
- var mergePair = mergeExtension[mergePairIndex];
1581
- mergeExtension.splice(mergePairIndex, 1);
1582
- subscriptions.push(_objectSpread(_objectSpread(_objectSpread({}, mergePair), current), {}, {
1583
- // @ts-ignore
1584
- blockNumber: decimal_js__WEBPACK_IMPORTED_MODULE_0___default().max(mergePair.blockNumber, current.blockNumber).toNumber(),
1585
- subIds: [current.subId, mergePair.subId],
1586
- isEnabled: mergePair.isEnabled || current.isEnabled,
1587
- specific: _objectSpread(_objectSpread({}, mergePair.specific), current.specific)
1588
- }));
1589
- } else {
1590
- subscriptions.push(current);
1591
- }
1592
- });
1593
- if (mergeExtension.length > 0) {
1594
- console.error('Not all merge-able extensions were used', mergeExtension);
1595
- subscriptions = [...subscriptions, ...mergeExtension.map(s => _objectSpread(_objectSpread({}, s), {}, {
1596
- subIds: [s.subId]
1597
- }))];
1598
- }
1603
+ if (options !== null && options !== void 0 && options.mergeSubs) {
1604
+ subscriptions = _this5.mergeSubs(subscriptions);
1599
1605
  }
1600
1606
  }
1601
1607
  return _options.unexpiredOnly ? _this5.removeExpiredSubscriptions(subscriptions) : subscriptions;