export type FilterVerdict = 'safe' | 'risky' | 'likely-blocked'; /** Severity ordering, mirrors Python VERDICT_ORDER. */ export declare const VERDICT_ORDER: Record; /** * Keyword categories matching the Python prompt's flagged-element list. Each * category contributes to the risk score. Two distinct categories present, or a * high-weight category, escalate the verdict to likely-blocked. */ export declare const RISK_CATEGORIES: Record; export interface ImageFilterCandidate { sceneIndex: number; /** * The text used to generate / describe the slide image (prompt or caption). * The local heuristic scans this for known-risky keyword categories. */ prompt: string; } export interface CheckImageFilterInput { candidates: ImageFilterCandidate[]; /** * Flag any candidate at or above this verdict. Default 'risky'. (The Python * default is 'likely-blocked', but for a text-only heuristic 'risky' is the * safer advisory default; callers can raise it.) */ threshold?: FilterVerdict; } export interface ImageFilterWarning { sceneIndex: number; rule: 'content-filter-risk'; verdict: FilterVerdict; /** Risk categories that matched, e.g. ['weapon', 'supernatural']. */ categories: string[]; message: string; } export interface CheckImageFilterResult { warnings: ImageFilterWarning[]; ok: boolean; } /** Classify one prompt into a verdict + matched categories (pure, local). */ export declare function classifyImagePrompt(prompt: string): { verdict: FilterVerdict; categories: string[]; }; /** * Run the local image-filter heuristic over candidate slide prompts. Advisory: * returns warnings, never throws for content. Throws only on invalid input. */ export declare function checkImageFilter(input: CheckImageFilterInput): CheckImageFilterResult; //# sourceMappingURL=qa-image-filter.d.ts.map