import type { Has, Tag } from './Has'; import type { MonadMin } from './Monad'; import * as HKT from './HKT'; import { Monad } from './Monad'; /** * Contravariant `Reader` + `Monad` */ export interface MonadEnv> extends Monad { readonly asks: AsksFn; readonly ask: AskFn; readonly asksM: AsksMFn; readonly giveAll_: GiveAllFn_; readonly giveAll: GiveAllFn; readonly gives_: GivesFn_; readonly gives: GivesFn; } export declare type MonadEnvMin> = MonadMin & { readonly asks: AsksFn; readonly giveAll_: GiveAllFn_; }; export declare function MonadEnv>(M: MonadEnvMin): MonadEnv; export interface AskFn> { , K = HKT.Initial, Q = HKT.Initial, W = HKT.Initial, X = HKT.Initial, I = HKT.Initial, S = HKT.Initial, E = HKT.Initial>(): HKT.Kind; } export declare function askF>(F: MonadEnvMin): AskFn; export interface AsksFn> { , K = HKT.Initial, Q = HKT.Initial, W = HKT.Initial, X = HKT.Initial, I = HKT.Initial, S = HKT.Initial, R = HKT.Initial, E = HKT.Initial>(f: (_: R) => A): HKT.Kind; } export interface AsksMFn> { (f: (_: HKT.OrFix<'R', C, R0>) => HKT.Kind): HKT.Kind, E, A>; } export interface GiveAllFn> { (r: R): (fa: HKT.Kind) => HKT.Kind; } export interface GiveAllFn_> { (fa: HKT.Kind, r: R): HKT.Kind; } export interface GiveFn> { (r: R): (ma: HKT.Kind) => HKT.Kind; } export interface GiveFn_> { (ma: HKT.Kind, r: R): HKT.Kind; } export interface GivesFn> { (f: (r0: R0) => R): (ma: HKT.Kind) => HKT.Kind; } export interface GivesFn_> { (ma: HKT.Kind, f: (r0: R0) => R): HKT.Kind; } export interface AsksServiceFn> { (H: Tag): , K = HKT.Initial, Q = HKT.Initial, W = HKT.Initial, X = HKT.Initial, I = HKT.Initial, S = HKT.Initial, R = HKT.Initial, E = HKT.Initial>(f: (_: Service) => A) => HKT.Kind, E, A>; } export interface AsksServiceMFn> { (H: Tag): (f: (_: Service) => HKT.Kind) => HKT.Kind, E, A>; } export interface GiveServiceFn> { (H: Tag): (S: Service) => (ma: HKT.Kind, E, A>) => HKT.Kind; } export interface GiveServiceMFn> { (H: Tag): (S: HKT.Kind) => (ma: HKT.Kind, HKT.Intro, HKT.Intro, HKT.Intro, HKT.Intro, HKT.Intro, HKT.Intro, HKT.Intro, HKT.Intro, A>) => HKT.Kind, HKT.Mix, HKT.Mix, HKT.Mix, HKT.Mix, HKT.Mix, HKT.Mix, R & R1, HKT.Mix, A>; } /** * Derives from `MonadEnv`: * ```haskell * gives :: (MonadEnv m) => (r0 -> r) -> m r a -> m r0 a * ``` */ export declare function givesF_>(F: MonadEnvMin): GivesFn_; /** * Derives from `MonadEnv`: * ```haskell * gives :: (MonadEnv m) => (r0 -> r) -> m r a -> m r0 a * ``` */ export declare function givesF>(F: MonadEnvMin): GivesFn; /** * Derives from `MonadEnv`: * ```haskell * give :: (MonadEnv m) => r -> m |r & r0| a -> m r0 a * ``` */ export declare function giveF>(F: MonadEnv): GiveFn; /** * Derives from `MonadEnv`: * ```haskell * asksM :: (MonadEnv m) => (r0 -> m r a) -> m |r0 & r| a * ``` */ export declare function asksMF>(F: MonadEnvMin): AsksMFn; /** * Derives from `MonadEnv`: * ```haskell * asksService :: (MonadEnv m) => (Tag s) => (s -> a) -> m s a * ``` */ export declare function asksServiceF>(F: MonadEnv): AsksServiceFn; /** * Derives from `MonadEnv`: * ```haskell * asksService :: (MonadEnv m) => (Tag s) => (s -> m r a) -> m |s & r| a * ``` */ export declare function asksServiceMF>(F: MonadEnv): AsksServiceMFn; /** * Derives from `MonadEnv`: * ```haskell * giveService :: (MonadEnv m) => (Tag s) => s -> m |s & r| a -> m r a * ``` */ export declare function giveServiceF>(F: MonadEnv): GiveServiceFn; /** * Derives from `MonadEnv`: * ```haskell * giveService :: (MonadEnv m) => (Tag s) => m r0 s -> m |s & r| a -> m |r & r0| a * ``` */ export declare function giveServiceMF>(F: MonadEnv): GiveServiceMFn; //# sourceMappingURL=MonadEnv.d.ts.map