/**
 * ProgramContext factory — createProgramContext
 *
 * This is the ONLY place where internal registries are constructed and wired together.
 * All converters and builder helpers receive context explicitly — no global state.
 */
import type { TsonicProgram } from "../program.js";
import type { IrBuildOptions } from "./builder/types.js";
import type { ProgramContext } from "./program-context-types.js";
/**
 * Create a ProgramContext for a compilation.
 *
 * This factory is the ONLY place that wires together the internal registries.
 * It performs the full setup:
 * 1. Build SourceCatalog / TypeRegistry using two-pass builder
 * 2. Build CLR catalog from explicit participating CLR packages
 * 3. Build UnifiedUniverse merging source and CLR types
 * 4. Build NominalEnv from UnifiedTypeCatalog (TypeId-based)
 * 5. Construct TypeSystem as single source of truth
 *
 * @param program - The TsonicProgram with type checker and bindings
 * @param options - Build options (sourceRoot, rootNamespace)
 */
export declare const createProgramContext: (program: TsonicProgram, options: IrBuildOptions) => ProgramContext;
//# sourceMappingURL=program-context-factory.d.ts.map