import type { IsExact } from '../internal/types/assertion.js'; export type Without< AS extends readonly unknown[], BS extends readonly unknown[], > = number extends AS['length'] ? Array>> : RemoveTupleElementsByEquality; type KeepOnlyExact = AS extends readonly [ infer AHead, ...infer ATail, ] ? IsExact extends true ? [AHead, ...KeepOnlyExact] : KeepOnlyExact : []; type ExcludeBySequence = TS extends readonly [ infer THead, ...infer TTail, ] ? Exclude, THead> : A; type RemoveTupleElementsByEquality< AS extends readonly unknown[], TS extends readonly unknown[], > = AS extends readonly [infer AHead, ...infer ATail] ? WillBeExcluded extends true ? RemoveTupleElementsByEquality : WillBeExcluded extends false ? [AHead, ...RemoveTupleElementsByEquality] : | RemoveTupleElementsByEquality | [AHead, ...RemoveTupleElementsByEquality] : []; type WillBeExcluded = ExcludeBySequence< A, KeepOnlyExact > extends never ? true : A & TS[number] extends never ? false : boolean; /** * Returns a new array excluding all given values (using `equals` for equality comparisons). * @param array The array to get the values of. * @param values The values to exclude. * * @example * ```typescript * const arr = [1, 2, 3, 1, 2, 3, [1, 2, { b: 10 }]]; * arr.without(1, 2, [1, 2, { b: 10 }]); // => [3, 3] * ``` * * @see {@link equals} */ declare const without: < const AS extends readonly unknown[], const BS extends readonly AS[number][], >( array: AS, ...values: BS ) => Without; export default without; //# sourceMappingURL=without.d.ts.map