import type { TypeExpr } from "../ast/types.js"; /** * Extract type variable bindings by matching param types against argument types. * * Walks param/arg type trees in parallel. When a param type is `type_var`, * records the binding from the variable name to the concrete arg type. * * Example: * paramTypes: [Array, Int] * argTypes: [Array, Int] * → Map { "T" → String } */ export declare function unifyTypeVars(paramTypes: TypeExpr[], argTypes: TypeExpr[]): Map; /** * Substitute all type_var references in a type with their bound concrete types. * Returns the original type unchanged if no type_var nodes are present. */ export declare function substituteTypeVars(type: TypeExpr, bindings: Map): TypeExpr; /** * Check if a type (or any type nested within it) contains type_var nodes. */ export declare function containsTypeVars(type: TypeExpr): boolean; //# sourceMappingURL=unify.d.ts.map