{archived ?
Archived : null}
diff --git a/src/packages/v4/views/V4ProjectDashboard/V4ProjectTabs/V4CyclesPayoutsPanel/V4TreasuryStats.tsx b/src/packages/v4/views/V4ProjectDashboard/V4ProjectTabs/V4CyclesPayoutsPanel/V4TreasuryStats.tsx
index 52109a30fe..f8b1a30f9b 100644
--- a/src/packages/v4/views/V4ProjectDashboard/V4ProjectTabs/V4CyclesPayoutsPanel/V4TreasuryStats.tsx
+++ b/src/packages/v4/views/V4ProjectDashboard/V4ProjectTabs/V4CyclesPayoutsPanel/V4TreasuryStats.tsx
@@ -1,26 +1,27 @@
import { Trans, t } from '@lingui/macro'
import {
- availableToPayOutTooltip,
- treasuryBalanceTooltip,
+ availableToPayOutTooltip,
+ treasuryBalanceTooltip,
} from 'components/Project/ProjectTabs/CyclesPayoutsTab/CyclesPanelTooltips'
+
import { TitleDescriptionDisplayCard } from 'components/Project/ProjectTabs/TitleDescriptionDisplayCard'
import { useMemo } from 'react'
import { useV4TreasuryStats } from './hooks/useV4TreasuryStats'
export const V4TreasuryStats = () => {
- const { availableToPayout, surplus, treasuryBalance, cashOutTaxRate } =
+ const { availableToPayout, surplusElement, treasuryBalance, cashOutTaxRate } =
useV4TreasuryStats()
const surplusTooltip = useMemo(
() =>
cashOutTaxRate && cashOutTaxRate.toFloat() > 0 ? (
- {surplus} is available for token redemptions or future payouts.
+ {surplusElement} is available across all chains for token redemptions or future payouts.
) : (
-
{surplus} is available for future payouts.
+
{surplusElement} is available across all chains for future payouts.
),
- [surplus, cashOutTaxRate],
+ [surplusElement, cashOutTaxRate],
)
return (
@@ -34,7 +35,7 @@ export const V4TreasuryStats = () => {
{
const { data: rulesetMetadata } = useJBRulesetMetadata()
const { distributableAmount } = useV4DistributableAmount()
- const { data: surplusInNativeToken } = useNativeTokenSurplus()
const { data: _treasuryBalance } = useV4BalanceOfNativeTerminal()
- const { data: payoutLimit } = usePayoutLimit()
+ const surplusQuery = useSuckersNativeTokenSurplus();
- const treasuryBalance =
+ // NOTE: if loading state or conversion to USD necessary
+ // const { data: ethPrice, isLoading: isEthLoading } = useEtherPrice();
+ // const loading = isEthLoading || surplusQuery.isLoading;
- const surplus = useMemo(() => {
- if (payoutLimit && payoutLimit.amount === MAX_PAYOUT_LIMIT)
- return t`No surplus`
+ const ethSurplusByChain = surplusQuery?.data
+ const totalEthSurplus =
+ ethSurplusByChain?.reduce((acc, curr) => {
+ return acc + curr.surplus;
+ }, 0n) ?? 0n;
+
+ const treasuryBalance =
- return
- }, [surplusInNativeToken, payoutLimit])
+ const surplusElement = useMemo(() => {
+ // NOTE: Don't think we need this since other chains payouts limits may be different?
+ // if (payoutLimit && payoutLimit.amount === MAX_PAYOUT_LIMIT)
+ // return t`No surplus`
+ return (
+ 0 ?
+
+ {ethSurplusByChain?.map((surplus, index) => (
+
+
+
+ {NETWORKS[surplus.chainId].label}
+
+ {/* (NOTE: Following comment copied from Revnet:
+ "TODO maybe show USD-converted value here instead?" */}
+
+
+
+
+ ))}
+
+
+ : undefined}
+ >
+
+
+ )
+ }, [totalEthSurplus, ethSurplusByChain])
const availableToPayout =
return {
treasuryBalance,
availableToPayout,
- surplus,
+ surplusElement,
cashOutTaxRate: rulesetMetadata?.cashOutTaxRate,
}
}
diff --git a/src/redux/slices/v2v3/creatingV2Project/creatingV2Project.ts b/src/redux/slices/v2v3/creatingV2Project/creatingV2Project.ts
index e791046704..c13e033051 100644
--- a/src/redux/slices/v2v3/creatingV2Project/creatingV2Project.ts
+++ b/src/redux/slices/v2v3/creatingV2Project/creatingV2Project.ts
@@ -1,32 +1,32 @@
-import {
- EMPTY_PAYOUT_GROUPED_SPLITS,
- EMPTY_RESERVED_TOKENS_GROUPED_SPLITS,
-} from '../shared/v2ProjectDefaultState'
+import { PayloadAction, createSlice } from '@reduxjs/toolkit'
import {
JB721GovernanceType,
NftCollectionMetadata,
NftRewardTier,
} from 'models/nftRewards'
-import { NftRewardsData, ReduxState } from '../shared/v2ProjectTypes'
-import { PayloadAction, createSlice } from '@reduxjs/toolkit'
import {
SerializedV2V3FundAccessConstraint,
SerializedV2V3FundingCycleData,
SerializedV2V3FundingCycleMetadata,
} from 'packages/v2v3/utils/serializers'
+import {
+ EMPTY_PAYOUT_GROUPED_SPLITS,
+ EMPTY_RESERVED_TOKENS_GROUPED_SPLITS,
+} from '../shared/v2ProjectDefaultState'
+import { NftRewardsData, ReduxState } from '../shared/v2ProjectTypes'
-import { AllocationSplit } from 'packages/v2v3/components/shared/Allocation/Allocation'
-import { AmountInputValue } from 'packages/v2v3/components/Create/components/pages/ProjectDetails/ProjectDetailsPage'
import { CreatePage } from 'models/createPage'
-import { INITIAL_REDUX_STATE } from '../shared/v2ProjectInitialReduxState'
import { NftPostPayModalConfig } from 'models/nftPostPayModal'
import { PayoutsSelection } from 'models/payoutsSelection'
import { ProjectTagName } from 'models/project-tags'
import { ProjectTokensSelection } from 'models/projectTokenSelection'
import { ReconfigurationStrategy } from 'models/reconfigurationStrategy'
-import { Split } from 'packages/v2v3/models/splits'
import { TreasurySelection } from 'models/treasurySelection'
+import { AmountInputValue } from 'packages/v2v3/components/Create/components/pages/ProjectDetails/ProjectDetailsPage'
import { projectTokenSettingsToReduxFormat } from 'packages/v2v3/components/Create/utils/projectTokenSettingsToReduxFormat'
+import { AllocationSplit } from 'packages/v2v3/components/shared/Allocation/Allocation'
+import { Split } from 'packages/v2v3/models/splits'
+import { INITIAL_REDUX_STATE } from '../shared/v2ProjectInitialReduxState'
const creatingV2ProjectSlice = createSlice({
name: 'creatingV2Project',
@@ -39,8 +39,8 @@ const creatingV2ProjectSlice = createSlice({
setName: (state, action: PayloadAction) => {
state.projectMetadata.name = action.payload
},
- setProjectChainId: (state, action: PayloadAction) => {
- state.projectChainId = action.payload
+ setProjectChainId: (state, action: PayloadAction) => { // v4TODO: Should use JBChainId type
+ state.projectChainId = action.payload as 84532 | 421614 | 11155111 | 11155420 // shouldn't need this
},
setProjectTagline: (state, action: PayloadAction) => {
state.projectMetadata.projectTagline = action.payload
diff --git a/src/redux/slices/v2v3/shared/v2ProjectDefaultState.ts b/src/redux/slices/v2v3/shared/v2ProjectDefaultState.ts
index a79efdbd4c..b1e794141c 100644
--- a/src/redux/slices/v2v3/shared/v2ProjectDefaultState.ts
+++ b/src/redux/slices/v2v3/shared/v2ProjectDefaultState.ts
@@ -119,7 +119,7 @@ const DEFAULT_PROJECT_METADATA_STATE: ProjectMetadata = {
}
const DEFAULT_CREATE_STATE: CreateState = {
- projectChainId: undefined, // not necessary for v2v3
+ projectChainId: 1, // not necessary for v2v3
treasurySelection: 'zero',
reconfigurationRuleSelection: undefined,
fundingCyclesPageSelection: undefined,
diff --git a/src/redux/slices/v2v3/shared/v2ProjectTypes.ts b/src/redux/slices/v2v3/shared/v2ProjectTypes.ts
index efc7e44f74..895fa74f6c 100644
--- a/src/redux/slices/v2v3/shared/v2ProjectTypes.ts
+++ b/src/redux/slices/v2v3/shared/v2ProjectTypes.ts
@@ -14,7 +14,6 @@ import {
SerializedV2V3FundingCycleMetadata,
} from 'packages/v2v3/utils/serializers'
-import { SupportedChainId } from 'constants/networks'
import { CreatePage } from 'models/createPage'
import { FundingTargetType } from 'models/fundingTargetType'
import { NftPostPayModalConfig } from 'models/nftPostPayModal'
@@ -37,7 +36,7 @@ export type NftRewardsData = {
export interface CreateState {
fundingCyclesPageSelection: 'automated' | 'manual' | undefined
- projectChainId: SupportedChainId | undefined
+ projectChainId: number // v4TODO: should be JBChainId
treasurySelection: TreasurySelection | undefined
fundingTargetSelection: FundingTargetType | undefined
payoutsSelection: PayoutsSelection | undefined