@strkfarm/sdk 1.1.70 → 2.0.0-dev.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.
Files changed (53) hide show
  1. package/dist/cli.js +2 -2
  2. package/dist/cli.mjs +2 -2
  3. package/dist/index.browser.global.js +66861 -59746
  4. package/dist/index.browser.mjs +24970 -18579
  5. package/dist/index.d.ts +1969 -776
  6. package/dist/index.js +25264 -18850
  7. package/dist/index.mjs +25463 -19089
  8. package/package.json +80 -76
  9. package/src/data/extended-deposit.abi.json +3613 -0
  10. package/src/data/universal-vault.abi.json +135 -20
  11. package/src/dataTypes/address.ts +8 -1
  12. package/src/global.ts +240 -193
  13. package/src/interfaces/common.tsx +26 -2
  14. package/src/modules/ExtendedWrapperSDk/index.ts +62 -0
  15. package/src/modules/ExtendedWrapperSDk/types.ts +311 -0
  16. package/src/modules/ExtendedWrapperSDk/wrapper.ts +395 -0
  17. package/src/modules/avnu.ts +17 -4
  18. package/src/modules/ekubo-quoter.ts +98 -10
  19. package/src/modules/erc20.ts +67 -21
  20. package/src/modules/harvests.ts +16 -29
  21. package/src/modules/index.ts +5 -1
  22. package/src/modules/lst-apr.ts +36 -0
  23. package/src/modules/midas.ts +159 -0
  24. package/src/modules/pricer-from-api.ts +2 -2
  25. package/src/modules/pricer-lst.ts +1 -1
  26. package/src/modules/pricer.ts +3 -38
  27. package/src/modules/token-market-data.ts +202 -0
  28. package/src/node/deployer.ts +1 -36
  29. package/src/strategies/autoCompounderStrk.ts +1 -1
  30. package/src/strategies/base-strategy.ts +20 -3
  31. package/src/strategies/ekubo-cl-vault.tsx +123 -306
  32. package/src/strategies/index.ts +4 -1
  33. package/src/strategies/svk-strategy.ts +247 -0
  34. package/src/strategies/universal-adapters/adapter-optimizer.ts +65 -0
  35. package/src/strategies/universal-adapters/adapter-utils.ts +5 -1
  36. package/src/strategies/universal-adapters/avnu-adapter.ts +418 -0
  37. package/src/strategies/universal-adapters/baseAdapter.ts +181 -153
  38. package/src/strategies/universal-adapters/common-adapter.ts +98 -77
  39. package/src/strategies/universal-adapters/extended-adapter.ts +544 -0
  40. package/src/strategies/universal-adapters/index.ts +5 -1
  41. package/src/strategies/universal-adapters/unused-balance-adapter.ts +109 -0
  42. package/src/strategies/universal-adapters/vesu-adapter.ts +220 -218
  43. package/src/strategies/universal-adapters/vesu-multiply-adapter.ts +924 -0
  44. package/src/strategies/universal-adapters/vesu-supply-only-adapter.ts +58 -51
  45. package/src/strategies/universal-lst-muliplier-strategy.tsx +707 -774
  46. package/src/strategies/universal-strategy.tsx +1098 -1180
  47. package/src/strategies/vesu-extended-strategy/services/operationService.ts +28 -0
  48. package/src/strategies/vesu-extended-strategy/utils/config.runtime.ts +77 -0
  49. package/src/strategies/vesu-extended-strategy/utils/constants.ts +48 -0
  50. package/src/strategies/vesu-extended-strategy/utils/helper.ts +374 -0
  51. package/src/strategies/vesu-extended-strategy/vesu-extended-strategy.tsx +992 -0
  52. package/src/strategies/vesu-rebalance.tsx +16 -19
  53. package/src/utils/health-factor-math.ts +11 -5
@@ -4,7 +4,7 @@ import { SIMPLE_SANITIZER, SIMPLE_SANITIZER_V2, SIMPLE_SANITIZER_VESU_V1_DELEGAT
4
4
  import { ContractAddr, Web3Number } from "@/dataTypes";
5
5
  import { AdapterLeafType, BaseAdapter, GenerateCallFn, LeafAdapterFn, ManageCall } from "./baseAdapter";
6
6
  import VesuSingletonAbi from '../../data/vesu-singleton.abi.json';
7
- import { getMainnetConfig, IConfig, TokenInfo, VaultPosition } from "@/interfaces";
7
+ import { getMainnetConfig, IConfig, Protocols, TokenInfo, VaultPosition } from "@/interfaces";
8
8
  import { PricerBase } from "@/modules/pricerBase";
9
9
  import VesuPoolIDs from "@/data/vesu_pools.json";
10
10
  import { getAPIUsingHeadlessBrowser } from "@/node/headless";
@@ -15,6 +15,7 @@ import VesuMultiplyAbi from '@/data/vesu-multiple.abi.json';
15
15
  import { EkuboPoolKey } from "../ekubo-cl-vault";
16
16
  import VesuPoolV2Abi from '@/data/vesu-pool-v2.abi.json';
17
17
  import VesuExtensionAbi from '@/data/vesu-extension.abi.json';
18
+ import { CacheClass } from "@/utils/cacheClass";
18
19
 
19
20
  interface VesuPoolsInfo { pools: any[]; isErrorPoolsAPI: boolean };
20
21
 
@@ -232,7 +233,8 @@ function getVesuMultiplyParams(isIncrease: boolean, params: IncreaseLeverParams
232
233
  export const VesuPools = {
233
234
  Genesis: ContractAddr.from('0x4dc4f0ca6ea4961e4c8373265bfd5317678f4fe374d76f3fd7135f57763bf28'),
234
235
  Re7xSTRK: ContractAddr.from('0x052fb52363939c3aa848f8f4ac28f0a51379f8d1b971d8444de25fbd77d8f161'),
235
- Re7xBTC: ContractAddr.from('0x3a8416bf20d036df5b1cf3447630a2e1cb04685f6b0c3a70ed7fb1473548ecf')
236
+ Re7xBTC: ContractAddr.from('0x3a8416bf20d036df5b1cf3447630a2e1cb04685f6b0c3a70ed7fb1473548ecf'),
237
+ Re7USDCPrime: ContractAddr.from('0x02eef0c13b10b487ea5916b54c0a7f98ec43fb3048f60fdeedaf5b08f6f88aaf'),
236
238
  }
237
239
 
238
240
  export const extensionMap: {[key: string]: ContractAddr} = {};
@@ -246,7 +248,7 @@ export function getVesuSingletonAddress(vesuPool: ContractAddr) {
246
248
  return {addr: vesuPool, isV2: true}; // Vesu v2
247
249
  }
248
250
 
249
- export class VesuAdapter extends BaseAdapter {
251
+ export class VesuAdapter extends CacheClass {
250
252
  VESU_MULTIPLY_V1 = ContractAddr.from('0x3630f1f8e5b8f5c4c4ae9b6620f8a570ae55cddebc0276c37550e7c118edf67');
251
253
  VESU_MULTIPLY = ContractAddr.from('0x027fef272d0a9a3844767c851a64b36fe4f0115141d81134baade95d2b27b781');
252
254
  config: VesuAdapterConfig;
@@ -258,184 +260,184 @@ export class VesuAdapter extends BaseAdapter {
258
260
  this.config = config;
259
261
  }
260
262
 
261
- getModifyPosition = (): AdapterLeafType<VesuModifyPositionCallParams> => {
262
- const positionData: bigint[] = [0n];
263
- const { addr, isV2 } = getVesuSingletonAddress(this.config.poolId);
264
- const commonPackedData: bigint[] = [
265
- toBigInt(this.config.collateral.address.toString()), // collateral
266
- toBigInt(this.config.debt.address.toString()), // debt
267
- toBigInt(this.config.vaultAllocator.toString()), // vault allocator
268
- ];
269
- const packedArguments: bigint[] = isV2 ? [
270
- ...commonPackedData
271
- ] : [
272
- toBigInt(this.config.poolId.toString()), // pool id
273
- ...commonPackedData,
274
- toBigInt(positionData.length),
275
- ...positionData
276
- ];
277
- const output = this.constructSimpleLeafData({
278
- id: this.config.id,
279
- target: addr,
280
- method: 'modify_position',
281
- packedArguments
282
- }, isV2 ? VESU_V2_MODIFY_POSITION_SANITIZER : SIMPLE_SANITIZER);
283
-
284
- return { leaf: output, callConstructor: this.getModifyPositionCall.bind(this) };
285
- }
286
-
287
- static getDefaultModifyPositionCallParams(params: {
288
- collateralAmount: Web3Number,
289
- isAddCollateral: boolean,
290
- debtAmount: Web3Number,
291
- isBorrow: boolean
292
- }) {
293
- return {
294
- collateralAmount: {
295
- amount_type: VesuAmountType.Delta,
296
- denomination: VesuAmountDenomination.Assets,
297
- value: {
298
- abs: params.collateralAmount,
299
- is_negative: !params.isAddCollateral
300
- }
301
- },
302
- debtAmount: {
303
- amount_type: VesuAmountType.Delta,
304
- denomination: VesuAmountDenomination.Assets,
305
- value: {
306
- abs: params.debtAmount,
307
- is_negative: !params.isBorrow
308
- }
309
- }
310
- }
311
- }
312
-
313
- getModifyPositionCall = (params: VesuModifyPositionCallParams): ManageCall => {
314
- // pub pool_id: felt252,
315
- // pub collateral_asset: ContractAddress,
316
- // pub debt_asset: ContractAddress,
317
- // pub user: ContractAddress,
318
- // pub collateral: Amount,
319
- // pub debt: Amount,
320
- // pub data: Span<felt252>,
321
- const _collateral = {
322
- amount_type: this.formatAmountTypeEnum(params.collateralAmount.amount_type),
323
- denomination: this.formatAmountDenominationEnum(params.collateralAmount.denomination),
324
- value: {
325
- abs: uint256.bnToUint256(params.collateralAmount.value.abs.toWei()),
326
- is_negative: params.collateralAmount.value.abs.isZero() ? false: params.collateralAmount.value.is_negative
327
- }
328
- };
329
- logger.verbose(`VesuAdapter::ConstructingModify::Collateral::${JSON.stringify(_collateral)}`)
330
- const _debt = {
331
- amount_type: this.formatAmountTypeEnum(params.debtAmount.amount_type),
332
- denomination: this.formatAmountDenominationEnum(params.debtAmount.denomination),
333
- value: {
334
- abs: uint256.bnToUint256(params.debtAmount.value.abs.toWei()),
335
- is_negative: params.debtAmount.value.abs.isZero() ? false: params.debtAmount.value.is_negative
336
- }
337
- };
338
- logger.verbose(`VesuAdapter::ConstructingModify::Debt::${JSON.stringify(_debt)}`)
339
- const { contract, isV2 } = this.getVesuSingletonContract(getMainnetConfig(), this.config.poolId);
340
- const call = contract.populate('modify_position', {
341
- params: isV2 ? {
342
- collateral_asset: this.config.collateral.address.toBigInt(),
343
- debt_asset: this.config.debt.address.toBigInt(),
344
- user: this.config.vaultAllocator.toBigInt(),
345
- collateral: _collateral,
346
- debt: _debt,
347
- } : {
348
- pool_id: this.config.poolId.toBigInt(),
349
- collateral_asset: this.config.collateral.address.toBigInt(),
350
- debt_asset: this.config.debt.address.toBigInt(),
351
- user: this.config.vaultAllocator.toBigInt(),
352
- collateral: _collateral,
353
- debt: _debt,
354
- data: [0]
355
- }
356
- });
357
- return {
358
- sanitizer: isV2 ? VESU_V2_MODIFY_POSITION_SANITIZER : SIMPLE_SANITIZER,
359
- call: {
360
- contractAddress: ContractAddr.from(contract.address),
361
- selector: hash.getSelectorFromName('modify_position'),
362
- calldata: [
363
- ...call.calldata as bigint[]
364
- ]
365
- }
366
- }
367
- }
368
-
369
- getMultiplyAdapter = (id: string): LeafAdapterFn<VesuMultiplyCallParams> => {
370
- return () => {
371
- const packedArguments: bigint[] = [
372
- toBigInt(this.config.poolId.toString()), // pool id
373
- toBigInt(this.config.collateral.address.toString()), // collateral
374
- toBigInt(this.config.debt.address.toString()), // debt
375
- toBigInt(this.config.vaultAllocator.toString()), // vault allocator
376
- ];
377
- const { isV2 } = getVesuSingletonAddress(this.config.poolId);
378
- const output = this.constructSimpleLeafData({
379
- id: id,
380
- target: isV2 ? this.VESU_MULTIPLY : this.VESU_MULTIPLY_V1,
381
- method: 'modify_lever',
382
- packedArguments
383
- }, SIMPLE_SANITIZER_V2);
384
-
385
- return { leaf: output, callConstructor: this.getMultiplyCall.bind(this) };
386
- }
387
- }
388
-
389
- getMultiplyCall = (params: VesuMultiplyCallParams): ManageCall => {
390
- const isIncrease = params.isIncrease;
391
- const multiplyParams = isIncrease ? params.increaseParams : params.decreaseParams;
392
- if (!multiplyParams) {
393
- throw new Error('Multiply params are not provided');
394
- }
395
- const { isV2 } = getVesuSingletonAddress(this.config.poolId);
396
- const VESU_MULTIPLY = isV2 ? this.VESU_MULTIPLY : this.VESU_MULTIPLY_V1;
397
- const multiplyContract = new Contract({abi: VesuMultiplyAbi, address: VESU_MULTIPLY.toString(), providerOrAccount: new RpcProvider({nodeUrl: ''})});
398
- const call = multiplyContract.populate('modify_lever', {
399
- modify_lever_params: getVesuMultiplyParams(isIncrease, {
400
- ...multiplyParams,
401
- user: this.config.vaultAllocator,
402
- pool_id: this.config.poolId,
403
- collateral_asset: this.config.collateral.address,
404
- debt_asset: this.config.debt.address,
405
- recipient: this.config.vaultAllocator
406
- })
407
- });
408
- return {
409
- sanitizer: SIMPLE_SANITIZER_V2,
410
- call: {
411
- contractAddress: VESU_MULTIPLY,
412
- selector: hash.getSelectorFromName('modify_lever'),
413
- calldata: [
414
- ...call.calldata as bigint[]
415
- ]
416
- }
417
- }
418
- }
419
-
420
- getVesuModifyDelegationAdapter = (id: string): LeafAdapterFn<VesuModifyDelegationCallParams> => {
421
- return () => {
422
- const { addr: VESU_SINGLETON, isV2 } = getVesuSingletonAddress(this.config.poolId);
423
- const packedArguments: bigint[] = isV2 ? [
424
- toBigInt(this.VESU_MULTIPLY.toString()), // v2
425
- ] : [
426
- this.config.poolId.toBigInt(),
427
- toBigInt(this.VESU_MULTIPLY_V1.toString()), // v1
428
- ];
429
- const output = this.constructSimpleLeafData({
430
- id: id,
431
- target: VESU_SINGLETON,
432
- method: 'modify_delegation',
433
- packedArguments
434
- }, isV2 ? SIMPLE_SANITIZER_V2 : SIMPLE_SANITIZER_VESU_V1_DELEGATIONS);
435
-
436
- return { leaf: output, callConstructor: this.getVesuModifyDelegationCall.bind(this) };
437
- }
438
- }
263
+ // getModifyPosition = (): AdapterLeafType<VesuModifyPositionCallParams> => {
264
+ // const positionData: bigint[] = [0n];
265
+ // const { addr, isV2 } = getVesuSingletonAddress(this.config.poolId);
266
+ // const commonPackedData: bigint[] = [
267
+ // toBigInt(this.config.collateral.address.toString()), // collateral
268
+ // toBigInt(this.config.debt.address.toString()), // debt
269
+ // toBigInt(this.config.vaultAllocator.toString()), // vault allocator
270
+ // ];
271
+ // const packedArguments: bigint[] = isV2 ? [
272
+ // ...commonPackedData
273
+ // ] : [
274
+ // toBigInt(this.config.poolId.toString()), // pool id
275
+ // ...commonPackedData,
276
+ // toBigInt(positionData.length),
277
+ // ...positionData
278
+ // ];
279
+ // const output = this.constructSimpleLeafData({
280
+ // id: this.config.id,
281
+ // target: addr,
282
+ // method: 'modify_position',
283
+ // packedArguments
284
+ // }, isV2 ? VESU_V2_MODIFY_POSITION_SANITIZER : SIMPLE_SANITIZER);
285
+
286
+ // return { leaf: output, callConstructor: this.getModifyPositionCall.bind(this) };
287
+ // }
288
+
289
+ // static getDefaultModifyPositionCallParams(params: {
290
+ // collateralAmount: Web3Number,
291
+ // isAddCollateral: boolean,
292
+ // debtAmount: Web3Number,
293
+ // isBorrow: boolean
294
+ // }) {
295
+ // return {
296
+ // collateralAmount: {
297
+ // amount_type: VesuAmountType.Delta,
298
+ // denomination: VesuAmountDenomination.Assets,
299
+ // value: {
300
+ // abs: params.collateralAmount,
301
+ // is_negative: !params.isAddCollateral
302
+ // }
303
+ // },
304
+ // debtAmount: {
305
+ // amount_type: VesuAmountType.Delta,
306
+ // denomination: VesuAmountDenomination.Assets,
307
+ // value: {
308
+ // abs: params.debtAmount,
309
+ // is_negative: !params.isBorrow
310
+ // }
311
+ // }
312
+ // }
313
+ // }
314
+
315
+ // getModifyPositionCall = (params: VesuModifyPositionCallParams): ManageCall => {
316
+ // // pub pool_id: felt252,
317
+ // // pub collateral_asset: ContractAddress,
318
+ // // pub debt_asset: ContractAddress,
319
+ // // pub user: ContractAddress,
320
+ // // pub collateral: Amount,
321
+ // // pub debt: Amount,
322
+ // // pub data: Span<felt252>,
323
+ // const _collateral = {
324
+ // amount_type: this.formatAmountTypeEnum(params.collateralAmount.amount_type),
325
+ // denomination: this.formatAmountDenominationEnum(params.collateralAmount.denomination),
326
+ // value: {
327
+ // abs: uint256.bnToUint256(params.collateralAmount.value.abs.toWei()),
328
+ // is_negative: params.collateralAmount.value.abs.isZero() ? false: params.collateralAmount.value.is_negative
329
+ // }
330
+ // };
331
+ // logger.verbose(`VesuAdapter::ConstructingModify::Collateral::${JSON.stringify(_collateral)}`)
332
+ // const _debt = {
333
+ // amount_type: this.formatAmountTypeEnum(params.debtAmount.amount_type),
334
+ // denomination: this.formatAmountDenominationEnum(params.debtAmount.denomination),
335
+ // value: {
336
+ // abs: uint256.bnToUint256(params.debtAmount.value.abs.toWei()),
337
+ // is_negative: params.debtAmount.value.abs.isZero() ? false: params.debtAmount.value.is_negative
338
+ // }
339
+ // };
340
+ // logger.verbose(`VesuAdapter::ConstructingModify::Debt::${JSON.stringify(_debt)}`)
341
+ // const { contract, isV2 } = this.getVesuSingletonContract(getMainnetConfig(), this.config.poolId);
342
+ // const call = contract.populate('modify_position', {
343
+ // params: isV2 ? {
344
+ // collateral_asset: this.config.collateral.address.toBigInt(),
345
+ // debt_asset: this.config.debt.address.toBigInt(),
346
+ // user: this.config.vaultAllocator.toBigInt(),
347
+ // collateral: _collateral,
348
+ // debt: _debt,
349
+ // } : {
350
+ // pool_id: this.config.poolId.toBigInt(),
351
+ // collateral_asset: this.config.collateral.address.toBigInt(),
352
+ // debt_asset: this.config.debt.address.toBigInt(),
353
+ // user: this.config.vaultAllocator.toBigInt(),
354
+ // collateral: _collateral,
355
+ // debt: _debt,
356
+ // data: [0]
357
+ // }
358
+ // });
359
+ // return {
360
+ // sanitizer: isV2 ? VESU_V2_MODIFY_POSITION_SANITIZER : SIMPLE_SANITIZER,
361
+ // call: {
362
+ // contractAddress: ContractAddr.from(contract.address),
363
+ // selector: hash.getSelectorFromName('modify_position'),
364
+ // calldata: [
365
+ // ...call.calldata as bigint[]
366
+ // ]
367
+ // }
368
+ // }
369
+ // }
370
+
371
+ // getMultiplyAdapter = (id: string): LeafAdapterFn<VesuMultiplyCallParams> => {
372
+ // return () => {
373
+ // const packedArguments: bigint[] = [
374
+ // toBigInt(this.config.poolId.toString()), // pool id
375
+ // toBigInt(this.config.collateral.address.toString()), // collateral
376
+ // toBigInt(this.config.debt.address.toString()), // debt
377
+ // toBigInt(this.config.vaultAllocator.toString()), // vault allocator
378
+ // ];
379
+ // const { isV2 } = getVesuSingletonAddress(this.config.poolId);
380
+ // const output = this.constructSimpleLeafData({
381
+ // id: id,
382
+ // target: isV2 ? this.VESU_MULTIPLY : this.VESU_MULTIPLY_V1,
383
+ // method: 'modify_lever',
384
+ // packedArguments
385
+ // }, SIMPLE_SANITIZER_V2);
386
+
387
+ // return { leaf: output, callConstructor: this.getMultiplyCall.bind(this) };
388
+ // }
389
+ // }
390
+
391
+ // getMultiplyCall = (params: VesuMultiplyCallParams): ManageCall => {
392
+ // const isIncrease = params.isIncrease;
393
+ // const multiplyParams = isIncrease ? params.increaseParams : params.decreaseParams;
394
+ // if (!multiplyParams) {
395
+ // throw new Error('Multiply params are not provided');
396
+ // }
397
+ // const { isV2 } = getVesuSingletonAddress(this.config.poolId);
398
+ // const VESU_MULTIPLY = isV2 ? this.VESU_MULTIPLY : this.VESU_MULTIPLY_V1;
399
+ // const multiplyContract = new Contract({abi: VesuMultiplyAbi, address: VESU_MULTIPLY.toString(), providerOrAccount: new RpcProvider({nodeUrl: ''})});
400
+ // const call = multiplyContract.populate('modify_lever', {
401
+ // modify_lever_params: getVesuMultiplyParams(isIncrease, {
402
+ // ...multiplyParams,
403
+ // user: this.config.vaultAllocator,
404
+ // pool_id: this.config.poolId,
405
+ // collateral_asset: this.config.collateral.address,
406
+ // debt_asset: this.config.debt.address,
407
+ // recipient: this.config.vaultAllocator
408
+ // })
409
+ // });
410
+ // return {
411
+ // sanitizer: SIMPLE_SANITIZER_V2,
412
+ // call: {
413
+ // contractAddress: VESU_MULTIPLY,
414
+ // selector: hash.getSelectorFromName('modify_lever'),
415
+ // calldata: [
416
+ // ...call.calldata as bigint[]
417
+ // ]
418
+ // }
419
+ // }
420
+ // }
421
+
422
+ // getVesuModifyDelegationAdapter = (id: string): LeafAdapterFn<VesuModifyDelegationCallParams> => {
423
+ // return () => {
424
+ // const { addr: VESU_SINGLETON, isV2 } = getVesuSingletonAddress(this.config.poolId);
425
+ // const packedArguments: bigint[] = isV2 ? [
426
+ // toBigInt(this.VESU_MULTIPLY.toString()), // v2
427
+ // ] : [
428
+ // this.config.poolId.toBigInt(),
429
+ // toBigInt(this.VESU_MULTIPLY_V1.toString()), // v1
430
+ // ];
431
+ // const output = this.constructSimpleLeafData({
432
+ // id: id,
433
+ // target: VESU_SINGLETON,
434
+ // method: 'modify_delegation',
435
+ // packedArguments
436
+ // }, isV2 ? SIMPLE_SANITIZER_V2 : SIMPLE_SANITIZER_VESU_V1_DELEGATIONS);
437
+
438
+ // return { leaf: output, callConstructor: this.getVesuModifyDelegationCall.bind(this) };
439
+ // }
440
+ // }
439
441
 
440
442
  getVesuModifyDelegationCall = (params: VesuModifyDelegationCallParams): ManageCall => {
441
443
  const VESU_SINGLETON = getVesuSingletonAddress(this.config.poolId).addr;
@@ -460,38 +462,38 @@ export class VesuAdapter extends BaseAdapter {
460
462
  }
461
463
  }
462
464
 
463
- getDefispringRewardsAdapter = (id: string): () => AdapterLeafType<VesuDefiSpringRewardsCallParams> => {
464
- return () => {
465
- const packedArguments: bigint[] = [];
466
- const output = {
467
- id: BigInt(num.getDecimalString(shortString.encodeShortString(id))),
468
- readableId: id,
469
- data: [
470
- SIMPLE_SANITIZER.toBigInt(), // sanitizer address
471
- VESU_REWARDS_CONTRACT.toBigInt(), // contract
472
- toBigInt(hash.getSelectorFromName("claim")), // method name
473
- BigInt(packedArguments.length),
474
- ...packedArguments
475
- ]
476
- };
477
- return { leaf: output, callConstructor: this.getDefiSpringClaimCall().bind(this) };
478
- }
479
- }
480
-
481
- getDefiSpringClaimCall = (): GenerateCallFn<VesuDefiSpringRewardsCallParams> => {
482
- return (params: VesuDefiSpringRewardsCallParams) => ({
483
- sanitizer: SIMPLE_SANITIZER,
484
- call: {
485
- contractAddress: VESU_REWARDS_CONTRACT,
486
- selector: hash.getSelectorFromName('claim'),
487
- calldata: [
488
- BigInt(params.amount.toWei()),
489
- BigInt(params.proofs.length),
490
- ...params.proofs.map(proof => BigInt(num.hexToDecimalString(proof)))
491
- ]
492
- }
493
- })
494
- }
465
+ // getDefispringRewardsAdapter = (id: string): () => AdapterLeafType<VesuDefiSpringRewardsCallParams> => {
466
+ // return () => {
467
+ // const packedArguments: bigint[] = [];
468
+ // const output = {
469
+ // id: BigInt(num.getDecimalString(shortString.encodeShortString(id))),
470
+ // readableId: id,
471
+ // data: [
472
+ // SIMPLE_SANITIZER.toBigInt(), // sanitizer address
473
+ // VESU_REWARDS_CONTRACT.toBigInt(), // contract
474
+ // toBigInt(hash.getSelectorFromName("claim")), // method name
475
+ // BigInt(packedArguments.length),
476
+ // ...packedArguments
477
+ // ]
478
+ // };
479
+ // return { leaf: output, callConstructor: this.getDefiSpringClaimCall().bind(this) };
480
+ // }
481
+ // }
482
+
483
+ // getDefiSpringClaimCall = (): GenerateCallFn<VesuDefiSpringRewardsCallParams> => {
484
+ // return (params: VesuDefiSpringRewardsCallParams) => ({
485
+ // sanitizer: SIMPLE_SANITIZER,
486
+ // call: {
487
+ // contractAddress: VESU_REWARDS_CONTRACT,
488
+ // selector: hash.getSelectorFromName('claim'),
489
+ // calldata: [
490
+ // BigInt(params.amount.toWei()),
491
+ // BigInt(params.proofs.length),
492
+ // ...params.proofs.map(proof => BigInt(num.hexToDecimalString(proof)))
493
+ // ]
494
+ // }
495
+ // })
496
+ // }
495
497
 
496
498
  formatAmountTypeEnum(amountType: VesuAmountType) {
497
499
  switch(amountType) {
@@ -600,7 +602,7 @@ export class VesuAdapter extends BaseAdapter {
600
602
  }
601
603
 
602
604
  async getLTVConfig(config: IConfig, blockNumber: BlockIdentifier = 'latest') {
603
- const CACHE_KEY = `ltv_config_${blockNumber}`;
605
+ const CACHE_KEY = `ltv_config_${blockNumber}_${this.config.poolId.shortString()}_${this.config.collateral.symbol}_${this.config.debt.symbol}`;
604
606
  const cacheData = this.getCache<number>(CACHE_KEY);
605
607
  if (cacheData) {
606
608
  return cacheData as number;
@@ -626,7 +628,7 @@ export class VesuAdapter extends BaseAdapter {
626
628
  throw new Error('Pricer is not initialized');
627
629
  }
628
630
  // { '0': { collateral_shares: 0n, nominal_debt: 0n }, '1': 0n, '2': 0n }
629
- const CACHE_KEY = `positions_${blockNumber}`;
631
+ const CACHE_KEY = `positions_${blockNumber}_${this.config.poolId.shortString()}_${this.config.collateral.symbol}_${this.config.debt.symbol}`;
630
632
  const cacheData = this.getCache<VaultPosition[]>(CACHE_KEY);
631
633
  if (cacheData) {
632
634
  return cacheData;
@@ -660,7 +662,7 @@ export class VesuAdapter extends BaseAdapter {
660
662
  remarks: "Debt"
661
663
  }];
662
664
  this.setCache(CACHE_KEY, value, 60000); // ttl: 1min
663
- return value;
665
+ return value.map(v => ({ ...v, protocol: Protocols.VESU }));
664
666
  }
665
667
 
666
668
  async getCollateralization(config: IConfig, blockNumber: BlockIdentifier = 'latest'): Promise<Omit<VaultPosition, 'amount'>[]> {
@@ -668,7 +670,7 @@ export class VesuAdapter extends BaseAdapter {
668
670
  throw new Error('Pricer is not initialized');
669
671
  }
670
672
  // { '0': bool, '1': 0n, '2': 0n }
671
- const CACHE_KEY = `collateralization_${blockNumber}`;
673
+ const CACHE_KEY = `collateralization_${blockNumber}_${this.config.poolId.shortString()}_${this.config.collateral.symbol}_${this.config.debt.symbol}`;
672
674
  const cacheData = this.getCache<Omit<VaultPosition, 'amount'>[]>(CACHE_KEY);
673
675
  if (cacheData) {
674
676
  return cacheData;
@@ -696,7 +698,7 @@ export class VesuAdapter extends BaseAdapter {
696
698
  remarks: "Debt"
697
699
  }];
698
700
  this.setCache(CACHE_KEY, value, 60000); // ttl: 1min
699
- return value;
701
+ return value.map(v => ({ ...v, protocol: Protocols.VESU }));
700
702
  }
701
703
 
702
704
  async getAssetPrices() {