import * as HKT from './HKT'; export interface Functor extends HKT.Base { readonly map_: MapFn_; readonly map: MapFn; readonly flap_: FlapFn_; readonly flap: FlapFn; readonly as_: AsFn_; readonly as: AsFn; readonly fcross_: FCrossFn_; readonly fcross: FCrossFn; } export declare type FunctorMin = { readonly map_: MapFn_; }; export declare function Functor(F: FunctorMin): Functor; export interface Functor2 extends HKT.CompositionBase2 { readonly map_: MapFn2_; readonly map: MapFn2; } export declare function getFunctorComposition(F: Functor, G: Functor): Functor2; export interface MapFn { (f: (a: A) => B): (fa: HKT.Kind) => HKT.Kind; } export interface MapFn_ { (fa: HKT.Kind, f: (a: A) => B): HKT.Kind; } export interface MapFn2 { (f: (a: A) => B): (fa: HKT.Kind>) => HKT.Kind>; } export interface MapFn2_ { (fa: HKT.Kind>, f: (a: A) => B): HKT.Kind>; } export interface FlapFn_ { (fab: HKT.Kind B>, a: A): HKT.Kind; } export interface FlapFn { (a: A): (fab: HKT.Kind B>) => HKT.Kind; } export interface FlapFn2 { (a: A): (fa: HKT.Kind B>>) => HKT.Kind>; } export interface FlapFn2_ { (fa: HKT.Kind B>>, a: A): HKT.Kind>; } export declare function flapF_(F: FunctorMin): FlapFn_; export declare function flapF(F: Functor): FlapFn; export interface AsFn_ { (fa: HKT.Kind, b: () => B): HKT.Kind; } export interface AsFn { (b: () => B): (fa: HKT.Kind) => HKT.Kind; } export interface AsFn2 { (b: () => B): (fa: HKT.Kind>) => HKT.Kind>; } export interface AsFn2_ { (fa: HKT.Kind>, b: () => B): HKT.Kind>; } export declare function asF_(F: FunctorMin): AsFn_; export declare function asF(F: Functor): AsFn; export interface FCrossFn_ { (fa: HKT.Kind, f: (a: A) => B): HKT.Kind; } export interface FCrossFn { (f: (a: A) => B): (fa: HKT.Kind) => HKT.Kind; } export interface FCrossFn2 { (f: (a: A) => B): (fa: HKT.Kind>) => HKT.Kind>; } export interface FCrossFn2_ { (fa: HKT.Kind>, f: (a: A) => B): HKT.Kind>; } export declare function fcrossF_(F: FunctorMin): FCrossFn_; export declare function fcrossF(F: Functor): FCrossFn; export interface BindToSFn { (name: BN): (fa: HKT.Kind) => HKT.Kind; } export declare function bindToSF(F: Functor): BindToSFn; export interface TupledFn { (fa: HKT.Kind): HKT.Kind; } export declare function tupledF(F: Functor): TupledFn; //# sourceMappingURL=Functor.d.ts.map