/**
 * Operator expression converters (binary, unary, update, assignment)
 */
import * as ts from "typescript";
import { IrExpression, IrUnaryExpression, IrUpdateExpression, IrType } from "../../types.js";
import type { ProgramContext } from "../../program-context.js";
/**
 * Convert binary expression (including logical and assignment)
 *
 * Threads expectedType through:
 * - Assignment RHS: gets LHS type
 * - Nullish coalescing (??): RHS gets expectedType (fallback value)
 * - Logical OR (||): RHS gets expectedType (fallback value)
 */
export declare const convertBinaryExpression: (node: ts.BinaryExpression, ctx: ProgramContext, expectedType?: IrType) => IrExpression;
/**
 * Convert prefix unary expression
 */
export declare const convertUnaryExpression: (node: ts.PrefixUnaryExpression, ctx: ProgramContext) => IrUnaryExpression | IrUpdateExpression;
/**
 * Convert postfix unary expression (++ or --)
 *
 * DETERMINISTIC TYPING: Result type derived from operand type.
 * ++/-- return same type as operand (int → int, number → number)
 */
export declare const convertUpdateExpression: (node: ts.PostfixUnaryExpression | ts.PrefixUnaryExpression, ctx: ProgramContext) => IrUpdateExpression;
//# sourceMappingURL=operators.d.ts.map