import { Converter, MaybeAsyncFunction } from "../types.js"; export interface EqualityComparer { equals(a: T, b: T): boolean; equalityComparison(): EqualityComparison; opposite(): EqualityComparer; then(equalityComparer: EqualityComparer): EqualityComparer; thenEquals(equalityComparison: EqualityComparison): EqualityComparer; thenEqualsUsing(projection: Converter, equalityComparison?: EqualityComparisonOrComparer): EqualityComparer; } export type EqualityComparison = (first: T, second: T) => boolean; export type EqualityComparisonOrComparer = EqualityComparison | EqualityComparer; export type MaybeAsyncEqualityComparison = MaybeAsyncFunction>;