/**
 * Statement converter - TypeScript AST to IR statements
 * Main dispatcher - delegates to specialized modules
 *
 * Phase 5 Step 4: Uses ProgramContext instead of global singletons.
 */
import * as ts from "typescript";
import { IrStatement, IrType } from "./types.js";
import type { ProgramContext } from "./program-context.js";
/**
 * Result type for statement conversion.
 * Some converters (like type aliases with synthetic types) return multiple statements.
 */
export type ConvertStatementResult = IrStatement | readonly IrStatement[] | null;
/**
 * Main statement converter dispatcher
 *
 * @param ctx - ProgramContext for TypeSystem and binding access
 * @param expectedReturnType - Return type from enclosing function for contextual typing.
 *                             Pass `undefined` explicitly when not inside a function.
 */
export declare const convertStatement: (node: ts.Node, ctx: ProgramContext, expectedReturnType: IrType | undefined) => ConvertStatementResult;
/**
 * Flatten a convert statement result into an array of statements.
 * Handles both single statements and arrays.
 */
export declare const flattenStatementResult: (result: ConvertStatementResult) => readonly IrStatement[];
/**
 * Convert a statement and return a single statement (for contexts where arrays not expected).
 * Type aliases inside control flow will return the first statement (usually the only one).
 *
 * @param ctx - ProgramContext for TypeSystem and binding access
 * @param expectedReturnType - Return type from enclosing function for contextual typing.
 *                             Must be passed through for return statements in nested blocks.
 */
export declare const convertStatementSingle: (node: ts.Node, ctx: ProgramContext, expectedReturnType?: IrType) => IrStatement | null;
//# sourceMappingURL=statement-converter.d.ts.map