1 |
|
2 |
|
3 |
|
4 | import { Kind, URIS, HKT } from 'fp-ts/es6/HKT';
|
5 |
|
6 |
|
7 |
|
8 | export declare type Literal = string | number | boolean | null;
|
9 |
|
10 |
|
11 |
|
12 | export interface Schemable<S> {
|
13 | readonly URI: S;
|
14 | readonly literal: <A extends ReadonlyArray<Literal>>(...values: A) => HKT<S, A[number]>;
|
15 | readonly string: HKT<S, string>;
|
16 | readonly number: HKT<S, number>;
|
17 | readonly boolean: HKT<S, boolean>;
|
18 | readonly nullable: <A>(or: HKT<S, A>) => HKT<S, null | A>;
|
19 | readonly type: <A>(properties: {
|
20 | [K in keyof A]: HKT<S, A[K]>;
|
21 | }) => HKT<S, {
|
22 | [K in keyof A]: A[K];
|
23 | }>;
|
24 | readonly partial: <A>(properties: {
|
25 | [K in keyof A]: HKT<S, A[K]>;
|
26 | }) => HKT<S, Partial<{
|
27 | [K in keyof A]: A[K];
|
28 | }>>;
|
29 | readonly record: <A>(codomain: HKT<S, A>) => HKT<S, Record<string, A>>;
|
30 | readonly array: <A>(items: HKT<S, A>) => HKT<S, Array<A>>;
|
31 | readonly tuple: <A extends ReadonlyArray<unknown>>(...components: {
|
32 | [K in keyof A]: HKT<S, A[K]>;
|
33 | }) => HKT<S, A>;
|
34 | readonly intersection: <A, B>(left: HKT<S, A>, right: HKT<S, B>) => HKT<S, A & B>;
|
35 | readonly sum: <T extends string>(tag: T) => <A>(members: {
|
36 | [K in keyof A]: HKT<S, A[K]>;
|
37 | }) => HKT<S, A[keyof A]>;
|
38 | readonly lazy: <A>(id: string, f: () => HKT<S, A>) => HKT<S, A>;
|
39 | }
|
40 |
|
41 |
|
42 |
|
43 | export interface Schemable1<S extends URIS> {
|
44 | readonly URI: S;
|
45 | readonly literal: <A extends ReadonlyArray<Literal>>(...values: A) => Kind<S, A[number]>;
|
46 | readonly string: Kind<S, string>;
|
47 | readonly number: Kind<S, number>;
|
48 | readonly boolean: Kind<S, boolean>;
|
49 | readonly nullable: <A>(or: Kind<S, A>) => Kind<S, null | A>;
|
50 | readonly type: <A>(properties: {
|
51 | [K in keyof A]: Kind<S, A[K]>;
|
52 | }) => Kind<S, {
|
53 | [K in keyof A]: A[K];
|
54 | }>;
|
55 | readonly partial: <A>(properties: {
|
56 | [K in keyof A]: Kind<S, A[K]>;
|
57 | }) => Kind<S, Partial<{
|
58 | [K in keyof A]: A[K];
|
59 | }>>;
|
60 | readonly record: <A>(codomain: Kind<S, A>) => Kind<S, Record<string, A>>;
|
61 | readonly array: <A>(items: Kind<S, A>) => Kind<S, Array<A>>;
|
62 | readonly tuple: <A extends ReadonlyArray<unknown>>(...components: {
|
63 | [K in keyof A]: Kind<S, A[K]>;
|
64 | }) => Kind<S, A>;
|
65 | readonly intersection: <A, B>(left: Kind<S, A>, right: Kind<S, B>) => Kind<S, A & B>;
|
66 | readonly sum: <T extends string>(tag: T) => <A>(members: {
|
67 | [K in keyof A]: Kind<S, A[K]>;
|
68 | }) => Kind<S, A[keyof A]>;
|
69 | readonly lazy: <A>(id: string, f: () => Kind<S, A>) => Kind<S, A>;
|
70 | }
|
71 |
|
72 |
|
73 |
|
74 | export interface WithUnknownContainers<S> {
|
75 | readonly UnknownArray: HKT<S, Array<unknown>>;
|
76 | readonly UnknownRecord: HKT<S, Record<string, unknown>>;
|
77 | }
|
78 |
|
79 |
|
80 |
|
81 | export interface WithUnknownContainers1<S extends URIS> {
|
82 | readonly UnknownArray: Kind<S, Array<unknown>>;
|
83 | readonly UnknownRecord: Kind<S, Record<string, unknown>>;
|
84 | }
|
85 |
|
86 |
|
87 |
|
88 | export interface WithUnion<S> {
|
89 | readonly union: <A extends ReadonlyArray<unknown>>(...members: {
|
90 | [K in keyof A]: HKT<S, A[K]>;
|
91 | }) => HKT<S, A[number]>;
|
92 | }
|
93 |
|
94 |
|
95 |
|
96 | export interface WithUnion1<S extends URIS> {
|
97 | readonly union: <A extends ReadonlyArray<unknown>>(...members: {
|
98 | [K in keyof A]: Kind<S, A[K]>;
|
99 | }) => Kind<S, A[number]>;
|
100 | }
|
101 |
|
102 |
|
103 |
|
104 | export interface WithRefinement<S> {
|
105 | readonly refinement: <A, B extends A>(from: HKT<S, A>, refinement: (a: A) => a is B, expected: string) => HKT<S, B>;
|
106 | }
|
107 |
|
108 |
|
109 |
|
110 | export interface WithRefinement1<S extends URIS> {
|
111 | readonly refinement: <A, B extends A>(from: Kind<S, A>, refinement: (a: A) => a is B, expected: string) => Kind<S, B>;
|
112 | }
|
113 |
|
114 |
|
115 |
|
116 | export declare function memoize<A, B>(f: (a: A) => B): (a: A) => B;
|