/**
 * Call Resolution Type IDs — Polymorphic-this substitution, TypeId attachment,
 * type node conversion, delegate conversion, and pure type helpers
 *
 * Contains:
 * - substitutePolymorphicThis: polymorphic this substitution
 * - attachParameterTypeIds, attachTypeParameterTypeIds, attachInterfaceMemberTypeIds,
 *   attachTypeIds: canonical TypeId attachment
 * - convertTypeNode: deterministic type syntax conversion
 * - delegateToFunctionType: delegate → IrFunctionType conversion
 * - mapEntriesEqual: pure map comparison helper
 * - containsMethodTypeParameter: recursive type parameter check
 * - normalizeCatalogTsName: catalog name normalization
 *
 * DAG position: depends on type-system-state and type-system-relations
 */
import type { IrType, IrFunctionType, IrParameter, IrInterfaceMember, IrTypeParameter } from "../types/index.js";
import type { TypeSystemState } from "./type-system-state.js";
export declare const POLYMORPHIC_THIS_MARKER = "__tsonic_polymorphic_this";
export declare const substitutePolymorphicThis: (type: IrType | undefined, receiverType: IrType | undefined) => IrType | undefined;
export declare const attachParameterTypeIds: (state: TypeSystemState, p: IrParameter) => IrParameter;
export declare const attachTypeParameterTypeIds: (state: TypeSystemState, tp: IrTypeParameter) => IrTypeParameter;
export declare const attachInterfaceMemberTypeIds: (state: TypeSystemState, m: IrInterfaceMember) => IrInterfaceMember;
export declare const attachTypeIds: (state: TypeSystemState, type: IrType) => IrType;
/**
 * Deterministic type syntax conversion with canonical TypeId attachment.
 *
 * The underlying converter is syntax-only; this wrapper re-attaches the
 * nominal identity from the UnifiedUniverse so downstream passes (including
 * the emitter) can resolve CLR types without re-driving a parallel lookup.
 */
export declare const convertTypeNode: (state: TypeSystemState, node: unknown) => IrType;
/**
 * Convert a nominal CLR delegate type to an IrFunctionType by reading its Invoke signature.
 *
 * This is used for deterministic lambda typing when the expected type is a delegate
 * (e.g., custom delegates from CLR metadata).
 */
export declare const delegateToFunctionType: (state: TypeSystemState, type: IrType) => IrFunctionType | undefined;
export declare const mapEntriesEqual: (left: ReadonlyMap<string, IrType>, right: ReadonlyMap<string, IrType>) => boolean;
export declare const containsMethodTypeParameter: (type: IrType, unresolved: ReadonlySet<string>) => boolean;
export declare const normalizeCatalogTsName: (name: string) => string;
//# sourceMappingURL=call-resolution-type-ids.d.ts.map