import type { Kind, TypeLambda } from "effect/HKT"; import type { Invariant } from "./Invariant.js"; /** * @category type class * @since 0.24.0 */ export interface Contravariant extends Invariant { readonly contramap: { (f: (b: B) => A): (self: Kind) => Kind; (self: Kind, f: (b: B) => A): Kind; }; } /** * Composing two contravariant functors yields a Covariant functor. * * Returns a default binary `map` composition. * * @since 0.24.0 */ export declare const contramapComposition: (F: Contravariant, G: Contravariant) => (self: Kind>, f: (a: A) => B) => Kind>; /** * Returns a default `imap` implementation. * * @since 0.24.0 */ export declare const imap: (contramap: (self: Kind, f: (b: B) => A) => Kind) => Invariant["imap"]; //# sourceMappingURL=Contravariant.d.ts.map