declare type Strength = number; export declare const required: Strength; export declare const strong: Strength; export declare const medium: Strength; export declare const weak: Strength; export declare const weaker: Strength; export declare type Variable = string; export declare type Solution = { [key in Variable]: number; }; export declare type Constraint = { strength: Strength; propagation: { inputs: Variable[]; method: (inputs: Solution) => Solution; }[]; toString(): string; }; export declare const isEqual: (s1: Solution, s2: Solution) => boolean; export declare const solve: (constraints: Constraint[], prev_solution?: Solution) => Solution; export declare const layeredSolve: (constraints: Constraint[]) => Solution; export declare const mkConstEqConstraint: (x: Variable, c: number, strength?: number) => Constraint; export declare const mkEqConstraint: (x: Variable, y: Variable, strength?: number) => Constraint; declare type Plus = { type: 'plus'; exprs: AffineExpr[]; }; export declare const plus: (...exprs: AffineExpr[]) => Plus; declare type Mul = { type: 'mul'; scalar: number; expr: AffineExpr; }; export declare const mul: (scalar: number, expr: AffineExpr) => Mul; export declare type AffineExpr = number | Variable | Plus | Mul; declare namespace AffineExpr { const toString: (e: AffineExpr) => string; } export declare type CanonicalAffineExpr = { terms: Map; bias: number; }; export declare type AffineConstraint = { lhs: AffineExpr; rhs: AffineExpr; }; export declare type CanonicalAffineConstraint = CanonicalAffineExpr; export declare const mkAffineConstraint: (lhs: AffineExpr, rhs: AffineExpr, strength?: number) => Constraint; export declare const mkMinMaxConstraint: (x: Variable, op: 'min' | 'max', ys: Variable[], strength?: number) => Constraint; export {}; //# sourceMappingURL=blue.d.ts.map