/** * @since 2.2.3 */ import { Invariant1 } from 'fp-ts/es6/Invariant'; import * as D from './Decoder'; import * as JE from './JsonEncoder'; import * as C from './Codec'; import { Literal, Schemable1, WithRefinement1 } from './Schemable'; /** * Laws: * * 1. `pipe(codec.decode(u), E.fold(() => u, codec.encode)) = u` for all `u` in `unknown` * 2. `codec.decode(codec.encode(a)) = E.right(a)` for all `a` in `A` * * @since 2.2.3 */ export interface JsonCodec extends C.Codec { } /** * @since 2.2.2 */ export declare type TypeOf = JE.TypeOf; /** * @since 2.2.3 */ export declare const make: (decoder: D.Decoder, encoder: JE.JsonEncoder) => JsonCodec; /** * @since 2.2.3 */ export declare const literal: >(...values: A) => JsonCodec; /** * @since 2.2.3 */ export declare const string: JsonCodec; /** * @since 2.2.3 */ export declare const number: JsonCodec; /** * @since 2.2.3 */ export declare const boolean: JsonCodec; /** * @since 2.2.3 */ export declare const withExpected: (codec: JsonCodec, expected: (actual: unknown, e: D.DecodeError) => D.DecodeError) => JsonCodec; /** * @since 2.2.3 */ export declare const refinement: (from: JsonCodec, refinement: (a: A) => a is B, expected: string) => JsonCodec; /** * @since 2.2.3 */ export declare const nullable: (or: JsonCodec) => JsonCodec; /** * @since 2.2.3 */ export declare const type: (properties: { [K in keyof A]: JsonCodec; }) => JsonCodec<{ [K in keyof A]: A[K]; }>; /** * @since 2.2.3 */ export declare const partial: (properties: { [K in keyof A]: JsonCodec; }) => JsonCodec>; /** * @since 2.2.3 */ export declare const record: (codomain: JsonCodec) => JsonCodec>; /** * @since 2.2.3 */ export declare const array: (items: JsonCodec) => JsonCodec>; /** * @since 2.2.3 */ export declare const tuple: >(...components: { [K in keyof A]: JsonCodec; }) => JsonCodec; /** * @since 2.2.3 */ export declare const intersection: (left: JsonCodec, right: JsonCodec) => JsonCodec; /** * @since 2.2.3 */ export declare const sum: (tag: T) => (members: { [K in keyof A]: JsonCodec; }) => JsonCodec; /** * @since 2.2.3 */ export declare const lazy: (id: string, f: () => JsonCodec) => JsonCodec; /** * @since 2.2.3 */ export declare const imap: (f: (a: A) => B, g: (b: B) => A) => (fa: JsonCodec) => JsonCodec; /** * @since 2.2.3 */ export declare const URI = "io-ts/JsonCodec"; /** * @since 2.2.3 */ export declare type URI = typeof URI; declare module 'fp-ts/es6/HKT' { interface URItoKind { readonly [URI]: JsonCodec; } } /** * @since 2.2.3 */ export declare const invariantJsonCodec: Invariant1; /** * @since 2.2.3 */ export declare const schemableJsonCodec: Schemable1 & WithRefinement1;