import { Container } from "@gajae-code/tui"; import type { SessionInfo } from "../../session/session-manager"; export type SessionLiveness = "active" | "stale" | "unknown"; export interface DashboardSession { id: string; cwd: string; title: string; modified: Date; messageCount: number; messageCountIsEstimate?: boolean; liveness: SessionLiveness; } /** * Reads the opt-in presence sidecar beside a session transcript. A missing or * malformed sidecar deliberately means unknown: transcript modification time is * not a process-liveness signal. */ export declare function sessionLivenessFromPresence(sessionPath: string, readFile?: (filePath: string) => string, now?: number): SessionLiveness; export declare function dashboardSessions(sessions: readonly SessionInfo[], options?: { readFile?: (filePath: string) => string; now?: number; }): DashboardSession[]; /** Read-only top-level inventory. This component never opens, resumes, or mutates a session. */ export declare class SessionsDashboardComponent extends Container { #private; private readonly sessions; private readonly onClose; private readonly requestRender?; constructor(sessions: readonly DashboardSession[], onClose: () => void, requestRender?: (() => void) | undefined); render(width: number): string[]; handleInput(keyData: string): void; }