/**
 * @since 2.0.0
 */
import type * as Types from "./Types.js";
/**
 * @since 2.0.0
 */
export declare const URI: unique symbol;
/**
 * @since 2.0.0
 */
export interface TypeClass<F extends TypeLambda> {
    readonly [URI]?: F;
}
/**
 * @since 2.0.0
 */
export interface TypeLambda {
    readonly In: unknown;
    readonly Out2: unknown;
    readonly Out1: unknown;
    readonly Target: unknown;
}
/**
 * @since 2.0.0
 */
export type Kind<F extends TypeLambda, In, Out2, Out1, Target> = F extends {
    readonly type: unknown;
} ? (F & {
    readonly In: In;
    readonly Out2: Out2;
    readonly Out1: Out1;
    readonly Target: Target;
})["type"] : {
    readonly F: F;
    readonly In: Types.Contravariant<In>;
    readonly Out2: Types.Covariant<Out2>;
    readonly Out1: Types.Covariant<Out1>;
    readonly Target: Types.Invariant<Target>;
};
//# sourceMappingURL=HKT.d.ts.map