@defisaver/automation-sdk 3.3.21-debt-switch-dev-dev → 3.3.21

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 (52) hide show
  1. package/cjs/automation/private/StrategiesAutomation.d.ts +5 -1
  2. package/cjs/automation/private/StrategiesAutomation.js +12 -0
  3. package/cjs/automation/private/StrategiesAutomation.test.js +51 -0
  4. package/cjs/constants/index.js +0 -40
  5. package/cjs/services/apiSubscriptionsService.d.ts +7 -0
  6. package/cjs/services/apiSubscriptionsService.js +33 -0
  7. package/cjs/services/apiSubscriptionsService.test.d.ts +1 -0
  8. package/cjs/services/apiSubscriptionsService.test.js +67 -0
  9. package/cjs/services/strategiesService.js +0 -13
  10. package/cjs/services/strategiesService.test.js +0 -1
  11. package/cjs/services/strategySubService.d.ts +0 -1
  12. package/cjs/services/strategySubService.js +0 -6
  13. package/cjs/services/strategySubService.test.js +0 -71
  14. package/cjs/services/subDataService.d.ts +0 -12
  15. package/cjs/services/subDataService.js +2 -34
  16. package/cjs/services/subDataService.test.js +0 -104
  17. package/cjs/types/enums.d.ts +4 -14
  18. package/cjs/types/enums.js +0 -10
  19. package/cjs/types/index.d.ts +24 -2
  20. package/esm/automation/private/StrategiesAutomation.d.ts +5 -1
  21. package/esm/automation/private/StrategiesAutomation.js +12 -0
  22. package/esm/automation/private/StrategiesAutomation.test.js +51 -0
  23. package/esm/constants/index.js +0 -40
  24. package/esm/services/apiSubscriptionsService.d.ts +7 -0
  25. package/esm/services/apiSubscriptionsService.js +29 -0
  26. package/esm/services/apiSubscriptionsService.test.d.ts +1 -0
  27. package/esm/services/apiSubscriptionsService.test.js +65 -0
  28. package/esm/services/strategiesService.js +0 -13
  29. package/esm/services/strategiesService.test.js +0 -1
  30. package/esm/services/strategySubService.d.ts +0 -1
  31. package/esm/services/strategySubService.js +0 -6
  32. package/esm/services/strategySubService.test.js +0 -71
  33. package/esm/services/subDataService.d.ts +0 -12
  34. package/esm/services/subDataService.js +0 -32
  35. package/esm/services/subDataService.test.js +0 -104
  36. package/esm/types/enums.d.ts +4 -14
  37. package/esm/types/enums.js +0 -10
  38. package/esm/types/index.d.ts +24 -2
  39. package/package.json +1 -1
  40. package/src/automation/private/StrategiesAutomation.test.ts +65 -1
  41. package/src/automation/private/StrategiesAutomation.ts +17 -0
  42. package/src/constants/index.ts +0 -40
  43. package/src/services/apiSubscriptionsService.test.ts +73 -0
  44. package/src/services/apiSubscriptionsService.ts +33 -0
  45. package/src/services/strategiesService.test.ts +0 -1
  46. package/src/services/strategiesService.ts +0 -15
  47. package/src/services/strategySubService.test.ts +0 -89
  48. package/src/services/strategySubService.ts +0 -22
  49. package/src/services/subDataService.test.ts +0 -108
  50. package/src/services/subDataService.ts +0 -50
  51. package/src/types/enums.ts +0 -10
  52. package/src/types/index.ts +26 -2
@@ -1,6 +1,6 @@
1
1
  import type Web3 from 'web3';
2
2
  import type { PastEventOptions } from 'web3-eth-contract';
3
- import type { Position, Interfaces, EthereumAddress, SubscriptionOptions, Contract, ParseData, BlockNumber } from '../../types';
3
+ import type { Position, Interfaces, EthereumAddress, SubscriptionOptions, Contract, ParseData, BlockNumber, ApiSubscriptionRecord } from '../../types';
4
4
  import type { StrategyModel, Subscribe, SubStorage, UpdateData } from '../../types/contracts/generated/SubStorage';
5
5
  import type { ChainId } from '../../types/enums';
6
6
  import Automation from './Automation';
@@ -30,6 +30,10 @@ export default class StrategiesAutomation extends Automation {
30
30
  protected mergeSubs(_subscriptions: (Position.Automated | null)[]): Position.Automated[];
31
31
  protected _getSubscriptions(addresses?: EthereumAddress[], options?: SubscriptionOptions): Promise<(Position.Automated | null)[]>;
32
32
  getSubscriptions(options?: SubscriptionOptions): Promise<(Position.Automated | null)[]>;
33
+ /**
34
+ * @description Parses subscriptions returned by the automation API (GET /v1/subscriptions)
35
+ */
36
+ parseSubscriptionsFromApi(records: ApiSubscriptionRecord[], options?: SubscriptionOptions): (Position.Automated | null)[];
33
37
  getSubscriptionsFor(addresses: EthereumAddress[], options?: SubscriptionOptions): Promise<(Position.Automated | null)[]>;
34
38
  }
35
39
  export {};
@@ -19,6 +19,7 @@ const utils_1 = require("../../services/utils");
19
19
  const contractService_1 = require("../../services/contractService");
20
20
  const ethereumService_1 = require("../../services/ethereumService");
21
21
  const strategiesService_1 = require("../../services/strategiesService");
22
+ const apiSubscriptionsService_1 = require("../../services/apiSubscriptionsService");
22
23
  const Automation_1 = __importDefault(require("./Automation"));
23
24
  class StrategiesAutomation extends Automation_1.default {
24
25
  constructor(args) {
@@ -189,6 +190,17 @@ class StrategiesAutomation extends Automation_1.default {
189
190
  return this._getSubscriptions(undefined, options);
190
191
  });
191
192
  }
193
+ /**
194
+ * @description Parses subscriptions returned by the automation API (GET /v1/subscriptions)
195
+ */
196
+ parseSubscriptionsFromApi(records, options) {
197
+ const filtered = (options === null || options === void 0 ? void 0 : options.enabledOnly) ? records.filter((record) => record.is_enabled) : records;
198
+ let subscriptions = filtered.map((record) => this.getParsedSubscriptions((0, apiSubscriptionsService_1.parseDataFromApiSubscription)(record, this.chainId)));
199
+ if (options === null || options === void 0 ? void 0 : options.mergeSubs) {
200
+ subscriptions = this.mergeSubs(subscriptions);
201
+ }
202
+ return (options === null || options === void 0 ? void 0 : options.unexpiredOnly) ? this.removeExpiredSubscriptions(subscriptions) : subscriptions;
203
+ }
192
204
  getSubscriptionsFor(addresses, options) {
193
205
  return __awaiter(this, void 0, void 0, function* () {
194
206
  return this._getSubscriptions(addresses, options);
@@ -693,4 +693,55 @@ describe('Feature: StrategiesAutomation.ts', () => {
693
693
  (0, chai_1.expect)(loneBoost === null || loneBoost === void 0 ? void 0 : loneBoost.subId).to.equal(1);
694
694
  });
695
695
  }));
696
+ describe('When testing StrategiesAutomation.parseSubscriptionsFromApi', () => {
697
+ const strategiesAutomation = new StrategiesAutomation_1.default({
698
+ chainId: enums_1.ChainId.Ethereum,
699
+ provider: Web3_1,
700
+ providerFork: null,
701
+ });
702
+ const owner = '0x9cB7E19861665366011899d74E75d4F2A419aEeD';
703
+ const subData = [
704
+ '0x0000000000000000000000000000000000000000000000001bc16d674ec80000',
705
+ '0x0000000000000000000000000000000000000000000000000000000000000001',
706
+ '0x0000000000000000000000000000000000000000000000000000000000000001',
707
+ '0x0000000000000000000000000000000000000000000000000000000000000000',
708
+ ];
709
+ // Aave V3 leverage management: repay (bundle 8, ratio under) and boost (bundle 9, ratio over) for the same owner and market
710
+ const repay = {
711
+ id: 379,
712
+ wallet: owner,
713
+ wallet_type: 'safe',
714
+ is_enabled: true,
715
+ is_bundle: true,
716
+ strategy_or_bundle_id: 8,
717
+ strategy_ids: [34, 35],
718
+ sub_data_hash: '0xafa4d200be62f171b57b1ae0f4e8348d1ac3f6d0812ad6da74a2adae8037dde1',
719
+ trigger_data: ['0000000000000000000000009cb7e19861665366011899d74e75d4f2a419aeed0000000000000000000000002f39d218133afab8f2b819b1066c7e434ad94e9e00000000000000000000000000000000000000000000000019ac8532c27900000000000000000000000000000000000000000000000000000000000000000001'],
720
+ sub_data: subData,
721
+ block_number: 18015756,
722
+ additional_triggers: null,
723
+ };
724
+ const boost = Object.assign(Object.assign({}, repay), { id: 380, is_enabled: false, strategy_or_bundle_id: 9, sub_data_hash: '0x1111111111111111111111111111111111111111111111111111111111111111', trigger_data: ['0000000000000000000000009cb7e19861665366011899d74e75d4f2a419aeed0000000000000000000000002f39d218133afab8f2b819b1066c7e434ad94e9e0000000000000000000000000000000000000000000000002386f26fc10000000000000000000000000000000000000000000000000000000000000000000000'] });
725
+ it('Given API records should return parsed positions', () => {
726
+ const positions = strategiesAutomation.parseSubscriptionsFromApi([repay, boost]);
727
+ (0, chai_1.expect)(positions).to.have.length(2);
728
+ (0, chai_1.expect)(positions.map((p) => p === null || p === void 0 ? void 0 : p.subId)).to.eql([379, 380]);
729
+ (0, chai_1.expect)(positions.map((p) => p === null || p === void 0 ? void 0 : p.isEnabled)).to.eql([true, false]);
730
+ });
731
+ it('Given mergeSubs option should merge the repay and boost pair', () => {
732
+ var _a, _b;
733
+ const positions = strategiesAutomation.parseSubscriptionsFromApi([repay, boost], { mergeSubs: true });
734
+ (0, chai_1.expect)(positions).to.have.length(1);
735
+ (0, chai_1.expect)((_a = positions[0]) === null || _a === void 0 ? void 0 : _a.subIds).to.eql([379, 380]);
736
+ (0, chai_1.expect)((_b = positions[0]) === null || _b === void 0 ? void 0 : _b.isEnabled).to.equal(true);
737
+ });
738
+ it('Given enabledOnly option should drop disabled records before parsing', () => {
739
+ const positions = strategiesAutomation.parseSubscriptionsFromApi([repay, boost], { enabledOnly: true });
740
+ (0, chai_1.expect)(positions.map((p) => p === null || p === void 0 ? void 0 : p.subId)).to.eql([379]);
741
+ });
742
+ it('Given a record of an unknown strategy should return null for it', () => {
743
+ const positions = strategiesAutomation.parseSubscriptionsFromApi([Object.assign(Object.assign({}, repay), { strategy_or_bundle_id: 9999 })]);
744
+ (0, chai_1.expect)(positions).to.eql([null]);
745
+ });
746
+ });
696
747
  });
@@ -127,16 +127,6 @@ exports.MAINNET_STRATEGIES_INFO = {
127
127
  strategyId: enums_1.Strategies.Identifiers.EoaCollateralSwitch,
128
128
  protocol: exports.PROTOCOLS.Spark,
129
129
  },
130
- [enums_1.Strategies.MainnetIds.AAVE_V3_DEBT_SWITCH]: {
131
- strategyOrBundleId: enums_1.Strategies.MainnetIds.AAVE_V3_DEBT_SWITCH,
132
- strategyId: enums_1.Strategies.Identifiers.DebtSwitch,
133
- protocol: exports.PROTOCOLS.AaveV3,
134
- },
135
- [enums_1.Strategies.MainnetIds.AAVE_V3_DEBT_SWITCH_EOA]: {
136
- strategyOrBundleId: enums_1.Strategies.MainnetIds.AAVE_V3_DEBT_SWITCH_EOA,
137
- strategyId: enums_1.Strategies.Identifiers.EoaDebtSwitch,
138
- protocol: exports.PROTOCOLS.AaveV3,
139
- },
140
130
  };
141
131
  exports.OPTIMISM_STRATEGIES_INFO = {
142
132
  [enums_1.Strategies.OptimismIds.EXCHANGE_DCA]: {
@@ -154,16 +144,6 @@ exports.OPTIMISM_STRATEGIES_INFO = {
154
144
  strategyId: enums_1.Strategies.Identifiers.CollateralSwitch,
155
145
  protocol: exports.PROTOCOLS.AaveV3,
156
146
  },
157
- [enums_1.Strategies.OptimismIds.AAVE_V3_DEBT_SWITCH]: {
158
- strategyOrBundleId: enums_1.Strategies.OptimismIds.AAVE_V3_DEBT_SWITCH,
159
- strategyId: enums_1.Strategies.Identifiers.DebtSwitch,
160
- protocol: exports.PROTOCOLS.AaveV3,
161
- },
162
- [enums_1.Strategies.OptimismIds.AAVE_V3_DEBT_SWITCH_EOA]: {
163
- strategyOrBundleId: enums_1.Strategies.OptimismIds.AAVE_V3_DEBT_SWITCH_EOA,
164
- strategyId: enums_1.Strategies.Identifiers.EoaDebtSwitch,
165
- protocol: exports.PROTOCOLS.AaveV3,
166
- },
167
147
  };
168
148
  exports.BASE_STRATEGIES_INFO = {
169
149
  [enums_1.Strategies.BaseIds.EXCHANGE_DCA]: {
@@ -181,16 +161,6 @@ exports.BASE_STRATEGIES_INFO = {
181
161
  strategyId: enums_1.Strategies.Identifiers.CollateralSwitch,
182
162
  protocol: exports.PROTOCOLS.AaveV3,
183
163
  },
184
- [enums_1.Strategies.BaseIds.AAVE_V3_DEBT_SWITCH]: {
185
- strategyOrBundleId: enums_1.Strategies.BaseIds.AAVE_V3_DEBT_SWITCH,
186
- strategyId: enums_1.Strategies.Identifiers.DebtSwitch,
187
- protocol: exports.PROTOCOLS.AaveV3,
188
- },
189
- [enums_1.Strategies.BaseIds.AAVE_V3_DEBT_SWITCH_EOA]: {
190
- strategyOrBundleId: enums_1.Strategies.BaseIds.AAVE_V3_DEBT_SWITCH_EOA,
191
- strategyId: enums_1.Strategies.Identifiers.EoaDebtSwitch,
192
- protocol: exports.PROTOCOLS.AaveV3,
193
- },
194
164
  };
195
165
  exports.ARBITRUM_STRATEGIES_INFO = {
196
166
  [enums_1.Strategies.ArbitrumIds.EXCHANGE_DCA]: {
@@ -208,16 +178,6 @@ exports.ARBITRUM_STRATEGIES_INFO = {
208
178
  strategyId: enums_1.Strategies.Identifiers.CollateralSwitch,
209
179
  protocol: exports.PROTOCOLS.AaveV3,
210
180
  },
211
- [enums_1.Strategies.ArbitrumIds.AAVE_V3_DEBT_SWITCH]: {
212
- strategyOrBundleId: enums_1.Strategies.ArbitrumIds.AAVE_V3_DEBT_SWITCH,
213
- strategyId: enums_1.Strategies.Identifiers.DebtSwitch,
214
- protocol: exports.PROTOCOLS.AaveV3,
215
- },
216
- [enums_1.Strategies.ArbitrumIds.AAVE_V3_DEBT_SWITCH_EOA]: {
217
- strategyOrBundleId: enums_1.Strategies.ArbitrumIds.AAVE_V3_DEBT_SWITCH_EOA,
218
- strategyId: enums_1.Strategies.Identifiers.EoaDebtSwitch,
219
- protocol: exports.PROTOCOLS.AaveV3,
220
- },
221
181
  };
222
182
  exports.STRATEGIES_INFO = {
223
183
  [enums_1.ChainId.Ethereum]: exports.MAINNET_STRATEGIES_INFO,
@@ -0,0 +1,7 @@
1
+ import type { ApiSubscriptionRecord, ParseData } from '../types';
2
+ import type { ChainId } from '../types/enums';
3
+ /**
4
+ * @description Maps a subscription record returned by the automation API to the data
5
+ * the parser expects from Subscribe events and SubStorage (trigger data is stored without 0x prefix)
6
+ */
7
+ export declare function parseDataFromApiSubscription(record: ApiSubscriptionRecord, chainId: ChainId): ParseData;
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parseDataFromApiSubscription = void 0;
4
+ function addHexPrefix(value) {
5
+ return value.startsWith('0x') ? value : `0x${value}`;
6
+ }
7
+ /**
8
+ * @description Maps a subscription record returned by the automation API to the data
9
+ * the parser expects from Subscribe events and SubStorage (trigger data is stored without 0x prefix)
10
+ */
11
+ function parseDataFromApiSubscription(record, chainId) {
12
+ return {
13
+ chainId,
14
+ blockNumber: record.block_number,
15
+ subscriptionEventData: {
16
+ subId: record.id.toString(),
17
+ proxy: record.wallet,
18
+ subHash: record.sub_data_hash,
19
+ subStruct: {
20
+ strategyOrBundleId: record.strategy_or_bundle_id.toString(),
21
+ isBundle: record.is_bundle,
22
+ triggerData: record.trigger_data.map(addHexPrefix),
23
+ subData: record.sub_data.map(addHexPrefix),
24
+ },
25
+ },
26
+ strategiesSubsData: {
27
+ userProxy: record.wallet,
28
+ isEnabled: record.is_enabled,
29
+ strategySubHash: record.sub_data_hash,
30
+ },
31
+ };
32
+ }
33
+ exports.parseDataFromApiSubscription = parseDataFromApiSubscription;
@@ -0,0 +1 @@
1
+ import '../configuration';
@@ -0,0 +1,67 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const chai_1 = require("chai");
4
+ const enums_1 = require("../types/enums");
5
+ require("../configuration");
6
+ const apiSubscriptionsService_1 = require("./apiSubscriptionsService");
7
+ const strategiesService_1 = require("./strategiesService");
8
+ describe('Feature: apiSubscriptionsService.ts', () => {
9
+ describe('When testing apiSubscriptionsService.parseDataFromApiSubscription', () => {
10
+ // same subscription as in strategiesService.test.ts, in the shape the automation API returns it
11
+ const record = {
12
+ id: 379,
13
+ wallet: '0x9cB7E19861665366011899d74E75d4F2A419aEeD',
14
+ wallet_type: 'safe',
15
+ is_enabled: true,
16
+ is_bundle: true,
17
+ strategy_or_bundle_id: 8,
18
+ strategy_ids: [34, 35],
19
+ sub_data_hash: '0xafa4d200be62f171b57b1ae0f4e8348d1ac3f6d0812ad6da74a2adae8037dde1',
20
+ trigger_data: [
21
+ '0000000000000000000000009cb7e19861665366011899d74e75d4f2a419aeed0000000000000000000000002f39d218133afab8f2b819b1066c7e434ad94e9e00000000000000000000000000000000000000000000000019ac8532c27900000000000000000000000000000000000000000000000000000000000000000001',
22
+ ],
23
+ sub_data: [
24
+ '0x0000000000000000000000000000000000000000000000001bc16d674ec80000',
25
+ '0x0000000000000000000000000000000000000000000000000000000000000001',
26
+ '0x0000000000000000000000000000000000000000000000000000000000000001',
27
+ '0x0000000000000000000000000000000000000000000000000000000000000000',
28
+ ],
29
+ block_number: 18015756,
30
+ additional_triggers: null,
31
+ };
32
+ const fromEvents = {
33
+ chainId: enums_1.ChainId.Ethereum,
34
+ blockNumber: 18015756,
35
+ subscriptionEventData: {
36
+ subId: '379',
37
+ proxy: '0x9cB7E19861665366011899d74E75d4F2A419aEeD',
38
+ subHash: '0xafa4d200be62f171b57b1ae0f4e8348d1ac3f6d0812ad6da74a2adae8037dde1',
39
+ subStruct: {
40
+ strategyOrBundleId: '8',
41
+ isBundle: true,
42
+ triggerData: [
43
+ '0x0000000000000000000000009cb7e19861665366011899d74e75d4f2a419aeed0000000000000000000000002f39d218133afab8f2b819b1066c7e434ad94e9e00000000000000000000000000000000000000000000000019ac8532c27900000000000000000000000000000000000000000000000000000000000000000001',
44
+ ],
45
+ subData: record.sub_data,
46
+ },
47
+ },
48
+ strategiesSubsData: {
49
+ userProxy: '0x9cB7E19861665366011899d74E75d4F2A419aEeD',
50
+ isEnabled: true,
51
+ strategySubHash: '0xafa4d200be62f171b57b1ae0f4e8348d1ac3f6d0812ad6da74a2adae8037dde1',
52
+ },
53
+ };
54
+ it('Given an API record should return the same parse data as Subscribe event and SubStorage would', () => {
55
+ (0, chai_1.expect)((0, apiSubscriptionsService_1.parseDataFromApiSubscription)(record, enums_1.ChainId.Ethereum)).to.eql(fromEvents);
56
+ });
57
+ it('Given an API record the parsed position should match the one parsed from events', () => {
58
+ const fromApi = (0, strategiesService_1.parseStrategiesAutomatedPosition)((0, apiSubscriptionsService_1.parseDataFromApiSubscription)(record, enums_1.ChainId.Ethereum));
59
+ (0, chai_1.expect)(fromApi).to.not.equal(null);
60
+ (0, chai_1.expect)(fromApi).to.eql((0, strategiesService_1.parseStrategiesAutomatedPosition)(fromEvents));
61
+ });
62
+ it('Given a disabled record should keep it disabled', () => {
63
+ const parseData = (0, apiSubscriptionsService_1.parseDataFromApiSubscription)(Object.assign(Object.assign({}, record), { is_enabled: false }), enums_1.ChainId.Ethereum);
64
+ (0, chai_1.expect)(parseData.strategiesSubsData.isEnabled).to.equal(false);
65
+ });
66
+ });
67
+ });
@@ -356,17 +356,6 @@ function parseAaveV3CollateralSwitch(position, parseData) {
356
356
  _position.positionId = (0, utils_1.getPositionId)(_position.chainId, _position.protocol.id, _position.owner, subData.marketAddr);
357
357
  return _position;
358
358
  }
359
- function parseAaveV3DebtSwitch(position, parseData) {
360
- const _position = (0, lodash_1.cloneDeep)(position);
361
- const { subStruct } = parseData.subscriptionEventData;
362
- const triggerData = triggerService.aaveV3QuotePriceTrigger.decode(subStruct.triggerData);
363
- const subData = subDataService.aaveV3DebtSwitchSubData.decode(subStruct.subData);
364
- _position.strategyData.decoded.triggerData = triggerData;
365
- _position.strategyData.decoded.subData = subData;
366
- // TODO -> This isn't enough for ID
367
- _position.positionId = (0, utils_1.getPositionId)(_position.chainId, _position.protocol.id, _position.owner, subData.marketAddr);
368
- return _position;
369
- }
370
359
  function parseSparkCollateralSwitch(position, parseData) {
371
360
  const _position = (0, lodash_1.cloneDeep)(position);
372
361
  const { subStruct } = parseData.subscriptionEventData;
@@ -1257,8 +1246,6 @@ const parsingMethodsMapping = {
1257
1246
  [enums_1.Strategies.Identifiers.EoaBoostOnPrice]: parseAaveV3LeverageManagementOnPrice,
1258
1247
  [enums_1.Strategies.Identifiers.EoaCloseOnPrice]: parseAaveV3CloseOnPrice,
1259
1248
  [enums_1.Strategies.Identifiers.CollateralSwitch]: parseAaveV3CollateralSwitch,
1260
- [enums_1.Strategies.Identifiers.DebtSwitch]: parseAaveV3DebtSwitch,
1261
- [enums_1.Strategies.Identifiers.EoaDebtSwitch]: parseAaveV3DebtSwitch,
1262
1249
  [enums_1.Strategies.Identifiers.LiquidationProtection]: parseAaveV3LiquidationProtection,
1263
1250
  [enums_1.Strategies.Identifiers.EoaLiquidationProtection]: parseAaveV3LiquidationProtection,
1264
1251
  },
@@ -83,7 +83,6 @@ describe('Feature: strategiesService.ts', () => {
83
83
  subId: '379',
84
84
  proxy: '0x9cb7e19861665366011899d74e75d4f2a419aeed',
85
85
  subHash: '0xafa4d200be62f171b57b1ae0f4e8348d1ac3f6d0812ad6da74a2adae8037dde1',
86
- // @ts-ignore
87
86
  subStruct: {
88
87
  strategyOrBundleId: '8',
89
88
  isBundle: true,
@@ -62,7 +62,6 @@ export declare const aaveV3Encode: {
62
62
  leverageManagementOnPriceGeneric(strategyOrBundleId: number, price: number, ratioState: RatioState, collAsset: EthereumAddress, collAssetId: number, debtAsset: EthereumAddress, debtAssetId: number, marketAddr: EthereumAddress, targetRatio: number, user: EthereumAddress): (number | boolean | string[])[];
63
63
  closeOnPriceGeneric(strategyOrBundleId: number, collAsset: EthereumAddress, collAssetId: number, debtAsset: EthereumAddress, debtAssetId: number, marketAddr: EthereumAddress, user: EthereumAddress, stopLossPrice?: number, stopLossType?: CloseToAssetType, takeProfitPrice?: number, takeProfitType?: CloseToAssetType): (number | boolean | string[])[];
64
64
  collateralSwitch(strategyOrBundleId: number, fromAsset: EthereumAddress, fromAssetId: number, toAsset: EthereumAddress, toAssetId: number, marketAddr: EthereumAddress, amountToSwitch: string, baseTokenAddress: EthereumAddress, quoteTokenAddress: EthereumAddress, price: number, state: RatioState): (number | boolean | string[])[];
65
- debtSwitch(strategyOrBundleId: number, fromAsset: EthereumAddress, fromAssetId: number, toAsset: EthereumAddress, toAssetId: number, marketAddr: EthereumAddress, amountToSwitch: string, user: EthereumAddress, baseTokenAddress: EthereumAddress, quoteTokenAddress: EthereumAddress, price: number, state: RatioState): (number | boolean | string[])[];
66
65
  };
67
66
  export declare const compoundV2Encode: {
68
67
  leverageManagement(strategyOrBundleId: number, user: EthereumAddress, ratioState: RatioState, targetRatio: number, triggerRatio: number): (number | boolean | string[])[];
@@ -196,12 +196,6 @@ exports.aaveV3Encode = {
196
196
  const triggerDataEncoded = triggerService.aaveV3QuotePriceTrigger.encode(baseTokenAddress, quoteTokenAddress, price, state);
197
197
  return [strategyOrBundleId, isBundle, triggerDataEncoded, subDataEncoded];
198
198
  },
199
- debtSwitch(strategyOrBundleId, fromAsset, fromAssetId, toAsset, toAssetId, marketAddr, amountToSwitch, user, baseTokenAddress, quoteTokenAddress, price, state) {
200
- const isBundle = false;
201
- const subDataEncoded = subDataService.aaveV3DebtSwitchSubData.encode(fromAsset, fromAssetId, toAsset, toAssetId, marketAddr, amountToSwitch, user);
202
- const triggerDataEncoded = triggerService.aaveV3QuotePriceTrigger.encode(baseTokenAddress, quoteTokenAddress, price, state);
203
- return [strategyOrBundleId, isBundle, triggerDataEncoded, subDataEncoded];
204
- },
205
199
  };
206
200
  exports.compoundV2Encode = {
207
201
  leverageManagement(strategyOrBundleId, user, ratioState, targetRatio, triggerRatio) {
@@ -856,77 +856,6 @@ describe('Feature: strategySubService.ts', () => {
856
856
  });
857
857
  });
858
858
  });
859
- describe('debtSwitch()', () => {
860
- const examples = [
861
- // USDC -> DAI, price 100000, state UNDER
862
- [
863
- [
864
- enums_1.Strategies.MainnetIds.AAVE_V3_DEBT_SWITCH,
865
- false,
866
- ['0x000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb480000000000000000000000006b175474e89094c44da98b954eedeac495271d0f000000000000000000000000000000000000000000000000000009184e72a0000000000000000000000000000000000000000000000000000000000000000001'],
867
- [
868
- '0x000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48',
869
- '0x0000000000000000000000000000000000000000000000000000000000000001',
870
- '0x0000000000000000000000006b175474e89094c44da98b954eedeac495271d0f',
871
- '0x0000000000000000000000000000000000000000000000000000000000000003',
872
- '0x00000000000000000000000087870bca3f3fd6335c3f4ce8392d69d0b4161d39',
873
- '0x0000000000000000000000000000000000000000000000008ac7230489e80000',
874
- '0x000000000000000000000000dd6ecd6c9b9f7e29e0f14bb9d5f0d0a3c6cb6c6a',
875
- ],
876
- ],
877
- [
878
- enums_1.Strategies.MainnetIds.AAVE_V3_DEBT_SWITCH,
879
- web3Utils.toChecksumAddress((0, tokens_1.getAssetInfo)('USDC', enums_1.ChainId.Ethereum).address),
880
- 1,
881
- web3Utils.toChecksumAddress((0, tokens_1.getAssetInfo)('DAI', enums_1.ChainId.Ethereum).address),
882
- 3,
883
- web3Utils.toChecksumAddress('0x87870Bca3F3fD6335C3F4ce8392D69d0B4161d39'),
884
- '10000000000000000000',
885
- web3Utils.toChecksumAddress('0xDd6ecD6c9b9F7e29E0f14bb9D5F0D0A3C6cB6c6A'),
886
- web3Utils.toChecksumAddress((0, tokens_1.getAssetInfo)('USDC', enums_1.ChainId.Ethereum).address),
887
- web3Utils.toChecksumAddress((0, tokens_1.getAssetInfo)('DAI', enums_1.ChainId.Ethereum).address),
888
- 100000,
889
- enums_1.RatioState.UNDER,
890
- ]
891
- ],
892
- // DAI -> USDC (MaxUint256), price 1, state OVER
893
- [
894
- [
895
- enums_1.Strategies.MainnetIds.AAVE_V3_DEBT_SWITCH,
896
- false,
897
- ['0x0000000000000000000000006b175474e89094c44da98b954eedeac495271d0f000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb480000000000000000000000000000000000000000000000000000000005f5e1000000000000000000000000000000000000000000000000000000000000000000'],
898
- [
899
- '0x0000000000000000000000006b175474e89094c44da98b954eedeac495271d0f',
900
- '0x0000000000000000000000000000000000000000000000000000000000000003',
901
- '0x000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48',
902
- '0x0000000000000000000000000000000000000000000000000000000000000001',
903
- '0x00000000000000000000000087870bca3f3fd6335c3f4ce8392d69d0b4161d39',
904
- '0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff',
905
- '0x000000000000000000000000dd6ecd6c9b9f7e29e0f14bb9d5f0d0a3c6cb6c6a',
906
- ],
907
- ],
908
- [
909
- enums_1.Strategies.MainnetIds.AAVE_V3_DEBT_SWITCH,
910
- web3Utils.toChecksumAddress((0, tokens_1.getAssetInfo)('DAI', enums_1.ChainId.Ethereum).address),
911
- 3,
912
- web3Utils.toChecksumAddress((0, tokens_1.getAssetInfo)('USDC', enums_1.ChainId.Ethereum).address),
913
- 1,
914
- web3Utils.toChecksumAddress('0x87870Bca3F3fD6335C3F4ce8392D69d0B4161d39'),
915
- tokens_1.MAXUINT,
916
- web3Utils.toChecksumAddress('0xDd6ecD6c9b9F7e29E0f14bb9D5F0D0A3C6cB6c6A'),
917
- web3Utils.toChecksumAddress((0, tokens_1.getAssetInfo)('DAI', enums_1.ChainId.Ethereum).address),
918
- web3Utils.toChecksumAddress((0, tokens_1.getAssetInfo)('USDC', enums_1.ChainId.Ethereum).address),
919
- 1,
920
- enums_1.RatioState.OVER,
921
- ]
922
- ],
923
- ];
924
- examples.forEach(([expected, actual]) => {
925
- it(`Given ${JSON.stringify(actual)} should return expected value: ${JSON.stringify(expected)}`, () => {
926
- (0, chai_1.expect)(strategySubService_1.aaveV3Encode.debtSwitch(...actual)).to.eql(expected);
927
- });
928
- });
929
- });
930
859
  });
931
860
  describe('When testing strategySubService.compoundV3Encode', () => {
932
861
  describe('leverageManagementOnPrice()', () => {
@@ -259,18 +259,6 @@ export declare const aaveV3CollateralSwitchSubData: {
259
259
  amountToSwitch: string;
260
260
  };
261
261
  };
262
- export declare const aaveV3DebtSwitchSubData: {
263
- encode(fromAsset: EthereumAddress, fromAssetId: number, toAsset: EthereumAddress, toAssetId: number, marketAddr: EthereumAddress, amountToSwitch: string, user: EthereumAddress): string[];
264
- decode(subData: string[]): {
265
- fromAsset: EthereumAddress;
266
- fromAssetId: number;
267
- toAsset: EthereumAddress;
268
- toAssetId: number;
269
- marketAddr: EthereumAddress;
270
- amountToSwitch: string;
271
- user: EthereumAddress;
272
- };
273
- };
274
262
  export declare const aaveV3QuotePriceSubData: {
275
263
  encode(collAsset: EthereumAddress, collAssetId: number, debtAsset: EthereumAddress, debtAssetId: number, nullAddress?: EthereumAddress): string[];
276
264
  decode(subData: string[]): {
@@ -3,8 +3,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.sparkCloseGenericSubData = exports.sparkGenericLiquidationProtectionSubData = exports.sparkGenericLeverageManagementSubData = exports.sparkLiquidationProtectionSubData = exports.sparkLeverageManagementSubData = exports.legacySparkLeverageManagementSubData = exports.exchangeLimitOrderSubData = exports.legacyExchangeLimitOrderSubData = exports.exchangeDcaSubData = exports.compoundV3CloseSubData = exports.compoundV3LeverageManagementOnPriceSubData = exports.compoundV3LiquidationProtectionSubData = exports.compoundV3LeverageManagementSubData = exports.compoundV2LeverageManagementSubData = exports.legacyCompoundV2LeverageManagementSubData = exports.aaveV4CollateralSwitchSubData = exports.aaveV4CloseSubData = exports.aaveV4LeverageManagementOnPriceSubData = exports.aaveV4LiquidationProtectionSubData = exports.aaveV4LeverageManagementSubData = exports.aaveV3LeverageManagementOnPriceSubData = exports.aaveV3QuotePriceSubData = exports.aaveV3DebtSwitchSubData = exports.aaveV3CollateralSwitchSubData = exports.aaveV3CloseGenericSubData = exports.aaveV3LeverageManagementOnPriceGeneric = exports.aaveV3LiquidationProtectionSubData = exports.aaveV3LeverageManagementSubData = exports.legacyAaveV3LeverageManagementSubData = exports.aaveV2LeverageManagementSubData = exports.legacyAaveV2LeverageManagementSubData = exports.liquityV2PaybackSubData = exports.liquityV2LeverageManagementOnPriceSubData = exports.liquityV2CloseSubData = exports.liquityV2LeverageManagementSubData = exports.liquityDebtInFrontRepaySubData = exports.liquityDsrSupplySubData = exports.liquityDsrPaybackSubData = exports.liquityCloseSubData = exports.liquityLeverageManagementSubData = exports.legacyLiquityLeverageManagementSubData = exports.liquityRepayFromSavingsSubData = exports.makerLiquidationProtectionSubData = exports.makerLeverageManagementSubData = exports.legacyMakerLeverageManagementSubData = exports.makerCloseSubData = exports.makerRepayFromSavingsSubData = exports.liquityPaybackUsingChickenBondSubData = exports.cBondsRebondSubData = exports.morphoAaveV2LeverageManagementSubData = void 0;
7
- exports.fluidLiquidationProtectionSubData = exports.fluidLeverageManagementSubData = exports.morphoBlueCloseOnPriceSubData = exports.morphoBlueLeverageManagementOnPriceSubData = exports.morphoBlueLiquidationProtectionSubData = exports.morphoBlueLeverageManagementSubData = exports.crvUSDPaybackSubData = exports.crvUSDLeverageManagementSubData = exports.sparkGenericFLCollateralSwitchSubData = exports.sparkCollateralSwitchSubData = exports.sparkLeverageManagementOnPriceGenericSubData = exports.sparkLeverageManagementOnPriceSubData = void 0;
6
+ exports.sparkLeverageManagementOnPriceSubData = exports.sparkCloseGenericSubData = exports.sparkGenericLiquidationProtectionSubData = exports.sparkGenericLeverageManagementSubData = exports.sparkLiquidationProtectionSubData = exports.sparkLeverageManagementSubData = exports.legacySparkLeverageManagementSubData = exports.exchangeLimitOrderSubData = exports.legacyExchangeLimitOrderSubData = exports.exchangeDcaSubData = exports.compoundV3CloseSubData = exports.compoundV3LeverageManagementOnPriceSubData = exports.compoundV3LiquidationProtectionSubData = exports.compoundV3LeverageManagementSubData = exports.compoundV2LeverageManagementSubData = exports.legacyCompoundV2LeverageManagementSubData = exports.aaveV4CollateralSwitchSubData = exports.aaveV4CloseSubData = exports.aaveV4LeverageManagementOnPriceSubData = exports.aaveV4LiquidationProtectionSubData = exports.aaveV4LeverageManagementSubData = exports.aaveV3LeverageManagementOnPriceSubData = exports.aaveV3QuotePriceSubData = exports.aaveV3CollateralSwitchSubData = exports.aaveV3CloseGenericSubData = exports.aaveV3LeverageManagementOnPriceGeneric = exports.aaveV3LiquidationProtectionSubData = exports.aaveV3LeverageManagementSubData = exports.legacyAaveV3LeverageManagementSubData = exports.aaveV2LeverageManagementSubData = exports.legacyAaveV2LeverageManagementSubData = exports.liquityV2PaybackSubData = exports.liquityV2LeverageManagementOnPriceSubData = exports.liquityV2CloseSubData = exports.liquityV2LeverageManagementSubData = exports.liquityDebtInFrontRepaySubData = exports.liquityDsrSupplySubData = exports.liquityDsrPaybackSubData = exports.liquityCloseSubData = exports.liquityLeverageManagementSubData = exports.legacyLiquityLeverageManagementSubData = exports.liquityRepayFromSavingsSubData = exports.makerLiquidationProtectionSubData = exports.makerLeverageManagementSubData = exports.legacyMakerLeverageManagementSubData = exports.makerCloseSubData = exports.makerRepayFromSavingsSubData = exports.liquityPaybackUsingChickenBondSubData = exports.cBondsRebondSubData = exports.morphoAaveV2LeverageManagementSubData = void 0;
7
+ exports.fluidLiquidationProtectionSubData = exports.fluidLeverageManagementSubData = exports.morphoBlueCloseOnPriceSubData = exports.morphoBlueLeverageManagementOnPriceSubData = exports.morphoBlueLiquidationProtectionSubData = exports.morphoBlueLeverageManagementSubData = exports.crvUSDPaybackSubData = exports.crvUSDLeverageManagementSubData = exports.sparkGenericFLCollateralSwitchSubData = exports.sparkCollateralSwitchSubData = exports.sparkLeverageManagementOnPriceGenericSubData = void 0;
8
8
  const decimal_js_1 = __importDefault(require("decimal.js"));
9
9
  const web3_eth_abi_1 = __importDefault(require("web3-eth-abi"));
10
10
  const web3_utils_1 = require("web3-utils");
@@ -549,38 +549,6 @@ exports.aaveV3CollateralSwitchSubData = {
549
549
  };
550
550
  },
551
551
  };
552
- exports.aaveV3DebtSwitchSubData = {
553
- encode(fromAsset, fromAssetId, toAsset, toAssetId, marketAddr, amountToSwitch, user) {
554
- const encodedFromAsset = web3_eth_abi_1.default.encodeParameter('address', fromAsset);
555
- const encodedFromAssetId = web3_eth_abi_1.default.encodeParameter('uint8', fromAssetId);
556
- const encodedToAsset = web3_eth_abi_1.default.encodeParameter('address', toAsset);
557
- const encodedToAssetId = web3_eth_abi_1.default.encodeParameter('uint8', toAssetId);
558
- const encodedMarketAddr = web3_eth_abi_1.default.encodeParameter('address', marketAddr);
559
- const encodedAmountToSwitch = web3_eth_abi_1.default.encodeParameter('uint256', amountToSwitch);
560
- const encodedUser = web3_eth_abi_1.default.encodeParameter('address', user);
561
- return [
562
- encodedFromAsset,
563
- encodedFromAssetId,
564
- encodedToAsset,
565
- encodedToAssetId,
566
- encodedMarketAddr,
567
- encodedAmountToSwitch,
568
- encodedUser,
569
- ];
570
- },
571
- decode(subData) {
572
- const fromAsset = web3_eth_abi_1.default.decodeParameter('address', subData[0]);
573
- const fromAssetId = Number(web3_eth_abi_1.default.decodeParameter('uint8', subData[1]));
574
- const toAsset = web3_eth_abi_1.default.decodeParameter('address', subData[2]);
575
- const toAssetId = Number(web3_eth_abi_1.default.decodeParameter('uint8', subData[3]));
576
- const marketAddr = web3_eth_abi_1.default.decodeParameter('address', subData[4]);
577
- const amountToSwitch = web3_eth_abi_1.default.decodeParameter('uint256', subData[5]);
578
- const user = web3_eth_abi_1.default.decodeParameter('address', subData[6]);
579
- return {
580
- fromAsset, fromAssetId, toAsset, toAssetId, marketAddr, amountToSwitch, user,
581
- };
582
- },
583
- };
584
552
  exports.aaveV3QuotePriceSubData = {
585
553
  encode(collAsset, collAssetId, debtAsset, debtAssetId, nullAddress = constants_1.ZERO_ADDRESS) {
586
554
  const encodedColl = web3_eth_abi_1.default.encodeParameter('address', collAsset);
@@ -535,110 +535,6 @@ describe('Feature: subDataService.ts', () => {
535
535
  });
536
536
  });
537
537
  });
538
- describe('When testing subDataService.aaveV3DebtSwitchSubData', () => {
539
- describe('encode()', () => {
540
- const examples = [
541
- // USDC -> DAI
542
- [
543
- [
544
- '0x000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48',
545
- '0x0000000000000000000000000000000000000000000000000000000000000001',
546
- '0x0000000000000000000000006b175474e89094c44da98b954eedeac495271d0f',
547
- '0x0000000000000000000000000000000000000000000000000000000000000003',
548
- '0x00000000000000000000000087870bca3f3fd6335c3f4ce8392d69d0b4161d39',
549
- '0x0000000000000000000000000000000000000000000000008ac7230489e80000',
550
- '0x000000000000000000000000dd6ecd6c9b9f7e29e0f14bb9d5f0d0a3c6cb6c6a',
551
- ],
552
- [
553
- web3Utils.toChecksumAddress((0, tokens_1.getAssetInfo)('USDC', enums_1.ChainId.Ethereum).address),
554
- 1,
555
- web3Utils.toChecksumAddress((0, tokens_1.getAssetInfo)('DAI', enums_1.ChainId.Ethereum).address),
556
- 3,
557
- web3Utils.toChecksumAddress('0x87870Bca3F3fD6335C3F4ce8392D69d0B4161d39'),
558
- '10000000000000000000',
559
- web3Utils.toChecksumAddress('0xDd6ecD6c9b9F7e29E0f14bb9D5F0D0A3C6cB6c6A'),
560
- ]
561
- ],
562
- // DAI -> USDC (MaxUint256)
563
- [
564
- [
565
- '0x0000000000000000000000006b175474e89094c44da98b954eedeac495271d0f',
566
- '0x0000000000000000000000000000000000000000000000000000000000000003',
567
- '0x000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48',
568
- '0x0000000000000000000000000000000000000000000000000000000000000001',
569
- '0x00000000000000000000000087870bca3f3fd6335c3f4ce8392d69d0b4161d39',
570
- '0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff',
571
- '0x000000000000000000000000dd6ecd6c9b9f7e29e0f14bb9d5f0d0a3c6cb6c6a',
572
- ],
573
- [
574
- web3Utils.toChecksumAddress((0, tokens_1.getAssetInfo)('DAI', enums_1.ChainId.Ethereum).address),
575
- 3,
576
- web3Utils.toChecksumAddress((0, tokens_1.getAssetInfo)('USDC', enums_1.ChainId.Ethereum).address),
577
- 1,
578
- web3Utils.toChecksumAddress('0x87870Bca3F3fD6335C3F4ce8392D69d0B4161d39'),
579
- tokens_2.MAXUINT,
580
- web3Utils.toChecksumAddress('0xDd6ecD6c9b9F7e29E0f14bb9D5F0D0A3C6cB6c6A'),
581
- ]
582
- ],
583
- ];
584
- examples.forEach(([expected, actual]) => {
585
- it(`Given ${JSON.stringify(actual)} should return expected value: ${JSON.stringify(expected)}`, () => {
586
- (0, chai_1.expect)(subDataService.aaveV3DebtSwitchSubData.encode(...actual)).to.eql(expected);
587
- });
588
- });
589
- });
590
- describe('decode()', () => {
591
- const examples = [
592
- // USDC -> DAI
593
- [
594
- {
595
- fromAsset: web3Utils.toChecksumAddress((0, tokens_1.getAssetInfo)('USDC', enums_1.ChainId.Ethereum).address),
596
- fromAssetId: 1,
597
- toAsset: web3Utils.toChecksumAddress((0, tokens_1.getAssetInfo)('DAI', enums_1.ChainId.Ethereum).address),
598
- toAssetId: 3,
599
- marketAddr: web3Utils.toChecksumAddress('0x87870Bca3F3fD6335C3F4ce8392D69d0B4161d39'),
600
- amountToSwitch: '10000000000000000000',
601
- user: web3Utils.toChecksumAddress('0xDd6ecD6c9b9F7e29E0f14bb9D5F0D0A3C6cB6c6A'),
602
- },
603
- [
604
- '0x000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48',
605
- '0x0000000000000000000000000000000000000000000000000000000000000001',
606
- '0x0000000000000000000000006b175474e89094c44da98b954eedeac495271d0f',
607
- '0x0000000000000000000000000000000000000000000000000000000000000003',
608
- '0x00000000000000000000000087870bca3f3fd6335c3f4ce8392d69d0b4161d39',
609
- '0x0000000000000000000000000000000000000000000000008ac7230489e80000',
610
- '0x000000000000000000000000dd6ecd6c9b9f7e29e0f14bb9d5f0d0a3c6cb6c6a',
611
- ],
612
- ],
613
- // DAI -> USDC (MaxUint256)
614
- [
615
- {
616
- fromAsset: web3Utils.toChecksumAddress((0, tokens_1.getAssetInfo)('DAI', enums_1.ChainId.Ethereum).address),
617
- fromAssetId: 3,
618
- toAsset: web3Utils.toChecksumAddress((0, tokens_1.getAssetInfo)('USDC', enums_1.ChainId.Ethereum).address),
619
- toAssetId: 1,
620
- marketAddr: web3Utils.toChecksumAddress('0x87870Bca3F3fD6335C3F4ce8392D69d0B4161d39'),
621
- amountToSwitch: tokens_2.MAXUINT,
622
- user: web3Utils.toChecksumAddress('0xDd6ecD6c9b9F7e29E0f14bb9D5F0D0A3C6cB6c6A'),
623
- },
624
- [
625
- '0x0000000000000000000000006b175474e89094c44da98b954eedeac495271d0f',
626
- '0x0000000000000000000000000000000000000000000000000000000000000003',
627
- '0x000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48',
628
- '0x0000000000000000000000000000000000000000000000000000000000000001',
629
- '0x00000000000000000000000087870bca3f3fd6335c3f4ce8392d69d0b4161d39',
630
- '0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff',
631
- '0x000000000000000000000000dd6ecd6c9b9f7e29e0f14bb9d5f0d0a3c6cb6c6a',
632
- ],
633
- ],
634
- ];
635
- examples.forEach(([expected, actual]) => {
636
- it(`Given ${JSON.stringify(actual)} should return expected value: ${JSON.stringify(expected)}`, () => {
637
- (0, chai_1.expect)(subDataService.aaveV3DebtSwitchSubData.decode(actual)).to.eql(expected);
638
- });
639
- });
640
- });
641
- });
642
538
  describe('When testing subDataService.sparkCollateralSwitchSubData', () => {
643
539
  describe('encode()', () => {
644
540
  const examples = [