/** * Reference-transfer contract — a PURE, deterministic role-separation emitter + * advisory. No I/O, no Date, no Math.random. * * Reference channels bleed (model-mechanics #6: "references bleed; always state * what must NOT transfer"; failure-atlas row 11: "Reference roles contaminate — * transfer/ignore clauses were absent"). A multi-reference packet should state, * per reference, what it CONTROLS and what must NOT transfer. This emits that * canonical clause and warns when a multi-domain packet lacks it. * * Harvested from the MIT `Emily2040/seedance-2.0` reference-transfer-contract * (@63b32dc). Advisory by construction — nothing here mutates a live payload. */ export type ReferenceTransferRole = 'character-sheet' | 'storyboard-grid' | 'start-frame' | 'end-frame' | 'reference-image' | 'background-plate'; export interface ReferenceTransferInput { role: ReferenceTransferRole; label: string; } export interface ReferenceTransferAdvisory { code: 'reference-transfer'; severity: 'warning'; message: string; } /** Distinct bleed-relevant domains present (layout excluded), first-appearance order. */ export declare function referenceDomains(refs: ReferenceTransferInput[]): string[]; /** * The canonical "REFERENCE ROLES:" block — one line per non-layout reference: * "