import { s as Task } from "./task-hLh4BOO7.mjs"; //#region src/extensions/workspaces/sessions/(frontend)/overlay/_lib/selectors.d.ts interface TaskCounts { total: number; completed: number; inProgress: number; pending: number; failed: number; blocked: number; } interface TaskGroups { inProgress: Task[]; blocked: Task[]; pending: Task[]; completed: Task[]; failed: Task[]; } interface TaskProjection { visible: Task[]; counts: TaskCounts; groups: TaskGroups; showIds: boolean; hasActiveWork: boolean; } declare function visibleTasks(tasks: readonly Task[]): Task[]; /** * Derive all overlay-facing state in O(tasks + dependency edges). * * The id index replaces one full task-list scan per dependency, while the * ordered pass keeps group ordering identical to the source document. */ declare function deriveTaskProjection(tasks: readonly Task[]): TaskProjection; declare function countTasks(tasks: readonly Task[]): TaskCounts; /** * Group tasks for display. * * Blocked tasks split out of `pending` because a reader scanning the overlay * needs to know at a glance what is actually actionable right now. */ declare function groupTasks(tasks: readonly Task[]): TaskGroups; /** Ids are only worth the visual noise once dependencies are in play. */ declare function shouldShowIds(tasks: readonly Task[]): boolean; declare function hasActiveWork(tasks: readonly Task[]): boolean; interface OverlayLayout { visible: Task[]; hiddenCompleted: number; truncatedTail: number; } /** * Choose which rows fit the overlay budget. * * Active work wins limited space: in-progress first, then failed, blocked, and * pending. Selected rows are always returned in source order, however, so a * status update does not reshuffle an otherwise unchanged overlay. */ declare function selectOverlayLayoutFromProjection(projection: TaskProjection, budget: number): OverlayLayout; declare function selectOverlayLayout(tasks: readonly Task[], budget: number): OverlayLayout; //#endregion export { countTasks as a, hasActiveWork as c, shouldShowIds as d, visibleTasks as f, TaskProjection as i, selectOverlayLayout as l, TaskCounts as n, deriveTaskProjection as o, TaskGroups as r, groupTasks as s, OverlayLayout as t, selectOverlayLayoutFromProjection as u }; //# sourceMappingURL=selectors-DPDPPjH3.d.mts.map