import type { SeriesState, ShotScript } from '../series/types.js'; export type ReferenceSlotKind = 'character-primary' | 'character-angle' | 'storyboard' | 'location'; export interface ReferenceSlot { /** 1-based index — @Image in the prompt. */ imageIndex: number; kind: ReferenceSlotKind; /** Absolute path to the image on disk. */ path: string; /** Character name (character slots), location slug, or storyboard slug. */ label: string; /** Prompt role clause emitted verbatim (without the @ImageN prefix). */ roleClause: string; } export interface ReferenceSlotPlan { slots: ReferenceSlot[]; /** Character name -> primary slot imageIndex (for @ImageN name substitution). */ characterSlotByName: Map; /** Human-readable notes about what was dropped due to budget. */ dropped: string[]; } /** * Build the ordered reference slot plan for a shot on an @Image-tag model. * * The returned slots array is the exact push order of reference_image_urls; * @ImageN in the prompt = slots[N-1]. Characters always occupy the first * slots (one primary angle each) so drop decisions never renumber them. */ export declare function buildReferenceSlotPlan(series: SeriesState, shot: ShotScript, modelId: string, options?: { characterNames?: string[]; }): ReferenceSlotPlan; //# sourceMappingURL=reference-slots.d.ts.map