export type MaybePromise = Promise | T; export type LogMethod = (...args: any[]) => any; export interface Logger { error: LogMethod; warn?: LogMethod; warning?: LogMethod; info: LogMethod; debug: LogMethod; child: (...message: any[]) => Logger; } type ValidateSelection = U extends T ? U : never; export type PickFromUnion = ValidateSelection; export type NullablePartial = Partial> & Pick>; export type Jsonable = string | number | boolean | null | undefined | readonly Jsonable[] | { readonly [key: string]: Jsonable; } | { toJSON(): Jsonable; }; export type ReplaceInObject = { [K in keyof T]: T[K] extends infer U ? (U extends From ? Exclude | To : U) : never; }; export {};