import { Get, Predicate } from './Get'; import { TypeGuard } from './TypeGuard'; import { Func } from './Func'; declare class CaseBuilder { readonly v: V; is: { true: (pred: Predicate, out: Get) => Case; false: (pred: Predicate, out: Get) => Case; truthy: (prop: Func, out: Get) => Case; falsy: (prop: Func, out: Get) => Case; defined: (prop: Func, out: Get) => Case; empty: (prop: Func, out: Get) => Case; valid: (prop: Func, out: Get) => Case; in: (prop: Get, V>, out: Get) => Case; type: (guard: TypeGuard, out: Func) => Case; not: { true: (pred: Predicate, out: Get) => Case; false: (pred: Predicate, out: Get) => Case; truthy: (prop: Func, out: Get) => Case; falsy: (prop: Func, out: Get) => Case; defined: (prop: Func, out: Get) => Case; empty: (prop: Func, out: Get) => Case; valid: (prop: Func, out: Get) => Case; in: (prop: Get, V>, out: Get) => Case; type: (guard: TypeGuard, out: Get) => Case; }; }; if: { true: (pred: Predicate, out: Get) => Case; false: (pred: Predicate, out: Get) => Case; truthy: (prop: Func, out: Get) => Case; falsy: (prop: Func, out: Get) => Case; defined: (prop: Func, out: Get) => Case; empty: (prop: Func, out: Get) => Case; valid: (prop: Func, out: Get) => Case; in: (prop: Get, V>, out: Get) => Case; type: (guard: TypeGuard, out: Func) => Case; not: { true: (pred: Predicate, out: Get) => Case; false: (pred: Predicate, out: Get) => Case; truthy: (prop: Func, out: Get) => Case; falsy: (prop: Func, out: Get) => Case; defined: (prop: Func, out: Get) => Case; empty: (prop: Func, out: Get) => Case; valid: (prop: Func, out: Get) => Case; in: (prop: Get, V>, out: Get) => Case; type: (guard: TypeGuard, out: Get) => Case; }; }; constructor(v: V); case(pred: Predicate, out: Get): Case; type(guard: TypeGuard, out: Func): Case; equals(value: V, out: Get): Case; } declare class Case { protected value: V; protected outcome?: T | undefined; is: { true: (pred: Predicate, out: Get) => Case; false: (pred: Predicate, out: Get) => Case; truthy: (prop: Func, out: Get) => Case; falsy: (prop: Func, out: Get) => Case; defined: (prop: Func, out: Get) => Case; empty: (prop: Func, out: Get) => Case; valid: (prop: Func, out: Get) => Case; in: (prop: Get, V>, out: Get) => Case; type: (guard: TypeGuard, out: Func) => Case; not: { true: (pred: Predicate, out: Get) => Case; false: (pred: Predicate, out: Get) => Case; truthy: (prop: Func, out: Get) => Case; falsy: (prop: Func, out: Get) => Case; defined: (prop: Func, out: Get) => Case; empty: (prop: Func, out: Get) => Case; valid: (prop: Func, out: Get) => Case; in: (prop: Get, V>, out: Get) => Case; type: (guard: TypeGuard, out: Get) => Case; }; }; if: { true: (pred: Predicate, out: Get) => Case; false: (pred: Predicate, out: Get) => Case; truthy: (prop: Func, out: Get) => Case; falsy: (prop: Func, out: Get) => Case; defined: (prop: Func, out: Get) => Case; empty: (prop: Func, out: Get) => Case; valid: (prop: Func, out: Get) => Case; in: (prop: Get, V>, out: Get) => Case; type: (guard: TypeGuard, out: Func) => Case; not: { true: (pred: Predicate, out: Get) => Case; false: (pred: Predicate, out: Get) => Case; truthy: (prop: Func, out: Get) => Case; falsy: (prop: Func, out: Get) => Case; defined: (prop: Func, out: Get) => Case; empty: (prop: Func, out: Get) => Case; valid: (prop: Func, out: Get) => Case; in: (prop: Get, V>, out: Get) => Case; type: (guard: TypeGuard, out: Get) => Case; }; }; constructor(value: V, outcome?: T | undefined); case(pred: Predicate, out: Get): Case; type(guard: TypeGuard, out: Func): Case; equals(value: V, out: Get): Case; else(alt: Get): T; } export declare const choose: (value: V) => CaseBuilder; export {};