@strkfarm/sdk 1.0.25 → 1.0.27
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 -0
- package/dist/cli.mjs +2 -0
- package/dist/index.browser.global.js +47 -39
- package/dist/index.browser.mjs +47 -39
- package/dist/index.d.ts +21 -0
- package/dist/index.js +47 -39
- package/dist/index.mjs +47 -39
- package/package.json +1 -1
- package/src/strategies/vesu-rebalance.ts +55 -39
package/dist/cli.js
CHANGED
|
@@ -574,6 +574,7 @@ var VesuRebalanceStrategies = [{
|
|
|
574
574
|
address: ContractAddr.from("0x115e94e722cfc4c77a2f15c4aefb0928c1c0029e5a57570df24c650cb7cec2c"),
|
|
575
575
|
type: "ERC4626",
|
|
576
576
|
depositTokens: [Global.getDefaultTokens().find((t) => t.symbol === "USDT")],
|
|
577
|
+
auditUrl: AUDIT_URL,
|
|
577
578
|
protocols: [_protocol],
|
|
578
579
|
maxTVL: Web3Number.fromWei("0", 6),
|
|
579
580
|
risk: {
|
|
@@ -590,6 +591,7 @@ var VesuRebalanceStrategies = [{
|
|
|
590
591
|
// address: ContractAddr.from('0x778007f8136a5b827325d21613803e796bda4d676fbe1e34aeab0b2a2ec027f'),
|
|
591
592
|
// type: 'ERC4626',
|
|
592
593
|
// depositTokens: [Global.getDefaultTokens().find(t => t.symbol === 'WBTC')!],
|
|
594
|
+
// auditUrl: AUDIT_URL,
|
|
593
595
|
// protocols: [_protocol],
|
|
594
596
|
// maxTVL: Web3Number.fromWei('0', 8),
|
|
595
597
|
// risk: {
|
package/dist/cli.mjs
CHANGED
|
@@ -551,6 +551,7 @@ var VesuRebalanceStrategies = [{
|
|
|
551
551
|
address: ContractAddr.from("0x115e94e722cfc4c77a2f15c4aefb0928c1c0029e5a57570df24c650cb7cec2c"),
|
|
552
552
|
type: "ERC4626",
|
|
553
553
|
depositTokens: [Global.getDefaultTokens().find((t) => t.symbol === "USDT")],
|
|
554
|
+
auditUrl: AUDIT_URL,
|
|
554
555
|
protocols: [_protocol],
|
|
555
556
|
maxTVL: Web3Number.fromWei("0", 6),
|
|
556
557
|
risk: {
|
|
@@ -567,6 +568,7 @@ var VesuRebalanceStrategies = [{
|
|
|
567
568
|
// address: ContractAddr.from('0x778007f8136a5b827325d21613803e796bda4d676fbe1e34aeab0b2a2ec027f'),
|
|
568
569
|
// type: 'ERC4626',
|
|
569
570
|
// depositTokens: [Global.getDefaultTokens().find(t => t.symbol === 'WBTC')!],
|
|
571
|
+
// auditUrl: AUDIT_URL,
|
|
570
572
|
// protocols: [_protocol],
|
|
571
573
|
// maxTVL: Web3Number.fromWei('0', 8),
|
|
572
574
|
// risk: {
|
|
@@ -38661,6 +38661,50 @@ var strkfarm_risk_engine = (() => {
|
|
|
38661
38661
|
}).filter((p) => p !== null);
|
|
38662
38662
|
return pools;
|
|
38663
38663
|
}
|
|
38664
|
+
async getPoolInfo(p, pools, vesuPositions, totalAssets, isErrorPositionsAPI, isErrorPoolsAPI) {
|
|
38665
|
+
const vesuPosition = vesuPositions.find((d) => d.pool.id.toString() === num_exports.getDecimalString(p.pool_id.address.toString()));
|
|
38666
|
+
const _pool = pools.find((d) => {
|
|
38667
|
+
logger.verbose(`pool check: ${d.id == num_exports.getDecimalString(p.pool_id.address.toString())}, id: ${d.id}, pool_id: ${num_exports.getDecimalString(p.pool_id.address.toString())}`);
|
|
38668
|
+
return d.id == num_exports.getDecimalString(p.pool_id.address.toString());
|
|
38669
|
+
});
|
|
38670
|
+
logger.verbose(`pool: ${JSON.stringify(_pool)}`);
|
|
38671
|
+
logger.verbose(typeof _pool);
|
|
38672
|
+
logger.verbose(`name: ${_pool?.name}`);
|
|
38673
|
+
const name = _pool?.name;
|
|
38674
|
+
logger.verbose(`name2: ${name}`);
|
|
38675
|
+
const assetInfo = _pool?.assets.find((d) => this.asset().address.eqString(d.address));
|
|
38676
|
+
if (!name) {
|
|
38677
|
+
throw new Error(`Pool name ${p.pool_id.address.toString()} not found`);
|
|
38678
|
+
}
|
|
38679
|
+
if (!assetInfo) {
|
|
38680
|
+
throw new Error(`Asset ${this.asset().address.toString()} not found in pool ${p.pool_id.address.toString()}`);
|
|
38681
|
+
}
|
|
38682
|
+
let vTokenContract = new Contract(vesu_rebalance_abi_default, p.v_token.address, this.config.provider);
|
|
38683
|
+
const bal = await vTokenContract.balanceOf(this.address.address);
|
|
38684
|
+
const assets = await vTokenContract.convert_to_assets(uint256_exports.bnToUint256(bal.toString()));
|
|
38685
|
+
const item = {
|
|
38686
|
+
pool_id: p.pool_id,
|
|
38687
|
+
pool_name: _pool?.name,
|
|
38688
|
+
max_weight: p.max_weight,
|
|
38689
|
+
current_weight: isErrorPositionsAPI || !vesuPosition ? 0 : Number(Web3Number.fromWei(vesuPosition.collateral.value, this.decimals()).dividedBy(totalAssets.toString()).toFixed(6)),
|
|
38690
|
+
v_token: p.v_token,
|
|
38691
|
+
amount: Web3Number.fromWei(assets.toString(), this.decimals()),
|
|
38692
|
+
usdValue: isErrorPositionsAPI || !vesuPosition ? Web3Number.fromWei("0", this.decimals()) : Web3Number.fromWei(vesuPosition.collateral.usdPrice.value, vesuPosition.collateral.usdPrice.decimals),
|
|
38693
|
+
APY: isErrorPoolsAPI || !assetInfo ? {
|
|
38694
|
+
baseApy: 0,
|
|
38695
|
+
defiSpringApy: 0,
|
|
38696
|
+
netApy: 0
|
|
38697
|
+
} : {
|
|
38698
|
+
baseApy: Number(Web3Number.fromWei(assetInfo.stats.supplyApy.value, assetInfo.stats.supplyApy.decimals).toFixed(6)),
|
|
38699
|
+
defiSpringApy: Number(Web3Number.fromWei(assetInfo.stats.defiSpringSupplyApr.value, assetInfo.stats.defiSpringSupplyApr.decimals).toFixed(6)),
|
|
38700
|
+
netApy: 0
|
|
38701
|
+
},
|
|
38702
|
+
currentUtilization: isErrorPoolsAPI || !assetInfo ? 0 : Number(Web3Number.fromWei(assetInfo.stats.currentUtilization.value, assetInfo.stats.currentUtilization.decimals).toFixed(6)),
|
|
38703
|
+
maxUtilization: isErrorPoolsAPI || !assetInfo ? 0 : Number(Web3Number.fromWei(assetInfo.config.maxUtilization.value, assetInfo.config.maxUtilization.decimals).toFixed(6))
|
|
38704
|
+
};
|
|
38705
|
+
item.APY.netApy = item.APY.baseApy + item.APY.defiSpringApy;
|
|
38706
|
+
return item;
|
|
38707
|
+
}
|
|
38664
38708
|
/**
|
|
38665
38709
|
* Retrieves the list of allowed pools and their detailed information from multiple sources:
|
|
38666
38710
|
* 1. Contract's allowed pools
|
|
@@ -38699,45 +38743,7 @@ var strkfarm_risk_engine = (() => {
|
|
|
38699
38743
|
isErrorPoolsAPI = true;
|
|
38700
38744
|
}
|
|
38701
38745
|
const totalAssets = (await this.getTVL()).amount;
|
|
38702
|
-
const info = allowedPools.map(
|
|
38703
|
-
const vesuPosition = vesuPositions.find((d) => d.pool.id.toString() === num_exports.getDecimalString(p.pool_id.address.toString()));
|
|
38704
|
-
const _pool = pools.find((d) => {
|
|
38705
|
-
logger.verbose(`pool check: ${d.id == num_exports.getDecimalString(p.pool_id.address.toString())}, id: ${d.id}, pool_id: ${num_exports.getDecimalString(p.pool_id.address.toString())}`);
|
|
38706
|
-
return d.id == num_exports.getDecimalString(p.pool_id.address.toString());
|
|
38707
|
-
});
|
|
38708
|
-
logger.verbose(`pool: ${JSON.stringify(_pool)}`);
|
|
38709
|
-
logger.verbose(typeof _pool);
|
|
38710
|
-
logger.verbose(`name: ${_pool?.name}`);
|
|
38711
|
-
if (!_pool) {
|
|
38712
|
-
throw new Error(`Pool ${p.pool_id.address.toString()} not found`);
|
|
38713
|
-
}
|
|
38714
|
-
const assetInfo = _pool?.assets.find((d) => this.asset().address.eqString(d.address));
|
|
38715
|
-
let vTokenContract = new Contract(vesu_rebalance_abi_default, p.v_token.address, this.config.provider);
|
|
38716
|
-
const bal = await vTokenContract.balanceOf(this.address.address);
|
|
38717
|
-
const assets = await vTokenContract.convert_to_assets(uint256_exports.bnToUint256(bal.toString()));
|
|
38718
|
-
const item = {
|
|
38719
|
-
pool_id: p.pool_id,
|
|
38720
|
-
pool_name: _pool?.name,
|
|
38721
|
-
max_weight: p.max_weight,
|
|
38722
|
-
current_weight: isErrorPositionsAPI || !vesuPosition ? 0 : Number(Web3Number.fromWei(vesuPosition.collateral.value, this.decimals()).dividedBy(totalAssets.toString()).toFixed(6)),
|
|
38723
|
-
v_token: p.v_token,
|
|
38724
|
-
amount: Web3Number.fromWei(assets.toString(), this.decimals()),
|
|
38725
|
-
usdValue: isErrorPositionsAPI || !vesuPosition ? Web3Number.fromWei("0", this.decimals()) : Web3Number.fromWei(vesuPosition.collateral.usdPrice.value, vesuPosition.collateral.usdPrice.decimals),
|
|
38726
|
-
APY: isErrorPoolsAPI || !assetInfo ? {
|
|
38727
|
-
baseApy: 0,
|
|
38728
|
-
defiSpringApy: 0,
|
|
38729
|
-
netApy: 0
|
|
38730
|
-
} : {
|
|
38731
|
-
baseApy: Number(Web3Number.fromWei(assetInfo.stats.supplyApy.value, assetInfo.stats.supplyApy.decimals).toFixed(6)),
|
|
38732
|
-
defiSpringApy: Number(Web3Number.fromWei(assetInfo.stats.defiSpringSupplyApr.value, assetInfo.stats.defiSpringSupplyApr.decimals).toFixed(6)),
|
|
38733
|
-
netApy: 0
|
|
38734
|
-
},
|
|
38735
|
-
currentUtilization: isErrorPoolsAPI || !assetInfo ? 0 : Number(Web3Number.fromWei(assetInfo.stats.currentUtilization.value, assetInfo.stats.currentUtilization.decimals).toFixed(6)),
|
|
38736
|
-
maxUtilization: isErrorPoolsAPI || !assetInfo ? 0 : Number(Web3Number.fromWei(assetInfo.config.maxUtilization.value, assetInfo.config.maxUtilization.decimals).toFixed(6))
|
|
38737
|
-
};
|
|
38738
|
-
item.APY.netApy = item.APY.baseApy + item.APY.defiSpringApy;
|
|
38739
|
-
return item;
|
|
38740
|
-
});
|
|
38746
|
+
const info = allowedPools.map((p) => this.getPoolInfo(p, pools, vesuPositions, totalAssets, isErrorPositionsAPI, isErrorPoolsAPI));
|
|
38741
38747
|
const data = await Promise.all(info);
|
|
38742
38748
|
return {
|
|
38743
38749
|
data,
|
|
@@ -38962,6 +38968,7 @@ var strkfarm_risk_engine = (() => {
|
|
|
38962
38968
|
address: ContractAddr.from("0x115e94e722cfc4c77a2f15c4aefb0928c1c0029e5a57570df24c650cb7cec2c"),
|
|
38963
38969
|
type: "ERC4626",
|
|
38964
38970
|
depositTokens: [Global.getDefaultTokens().find((t) => t.symbol === "USDT")],
|
|
38971
|
+
auditUrl: AUDIT_URL,
|
|
38965
38972
|
protocols: [_protocol],
|
|
38966
38973
|
maxTVL: Web3Number.fromWei("0", 6),
|
|
38967
38974
|
risk: {
|
|
@@ -38978,6 +38985,7 @@ var strkfarm_risk_engine = (() => {
|
|
|
38978
38985
|
// address: ContractAddr.from('0x778007f8136a5b827325d21613803e796bda4d676fbe1e34aeab0b2a2ec027f'),
|
|
38979
38986
|
// type: 'ERC4626',
|
|
38980
38987
|
// depositTokens: [Global.getDefaultTokens().find(t => t.symbol === 'WBTC')!],
|
|
38988
|
+
// auditUrl: AUDIT_URL,
|
|
38981
38989
|
// protocols: [_protocol],
|
|
38982
38990
|
// maxTVL: Web3Number.fromWei('0', 8),
|
|
38983
38991
|
// risk: {
|
package/dist/index.browser.mjs
CHANGED
|
@@ -3673,6 +3673,50 @@ var VesuRebalance = class _VesuRebalance extends BaseStrategy {
|
|
|
3673
3673
|
}).filter((p) => p !== null);
|
|
3674
3674
|
return pools;
|
|
3675
3675
|
}
|
|
3676
|
+
async getPoolInfo(p, pools, vesuPositions, totalAssets, isErrorPositionsAPI, isErrorPoolsAPI) {
|
|
3677
|
+
const vesuPosition = vesuPositions.find((d) => d.pool.id.toString() === num2.getDecimalString(p.pool_id.address.toString()));
|
|
3678
|
+
const _pool = pools.find((d) => {
|
|
3679
|
+
logger.verbose(`pool check: ${d.id == num2.getDecimalString(p.pool_id.address.toString())}, id: ${d.id}, pool_id: ${num2.getDecimalString(p.pool_id.address.toString())}`);
|
|
3680
|
+
return d.id == num2.getDecimalString(p.pool_id.address.toString());
|
|
3681
|
+
});
|
|
3682
|
+
logger.verbose(`pool: ${JSON.stringify(_pool)}`);
|
|
3683
|
+
logger.verbose(typeof _pool);
|
|
3684
|
+
logger.verbose(`name: ${_pool?.name}`);
|
|
3685
|
+
const name = _pool?.name;
|
|
3686
|
+
logger.verbose(`name2: ${name}`);
|
|
3687
|
+
const assetInfo = _pool?.assets.find((d) => this.asset().address.eqString(d.address));
|
|
3688
|
+
if (!name) {
|
|
3689
|
+
throw new Error(`Pool name ${p.pool_id.address.toString()} not found`);
|
|
3690
|
+
}
|
|
3691
|
+
if (!assetInfo) {
|
|
3692
|
+
throw new Error(`Asset ${this.asset().address.toString()} not found in pool ${p.pool_id.address.toString()}`);
|
|
3693
|
+
}
|
|
3694
|
+
let vTokenContract = new Contract4(vesu_rebalance_abi_default, p.v_token.address, this.config.provider);
|
|
3695
|
+
const bal = await vTokenContract.balanceOf(this.address.address);
|
|
3696
|
+
const assets = await vTokenContract.convert_to_assets(uint2563.bnToUint256(bal.toString()));
|
|
3697
|
+
const item = {
|
|
3698
|
+
pool_id: p.pool_id,
|
|
3699
|
+
pool_name: _pool?.name,
|
|
3700
|
+
max_weight: p.max_weight,
|
|
3701
|
+
current_weight: isErrorPositionsAPI || !vesuPosition ? 0 : Number(Web3Number.fromWei(vesuPosition.collateral.value, this.decimals()).dividedBy(totalAssets.toString()).toFixed(6)),
|
|
3702
|
+
v_token: p.v_token,
|
|
3703
|
+
amount: Web3Number.fromWei(assets.toString(), this.decimals()),
|
|
3704
|
+
usdValue: isErrorPositionsAPI || !vesuPosition ? Web3Number.fromWei("0", this.decimals()) : Web3Number.fromWei(vesuPosition.collateral.usdPrice.value, vesuPosition.collateral.usdPrice.decimals),
|
|
3705
|
+
APY: isErrorPoolsAPI || !assetInfo ? {
|
|
3706
|
+
baseApy: 0,
|
|
3707
|
+
defiSpringApy: 0,
|
|
3708
|
+
netApy: 0
|
|
3709
|
+
} : {
|
|
3710
|
+
baseApy: Number(Web3Number.fromWei(assetInfo.stats.supplyApy.value, assetInfo.stats.supplyApy.decimals).toFixed(6)),
|
|
3711
|
+
defiSpringApy: Number(Web3Number.fromWei(assetInfo.stats.defiSpringSupplyApr.value, assetInfo.stats.defiSpringSupplyApr.decimals).toFixed(6)),
|
|
3712
|
+
netApy: 0
|
|
3713
|
+
},
|
|
3714
|
+
currentUtilization: isErrorPoolsAPI || !assetInfo ? 0 : Number(Web3Number.fromWei(assetInfo.stats.currentUtilization.value, assetInfo.stats.currentUtilization.decimals).toFixed(6)),
|
|
3715
|
+
maxUtilization: isErrorPoolsAPI || !assetInfo ? 0 : Number(Web3Number.fromWei(assetInfo.config.maxUtilization.value, assetInfo.config.maxUtilization.decimals).toFixed(6))
|
|
3716
|
+
};
|
|
3717
|
+
item.APY.netApy = item.APY.baseApy + item.APY.defiSpringApy;
|
|
3718
|
+
return item;
|
|
3719
|
+
}
|
|
3676
3720
|
/**
|
|
3677
3721
|
* Retrieves the list of allowed pools and their detailed information from multiple sources:
|
|
3678
3722
|
* 1. Contract's allowed pools
|
|
@@ -3711,45 +3755,7 @@ var VesuRebalance = class _VesuRebalance extends BaseStrategy {
|
|
|
3711
3755
|
isErrorPoolsAPI = true;
|
|
3712
3756
|
}
|
|
3713
3757
|
const totalAssets = (await this.getTVL()).amount;
|
|
3714
|
-
const info = allowedPools.map(
|
|
3715
|
-
const vesuPosition = vesuPositions.find((d) => d.pool.id.toString() === num2.getDecimalString(p.pool_id.address.toString()));
|
|
3716
|
-
const _pool = pools.find((d) => {
|
|
3717
|
-
logger.verbose(`pool check: ${d.id == num2.getDecimalString(p.pool_id.address.toString())}, id: ${d.id}, pool_id: ${num2.getDecimalString(p.pool_id.address.toString())}`);
|
|
3718
|
-
return d.id == num2.getDecimalString(p.pool_id.address.toString());
|
|
3719
|
-
});
|
|
3720
|
-
logger.verbose(`pool: ${JSON.stringify(_pool)}`);
|
|
3721
|
-
logger.verbose(typeof _pool);
|
|
3722
|
-
logger.verbose(`name: ${_pool?.name}`);
|
|
3723
|
-
if (!_pool) {
|
|
3724
|
-
throw new Error(`Pool ${p.pool_id.address.toString()} not found`);
|
|
3725
|
-
}
|
|
3726
|
-
const assetInfo = _pool?.assets.find((d) => this.asset().address.eqString(d.address));
|
|
3727
|
-
let vTokenContract = new Contract4(vesu_rebalance_abi_default, p.v_token.address, this.config.provider);
|
|
3728
|
-
const bal = await vTokenContract.balanceOf(this.address.address);
|
|
3729
|
-
const assets = await vTokenContract.convert_to_assets(uint2563.bnToUint256(bal.toString()));
|
|
3730
|
-
const item = {
|
|
3731
|
-
pool_id: p.pool_id,
|
|
3732
|
-
pool_name: _pool?.name,
|
|
3733
|
-
max_weight: p.max_weight,
|
|
3734
|
-
current_weight: isErrorPositionsAPI || !vesuPosition ? 0 : Number(Web3Number.fromWei(vesuPosition.collateral.value, this.decimals()).dividedBy(totalAssets.toString()).toFixed(6)),
|
|
3735
|
-
v_token: p.v_token,
|
|
3736
|
-
amount: Web3Number.fromWei(assets.toString(), this.decimals()),
|
|
3737
|
-
usdValue: isErrorPositionsAPI || !vesuPosition ? Web3Number.fromWei("0", this.decimals()) : Web3Number.fromWei(vesuPosition.collateral.usdPrice.value, vesuPosition.collateral.usdPrice.decimals),
|
|
3738
|
-
APY: isErrorPoolsAPI || !assetInfo ? {
|
|
3739
|
-
baseApy: 0,
|
|
3740
|
-
defiSpringApy: 0,
|
|
3741
|
-
netApy: 0
|
|
3742
|
-
} : {
|
|
3743
|
-
baseApy: Number(Web3Number.fromWei(assetInfo.stats.supplyApy.value, assetInfo.stats.supplyApy.decimals).toFixed(6)),
|
|
3744
|
-
defiSpringApy: Number(Web3Number.fromWei(assetInfo.stats.defiSpringSupplyApr.value, assetInfo.stats.defiSpringSupplyApr.decimals).toFixed(6)),
|
|
3745
|
-
netApy: 0
|
|
3746
|
-
},
|
|
3747
|
-
currentUtilization: isErrorPoolsAPI || !assetInfo ? 0 : Number(Web3Number.fromWei(assetInfo.stats.currentUtilization.value, assetInfo.stats.currentUtilization.decimals).toFixed(6)),
|
|
3748
|
-
maxUtilization: isErrorPoolsAPI || !assetInfo ? 0 : Number(Web3Number.fromWei(assetInfo.config.maxUtilization.value, assetInfo.config.maxUtilization.decimals).toFixed(6))
|
|
3749
|
-
};
|
|
3750
|
-
item.APY.netApy = item.APY.baseApy + item.APY.defiSpringApy;
|
|
3751
|
-
return item;
|
|
3752
|
-
});
|
|
3758
|
+
const info = allowedPools.map((p) => this.getPoolInfo(p, pools, vesuPositions, totalAssets, isErrorPositionsAPI, isErrorPoolsAPI));
|
|
3753
3759
|
const data = await Promise.all(info);
|
|
3754
3760
|
return {
|
|
3755
3761
|
data,
|
|
@@ -3974,6 +3980,7 @@ var VesuRebalanceStrategies = [{
|
|
|
3974
3980
|
address: ContractAddr.from("0x115e94e722cfc4c77a2f15c4aefb0928c1c0029e5a57570df24c650cb7cec2c"),
|
|
3975
3981
|
type: "ERC4626",
|
|
3976
3982
|
depositTokens: [Global.getDefaultTokens().find((t) => t.symbol === "USDT")],
|
|
3983
|
+
auditUrl: AUDIT_URL,
|
|
3977
3984
|
protocols: [_protocol],
|
|
3978
3985
|
maxTVL: Web3Number.fromWei("0", 6),
|
|
3979
3986
|
risk: {
|
|
@@ -3990,6 +3997,7 @@ var VesuRebalanceStrategies = [{
|
|
|
3990
3997
|
// address: ContractAddr.from('0x778007f8136a5b827325d21613803e796bda4d676fbe1e34aeab0b2a2ec027f'),
|
|
3991
3998
|
// type: 'ERC4626',
|
|
3992
3999
|
// depositTokens: [Global.getDefaultTokens().find(t => t.symbol === 'WBTC')!],
|
|
4000
|
+
// auditUrl: AUDIT_URL,
|
|
3993
4001
|
// protocols: [_protocol],
|
|
3994
4002
|
// maxTVL: Web3Number.fromWei('0', 8),
|
|
3995
4003
|
// risk: {
|
package/dist/index.d.ts
CHANGED
|
@@ -395,6 +395,11 @@ declare class BaseStrategy<TVLInfo, ActionInfo> {
|
|
|
395
395
|
withdrawCall(amountInfo: ActionInfo, receiver: ContractAddr, owner: ContractAddr): Call[];
|
|
396
396
|
}
|
|
397
397
|
|
|
398
|
+
interface PoolProps {
|
|
399
|
+
pool_id: ContractAddr;
|
|
400
|
+
max_weight: number;
|
|
401
|
+
v_token: ContractAddr;
|
|
402
|
+
}
|
|
398
403
|
interface Change {
|
|
399
404
|
pool_id: ContractAddr;
|
|
400
405
|
changeAmt: Web3Number;
|
|
@@ -488,6 +493,22 @@ declare class VesuRebalance extends BaseStrategy<SingleTokenInfo, SingleActionAm
|
|
|
488
493
|
usdValue: number;
|
|
489
494
|
}>;
|
|
490
495
|
static getAllPossibleVerifiedPools(asset: ContractAddr): Promise<any>;
|
|
496
|
+
getPoolInfo(p: PoolProps, pools: any[], vesuPositions: any[], totalAssets: Web3Number, isErrorPositionsAPI: boolean, isErrorPoolsAPI: boolean): Promise<{
|
|
497
|
+
pool_id: ContractAddr;
|
|
498
|
+
pool_name: any;
|
|
499
|
+
max_weight: number;
|
|
500
|
+
current_weight: number;
|
|
501
|
+
v_token: ContractAddr;
|
|
502
|
+
amount: Web3Number;
|
|
503
|
+
usdValue: Web3Number;
|
|
504
|
+
APY: {
|
|
505
|
+
baseApy: number;
|
|
506
|
+
defiSpringApy: number;
|
|
507
|
+
netApy: number;
|
|
508
|
+
};
|
|
509
|
+
currentUtilization: number;
|
|
510
|
+
maxUtilization: number;
|
|
511
|
+
}>;
|
|
491
512
|
/**
|
|
492
513
|
* Retrieves the list of allowed pools and their detailed information from multiple sources:
|
|
493
514
|
* 1. Contract's allowed pools
|
package/dist/index.js
CHANGED
|
@@ -3761,6 +3761,50 @@ var VesuRebalance = class _VesuRebalance extends BaseStrategy {
|
|
|
3761
3761
|
}).filter((p) => p !== null);
|
|
3762
3762
|
return pools;
|
|
3763
3763
|
}
|
|
3764
|
+
async getPoolInfo(p, pools, vesuPositions, totalAssets, isErrorPositionsAPI, isErrorPoolsAPI) {
|
|
3765
|
+
const vesuPosition = vesuPositions.find((d) => d.pool.id.toString() === import_starknet7.num.getDecimalString(p.pool_id.address.toString()));
|
|
3766
|
+
const _pool = pools.find((d) => {
|
|
3767
|
+
logger.verbose(`pool check: ${d.id == import_starknet7.num.getDecimalString(p.pool_id.address.toString())}, id: ${d.id}, pool_id: ${import_starknet7.num.getDecimalString(p.pool_id.address.toString())}`);
|
|
3768
|
+
return d.id == import_starknet7.num.getDecimalString(p.pool_id.address.toString());
|
|
3769
|
+
});
|
|
3770
|
+
logger.verbose(`pool: ${JSON.stringify(_pool)}`);
|
|
3771
|
+
logger.verbose(typeof _pool);
|
|
3772
|
+
logger.verbose(`name: ${_pool?.name}`);
|
|
3773
|
+
const name = _pool?.name;
|
|
3774
|
+
logger.verbose(`name2: ${name}`);
|
|
3775
|
+
const assetInfo = _pool?.assets.find((d) => this.asset().address.eqString(d.address));
|
|
3776
|
+
if (!name) {
|
|
3777
|
+
throw new Error(`Pool name ${p.pool_id.address.toString()} not found`);
|
|
3778
|
+
}
|
|
3779
|
+
if (!assetInfo) {
|
|
3780
|
+
throw new Error(`Asset ${this.asset().address.toString()} not found in pool ${p.pool_id.address.toString()}`);
|
|
3781
|
+
}
|
|
3782
|
+
let vTokenContract = new import_starknet7.Contract(vesu_rebalance_abi_default, p.v_token.address, this.config.provider);
|
|
3783
|
+
const bal = await vTokenContract.balanceOf(this.address.address);
|
|
3784
|
+
const assets = await vTokenContract.convert_to_assets(import_starknet7.uint256.bnToUint256(bal.toString()));
|
|
3785
|
+
const item = {
|
|
3786
|
+
pool_id: p.pool_id,
|
|
3787
|
+
pool_name: _pool?.name,
|
|
3788
|
+
max_weight: p.max_weight,
|
|
3789
|
+
current_weight: isErrorPositionsAPI || !vesuPosition ? 0 : Number(Web3Number.fromWei(vesuPosition.collateral.value, this.decimals()).dividedBy(totalAssets.toString()).toFixed(6)),
|
|
3790
|
+
v_token: p.v_token,
|
|
3791
|
+
amount: Web3Number.fromWei(assets.toString(), this.decimals()),
|
|
3792
|
+
usdValue: isErrorPositionsAPI || !vesuPosition ? Web3Number.fromWei("0", this.decimals()) : Web3Number.fromWei(vesuPosition.collateral.usdPrice.value, vesuPosition.collateral.usdPrice.decimals),
|
|
3793
|
+
APY: isErrorPoolsAPI || !assetInfo ? {
|
|
3794
|
+
baseApy: 0,
|
|
3795
|
+
defiSpringApy: 0,
|
|
3796
|
+
netApy: 0
|
|
3797
|
+
} : {
|
|
3798
|
+
baseApy: Number(Web3Number.fromWei(assetInfo.stats.supplyApy.value, assetInfo.stats.supplyApy.decimals).toFixed(6)),
|
|
3799
|
+
defiSpringApy: Number(Web3Number.fromWei(assetInfo.stats.defiSpringSupplyApr.value, assetInfo.stats.defiSpringSupplyApr.decimals).toFixed(6)),
|
|
3800
|
+
netApy: 0
|
|
3801
|
+
},
|
|
3802
|
+
currentUtilization: isErrorPoolsAPI || !assetInfo ? 0 : Number(Web3Number.fromWei(assetInfo.stats.currentUtilization.value, assetInfo.stats.currentUtilization.decimals).toFixed(6)),
|
|
3803
|
+
maxUtilization: isErrorPoolsAPI || !assetInfo ? 0 : Number(Web3Number.fromWei(assetInfo.config.maxUtilization.value, assetInfo.config.maxUtilization.decimals).toFixed(6))
|
|
3804
|
+
};
|
|
3805
|
+
item.APY.netApy = item.APY.baseApy + item.APY.defiSpringApy;
|
|
3806
|
+
return item;
|
|
3807
|
+
}
|
|
3764
3808
|
/**
|
|
3765
3809
|
* Retrieves the list of allowed pools and their detailed information from multiple sources:
|
|
3766
3810
|
* 1. Contract's allowed pools
|
|
@@ -3799,45 +3843,7 @@ var VesuRebalance = class _VesuRebalance extends BaseStrategy {
|
|
|
3799
3843
|
isErrorPoolsAPI = true;
|
|
3800
3844
|
}
|
|
3801
3845
|
const totalAssets = (await this.getTVL()).amount;
|
|
3802
|
-
const info = allowedPools.map(
|
|
3803
|
-
const vesuPosition = vesuPositions.find((d) => d.pool.id.toString() === import_starknet7.num.getDecimalString(p.pool_id.address.toString()));
|
|
3804
|
-
const _pool = pools.find((d) => {
|
|
3805
|
-
logger.verbose(`pool check: ${d.id == import_starknet7.num.getDecimalString(p.pool_id.address.toString())}, id: ${d.id}, pool_id: ${import_starknet7.num.getDecimalString(p.pool_id.address.toString())}`);
|
|
3806
|
-
return d.id == import_starknet7.num.getDecimalString(p.pool_id.address.toString());
|
|
3807
|
-
});
|
|
3808
|
-
logger.verbose(`pool: ${JSON.stringify(_pool)}`);
|
|
3809
|
-
logger.verbose(typeof _pool);
|
|
3810
|
-
logger.verbose(`name: ${_pool?.name}`);
|
|
3811
|
-
if (!_pool) {
|
|
3812
|
-
throw new Error(`Pool ${p.pool_id.address.toString()} not found`);
|
|
3813
|
-
}
|
|
3814
|
-
const assetInfo = _pool?.assets.find((d) => this.asset().address.eqString(d.address));
|
|
3815
|
-
let vTokenContract = new import_starknet7.Contract(vesu_rebalance_abi_default, p.v_token.address, this.config.provider);
|
|
3816
|
-
const bal = await vTokenContract.balanceOf(this.address.address);
|
|
3817
|
-
const assets = await vTokenContract.convert_to_assets(import_starknet7.uint256.bnToUint256(bal.toString()));
|
|
3818
|
-
const item = {
|
|
3819
|
-
pool_id: p.pool_id,
|
|
3820
|
-
pool_name: _pool?.name,
|
|
3821
|
-
max_weight: p.max_weight,
|
|
3822
|
-
current_weight: isErrorPositionsAPI || !vesuPosition ? 0 : Number(Web3Number.fromWei(vesuPosition.collateral.value, this.decimals()).dividedBy(totalAssets.toString()).toFixed(6)),
|
|
3823
|
-
v_token: p.v_token,
|
|
3824
|
-
amount: Web3Number.fromWei(assets.toString(), this.decimals()),
|
|
3825
|
-
usdValue: isErrorPositionsAPI || !vesuPosition ? Web3Number.fromWei("0", this.decimals()) : Web3Number.fromWei(vesuPosition.collateral.usdPrice.value, vesuPosition.collateral.usdPrice.decimals),
|
|
3826
|
-
APY: isErrorPoolsAPI || !assetInfo ? {
|
|
3827
|
-
baseApy: 0,
|
|
3828
|
-
defiSpringApy: 0,
|
|
3829
|
-
netApy: 0
|
|
3830
|
-
} : {
|
|
3831
|
-
baseApy: Number(Web3Number.fromWei(assetInfo.stats.supplyApy.value, assetInfo.stats.supplyApy.decimals).toFixed(6)),
|
|
3832
|
-
defiSpringApy: Number(Web3Number.fromWei(assetInfo.stats.defiSpringSupplyApr.value, assetInfo.stats.defiSpringSupplyApr.decimals).toFixed(6)),
|
|
3833
|
-
netApy: 0
|
|
3834
|
-
},
|
|
3835
|
-
currentUtilization: isErrorPoolsAPI || !assetInfo ? 0 : Number(Web3Number.fromWei(assetInfo.stats.currentUtilization.value, assetInfo.stats.currentUtilization.decimals).toFixed(6)),
|
|
3836
|
-
maxUtilization: isErrorPoolsAPI || !assetInfo ? 0 : Number(Web3Number.fromWei(assetInfo.config.maxUtilization.value, assetInfo.config.maxUtilization.decimals).toFixed(6))
|
|
3837
|
-
};
|
|
3838
|
-
item.APY.netApy = item.APY.baseApy + item.APY.defiSpringApy;
|
|
3839
|
-
return item;
|
|
3840
|
-
});
|
|
3846
|
+
const info = allowedPools.map((p) => this.getPoolInfo(p, pools, vesuPositions, totalAssets, isErrorPositionsAPI, isErrorPoolsAPI));
|
|
3841
3847
|
const data = await Promise.all(info);
|
|
3842
3848
|
return {
|
|
3843
3849
|
data,
|
|
@@ -4062,6 +4068,7 @@ var VesuRebalanceStrategies = [{
|
|
|
4062
4068
|
address: ContractAddr.from("0x115e94e722cfc4c77a2f15c4aefb0928c1c0029e5a57570df24c650cb7cec2c"),
|
|
4063
4069
|
type: "ERC4626",
|
|
4064
4070
|
depositTokens: [Global.getDefaultTokens().find((t) => t.symbol === "USDT")],
|
|
4071
|
+
auditUrl: AUDIT_URL,
|
|
4065
4072
|
protocols: [_protocol],
|
|
4066
4073
|
maxTVL: Web3Number.fromWei("0", 6),
|
|
4067
4074
|
risk: {
|
|
@@ -4078,6 +4085,7 @@ var VesuRebalanceStrategies = [{
|
|
|
4078
4085
|
// address: ContractAddr.from('0x778007f8136a5b827325d21613803e796bda4d676fbe1e34aeab0b2a2ec027f'),
|
|
4079
4086
|
// type: 'ERC4626',
|
|
4080
4087
|
// depositTokens: [Global.getDefaultTokens().find(t => t.symbol === 'WBTC')!],
|
|
4088
|
+
// auditUrl: AUDIT_URL,
|
|
4081
4089
|
// protocols: [_protocol],
|
|
4082
4090
|
// maxTVL: Web3Number.fromWei('0', 8),
|
|
4083
4091
|
// risk: {
|
package/dist/index.mjs
CHANGED
|
@@ -3693,6 +3693,50 @@ var VesuRebalance = class _VesuRebalance extends BaseStrategy {
|
|
|
3693
3693
|
}).filter((p) => p !== null);
|
|
3694
3694
|
return pools;
|
|
3695
3695
|
}
|
|
3696
|
+
async getPoolInfo(p, pools, vesuPositions, totalAssets, isErrorPositionsAPI, isErrorPoolsAPI) {
|
|
3697
|
+
const vesuPosition = vesuPositions.find((d) => d.pool.id.toString() === num2.getDecimalString(p.pool_id.address.toString()));
|
|
3698
|
+
const _pool = pools.find((d) => {
|
|
3699
|
+
logger.verbose(`pool check: ${d.id == num2.getDecimalString(p.pool_id.address.toString())}, id: ${d.id}, pool_id: ${num2.getDecimalString(p.pool_id.address.toString())}`);
|
|
3700
|
+
return d.id == num2.getDecimalString(p.pool_id.address.toString());
|
|
3701
|
+
});
|
|
3702
|
+
logger.verbose(`pool: ${JSON.stringify(_pool)}`);
|
|
3703
|
+
logger.verbose(typeof _pool);
|
|
3704
|
+
logger.verbose(`name: ${_pool?.name}`);
|
|
3705
|
+
const name = _pool?.name;
|
|
3706
|
+
logger.verbose(`name2: ${name}`);
|
|
3707
|
+
const assetInfo = _pool?.assets.find((d) => this.asset().address.eqString(d.address));
|
|
3708
|
+
if (!name) {
|
|
3709
|
+
throw new Error(`Pool name ${p.pool_id.address.toString()} not found`);
|
|
3710
|
+
}
|
|
3711
|
+
if (!assetInfo) {
|
|
3712
|
+
throw new Error(`Asset ${this.asset().address.toString()} not found in pool ${p.pool_id.address.toString()}`);
|
|
3713
|
+
}
|
|
3714
|
+
let vTokenContract = new Contract4(vesu_rebalance_abi_default, p.v_token.address, this.config.provider);
|
|
3715
|
+
const bal = await vTokenContract.balanceOf(this.address.address);
|
|
3716
|
+
const assets = await vTokenContract.convert_to_assets(uint2563.bnToUint256(bal.toString()));
|
|
3717
|
+
const item = {
|
|
3718
|
+
pool_id: p.pool_id,
|
|
3719
|
+
pool_name: _pool?.name,
|
|
3720
|
+
max_weight: p.max_weight,
|
|
3721
|
+
current_weight: isErrorPositionsAPI || !vesuPosition ? 0 : Number(Web3Number.fromWei(vesuPosition.collateral.value, this.decimals()).dividedBy(totalAssets.toString()).toFixed(6)),
|
|
3722
|
+
v_token: p.v_token,
|
|
3723
|
+
amount: Web3Number.fromWei(assets.toString(), this.decimals()),
|
|
3724
|
+
usdValue: isErrorPositionsAPI || !vesuPosition ? Web3Number.fromWei("0", this.decimals()) : Web3Number.fromWei(vesuPosition.collateral.usdPrice.value, vesuPosition.collateral.usdPrice.decimals),
|
|
3725
|
+
APY: isErrorPoolsAPI || !assetInfo ? {
|
|
3726
|
+
baseApy: 0,
|
|
3727
|
+
defiSpringApy: 0,
|
|
3728
|
+
netApy: 0
|
|
3729
|
+
} : {
|
|
3730
|
+
baseApy: Number(Web3Number.fromWei(assetInfo.stats.supplyApy.value, assetInfo.stats.supplyApy.decimals).toFixed(6)),
|
|
3731
|
+
defiSpringApy: Number(Web3Number.fromWei(assetInfo.stats.defiSpringSupplyApr.value, assetInfo.stats.defiSpringSupplyApr.decimals).toFixed(6)),
|
|
3732
|
+
netApy: 0
|
|
3733
|
+
},
|
|
3734
|
+
currentUtilization: isErrorPoolsAPI || !assetInfo ? 0 : Number(Web3Number.fromWei(assetInfo.stats.currentUtilization.value, assetInfo.stats.currentUtilization.decimals).toFixed(6)),
|
|
3735
|
+
maxUtilization: isErrorPoolsAPI || !assetInfo ? 0 : Number(Web3Number.fromWei(assetInfo.config.maxUtilization.value, assetInfo.config.maxUtilization.decimals).toFixed(6))
|
|
3736
|
+
};
|
|
3737
|
+
item.APY.netApy = item.APY.baseApy + item.APY.defiSpringApy;
|
|
3738
|
+
return item;
|
|
3739
|
+
}
|
|
3696
3740
|
/**
|
|
3697
3741
|
* Retrieves the list of allowed pools and their detailed information from multiple sources:
|
|
3698
3742
|
* 1. Contract's allowed pools
|
|
@@ -3731,45 +3775,7 @@ var VesuRebalance = class _VesuRebalance extends BaseStrategy {
|
|
|
3731
3775
|
isErrorPoolsAPI = true;
|
|
3732
3776
|
}
|
|
3733
3777
|
const totalAssets = (await this.getTVL()).amount;
|
|
3734
|
-
const info = allowedPools.map(
|
|
3735
|
-
const vesuPosition = vesuPositions.find((d) => d.pool.id.toString() === num2.getDecimalString(p.pool_id.address.toString()));
|
|
3736
|
-
const _pool = pools.find((d) => {
|
|
3737
|
-
logger.verbose(`pool check: ${d.id == num2.getDecimalString(p.pool_id.address.toString())}, id: ${d.id}, pool_id: ${num2.getDecimalString(p.pool_id.address.toString())}`);
|
|
3738
|
-
return d.id == num2.getDecimalString(p.pool_id.address.toString());
|
|
3739
|
-
});
|
|
3740
|
-
logger.verbose(`pool: ${JSON.stringify(_pool)}`);
|
|
3741
|
-
logger.verbose(typeof _pool);
|
|
3742
|
-
logger.verbose(`name: ${_pool?.name}`);
|
|
3743
|
-
if (!_pool) {
|
|
3744
|
-
throw new Error(`Pool ${p.pool_id.address.toString()} not found`);
|
|
3745
|
-
}
|
|
3746
|
-
const assetInfo = _pool?.assets.find((d) => this.asset().address.eqString(d.address));
|
|
3747
|
-
let vTokenContract = new Contract4(vesu_rebalance_abi_default, p.v_token.address, this.config.provider);
|
|
3748
|
-
const bal = await vTokenContract.balanceOf(this.address.address);
|
|
3749
|
-
const assets = await vTokenContract.convert_to_assets(uint2563.bnToUint256(bal.toString()));
|
|
3750
|
-
const item = {
|
|
3751
|
-
pool_id: p.pool_id,
|
|
3752
|
-
pool_name: _pool?.name,
|
|
3753
|
-
max_weight: p.max_weight,
|
|
3754
|
-
current_weight: isErrorPositionsAPI || !vesuPosition ? 0 : Number(Web3Number.fromWei(vesuPosition.collateral.value, this.decimals()).dividedBy(totalAssets.toString()).toFixed(6)),
|
|
3755
|
-
v_token: p.v_token,
|
|
3756
|
-
amount: Web3Number.fromWei(assets.toString(), this.decimals()),
|
|
3757
|
-
usdValue: isErrorPositionsAPI || !vesuPosition ? Web3Number.fromWei("0", this.decimals()) : Web3Number.fromWei(vesuPosition.collateral.usdPrice.value, vesuPosition.collateral.usdPrice.decimals),
|
|
3758
|
-
APY: isErrorPoolsAPI || !assetInfo ? {
|
|
3759
|
-
baseApy: 0,
|
|
3760
|
-
defiSpringApy: 0,
|
|
3761
|
-
netApy: 0
|
|
3762
|
-
} : {
|
|
3763
|
-
baseApy: Number(Web3Number.fromWei(assetInfo.stats.supplyApy.value, assetInfo.stats.supplyApy.decimals).toFixed(6)),
|
|
3764
|
-
defiSpringApy: Number(Web3Number.fromWei(assetInfo.stats.defiSpringSupplyApr.value, assetInfo.stats.defiSpringSupplyApr.decimals).toFixed(6)),
|
|
3765
|
-
netApy: 0
|
|
3766
|
-
},
|
|
3767
|
-
currentUtilization: isErrorPoolsAPI || !assetInfo ? 0 : Number(Web3Number.fromWei(assetInfo.stats.currentUtilization.value, assetInfo.stats.currentUtilization.decimals).toFixed(6)),
|
|
3768
|
-
maxUtilization: isErrorPoolsAPI || !assetInfo ? 0 : Number(Web3Number.fromWei(assetInfo.config.maxUtilization.value, assetInfo.config.maxUtilization.decimals).toFixed(6))
|
|
3769
|
-
};
|
|
3770
|
-
item.APY.netApy = item.APY.baseApy + item.APY.defiSpringApy;
|
|
3771
|
-
return item;
|
|
3772
|
-
});
|
|
3778
|
+
const info = allowedPools.map((p) => this.getPoolInfo(p, pools, vesuPositions, totalAssets, isErrorPositionsAPI, isErrorPoolsAPI));
|
|
3773
3779
|
const data = await Promise.all(info);
|
|
3774
3780
|
return {
|
|
3775
3781
|
data,
|
|
@@ -3994,6 +4000,7 @@ var VesuRebalanceStrategies = [{
|
|
|
3994
4000
|
address: ContractAddr.from("0x115e94e722cfc4c77a2f15c4aefb0928c1c0029e5a57570df24c650cb7cec2c"),
|
|
3995
4001
|
type: "ERC4626",
|
|
3996
4002
|
depositTokens: [Global.getDefaultTokens().find((t) => t.symbol === "USDT")],
|
|
4003
|
+
auditUrl: AUDIT_URL,
|
|
3997
4004
|
protocols: [_protocol],
|
|
3998
4005
|
maxTVL: Web3Number.fromWei("0", 6),
|
|
3999
4006
|
risk: {
|
|
@@ -4010,6 +4017,7 @@ var VesuRebalanceStrategies = [{
|
|
|
4010
4017
|
// address: ContractAddr.from('0x778007f8136a5b827325d21613803e796bda4d676fbe1e34aeab0b2a2ec027f'),
|
|
4011
4018
|
// type: 'ERC4626',
|
|
4012
4019
|
// depositTokens: [Global.getDefaultTokens().find(t => t.symbol === 'WBTC')!],
|
|
4020
|
+
// auditUrl: AUDIT_URL,
|
|
4013
4021
|
// protocols: [_protocol],
|
|
4014
4022
|
// maxTVL: Web3Number.fromWei('0', 8),
|
|
4015
4023
|
// risk: {
|
package/package.json
CHANGED
|
@@ -172,6 +172,58 @@ export class VesuRebalance extends BaseStrategy<SingleTokenInfo, SingleActionAmo
|
|
|
172
172
|
return pools;
|
|
173
173
|
}
|
|
174
174
|
|
|
175
|
+
async getPoolInfo(
|
|
176
|
+
p: PoolProps,
|
|
177
|
+
pools: any[],
|
|
178
|
+
vesuPositions: any[],
|
|
179
|
+
totalAssets: Web3Number,
|
|
180
|
+
isErrorPositionsAPI: boolean,
|
|
181
|
+
isErrorPoolsAPI: boolean,
|
|
182
|
+
) {
|
|
183
|
+
const vesuPosition = vesuPositions.find((d: any) => d.pool.id.toString() === num.getDecimalString(p.pool_id.address.toString()));
|
|
184
|
+
const _pool = pools.find((d: any) => {
|
|
185
|
+
logger.verbose(`pool check: ${d.id == num.getDecimalString(p.pool_id.address.toString())}, id: ${d.id}, pool_id: ${num.getDecimalString(p.pool_id.address.toString())}`);
|
|
186
|
+
return d.id == num.getDecimalString(p.pool_id.address.toString());
|
|
187
|
+
});
|
|
188
|
+
logger.verbose(`pool: ${JSON.stringify(_pool)}`);
|
|
189
|
+
logger.verbose(typeof _pool);
|
|
190
|
+
logger.verbose(`name: ${_pool?.name}`);
|
|
191
|
+
const name = _pool?.name;
|
|
192
|
+
logger.verbose(`name2: ${name}`);
|
|
193
|
+
const assetInfo = _pool?.assets.find((d: any) => this.asset().address.eqString(d.address));
|
|
194
|
+
if (!name) {
|
|
195
|
+
throw new Error(`Pool name ${p.pool_id.address.toString()} not found`);
|
|
196
|
+
}
|
|
197
|
+
if (!assetInfo) {
|
|
198
|
+
throw new Error(`Asset ${this.asset().address.toString()} not found in pool ${p.pool_id.address.toString()}`);
|
|
199
|
+
}
|
|
200
|
+
let vTokenContract = new Contract(VesuRebalanceAbi, p.v_token.address, this.config.provider);
|
|
201
|
+
const bal = await vTokenContract.balanceOf(this.address.address);
|
|
202
|
+
const assets = await vTokenContract.convert_to_assets(uint256.bnToUint256(bal.toString()));
|
|
203
|
+
const item = {
|
|
204
|
+
pool_id: p.pool_id,
|
|
205
|
+
pool_name: _pool?.name,
|
|
206
|
+
max_weight: p.max_weight,
|
|
207
|
+
current_weight: isErrorPositionsAPI || !vesuPosition ? 0 : Number(Web3Number.fromWei(vesuPosition.collateral.value, this.decimals()).dividedBy(totalAssets.toString()).toFixed(6)),
|
|
208
|
+
v_token: p.v_token,
|
|
209
|
+
amount: Web3Number.fromWei(assets.toString(), this.decimals()),
|
|
210
|
+
usdValue: isErrorPositionsAPI || !vesuPosition ? Web3Number.fromWei("0", this.decimals()) : Web3Number.fromWei(vesuPosition.collateral.usdPrice.value, vesuPosition.collateral.usdPrice.decimals),
|
|
211
|
+
APY: isErrorPoolsAPI || !assetInfo ? {
|
|
212
|
+
baseApy: 0,
|
|
213
|
+
defiSpringApy: 0,
|
|
214
|
+
netApy: 0,
|
|
215
|
+
} : {
|
|
216
|
+
baseApy: Number(Web3Number.fromWei(assetInfo.stats.supplyApy.value, assetInfo.stats.supplyApy.decimals).toFixed(6)),
|
|
217
|
+
defiSpringApy: Number(Web3Number.fromWei(assetInfo.stats.defiSpringSupplyApr.value, assetInfo.stats.defiSpringSupplyApr.decimals).toFixed(6)),
|
|
218
|
+
netApy: 0,
|
|
219
|
+
},
|
|
220
|
+
currentUtilization: isErrorPoolsAPI || !assetInfo ? 0 : Number(Web3Number.fromWei(assetInfo.stats.currentUtilization.value, assetInfo.stats.currentUtilization.decimals).toFixed(6)),
|
|
221
|
+
maxUtilization: isErrorPoolsAPI || !assetInfo ? 0 : Number(Web3Number.fromWei(assetInfo.config.maxUtilization.value, assetInfo.config.maxUtilization.decimals).toFixed(6)),
|
|
222
|
+
}
|
|
223
|
+
item.APY.netApy = item.APY.baseApy + item.APY.defiSpringApy;
|
|
224
|
+
return item;
|
|
225
|
+
}
|
|
226
|
+
|
|
175
227
|
/**
|
|
176
228
|
* Retrieves the list of allowed pools and their detailed information from multiple sources:
|
|
177
229
|
* 1. Contract's allowed pools
|
|
@@ -262,45 +314,7 @@ export class VesuRebalance extends BaseStrategy<SingleTokenInfo, SingleActionAmo
|
|
|
262
314
|
|
|
263
315
|
const totalAssets = (await this.getTVL()).amount;
|
|
264
316
|
|
|
265
|
-
const info = allowedPools.map(
|
|
266
|
-
const vesuPosition = vesuPositions.find((d: any) => d.pool.id.toString() === num.getDecimalString(p.pool_id.address.toString()));
|
|
267
|
-
const _pool = pools.find((d: any) => {
|
|
268
|
-
logger.verbose(`pool check: ${d.id == num.getDecimalString(p.pool_id.address.toString())}, id: ${d.id}, pool_id: ${num.getDecimalString(p.pool_id.address.toString())}`);
|
|
269
|
-
return d.id == num.getDecimalString(p.pool_id.address.toString());
|
|
270
|
-
});
|
|
271
|
-
logger.verbose(`pool: ${JSON.stringify(_pool)}`);
|
|
272
|
-
logger.verbose(typeof _pool);
|
|
273
|
-
logger.verbose(`name: ${_pool?.name}`);
|
|
274
|
-
if (!_pool) {
|
|
275
|
-
throw new Error(`Pool ${p.pool_id.address.toString()} not found`);
|
|
276
|
-
}
|
|
277
|
-
const assetInfo = _pool?.assets.find((d: any) => this.asset().address.eqString(d.address));
|
|
278
|
-
let vTokenContract = new Contract(VesuRebalanceAbi, p.v_token.address, this.config.provider);
|
|
279
|
-
const bal = await vTokenContract.balanceOf(this.address.address);
|
|
280
|
-
const assets = await vTokenContract.convert_to_assets(uint256.bnToUint256(bal.toString()));
|
|
281
|
-
const item = {
|
|
282
|
-
pool_id: p.pool_id,
|
|
283
|
-
pool_name: _pool?.name,
|
|
284
|
-
max_weight: p.max_weight,
|
|
285
|
-
current_weight: isErrorPositionsAPI || !vesuPosition ? 0 : Number(Web3Number.fromWei(vesuPosition.collateral.value, this.decimals()).dividedBy(totalAssets.toString()).toFixed(6)),
|
|
286
|
-
v_token: p.v_token,
|
|
287
|
-
amount: Web3Number.fromWei(assets.toString(), this.decimals()),
|
|
288
|
-
usdValue: isErrorPositionsAPI || !vesuPosition ? Web3Number.fromWei("0", this.decimals()) : Web3Number.fromWei(vesuPosition.collateral.usdPrice.value, vesuPosition.collateral.usdPrice.decimals),
|
|
289
|
-
APY: isErrorPoolsAPI || !assetInfo ? {
|
|
290
|
-
baseApy: 0,
|
|
291
|
-
defiSpringApy: 0,
|
|
292
|
-
netApy: 0,
|
|
293
|
-
} : {
|
|
294
|
-
baseApy: Number(Web3Number.fromWei(assetInfo.stats.supplyApy.value, assetInfo.stats.supplyApy.decimals).toFixed(6)),
|
|
295
|
-
defiSpringApy: Number(Web3Number.fromWei(assetInfo.stats.defiSpringSupplyApr.value, assetInfo.stats.defiSpringSupplyApr.decimals).toFixed(6)),
|
|
296
|
-
netApy: 0,
|
|
297
|
-
},
|
|
298
|
-
currentUtilization: isErrorPoolsAPI || !assetInfo ? 0 : Number(Web3Number.fromWei(assetInfo.stats.currentUtilization.value, assetInfo.stats.currentUtilization.decimals).toFixed(6)),
|
|
299
|
-
maxUtilization: isErrorPoolsAPI || !assetInfo ? 0 : Number(Web3Number.fromWei(assetInfo.config.maxUtilization.value, assetInfo.config.maxUtilization.decimals).toFixed(6)),
|
|
300
|
-
}
|
|
301
|
-
item.APY.netApy = item.APY.baseApy + item.APY.defiSpringApy;
|
|
302
|
-
return item;
|
|
303
|
-
});
|
|
317
|
+
const info = allowedPools.map(p => this.getPoolInfo(p, pools, vesuPositions, totalAssets, isErrorPositionsAPI, isErrorPoolsAPI));
|
|
304
318
|
const data = await Promise.all(info);
|
|
305
319
|
return {
|
|
306
320
|
data,
|
|
@@ -554,6 +568,7 @@ export const VesuRebalanceStrategies: IStrategyMetadata<VesuRebalanceSettings>[]
|
|
|
554
568
|
address: ContractAddr.from('0x115e94e722cfc4c77a2f15c4aefb0928c1c0029e5a57570df24c650cb7cec2c'),
|
|
555
569
|
type: 'ERC4626',
|
|
556
570
|
depositTokens: [Global.getDefaultTokens().find(t => t.symbol === 'USDT')!],
|
|
571
|
+
auditUrl: AUDIT_URL,
|
|
557
572
|
protocols: [_protocol],
|
|
558
573
|
maxTVL: Web3Number.fromWei('0', 6),
|
|
559
574
|
risk: {
|
|
@@ -570,6 +585,7 @@ export const VesuRebalanceStrategies: IStrategyMetadata<VesuRebalanceSettings>[]
|
|
|
570
585
|
// address: ContractAddr.from('0x778007f8136a5b827325d21613803e796bda4d676fbe1e34aeab0b2a2ec027f'),
|
|
571
586
|
// type: 'ERC4626',
|
|
572
587
|
// depositTokens: [Global.getDefaultTokens().find(t => t.symbol === 'WBTC')!],
|
|
588
|
+
// auditUrl: AUDIT_URL,
|
|
573
589
|
// protocols: [_protocol],
|
|
574
590
|
// maxTVL: Web3Number.fromWei('0', 8),
|
|
575
591
|
// risk: {
|