/** * **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.0 */ import { Refinement } from 'fp-ts/es6/function' import * as S from './Schemable' /** * @category model * @since 2.2.8 */ export interface Guard { is: (i: I) => i is A } /** * @since 2.2.2 */ export declare type TypeOf = G extends Guard ? A : never /** * @since 2.2.8 */ export declare type InputOf = G extends Guard ? I : never /** * @category constructors * @since 2.2.0 */ export declare const literal: ( ...values: A ) => Guard /** * @category primitives * @since 2.2.0 */ export declare const string: Guard /** * Note: `NaN` is excluded. * * @category primitives * @since 2.2.0 */ export declare const number: Guard /** * @category primitives * @since 2.2.0 */ export declare const boolean: Guard /** * @category primitives * @since 2.2.0 */ export declare const UnknownArray: Guard> /** * @category primitives * @since 2.2.0 */ export declare const UnknownRecord: Guard> /** * @category combinators * @since 2.2.0 */ export declare const refine: ( refinement: Refinement ) => (from: Guard) => Guard /** * @category combinators * @since 2.2.0 */ export declare const nullable: (or: Guard) => Guard /** * @category combinators * @since 2.2.15 */ export declare const struct: ( properties: { [K in keyof A]: Guard } ) => Guard /** * Use `struct` instead. * * @category combinators * @since 2.2.0 * @deprecated */ export declare const type: ( properties: { [K in keyof A]: Guard } ) => Guard /** * @category combinators * @since 2.2.0 */ export declare const partial: ( properties: { [K in keyof A]: Guard } ) => Guard> /** * @category combinators * @since 2.2.0 */ export declare const array: (item: Guard) => Guard /** * @category combinators * @since 2.2.0 */ export declare const record: (codomain: Guard) => Guard> /** * @category combinators * @since 2.2.0 */ export declare const tuple: ( ...components: { [K in keyof A]: Guard } ) => Guard /** * @category combinators * @since 2.2.0 */ export declare const intersect: (right: Guard) => (left: Guard) => Guard /** * @category combinators * @since 2.2.0 */ export declare const union: ( ...members: { [K in keyof A]: Guard } ) => Guard /** * @category combinators * @since 2.2.0 */ export declare const sum: ( tag: T ) => (members: { [K in keyof A]: Guard> }) => Guard /** * @category combinators * @since 2.2.0 */ export declare const lazy: (f: () => Guard) => Guard /** * @category combinators * @since 2.2.15 */ export declare const readonly: (guard: Guard) => Guard> /** * @category combinators * @since 2.2.8 */ export declare const alt: (that: () => Guard) => (me: Guard) => Guard /** * @category combinators * @since 2.2.8 */ export declare const zero: () => Guard /** * @category combinators * @since 2.2.8 */ export declare const compose: (to: Guard) => (from: Guard) => Guard /** * @category combinators * @since 2.2.8 */ export declare const id: () => Guard /** * @category instances * @since 2.2.0 */ export declare const URI = 'io-ts/Guard' /** * @category instances * @since 2.2.0 */ export declare type URI = typeof URI declare module 'fp-ts/es6/HKT' { interface URItoKind { readonly [URI]: Guard } } /** * @category instances * @since 2.2.8 */ export declare const Schemable: S.Schemable1 /** * @category instances * @since 2.2.8 */ export declare const WithUnknownContainers: S.WithUnknownContainers1 /** * @category instances * @since 2.2.8 */ export declare const WithUnion: S.WithUnion1 /** * @category instances * @since 2.2.8 */ export declare const WithRefine: S.WithRefine1