import { Metadata } from "../ir"; import { CrochetModule } from "../vm"; import { CrochetType, CrochetValue, IProjection, ISelection, Selection } from "./0-core"; import { CrochetRecord } from "./record"; export declare class CrochetInstance extends CrochetValue { readonly type: TCrochetType; readonly id: bigint; readonly data: CrochetValue[]; constructor(type: TCrochetType, id: bigint, data: CrochetValue[]); equals(other: CrochetValue): boolean; to_text(): string; to_debug_text(transparent?: boolean): string; as_record(): CrochetRecord; get_field(name: string): CrochetValue; readonly _projection: InstanceProjection; readonly _selection: InstanceSelection; } export declare class InstanceProjection implements IProjection { readonly instance: CrochetInstance; constructor(instance: CrochetInstance); project(name: string, requestee_module: CrochetModule | null): CrochetValue; } export declare class InstanceSelection implements ISelection { readonly instance: CrochetInstance; constructor(instance: CrochetInstance); select(selections: Selection[], requestee_module: CrochetModule | null): CrochetValue; } export declare class TCrochetType extends CrochetType { readonly module: CrochetModule | null; readonly meta: Metadata; readonly parent: CrochetType; readonly name: string; readonly types: CrochetType[]; readonly fields: string[]; readonly layout: Map; private instance_count; private subtypes; private instances; private sealed; constructor(module: CrochetModule | null, meta: Metadata, parent: CrochetType, name: string, types: CrochetType[], fields: string[], layout: Map); get type_name(): string; validate(data: CrochetValue[]): void; instantiate(data: CrochetValue[]): CrochetInstance; register_subtype(type: TCrochetType): void; register_instance(value: CrochetInstance): void; get registered_instances(): CrochetInstance[]; seal(): void; get documentation(): string; } export declare const baseEnum: TCrochetType;