/** Shared Director navigation, edit merging and locale-owned version labels. */ export type DirectorTab = "manuscript" | "storyboard" | "keyframes" | "video"; export interface DirectorPosition { tab: DirectorTab; index: number; } export interface DirectorDraft { base: Record; values: Record; } /** Whether the editable fields differ from their last saved values. */ export declare function isDirectorDraftDirty(draft: DirectorDraft): boolean; /** Studio stage tabs and the iframe Director share one button treatment. */ export declare function studioTabStyle(active: boolean, colors: { hover: string; brand: string; primary: string; }): { display: string; alignItems: string; gap: string; border: string; borderRadius: string; background: string; borderColor: string; color: string; padding: string; cursor: string; fontSize: string; fontWeight: string; lineHeight: string; whiteSpace: "nowrap"; }; /** Refresh untouched fields while preserving local edits and their conflict baseline. */ export declare function refreshDirectorDraft(draft: DirectorDraft, latest: Record): void; export declare const directorText: { zhCN: { tabs: { manuscript: string; storyboard: string; keyframes: string; video: string; }; versions: string; current: string; selected: string; missing: string; noFrames: string; noVideo: string; previous: string; next: string; conflict: string; missingTarget: string; units: string; unit: string; source: { generated: string; imported: string; library: string; }; }; en: { tabs: { manuscript: string; storyboard: string; keyframes: string; video: string; }; versions: string; current: string; selected: string; missing: string; noFrames: string; noVideo: string; previous: string; next: string; conflict: string; missingTarget: string; units: string; unit: string; source: { generated: string; imported: string; library: string; }; }; }; /** Walk frames before crossing the adjacent tab; empty frames occupy one position. */ export declare function stepDirector(position: DirectorPosition, count: number, direction: -1 | 1): DirectorPosition; /** Merge only edited text fields; media and other frames come from the latest read. */ export declare function mergeDirectorDrafts; }>(unit: T, drafts: Record, only?: string): Record;