export declare type Constructor = { new (...args: any[]): T; prototype: T; }; export declare type KeysOfType = { [P in keyof O]: O[P] extends T ? P : never; }; export declare type ArrayElement = A extends readonly (infer T)[] ? T : never; export declare type Values = T extends { [k: string]: infer V; } ? V : never; export declare type ReadonlyIfType = Readonly>>>> & Omit>>>>; export declare type OmitTypesFromRecord = Omit[keyof RecordType]>; export declare type CamelToKebabCase = string extends T ? string : T extends `${infer C0}${infer R}` ? `${C0 extends Lowercase ? '' : '-'}${Lowercase}${CamelToKebabCase}` : ''; export declare type CamelToKebabKeys = { [K in keyof T as CamelToKebabCase>]: T[K]; }; export declare type IfEquals = (() => T extends X ? 1 : 2) extends () => T extends Y ? 1 : 2 ? A : B; export declare type WritableKeys = { [P in keyof T]-?: IfEquals<{ [Q in P]: T[P]; }, { -readonly [Q in P]: T[P]; }, P>; }[keyof T]; export declare type ReadonlyKeys = { [P in keyof T]-?: IfEquals<{ [Q in P]: T[P]; }, { -readonly [Q in P]: T[P]; }, never, P>; }[keyof T]; //# sourceMappingURL=helper-types.d.ts.map