export type ContextFileClassification = "hard-exclude" | "soft-exclude" | "conditional-include"; export type ContextInclusionDecision = "include" | "exclude"; export type ContextFileType = "source" | "test" | "canon" | "manifest" | "doc" | "config" | "lockfile" | "generated" | "secret" | "binary" | "other"; export type ContextTaskKind = "implementation" | "review" | "testing" | "security" | "docs" | "release" | "closeout"; export interface ContextClassifierOptions { contextDir?: string; } export interface ContextFileClassificationResult { path: string; classification: ContextFileClassification; type: ContextFileType; reasons: string[]; } export interface ContextFileCandidate { path: string; bytes?: number; relevance?: number; type?: ContextFileType; } export interface ContextBudgetOptions extends ContextClassifierOptions { maxTokens?: number; maxFileTokens?: number; taskPaths?: readonly string[]; taskKeywords?: readonly string[]; } export interface ContextFileScore extends ContextFileClassificationResult { decision: ContextInclusionDecision; score: number; tokenEstimate: number; } export interface ContextBudgetTrace extends ContextFileScore { reasons: string[]; } export interface ContextBudgetReport { included: ContextBudgetTrace[]; excluded: ContextBudgetTrace[]; reasonTrace: ContextBudgetTrace[]; totalTokenEstimate: number; maxTokens: number; } export interface LazyCanonOptions extends ContextClassifierOptions { taskKind?: ContextTaskKind; touchedPaths?: readonly string[]; } export interface LazyCanonFile extends ContextFileClassificationResult { role: "router" | "core" | "contract" | "rule"; } export declare function classifyContextFile(path: string, options?: ContextClassifierOptions): ContextFileClassificationResult; export declare function scoreContextFile(candidate: ContextFileCandidate, options?: ContextBudgetOptions): ContextFileScore; export declare function buildContextBudgetReport(candidates: readonly ContextFileCandidate[], options?: ContextBudgetOptions): ContextBudgetReport; export declare function selectLazyCanonFiles(options?: LazyCanonOptions): LazyCanonFile[];