import { Lazy } from './Lazy'; export interface None { readonly tag: 'None'; } export interface Some { readonly tag: 'Some'; readonly value: A; } export declare type Option = None | Some; export declare const none: Option; export declare const some: (a: A) => Option; export declare const isSome: (ma: Option) => ma is Some; export declare const isNone: (ma: Option) => ma is None; export declare function fromUndefinedable(a: A): Option>; export declare function fromNullable(a: A): Option>; export declare function fromNillable(a: A): Option>; export declare function toNullable(ma: Option): A | null; export declare function toUndefinedable(ma: Option): A | undefined; export declare const map: (f: (a: A) => B) => (ma: Option) => Option; export declare const flatMap: (f: (a: A) => Option) => (ma: Option) => Option; export declare const getOrElse: (onNone: Lazy) => (mb: Option) => A | B;