/** * @since 2.2.3 */ import { Invariant2 } from 'fp-ts/es6/Invariant'; import * as D from './Decoder'; import * as E from './Encoder'; import { Literal } 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 Codec extends D.Decoder, E.Encoder { } /** * @since 2.2.3 */ export declare type TypeOf = E.TypeOf; /** * @since 2.2.3 */ export declare type OutputOf = E.OutputOf; /** * @since 2.2.3 */ export declare function make(decoder: D.Decoder, encoder: E.Encoder): Codec; /** * @since 2.2.3 */ export declare function fromDecoder(decoder: D.Decoder): Codec; /** * @since 2.2.3 */ export declare function literal>(...values: A): Codec; /** * @since 2.2.3 */ export declare const string: Codec; /** * @since 2.2.3 */ export declare const number: Codec; /** * @since 2.2.3 */ export declare const boolean: Codec; /** * @since 2.2.3 */ export declare const UnknownArray: Codec, Array>; /** * @since 2.2.3 */ export declare const UnknownRecord: Codec, Record>; /** * @since 2.2.3 */ export declare function withExpected(codec: Codec, expected: (actual: unknown, e: D.DecodeError) => D.DecodeError): Codec; /** * @since 2.2.3 */ export declare function refinement(from: Codec, refinement: (a: A) => a is B, expected: string): Codec; /** * @since 2.2.3 */ export declare function nullable(or: Codec): Codec; /** * @since 2.2.3 */ export declare function type

>>(properties: P): Codec<{ [K in keyof P]: OutputOf; }, { [K in keyof P]: TypeOf; }>; /** * @since 2.2.3 */ export declare function partial

>>(properties: P): Codec; }>, Partial<{ [K in keyof P]: TypeOf; }>>; /** * @since 2.2.3 */ export declare function record(codomain: Codec): Codec, Record>; /** * @since 2.2.3 */ export declare function array(items: Codec): Codec, Array>; /** * @since 2.2.3 */ export declare function tuple>>(...components: C): Codec<{ [K in keyof C]: OutputOf; }, { [K in keyof C]: TypeOf; }>; /** * @since 2.2.3 */ export declare function intersection(left: Codec, right: Codec): Codec; /** * @since 2.2.3 */ export declare function sum(tag: T): >>(members: M) => Codec, TypeOf>; /** * @since 2.2.3 */ export declare function lazy(id: string, f: () => Codec): Codec; /** * @since 2.2.3 */ export declare const imap: (f: (a: A) => B, g: (b: B) => A) => (fa: Codec) => Codec; /** * @since 2.2.3 */ export declare const URI = "io-ts/Codec"; /** * @since 2.2.3 */ export declare type URI = typeof URI; declare module 'fp-ts/es6/HKT' { interface URItoKind2 { readonly [URI]: Codec; } } /** * @since 2.2.3 */ export declare const invariantCodec: Invariant2;