Skip to content
This repository has been archived by the owner on Jan 24, 2024. It is now read-only.

Commit

Permalink
fix(rocket-pool): Fix Minipool raw balances (#2601)
Browse files Browse the repository at this point in the history
  • Loading branch information
wpoulin committed Apr 22, 2023
1 parent b9056d4 commit 380c6d2
Showing 1 changed file with 34 additions and 27 deletions.
Expand Up @@ -95,17 +95,6 @@ export class EthereumRocketPoolMinipoolContractPositionFetcher extends ContractP
async getRawBalances(address: string): Promise<RawContractPositionBalance[]> {
const multicall = this.appToolkit.getMulticall(this.network);

const minipoolManagerContract = this.contractFactory.rocketMinipoolManager({
address: this.minipoolManagerAddress,
network: this.network,
});
const mcMinipoolManager = multicall.wrap(minipoolManagerContract);
const minipoolCount = Number(await mcMinipoolManager.getNodeMinipoolCount(address));
const minipoolAddresses = await Promise.all(
range(minipoolCount).map(async i => mcMinipoolManager.getNodeMinipoolAt(address, i)),
);
if (minipoolAddresses.length === 0) return [];

const contractPositions = await this.appToolkit.getAppContractPositions({
appId: this.appId,
network: this.network,
Expand All @@ -115,22 +104,40 @@ export class EthereumRocketPoolMinipoolContractPositionFetcher extends ContractP
const contractPosition = contractPositions[0];
if (!contractPosition) return [];

return Promise.all(
minipoolAddresses.map(async address => {
const minipoolContract = this.contractFactory.rocketMinipool({ address, network: this.network });
const nodeDepositBalance = await multicall.wrap(minipoolContract).getNodeDepositBalance();

const balance: RawContractPositionBalance = {
key: this.appToolkit.getPositionKey(contractPosition),
tokens: [
{
key: this.appToolkit.getPositionKey(contractPosition.tokens[0]),
balance: nodeDepositBalance.toString(),
},
],
};
return balance;
}),
const minipoolManagerContract = this.contractFactory.rocketMinipoolManager({
address: this.minipoolManagerAddress,
network: this.network,
});
const minipoolCount = await multicall.wrap(minipoolManagerContract).getNodeMinipoolCount(address);

const minipoolAddresses = await Promise.all(
range(0, minipoolCount.toNumber()).map(async i =>
multicall.wrap(minipoolManagerContract).getNodeMinipoolAt(address, i),
),
);
if (minipoolAddresses.length === 0) return [];

return (
await Promise.all(
minipoolAddresses
.map(async address => {
const minipoolContract = this.contractFactory.rocketMinipool({ address, network: this.network });
const nodeDepositBalance = await multicall.wrap(minipoolContract).getNodeDepositBalance();

return [
{
key: this.appToolkit.getPositionKey(contractPosition),
tokens: [
{
key: this.appToolkit.getPositionKey(contractPosition.tokens[0]),
balance: nodeDepositBalance.toString(),
},
],
},
];
})
.flat(),
)
).flat();
}
}

0 comments on commit 380c6d2

Please sign in to comment.