/**
 * Array literal expression converters
 */
import * as ts from "typescript";
import { IrArrayExpression, IrType } from "../../types.js";
import type { ProgramContext } from "../../program-context.js";
export declare const isNullishPrimitive: (type: IrType) => boolean;
export declare const normalizeExpectedArrayType: (expectedType: IrType | undefined, ctx: ProgramContext) => Extract<IrType, {
    kind: "arrayType";
}> | undefined;
/**
 * Convert array literal expression
 *
 * DETERMINISTIC TYPING:
 * - If expectedType is provided (from LHS annotation), use it
 * - Otherwise, derive from element types using literal form analysis
 * - Default to number[] (double[]) for ergonomics when type cannot be determined
 *
 * @param node - The TypeScript array literal expression
 * @param ctx - ProgramContext for type system and binding access
 * @param expectedType - Expected type from context (e.g., `const a: number[] = [1,2,3]`).
 *                       Pass `undefined` explicitly when no contextual type exists.
 */
export declare const convertArrayLiteral: (node: ts.ArrayLiteralExpression, ctx: ProgramContext, expectedType: IrType | undefined) => IrArrayExpression;
//# sourceMappingURL=array-literals.d.ts.map