/** * **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 { Contravariant2 } from 'fp-ts/es6/Contravariant' import { Category2 } from 'fp-ts/es6/Category' /** * @category model * @since 2.2.3 */ export interface Encoder { readonly encode: (a: A) => O } /** * @category combinators * @since 2.2.3 */ export declare function nullable(or: Encoder): Encoder /** * @category combinators * @since 2.2.15 */ export declare function struct

>>( properties: P ): Encoder< { [K in keyof P]: OutputOf }, { [K in keyof P]: TypeOf } > /** * Use `struct` instead. * * @category combinators * @since 2.2.3 * @deprecated */ export declare const type: typeof struct /** * @category combinators * @since 2.2.3 */ export declare function partial

>>( properties: P ): Encoder< Partial< { [K in keyof P]: OutputOf } >, Partial< { [K in keyof P]: TypeOf } > > /** * @category combinators * @since 2.2.3 */ export declare function record(codomain: Encoder): Encoder, Record> /** * @category combinators * @since 2.2.3 */ export declare function array(item: Encoder): Encoder, Array> /** * @category combinators * @since 2.2.3 */ export declare function tuple>>( ...components: C ): Encoder< { [K in keyof C]: OutputOf }, { [K in keyof C]: TypeOf } > /** * @category combinators * @since 2.2.3 */ export declare const intersect: (right: Encoder) => (left: Encoder) => Encoder /** * @category combinators * @since 2.2.3 */ export declare function sum( tag: T ): >>(members: MS) => Encoder, TypeOf> /** * @category combinators * @since 2.2.3 */ export declare function lazy(f: () => Encoder): Encoder /** * @category combinators * @since 2.2.16 */ export declare const readonly: (decoder: Encoder) => Encoder> /** * @category Contravariant * @since 2.2.3 */ export declare const contramap: (f: (b: B) => A) => (fa: Encoder) => Encoder /** * @category Semigroupoid * @since 2.2.3 */ export declare const compose: (ea: Encoder) => (ab: Encoder) => Encoder /** * @category Category * @since 2.2.3 */ export declare function id(): Encoder /** * @category instances * @since 2.2.3 */ export declare const URI = 'io-ts/Encoder' /** * @category instances * @since 2.2.3 */ export declare type URI = typeof URI declare module 'fp-ts/es6/HKT' { interface URItoKind2 { readonly [URI]: Encoder } } /** * @category instances * @since 2.2.8 */ export declare const Contravariant: Contravariant2 /** * @category instances * @since 2.2.8 */ export declare const Category: Category2 /** * @since 2.2.3 */ export declare type TypeOf = E extends Encoder ? A : never /** * @since 2.2.3 */ export declare type OutputOf = E extends Encoder ? O : never