@defisaver/automation-sdk 2.1.6 → 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.
- package/.env +4 -0
- package/README.md +3 -3
- package/esm/automation/private/StrategiesAutomation.d.ts +1 -0
- package/esm/automation/private/StrategiesAutomation.js +27 -23
- package/esm/automation/private/StrategiesAutomation.test.d.ts +1 -0
- package/esm/automation/private/StrategiesAutomation.test.js +670 -0
- package/esm/types/index.d.ts +1 -1
- package/package.json +1 -1
- package/src/automation/private/StrategiesAutomation.test.ts +661 -0
- package/src/automation/private/StrategiesAutomation.ts +49 -41
- package/src/types/index.ts +1 -1
- package/umd/index.js +36 -30
|
@@ -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?.
|
|
173
|
-
|
|
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
|
|
package/src/types/index.ts
CHANGED
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.
|
|
1570
|
-
|
|
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;
|