import type * as HKT from "@principia/prelude/HKT"; import type * as E from "../Either"; import type * as K from "../KleisliDecoder"; import type { DecodeError } from "./decode-error"; export interface Decoder extends K.KleisliDecoder<[E.URI], C, I, DecodeError, A> { readonly _meta: { readonly name: string; }; } export type C = E.V & HKT.Fix<"E", DecodeError>; export type InputOf = K.InputOf<[E.URI], D>; export type TypeOf = K.TypeOf<[E.URI], D>; export const URI = "Decoder"; export type URI = typeof URI; export type V = HKT.V<"E", "+">; declare module "@principia/prelude/HKT" { interface URItoKind { readonly [URI]: Decoder; } interface URItoKind2 { readonly [URI]: Decoder; } }