export { FLATTENED_INNER_ROOT_STRIP_ATTRS } from "../runtime/flattenedRoot";
import { type MediaDurationProber } from "./htmlCompiler";
export type BundledHostCompositionIdentity = {
    authoredCompositionId: string | null;
    runtimeCompositionId: string | null;
};
export declare function assignBundledRuntimeCompositionIds(hosts: Element[], counts?: Map<string, number>): Map<Element, BundledHostCompositionIdentity>;
export declare function prepareFlattenedInnerRoot(innerRoot: Element): Element;
export interface BundleOptions {
    /** Project-relative HTML entry to bundle. Defaults to `index.html`. */
    entryFile?: string;
    /** Optional media duration prober (e.g., ffprobe). If omitted, media durations are not resolved. */
    probeMediaDuration?: MediaDurationProber;
    /**
     * How to handle the HyperFrames runtime <script> tag. Default: `"inline"`.
     *
     * - `"inline"` — embed the runtime IIFE body directly into the bundle. Produces
     *   genuinely self-contained HTML. Right for CLI render output, validate,
     *   snapshot, and any "ship a single .html file" use case.
     * - `"placeholder"` — emit `<script ... src=""></script>` so the caller can
     *   substitute it with a real URL via string replace. Used by the dev studio
     *   server and vite preview to point at a local runtime endpoint, which keeps
     *   the runtime cacheable across hot-reloads instead of re-inlining ~150 KB
     *   on every change.
     *
     * The `HYPERFRAME_RUNTIME_URL` env var, when set, takes precedence over both
     * modes and emits `<script ... src="<URL>">` directly.
     */
    runtime?: "inline" | "placeholder";
    /**
     * Inline .cube LUTs referenced from data-color-grading. Default: true for
     * self-contained renders/exports. Studio preview disables this so the editor
     * keeps showing project asset paths instead of giant data URLs.
     */
    inlineColorGradingLuts?: boolean;
}
export declare function bundleToSingleHtml(projectDir: string, options?: BundleOptions): Promise<string>;
/**
 * Compile-time counterpart of the runtime's injectCompositionCssVariables:
 * every element declaring data-composition-variables gets a scoped stylesheet
 * rule so var(--slug, literal) references resolve during body parse. The
 * runtime injection remains define-if-absent, so it won't double-apply.
 *
 * `variablesByComp` (host-merged sub-composition values, keyed by runtime
 * composition id) adds one rule per scope — the flattened inner root loses
 * its data-composition-id, so the host selector is the only stable anchor.
 * Exported for the producer's render compiler, which inlines sub-compositions
 * through the shared module rather than this bundler.
 * Returns whether a style element was appended.
 */
export declare function emitRootCompositionVariableStyles(document: Document, variablesByComp?: Record<string, Record<string, unknown>>, overrides?: Record<string, unknown>): boolean;
//# sourceMappingURL=htmlBundler.d.ts.map