import { type MediaInventory } from "./artifacts.ts"; export declare const KNOWLEDGE_VERSION = "v1"; export type LessonReference = { id: string; kind: "inspected-reference" | "original-synthetic"; file: string; note: string; }; export type KnowledgeLesson = { id: string; version: number; title: string; principle: string; explanation: string; useWhen: string[]; avoidWhen: string[]; requiredAssets: string[]; contraindications: string[]; visitorGoal: string; composition: string; typography: string; media: string; mobile: string; adaptation: string; counterexample: string; counterexampleWhy: string; references: LessonReference[]; evidenceKind: "inspected-reference" | "original-synthetic"; selectWhen: string[]; contentHash: string; }; export type KnowledgeManifest = { schemaVersion: 1; knowledgeVersion: string; labeledPreferenceData: false; purpose: string; catalogFile: string; catalogSha256: string; demonstrations: { file: string; sha256: string; pair: string; role: "strong" | "weak"; }[]; }; export type KnowledgeCatalog = { version: number; lessons: Omit[]; }; export type SelectionSignals = { projectMediaCount: number; peopleMediaCount: number; productMediaCount: number; usableMediaCount: number; lowResolutionCount: number; /** Inspected assets kept on file (`retain`) that are not approved placements. */ retainedMediaCount: number; visitorJobs: string[]; pageRoles: string[]; userConstraints: string[]; hasLocationFacts: boolean; hasComparisonNeed: boolean; serviceCount: number; longform: boolean; complexLayout: boolean; }; export type LessonSelection = { id: string; version: number; contentHash: string; reason: string; contraindicationsConsidered: string[]; mandatory: boolean; expansionHandle: string; }; export declare const MANDATORY_OBLIGATIONS: readonly [{ readonly id: "accessibility"; readonly text: "Keep readable contrast, a visible focus state, and a heading order that follows the visitor's first question."; }, { readonly id: "user-constraints"; readonly text: "Recorded user themes and accepted preferences stay exact. Do not treat an inference as approval."; }, { readonly id: "asset-feasibility"; readonly text: "Do not invent photography, proof, staff, or awards the evidence does not contain."; }]; export declare function knowledgeDir(kernel: string): string; export declare function resolveKnowledgeRoot(siteOrKernel: string): string | undefined; export declare function loadKnowledgeManifest(kernel: string): KnowledgeManifest; export declare function verifyKnowledgePack(kernel: string): string[]; export declare function loadKnowledgeCatalog(siteOrKernel: string): { kernel: string; lessons: KnowledgeLesson[]; } | undefined; export declare function lessonById(catalog: { lessons: KnowledgeLesson[]; }, id: string): KnowledgeLesson | undefined; export declare function selectLessons(opts: { catalog: { lessons: KnowledgeLesson[]; }; signals: SelectionSignals; stage: string; limit?: number; }): LessonSelection[]; /** Usable design proof: inspected and disposition `use`. `retain` is kept on file but is not an approved placement. */ export declare function mediaDesignEligibility(asset: MediaInventory["assets"][number]): "use" | "retain" | "unavailable"; export declare function signalsFromSite(root: string): SelectionSignals; export declare function selectLessonsForStage(root: string, stage: string, limit?: number): LessonSelection[]; export declare function signalsFromInventory(input: { mediaRoles?: string[]; mediaCount?: number; lowResolutionCount?: number; retainedMediaCount?: number; visitorJobs?: string[]; pageRoles?: string[]; userConstraints?: string[]; serviceCount?: number; hasLocationFacts?: boolean; hasComparisonNeed?: boolean; longform?: boolean; complexLayout?: boolean; }): SelectionSignals; export declare function readLessonBody(kernel: string, lesson: KnowledgeLesson): string; export declare function demonstrationPath(kernel: string, file: string): string | undefined;