import { HKT, Kind, Kind2, Kind3, Kind4, URIS, URIS2, URIS3, URIS4 } from './HKT' /** * @category model * @since 2.0.0 */ export interface Functor { readonly URI: F readonly map: (fa: HKT, f: (a: A) => B) => HKT } /** * @category model * @since 2.0.0 */ export interface Functor1 { readonly URI: F readonly map: (fa: Kind, f: (a: A) => B) => Kind } /** * @category model * @since 2.0.0 */ export interface Functor2 { readonly URI: F readonly map: (fa: Kind2, f: (a: A) => B) => Kind2 } /** * @category model * @since 2.0.0 */ export interface Functor2C { readonly URI: F readonly _E: E readonly map: (fa: Kind2, f: (a: A) => B) => Kind2 } /** * @category model * @since 2.0.0 */ export interface Functor3 { readonly URI: F readonly map: (fa: Kind3, f: (a: A) => B) => Kind3 } /** * @category model * @since 2.2.0 */ export interface Functor3C { readonly URI: F readonly _E: E readonly map: (fa: Kind3, f: (a: A) => B) => Kind3 } /** * @category model * @since 2.0.0 */ export interface Functor4 { readonly URI: F readonly map: (fa: Kind4, f: (a: A) => B) => Kind4 } /** * `map` composition. * * @since 2.10.0 */ export declare function map( F: Functor3, G: Functor1 ): (f: (a: A) => B) => (fa: Kind3>) => Kind3> export declare function map( F: Functor2, G: Functor2 ): (f: (a: A) => B) => (fa: Kind2>) => Kind2> export declare function map( F: Functor2, G: Functor1 ): (f: (a: A) => B) => (fa: Kind2>) => Kind2> export declare function map( F: Functor1, G: Functor3 ): (f: (a: A) => B) => (fa: Kind>) => Kind> export declare function map( F: Functor1, G: Functor2 ): (f: (a: A) => B) => (fa: Kind>) => Kind> export declare function map( F: Functor1, G: Functor1 ): (f: (a: A) => B) => (fa: Kind>) => Kind> export declare function map( F: Functor, G: Functor2 ): (f: (a: A) => B) => (fa: HKT>) => HKT> export declare function map( F: Functor, G: Functor1 ): (f: (a: A) => B) => (fa: HKT>) => HKT> export declare function map( F: Functor, G: Functor ): (f: (a: A) => B) => (fa: HKT>) => HKT> /** * @category mapping * @since 2.10.0 */ export declare function flap( F: Functor4 ): (a: A) => (fab: Kind4 B>) => Kind4 export declare function flap( F: Functor3 ): (a: A) => (fab: Kind3 B>) => Kind3 export declare function flap( F: Functor2 ): (a: A) => (fab: Kind2 B>) => Kind2 export declare function flap(F: Functor1): (a: A) => (fab: Kind B>) => Kind export declare function flap(F: Functor): (a: A) => (fab: HKT B>) => HKT /** * @since 2.10.0 */ export declare function bindTo( F: Functor4 ): ( name: N ) => ( fa: Kind4 ) => Kind4< F, S, R, E, { readonly [K in N]: A } > export declare function bindTo( F: Functor3 ): ( name: N ) => ( fa: Kind3 ) => Kind3< F, R, E, { readonly [K in N]: A } > export declare function bindTo( F: Functor3C ): ( name: N ) => ( fa: Kind3 ) => Kind3< F, R, E, { readonly [K in N]: A } > export declare function bindTo( F: Functor2 ): ( name: N ) => ( fa: Kind2 ) => Kind2< F, E, { readonly [K in N]: A } > export declare function bindTo( F: Functor2C ): ( name: N ) => (fa: Kind2) => Kind2< F, E, { readonly [K in N]: A } > export declare function bindTo( F: Functor1 ): ( name: N ) => (fa: Kind) => Kind< F, { readonly [K in N]: A } > export declare function bindTo(F: Functor): ( name: N ) => (fa: HKT) => HKT< F, { readonly [K in N]: A } > /** * @since 2.13.0 */ declare function let_( F: Functor4 ): ( name: Exclude, f: (a: A) => B ) => ( fa: Kind4 ) => Kind4< F, S, R, E, { readonly [K in keyof A | N]: K extends keyof A ? A[K] : B } > declare function let_( F: Functor3 ): ( name: Exclude, f: (a: A) => B ) => ( fa: Kind3 ) => Kind3< F, R, E, { readonly [K in keyof A | N]: K extends keyof A ? A[K] : B } > declare function let_( F: Functor3C ): ( name: Exclude, f: (a: A) => B ) => (fa: Kind3) => Kind3< F, R, E, { readonly [K in keyof A | N]: K extends keyof A ? A[K] : B } > declare function let_( F: Functor2 ): ( name: Exclude, f: (a: A) => B ) => (fa: Kind2) => Kind2< F, E, { readonly [K in keyof A | N]: K extends keyof A ? A[K] : B } > declare function let_( F: Functor2C ): ( name: Exclude, f: (a: A) => B ) => (fa: Kind2) => Kind2< F, E, { readonly [K in keyof A | N]: K extends keyof A ? A[K] : B } > declare function let_( F: Functor1 ): ( name: Exclude, f: (a: A) => B ) => (fa: Kind) => Kind< F, { readonly [K in keyof A | N]: K extends keyof A ? A[K] : B } > declare function let_(F: Functor): ( name: Exclude, f: (a: A) => B ) => (fa: HKT) => HKT< F, { readonly [K in keyof A | N]: K extends keyof A ? A[K] : B } > export { /** * @since 2.13.0 */ let_ as let } /** * @category zone of death * @since 2.0.0 * @deprecated */ export interface FunctorComposition { readonly map: (fa: HKT>, f: (a: A) => B) => HKT> } /** * @category zone of death * @since 2.0.0 * @deprecated */ export interface FunctorCompositionHKT1 { readonly map: (fa: HKT>, f: (a: A) => B) => HKT> } /** * @category zone of death * @since 2.0.0 * @deprecated */ export interface FunctorCompositionHKT2 { readonly map: (fa: HKT>, f: (a: A) => B) => HKT> } /** * @category zone of death * @since 2.0.0 * @deprecated */ export interface FunctorCompositionHKT2C { readonly map: (fa: HKT>, f: (a: A) => B) => HKT> } /** * @category zone of death * @since 2.0.0 * @deprecated */ export interface FunctorComposition11 { readonly map: (fa: Kind>, f: (a: A) => B) => Kind> } /** * @category zone of death * @since 2.0.0 * @deprecated */ export interface FunctorComposition12 { readonly map: (fa: Kind>, f: (a: A) => B) => Kind> } /** * @category zone of death * @since 2.0.0 * @deprecated */ export interface FunctorComposition12C { readonly map: (fa: Kind>, f: (a: A) => B) => Kind> } /** * @category zone of death * @since 2.0.0 * @deprecated */ export interface FunctorComposition21 { readonly map: (fa: Kind2>, f: (a: A) => B) => Kind2> } /** * @category zone of death * @since 2.0.0 * @deprecated */ export interface FunctorComposition2C1 { readonly map: (fa: Kind2>, f: (a: A) => B) => Kind2> } /** * @category zone of death * @since 2.0.0 * @deprecated */ export interface FunctorComposition22 { readonly map: (fa: Kind2>, f: (a: A) => B) => Kind2> } /** * @category zone of death * @since 2.0.0 * @deprecated */ export interface FunctorComposition22C { readonly map: (fa: Kind2>, f: (a: A) => B) => Kind2> } /** * @category zone of death * @since 2.2.0 * @deprecated */ export interface FunctorComposition23 { readonly map: (fa: Kind2>, f: (a: A) => B) => Kind2> } /** * @category zone of death * @since 2.2.0 * @deprecated */ export interface FunctorComposition23C { readonly map: (fa: Kind2>, f: (a: A) => B) => Kind2> } /** * Use [`map`](#map) instead. * * @category zone of death * @since 2.0.0 * @deprecated */ export declare function getFunctorComposition( F: Functor2, G: Functor3C ): FunctorComposition23C /** @deprecated */ export declare function getFunctorComposition( F: Functor2, G: Functor2C ): FunctorComposition22C /** @deprecated */ export declare function getFunctorComposition( F: Functor2, G: Functor2 ): FunctorComposition22 /** @deprecated */ export declare function getFunctorComposition( F: Functor2C, G: Functor1 ): FunctorComposition2C1 /** @deprecated */ export declare function getFunctorComposition( F: Functor2, G: Functor1 ): FunctorComposition21 /** @deprecated */ export declare function getFunctorComposition( F: Functor1, G: Functor2C ): FunctorComposition12C /** @deprecated */ export declare function getFunctorComposition( F: Functor1, G: Functor2 ): FunctorComposition12 /** @deprecated */ export declare function getFunctorComposition( F: Functor1, G: Functor1 ): FunctorComposition11 /** @deprecated */ export declare function getFunctorComposition(F: Functor, G: Functor): FunctorComposition