import type { Predicate } from './Predicate';
import type { Refinement } from './Refinement';
export interface None {
readonly _tag: 'None';
}
export interface Some {
readonly _tag: 'Some';
readonly value: A;
}
export declare type Option = None | Some;
/**
* @internal
*/
export declare function Some(a: A): Option;
/**
* @internal
*/
export declare function None(): Option;
/**
* Constructs a new `Option` from a value and the given predicate
*
* @category Constructors
* @since 1.0.0
* @internal
*/
export declare function fromPredicate_(a: A, refinement: Refinement): Option;
export declare function fromPredicate_(a: A, predicate: Predicate): Option;
/**
* Returns a smart constructor based on the given predicate
*
* @category Constructors
* @since 1.0.0
* @internal
*/
export declare function fromPredicate(refinement: Refinement): (a: A) => Option;
export declare function fromPredicate(predicate: Predicate): (a: A) => Option;
export declare function fromNullable(a: A | null | undefined): Option>;
/**
* @internal
*/
export declare function getOrElse_(fa: Option, onNone: () => B): A | B;
/**
* @internal
*/
export declare function getOrElse(onNone: () => B): (fa: Option) => A | B;
//# sourceMappingURL=Option.d.ts.map