UNPKG

2.58 kBTypeScriptView Raw
1/**
2 * @since 2.2.3
3 */
4import { Contravariant2 } from 'fp-ts/es6/Contravariant';
5import { Category2 } from 'fp-ts/es6/Category';
6/**
7 * @since 2.2.3
8 */
9export interface Encoder<O, A> {
10 readonly encode: (a: A) => O;
11}
12/**
13 * @since 2.2.3
14 */
15export declare type TypeOf<E> = E extends Encoder<any, infer A> ? A : never;
16/**
17 * @since 2.2.3
18 */
19export declare type OutputOf<E> = E extends Encoder<infer O, any> ? O : never;
20/**
21 * @since 2.2.3
22 */
23export declare function id<A>(): Encoder<A, A>;
24/**
25 * @since 2.2.3
26 */
27export declare function nullable<O, A>(or: Encoder<O, A>): Encoder<null | O, null | A>;
28/**
29 * @since 2.2.3
30 */
31export declare function type<P extends Record<string, Encoder<any, any>>>(properties: P): Encoder<{
32 [K in keyof P]: OutputOf<P[K]>;
33}, {
34 [K in keyof P]: TypeOf<P[K]>;
35}>;
36/**
37 * @since 2.2.3
38 */
39export declare function partial<P extends Record<string, Encoder<any, any>>>(properties: P): Encoder<Partial<{
40 [K in keyof P]: OutputOf<P[K]>;
41}>, Partial<{
42 [K in keyof P]: TypeOf<P[K]>;
43}>>;
44/**
45 * @since 2.2.3
46 */
47export declare function record<O, A>(codomain: Encoder<O, A>): Encoder<Record<string, O>, Record<string, A>>;
48/**
49 * @since 2.2.3
50 */
51export declare function array<O, A>(items: Encoder<O, A>): Encoder<Array<O>, Array<A>>;
52/**
53 * @since 2.2.3
54 */
55export declare function tuple<C extends ReadonlyArray<Encoder<any, any>>>(...components: C): Encoder<{
56 [K in keyof C]: OutputOf<C[K]>;
57}, {
58 [K in keyof C]: TypeOf<C[K]>;
59}>;
60/**
61 * @since 2.2.3
62 */
63export declare function intersection<O, A, P, B>(left: Encoder<O, A>, right: Encoder<P, B>): Encoder<O & P, A & B>;
64/**
65 * @since 2.2.3
66 */
67export declare function sum<T extends string>(tag: T): <M extends Record<string, Encoder<any, any>>>(members: M) => Encoder<OutputOf<M[keyof M]>, TypeOf<M[keyof M]>>;
68/**
69 * @since 2.2.3
70 */
71export declare function lazy<O, A>(f: () => Encoder<O, A>): Encoder<O, A>;
72/**
73 * @since 2.2.3
74 */
75export declare const contramap: <A, B>(f: (b: B) => A) => <E>(fa: Encoder<E, A>) => Encoder<E, B>;
76/**
77 * @since 2.2.3
78 */
79export declare const compose: <E, A>(ea: Encoder<E, A>) => <B>(ab: Encoder<A, B>) => Encoder<E, B>;
80/**
81 * @since 2.2.3
82 */
83export declare const URI = "io-ts/Encoder";
84/**
85 * @since 2.2.3
86 */
87export declare type URI = typeof URI;
88declare module 'fp-ts/es6/HKT' {
89 interface URItoKind2<E, A> {
90 readonly [URI]: Encoder<E, A>;
91 }
92}
93/**
94 * @since 2.2.3
95 */
96export declare const contravariantEncoder: Contravariant2<URI>;
97/**
98 * @since 2.2.3
99 */
100export declare const categoryEncoder: Category2<URI>;