import { Expression } from "../ir"; import { Machine, State } from "../vm"; import { Environment } from "../world"; import { CrochetType, TCrochetAny, CrochetValue } from "./0-core"; export declare class CrochetPartial extends CrochetValue { readonly name: string; readonly env: Environment; readonly values: PartialValue[]; readonly type: TCrochetPartial; constructor(name: string, env: Environment, values: PartialValue[]); equals(other: CrochetValue): boolean; to_text(): string; merge(candidates: PartialValue[]): CrochetPartial; get is_saturated(): boolean; get arity(): number; get concrete_args(): CrochetValue[]; } export declare class TCrochetPartial extends CrochetType { readonly name: string; readonly arity: number; get parent(): TFunctionWithArity; constructor(name: string, arity: number); get type_name(): string; } export declare class CrochetLambda extends CrochetValue { readonly env: Environment; readonly parameters: string[]; readonly body: Expression; constructor(env: Environment, parameters: string[], body: Expression); get arity(): number; get type(): TFunctionWithArity; get full_name(): string; apply(state0: State, args: CrochetValue[]): Machine; run_body(state: State): Machine; } export declare class TAnyFunction extends CrochetType { readonly parent: TCrochetAny; get type_name(): string; static type: TAnyFunction; } export declare class TFunctionWithArity extends CrochetType { readonly parent: CrochetType; readonly arity: number; constructor(parent: CrochetType, arity: number); get type_name(): string; static types: TFunctionWithArity[]; static for_arity(n: number): TFunctionWithArity; } export declare function partial_holes(values: PartialValue[]): number; export declare abstract class PartialValue { } export declare class PartialHole extends PartialValue { } export declare class PartialConcrete extends PartialValue { readonly value: CrochetValue; constructor(value: CrochetValue); }