import { Span } from "../span"; declare type ExpMeta = { span?: Span; }; export declare type Exp = PatternVar | String | Number | Boolean | Null | ListCons | ListNull | Objekt | ObjektUnfolded; export declare type PatternVar = { family: "Exp"; kind: "PatternVar"; name: string; } & ExpMeta; export declare function PatternVar(name: string, span?: Span): PatternVar; export declare type String = { family: "Exp"; kind: "String"; data: string; } & ExpMeta; export declare function String(data: string, span?: Span): String; export declare type Number = { family: "Exp"; kind: "Number"; data: number; } & ExpMeta; export declare function Number(data: number, span?: Span): Number; export declare type Boolean = { family: "Exp"; kind: "Boolean"; data: boolean; } & ExpMeta; export declare function Boolean(data: boolean, span?: Span): Boolean; export declare type Null = { family: "Exp"; kind: "Null"; } & ExpMeta; export declare function Null(span?: Span): Null; export declare type ListCons = { family: "Exp"; kind: "ListCons"; car: Exp; cdr: Exp; } & ExpMeta; export declare function ListCons(car: Exp, cdr: Exp, span?: Span): ListCons; export declare type ListNull = { family: "Exp"; kind: "ListNull"; } & ExpMeta; export declare function ListNull(span?: Span): ListNull; export declare type Objekt = { family: "Exp"; kind: "Objekt"; properties: Record; } & ExpMeta; export declare function Objekt(properties: Record, span?: Span): Objekt; export declare type ObjektUnfolded = { family: "Exp"; kind: "ObjektUnfolded"; properties: Array; } & ExpMeta; export declare function ObjektUnfolded(properties: Array, span?: Span): ObjektUnfolded; export declare type Property = PropertyPlain; export declare type PropertyPlain = { kind: "PropertyPlain"; name: string; exp: Exp; }; export declare function PropertyPlain(name: string, exp: Exp): PropertyPlain; export {};