/** * If T is 'any', returns TrueType, otherwise returns FalseType */ export declare type IfAny = 0 extends (1 & T) ? TrueType : FalseType; /** * Returns boolean of whether T is 'any' */ export declare type IsAny = IfAny; /** * Get indices for array, excluding non-array properties */ export declare type Indices = Exclude; /** * Convert tuple to indexed Object type */ export declare type IndexedTuple = T extends any[] ? { [K in Indices]: T[K]; } : never; /** * Return only keys of specific type */ export declare type KeysOfType = { [K in keyof T]: T[K] extends U ? K : never; }[keyof T]; /** * Convert Union to Intersection */ export declare type UnionToIntersection = (U extends any ? (k: U) => void : never) extends ((k: infer I) => void) ? I : never; /** * Infer 'this' type from function */ export declare type InferThis = T extends (this: infer TThis, ...args: any[]) => any ? TThis : never; /** * Single or array of T */ export declare type OneOrMore = T | T[]; /** * Make certain properties required */ export declare type RequireSome = T & Pick, K>; /** * Make certain properties partial */ export declare type PartialSome = Omit & Pick, K>; /** * Flatten multi-level array */ export declare type Flatten> = { [K in keyof T]: T[K] extends Array ? Flatten : T[K]; }; /** * Apply Partial recursively */ export declare type DeepPartial = { [P in keyof T]?: DeepPartial; }; export declare type SnakeToCamelCase = S extends `${infer T}_${infer U}` ? `${T}${Capitalize>}` : S; export declare type CamelToSnakeCase = S extends `${infer T}${infer U}` ? `${T extends Capitalize ? "_" : ""}${Lowercase}${CamelToSnakeCase}` : S;