import { Maybe } from "./maybe"; import { Either } from "./either"; export interface Functor { map(f: (a: A) => B): Functor; mapTo(b: B): Functor; } export declare type AnyFunctor = A[] | Functor; export declare abstract class AbstractFunctor implements Functor { abstract map(f: (a: A) => B): Functor; mapTo(b: B): Functor; } export declare function functor(constructor: Function): void; export declare function map(f: (a: A) => B, functor: Maybe): Maybe; export declare function map(f: (b: B) => C, functor: Either): Either; export declare function map(f: (a: A) => B, functor: Functor): any; export declare function map(f: (a: A) => B, functor: A[]): B[]; export declare function mapTo(b: B, functor: Maybe): Maybe; export declare function mapTo(c: C, functor: Either): Either; export declare function mapTo(b: B, functor: A[]): B[]; export declare function mapTo(b: B, functor: Functor): any; export declare function mapMap(f: (a: A) => B, functor: AnyFunctor>): any;