/** * @since 0.0.1 */ import type { Alt2 } from 'fp-ts/Alt' import type { Alternative2 } from 'fp-ts/Alternative' import type { Applicative2 } from 'fp-ts/Applicative' import type { Apply2 } from 'fp-ts/Apply' import type { Compactable2, Separated } from 'fp-ts/Compactable' import type { Either } from 'fp-ts/Either' import type { Filterable2 } from 'fp-ts/Filterable' import type { Functor2 } from 'fp-ts/Functor' import type { Monad2 } from 'fp-ts/Monad' import type { Option } from 'fp-ts/Option' import type { Reader } from 'fp-ts/Reader' import { Lazy, Predicate, Refinement } from 'fp-ts/function' /** * @category model * @since 0.0.1 */ export interface ReaderOption { (r: R): Option } /** * @category constructors * @since 0.0.1 */ export declare const none: ReaderOption /** * @category constructors * @since 0.0.1 */ export declare const some: (a: A) => ReaderOption /** * @category constructors * @since 0.0.1 */ export declare const ask: () => ReaderOption /** * @category constructors * @since 0.0.1 */ export declare const asks: (f: (r: R) => A) => ReaderOption /** * @category constructors * @since 0.0.1 */ export declare const fromOption: (ma: Option) => ReaderOption /** * @category constructors * @since 0.0.1 */ export declare const fromReader: (ma: Reader) => ReaderOption /** * @category constructors * @since 0.0.1 */ export declare const fromPredicate: { (refinement: Refinement): (a: A) => ReaderOption (predicate: Predicate): (a: A) => ReaderOption } /** * @category destructors * @since 0.0.1 */ export declare const fold: ( onNone: Lazy>, onSome: (a: A) => Reader ) => (ma: ReaderOption) => Reader /** * @category destructors * @since 0.0.1 */ export declare const getOrElseW: ( onNone: Lazy> ) => (ma: ReaderOption) => Reader /** * @category destructors * @since 0.0.1 */ export declare const getOrElse: ( onNone: Lazy> ) => (ma: ReaderOption) => Reader /** * @category combinators * @since 0.0.1 */ export declare const fromOptionK: , B>( f: (...a: A) => Option ) => (...a: A) => ReaderOption /** * @category combinators * @since 0.0.1 */ export declare const chainOptionK: ( f: (a: A) => Option ) => (ma: ReaderOption) => ReaderOption /** * @category Functor * @since 0.0.1 */ export declare const map: ( f: (a: A) => B ) => (fa: ReaderOption) => ReaderOption /** * @category Apply * @since 0.0.1 */ export declare const ap: ( fa: ReaderOption ) => (fab: ReaderOption B>) => ReaderOption /** * @category Apply * @since 0.0.1 */ export declare const apFirst: ( fb: ReaderOption ) => (fa: ReaderOption) => ReaderOption /** * @category Apply * @since 0.0.1 */ export declare const apSecond: ( fb: ReaderOption ) => (fa: ReaderOption) => ReaderOption /** * @category Monad * @since 0.0.1 */ export declare const chain: ( f: (a: A) => ReaderOption ) => (ma: ReaderOption) => ReaderOption /** * @category Applicative * @since 0.0.1 */ export declare const of: Applicative2['of'] /** * @category Monad * @since 0.0.1 */ export declare const chainFirst: ( f: (a: A) => ReaderOption ) => (ma: ReaderOption) => ReaderOption /** * @category Monad * @since 0.0.1 */ export declare const flatten: (mma: ReaderOption>) => ReaderOption /** * @category Alternative * @since 0.0.1 */ export declare const alt: ( that: Lazy> ) => (fa: ReaderOption) => ReaderOption /** * @category Alternative * @since 0.0.1 */ export declare const zero: Alternative2['zero'] /** * @category Compactable * @since 0.0.1 */ export declare const compact: (fa: ReaderOption>) => ReaderOption /** * @category Compactable * @since 0.0.1 */ export declare const separate: ( ma: ReaderOption> ) => Separated, ReaderOption> /** * @category Filterable * @since 0.0.1 */ export declare const filter: { (refinement: Refinement): (fa: ReaderOption) => ReaderOption (predicate: Predicate): (fa: ReaderOption) => ReaderOption } /** * @category Filterable * @since 0.0.1 */ export declare const filterMap: ( f: (a: A) => Option ) => (fa: ReaderOption) => ReaderOption /** * @category Filterable * @since 0.0.1 */ export declare const partition: { (refinement: Refinement): ( fa: ReaderOption ) => Separated, ReaderOption> (predicate: Predicate): ( fa: ReaderOption ) => Separated, ReaderOption> } /** * @category Filterable * @since 0.0.1 */ export declare const partitionMap: ( f: (a: A) => Either ) => (fa: ReaderOption) => Separated, ReaderOption> /** * @category instances * @since 0.0.1 */ export declare const URI = 'ReaderOption' /** * @category instances * @since 0.0.1 */ export declare type URI = typeof URI declare module 'fp-ts/HKT' { interface URItoKind2 { readonly [URI]: ReaderOption } } /** * @category instances * @since 0.0.1 */ export declare const Functor: Functor2 /** * @category instances * @since 0.0.1 */ export declare const Apply: Apply2 /** * @category instances * @since 0.0.1 */ export declare const Applicative: Applicative2 /** * @category instances * @since 0.0.1 */ export declare const Monad: Monad2 /** * @category instances * @since 0.0.1 */ export declare const Alt: Alt2 /** * @category instances * @since 0.0.1 */ export declare const Alternative: Alternative2 /** * @category instances * @since 0.0.1 */ export declare const Compactable: Compactable2 /** * @category instances * @since 0.0.1 */ export declare const Filterable: Filterable2 /** * @category do notation * @since 0.0.1 */ export declare const bindTo: ( name: N ) => (fa: ReaderOption) => ReaderOption /** * @category do notation * @since 0.0.1 */ export declare const bind: ( name: Exclude, f: (a: A) => ReaderOption ) => ( fa: ReaderOption ) => ReaderOption