import type { BindToSFn } from './Functor'; import type { Monad } from './Monad'; import * as HKT from './HKT'; export interface Do extends Monad { readonly bindS: BindSFn; readonly letS: LetSFn; readonly bindToS: BindToSFn; } export declare function Do(M: Monad): Do; export interface BindSFn { (name: Exclude, f: (a: A) => HKT.Kind): (fa: 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, HKT.Mix, HKT.Mix, { [K in keyof A | BN]: K extends keyof A ? A[K] : A1; }>; } export declare function bindSF(F: Monad): BindSFn; export interface LetSFn { (name: Exclude, f: (a: A) => A1): (fa: HKT.Kind) => HKT.Kind; } export declare function letSF(F: Monad): LetSFn; //# sourceMappingURL=Do.d.ts.map