/**
 * Shared test helpers for numeric invariants tests.
 *
 * Re-exports mocha/chai and provides factory functions for IR nodes
 * used across all numeric-invariant topic test files.
 */
export { describe, it } from "mocha";
export { expect } from "chai";
export { runNumericProofPass } from "../numeric-proof-pass.js";
export type { IrModule, IrExpression, IrType, IrStatement, IrNumericNarrowingExpression, IrMemberExpression, IrBlockStatement, IrParameter, } from "../../types.js";
import type { IrModule, IrExpression, IrType, IrStatement, IrNumericNarrowingExpression, IrBlockStatement, IrParameter } from "../../types.js";
/**
 * Helper to create a minimal module with statements
 */
export declare const createModule: (body: IrStatement[], filePath?: string) => IrModule;
/**
 * Helper to create a variable declaration with an expression
 */
export declare const createVarDecl: (name: string, init: IrExpression, declarationKind?: "const" | "let") => IrStatement;
/**
 * Helper to create a numeric literal
 */
export declare const numLiteral: (value: number, raw?: string) => IrExpression;
/**
 * Helper to create a numeric narrowing expression
 * INVARIANT: "Int32" -> primitiveType(name="int"), others -> referenceType
 */
export declare const narrowTo: (expr: IrExpression, targetKind: "Int32" | "Int64" | "Double" | "Byte") => IrNumericNarrowingExpression;
/**
 * Helper to create an identifier expression
 */
export declare const ident: (name: string) => IrExpression;
/**
 * Helper to create an array access expression
 * Includes accessKind: "clrIndexer" to match IR build behavior
 */
export declare const arrayAccess: (object: IrExpression, index: IrExpression) => IrExpression;
/**
 * Helper to create an array identifier
 */
export declare const arrayIdent: (name: string) => IrExpression;
/**
 * Helper to create a binary expression
 */
export declare const binaryExpr: (operator: "+" | "-" | "*" | "/", left: IrExpression, right: IrExpression) => IrExpression;
/**
 * Helper to create a logical expression.
 */
export declare const logicalExpr: (operator: "&&" | "||" | "??", left: IrExpression, right: IrExpression, inferredType: IrType) => IrExpression;
export declare const booleanType: IrType;
export declare const memberCall: (objectName: string, methodName: string, args: IrExpression[], inferredType?: IrType) => IrExpression;
export declare const compareExpr: (operator: "<" | "<=" | ">" | ">=", left: IrExpression, right: IrExpression) => IrExpression;
export declare const block: (statements: IrStatement[]) => IrBlockStatement;
export declare const parameter: (name: string, type: IrType) => IrParameter;
/**
 * Helper to create an array expression
 */
export declare const arrayExpr: (elements: IrExpression[]) => IrExpression;
export declare const conditionalExpr: (condition: IrExpression, whenTrue: IrExpression, whenFalse: IrExpression, inferredType: IrType) => IrExpression;
//# sourceMappingURL=helpers.d.ts.map