export declare const URI: unique symbol /** * @tsplus type HKT */ export interface HKT { readonly R?: unknown readonly E?: unknown readonly A?: unknown readonly type?: unknown } /** * @tsplus type HKT/Ops */ export interface HKTOps {} export const HKT: HKTOps = {} export declare namespace HKT { export interface Typeclass { readonly [URI]: F } export type Kind = F extends { readonly type: unknown } ? (F & { readonly R: R readonly E: E readonly A: A })["type"] : { readonly _F: F readonly _R: (_: R) => void readonly _E: () => E readonly _A: () => A } export type Infer = [K] extends [ Kind ] ? P extends "R" ? R : P extends "E" ? E : P extends "A" ? A : never : never export interface ComposeF extends HKT { readonly type: Kind> } } /** * @tsplus static HKT/Ops intersect */ export function intersect( ...as: As ): UnionToIntersection { const y = {} for (let i = 0; i < as.length; i++) { Object.assign(y, as[i]) } // @ts-expect-error return y } /** * @tsplus static HKT/Ops instance * @tsplus macro identity */ export function instance(a: Omit): A { return a as any }