import type { ApFn, ApFn_ } from './Apply'; import type { Functor2, FunctorMin } from './Functor'; import type { Semimonoidal, SemimonoidalMin } from './Semimonoidal'; import type { EnforceNonEmptyRecord } from './util/types'; import { Functor } from './Functor'; import * as HKT from './HKT'; export interface SemimonoidalFunctor extends Functor, Semimonoidal { readonly crossWith_: CrossWithFn_; readonly crossWith: CrossWithFn; } export declare type SemimonoidalFunctorMin = (SemimonoidalMin & FunctorMin) | ({ readonly crossWith_: CrossWithFn_; } & FunctorMin) | ({ readonly crossWith_: CrossWithFn_; } & SemimonoidalMin & FunctorMin); export declare function SemimonoidalFunctor(F: SemimonoidalFunctorMin): SemimonoidalFunctor; export interface SemimonoidalFunctor2 extends Functor2 { readonly crossWith_: CrossWithFn2_; readonly crossWith: CrossWithFn2; } export declare function getSemimonoidalFunctorComposition(F: SemimonoidalFunctor, G: SemimonoidalFunctor): SemimonoidalFunctor2; export interface CrossWithFn_ { (fa: HKT.Kind, fb: HKT.Kind, HKT.Intro, HKT.Intro, HKT.Intro, HKT.Intro, HKT.Intro, HKT.Intro, HKT.Intro, HKT.Intro, B>, f: (a: A, b: B) => C): HKT.Kind, HKT.Mix, HKT.Mix, HKT.Mix, HKT.Mix, HKT.Mix, HKT.Mix, HKT.Mix, HKT.Mix, C>; } export interface CrossWithFn { (fb: HKT.Kind, f: (a: A, b: B) => C): (fa: HKT.Kind, HKT.Intro, HKT.Intro, HKT.Intro, HKT.Intro, HKT.Intro, HKT.Intro, HKT.Intro, HKT.Intro, A>) => HKT.Kind, HKT.Mix, HKT.Mix, HKT.Mix, HKT.Mix, HKT.Mix, HKT.Mix, HKT.Mix, HKT.Mix, C>; } export interface CrossWithFn2_ { (fga: HKT.Kind>, fgb: HKT.Kind, HKT.Intro, HKT.Intro, HKT.Intro, HKT.Intro, HKT.Intro, HKT.Intro, HKT.Intro, HKT.Intro, HKT.Kind, HKT.Intro, HKT.Intro, HKT.Intro, HKT.Intro, HKT.Intro, HKT.Intro, HKT.Intro, HKT.Intro, B>>, f: (a: A, b: B) => C): HKT.Kind, HKT.Mix, HKT.Mix, HKT.Mix, HKT.Mix, HKT.Mix, HKT.Mix, HKT.Mix, HKT.Mix, HKT.Kind, HKT.Mix, HKT.Mix, HKT.Mix, HKT.Mix, HKT.Mix, HKT.Mix, HKT.Mix, HKT.Mix, C>>; } export interface CrossWithFn2 { (fgb: HKT.Kind>, f: (a: A, b: B) => C): (fga: HKT.Kind, HKT.Intro, HKT.Intro, HKT.Intro, HKT.Intro, HKT.Intro, HKT.Intro, HKT.Intro, HKT.Intro, HKT.Kind, HKT.Intro, HKT.Intro, HKT.Intro, HKT.Intro, HKT.Intro, HKT.Intro, HKT.Intro, HKT.Intro, A>>) => HKT.Kind, HKT.Mix, HKT.Mix, HKT.Mix, HKT.Mix, HKT.Mix, HKT.Mix, HKT.Mix, HKT.Mix, HKT.Kind, HKT.Mix, HKT.Mix, HKT.Mix, HKT.Mix, HKT.Mix, HKT.Mix, HKT.Mix, HKT.Mix, C>>; } export declare function apF_(A: SemimonoidalFunctor): ApFn_; export declare function apF(A: SemimonoidalFunctor): ApFn; export interface CrossSFn { (name: Exclude, fb: HKT.Kind): (fa: HKT.Kind, HKT.Intro, HKT.Intro, HKT.Intro, HKT.Intro, HKT.Intro, HKT.Intro, HKT.Intro, HKT.Intro, A>) => HKT.Kind, HKT.Mix, HKT.Mix, HKT.Mix, HKT.Mix, HKT.Mix, HKT.Mix, HKT.Mix, HKT.Mix, { [K in keyof A | BN]: K extends keyof A ? A[K] : A1; }>; } export declare function crossSF(F: SemimonoidalFunctor): CrossSFn; export interface CrossTFn { (fb: HKT.Kind): >(fas: HKT.Kind, HKT.Intro, HKT.Intro, HKT.Intro, HKT.Intro, HKT.Intro, HKT.Intro, HKT.Intro, HKT.Intro, A>) => HKT.Kind, HKT.Mix, HKT.Mix, HKT.Mix, HKT.Mix, HKT.Mix, HKT.Mix, HKT.Mix, HKT.Mix, readonly [...A, A1]>; } export declare function crossTF(F: SemimonoidalFunctor): CrossTFn; export interface LiftA2Fn { (f: (a: A) => (b: B) => D): (fa: HKT.Kind) => (fb: HKT.Kind, HKT.Intro, HKT.Intro, HKT.Intro, HKT.Intro, HKT.Intro, HKT.Intro, HKT.Intro, HKT.Intro, B>) => HKT.Kind, HKT.Mix, HKT.Mix, HKT.Mix, HKT.Mix, HKT.Mix, HKT.Mix, HKT.Mix, HKT.Mix, D>; } export declare function liftA2F(F: SemimonoidalFunctor): LiftA2Fn; export interface MapNFn { , HKT.Intro, HKT.Intro, HKT.Intro, HKT.Intro, HKT.Intro, HKT.Intro, HKT.Intro, HKT.Intro, unknown>, ...ReadonlyArray, HKT.Intro, HKT.Intro, HKT.Intro, HKT.Intro, HKT.Intro, HKT.Intro, HKT.Intro, HKT.Intro, unknown>> ], B, N extends string = HKT.Initial, K = HKT.Initial, Q = HKT.Initial, W = HKT.Initial, X = HKT.Initial, I = HKT.Initial, S = HKT.Initial, R = HKT.Initial, E = HKT.Initial>(f: (...as: { [K in keyof KT]: HKT.Infer; }) => B): (...t: KT) => HKT.Kind, InferMixTuple, InferMixTuple, InferMixTuple, InferMixTuple, InferMixTuple, InferMixTuple, InferMixTuple, InferMixTuple, B>; } export interface MapNFn_ { , HKT.Intro, HKT.Intro, HKT.Intro, HKT.Intro, HKT.Intro, HKT.Intro, HKT.Intro, HKT.Intro, unknown>, ...ReadonlyArray, HKT.Intro, HKT.Intro, HKT.Intro, HKT.Intro, HKT.Intro, HKT.Intro, HKT.Intro, HKT.Intro, unknown>> ], N extends string = HKT.Initial, K = HKT.Initial, Q = HKT.Initial, W = HKT.Initial, X = HKT.Initial, I = HKT.Initial, S = HKT.Initial, R = HKT.Initial, E = HKT.Initial>(...t: KT): (f: (...as: { [K in keyof KT]: HKT.Infer; }) => B) => HKT.Kind, InferMixTuple, InferMixTuple, InferMixTuple, InferMixTuple, InferMixTuple, InferMixTuple, InferMixTuple, InferMixTuple, B>; } /** * ```haskell * mapNF :: Apply f => ([a, b, ...] -> c) -> [f a, f b, ...] -> f c * ``` * * Combines a tuple of the given `Apply` member and maps with function `f` * * @category Apply * @since 1.0.0 */ export declare function mapNF(A: SemimonoidalFunctor): MapNFn; /** * ```haskell * mapNF_ :: Apply f => (fa, fb, ...) -> ([a, b, ...] -> c) -> f c * ``` * * Combines a tuple of the given `Apply` member and maps with function `f` * * @category Apply * @since 1.0.0 */ export declare function mapNF_(A: SemimonoidalFunctor): MapNFn_; export interface SequenceSFn { , HKT.Intro, HKT.Intro, HKT.Intro, HKT.Intro, HKT.Intro, HKT.Intro, HKT.Intro, HKT.Intro, unknown>>>, N extends string = HKT.Initial, K = HKT.Initial, Q = HKT.Initial, W = HKT.Initial, X = HKT.Initial, I = HKT.Initial, S = HKT.Initial, R = HKT.Initial, E = HKT.Initial>(r: EnforceNonEmptyRecord & Readonly, HKT.Intro, HKT.Intro, HKT.Intro, HKT.Intro, HKT.Intro, HKT.Intro, HKT.Intro, HKT.Intro, unknown>>>): HKT.Kind, InferMixStruct, InferMixStruct, InferMixStruct, InferMixStruct, InferMixStruct, InferMixStruct, InferMixStruct, InferMixStruct, { [K in keyof KS]: HKT.Infer; }>; } export declare function sequenceSF(F: SemimonoidalFunctor): SequenceSFn; export interface SequenceTFn { , HKT.Intro, HKT.Intro, HKT.Intro, HKT.Intro, HKT.Intro, HKT.Intro, HKT.Intro, HKT.Intro, unknown>, ...ReadonlyArray, HKT.Intro, HKT.Intro, HKT.Intro, HKT.Intro, HKT.Intro, HKT.Intro, HKT.Intro, HKT.Intro, unknown>> ], N extends string = HKT.Initial, K = HKT.Initial, Q = HKT.Initial, W = HKT.Initial, X = HKT.Initial, I = HKT.Initial, S = HKT.Initial, R = HKT.Initial, E = HKT.Initial>(...t: KT): HKT.Kind, InferMixTuple, InferMixTuple, InferMixTuple, InferMixTuple, InferMixTuple, InferMixTuple, InferMixTuple, InferMixTuple, { [K in keyof KT]: HKT.Infer; }>; } export declare function sequenceTF(F: SemimonoidalFunctor): SequenceTFn; /** * @internal */ declare type InferMixStruct = HKT.MixStruct; }>; /** * @internal */ declare type InferMixTuple = HKT.MixStruct; }>; export {}; //# sourceMappingURL=SemimonoidalFunctor.d.ts.map