Problem
The farm page renders each pool position as an independent row with no summary. A user farming across three pools must mentally add up their credits and stakes. There is no at-a-glance view of total portfolio value or portfolio-level daily rate.
useAllUserPositions is already defined in useSorobanQuery.ts and fetches all positions in parallel, but the farm page never shows aggregated values from this hook.
Acceptance Criteria
Relevant Files
Problem
The farm page renders each pool position as an independent row with no summary. A user farming across three pools must mentally add up their credits and stakes. There is no at-a-glance view of total portfolio value or portfolio-level daily rate.
useAllUserPositionsis already defined inuseSorobanQuery.tsand fetches all positions in parallel, but the farm page never shows aggregated values from this hook.Acceptance Criteria
<FarmSummaryBar>component renders above the pool rows showing:lockedAmountconverted to XLM equivalent for display)useLiveCreditsper pool)dailyRate × lockedAmount)(totalDailyRate / totalStake) × 365 × 100formatted as a percentageuseAllUserPositionsreturns all zero-stake positionsuseLiveCreditsvalues<FarmSummaryBar>with two mock positions and verifies the aggregated values in the outputRelevant Files
src/hooks/useSorobanQuery.ts—useAllUserPositions(exists)src/app/farm/page.tsx— render<FarmSummaryBar>above pool rowssrc/components/FarmSummaryBar/FarmSummaryBar.tsx— createsrc/hooks/useLiveCredits.ts— depends on issue Implement real-time credit accrual ticker in farm rows without polling the contract #23