/** * @since 2.0.0 */ import { HKT, Kind, Kind2, Kind3, Kind4, URIS, URIS2, URIS3, URIS4 } from './HKT.js'; /** * @category model * @since 2.0.0 */ export interface Invariant { readonly URI: F; readonly imap: (fa: HKT, f: (a: A) => B, g: (b: B) => A) => HKT; } /** * @category model * @since 2.0.0 */ export interface Invariant1 { readonly URI: F; readonly imap: (fa: Kind, f: (a: A) => B, g: (b: B) => A) => Kind; } /** * @category model * @since 2.0.0 */ export interface Invariant2 { readonly URI: F; readonly imap: (fa: Kind2, f: (a: A) => B, g: (b: B) => A) => Kind2; } /** * @category model * @since 2.0.0 */ export interface Invariant2C { readonly URI: F; readonly _E: E; readonly imap: (fa: Kind2, f: (a: A) => B, g: (b: B) => A) => Kind2; } /** * @category model * @since 2.0.0 */ export interface Invariant3 { readonly URI: F; readonly imap: (fa: Kind3, f: (a: A) => B, g: (b: B) => A) => Kind3; } /** * @category model * @since 2.4.2 */ export interface Invariant3C { readonly URI: F; readonly _E: E; readonly imap: (fa: Kind3, f: (a: A) => B, g: (b: B) => A) => Kind3; } /** * @category model * @since 2.4.2 */ export interface Invariant4 { readonly URI: F; readonly imap: (fa: Kind4, f: (a: A) => B, g: (b: B) => A) => Kind4; }