interface IOption<T> {
    isSome: () => boolean;
    value: () => T;
}
declare class None implements IOption<null> {
    constructor();
    isSome(): boolean;
    map(f: (a: never) => unknown): None;
    value(): null;
}
declare class Some<T> implements IOption<T> {
    private readonly _value;
    constructor(value: T);
    isSome(): boolean;
    map<S>(f: (a: T) => S): Some<S>;
    value(): T;
}
export declare function some<T>(t: T): Some<T>;
export declare function none(): None;
export type Option<T> = None | Some<T>;
export {};
