import { Eval, Kind } from '@fp4ts/core'; import { ComposedApply } from './composed'; import { Functor, FunctorRequirements } from './functor'; /** * @category Type Class */ export interface Apply extends Functor { ap(fa: Kind): (ff: Kind B]>) => Kind; ap_(ff: Kind B]>, fa: Kind): Kind; map2(fb: Kind, f: (a: A, b: B) => C): (fa: Kind) => Kind; map2_(fa: Kind, fb: Kind, f: (a: A, b: B) => C): Kind; map3(fb: Kind, fc: Kind, f: (a: A, b: B, c: C) => D): (fa: Kind) => Kind; map3_(fa: Kind, fb: Kind, fC: Kind, f: (a: A, b: B, c: C) => D): Kind; mapN(...fbs: { [k in keyof BS]: Kind; }): (f: (a: A, ...bs: BS) => C) => (fa: Kind) => Kind; mapN_(fa: Kind, ...fbs: { [k in keyof BS]: Kind; }): (f: (a: A, ...bs: BS) => C) => Kind; map2Eval(fb: Eval>, f: (a: A, b: B) => D): (fa: Kind) => Eval>; map2Eval_(fa: Kind, fb: Eval>, f: (a: A, b: B) => C): Eval>; product(fb: Kind): (fa: Kind) => Kind; product_(fa: Kind, fb: Kind): Kind; productL(fb: Kind): (fa: Kind) => Kind; productL_(fa: Kind, fb: Kind): Kind; productR(fb: Kind): (fa: Kind) => Kind; productR_(fa: Kind, fb: Kind): Kind; } export type ApplyRequirements = (Pick, 'ap_'> | Pick, 'map2_'>) & FunctorRequirements & Partial>; export declare const Apply: Readonly<{ of: (F: ApplyRequirements) => Apply; compose: (F: Apply, G: Apply) => ComposedApply; TraverseStrategy: (a: Apply) => (use: (Rhs: TraverseStrategy) => A) => A; }>; export interface TraverseStrategy { toRhs(thunk: () => Kind): Kind]>; toG(fa: Kind]>): Kind; defer(thunk: () => Kind]>): Kind]>; map(fa: Kind]>, f: (a: A) => B): Kind]>; map2Rhs(lhs: Kind, rhs: Kind]>, f: (a: A, b: B) => C): Kind]>; map2(lhs: Kind]>, rhs: Kind]>, f: (a: A, b: B) => C): Kind]>; } //# sourceMappingURL=apply.d.ts.map