import { type ValueType } from "./model.ts"; export declare function mergeTypes(left: ValueType, right: ValueType): ValueType; export declare function typeContainsParameter(type: ValueType, matches?: (parameter: Extract) => boolean): boolean; export declare function substituteTypeParameters(type: ValueType, bindings: readonly (ValueType | null)[]): ValueType; export declare function bindNamedTypeParameters(type: ValueType, parameters: ReadonlyMap): ValueType; /** * D51 item NEW-D3: `unknown` never *binds* a parameter — merging it would erase * every concrete actual at the other positions — but the site must still be * remembered. A bounded parameter that only `unknown` ever reached is solved to * `unknown`, which satisfies no bound; dropping the site silently let `unknown` * through every bound and on into the implicit-conversion the bound forbids. * Callers that check bounds pass this sink; the rest may ignore it. */ export declare function unifyTypeParameters(pattern: ValueType, actual: ValueType, bindings: (ValueType | null)[], fieldsOf?: (identity: string) => ReadonlyMap | null, unknownParameters?: Set, expandAliases?: (type: ValueType) => ValueType): void; //# sourceMappingURL=unification.d.ts.map