import { $type, Eval, HKT, Kind, Lazy, TyK, TyVar } from '@fp4ts/core';
import { Eq, Monoid } from '@fp4ts/cats-kernel';
import { Alternative } from '../alternative';
import { Applicative } from '../applicative';
import { CoflatMap } from '../coflat-map';
import { EqK } from '../eq-k';
import { Functor } from '../functor';
import { FunctorFilter } from '../functor-filter';
import { Monad } from '../monad';
import { MonoidK } from '../monoid-k';
import { TraversableFilter } from '../traversable-filter';
import { Either } from './either';
import { List } from './collections';
export type Option = _Option;
export declare const Option: OptionObj;
declare abstract class _Option {
private readonly __void;
private readonly _A;
get isEmpty(): boolean;
get nonEmpty(): boolean;
abstract readonly get: A;
get toList(): List;
get toArray(): A[];
toLeft(right: Lazy): Either;
toRight(left: Lazy): Either;
fold(onNone: () => B1, onSome: (a: A) => B2): B1 | B2;
map(f: (a: A) => B): Option;
tap(f: (a: A) => unknown): Option;
map2(that: Option, f: (a: A, b: B) => C): Option;
map2Eval(that: Eval