/** * @since 2.0.0 */ import { ApplicativeComposition11, ApplicativeComposition21, ApplicativeComposition2C1, ApplicativeCompositionHKT1 } from './Applicative' import { HKT, Kind, Kind2, URIS, URIS2 } from './HKT' import { Monad, Monad1, Monad2, Monad2C } from './Monad' import { Option, URI } from './Option' import { Lazy } from './function' /** * @category model * @since 2.0.0 */ export interface OptionT extends HKT> {} /** * @since 2.0.0 */ export interface OptionM extends ApplicativeCompositionHKT1 { readonly chain: (ma: OptionT, f: (a: A) => OptionT) => OptionT readonly alt: (fa: OptionT, that: Lazy>) => OptionT readonly fold: (ma: OptionT, onNone: Lazy>, onSome: (a: A) => HKT) => HKT readonly getOrElse: (ma: OptionT, onNone: Lazy>) => HKT readonly fromM: (ma: HKT) => OptionT readonly none: () => OptionT } /** * @category model * @since 2.0.0 */ export declare type OptionT1 = Kind> /** * @since 2.0.0 */ export interface OptionM1 extends ApplicativeComposition11 { readonly chain: (ma: OptionT1, f: (a: A) => OptionT1) => OptionT1 readonly alt: (fa: OptionT1, that: Lazy>) => OptionT1 readonly fold: (ma: OptionT1, onNone: Lazy>, onSome: (a: A) => Kind) => Kind readonly getOrElse: (ma: OptionT1, onNone: Lazy>) => Kind readonly fromM: (ma: Kind) => OptionT1 readonly none: () => OptionT1 } /** * @category model * @since 2.0.0 */ export declare type OptionT2 = Kind2> /** * @since 2.0.0 */ export interface OptionM2 extends ApplicativeComposition21 { readonly chain: (ma: OptionT2, f: (a: A) => OptionT2) => OptionT2 readonly alt: (fa: OptionT2, that: Lazy>) => OptionT2 readonly fold: ( ma: OptionT2, onNone: Lazy>, onSome: (a: A) => Kind2 ) => Kind2 readonly getOrElse: (ma: OptionT2, onNone: Lazy>) => Kind2 readonly fromM: (ma: Kind2) => OptionT2 readonly none: () => OptionT2 } /** * @since 2.2.0 */ export interface OptionM2C extends ApplicativeComposition2C1 { readonly chain: (ma: OptionT2, f: (a: A) => OptionT2) => OptionT2 readonly alt: (fa: OptionT2, that: Lazy>) => OptionT2 readonly fold: ( ma: OptionT2, onNone: Lazy>, onSome: (a: A) => Kind2 ) => Kind2 readonly getOrElse: (ma: OptionT2, onNone: Lazy>) => Kind2 readonly fromM: (ma: Kind2) => OptionT2 readonly none: () => OptionT2 } /** * @since 2.0.0 */ export declare function getOptionM(M: Monad2): OptionM2 export declare function getOptionM(M: Monad2C): OptionM2C export declare function getOptionM(M: Monad1): OptionM1 export declare function getOptionM(M: Monad): OptionM