export declare type Ever = [T] extends [never] ? D : V; export declare type Ever0 = [T] extends [never] ? D : T; export declare type EmptyObject = Record; export declare type AnyObject = Record; export declare type Falsy = undefined | null | false | 0 | ""; /** @see https://stackoverflow.com/a/49579497/9412937 */ export declare type RequiredKeys = { [K in keyof T]-?: ({} extends { [P in K]: T[K]; } ? never : K); }[keyof T]; export declare type BoolDict = Record; /** @see https://github.com/microsoft/TypeScript/issues/31153#issuecomment-487872268 */ export declare type KnownKeys = { [K in keyof T]: string extends K ? never : number extends K ? never : K; } extends { [_ in keyof T]: infer U; } ? U : never; export declare type OmitIndexed = Pick & keyof T>; export declare type Primitive = undefined | null | boolean | number | string | symbol | bigint; export declare type Strip = Str extends `${infer Lead}${Delimiter}${string}` ? Lead : toNever extends false ? Str : never; export declare type Cut = Str extends `${string}${Delimiter}${infer Back}` ? Back : toNever extends false ? Str : never; export declare type NoSubString = Exclude; export declare type Subest = string extends keyof Base ? Extendent : Base extends Extendent ? Extendent : Base; export declare type Extends = [T extends V ? true : never] extends [never] ? never : X; export declare type PartDeep = Exclude | Extract | (T extends any[] ? never : T extends AnyObject ? Ever, AnyObject>, { [K in keyof Extract, AnyObject>]?: PartDeep, AnyObject>[K]>; }, never> : never); export declare type KeyOf = [T] extends [never] ? never : T extends AnyObject ? Extract : never; /** @see https://stackoverflow.com/a/50375286/10325032 */ export declare type UnionToIntersection = (Union extends any ? (argument: Union) => void : never) extends (argument: infer Intersection) => void ? Intersection : never;