export type NumberKeys = { [K in keyof O]: number extends O[K] ? K : never }[keyof O]; export type ArrayKeys = { [K in keyof O]: P[] extends O[K] ? K : never }[keyof O]; export type Value = { [K in keyof O]: V }; export type Projection = (string & keyof O)[]; export type Omit = Pick>; export type Filter = T extends U ? T : never; export type MaybeArray = T | T[];