/** Site-local creative records. Validation deliberately rejects persuasive prose without evidence links. */ export type CreativeSourceKind = "observed" | "operator" | "hypothesis" | "measured"; export type CreativeLink = { objective: string; visitorTask: string; evidenceIds: string[]; hypothesis: string; observableOutcome: string; }; export type CreativeBrief = { schemaVersion: 1; audience: string; goal: string; goalKind: "lead" | "discovery" | "trust" | "recruitment" | "self_service" | "information" | "other"; differentiator: string; strongestProof: string; mediaOpportunities: string[]; constraints: string[]; uncertainties: string[]; emotionalCharacter: string; links: CreativeLink[]; }; export type CreativeCandidate = { schemaVersion: 1; id: string; centralIdea: string; experienceHypothesis: string; hierarchy: string; narrative: string; composition: string; imagery: string; typography: string; interaction: string; evidenceIds: string[]; judgmentTask: string; risks: string[]; }; export type CreativeFinding = { schemaVersion: 1; candidateId: string; source: CreativeSourceKind; page: string; viewport: number; state: string; section: string; observation: string; hypothesis: string; expectedImprovement: string; evidenceIds: string[]; }; export type CreativeDecision = { schemaVersion: 1; selectedCandidateId: string; candidateRevision: string; observations: string[]; tradeoffs: string[]; counterarguments: string[]; identityInvariants: string[]; confidenceLimitations: string[]; rejectedCandidateIds: string[]; evidenceIds: string[]; action?: "select" | "revise" | "retire" | "challenge"; reason?: string; revisionPlan?: CreativeRevisionPlan; challengerCandidateId?: string; }; export type CreativeRevisionPlan = { objective: string; findingIndexes: number[]; targets: string[]; skillIds: string[]; evidenceIds: string[]; acceptance: string[]; }; export type CreativeExperiment = { schemaVersion: 1; sourceHash: string; profile: "creative-v1"; baseline: { elapsedMs: number | null; measuredTokens: number | null; coverage: string; }; limits: { iterations: number; durationMs: number; tokens: number | null; }; outcomes: { technical: string; factual: string; visual: string; distinctiveness: string; businessFit: string; visitorTask: string; humanPreference: "unlabeled" | "labeled"; }; }; export declare function validateCreativeBrief(value: unknown): string[]; export declare function validateCreativeCandidates(value: unknown, evidenceIds: Set): string[]; export declare function validateCreativeDecision(value: unknown, candidates: CreativeCandidate[], revisions: Record, evidenceIds: Set): string[]; export declare function validateCreativeRevisionPlan(value: unknown, evidenceIds: Set, findingCount?: number): string[]; export type CreativeFinalAudit = { schemaVersion: 1; sourceRevision: string; identity: { invariant: string; outcome: "preserved" | "adapted"; observation: string; evidenceIds: string[]; }[]; journeys: { task: string; outcome: "observed" | "unverified"; observation: string; evidenceIds: string[]; }[]; limitations: string[]; blockers: string[]; revisionPlan?: CreativeRevisionPlan; }; export declare function validateCreativeFinalAudit(value: unknown, revision: string, invariants: string[], evidenceIds: Set, visitorTasks?: string[]): string[]; export declare function validateCreativeFindings(value: unknown, candidates: CreativeCandidate[], evidenceIds: Set): string[];