/**
 * Variable declaration helpers
 *
 * Utility predicates and type derivation helpers used by the variable
 * declaration converter:
 * - isModuleLevelVariable: Check if a variable is at module level
 * - isBindingPattern: Check if a declaration uses destructuring
 * - getExpectedTypeForInitializer: Derive expected type from annotation
 */
import * as ts from "typescript";
import type { IrType } from "../../../types.js";
import type { ProgramContext } from "../../../program-context.js";
/**
 * Check if a variable statement is at module level (not inside a function).
 * Module-level variables become static fields in C# and need explicit types.
 */
export declare const isModuleLevelVariable: (node: ts.VariableStatement) => boolean;
/**
 * Check if a variable declaration has a binding pattern (destructuring).
 * Binding patterns include array patterns ([a, b]) and object patterns ({x, y}).
 */
export declare const isBindingPattern: (decl: ts.VariableDeclaration) => boolean;
/**
 * Get the expected type for initializer conversion (only from explicit annotations).
 * This is used for deterministic contextual typing - only explicit annotations
 * should influence literal type inference.
 */
export declare const getExpectedTypeForInitializer: (decl: ts.VariableDeclaration, ctx: ProgramContext) => IrType | undefined;
//# sourceMappingURL=variable-helpers.d.ts.map