/**
 * Mapped utility type expansion — Partial, Required, Readonly, Pick, Omit
 *
 * Contains EXPANDABLE_UTILITY_TYPES, isExpandableUtilityType, type parameter
 * checking, member extraction, key extraction, and expandUtilityType.
 *
 * DETERMINISTIC IR TYPING (INV-0 compliant):
 * These utility types are expanded using AST-based analysis only.
 */
import * as ts from "typescript";
import { IrType, IrObjectType } from "../../../types.js";
import type { Binding } from "../../../binding/index.js";
/**
 * Set of supported mapped utility types that can be expanded
 */
export declare const EXPANDABLE_UTILITY_TYPES: Set<string>;
/**
 * Check if a type name is an expandable utility type
 */
export declare const isExpandableUtilityType: (name: string) => boolean;
/**
 * Check if a TypeNode is a type parameter reference (symbol-based, INV-0 compliant)
 */
export declare const isTypeParameterNode: (node: ts.TypeNode, binding: Binding) => boolean;
/**
 * Check if a TypeNode recursively contains type parameters.
 * Uses symbol-based checks only (INV-0 compliant).
 */
export declare const typeNodeContainsTypeParameter: (node: ts.TypeNode, binding: Binding) => boolean;
/**
 * Expand a mapped utility type to an IrObjectType.
 *
 * DETERMINISTIC IR TYPING (INV-0 compliant):
 * Uses AST-based analysis only.
 */
export declare const expandUtilityType: (node: ts.TypeReferenceNode, typeName: string, binding: Binding, convertType: (node: ts.TypeNode, binding: Binding) => IrType) => IrObjectType | null;
//# sourceMappingURL=mapped-utility-expansion.d.ts.map