import { $ } from '.'; import { Functor } from './functor'; import { Apply } from './apply'; import { Cartesian } from './cartesian'; import { Applicative } from './applicative'; import { FlatMap } from './flatmap'; import { Monad } from './monad'; export declare class Id { value: A; constructor(value: A); valueOf(): A; } export declare class IdFunctor implements Functor<"Id"> { map(f: (a: A) => B, fb: $<"Id", A>): $<"Id", B>; } declare module '.' { interface _ { "Id": Id; } } declare module './functor' { namespace Functor { let Id: IdFunctor; } } export declare class IdCartesian implements Cartesian<"Id"> { product(fa: Id, fb: Id): Id<[A, B]>; } declare module './cartesian' { namespace Cartesian { let Id: IdCartesian; } } export declare class IdApply implements Apply<"Id"> { ap(fab: Id<(a: A) => B>, fa: Id): Id; map: (f: (a: A) => B, fb: Id) => Id; product: (fa: Id, fb: Id) => Id<[A, B]>; } declare module './apply' { namespace Apply { let Id: IdApply; } } export declare class IdApplicative extends IdApply implements Applicative<"Id"> { pure(a: A): Id; } declare module './applicative' { namespace Applicative { let Id: IdApplicative; } } export declare class IdFlatMap extends IdApply implements FlatMap<"Id"> { flatMap(f: (a: A) => Id, fa: Id): Id; } declare module './flatmap' { namespace FlatMap { let Id: IdFlatMap; } } export declare class IdMonad extends IdApplicative implements Monad<"Id"> { flatMap: (f: (a: A) => Id, fa: Id) => Id; } declare module './monad' { namespace Monad { let Id: IdMonad; } }