import { c as MasterRunOptions } from "./master.js";
//#region src/build.d.ts
interface ProjectConfig {
/** scene module paths or globs (`episodes/**\/*.ts`), relative to the config file. */
scenes: string[];
/**
* Exclude globs applied AFTER `scenes` expands — so a broad `episodes/**\/*.ts`
* doesn't sweep colocated `*.test.ts` (which `gs build` would try to load, importing
* vitest → a crash). A pattern with no `/` matches the basename at any depth
* (`*.test.ts`); a pattern with `/` matches the config-relative path (`_wip/**`).
*/
ignore?: string[];
/** output dir for rendered videos (default: alongside each scene as `.mp4`). */
out?: string;
/**
* 0.43 project runtime: master the WHOLE project to a SHARED loudness target after
* rendering. When set, `gs build` runs a second, cross-scene phase — render all →
* BARRIER → master (one shared LUFS target + limiter across every member) → the
* render staleness (a changed `.loudness.json`) remuxes exactly the members
* whose gain moved. Absent → the classic per-scene pipeline, unchanged.
*/
master?: MasterRunOptions;
/** per-scene render/cache defaults. */
defaults?: {
fps?: number;
/** persistent frame-cache dir (speed only — NEVER changes output, so it is
* excluded from the staleness hash). */
cache?: string;
/** captions mode for every render (0.33, consumer-pulled): a series that
* ships SOFT captions sets `captions: 'sidecar'` here — before this, gs
* build always used render's `burn` default and baked captions into the
* masters. Folded into the render staleness hash, so flipping it re-renders. */
captions?: 'burn' | 'sidecar' | 'off';
/** narration/music/sfx auto-mix modes ('auto' default). Threaded into BOTH
* render and measure-loudness so the measured mix always matches the
* rendered mix (a mismatch would trip render's stale-mixHash guard). */
narration?: 'auto' | 'off';
music?: 'auto' | 'off';
sfx?: 'auto' | 'off';
/** apply the committed publish gain at render ('auto' default). */
loudness?: 'auto' | 'off';
/** §3.6 font gate: fail the render on a missing/fallback font instead of warn+proceed. */
strictFonts?: boolean;
/** allow OS-installed fonts (non-portable — a build that ships must register faces). */
allowSystemFonts?: boolean;
};
}
/** The defaults that change a RENDER's output — folded into its staleness hash
* (a captions/mix-mode flip must re-run render, never serve a stale cached
* master) and spread into the render call. `cache` is deliberately absent
* (byte-identical speed knob). */
/** Identity helper for a typed `glissade.config.ts` default export. */
declare function defineProject(config: ProjectConfig): ProjectConfig;
//#endregion
export { type ProjectConfig, defineProject };