import type * as A from "../Collections/Immutable/Array/index.js"; import type * as Tp from "../Collections/Immutable/Tuple/index.js"; import type * as E from "../Either/index.js"; import type { ForcedTuple } from "../Utils/index.js"; import type { Equal } from "./definition.js"; /** * Constructs an `Equal[A]` from a function. The instance will be optimized * to first compare the values for reference equality and then compare the * values for value equality. */ export declare function makeEqual(f: (x: A, y: A) => boolean): Equal; /** * Equality for `Any` values. Note that since values of type `Any` contain * no information, all values of type `Any` can be treated as equal to each * other. */ export declare const any: Equal; /** * Equality for `Nothing` values. Note that since there are not values of * type `Nothing` the `equals` method of this instance can never be called * but it can be useful in deriving instances for more complex types. */ export declare const never: Equal; /** * Constructs an `Equal[(A, B)]` given an `Equal[A]` and `Equal[B]` by first * comparing the `A` values for equality and then comparing the `B` values * for equality, if necessary. */ export declare function both(fb: Equal): (fa: Equal) => Equal>; /** * Constructs an `Equal[Either[A, B]]` given an `Equal[A]` and an * `Equal[B]`. The instance will compare the `Either[A, B]` values and if * both are `Right` or `Left` compare them for equality. */ export declare function orElseEither(fb: () => Equal): (fa: Equal) => Equal>; /** * Constructs an `Equal[B]` given an `Equal[A]` and a function `f` to * transform a `B` value into an `A` value. The instance will convert each * `B` value into an `A` and the compare the `A` values for equality. */ export declare function contramap(f: (a: B) => A): (fa: Equal) => Equal; /** * Constructs an `Equal[A]` that uses the default notion of equality * embodied in the implementation of `equals` for values of type `A`. */ export declare function strict(): Equal; /** * Equality for `number` values. */ export declare const number: Equal; /** * Equality for `string` values. */ export declare const string: Equal; /** * Equality for `symbol` values. */ export declare const symbol: Equal; /** * Equality for `boolean` values. */ export declare const boolean: Equal; /** * Equality for `Date` values. */ export declare const date: Equal; /** * Derives an `Equal[Array[A]]` given an `Equal[A]`. */ export declare function array(EqA: Equal): Equal>; /** * Given a tuple of `Equal`s returns a `Equal` for the tuple */ export declare function tuple>>(...eqs: T): Equal ? A : never; }>>; /** * Given a struct of `Equal`s returns a `Equal` for the struct */ export declare function struct>(eqs: { [K in keyof O]: Equal; }): Equal; //# sourceMappingURL=operations.d.ts.map