export type NotificationVariant = 'success' | 'info' | 'warning' | 'error';

export type NotificationPosition =
  | 'toast-top-right'
  | 'toast-bottom-right'
  | 'toast-bottom-left'
  | 'toast-top-left'
  | 'toast-top-full-width'
  | 'toast-bottom-full-width'
  | 'toast-top-center'
  | 'toast-bottom-center';

export type NotificationShowMethod = 'fade' | 'slideDown';
export type NotificationHideMethod = 'fade' | 'slideUp';

export type NotifyInput = {
  id?: string;
  title?: string;
  message: string;
  variant?: NotificationVariant;
  durationMs?: number;
};

export type NotificationsOptions = {
  position?: NotificationPosition;
  newestOnTop?: boolean;
  preventDuplicates?: boolean;
  closeButton?: boolean;
  progressBar?: boolean;
  showDurationMs?: number;
  hideDurationMs?: number;
  showMethod?: NotificationShowMethod;
  hideMethod?: NotificationHideMethod;
  /** When true, pauses auto-dismiss while hovered. */
  pauseOnHover?: boolean;
};

export type NotificationModel = Required<Pick<NotifyInput, 'message'>> &
  Required<Pick<NotificationsOptions, 'position' | 'closeButton' | 'progressBar'>> & {
    id: string;
    title?: string;
    variant: NotificationVariant;
    createdAt: number;
    durationMs: number;
  };

