/** * The illustration / animation STYLE REGISTER. * * One typed, selectable set of visual base looks, consumed by BOTH * `multi-shot-prompt.ts` (the `Style:` line) and `filmmaking-prompts.ts` * (the character-sheet prompt, the storyboard-grid descriptors, the Seedance * FORMAT tone). A style carries all three facets rather than one string, * because a look that is only applied to the clip drifts away from the sheet * that locked the character's identity. * * This is a LEAF module on purpose: it imports nothing from the repo. * `cinema-profile.ts` <-> `filmmaking-prompts.ts` is already a live import * cycle, so housing the register inside either consumer would deepen it. * * TWO INVARIANTS, both load-bearing: * * 1. EVERY EMITTED FIELD IS PROMPT TEXT ONLY. `videoStyleLine`, * `charSheetStyle`, `gridDescriptors` and `formatTone` are interpolated * verbatim into provider submissions. Operator-facing commentary, caveats * and picker copy live in `docNote`, which is never emitted. * * 2. NO FRANCHISE, STUDIO, OR LIVING-ARTIST NAMES in an emitted field. * `sanitizePrompt` (seedance-content-filter.ts) strips them on the * Seedance/Dreamina submit path, so a style whose distinctiveness rests on * a name silently loses that style on a content-violation retry — the * hardest class of failure to diagnose after the fact. Describe looks by * visual property: line, texture, shading model, edge treatment, palette. * `style-register-filter.test.ts` enforces this by running the real filter * over every literal below; it also records the pre-existing legacy * violations in an allowlist rather than hiding them. * * The first ten entries are FROZEN. Their strings were lifted byte-identically * from the maps this register replaces (`GENRE_STYLE_LINES` in * multi-shot-prompt.ts, `GENRE_STYLES` in filmmaking-prompts.ts) so existing * projects render exactly as they did before. Several of them violate * invariant 2 — that is a pre-existing bug, recorded in the test allowlist and * in each `docNote`, and fixing it is a separate deliberate change. */ export type StyleFamily = 'painterly' | 'cel' | 'ink' | 'print' | 'graphic' | 'material' | 'rendered-3d' | 'photoreal'; export interface VisualStyle { id: string; label: string; family: StyleFamily; /** * EMITTED — the multi-shot `Style:` line. Omitted means "inherit the active * preset's own styleLine"; `live-action` relies on this, so the property * must be ABSENT rather than an empty string (`?? ` would not catch `''`). */ videoStyleLine?: string; /** EMITTED — the character-sheet image prompt STYLE clause. */ charSheetStyle: string; /** EMITTED — the storyboard-grid panel descriptors. */ gridDescriptors: string; /** EMITTED — the Seedance FORMAT tone. */ formatTone: string; annotationThirdLine: 'MOOD' | 'VOICE' | 'STYLE'; /** * Whether `captureRealismBlock`'s photoreal anti-plastic clauses suit this * look. False for drawn and painted registers; TRUE for the physically * photographed material looks (clay, paper cutout), which really are shot. */ realism: boolean; /** Animation-on-twos (12fps stepping) suits this look. */ onTwos: boolean; /** An id from cinematography.ts LIGHTING. */ lightingId?: string; /** An id from cinematography.ts GRADE. */ gradeId?: string; /** * This style cannot carry facial identity on a character sheet. Lock identity * with a normal sheet FIRST, then apply this register to the video only. */ sheetDivergesFromVideo?: boolean; /** NEVER EMITTED. Operator-facing notes, caveats, picker copy. */ docNote: string; } export declare const VISUAL_STYLES: readonly VisualStyle[]; export declare const STYLE_BY_ID: ReadonlyMap; export declare const STYLE_IDS: readonly string[]; /** Styles grouped for pickers and `--styles` listings. */ export declare function stylesByFamily(): ReadonlyMap; //# sourceMappingURL=style-register.d.ts.map