@defisaver/automation-sdk 3.3.8 → 3.3.10-aave-v4-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 (42) hide show
  1. package/cjs/constants/index.js +55 -0
  2. package/cjs/services/ethereumService.js +21 -14
  3. package/cjs/services/strategiesService.js +101 -0
  4. package/cjs/services/strategySubService.d.ts +8 -0
  5. package/cjs/services/strategySubService.js +47 -1
  6. package/cjs/services/strategySubService.test.js +143 -0
  7. package/cjs/services/subDataService.d.ts +302 -129
  8. package/cjs/services/subDataService.js +629 -372
  9. package/cjs/services/subDataService.test.js +213 -0
  10. package/cjs/services/triggerService.d.ts +29 -0
  11. package/cjs/services/triggerService.js +55 -1
  12. package/cjs/services/triggerService.test.js +84 -0
  13. package/cjs/types/enums.d.ts +14 -2
  14. package/cjs/types/enums.js +12 -0
  15. package/cjs/types/index.d.ts +22 -1
  16. package/esm/constants/index.js +55 -0
  17. package/esm/services/ethereumService.js +21 -14
  18. package/esm/services/strategiesService.js +102 -1
  19. package/esm/services/strategySubService.d.ts +8 -0
  20. package/esm/services/strategySubService.js +46 -0
  21. package/esm/services/strategySubService.test.js +144 -1
  22. package/esm/services/subDataService.d.ts +302 -129
  23. package/esm/services/subDataService.js +628 -371
  24. package/esm/services/subDataService.test.js +213 -0
  25. package/esm/services/triggerService.d.ts +29 -0
  26. package/esm/services/triggerService.js +54 -0
  27. package/esm/services/triggerService.test.js +85 -1
  28. package/esm/types/enums.d.ts +14 -2
  29. package/esm/types/enums.js +12 -0
  30. package/esm/types/index.d.ts +22 -1
  31. package/package.json +1 -1
  32. package/src/constants/index.ts +55 -0
  33. package/src/services/ethereumService.ts +23 -16
  34. package/src/services/strategiesService.ts +116 -1
  35. package/src/services/strategySubService.test.ts +180 -0
  36. package/src/services/strategySubService.ts +162 -2
  37. package/src/services/subDataService.test.ts +233 -0
  38. package/src/services/subDataService.ts +977 -703
  39. package/src/services/triggerService.test.ts +99 -0
  40. package/src/services/triggerService.ts +76 -1
  41. package/src/types/enums.ts +12 -0
  42. package/src/types/index.ts +27 -1
@@ -153,6 +153,66 @@ describe('Feature: subDataService.ts', () => {
153
153
  });
154
154
  });
155
155
 
156
+ describe('When testing subDataService.makerLeverageManagementWithoutSubProxy', () => {
157
+ describe('encode()', () => {
158
+ const examples: Array<[SubData, [vaultId: number, targetRatio: number, daiAddr?: EthereumAddress]]> = [
159
+ [
160
+ [
161
+ '0x00000000000000000000000000000000000000000000000000000000000000de', '0x00000000000000000000000000000000000000000000000018fae27693b40000',
162
+ '0x0000000000000000000000006b175474e89094c44da98b954eedeac495271d0f',
163
+ ],
164
+ [222, 180], // Uses default DAI address
165
+ ],
166
+ [
167
+ [
168
+ '0x000000000000000000000000000000000000000000000000000000000000014d', '0x0000000000000000000000000000000000000000000000001bc16d674ec80000',
169
+ '0x000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2',
170
+ ],
171
+ [333, 200, web3Utils.toChecksumAddress(getAssetInfo('WETH', ChainId.Ethereum).address)], // Custom address
172
+ ],
173
+ ];
174
+
175
+ examples.forEach(([expected, actual]) => {
176
+ it(`Given ${actual} should return expected value: ${expected}`, () => {
177
+ expect(subDataService.makerLeverageManagementWithoutSubProxy.encode(...actual)).to.eql(expected);
178
+ });
179
+ });
180
+ });
181
+
182
+ describe('decode()', () => {
183
+ const examples: Array<[{ vaultId: number, targetRatio: number, daiAddr: string }, SubData]> = [
184
+ [
185
+ {
186
+ vaultId: 222,
187
+ targetRatio: 180,
188
+ daiAddr: web3Utils.toChecksumAddress(getAssetInfo('DAI', ChainId.Ethereum).address),
189
+ },
190
+ [
191
+ '0x00000000000000000000000000000000000000000000000000000000000000de', '0x00000000000000000000000000000000000000000000000018fae27693b40000',
192
+ '0x0000000000000000000000006b175474e89094c44da98b954eedeac495271d0f',
193
+ ],
194
+ ],
195
+ [
196
+ {
197
+ vaultId: 333,
198
+ targetRatio: 200,
199
+ daiAddr: web3Utils.toChecksumAddress(getAssetInfo('WETH', ChainId.Ethereum).address),
200
+ },
201
+ [
202
+ '0x000000000000000000000000000000000000000000000000000000000000014d', '0x0000000000000000000000000000000000000000000000001bc16d674ec80000',
203
+ '0x000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2',
204
+ ],
205
+ ],
206
+ ];
207
+
208
+ examples.forEach(([expected, actual]) => {
209
+ it(`Given ${actual} should return expected value: ${JSON.stringify(expected)}`, () => {
210
+ expect(subDataService.makerLeverageManagementWithoutSubProxy.decode(actual)).to.eql(expected);
211
+ });
212
+ });
213
+ });
214
+ });
215
+
156
216
  describe('When testing subDataService.liquityLeverageManagementSubData', () => {
157
217
  describe('decode()', () => {
158
218
  const examples: Array<[{ targetRatio: number }, SubData]> = [
@@ -2203,4 +2263,177 @@ describe('Feature: subDataService.ts', () => {
2203
2263
  });
2204
2264
  });
2205
2265
  });
2266
+
2267
+ describe('When testing subDataService.aaveV4LeverageManagementSubData', () => {
2268
+ describe('encode()', () => {
2269
+ const examples: Array<[SubData, [spoke: EthereumAddress, owner: EthereumAddress, ratioState: RatioState, targetRatio: number]]> = [
2270
+ [
2271
+ ["0x0000000000000000000000002f39d218133afab8f2b819b1066c7e434ad94e9e","0x0000000000000000000000001031d218133afab8c2b819b1366c7e434ad91e9c","0x0000000000000000000000000000000000000000000000000000000000000001","0x00000000000000000000000000000000000000000000000014d1120d7b160000"],
2272
+ [web3Utils.toChecksumAddress('0x2f39d218133AFaB8F2B819B1066c7E434Ad94E9e'), web3Utils.toChecksumAddress('0x1031d218133AFaB8c2B819B1366c7E434Ad91E9c'), RatioState.UNDER, 150]
2273
+ ],
2274
+ ];
2275
+
2276
+ examples.forEach(([expected, actual]) => {
2277
+ it(`Given ${actual} should return expected value: ${expected}`, () => {
2278
+ expect(subDataService.aaveV4LeverageManagementSubData.encode(...actual)).to.eql(expected);
2279
+ });
2280
+ });
2281
+ });
2282
+
2283
+ describe('decode()', () => {
2284
+ const examples: Array<[{ spoke: EthereumAddress, owner: EthereumAddress, ratioState: RatioState, targetRatio: number }, SubData]> = [
2285
+ [
2286
+ {
2287
+ spoke: web3Utils.toChecksumAddress('0x2f39d218133AFaB8F2B819B1066c7E434Ad94E9e'),
2288
+ owner: web3Utils.toChecksumAddress('0x1031d218133AFaB8c2B819B1366c7E434Ad91E9c'),
2289
+ ratioState: RatioState.UNDER,
2290
+ targetRatio: 150,
2291
+ },
2292
+ ["0x0000000000000000000000002f39d218133afab8f2b819b1066c7e434ad94e9e","0x0000000000000000000000001031d218133afab8c2b819b1366c7e434ad91e9c","0x0000000000000000000000000000000000000000000000000000000000000001","0x00000000000000000000000000000000000000000000000014d1120d7b160000"],
2293
+ ],
2294
+ ];
2295
+
2296
+ examples.forEach(([expected, actual]) => {
2297
+ it(`Given ${actual} should return expected value: ${JSON.stringify(expected)}`, () => {
2298
+ expect(subDataService.aaveV4LeverageManagementSubData.decode(actual)).to.eql(expected);
2299
+ });
2300
+ });
2301
+ });
2302
+ });
2303
+
2304
+ describe('When testing subDataService.aaveV4LeverageManagementOnPriceSubData', () => {
2305
+ describe('encode()', () => {
2306
+ const examples: Array<[SubData, [spoke: EthereumAddress, owner: EthereumAddress, collAsset: EthereumAddress, collAssetId: number, debtAsset: EthereumAddress, debtAssetId: number, ratioState: RatioState, targetRatio: number]]> = [
2307
+ [
2308
+ ["0x0000000000000000000000002f39d218133afab8f2b819b1066c7e434ad94e9e","0x0000000000000000000000001031d218133afab8c2b819b1366c7e434ad91e9c","0x000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2","0x000000000000000000000000000000000000000000000000000000000000000a","0x000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48","0x0000000000000000000000000000000000000000000000000000000000000014","0x0000000000000000000000000000000000000000000000000000000000000000","0x00000000000000000000000000000000000000000000000016345785d8a00000"],
2309
+ [
2310
+ web3Utils.toChecksumAddress('0x2f39d218133AFaB8F2B819B1066c7E434Ad94E9e'), web3Utils.toChecksumAddress('0x1031d218133AFaB8c2B819B1366c7E434Ad91E9c'),
2311
+ web3Utils.toChecksumAddress('0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2'), 10,
2312
+ web3Utils.toChecksumAddress('0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48'), 20,
2313
+ RatioState.OVER, 160
2314
+ ]
2315
+ ],
2316
+ ];
2317
+
2318
+ examples.forEach(([expected, actual]) => {
2319
+ it(`Given ${actual} should return expected value: ${expected}`, () => {
2320
+ expect(subDataService.aaveV4LeverageManagementOnPriceSubData.encode(...actual)).to.eql(expected);
2321
+ });
2322
+ });
2323
+ });
2324
+
2325
+ describe('decode()', () => {
2326
+ const examples: Array<[{ spoke: EthereumAddress, owner: EthereumAddress, collAsset: EthereumAddress, collAssetId: number, debtAsset: EthereumAddress, debtAssetId: number, ratioState: RatioState, targetRatio: number }, SubData]> = [
2327
+ [
2328
+ {
2329
+ spoke: web3Utils.toChecksumAddress('0x2f39d218133AFaB8F2B819B1066c7E434Ad94E9e'),
2330
+ owner: web3Utils.toChecksumAddress('0x1031d218133AFaB8c2B819B1366c7E434Ad91E9c'),
2331
+ collAsset: web3Utils.toChecksumAddress('0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2'),
2332
+ collAssetId: 10,
2333
+ debtAsset: web3Utils.toChecksumAddress('0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48'),
2334
+ debtAssetId: 20,
2335
+ ratioState: RatioState.OVER,
2336
+ targetRatio: 160,
2337
+ },
2338
+ ["0x0000000000000000000000002f39d218133afab8f2b819b1066c7e434ad94e9e","0x0000000000000000000000001031d218133afab8c2b819b1366c7e434ad91e9c","0x000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2","0x000000000000000000000000000000000000000000000000000000000000000a","0x000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48","0x0000000000000000000000000000000000000000000000000000000000000014","0x0000000000000000000000000000000000000000000000000000000000000000","0x00000000000000000000000000000000000000000000000016345785d8a00000"],
2339
+ ],
2340
+ ];
2341
+
2342
+ examples.forEach(([expected, actual]) => {
2343
+ it(`Given ${actual} should return expected value: ${JSON.stringify(expected)}`, () => {
2344
+ expect(subDataService.aaveV4LeverageManagementOnPriceSubData.decode(actual)).to.eql(expected);
2345
+ });
2346
+ });
2347
+ });
2348
+ });
2349
+
2350
+ describe('When testing subDataService.aaveV4CloseSubData', () => {
2351
+ describe('encode()', () => {
2352
+ const examples: Array<[SubData, [spoke: EthereumAddress, owner: EthereumAddress, collAsset: EthereumAddress, collAssetId: number, debtAsset: EthereumAddress, debtAssetId: number, closeType: CloseStrategyType]]> = [
2353
+ [
2354
+ ["0x0000000000000000000000002f39d218133afab8f2b819b1066c7e434ad94e9e","0x0000000000000000000000001031d218133afab8c2b819b1366c7e434ad91e9c","0x000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2","0x000000000000000000000000000000000000000000000000000000000000000a","0x000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48","0x0000000000000000000000000000000000000000000000000000000000000014","0x0000000000000000000000000000000000000000000000000000000000000001"],
2355
+ [
2356
+ web3Utils.toChecksumAddress('0x2f39d218133AFaB8F2B819B1066c7E434Ad94E9e'), web3Utils.toChecksumAddress('0x1031d218133AFaB8c2B819B1366c7E434Ad91E9c'),
2357
+ web3Utils.toChecksumAddress('0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2'), 10,
2358
+ web3Utils.toChecksumAddress('0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48'), 20,
2359
+ CloseStrategyType.STOP_LOSS_IN_COLLATERAL
2360
+ ]
2361
+ ],
2362
+ ];
2363
+
2364
+ examples.forEach(([expected, actual]) => {
2365
+ it(`Given ${actual} should return expected value: ${expected}`, () => {
2366
+ expect(subDataService.aaveV4CloseSubData.encode(...actual)).to.eql(expected);
2367
+ });
2368
+ });
2369
+ });
2370
+
2371
+ describe('decode()', () => {
2372
+ const examples: Array<[{ spoke: EthereumAddress, owner: EthereumAddress, collAsset: EthereumAddress, collAssetId: number, debtAsset: EthereumAddress, debtAssetId: number, closeType: CloseStrategyType }, SubData]> = [
2373
+ [
2374
+ {
2375
+ spoke: web3Utils.toChecksumAddress('0x2f39d218133AFaB8F2B819B1066c7E434Ad94E9e'),
2376
+ owner: web3Utils.toChecksumAddress('0x1031d218133AFaB8c2B819B1366c7E434Ad91E9c'),
2377
+ collAsset: web3Utils.toChecksumAddress('0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2'),
2378
+ collAssetId: 10,
2379
+ debtAsset: web3Utils.toChecksumAddress('0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48'),
2380
+ debtAssetId: 20,
2381
+ closeType: CloseStrategyType.STOP_LOSS_IN_COLLATERAL,
2382
+ },
2383
+ ["0x0000000000000000000000002f39d218133afab8f2b819b1066c7e434ad94e9e","0x0000000000000000000000001031d218133afab8c2b819b1366c7e434ad91e9c","0x000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2","0x000000000000000000000000000000000000000000000000000000000000000a","0x000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48","0x0000000000000000000000000000000000000000000000000000000000000014","0x0000000000000000000000000000000000000000000000000000000000000001"],
2384
+ ],
2385
+ ];
2386
+
2387
+ examples.forEach(([expected, actual]) => {
2388
+ it(`Given ${actual} should return expected value: ${JSON.stringify(expected)}`, () => {
2389
+ expect(subDataService.aaveV4CloseSubData.decode(actual)).to.eql(expected);
2390
+ });
2391
+ });
2392
+ });
2393
+ });
2394
+
2395
+ describe('When testing subDataService.aaveV4CollateralSwitchSubData', () => {
2396
+ describe('encode()', () => {
2397
+ const examples: Array<[SubData, [spoke: EthereumAddress, owner: EthereumAddress, fromAsset: EthereumAddress, fromAssetId: number, toAsset: EthereumAddress, toAssetId: number, amountToSwitch: string]]> = [
2398
+ [
2399
+ ["0x0000000000000000000000002f39d218133afab8f2b819b1066c7e434ad94e9e","0x0000000000000000000000001031d218133afab8c2b819b1366c7e434ad91e9c","0x000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2","0x000000000000000000000000000000000000000000000000000000000000000a","0x000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48","0x0000000000000000000000000000000000000000000000000000000000000014","0x0000000000000000000000000000000000000000000000000de0b6b3a7640000"],
2400
+ [
2401
+ web3Utils.toChecksumAddress('0x2f39d218133AFaB8F2B819B1066c7E434Ad94E9e'), web3Utils.toChecksumAddress('0x1031d218133AFaB8c2B819B1366c7E434Ad91E9c'),
2402
+ web3Utils.toChecksumAddress('0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2'), 10,
2403
+ web3Utils.toChecksumAddress('0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48'), 20,
2404
+ '1000000000000000000'
2405
+ ]
2406
+ ],
2407
+ ];
2408
+
2409
+ examples.forEach(([expected, actual]) => {
2410
+ it(`Given ${actual} should return expected value: ${expected}`, () => {
2411
+ expect(subDataService.aaveV4CollateralSwitchSubData.encode(...actual)).to.eql(expected);
2412
+ });
2413
+ });
2414
+ });
2415
+
2416
+ describe('decode()', () => {
2417
+ const examples: Array<[{ spoke: EthereumAddress, owner: EthereumAddress, fromAsset: EthereumAddress, fromAssetId: number, toAsset: EthereumAddress, toAssetId: number, amountToSwitch: string }, SubData]> = [
2418
+ [
2419
+ {
2420
+ spoke: web3Utils.toChecksumAddress('0x2f39d218133AFaB8F2B819B1066c7E434Ad94E9e'),
2421
+ owner: web3Utils.toChecksumAddress('0x1031d218133AFaB8c2B819B1366c7E434Ad91E9c'),
2422
+ fromAsset: web3Utils.toChecksumAddress('0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2'),
2423
+ fromAssetId: 10,
2424
+ toAsset: web3Utils.toChecksumAddress('0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48'),
2425
+ toAssetId: 20,
2426
+ amountToSwitch: '1000000000000000000'
2427
+ },
2428
+ ["0x0000000000000000000000002f39d218133afab8f2b819b1066c7e434ad94e9e","0x0000000000000000000000001031d218133afab8c2b819b1366c7e434ad91e9c","0x000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2","0x000000000000000000000000000000000000000000000000000000000000000a","0x000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48","0x0000000000000000000000000000000000000000000000000000000000000014","0x0000000000000000000000000000000000000000000000000de0b6b3a7640000"],
2429
+ ],
2430
+ ];
2431
+
2432
+ examples.forEach(([expected, actual]) => {
2433
+ it(`Given ${actual} should return expected value: ${JSON.stringify(expected)}`, () => {
2434
+ expect(subDataService.aaveV4CollateralSwitchSubData.decode(actual)).to.eql(expected);
2435
+ });
2436
+ });
2437
+ });
2438
+ });
2206
2439
  });