/** * @since 2.0.0 */ import { HKT, Kind, Kind2, Kind3, URIS, URIS2, URIS3 } from './HKT' import { Monad, Monad1, Monad2, Monad2C, Monad3 } from './Monad' import { Reader } from './Reader' /** * @category model * @since 2.0.0 */ export interface ReaderT { (r: R): HKT } /** * @since 2.0.0 */ export interface ReaderM { readonly map: (ma: ReaderT, f: (a: A) => B) => ReaderT readonly of: (a: A) => ReaderT readonly ap: (mab: ReaderT B>, ma: ReaderT) => ReaderT readonly chain: (ma: ReaderT, f: (a: A) => ReaderT) => ReaderT readonly ask: () => ReaderT readonly asks: (f: (r: R) => A) => ReaderT readonly local: (ma: ReaderT, f: (d: Q) => R) => ReaderT readonly fromReader: (ma: Reader) => ReaderT readonly fromM: (ma: HKT) => ReaderT } /** * @category model * @since 2.0.0 */ export interface ReaderT1 { (r: R): Kind } /** * @since 2.0.0 */ export interface ReaderM1 { readonly map: (ma: ReaderT1, f: (a: A) => B) => ReaderT1 readonly of: (a: A) => ReaderT1 readonly ap: (mab: ReaderT1 B>, ma: ReaderT1) => ReaderT1 readonly chain: (ma: ReaderT1, f: (a: A) => ReaderT1) => ReaderT1 readonly ask: () => ReaderT1 readonly asks: (f: (r: R) => A) => ReaderT1 readonly local: (ma: ReaderT1, f: (d: Q) => R) => ReaderT1 readonly fromReader: (ma: Reader) => ReaderT1 readonly fromM: (ma: Kind) => ReaderT1 } /** * @category model * @since 2.0.0 */ export interface ReaderT2 { (r: R): Kind2 } /** * @since 2.0.0 */ export interface ReaderM2 { readonly map: (ma: ReaderT2, f: (a: A) => B) => ReaderT2 readonly of: (a: A) => ReaderT2 readonly ap: (mab: ReaderT2 B>, ma: ReaderT2) => ReaderT2 readonly chain: (ma: ReaderT2, f: (a: A) => ReaderT2) => ReaderT2 readonly ask: () => ReaderT2 readonly asks: (f: (r: R) => A) => ReaderT2 readonly local: (ma: ReaderT2, f: (d: Q) => R) => ReaderT2 readonly fromReader: (ma: Reader) => ReaderT2 readonly fromM: (ma: Kind2) => ReaderT2 } /** * @since 2.2.0 */ export interface ReaderM2C { readonly map: (ma: ReaderT2, f: (a: A) => B) => ReaderT2 readonly of: (a: A) => ReaderT2 readonly ap: (mab: ReaderT2 B>, ma: ReaderT2) => ReaderT2 readonly chain: (ma: ReaderT2, f: (a: A) => ReaderT2) => ReaderT2 readonly ask: () => ReaderT2 readonly asks: (f: (r: R) => A) => ReaderT2 readonly local: (ma: ReaderT2, f: (d: Q) => R) => ReaderT2 readonly fromReader: (ma: Reader) => ReaderT2 readonly fromM: (ma: Kind2) => ReaderT2 } /** * @since 2.0.0 */ export interface ReaderT3 { (r: R): Kind3 } /** * @since 2.0.0 */ export interface ReaderM3 { readonly map: (ma: ReaderT3, f: (a: A) => B) => ReaderT3 readonly of: (a: A) => ReaderT3 readonly ap: ( mab: ReaderT3 B>, ma: ReaderT3 ) => ReaderT3 readonly chain: ( ma: ReaderT3, f: (a: A) => ReaderT3 ) => ReaderT3 readonly ask: () => ReaderT3 readonly asks: (f: (r: R) => A) => ReaderT3 readonly local: (ma: ReaderT3, f: (d: Q) => R) => ReaderT3 readonly fromReader: (ma: Reader) => ReaderT3 readonly fromM: (ma: Kind3) => ReaderT3 } /** * @since 2.0.0 */ export declare function getReaderM(M: Monad3): ReaderM3 export declare function getReaderM(M: Monad2): ReaderM2 export declare function getReaderM(M: Monad2C): ReaderM2C export declare function getReaderM(M: Monad1): ReaderM1 export declare function getReaderM(M: Monad): ReaderM