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

Commit

Permalink
fix(app-token-template): Early return when supply is zero (#2770)
Browse files Browse the repository at this point in the history
  • Loading branch information
wpoulin committed Jun 21, 2023
1 parent dc028cf commit 9d872a4
Show file tree
Hide file tree
Showing 10 changed files with 4 additions and 19 deletions.
2 changes: 1 addition & 1 deletion src/apps/arrakis/common/arrakis.pool.token-fetcher.ts
Expand Up @@ -74,7 +74,7 @@ export abstract class ArrakisPoolTokenFetcher extends AppTokenTemplatePositionFe
const reservesRaw = await contract.getUnderlyingBalances();
const reserves = reservesRaw.map((r, i) => Number(r) / 10 ** appToken.tokens[i].decimals);
const pricePerShare = reserves.map(r => {
return r == 0 ? 0 : r / appToken.supply;
return r / appToken.supply;
});
return pricePerShare;
}
Expand Down
Expand Up @@ -85,7 +85,6 @@ export class EthereumBalancerV1PoolTokenFetcher extends AppTokenTemplatePosition
}

async getPricePerShare({ contract, appToken }: GetPricePerShareParams<BalancerPoolToken>) {
if (appToken.supply === 0) return appToken.tokens.map(() => 0);
const reservesRaw = await Promise.all(appToken.tokens.map(t => contract.getBalance(t.address)));
const reserves = reservesRaw.map((r, i) => Number(r) / 10 ** appToken.tokens[i].decimals);
const pricePerShare = reserves.map(r => r / appToken.supply);
Expand Down
2 changes: 0 additions & 2 deletions src/apps/bancor-v3/ethereum/bancor-v3.pool.token-fetcher.ts
Expand Up @@ -54,8 +54,6 @@ export class EthereumBancorV3PoolTokenFetcher extends AppTokenTemplatePositionFe
multicall,
appToken,
}: GetPricePerShareParams<PoolToken, DefaultAppTokenDataProps, DefaultAppTokenDefinition>) {
if (appToken.supply === 0) return [0];

const bancorContract = this.contractFactory.bancorNetwork({ address: this.bancorAddress, network: this.network });
const poolCollectionAddress = (await multicall.wrap(bancorContract).poolCollections()).at(-1)!;
const poolContract: PoolCollection = this.contractFactory.poolCollection({
Expand Down
Expand Up @@ -78,7 +78,6 @@ export class AuroraBastionProtocolPoolTokenFetcher extends AppTokenTemplatePosit
multicall,
appToken,
}: GetPricePerShareParams<Erc20, DefaultAppTokenDataProps, BastionProtocolPoolTokenDefinition>) {
if (appToken.supply === 0) return [0, 0];
const swapContract = this.contractFactory.bastionProtocolSwap({
address: definition.swapAddress,
network: this.network,
Expand Down
2 changes: 0 additions & 2 deletions src/apps/curve/common/curve.pool-dynamic.token-fetcher.ts
Expand Up @@ -146,8 +146,6 @@ export abstract class CurvePoolDynamicTokenFetcher<T extends Contract> extends A
definition,
appToken,
}: GetPricePerShareParams<Erc20, CurvePoolTokenDataProps, CurvePoolDefinition>) {
if (appToken.supply === 0) return appToken.tokens.map(() => 0);

const contract = multicall.wrap(this.resolveRegistry(this.registryAddress));
const swapAddress = definition.swapAddress;
const reservesRaw = await this.resolveReserves({ contract, swapAddress, multicall });
Expand Down
Expand Up @@ -62,8 +62,6 @@ export class EthereumEnzymeFinanceVaultTokenFetcher extends AppTokenTemplatePosi
appToken,
multicall,
}: GetPricePerShareParams<EnzymeFinanceVault, DefaultAppTokenDataProps, DefaultAppTokenDefinition>) {
if (appToken.supply === 0) return appToken.tokens.map(() => 0);

const reserves = await Promise.all(
appToken.tokens.map(async token => {
const uTokenContract = this.contractFactory.erc20({ address: token.address, network: this.network });
Expand Down
Expand Up @@ -132,8 +132,6 @@ export abstract class PancakeswapPoolDynamicTokenFetcher<
definition,
appToken,
}: GetPricePerShareParams<Erc20, PancakeswapPoolTokenDataProps, PancakeswapPoolDefinition>) {
if (appToken.supply === 0) return appToken.tokens.map(() => 0);

const contract = multicall.wrap(this.resolveStablePool(definition.swapAddress));
const reservesRaw = await this.resolveReserves({ contract, multicall });

Expand Down
6 changes: 1 addition & 5 deletions src/apps/rigoblock/common/rigoblock.pool.token-fetcher.ts
Expand Up @@ -131,8 +131,6 @@ export abstract class RigoblockPoolTokenFetcher extends AppTokenTemplatePosition
appToken,
multicall,
}: GetPricePerShareParams<SmartPool, DefaultAppTokenDataProps, RigoblockSmartPoolDefinition>) {
if (appToken.supply === 0) return appToken.tokens.map(() => 0);

const reserves = await Promise.all(
appToken.tokens.map(async token => {
const uTokenContract = this.contractFactory.erc20({ address: token.address, network: this.network });
Expand All @@ -142,9 +140,7 @@ export abstract class RigoblockPoolTokenFetcher extends AppTokenTemplatePosition
}),
);

return reserves.map(r => {
return r == 0 ? 0 : r / appToken.supply;
});
return reserves.map(r => r / appToken.supply);
}

async getLabel({
Expand Down
4 changes: 1 addition & 3 deletions src/apps/unipilot/common/unipilot.vault.token-fetcher.ts
Expand Up @@ -79,9 +79,7 @@ export abstract class UnipilotVaultTokenFetcher extends AppTokenTemplatePosition
const { totalLockedToken0, totalLockedToken1 } = definition;
const reservesRaw = [totalLockedToken0, totalLockedToken1];
const reserves = reservesRaw.map((r, i) => Number(r) / 10 ** appToken.tokens[i].decimals);
const pricePerShare = reserves.map(r => {
return r == 0 ? 0 : r / appToken.supply;
});
const pricePerShare = reserves.map(r => r / appToken.supply);
return pricePerShare;
}

Expand Down
Expand Up @@ -265,6 +265,7 @@ export abstract class AppTokenTemplatePositionFetcher<
]);

const supply = Number(totalSupplyRaw) / 10 ** decimals;
if (supply === 0) return null;

// Resolve price per share stage
const pricePerShareStageFragment = { ...baseFragment, symbol, decimals, supply };
Expand Down

0 comments on commit 9d872a4

Please sign in to comment.