/**
 * Shared test helpers for utility type expansion tests
 *
 * Covers the safety guarantees per Alice's review:
 * 1. Index signatures block expansion (never drop members)
 * 2. Symbol/computed keys block expansion (never drop members)
 * 3. Explicit undefined is preserved (not stripped)
 */
import { describe, it } from "mocha";
import { expect } from "chai";
import * as ts from "typescript";
import { expandUtilityType, expandConditionalUtilityType, expandRecordType } from "../utility-types.js";
import { IrType } from "../../../../types.js";
import { Binding } from "../../../../binding/index.js";
/**
 * Assert value is not null/undefined and return it typed as non-null.
 * Throws if value is null or undefined.
 */
declare function assertDefined<T>(value: T, msg?: string): NonNullable<T>;
/**
 * Helper to create a TypeScript program from source code
 */
declare const createTestProgram: (source: string, fileName?: string) => {
    program: ts.Program;
    checker: ts.TypeChecker;
    sourceFile: ts.SourceFile;
    binding: Binding;
};
/**
 * Helper to find a type alias by name and get its type reference node
 */
declare const findTypeAliasReference: (sourceFile: ts.SourceFile, aliasName: string) => ts.TypeReferenceNode | null;
/**
 * Stub convertType for testing - just returns the type name
 */
declare const stubConvertType: (node: ts.TypeNode, _binding: Binding) => IrType;
export { describe, it, expect, ts, expandUtilityType, expandConditionalUtilityType, expandRecordType, assertDefined, createTestProgram, findTypeAliasReference, stubConvertType, };
//# sourceMappingURL=helpers.d.ts.map