import type { Finding } from "./finding.js"; /** * Discriminated union representing the query scope for hub prioritization. * * - general: no constraint; LLM relevance-filters the full pool. * - decision: keep findings relevant to either named option (drop "neither"). * - filtered: pure JS structural filter on domain, tag, and/or dueWithinDays. */ export type Scope = { mode: "general"; } | { mode: "decision"; optionA: string; optionB: string; } | { mode: "filtered"; domain?: string; dueWithinDays?: number; tag?: string; }; /** * Parse an unknown value into a Scope discriminated union. * Falls back to { mode: "general" } on any parse failure — never throws. */ export declare function parseScope(raw: unknown): Scope; /** * Pure structural filter — NO LLM, NO async, NO side effects. * * For filtered scope: returns findings matching ALL specified constraints * (domain AND tag AND dueBy within dueWithinDays of now). * A finding with no dueBy does NOT satisfy a dueWithinDays constraint. * For non-filtered scopes: returns findings unchanged (the LLM pass-1 handles those). * * @param findings Pool of findings to filter. * @param scope The parsed query scope. * @param now Injected clock — used for dueWithinDays calculation. */ export declare function applyFilter(findings: Finding[], scope: Scope, now: Date): Finding[]; //# sourceMappingURL=scope.d.ts.map