import type * as HKT from './HKT' /** * `Unit` describes the `unit` function, which is a natural transformation from the identity * of the `syntactic category` of the language, in this case `void`, to a `Functor` */ export interface Unit extends HKT.Base { readonly unit: UnitFn } export type UnitMin = { readonly unit: UnitFn } export interface Unit2 { readonly unit: UnitFn2 } export interface UnitFn { < 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 >(/* void */): HKT.Kind } export interface UnitFn2 { < NF extends string = HKT.Initial, KF = HKT.Initial, QF = HKT.Initial, WF = HKT.Initial, XF = HKT.Initial, IF = HKT.Initial, SF = HKT.Initial, RF = HKT.Initial, EF = HKT.Initial, NG extends string = HKT.Initial, KG = HKT.Initial, QG = HKT.Initial, WG = HKT.Initial, XG = HKT.Initial, IG = HKT.Initial, SG = HKT.Initial, RG = HKT.Initial, EG = HKT.Initial >(/* void */): HKT.Kind< F, TCF, NF, KF, QF, WF, XF, IF, SF, RF, EF, HKT.Kind > }