import type * as HKT from './HKT' export interface Semigroupoid extends HKT.Base { readonly compose_: ComposeFn_ readonly compose: ComposeFn } export interface ComposeFn { (bc: HKT.Kind): < A, N extends string, K, Q, W, X, S, R, E >( ab: HKT.Kind< F, TC, HKT.Intro, HKT.Intro, HKT.Intro, HKT.Intro, HKT.Intro, A, HKT.Intro, HKT.Intro, HKT.Intro, B > ) => HKT.Kind< F, TC, HKT.Mix, HKT.Mix, HKT.Mix, HKT.Mix, HKT.Mix, A, HKT.Mix, HKT.Mix, HKT.Mix, C > } export interface ComposeFn_ { ( ab: HKT.Kind, bc: HKT.Kind< F, TC, HKT.Intro, HKT.Intro, HKT.Intro, HKT.Intro, HKT.Intro, B, HKT.Intro, HKT.Intro, HKT.Intro, C > ): HKT.Kind< F, TC, HKT.Mix, HKT.Mix, HKT.Mix, HKT.Mix, HKT.Mix, A, HKT.Mix, HKT.Mix, HKT.Mix, C > }