import type { InputParam } from '../../core/help.js'; export declare const TYPES: string[]; export declare const NODE_KINDS: string[]; export declare const STATUSES: string[]; /** ISO 8601 (`2026-06-01`) \u2192 epoch ms (absolute); relative (`7d`, `2w`, `1mo`) * \u2192 now minus the duration. Throws usage on an unparseable value. */ export declare function parseWhen(field: string, raw: string): number; export declare function splitCsv(v: string | undefined): string[] | undefined; /** The scope/filter param schema shared by search and grep help \u2014 everything * except the query/pattern positional and each leaf's own result-shaping * flags (search: --body/--sort/--snippet-lines/--full; grep: none). */ export declare const filterParams: InputParam[]; export interface ParsedFilters { cwd: string | undefined; allCwds: boolean; under: string | undefined; nodes: string[] | undefined; types: string[] | undefined; reportKind: string | undefined; kinds: string[] | undefined; statuses: string[] | undefined; sinceMs: number | undefined; untilMs: number | undefined; } /** Parse + validate the shared scope/filter flags from a leaf's raw input. * Pure and client-side; the corpus scan itself runs server-side in crtrd. */ export declare function parseFilters(input: Record): ParsedFilters;