Skip to content

Update Arbera to V1.1 + arBERO Upgrade #15039

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 4 commits into from
Jun 13, 2025
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
38 changes: 33 additions & 5 deletions projects/arbera/index.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,11 @@
const { sumTokens2 } = require("../helper/unwrapLPs");

const STAKED_LBGT_VAULT = "0xFace73a169e2CA2934036C8Af9f464b5De9eF0ca";
const BR_LBGT_ADDRESS = "0x883899D0111d69f85Fdfd19e4B89E613F231B781";
const LBGT_ADDRESS = "0xBaadCC2962417C01Af99fb2B7C75706B9bd6Babe";

const config = {
berachain: { indexManager: "0x262619334907c70A826623CE24C38281C3dBdE13"},
berachain: { indexManager: "0x262619334907c70A826623CE24C38281C3dBdE13", indexManagerV1_1: "0xf4735ba574964B7754c2F165146911f03ec94D30"},
};

const abi = {
Expand All @@ -10,26 +14,50 @@ const abi = {
lpStakingPool: "address:lpStakingPool",
stakingToken: "address:stakingToken",
pairedLPToken: "address:PAIRED_LP_TOKEN",
convertToAssets: "function convertToAssets(uint256 shares) view returns (uint256 assets)",
}

const getTvl = async (api, isStaking) => {
const { indexManager } = config[api.chain];
const { indexManager, indexManagerV1_1 } = config[api.chain];
const ownerTokens = [];
var indexes = []

//V2 logic
// Get all indexes
if(indexManager){
indexes = ( await api.call({ abi: abi.allIndexes, target: indexManager })).map((i) => i.index);

if (indexManagerV1_1) {
var indexesV1_1 = [];
indexesV1_1 = ( await api.call({ abi: abi.allIndexes, target: indexManagerV1_1 })).map((i) => i.index);
for (let i = 0; i < indexesV1_1.length; i++) {
if (!indexes.includes(indexesV1_1[i])) {
indexes.push(indexesV1_1[i]);
}
}
}

const stakingPools = await api.multiCall({ abi: abi.lpStakingPool, calls: indexes });
const assetsResult = await api.multiCall({ abi: abi.getAllAssets, calls: indexes });
const stakingTokens = await api.multiCall({ abi: abi.stakingToken, calls: stakingPools });

assetsResult.forEach((assets, i) => { ownerTokens.push([assets.map((i) => i.token), indexes[i]]) });
stakingTokens.forEach((stakingToken, i) => ownerTokens.push([[stakingToken], stakingPools[i]]));

// Get LBGT in brLBGT
const stLBGTBalance = await api.call({
target: STAKED_LBGT_VAULT,
abi: 'erc20:balanceOf',
params: [BR_LBGT_ADDRESS],
});
const lbgtBalance = await api.call({
target: STAKED_LBGT_VAULT,
abi: abi.convertToAssets,
params: [stLBGTBalance],
});
api.add(LBGT_ADDRESS, lbgtBalance);
}

await sumTokens2({ api, ownerTokens, blacklistedTokens: indexes, resolveLP: true });
await sumTokens2({ api, ownerTokens, blacklistedTokens: indexes, resolveLP: true, log: true });

indexes.forEach((i) => api.removeTokenBalance(i));
Object.keys(api.getBalances()).forEach((token) => {
Expand All @@ -42,7 +70,7 @@ const getTvl = async (api, isStaking) => {

module.exports = {
methodology: "Aggregates TVL in all Arbera indexes created",
hallmarks: [[1743091200, "Berachain launch"]],
hallmarks: [[1743091200, "Berachain launch"], [1748383200, "Dens V1.1 + arBERO Launch"]],
};

Object.keys(config).forEach(chain => {
Expand Down
Loading