export type NotificationCategory = 'approval' | 'expiry' | 'sync' | 'system' | 'balance' | string
export type NotificationReadStatus = 'read' | 'unread' | string

export interface NotificationItem {
  id: number | string
  title: string
  content: string
  category?: NotificationCategory | null
  type?: string | null
  severity?: string | null
  read?: boolean
  is_read?: boolean
  read_status?: NotificationReadStatus | null
  created_at?: string | null
  updated_at?: string | null
  ref_type?: string | null
  ref_id?: number | string | null
  [key: string]: unknown
}

export interface NotificationQueryParams {
  page?: number
  page_size?: number
  category?: string
  type?: string
  severity?: string
  read_status?: string
}

export interface NotificationListResponse {
  items: NotificationItem[]
  total: number
  page?: number
  page_size?: number
  size?: number
}

export interface NotificationSummary {
  items: NotificationItem[]
  categories?: Record<string, number>
  total_unread?: number
}

export interface NotificationTarget {
  available?: boolean
  route_name?: string | null
  route_path?: string | null
  route_params?: Record<string, string | number> | null
  query?: Record<string, string | number | boolean> | null
  message?: string | null
}
