import { DataValue } from "./DataValue"; import { Id, Persistent, Value } from "./Value"; export declare abstract class Bool extends DataValue<"Bool"> { } export declare class True extends Bool { } export declare function true_(): (k: Id) => Bool; export declare class False extends Bool { } export declare function false_(): (k: Id) => Bool; export declare abstract class List extends DataValue<"List"> { static fromArray(x̅: T[]): List; toArray(): T[]; toArray_(x̅: T[]): void; } export declare class Nil extends List { static is(xs: List): xs is Nil; } export declare function nil(): List; export declare class Cons extends List { head: T; tail: List; static is(xs: List): xs is Cons; } export declare function cons(head: T, tail: List): Cons; export declare class Pair extends DataValue<"Pair"> { fst: T; snd: U; } export declare function pair(fst: T, snd: U): Pair; export declare abstract class Tree extends DataValue<"Tree"> { toArray(): T[]; toArray_(x̅: T[]): void; } export declare class Empty extends Tree { static is(t: Tree): t is Empty; } export declare function empty(): Empty; export declare class NonEmpty extends Tree { left: Tree; t: T; right: Tree; static is(t: Tree): t is NonEmpty; } export declare function nonEmpty(left: Tree, t: T, right: Tree): NonEmpty; export declare abstract class Option extends DataValue<"Option"> { } export declare class None extends Option { static is(o: Option): o is None; } export declare class Some extends Option { t: T; static is(o: Option): o is Some; } export declare abstract class Ordering extends DataValue<"Ordering"> { } export declare class LT extends Ordering { } export declare class GT extends Ordering { } export declare class EQ extends Ordering { } export declare namespace BaseTypes { function initialise(): void; }