export type Voidable = T | void; export type Nullable = T | null; export type UnknownObject = Record; export type StringObject = Record; export type AnyObject = Record; export type AnyFunction = (...args: any[]) => any; export type AnyFn = ((...args) => any) | ((...args: any) => Promise); export type FnObject = Record; export type ModeObject = { [key in string]: | T | string | string[] | number | number[] | boolean | boolean[] | (string | number | boolean)[]; }; export type ExtendedRecordObject = Record< string, ExtendedRecordObject | string >; export type HttpMethod = | "GET" | "POST" | "PUT" | "PATCH" | "DELETE" | "OPTIONS" | "HEAD" | "TRACE"; export type UTCDate = { date: string; time: string; utc: string; }; export type KeyStringLiteralBuilder = T extends Record ? { [K in keyof T]: T[K] extends Record ? `${string & K}.${KeyStringLiteralBuilder}` : `${string & K}`; }[keyof T] : string;