/** Resolve HTML asset URLs relative to their document, refusing paths outside the project. */ export declare function compositionAssetPath(composition: string, src: string): string; export interface CompositionVideo { elementId: string; source: string; unitId?: string; artifactId?: string; active: boolean; startSeconds: number; durationSeconds?: number; mediaStartSeconds: number; playbackRate: number; } /** Match a Croco project aspect ratio to its native Composition canvas. */ export declare function crocoCanvasSize(aspectRatio: string): { width: number; height: number; }; /** Update only the recognizable HyperFrames blank template used by Croco projects. */ export declare function syncCrocoBlankCompositionAspect(html: string, aspectRatio: string): string; /** Read actual media and nested composition sources, including split/cloned clips. */ export declare function inspectVideoComposition(html: string): { videos: CompositionVideo[]; compositions: string[]; dependencies: string[]; remoteScripts: string[]; durationSeconds: number; width: number; height: number; }; interface NativeVideoInput { unitId: string; source: string; startSeconds: number; durationSeconds: number; compositionDuration: number; mediaDurationSeconds: number; hasAudio: boolean; } type ImportedClip = { elementId: string; source: string; }; type GenerationOwnership = { artifactId: string; previousArtifactId?: string; previousArtifactSource?: string; previousImportedClip?: ImportedClip; }; /** Freeze the exact imported clip that a new generation request may replace. */ export declare function captureImportedVideoClip(html: string, unitId: string): ImportedClip | undefined; /** Bind a generated artifact; replacing an import requires its frozen identity. */ export declare function bindVideoUnitClip(html: string, input: NativeVideoInput & GenerationOwnership): { html: string; elementId: string; duration: number; }; /** Bind an existing file without assigning generation or refinement eligibility. */ export declare function bindImportedVideoClip(html: string, input: NativeVideoInput & { previousSource?: string; }): { html: string; elementId: string; duration: number; }; /** Replace exact parsed media sources in an export copy; unrelated bytes remain unchanged. */ export declare function replaceCompositionVideoSources(html: string, replacements: ReadonlyMap): string; /** Localize static classic-script dependencies in the export snapshot only. */ export declare function replaceCompositionScriptSources(html: string, replacements: ReadonlyMap): string; /** Refuse a historical source that cannot cover the existing clip's media range. */ export declare function assertVideoVersionFits(html: string, unitId: string, availableSeconds: number, fallbackDuration: number): void; export {};