/**
 * Statement extraction from TypeScript source
 *
 * Phase 5 Step 4: Uses ProgramContext instead of global singletons.
 */
import * as ts from "typescript";
import { IrStatement } from "../types.js";
import type { ProgramContext } from "../program-context.js";
export type ExtractStatementsResult = {
    readonly body: readonly IrStatement[];
    readonly topLevelStatementGroups: ReadonlyMap<number, readonly IrStatement[]>;
};
/**
 * Extract statements from source file.
 *
 * Handles converters that return multiple statements (e.g., type aliases
 * with synthetic interface generation).
 *
 * Also collects synthetic type declarations generated during conversion
 * (from anonymous object literal synthesis) and prepends them.
 *
 * @param sourceFile - The TypeScript source file to extract from
 * @param ctx - ProgramContext for TypeSystem and binding access
 */
export declare const extractStatements: (sourceFile: ts.SourceFile, ctx: ProgramContext) => readonly IrStatement[];
export declare const extractStatementsWithGroups: (sourceFile: ts.SourceFile, ctx: ProgramContext) => ExtractStatementsResult;
/**
 * Check if a statement is executable (not a declaration)
 */
export declare const isExecutableStatement: (stmt: IrStatement) => boolean;
//# sourceMappingURL=statements.d.ts.map