/** * **This module is experimental** * * Experimental features are published in order to get early feedback from the community, see these tracking * [issues](https://github.com/gcanti/io-ts/issues?q=label%3Av2.2+) for further discussions and enhancements. * * A feature tagged as _Experimental_ is in a high state of flux, you're at risk of it changing without notice. * * @since 2.2.3 */ import { Contravariant1 } from 'fp-ts/es6/Contravariant'; import * as E from './Encoder'; import { Schemable1 } from './Schemable'; /** * @category model * @since 2.2.3 */ export interface JsonArray extends ReadonlyArray { } /** * @category model * @since 2.2.3 */ export interface JsonRecord { readonly [key: string]: Json; } /** * @category model * @since 2.2.3 */ export declare type Json = null | string | number | boolean | JsonRecord | JsonArray; /** * @category model * @since 2.2.3 */ export interface JsonEncoder { readonly encode: (a: A) => Json; } /** * @since 2.2.3 */ export declare type TypeOf = E.TypeOf; /** * @category primitives * @since 2.2.5 */ export declare function id(): JsonEncoder; /** * @category combinators * @since 2.2.3 */ export declare const nullable: (or: JsonEncoder) => JsonEncoder; /** * @category combinators * @since 2.2.3 */ export declare const type: (properties: { [K in keyof A]: JsonEncoder; }) => JsonEncoder<{ [K in keyof A]: A[K]; }>; /** * @category combinators * @since 2.2.3 */ export declare const partial: (properties: { [K in keyof A]: JsonEncoder; }) => JsonEncoder>; /** * @category combinators * @since 2.2.3 */ export declare const record: (codomain: JsonEncoder) => JsonEncoder>; /** * @category combinators * @since 2.2.3 */ export declare const array: (items: JsonEncoder) => JsonEncoder>; /** * @category combinators * @since 2.2.3 */ export declare const tuple: >(...components: { [K in keyof A]: JsonEncoder; }) => JsonEncoder; /** * @category combinators * @since 2.2.3 */ export declare const intersect: (right: JsonEncoder) => (left: JsonEncoder) => JsonEncoder; /** * @category combinators * @since 2.2.3 */ export declare const sum: (tag: T) => (members: { [K in keyof A]: JsonEncoder; }) => JsonEncoder; /** * @category combinators * @since 2.2.3 */ export declare const lazy: (f: () => JsonEncoder) => JsonEncoder; /** * @category Contravariant * @since 2.2.3 */ export declare const contramap: (f: (b: B) => A) => (fa: JsonEncoder) => JsonEncoder; /** * @category instances * @since 2.2.3 */ export declare const URI = "io-ts/JsonEncoder"; /** * @category instances * @since 2.2.3 */ export declare type URI = typeof URI; declare module 'fp-ts/es6/HKT' { interface URItoKind { readonly [URI]: JsonEncoder; } } /** * @category instances * @since 2.2.3 */ export declare const contravariantJsonEncoder: Contravariant1; /** * @category instances * @since 2.2.3 */ export declare const schemableJsonEncoder: Schemable1;