import type { Primitive } from 'zod';
export type MaybePromise<T> = T | Promise<T>;
export type MaybeArray<T, R extends boolean = false> = T | (R extends false ? T[] : readonly T[]);
export type ValueOf<T extends object> = T[keyof T];
export type Override<T extends object, R extends Partial<T> = {}, O extends keyof T = never> = Omit<
  T,
  keyof R | O
> &
  R;
export type Nullable<T = never> = T | null | undefined;
export type StrictOmit<T, K extends keyof T> = Omit<T, K>;
export type ComparablePrimitive = Exclude<Primitive, symbol>;
