export type AsyncOrSync = V | Promise; export type Has = { readonly [K in N]: V; }; export type Get = O extends Has ? V & {} : D; export type Lookup = O extends Has ? V & {} : O extends Partial> ? (V & {}) | undefined : D; export type Exact = T extends V ? Exclude extends never ? T : never : never; export type Values = O[keyof O]; export type KeysOfValues = Values<{ [K in keyof O]: O[K] extends never ? never : keyof O[K]; }>;