import { CrochetValue } from "../primitives"; import { State } from "../vm"; import { Pattern, UnificationEnvironment } from "./unification"; export declare abstract class TreeType { abstract realise(): Tree; } export declare class TTOne extends TreeType { readonly next: TreeType; constructor(next: TreeType); realise(): OneNode; } export declare class TTMany extends TreeType { readonly next: TreeType; constructor(next: TreeType); realise(): ManyNode; } export declare class TTEnd extends TreeType { realise(): EndNode; } export declare abstract class Tree { abstract type: TreeType; abstract insert(values: CrochetValue[]): void; abstract remove(values: CrochetValue[]): Tree | null; abstract search(state: State, env: UnificationEnvironment, patterns: Pattern[]): UnificationEnvironment[]; abstract sample(size: number, state: State, env: UnificationEnvironment, patterns: Pattern[]): UnificationEnvironment[]; } export declare class OneNode extends Tree { readonly subtype: TreeType; private value; constructor(subtype: TreeType); get type(): TTOne; insert(values: CrochetValue[]): void; remove(values: CrochetValue[]): this | null; search(state: State, env: UnificationEnvironment, patterns: Pattern[]): UnificationEnvironment[]; sample(size: number, state: State, env: UnificationEnvironment, patterns: Pattern[]): UnificationEnvironment[]; } export declare class ManyNode extends Tree { readonly subtype: TreeType; private pairs; constructor(subtype: TreeType); get type(): TTMany; insert(values: CrochetValue[]): void; remove(values: CrochetValue[]): this | null; search(state: State, env: UnificationEnvironment, patterns: Pattern[]): UnificationEnvironment[]; sample(size: number, state: State, env: UnificationEnvironment, patterns: Pattern[]): UnificationEnvironment[]; } export declare class EndNode extends Tree { get type(): TTEnd; insert(values: CrochetValue[]): void; remove(values: CrochetValue[]): null; search(state: State, env: UnificationEnvironment, patterns: Pattern[]): UnificationEnvironment[]; sample(size: number, state: State, env: UnificationEnvironment, patterns: Pattern[]): UnificationEnvironment[]; }