import { $, $type, Eval, HKT, Kind, TyK, TyVar } from '@fp4ts/core'; import { Eq, Semigroup } from '@fp4ts/cats-kernel'; import { Applicative } from '../applicative'; import { Functor } from '../functor'; import { SemigroupK } from '../semigroup-k'; import { Foldable } from '../foldable'; import { Traversable } from '../traversable'; import { EqK } from '../eq-k'; import { ApplicativeError } from '../applicative-error'; import { Option } from './option'; import { Either } from './either'; import { List, NonEmptyList } from './collections'; import { Bifunctor } from '../bifunctor'; export type Validation = _Validation; declare abstract class _Validation { private readonly _E; private readonly _A; abstract readonly get: A; getOrDefault(this: Validation, defaultValue: () => B): B; abstract readonly getError: ValidationError; abstract readonly isValid: boolean; abstract readonly isInvalid: boolean; get toOption(): Option; toEither(this: Validation, S: Semigroup): Either; toEither(): Either, A>; abstract orElse(this: Validation, that: () => Validation): Validation; '<|>'(this: Validation, that: () => Validation): Validation; abstract map(g: (a: A) => B): Validation; abstract mapError(f: (e: E) => E2): Validation; bimap(f: (e: E) => E2, g: (a: A) => B): Validation; abstract map2(this: Validation, that: Validation, f: (a: A, b: B) => C): Validation; map2Eval(this: Validation, that: Eval>, f: (a: A, b: B) => C): Eval>; mapN(this: Validation, ...thats: { [k in keyof BS]: Validation; }): (f: (a: A, ...args: { [k in keyof BS]: BS[k]; }) => C) => Validation; product(this: Validation, that: Validation): Validation; abstract andThen(this: Validation, f: (a: A) => Validation): Validation; abstract fold(onFailure: (e: ValidationError) => B, onSuccess: (a: A) => C): B | C; traverse(G: Applicative): (f: (a: A) => Kind) => Kind]>; equals(this: Validation, EE: Eq>, EB: Eq): (that: Validation) => boolean; } interface ValidationObj { pure(a: A): Validation; unit(): Validation; Valid(a: A): Validation; Invalid(ve: ValidationError): Validation; fail(e: E): Validation; tailRecM(s: S): (f: (s: S) => Validation>) => Validation; fromOption(o: Option, onNone: () => E): Validation; fromEither(ea: Either): Validation; EqK(E: Eq>): EqK<$>; Functor(): Functor<$>; Bifunctor: Bifunctor; SemigroupK(): SemigroupK<$>; Applicative(): Applicative<$>; ApplicativeError(): ApplicativeError<$, ValidationError>; ApplicativeErrorConcat(E: Semigroup): ApplicativeError<$, E>; Foldable(): Foldable<$>; Traversable(): Traversable<$>; } export declare const Validation: ValidationObj; export type ValidationError = LiftValidationError | ConcatValidationError; export declare const ValidationError: ValidationErrorObj; declare abstract class _ValidationError { private readonly _E; get toNel(): NonEmptyList; get toList(): List; map(f: (e: E) => E2): ValidationError; concat(this: _ValidationError, that: ValidationError): ValidationError; '<>'(this: _ValidationError, that: ValidationError): ValidationError; foldMap(S: Semigroup): (f: (e: E) => S) => S; foldS(this: _ValidationError, S: Semigroup): E2; equals(E: Eq, that: ValidationError): boolean; } declare class LiftValidationError extends _ValidationError { readonly error: E; readonly tag = "lift"; constructor(error: E); } declare class ConcatValidationError extends _ValidationError { readonly lhs: ValidationError; readonly rhs: ValidationError; readonly tag = "concat"; constructor(lhs: ValidationError, rhs: ValidationError); } interface ValidationErrorObj { (e: E): ValidationError; Eq: { Strict: (E: Eq) => Eq>; Concat: (S: Semigroup, SE: Eq) => (f: (e: E) => S) => Eq>; }; } interface _Validation extends HKT { } /** * @category Type Constructor * @category Data */ export interface ValidationF extends TyK<[unknown, unknown]> { [$type]: Validation, TyVar>; } export {}; //# sourceMappingURL=validation.d.ts.map