From 479f528577695d880c874d40160c06b25e77ed26 Mon Sep 17 00:00:00 2001 From: Christopher Cali Date: Mon, 23 Oct 2023 10:29:43 -0400 Subject: [PATCH] Add eigen contract addresses & update breakdownMetrics composable --- apps/web/src/composables/breakdownMetrics.ts | 39 +++++++++++++------- apps/web/src/composables/contracts.ts | 19 +++++++--- 2 files changed, 39 insertions(+), 19 deletions(-) diff --git a/apps/web/src/composables/breakdownMetrics.ts b/apps/web/src/composables/breakdownMetrics.ts index a2e60dc61..04300b22b 100644 --- a/apps/web/src/composables/breakdownMetrics.ts +++ b/apps/web/src/composables/breakdownMetrics.ts @@ -15,7 +15,8 @@ const { getCurrentPrice } = usePrice() const loadingInitializeBreakdownMetrics = ref(false) const loadingInitializeBreakdownMetricsError = ref(false) -let manager: CasimirManager +let defaultManager: CasimirManager +let eigenManager: CasimirManager export default function useBreakdownMetrics() { @@ -41,7 +42,8 @@ export default function useBreakdownMetrics() { /* Get User's Current Stake */ const addresses = (userValue.value as UserWithAccountsAndOperators).accounts.map((account: Account) => account.address) as string[] const currentUserStakePromises = [] as Array> - addresses.forEach(address => currentUserStakePromises.push((manager as CasimirManager).getUserStake(address))) + addresses.forEach(address => currentUserStakePromises.push((defaultManager as CasimirManager).getUserStake(address))) + addresses.forEach(address => currentUserStakePromises.push((eigenManager as CasimirManager).getUserStake(address))) const settledCurrentUserStakePromises = await Promise.allSettled(currentUserStakePromises) as Array> const currentUserStake = settledCurrentUserStakePromises.filter(result => result.status === 'fulfilled').map(result => result.value) const currentUserStakeSum = currentUserStake.reduce((acc, curr) => acc.add(curr), ethers.BigNumber.from(0)) @@ -49,7 +51,8 @@ export default function useBreakdownMetrics() { /* Get User's All Time Deposits and Withdrawals */ const userEventTotalsPromises = [] as Array> - addresses.forEach(address => {userEventTotalsPromises.push(getContractEventsTotalsByAddress(address))}) + addresses.forEach(address => {userEventTotalsPromises.push(getContractEventsTotalsByAddress(address, defaultManager))}) + addresses.forEach(address => {userEventTotalsPromises.push(getContractEventsTotalsByAddress(address, eigenManager))}) const userEventTotals = await Promise.all(userEventTotalsPromises) as Array const userEventTotalsSum = userEventTotals.reduce((acc, curr) => { const { StakeDeposited, WithdrawalInitiated } = curr @@ -78,7 +81,7 @@ export default function useBreakdownMetrics() { } } - async function getContractEventsTotalsByAddress(address: string) : Promise { + async function getContractEventsTotalsByAddress(address: string, manager: CasimirManager) : Promise { try { const eventList = [ 'StakeDeposited', @@ -122,7 +125,9 @@ export default function useBreakdownMetrics() { async function getCurrentStaked(): Promise { const addresses = (userValue.value as UserWithAccountsAndOperators).accounts.map((account: Account) => account.address) as string[] try { - const promises = addresses.map((address) => (manager as CasimirManager).getUserStake(address)) + const defaultManagerPromises = addresses.map((address) => (defaultManager as CasimirManager).getUserStake(address)) + const eigenManagerPromises = addresses.map((address) => (eigenManager as CasimirManager).getUserStake(address)) + const promises = [...defaultManagerPromises, ...eigenManagerPromises] const settledPromises = await Promise.allSettled(promises) as Array> const currentStaked = settledPromises .filter((result) => result.status === 'fulfilled') @@ -201,18 +206,24 @@ export default function useBreakdownMetrics() { function listenForContractEvents() { stopListeningForContractEvents() // Clear old listeners try { - (manager as CasimirManager).on('StakeDeposited', stakeDepositedListener); - (manager as CasimirManager).on('StakeRebalanced', stakeRebalancedListener); - (manager as CasimirManager).on('WithdrawalInitiated', withdrawalInitiatedListener) + (defaultManager as CasimirManager).on('StakeDeposited', stakeDepositedListener); + (defaultManager as CasimirManager).on('StakeRebalanced', stakeRebalancedListener); + (defaultManager as CasimirManager).on('WithdrawalInitiated', withdrawalInitiatedListener); + (eigenManager as CasimirManager).on('StakeDeposited', stakeDepositedListener); + (eigenManager as CasimirManager).on('StakeRebalanced', stakeRebalancedListener); + (eigenManager as CasimirManager).on('WithdrawalInitiated', withdrawalInitiatedListener) } catch (err) { console.log(`There was an error in listenForContractEvents: ${err}`) } } function stopListeningForContractEvents() { - (manager as CasimirManager).removeListener('StakeDeposited', stakeDepositedListener); - (manager as CasimirManager).removeListener('StakeRebalanced', stakeRebalancedListener); - (manager as CasimirManager).removeListener('WithdrawalInitiated', withdrawalInitiatedListener) + (defaultManager as CasimirManager).removeListener('StakeDeposited', stakeDepositedListener); + (defaultManager as CasimirManager).removeListener('StakeRebalanced', stakeRebalancedListener); + (defaultManager as CasimirManager).removeListener('WithdrawalInitiated', withdrawalInitiatedListener); + (eigenManager as CasimirManager).removeListener('StakeDeposited', stakeDepositedListener); + (eigenManager as CasimirManager).removeListener('StakeRebalanced', stakeRebalancedListener); + (eigenManager as CasimirManager).removeListener('WithdrawalInitiated', withdrawalInitiatedListener) } const stakeDepositedListener = async () => await refreshBreakdown() @@ -243,7 +254,8 @@ export default function useBreakdownMetrics() { async function initializeComposable(user: UserWithAccountsAndOperators){ userValue.value = toValue(user) - manager = (await getContracts()).manager + defaultManager = (await getContracts()).defaultManager + eigenManager = (await getContracts()).eigenManager try { loadingInitializeBreakdownMetrics.value = true @@ -260,7 +272,8 @@ export default function useBreakdownMetrics() { } async function uninitializeComposable(){ - manager = (await getContracts()).manager + defaultManager = (await getContracts()).defaultManager + eigenManager = (await getContracts()).eigenManager userValue.value = undefined provider.removeAllListeners('block') stopListeningForContractEvents() diff --git a/apps/web/src/composables/contracts.ts b/apps/web/src/composables/contracts.ts index 7c38d11ad..f1d276a00 100644 --- a/apps/web/src/composables/contracts.ts +++ b/apps/web/src/composables/contracts.ts @@ -13,14 +13,21 @@ export default function useContracts() { const managerConfigs: ManagerConfig[] = await Promise.all((await factory.getManagerIds()).map(async (id: number) => { return await factory.getManagerConfig(id) })) - const manager = new ethers.Contract(managerConfigs[0].managerAddress, ICasimirManagerAbi, provider) as CasimirManager - const registry = new ethers.Contract(managerConfigs[0].registryAddress, ICasimirRegistryAbi, provider) as CasimirRegistry - const views = new ethers.Contract(managerConfigs[0].viewsAddress, ICasimirViewsAbi, provider) as CasimirViews + const defaultManager = new ethers.Contract(managerConfigs[0].managerAddress, ICasimirManagerAbi, provider) as CasimirManager + const defaultRegistry = new ethers.Contract(managerConfigs[0].registryAddress, ICasimirRegistryAbi, provider) as CasimirRegistry + const defaultViews = new ethers.Contract(managerConfigs[0].viewsAddress, ICasimirViewsAbi, provider) as CasimirViews + + const eigenManager = new ethers.Contract(managerConfigs[1].managerAddress, ICasimirManagerAbi, provider) as CasimirManager + const eigenRegistry = new ethers.Contract(managerConfigs[1].registryAddress, ICasimirRegistryAbi, provider) as CasimirRegistry + const eigenViews = new ethers.Contract(managerConfigs[1].viewsAddress, ICasimirViewsAbi, provider) as CasimirViews return { - manager, - registry, - views + defaultManager, + defaultRegistry, + defaultViews, + eigenManager, + eigenRegistry, + eigenViews } }