export type Core = Var | PatternVar | Pi | PiImplicit | Fn | FnImplicit | Ap | ApImplicit | Sigma | Cons | Car | Cdr | Quote | Clazz | Objekt | Dot | Replace; export type Var = { "@type": "Core"; "@kind": "Var"; name: string; }; export declare function Var(name: string): Var; export type PatternVar = { "@type": "Core"; "@kind": "PatternVar"; name: string; }; export declare function PatternVar(name: string): PatternVar; export type Pi = { "@type": "Core"; "@kind": "Pi"; name: string; argType: Core; retType: Core; }; export declare function Pi(name: string, argType: Core, retType: Core): Pi; export type PiImplicit = { "@type": "Core"; "@kind": "PiImplicit"; name: string; argType: Core; retType: Core; }; export declare function PiImplicit(name: string, argType: Core, retType: Core): PiImplicit; export type Fn = { "@type": "Core"; "@kind": "Fn"; name: string; ret: Core; }; export declare function Fn(name: string, ret: Core): Fn; export type FnImplicit = { "@type": "Core"; "@kind": "FnImplicit"; name: string; ret: Core; }; export declare function FnImplicit(name: string, ret: Core): FnImplicit; export type Ap = { "@type": "Core"; "@kind": "Ap"; target: Core; arg: Core; }; export declare function Ap(target: Core, arg: Core): Ap; export type ApImplicit = { "@type": "Core"; "@kind": "ApImplicit"; target: Core; arg: Core; }; export declare function ApImplicit(target: Core, arg: Core): ApImplicit; export type Sigma = { "@type": "Core"; "@kind": "Sigma"; name: string; carType: Core; cdrType: Core; }; export declare function Sigma(name: string, carType: Core, cdrType: Core): Sigma; export type Cons = { "@type": "Core"; "@kind": "Cons"; car: Core; cdr: Core; }; export declare function Cons(car: Core, cdr: Core): Cons; export type Car = { "@type": "Core"; "@kind": "Car"; target: Core; }; export declare function Car(target: Core): Car; export type Cdr = { "@type": "Core"; "@kind": "Cdr"; target: Core; }; export declare function Cdr(target: Core): Cdr; export type Quote = { "@type": "Core"; "@kind": "Quote"; data: string; }; export declare function Quote(data: string): Quote; /** ## name v.s. localName in Clazz We can not only use `name`, we also need `localName`, because during `readback` bound variables might be renamed. **/ export type Clazz = ClazzNull | ClazzCons | ClazzFulfilled; export type ClazzNull = { "@type": "Core"; "@kind": "ClazzNull"; name?: string; }; export declare function ClazzNull(name?: string): ClazzNull; export type ClazzCons = { "@type": "Core"; "@kind": "ClazzCons"; propertyName: string; localName: string; propertyType: Core; rest: Clazz; name?: string; }; export declare function ClazzCons(propertyName: string, localName: string, propertyType: Core, rest: Clazz, name?: string): ClazzCons; export type ClazzFulfilled = { "@type": "Core"; "@kind": "ClazzFulfilled"; propertyName: string; propertyType: Core; property: Core; rest: Clazz; name?: string; }; export declare function ClazzFulfilled(propertyName: string, propertyType: Core, property: Core, rest: Clazz, name?: string): ClazzFulfilled; export type Objekt = { "@type": "Core"; "@kind": "Objekt"; properties: Record; }; export declare function Objekt(properties: Record): Objekt; export type Dot = { "@type": "Core"; "@kind": "Dot"; target: Core; name: string; }; export declare function Dot(target: Core, name: string): Dot; export type Replace = { "@type": "Core"; "@kind": "Replace"; target: Core; motive: Core; base: Core; }; export declare function Replace(target: Core, motive: Core, base: Core): Replace; //# sourceMappingURL=Core.d.ts.map