// common.d.ts export type TPredicate = (value: Input) => boolean; export type TPredicateAsserting = (value: unknown) => value is Kind; // New: a unique symbol brand and wrapper for “plucked” values export declare const pluckBrand: unique symbol; export type Plucked = { [pluckBrand]: T }; // Helper: is `true` present in the boolean union B? export type TAnyTrue = true extends B ? true : false; // Main recursive “contains” test (unchanged) export type TContains = T extends U ? true : T extends Array ? TContains : T extends object ? TAnyTrue<{ [K in keyof T]: TContains }[keyof T]> : false; // New: internal extractor that walks objects & arrays and pulls out any Plucked<…> export type _ExtractPlucked

= P extends Plucked ? U : P extends Array ? _ExtractPlucked : P extends object ? { [K in keyof P]: _ExtractPlucked }[keyof P] : never; // New: expose “never” if no plucked values were found export type ExtractPlucked

= [ _ExtractPlucked

] extends [ never ] ? never : _ExtractPlucked

; export type EmptyValue = | null | undefined | '' // empty string | [] // empty tuple → any array of length 0 | Record // plain object with no own keys export type FalsyValue = | false | '' | 0 | 0n | null | undefined;