/**
 * Source Catalog — Two-Pass Type Capture from Source Files
 *
 * ALICE'S SPEC (Phase 4): This is THE CORE ARCHITECTURAL FIX.
 *
 * "You cannot reliably convert everything in one walk because of forward
 * references and aliasing."
 *
 * Two-pass architecture:
 * - Pass A (Skeleton): Register all type names without conversion
 * - Pass B (Capture): Convert all type annotations with stable resolution
 *
 * After this module runs, converters NEVER call convertType. They ask
 * TypeSystem for already-captured types via typeOfDecl(declId).
 *
 * INVARIANT: All type conversion happens HERE, not in converters.
 */
import * as ts from "typescript";
import type { TypeRegistry } from "../type-registry.js";
import type { Binding } from "../../../binding/index.js";
/**
 * Configuration for building the source catalog.
 */
export type SourceCatalogConfig = {
    readonly sourceFiles: readonly ts.SourceFile[];
    readonly checker: ts.TypeChecker;
    readonly sourceRoot: string;
    readonly rootNamespace: string;
    readonly binding: Binding;
};
/**
 * Result of building the source catalog.
 */
export type SourceCatalogResult = {
    readonly typeRegistry: TypeRegistry;
};
/**
 * Build source catalog with two-pass architecture.
 *
 * Pass A: Register all type names (skeleton)
 *   - Walk all source files
 *   - Collect class/interface/type alias declarations
 *   - Register names without type conversion
 *
 * Pass B: Capture all types (with stable resolution)
 *   - Now all names are registered, resolution is stable
 *   - Convert all type annotations to IrType
 *   - Store in TypeRegistry
 *
 * After this function returns, TypeRegistry contains all types.
 * Converters use typeOfDecl(declId) to get already-captured types.
 */
export declare const buildSourceCatalog: (config: SourceCatalogConfig) => SourceCatalogResult;
/**
 * Check if a source file should be included in the source catalog.
 *
 * Includes:
 * - User source files (.ts)
 * - Declaration files (.d.ts) for globals and runtime types
 */
export declare const shouldIncludeFile: (sourceFile: ts.SourceFile) => boolean;
//# sourceMappingURL=source-catalog.d.ts.map