import type { LastSweepSummary } from '../../../../modules/worktree-management/entities/sweep/lastSweepSummary.schema.js';
import type { WorktreeSizeProbeGateway } from '../../../../modules/worktree-management/entities/worktree/worktreeSizeProbe.gateway.js';
import type { WorktreeEntry, WorktreePlatform } from '../../../../modules/worktree-management/entities/worktree/worktree.schema.js';
import type { DegradedReason, WorktreeHealthReport } from '../../../../modules/worktree-management/entities/worktree/worktreeHealth.schema.js';
export type WorktreeRowStatus = 'active' | 'idle' | 'stale';
export interface WorktreeRowViewModel {
    mrNumber: number;
    path: string;
    mtime: string;
    ageSeconds: number;
    sizeBytes: number | null;
    status: WorktreeRowStatus;
}
export interface WorktreeGroupViewModel {
    platform: WorktreePlatform;
    projectPath: string;
    worktrees: WorktreeRowViewModel[];
}
export interface LastSweepViewModel {
    ranAt: string;
    removed: number;
    failures: number;
    scanned: number;
}
export type DegradedReasonCode = DegradedReason['kind'];
export interface DegradedRowViewModel {
    mrNumber: number;
    platform: WorktreePlatform;
    projectPath: string;
    path: string;
    reasonCode: DegradedReasonCode;
    reasonLabel: string;
    detectedAtIso: string;
    recommendedAction: string;
    cleanupEndpointPayload: {
        platform: WorktreePlatform;
        projectPath: string;
        mrNumber: number;
    };
}
export interface WorktreePanelViewModel {
    totalCount: number;
    totalSizeBytes: number;
    activeCount: number;
    idleCount: number;
    staleCount: number;
    nextSweepAt: string;
    lastSweep: LastSweepViewModel | null;
    groups: WorktreeGroupViewModel[];
    degradedCount: number;
    degraded: DegradedRowViewModel[];
}
export interface WorktreePanelPresenterInput {
    worktrees: WorktreeEntry[];
    lastSweep: LastSweepSummary | null;
    nextSweepAt: Date;
    healthReports?: WorktreeHealthReport[];
}
export interface WorktreePanelPresenterDependencies {
    sizeProbe: WorktreeSizeProbeGateway;
    cacheTtlMs?: number;
    now?: () => Date;
}
export declare class WorktreePanelPresenter {
    private readonly sizeProbe;
    private readonly cacheTtlMs;
    private readonly now;
    private readonly sizeCache;
    constructor(deps: WorktreePanelPresenterDependencies);
    present(input: WorktreePanelPresenterInput): Promise<WorktreePanelViewModel>;
    private resolveSize;
}
//# sourceMappingURL=worktreePanel.presenter.d.ts.map