import { Type, TypeVarScopeId, TypeVarType } from './types'; export interface TypeVarConstraints { typeVar: TypeVarType; lowerBound?: Type | undefined; upperBound?: Type | undefined; retainLiterals?: boolean; } export declare class ConstraintSet { private _typeVarMap; private _scopeIds; constructor(); clone(): ConstraintSet; isSame(other: ConstraintSet): boolean; isEmpty(): boolean; getScore(): number; setBounds(typeVar: TypeVarType, lowerBound: Type | undefined, upperBound?: Type, retainLiterals?: boolean): void; doForEachTypeVar(cb: (entry: TypeVarConstraints) => void): void; getTypeVar(typeVar: TypeVarType): TypeVarConstraints | undefined; getTypeVars(): TypeVarConstraints[]; addScopeId(scopeId: TypeVarScopeId): void; hasScopeId(scopeId: TypeVarScopeId): boolean; getScopeIds(): Set; hasUnificationVars(): boolean; } export declare class ConstraintTracker { private _constraintSets; constructor(); clone(): ConstraintTracker; cloneWithSignature(scopeId: TypeVarScopeId): ConstraintTracker; copyFromClone(clone: ConstraintTracker): void; copyBounds(entry: TypeVarConstraints): void; addConstraintSets(contexts: ConstraintSet[]): void; isSame(other: ConstraintTracker): boolean; isEmpty(): boolean; setBounds(typeVar: TypeVarType, lowerBound: Type | undefined, upperBound?: Type, retainLiterals?: boolean): void; getScore(): number; getMainConstraintSet(): ConstraintSet; getConstraintSets(): ConstraintSet[]; doForEachConstraintSet(callback: (constraintSet: ConstraintSet, index: number) => void): void; getConstraintSet(index: number): ConstraintSet; }