// @ts-ignore - Only used in doc comments import type { Filter } from "./Filter"; // @ts-ignore - Only used in doc comments import type FilterFn from "./Filter"; import type { Args, Call1W, Fn1, GenericFn, GenericResolver, Param0 } from "../HKT"; /** * Keep elements of a union that do not satisfy a predicate. * * Sig: `(pred: (x: T) => boolean, u: UnionOf) => UnionOf` * * @see {@link Filter} for the opposite. */ export type Reject, U> = U extends U ? Call1W extends false ? U : never : never; interface Resolver extends GenericResolver<[Fn1, unknown], unknown> { on1_: ([pred]: Args) => [[Param0], Param0]; on_1: ([, u]: Args) => [[Fn1], typeof u]; on11: ([pred, u]: Args) => [[], typeof u]; } /** * [Fn] Keep elements of a union that do not satisfy a predicate. * * Sig: `(pred: (x: T) => boolean, u: UnionOf) => UnionOf` * * @see {@link FilterFn} for the opposite. */ export default interface RejectFn extends GenericFn { def: ([pred, u]: Args) => Reject; }