declare const SOME: unique symbol;
export interface ISome<T> {
    [SOME]: true;
    value: T;
}
export declare type Maybe<T> = ISome<T> | null | undefined;
export declare const Some: <T>(value: T) => ISome<T>;
export declare const None: () => any;
export declare function or<T>(maybe: Maybe<T>, def: () => T): T;
export declare function isSome<T>(maybe: Maybe<T>): maybe is ISome<T>;
export declare function get<T>(some: ISome<T>): T;
export {};
