@strkfarm/sdk 1.1.69 → 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.
- package/dist/cli.js +2 -2
- package/dist/cli.mjs +2 -2
- package/dist/index.browser.global.js +66861 -59746
- package/dist/index.browser.mjs +24970 -18579
- package/dist/index.d.ts +1969 -776
- package/dist/index.js +25259 -18845
- package/dist/index.mjs +25464 -19090
- package/package.json +80 -76
- package/src/data/extended-deposit.abi.json +3613 -0
- package/src/data/universal-vault.abi.json +135 -20
- package/src/dataTypes/address.ts +8 -1
- package/src/global.ts +240 -193
- package/src/interfaces/common.tsx +26 -2
- package/src/modules/ExtendedWrapperSDk/index.ts +62 -0
- package/src/modules/ExtendedWrapperSDk/types.ts +311 -0
- package/src/modules/ExtendedWrapperSDk/wrapper.ts +395 -0
- package/src/modules/avnu.ts +17 -4
- package/src/modules/ekubo-quoter.ts +99 -11
- package/src/modules/erc20.ts +67 -21
- package/src/modules/harvests.ts +16 -29
- package/src/modules/index.ts +5 -1
- package/src/modules/lst-apr.ts +36 -0
- package/src/modules/midas.ts +159 -0
- package/src/modules/pricer-from-api.ts +2 -2
- package/src/modules/pricer.ts +3 -38
- package/src/modules/token-market-data.ts +202 -0
- package/src/node/deployer.ts +1 -36
- package/src/strategies/autoCompounderStrk.ts +1 -1
- package/src/strategies/base-strategy.ts +20 -3
- package/src/strategies/ekubo-cl-vault.tsx +123 -306
- package/src/strategies/index.ts +4 -1
- package/src/strategies/svk-strategy.ts +247 -0
- package/src/strategies/universal-adapters/adapter-optimizer.ts +65 -0
- package/src/strategies/universal-adapters/adapter-utils.ts +5 -1
- package/src/strategies/universal-adapters/avnu-adapter.ts +418 -0
- package/src/strategies/universal-adapters/baseAdapter.ts +181 -153
- package/src/strategies/universal-adapters/common-adapter.ts +98 -77
- package/src/strategies/universal-adapters/extended-adapter.ts +544 -0
- package/src/strategies/universal-adapters/index.ts +5 -1
- package/src/strategies/universal-adapters/unused-balance-adapter.ts +109 -0
- package/src/strategies/universal-adapters/vesu-adapter.ts +220 -218
- package/src/strategies/universal-adapters/vesu-multiply-adapter.ts +924 -0
- package/src/strategies/universal-adapters/vesu-supply-only-adapter.ts +58 -51
- package/src/strategies/universal-lst-muliplier-strategy.tsx +707 -774
- package/src/strategies/universal-strategy.tsx +1098 -1180
- package/src/strategies/vesu-extended-strategy/services/operationService.ts +28 -0
- package/src/strategies/vesu-extended-strategy/utils/config.runtime.ts +77 -0
- package/src/strategies/vesu-extended-strategy/utils/constants.ts +48 -0
- package/src/strategies/vesu-extended-strategy/utils/helper.ts +374 -0
- package/src/strategies/vesu-extended-strategy/vesu-extended-strategy.tsx +992 -0
- package/src/strategies/vesu-rebalance.tsx +16 -19
- 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
|
|
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
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
}
|
|
286
|
-
|
|
287
|
-
static getDefaultModifyPositionCallParams(params: {
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
}) {
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
}
|
|
312
|
-
|
|
313
|
-
getModifyPositionCall = (params: VesuModifyPositionCallParams): ManageCall => {
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
}
|
|
368
|
-
|
|
369
|
-
getMultiplyAdapter = (id: string): LeafAdapterFn<VesuMultiplyCallParams> => {
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
}
|
|
388
|
-
|
|
389
|
-
getMultiplyCall = (params: VesuMultiplyCallParams): ManageCall => {
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
}
|
|
419
|
-
|
|
420
|
-
getVesuModifyDelegationAdapter = (id: string): LeafAdapterFn<VesuModifyDelegationCallParams> => {
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
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
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
}
|
|
480
|
-
|
|
481
|
-
getDefiSpringClaimCall = (): GenerateCallFn<VesuDefiSpringRewardsCallParams> => {
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
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() {
|