/** * @since 1.0.0 */ import type { Either, Left, Right } from "@fp-ts/core/Either"; import type { LazyArg } from "@fp-ts/core/Function"; import type { Kind, TypeLambda } from "@fp-ts/core/HKT"; import * as O from "@fp-ts/core/Option"; import type { Option } from "@fp-ts/core/Option"; import type { Predicate, Refinement } from "@fp-ts/core/Predicate"; import type { NonEmptyReadonlyArray } from "@fp-ts/core/ReadonlyArray"; import * as applicative from "@fp-ts/core/typeclass/Applicative"; import * as bicovariant from "@fp-ts/core/typeclass/Bicovariant"; import * as chainable from "@fp-ts/core/typeclass/Chainable"; import * as covariant from "@fp-ts/core/typeclass/Covariant"; import type { Equivalence } from "@fp-ts/core/typeclass/Equivalence"; import * as flatMap_ from "@fp-ts/core/typeclass/FlatMap"; import type * as foldable from "@fp-ts/core/typeclass/Foldable"; import * as invariant from "@fp-ts/core/typeclass/Invariant"; import type * as monad from "@fp-ts/core/typeclass/Monad"; import type { Monoid } from "@fp-ts/core/typeclass/Monoid"; import * as of_ from "@fp-ts/core/typeclass/Of"; import type * as pointed from "@fp-ts/core/typeclass/Pointed"; import * as product_ from "@fp-ts/core/typeclass/Product"; import type * as semiAlternative from "@fp-ts/core/typeclass/SemiAlternative"; import * as semiApplicative from "@fp-ts/core/typeclass/SemiApplicative"; import * as semiCoproduct from "@fp-ts/core/typeclass/SemiCoproduct"; import type { Semigroup } from "@fp-ts/core/typeclass/Semigroup"; import * as semiProduct from "@fp-ts/core/typeclass/SemiProduct"; import * as traversable from "@fp-ts/core/typeclass/Traversable"; /** * @category model * @since 1.0.0 */ export interface Both { readonly _tag: "Both"; readonly left: E; readonly right: A; } /** * @category model * @since 1.0.0 */ export type These = Either | Both; /** * @category model * @since 1.0.0 */ export type Validated = These, A>; /** * @category type lambdas * @since 1.0.0 */ export interface TheseTypeLambda extends TypeLambda { readonly type: These; } /** * @category type lambdas * @since 3.0.0 */ export interface ValidatedTypeLambda extends TypeLambda { readonly type: Validated; } /** * @category constructors * @since 1.0.0 */ export declare const left: (left: E) => These; /** * @category constructors * @since 1.0.0 */ export declare const right: (right: A) => These; /** * Alias of {@link right}. * * @category constructors * @since 1.0.0 */ export declare const of: (right: A) => These; /** * @category constructors * @since 1.0.0 */ export declare const both: (left: E, right: A) => These; /** * @category constructors * @since 1.0.0 */ export declare const leftOrBoth: { (onSome: LazyArg): (self: Option) => These; (self: Option, onSome: LazyArg): These; }; /** * @category constructors * @since 1.0.0 */ export declare const rightOrBoth: { (onNone: LazyArg): (self: Option) => These; (self: Option, onNone: LazyArg): These; }; /** * @category constructors * @since 1.0.0 */ export declare const fail: (e: E) => Validated; /** * @category constructors * @since 1.0.0 */ export declare const warn: (e: E, a: A) => Validated; /** * @category equivalence * @since 1.0.0 */ export declare const getEquivalence: (EE: Equivalence, EA: Equivalence) => Equivalence>; /** * @category pattern matching * @since 1.0.0 */ export declare const match: { (onLeft: (e: E) => B, onRight: (a: A) => C, onBoth: (e: E, a: A) => D): (self: These) => B | C | D; (self: These, onLeft: (e: E) => B, onRight: (a: A) => C, onBoth: (e: E, a: A) => D): B | C | D; }; /** * @since 1.0.0 */ export declare const reverse: (self: These) => These; /** * Tests if a value is a `These`. * * @param input - The value to check. * * @category guards * @since 1.0.0 */ export declare const isThese: (input: unknown) => input is These; /** * Determine if a `These` is a `Left`. * * @param self - The `These` to check. * * @example * import { isLeft, left, right, both } from '@fp-ts/core/These' * * assert.deepStrictEqual(isLeft(right(1)), false) * assert.deepStrictEqual(isLeft(left("error")), true) * assert.deepStrictEqual(isLeft(both("error", 1)), false) * * @category guards * @since 1.0.0 */ export declare const isLeft: (self: These) => self is Left; /** * Determine if a `These` is a `Left` or a `Both`. * * @param self - The `These` to check. * * @example * import { isLeftOrBoth, left, right, both } from '@fp-ts/core/These' * * assert.deepStrictEqual(isLeftOrBoth(right(1)), false) * assert.deepStrictEqual(isLeftOrBoth(left("error")), true) * assert.deepStrictEqual(isLeftOrBoth(both("error", 1)), true) * * @category guards * @since 1.0.0 */ export declare const isLeftOrBoth: (self: These) => self is Left | Both; /** * Determine if a `These` is a `Right`. * * @param self - The `These` to check. * * @example * import { isRight, left, right, both } from '@fp-ts/core/These' * * assert.deepStrictEqual(isRight(right(1)), true) * assert.deepStrictEqual(isRight(left("error")), false) * assert.deepStrictEqual(isRight(both("error", 1)), false) * * @category guards * @since 1.0.0 */ export declare const isRight: (self: These) => self is Right; /** * Determine if a `These` is a `Right` or a `Both`. * * @param self - The `These` to check. * * @example * import { isRightOrBoth, left, right, both } from '@fp-ts/core/These' * * assert.deepStrictEqual(isRightOrBoth(right(1)), true) * assert.deepStrictEqual(isRightOrBoth(left("error")), false) * assert.deepStrictEqual(isRightOrBoth(both("error", 1)), true) * * @category guards * @since 1.0.0 */ export declare const isRightOrBoth: (self: These) => self is Right | Both; /** * Determine if a `These` is a `Both`. * * @param self - The `These` to check. * * @example * import { isBoth, left, right, both } from '@fp-ts/core/These' * * assert.deepStrictEqual(isBoth(right(1)), false) * assert.deepStrictEqual(isBoth(left("error")), false) * assert.deepStrictEqual(isBoth(both("error", 1)), true) * * @category guards * @since 1.0.0 */ export declare const isBoth: (self: These) => self is Both; /** * Lifts a function that may throw to one returning a `These`. * * @category interop * @since 1.0.0 */ export declare const liftThrowable: , B, E>(f: (...a: A) => B, onThrow: (error: unknown) => E) => ((...a: A) => These); /** * Extracts the value of a `These` or throws if the `These` is `Left`. * * If a default error is sufficient for your use case and you don't need to configure the thrown error, see {@link getOrThrow}. * * @param self - The `These` to extract the value from. * @param onLeft - A function that will be called if the `These` is `Left`. It returns the error to be thrown. * * @example * import * as E from "@fp-ts/core/These" * * assert.deepStrictEqual( * E.getOrThrowWith(E.right(1), () => new Error('Unexpected Left')), * 1 * ) * assert.deepStrictEqual( * E.getOrThrowWith(E.both("warning", 1), () => new Error('Unexpected Left')), * 1 * ) * assert.throws(() => E.getOrThrowWith(E.left("error"), () => new Error('Unexpected Left'))) * * @category interop * @since 1.0.0 */ export declare const getOrThrowWith: { (onLeft: (e: E) => unknown): (self: These) => A; (self: These, onLeft: (e: E) => unknown): A; }; /** * Extracts the value of a `These` or throws if the `These` is `Left`. * * The thrown error is a default error. To configure the error thrown, see {@link getOrThrowWith}. * * @param self - The `These` to extract the value from. * @throws `Error("getOrThrow called on a Left")` * * @example * import * as T from "@fp-ts/core/These" * * assert.deepStrictEqual(T.getOrThrow(T.right(1)), 1) * assert.deepStrictEqual(T.getOrThrow(T.both("warning", 1)), 1) * assert.throws(() => T.getOrThrow(T.left("error"))) * * @category interop * @since 1.0.0 */ export declare const getOrThrow: (self: These) => A; /** * Extracts the value of a `These` or throws if the `These` is `Left`. * * If a default error is sufficient for your use case and you don't need to configure the thrown error, see {@link getOrThrow}. * * @param self - The `These` to extract the value from. * @param onLeft - A function that will be called if the `These` is `Left`. It returns the error to be thrown. * * @example * import * as E from "@fp-ts/core/These" * * assert.deepStrictEqual( * E.getRightOnlyOrThrowWith( * E.right(1), * () => new Error("Unexpected Left or Both") * ), * 1 * ) * assert.throws(() => E.getRightOnlyOrThrowWith(E.both("warning", 1), () => new Error("Unexpected Left or Both"))) * assert.throws(() => E.getRightOnlyOrThrowWith(E.left("error"), () => new Error("Unexpected Left or Both"))) * * @category interop * @since 1.0.0 */ export declare const getRightOnlyOrThrowWith: { (onLeftOrBoth: (e: E) => unknown): (self: These) => A; (self: These, onLeftOrBoth: (e: E) => unknown): A; }; /** * Extracts the value of a `These` or throws if the `These` is not a `Right`. * * The thrown error is a default error. To configure the error thrown, see {@link getRightOnlyOrThrowWith}. * * @param self - The `These` to extract the value from. * @throws `Error("getOrThrow called on a Left")` * * @example * import * as T from "@fp-ts/core/These" * * assert.deepStrictEqual(T.getRightOnlyOrThrow(T.right(1)), 1) * assert.throws(() => T.getRightOnlyOrThrow(T.both("error", 1))) * assert.throws(() => T.getRightOnlyOrThrow(T.left("error"))) * * @category interop * @since 1.0.0 */ export declare const getRightOnlyOrThrow: (self: These) => A; /** * @category conversions * @since 1.0.0 */ export declare const fromNullable: { (onNullable: LazyArg): (a: A) => These>; (a: A, onNullable: LazyArg): These>; }; /** * @category conversions * @since 1.0.0 */ export declare const fromEither: (self: Either) => Validated; /** * @category conversions * @since 1.0.0 */ export declare const toEither: { (onBoth: (e: E, a: A) => Either): (self: These) => Either; (self: These, onBoth: (e: E, a: A) => Either): Either; }; /** * @category conversions * @since 1.0.0 */ export declare const absolve: (self: These) => Either; /** * @category conversions * @since 1.0.0 */ export declare const condemn: (self: These) => Either; /** * @category lifting * @since 1.0.0 */ export declare const liftNullable: (f: (...a: A) => B | null | undefined, onNullable: (...a: A) => E) => (...a: A) => These>; /** * @category sequencing * @since 1.0.0 */ export declare const flatMapNullable: { (f: (a: A) => B | null | undefined, onNullable: (a: A) => E2): (self: Validated) => Validated>; (self: Validated, f: (a: A) => B | null | undefined, onNullable: (a: A) => E2): Validated>; }; /** * @category lifting * @since 1.0.0 */ export declare const liftPredicate: { (refinement: Refinement, onFalse: (c: C) => E): (c: C) => These; (predicate: Predicate, onFalse: (b: B) => E): (b: B) => These; }; /** * @category conversions * @since 1.0.0 */ export declare const fromIterable: { (onEmpty: LazyArg): (collection: Iterable) => These; (collection: Iterable, onEmpty: LazyArg): These; }; /** * @category conversions * @since 1.0.0 */ export declare const fromOption: { (onNone: LazyArg): (self: Option) => These; (self: Option, onNone: LazyArg): These; }; /** * @category conversions * @since 1.0.0 */ export declare const fromTuple: (self: readonly [E, A]) => These; /** * @category lifting * @since 1.0.0 */ export declare const liftOption: (f: (...a: A) => O.Option, onNone: (...a: A) => E) => (...a: A) => These; /** * @category lifting * @since 1.0.0 */ export declare const liftEither: (f: (...a: A) => Either) => (...a: A) => Validated; /** * @category lifting * @since 1.0.0 */ export declare const liftThese: (f: (...a: A) => These) => (...a: A) => Validated; /** * @category sequencing * @since 1.0.0 */ export declare const flatMapOption: { (f: (a: A) => Option, onNone: (a: A) => E2): (self: Validated) => Validated; (self: Validated, f: (a: A) => Option, onNone: (a: A) => E2): Validated; }; /** * @category sequencing * @since 1.0.0 */ export declare const flatMapEither: { (f: (a: A) => Either): (self: Validated) => Validated; (self: Validated, f: (a: A) => Either): Validated; }; /** * @category sequencing * @since 1.0.0 */ export declare const flatMapThese: { (f: (a: A) => These): (self: Validated) => Validated; (self: Validated, f: (a: A) => These): Validated; }; /** * Converts a `These` to an `Option` discarding the error (`Both` included). * * @category getters * @since 1.0.0 */ export declare const getRight: (self: These) => O.Option; /** * Returns the value if and only if the value is a `Right` (i.e. `Both` is excluded). * * @category getters * @since 1.0.0 */ export declare const getRightOnly: (self: These) => O.Option; /** * Converts a `These` to an `Option` discarding the value (`Both` included). * * @category getters * @since 1.0.0 */ export declare const getLeft: (self: These) => O.Option; /** * Returns the error if and only if the value is a `Left` (i.e. `Both` is excluded). * * @category getters * @since 1.0.0 */ export declare const getLeftOnly: (self: These) => O.Option; /** * @category getters * @since 1.0.0 */ export declare const getBoth: (self: These) => O.Option; /** * @category getters * @since 1.0.0 */ export declare const getBothOrElse: { (e: LazyArg, a: LazyArg): (self: These) => [E, A]; (self: These, e: LazyArg, a: LazyArg): [E, A]; }; /** * @category getters * @since 1.0.0 */ export declare const getOrElse: { (onLeft: LazyArg): (self: These) => A | B; (self: These, onLeft: LazyArg): A | B; }; /** * @category getters * @since 1.0.0 */ export declare const getOrNull: (self: These) => A | null; /** * @category getters * @since 1.0.0 */ export declare const getOrUndefined: (self: These) => A | undefined; /** * @category debugging * @since 1.0.0 */ export declare const inspectRight: { (onRight: (a: A) => void): (self: These) => These; (self: These, onRight: (a: A) => void): These; }; /** * @category debugging * @since 1.0.0 */ export declare const inspectRightOrBoth: { (onRightOrBoth: (a: A) => void): (self: These) => These; (self: These, onRightOrBoth: (a: A) => void): These; }; /** * @category debugging * @since 1.0.0 */ export declare const inspectLeft: { (onLeft: (e: E) => void): (self: These) => These; (self: These, onLeft: (e: E) => void): These; }; /** * @category debugging * @since 1.0.0 */ export declare const inspectBoth: { (onBoth: (e: E, a: A) => void): (self: These) => These; (self: These, onBoth: (e: E, a: A) => void): These; }; /** * @category mapping * @since 1.0.0 */ export declare const bimap: { (f: (e: E1) => E2, g: (a: A) => B): (self: These) => These; (self: These, f: (e: E1) => E2, g: (a: A) => B): These; }; /** * @category instances * @since 1.0.0 */ export declare const Bicovariant: bicovariant.Bicovariant; /** * Maps the `Left` side of an `These` value to a new `These` value. * * @param self - The input `These` value to map. * @param f - A transformation function to apply to the `Left` value of the input `These`. * * @category error handling * @since 1.0.0 */ export declare const mapLeft: { (f: (e: E) => G): (self: These) => These; (self: These, f: (e: E) => G): These; }; /** * @category conversions * @since 1.0.0 */ export declare const toValidated: (self: These) => Validated; /** * Maps the `Right` side of an `These` value to a new `These` value. * * @param self - An `These` to map * @param f - The function to map over the value of the `These` * * @category mapping * @since 1.0.0 */ export declare const map: { (self: These, f: (a: A) => B): These; (f: (a: A) => B): (self: These) => These; }; /** * @category instances * @since 1.0.0 */ export declare const Covariant: covariant.Covariant; /** * @category instances * @since 1.0.0 */ export declare const Invariant: invariant.Invariant; /** * @category mapping * @since 1.0.0 */ export declare const tupled: (self: These) => These; /** * @category mapping * @since 1.0.0 */ export declare const flap: { (a: A, self: These B>): These; (self: These B>): (a: A) => These; }; /** * Maps the right value of this effect to the specified constant value. * * @category mapping * @since 1.0.0 */ export declare const as: { (self: These, b: B): These; (b: B): (self: These) => These; }; /** * Returns the effect resulting from mapping the right of this effect to unit. * * @category mapping * @since 1.0.0 */ export declare const asUnit: (self: These) => These; /** * @category instances * @since 1.0.0 */ export declare const Of: of_.Of; /** * @since 1.0.0 */ export declare const unit: These; /** * @category instances * @since 1.0.0 */ export declare const Pointed: pointed.Pointed; /** * @category traversing * @since 1.0.0 */ export declare const traverse: (F: applicative.Applicative) => { (f: (a: A) => Kind): (self: These) => Kind>; (self: These, f: (a: A_1) => Kind): Kind>; }; /** * @category instances * @since 1.0.0 */ export declare const Traversable: traversable.Traversable; /** * @category traversing * @since 1.0.0 */ export declare const sequence: (F: applicative.Applicative) => (self: These>) => Kind>; /** * @category traversing * @since 1.0.0 */ export declare const traverseTap: (F: applicative.Applicative) => { (self: These, f: (a: A) => Kind): Kind>; (f: (a: A) => Kind): (self: These) => Kind>; }; /** * Returns a function that checks if a `These` contains a given value using a provided `equivalence` function. * * @since 1.0.0 */ export declare const contains: (isEquivalent: (self: A, that: A) => boolean) => { (a: A): (self: These) => boolean; (self: These, a: A): boolean; }; /** * @category predicates * @since 1.0.0 */ export declare const exists: { (predicate: Predicate): (self: These) => boolean; (self: These, predicate: Predicate): boolean; }; /** * @category instances * @since 1.0.0 */ export declare const Foldable: foldable.Foldable; /** * Executes this effect and returns its value, if it succeeds, but otherwise * executes the specified effect. * * @category error handling * @since 1.0.0 */ export declare const orElse: { (that: (e1: E1) => These): (self: These) => These; (self: These, that: (e1: E1) => These): These; }; /** * Returns an effect that will produce the value of this effect, unless it * fails, in which case, it will produce the value of the specified effect. * * @category error handling * @since 1.0.0 */ export declare const orElseEither: { (that: (e1: E1) => These): (self: These) => These>; (self: These, that: (e1: E1) => These): These>; }; /** * Executes this effect and returns its value, if it succeeds, but otherwise * fails with the specified error. * * @category error handling * @since 1.0.0 */ export declare const orElseFail: { (onLeft: LazyArg): (self: These) => These; (self: These, onLeft: LazyArg): These; }; /** * @category error handling * @since 1.0.0 */ export declare const firstRightOrBothOf: { (collection: Iterable>): (self: These) => These; (self: These, collection: Iterable>): These; }; /** * @category instances * @since 1.0.0 */ export declare const SemiCoproduct: semiCoproduct.SemiCoproduct; /** * @category combining * @since 1.0.0 */ export declare const getFirstRightOrBothSemigroup: () => Semigroup>; /** * @category instances * @since 1.0.0 */ export declare const SemiAlternative: semiAlternative.SemiAlternative; /** * @category filtering * @since 1.0.0 */ export declare const filter: { (refinement: Refinement, onFalse: LazyArg): (self: These) => These; (predicate: Predicate, onFalse: LazyArg): (self: These) => These; (self: These, refinement: Refinement, onFalse: LazyArg): These; (self: These, predicate: Predicate, onFalse: LazyArg): These; }; /** * @category filtering * @since 1.0.0 */ export declare const filterMap: { (f: (a: A) => Option, onNone: LazyArg): (self: These) => These; (self: These, f: (a: A) => Option, onNone: LazyArg): These; }; /** * @category filtering * @since 1.0.0 */ export declare const compact: { (onNone: LazyArg): (self: These>) => These; (self: These>, onNone: LazyArg): These; }; /** * @category instances * @since 1.0.0 */ export declare const SemiProduct: semiProduct.SemiProduct; /** * @category instances * @since 1.0.0 */ export declare const SemiApplicative: semiApplicative.SemiApplicative; /** * Lifts a binary function into `These`. * * @param f - The function to lift. * * @category lifting * @since 1.0.0 */ export declare const lift2: (f: (a: A, b: B) => C) => { (self: Validated, that: Validated): Validated; (that: Validated): (self: Validated) => Validated; }; /** * @category combining * @since 1.0.0 */ export declare const zipWith: { (self: Validated, that: Validated, f: (a: A, b: B) => C): Validated; (that: Validated, f: (a: A, b: B) => C): (self: Validated) => Validated; }; /** * @since 1.0.0 */ export declare const ap: { (self: Validated B>, that: Validated): Validated; (that: Validated): (self: Validated B>) => Validated; }; /** * @category combining * @since 1.0.0 */ export declare const getFirstLeftSemigroup: (S: Semigroup) => Semigroup>; /** * Appends an element to the end of a tuple. * * @since 1.0.0 */ export declare const appendElement: { , E2, B>(self: Validated, that: Validated): Validated; (that: Validated): >(self: Validated) => Validated; }; /** * @category instances * @since 1.0.0 */ export declare const Product: product_.Product; /** * @since 1.0.0 */ export declare const tuple: >>(...tuple: T) => Validated<[ T[number] ] extends [Validated] ? E : never, { [I in keyof T]: [T[I]] extends [Validated] ? A : never; }>; /** * @since 1.0.0 */ export declare const struct: >>(r: R) => Validated<[ R[keyof R] ] extends [Validated] ? E : never, { [K in keyof R]: [R[K]] extends [Validated] ? A : never; }>; /** * @category sequencing * @since 1.0.0 */ export declare const flatMap: { (f: (a: A) => Validated): (self: Validated) => Validated; (self: Validated, f: (a: A) => Validated): Validated; }; /** * @category instances * @since 1.0.0 */ export declare const Applicative: applicative.Applicative; /** * @category combining * @since 1.0.0 */ export declare const getFirstLeftMonoid: (M: Monoid) => Monoid>; /** * @category instances * @since 1.0.0 */ export declare const FlatMap: flatMap_.FlatMap; /** * @since 1.0.0 */ export declare const flatten: (self: Validated>) => Validated; /** * @since 1.0.0 */ export declare const andThen: { (self: Validated, that: Validated): Validated; (that: Validated): (self: Validated) => Validated; }; /** * @since 1.0.0 */ export declare const composeKleisliArrow: { (afb: (a: A) => Validated, bfc: (b: B) => Validated): (a: A) => Validated; (bfc: (b: B) => Validated): (afb: (a: A) => Validated) => (a: A) => Validated; }; /** * @category instances * @since 1.0.0 */ export declare const Chainable: chainable.Chainable; /** * Sequences the specified effect after this effect, but ignores the value * produced by the effect. * * @category sequencing * @since 1.0.0 */ export declare const andThenDiscard: { (self: Validated, that: Validated): Validated; (that: Validated): (self: Validated) => Validated; }; /** * Returns an effect that effectfully "peeks" at the success of this effect. * * @category combinators * @since 1.0.0 */ export declare const tap: { (self: Validated, f: (a: A) => Validated): Validated; (f: (a: A) => Validated): (self: Validated) => Validated; }; /** * @category instances * @since 1.0.0 */ export declare const Monad: monad.Monad; /** * @category algebraic operations * @since 1.0.0 */ export declare const sum: { (self: Validated, that: Validated): Validated; (that: Validated): (self: Validated) => Validated; }; /** * @category algebraic operations * @since 1.0.0 */ export declare const multiply: { (self: Validated, that: Validated): Validated; (that: Validated): (self: Validated) => Validated; }; /** * @category algebraic operations * @since 1.0.0 */ export declare const subtract: { (self: Validated, that: Validated): Validated; (that: Validated): (self: Validated) => Validated; }; /** * @category algebraic operations * @since 1.0.0 */ export declare const divide: { (self: Validated, that: Validated): Validated; (that: Validated): (self: Validated) => Validated; }; /** * @category do notation * @since 1.0.0 */ export declare const bindTo: { (name: N): (self: These) => These; (self: These, name: N): These; }; declare const let_: { (name: Exclude, f: (a: A) => B): (self: These) => These; (self: These, name: Exclude, f: (a: A) => B): These; }; export { /** * @category do notation * @since 1.0.0 */ let_ as let }; /** * @category do notation * @since 1.0.0 */ export declare const Do: These; /** * @category do notation * @since 1.0.0 */ export declare const bind: { (name: Exclude, f: (a: A) => Validated): (self: Validated) => Validated; (self: Validated, name: Exclude, f: (a: A) => Validated): Validated; }; /** * @category do notation * @since 1.0.0 */ export declare const bindEither: { (name: Exclude, f: (a: A) => Either): (self: Validated) => Validated; (self: Validated, name: Exclude, f: (a: A) => Either): Validated; }; /** * @category do notation * @since 1.0.0 */ export declare const bindThese: { (name: Exclude, f: (a: A) => These): (self: Validated) => Validated; (self: Validated, name: Exclude, f: (a: A) => These): Validated; }; /** * @category do notation * @since 1.0.0 */ export declare const andThenBind: { (name: Exclude, that: Validated): (self: Validated) => Validated; (self: Validated, name: Exclude, that: Validated): Validated; }; //# sourceMappingURL=These.d.ts.map