import React from 'react'; type KeyOf = O extends unknown ? keyof O : never; type KeysOf = O extends unknown ? { [Key in KeyOf]: Key; }[KeyOf][] : never; type EntryOf = EntriesOf[number]; type EntriesOf = O extends unknown ? { [Key in KeyOf]: [Key, O[Key]]; }[KeyOf][] : never; type ValueOf = O extends unknown ? O[KeyOf] : never; type ValuesOf = O extends unknown ? { [Key in KeyOf]: O[Key]; }[KeyOf][] : never; type AnyFunction = (...args: any[]) => any; type Prettify = O extends any ? O extends Record ? { [K in keyof O]: O[K]; } & {} : O : never; type MaybeRef = T | React.MutableRefObject; type MaybePromise = T | Promise; type Defined = T extends undefined ? never : T; type Falsy = null | undefined | false | 0 | ''; export type { AnyFunction, Defined, EntriesOf, EntryOf, Falsy, KeyOf, KeysOf, MaybePromise, MaybeRef, Prettify, ValueOf, ValuesOf };