/** * **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.7 */ import { Alt2C } from 'fp-ts/es6/Alt'; import { Applicative2C } from 'fp-ts/es6/Applicative'; import { Apply2C } from 'fp-ts/es6/Apply'; import { Bifunctor2 } from 'fp-ts/es6/Bifunctor'; import { Functor2C } from 'fp-ts/es6/Functor'; import { Kind2, URIS2 } from 'fp-ts/es6/HKT'; import { Monad2C } from 'fp-ts/es6/Monad'; import { MonadThrow2C } from 'fp-ts/es6/MonadThrow'; import { Literal } from './Schemable'; import { Lazy, Refinement } from 'fp-ts/es6/function'; /** * @category model * @since 2.2.7 */ export interface Kleisli { readonly decode: (i: I) => Kind2; } /** * @category constructors * @since 2.2.7 */ export declare function fromRefinement(M: MonadThrow2C): (refinement: Refinement, onError: (i: I) => E) => Kleisli; /** * @category constructors * @since 2.2.7 */ export declare function literal(M: MonadThrow2C): (onError: (i: I, values: readonly [Literal, ...Array]) => E) => ]>(...values: A) => Kleisli; /** * @category combinators * @since 2.2.7 */ export declare function mapLeftWithInput(M: Bifunctor2): (f: (i: I, e: E) => E) => (decoder: Kleisli) => Kleisli; /** * @category combinators * @since 2.2.7 */ export declare function refine(M: MonadThrow2C & Bifunctor2): (refinement: (a: A) => a is B, onError: (a: A) => E) => (from: Kleisli) => Kleisli; /** * @category combinators * @since 2.2.7 */ export declare function parse(M: Monad2C): (decode: (a: A) => Kind2) => (from: Kleisli) => Kleisli; /** * @category combinators * @since 2.2.7 */ export declare function nullable(M: Applicative2C & Bifunctor2): (onError: (i: I, e: E) => E) => (or: Kleisli) => Kleisli; /** * @since 2.2.7 */ export declare type TypeOf = KD extends Kleisli ? A : never; /** * @since 2.2.7 */ export declare type InputOf = KD extends Kleisli ? I : never; /** * @category combinators * @since 2.2.7 */ export declare function type(M: Applicative2C & Bifunctor2): (onPropertyError: (key: string, e: E) => E) =>

>>(properties: P) => Kleisli; }, E, { [K in keyof P]: TypeOf; }>; /** * @category combinators * @since 2.2.7 */ export declare function partial(M: Applicative2C & Bifunctor2): (onPropertyError: (key: string, e: E) => E) =>

>>(properties: P) => Kleisli; }, E, Partial<{ [K in keyof P]: TypeOf; }>>; /** * @category combinators * @since 2.2.7 */ export declare function array(M: Applicative2C & Bifunctor2): (onItemError: (index: number, e: E) => E) => (items: Kleisli) => Kleisli, E, Array>; /** * @category combinators * @since 2.2.7 */ export declare function record(M: Applicative2C & Bifunctor2): (onKeyError: (key: string, e: E) => E) => (codomain: Kleisli) => Kleisli, E, Record>; /** * @category combinators * @since 2.2.7 */ export declare function tuple(M: Applicative2C & Bifunctor2): (onIndexError: (index: number, e: E) => E) => >>(...components: C) => Kleisli; }, E, { [K in keyof C]: TypeOf; }>; /** * @category combinators * @since 2.2.7 */ export declare function union(M: Alt2C & Bifunctor2): (onMemberError: (index: number, e: E) => E) => , ...Array>]>(...members: MS) => Kleisli, E, TypeOf>; /** * @category combinators * @since 2.2.7 */ export declare function intersect(M: Apply2C): (right: Kleisli) => (left: Kleisli) => Kleisli; /** * @category combinators * @since 2.2.7 */ export declare function sum(M: MonadThrow2C): (onTagError: (tag: string, value: unknown, tags: ReadonlyArray) => E) => (tag: T) => >>(members: MS) => Kleisli, E, TypeOf>; /** * @category combinators * @since 2.2.7 */ export declare function lazy(M: Bifunctor2): (onError: (id: string, e: E) => E) => (id: string, f: () => Kleisli) => Kleisli; /** * @category combinators * @since 2.2.7 */ export declare function compose(M: Monad2C): (ab: Kleisli) => (ia: Kleisli) => Kleisli; /** * @category combinators * @since 2.2.7 */ export declare function map(F: Functor2C): (f: (a: A) => B) => (ia: Kleisli) => Kleisli; /** * @category combinators * @since 2.2.7 */ export declare function alt(A: Alt2C): (that: Lazy>) => (me: Kleisli) => Kleisli;