export declare const OptionType: { Some: symbol; None: symbol; }; export interface Match { some: (val: T) => U; none: (() => U) | U; } export interface Option { type: symbol; isSome(): boolean; isNone(): boolean; match(fn: Match): U; map(fn: (val: T) => U): Option; andThen(fn: (val: T) => Option): Option; or(optb: Option): Option; and(optb: Option): Option; unwrapOr(def: T): T; unwrap(): T | never; } export interface OptSome extends Option { unwrap(): T; map(fn: (val: T) => U): OptSome; or(optb: Option): Option; and(optb: Option): Option; } export interface OptNone extends Option { unwrap(): never; map(fn: (val: T) => U): OptNone; or(optb: Option): Option; and(optb: Option): OptNone; } export declare function Some(val?: T | undefined): Option; export declare const None: OptNone; export declare function some_constructor(val: T): OptSome; export declare function none_constructor(): OptNone; export declare function isSome(val: Option): val is OptSome; export declare function isNone(val: Option): val is OptNone; //# sourceMappingURL=option.d.ts.map