export interface LlmConsentRecord { accepted: boolean; attempt: 1 | 2; decided_at: string; version: "1.0.0"; } /** * Optional dependencies for consent I/O. Tests pass `{ homeDir: () => tmpHome }` * to redirect file I/O without mutating `process.env.HOME` (races across * concurrent vitest workers). Mirrors telemetry/consent.ts. */ export interface LlmConsentDeps { homeDir?: () => string; } export declare function llmConsentFilePath(deps?: LlmConsentDeps): string; export declare function readLlmConsent(deps?: LlmConsentDeps): LlmConsentRecord | null; export declare function writeLlmConsent(record: LlmConsentRecord, deps?: LlmConsentDeps): void; /** * Final per-run LLM-filter consent, resolved WITHOUT prompting: `--no-llm` * (flags.llm===false) and `--llm` (flags.llm===true) win; then the `LYSE_LLM` * env override (1 = opt-in persisted, 0 = hard runtime opt-out that never * writes a record); then the persisted record. The default audit path never * prompts for the LLM filter — a first-run user should meet the Health Score * before any consent question, and this one only when they reach for the * feature. A record persisted by a previously accepted prompt stays honored. */ export declare function resolveLlmConsentNonInteractive(flags: { llm?: boolean; } | undefined, deps?: LlmConsentDeps): boolean;