/** Shared task filtering and enumeration truth (T12200). */ import type { DataAccessor, Task, TaskPopulation, TaskQueryFilters } from '@cleocode/contracts'; /** * Apply identical eligibility to ordinary and archived task rows. * @param task - Candidate task from either storage population. * @param filters - Axis, parent, label and phase eligibility constraints. * @returns Whether the candidate satisfies every supplied constraint. * @remarks Archive inclusion is handled by the population reader, before pagination. * @example * ```ts * const eligible = matchesTaskFilters(task, { parentId: "T001" }); * ``` */ export declare function matchesTaskFilters(task: Task, filters: TaskQueryFilters): boolean; /** * Read the full eligible population before matching or pagination. * @param accessor - Project-bound canonical task store. * @param filters - Eligibility constraints; pagination fields are deliberately ignored. * @param includeArchive - Include archived storage rows with the same filters. * @returns Eligible task rows deduplicated by task identity. * @remarks Archive read errors propagate; they must not imply an empty population. * @example * ```ts * const tasks = await readTaskPopulation(accessor, { parentId: "T001" }, true); * ``` */ export declare function readTaskPopulation(accessor: DataAccessor, filters: TaskQueryFilters, includeArchive?: boolean): Promise; /** * Slice once and retain explicit match, returned, pagination and archive facts. * @typeParam T - Eligible row shape retained without projection. * @param rows - Entire matched population in presentation order. * @param limit - Non-negative page size; zero returns all rows after offset. * @param offset - Non-negative count of initial matched rows to skip. * @param archive - Archive inclusion policy used when assembling the population. * @returns Selected rows and matched-versus-returned population facts. * @remarks Invalid or fractional bounds are rejected rather than rounded or defaulted. * @example * ```ts * const page = paginateTaskPopulation(tasks, 10, 0, "excluded"); * ``` */ export declare function paginateTaskPopulation(rows: T[], limit: number, offset?: number, archive?: TaskPopulation['archive']): { rows: T[]; population: TaskPopulation; }; //# sourceMappingURL=population.d.ts.map