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;