import { CrochetValue } from "../../vm"; export declare enum ReprTag { TEXT = 0, NUMBER = 1, KEYWORD = 2, STATIC_TEXT = 3, LIST = 4, MAP = 5, INTERPOLATION = 6, FLOW = 7, STACK = 8, BLOCK = 9, CIRCULAR = 10, TYPED = 11, TAGGED = 12, SPACE = 13, SECRET = 14 } export declare type Repr = RText | RNumber | RKeyword | RStatic | RList | RMap | RInterpolation | RFlow | RStack | RBlock | RTyped | RCircular | RSpace | RTagged | RSecret; export declare class RText { readonly value: string; readonly tag = ReprTag.TEXT; constructor(value: string); } export declare class RNumber { readonly value: bigint | number; readonly tag = ReprTag.NUMBER; constructor(value: bigint | number); } export declare class RKeyword { readonly name: string; readonly tag = ReprTag.KEYWORD; constructor(name: string); } export declare class RStatic { readonly text: string; readonly tag = ReprTag.STATIC_TEXT; constructor(text: string); } export declare class RList { readonly items: Repr[]; readonly tag = ReprTag.LIST; constructor(items: Repr[]); } export declare class RInterpolation { readonly parts: Repr[]; readonly tag = ReprTag.INTERPOLATION; constructor(parts: Repr[]); } export declare class RFlow { readonly items: Repr[]; readonly tag = ReprTag.FLOW; constructor(items: Repr[]); } export declare class RBlock { readonly child: Repr; readonly tag = ReprTag.BLOCK; constructor(child: Repr); } export declare class RCircular { readonly value: CrochetValue; readonly tag = ReprTag.CIRCULAR; constructor(value: CrochetValue); } export declare class RTyped { readonly type: Repr; readonly value: Repr; readonly tag = ReprTag.TYPED; constructor(type: Repr, value: Repr); } export declare class RMap { readonly items: [Repr, Repr][]; readonly tag = ReprTag.MAP; constructor(items: [Repr, Repr][]); } export declare class RTagged { readonly tag_name: string; readonly value: Repr; readonly tag = ReprTag.TAGGED; constructor(tag_name: string, value: Repr); } export declare class RSpace { readonly tag = ReprTag.SPACE; } export declare class RSecret { readonly value: Repr; readonly tag = ReprTag.SECRET; constructor(value: Repr); } export declare class RStack { readonly items: Repr[]; readonly tag = ReprTag.STACK; constructor(items: Repr[]); } export declare const space: RSpace;