import { Ctx } from "../ctx"; import { Value } from "../value"; export declare abstract class Solution { abstract extend(name: string, value: Value): Solution; abstract find(name: string): Value | undefined; abstract names: Array; static logic_var_p(value: Value): boolean; static logic_var_name(value: Value): string; static get empty(): EmptySolution; static empty_p(solution: Solution): solution is EmptySolution; static get failure(): FailureSolution; static failure_p(solution: Solution): solution is FailureSolution; walk(value: Value): Value; unify(x: Value, y: Value): Solution; unify_or_fail(ctx: Ctx, left: Value, right: Value): Solution; } declare class EmptySolution extends Solution { names: never[]; extend(name: string, value: Value): Solution; find(name: string): Value | undefined; } declare class FailureSolution extends Solution { names: never[]; extend(name: string, value: Value): Solution; find(name: string): Value | undefined; } export {};