/**
 * TypeSystem Relations — Substitution, Instantiation, Assignability, Equality
 *
 * Pure type-level operations that don't require call resolution or inference.
 *
 * DAG position: depends on type-system-state only
 */
import type { IrType } from "../types/index.js";
import type { TypeSystemState, TypeSubstitutionMap, Site } from "./type-system-state.js";
export declare const matchesInstanceofTarget: (state: TypeSystemState, source: IrType, target: IrType) => boolean;
export declare const substitute: (type: IrType, subst: TypeSubstitutionMap) => IrType;
export declare const instantiate: (state: TypeSystemState, typeName: string, typeArgs: readonly IrType[], site?: Site) => IrType;
export declare const isAssignableTo: (state: TypeSystemState, source: IrType, target: IrType) => boolean;
export declare const typesEqual: (a: IrType, b: IrType) => boolean;
export declare const containsTypeParameter: (type: IrType) => boolean;
//# sourceMappingURL=type-system-relations.d.ts.map