export type { Tuple, ExcludeFromRecord, Constructor, Json }; type Tuple = [T, ...T[]] | []; type ExcludeFromRecord = { [P in keyof T as T[P] extends E ? never : P]: T[P]; }; type Constructor = new (...args: any) => T; type Literal = string | number | boolean | null; type Json = Literal | { [key: string]: Json; } | Json[];