import { $, $type, EvalF, Kind, TyK, TyVar } from '@fp4ts/core'; import { Applicative } from './applicative'; import { FlatMap } from './flat-map'; import { MonadDefer } from './monad-defer'; import { ArrayF } from './instances/array'; import { Function0F, Function1F } from './instances/function'; /** * @category Type Class */ export interface Monad extends FlatMap, Applicative { do, any>, R>(f: (fa: (fa: Kind) => GenKind, A>) => Generator): Kind; liftM(f: (a: A) => B): (fa: Kind) => Kind; } export type MonadRequirements = Pick, 'flatMap_' | 'pure' | 'tailRecM_'> & Partial>; export declare const Monad: Readonly<{ of: (M: MonadRequirements) => Monad; readonly Eval: MonadDefer; readonly Array: Monad; readonly Function0: MonadDefer; Function1: () => MonadDefer<$>; Do(F: Monad): , any>, R_1>(f: (fa: (fa: Kind) => GenKind, A>) => Generator) => Kind; }>; export declare class GenKind { readonly effect: FA; constructor(effect: FA); [Symbol.iterator](): Generator, A, any>; } export interface MonadF extends TyK<[unknown]> { [$type]: Monad>; } //# sourceMappingURL=monad.d.ts.map