import type { FunctorMin } from './Functor'; import type { Option } from './Option'; import type { Semigroup } from './Semigroup'; import type { These } from './These'; import { Functor } from './Functor'; import * as HKT from './HKT'; export interface Semialign extends Functor { readonly alignWith_: AlignWithFn_; readonly alignWith: AlignWithFn; readonly align_: AlignFn_; readonly align: AlignFn; readonly alignCombine_: AlignCombineFn_; readonly alignCombine: AlignCombineFn; readonly padZip_: PadZipFn_; readonly padZip: PadZipFn; readonly padZipWith_: PadZipWithFn_; readonly padZipWith: PadZipWithFn; readonly zipAll_: ZipAllFn_; readonly zipAll: ZipAllFn; } export declare type SemialignMin = ({ readonly alignWith_: AlignWithFn_; } | { readonly align_: AlignFn_; }) & FunctorMin; export declare function Semialign(F: SemialignMin): Semialign; export interface AlignFn_ { (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, These>; } export interface AlignFn { (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, These>; } export interface AlignWithFn_ { (fa: HKT.Kind, fb: HKT.Kind, HKT.Intro, HKT.Intro, HKT.Intro, HKT.Intro, HKT.Intro, HKT.Intro, HKT.Intro, HKT.Intro, B>, f: (th: These) => C): HKT.Kind, HKT.Mix, HKT.Mix, HKT.Mix, HKT.Mix, HKT.Mix, HKT.Mix, HKT.Mix, HKT.Mix, C>; } export interface AlignWithFn { (fb: HKT.Kind, f: (th: These) => 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 declare function alignWithF_(F: SemialignMin): AlignWithFn_; export interface AlignCombineFn_ { (S: Semigroup): (fa1: HKT.Kind, fa2: 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, A>; } export interface AlignCombineFn { (S: Semigroup): (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, A>; } export declare function alignCombineF_(F: SemialignMin): AlignCombineFn_; export declare function alignCombineF(F: SemialignMin): AlignCombineFn; export interface PadZipFn_ { (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, readonly [Option, Option]>; } export interface PadZipFn { (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, readonly [Option, Option]>; } export declare function padZipF_(F: SemialignMin): PadZipFn_; export declare function padZipF(F: SemialignMin): PadZipFn; export interface PadZipWithFn_ { (fa: HKT.Kind, fb: HKT.Kind, HKT.Intro, HKT.Intro, HKT.Intro, HKT.Intro, HKT.Intro, HKT.Intro, HKT.Intro, HKT.Intro, B>, f: (_: readonly [Option, Option]) => D): HKT.Kind, HKT.Mix, HKT.Mix, HKT.Mix, HKT.Mix, HKT.Mix, HKT.Mix, HKT.Mix, HKT.Mix, D>; } export interface PadZipWithFn { (fb: HKT.Kind, f: (_: readonly [Option, Option]) => D): (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, D>; } export declare function padZipWithF_(F: SemialignMin): PadZipWithFn_; export declare function padZipWithF(F: SemialignMin): PadZipWithFn; export interface ZipAllFn_ { (fa: HKT.Kind, fb: HKT.Kind, HKT.Intro, HKT.Intro, HKT.Intro, HKT.Intro, HKT.Intro, HKT.Intro, HKT.Intro, HKT.Intro, B>, a: A, b: B): HKT.Kind, HKT.Mix, HKT.Mix, HKT.Mix, HKT.Mix, HKT.Mix, HKT.Mix, HKT.Mix, HKT.Mix, readonly [A, B]>; } export interface ZipAllFn { (fb: HKT.Kind, a: A, b: B): (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, readonly [A, B]>; } export declare function zipAllF_(F: SemialignMin): ZipAllFn_; export declare function zipAllF(F: SemialignMin): ZipAllFn; //# sourceMappingURL=Semialign.d.ts.map