/** * **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/lib/Alt' import { Applicative2C } from 'fp-ts/lib/Applicative' import { Apply2C } from 'fp-ts/lib/Apply' import { Bifunctor2 } from 'fp-ts/lib/Bifunctor' import { Functor2C } from 'fp-ts/lib/Functor' import { Kind2, URIS2 } from 'fp-ts/lib/HKT' import { Monad2C } from 'fp-ts/lib/Monad' import { MonadThrow2C } from 'fp-ts/lib/MonadThrow' import * as S from './Schemable' import { Lazy, Refinement } from 'fp-ts/lib/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 [S.Literal, ...ReadonlyArray]) => E ) => ], L extends S.Literal = S.Literal>( ...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 /** * @category combinators * @since 2.2.15 */ export declare function fromStruct( M: Applicative2C & Bifunctor2 ): ( onPropertyError: (key: string, e: E) => E ) =>

>>( properties: P ) => Kleisli< M, { [K in keyof P]: InputOf }, E, { [K in keyof P]: TypeOf } > /** * Use `fromStruct` instead. * * @category combinators * @since 2.2.7 * @deprecated */ export declare const fromType: typeof fromStruct /** * @category combinators * @since 2.2.7 */ export declare function fromPartial( M: Applicative2C & Bifunctor2 ): ( onPropertyError: (key: string, e: E) => E ) =>

>>( properties: P ) => Kleisli< M, Partial< { [K in keyof P]: InputOf } >, E, Partial< { [K in keyof P]: TypeOf } > > /** * @category combinators * @since 2.2.7 */ export declare function fromArray( M: Applicative2C & Bifunctor2 ): (onItemError: (index: number, e: E) => E) => (item: Kleisli) => Kleisli, E, Array> /** * @category combinators * @since 2.2.7 */ export declare function fromRecord( M: Applicative2C & Bifunctor2 ): ( onKeyError: (key: string, e: E) => E ) => (codomain: Kleisli) => Kleisli, E, Record> /** * @category combinators * @since 2.2.7 */ export declare function fromTuple( M: Applicative2C & Bifunctor2 ): ( onIndexError: (index: number, e: E) => E ) => >>( ...components: C ) => Kleisli< M, { [K in keyof C]: InputOf }, 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 fromSum( 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.8 */ export declare function id(M: Applicative2C): () => 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 /** * @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