export const API_ENDPOINTS = {
  AUTH: {
    REQUEST_OTP: '/auth/request-otp',
    VERIFY_OTP: '/auth/verify-otp',
    REQUEST_MAGIC_LINK: '/auth/request-magic-link',
    VERIFY_MAGIC_LINK: '/auth/verify-magic-link',
    ACCEPT_INVITE: '/auth/accept-invite',
    LOGOUT: '/auth/logout',
    ME: '/auth/me',
    SESSIONS: '/auth/sessions',
    SESSION: (id: string) => `/auth/sessions/${id}`,
    SESSIONS_CURRENT: '/auth/sessions/current',
    SESSIONS_REVOKE_OTHERS: '/auth/sessions/revoke-others',
  },

  TICKETS: {
    LIST: '/tickets',
    SHOW: (id: string) => `/tickets/${id}`,
    CREATE: '/tickets',
    UPDATE: (id: string) => `/tickets/${id}`,
    DELETE: (id: string) => `/tickets/${id}`,
    ASSIGN: (id: string) => `/tickets/${id}/assign`,
    UNASSIGN: (id: string) => `/tickets/${id}/unassign`,
    COLLABORATORS: (id: string) => `/tickets/${id}/collaborators`,
    COLLABORATOR: (ticketId: string, userId: string) => `/tickets/${ticketId}/collaborators/${userId}`,
    MY_COLLABORATIONS: '/tickets/my-collaborations',
    SLA: (id: string) => `/tickets/${id}/sla`,
  },

  REPLIES: {
    LIST: (ticketId: string) => `/tickets/${ticketId}/replies`,
    CREATE: (ticketId: string) => `/tickets/${ticketId}/replies`,
    UPDATE: (ticketId: string, replyId: string) => `/tickets/${ticketId}/replies/${replyId}`,
    DELETE: (ticketId: string, replyId: string) => `/tickets/${ticketId}/replies/${replyId}`,
  },

  NOTES: {
    LIST: (ticketId: string) => `/tickets/${ticketId}/notes`,
    CREATE: (ticketId: string) => `/tickets/${ticketId}/notes`,
    UPDATE: (ticketId: string, noteId: string) => `/tickets/${ticketId}/notes/${noteId}`,
    DELETE: (ticketId: string, noteId: string) => `/tickets/${ticketId}/notes/${noteId}`,
  },

  ATTACHMENTS: {
    DELETE: (id: string) => `/attachments/${id}`,
    DOWNLOAD: (id: string) => `/attachments/${id}/download`,
  },

  DASHBOARD: {
    OVERVIEW: '/dashboard/overview',
    CONSOLIDATED: '/dashboard/consolidated',
    DEPARTMENT: '/dashboard/department',
    TICKET_TRENDS: '/dashboard/ticket-trends',
    ASSIGNEE_PERFORMANCE: '/dashboard/assignee-performance',
    AGENT_PERFORMANCE: '/dashboard/agent-performance',
    SLA_METRICS: '/dashboard/sla-metrics',
    RECENT_ACTIVITY: '/dashboard/recent-activity',
  },

  SEARCH: {
    TICKETS: '/search/tickets',
    SUGGESTIONS: '/search/suggestions',
    QUICK_MY_TICKETS: '/search/quick/my-tickets',
    QUICK_UNASSIGNED: '/search/quick/unassigned',
    QUICK_OVERDUE: '/search/quick/overdue',
    QUICK_HIGH_PRIORITY: '/search/quick/high-priority',
  },

  FILTERS: {
    LIST: '/filters',
    SHOW: (id: string) => `/filters/${id}`,
    CREATE: '/filters',
    UPDATE: (id: string) => `/filters/${id}`,
    DELETE: (id: string) => `/filters/${id}`,
    APPLY: (id: string) => `/filters/${id}/apply`,
  },

  SETTINGS: {
    LIST: '/settings',
    PUBLIC: '/settings/public',
    SHOW: (key: string) => `/settings/${key}`,
    UPDATE: (key: string) => `/settings/${key}`,
    DELETE: (key: string) => `/settings/${key}`,
    RESET: (key: string) => `/settings/${key}/reset`,
    EXPORT: '/settings/export',
    IMPORT: '/settings/import',
  },

  SETTING_DEFINITIONS: {
    LIST: '/setting-definitions',
    SHOW: (key: string) => `/setting-definitions/${key}`,
    GROUPS: '/setting-definitions/groups',
  },

  NOTIFICATIONS: {
    LIST: '/notifications',
    UNREAD_COUNT: '/notifications/unread-count',
    MARK_READ: (id: string) => `/notifications/${id}/mark-read`,
    MARK_ALL_READ: '/notifications/mark-all-read',
    DELETE: (id: string) => `/notifications/${id}`,
  },

  NOTIFICATION_PREFERENCES: {
    LIST: '/notification-preferences',
    UPDATE: '/notification-preferences',
    RESET: '/notification-preferences/reset',
  },

  AUDIT_LOGS: {
    LIST: '/audit-logs',
    SHOW: (id: string) => `/audit-logs/${id}`,
  },

  ADMIN: {
    INVITES: '/admin/invites',
    INVITE: (id: string) => `/admin/invites/${id}`,
    INVITE_RESEND: (id: string) => `/admin/invites/${id}/resend`,
  },

  COMPANIES: {
    LIST: '/companies',
    SHOW: (id: string) => `/companies/${id}`,
    CREATE: '/companies',
    UPDATE: (id: string) => `/companies/${id}`,
    DELETE: (id: string) => `/companies/${id}`,
  },

  USERS: {
    LIST: '/users',
    SHOW: (id: string) => `/users/${id}`,
    UPDATE: (id: string) => `/users/${id}`,
    DELETE: (id: string) => `/users/${id}`,
    DEPARTMENTS: (userId: string) => `/users/${userId}/departments`,
    DEPARTMENT: (userId: string, departmentId: string) =>
      `/users/${userId}/departments/${departmentId}`,
  },

  DEPARTMENTS_ADMIN: {
    LIST: '/departments',
    SHOW: (id: string) => `/departments/${id}`,
    CREATE: '/departments',
    UPDATE: (id: string) => `/departments/${id}`,
    PORTAL_SETTINGS: (id: string) => `/departments/${id}/portal-settings`,
    DELETE: (id: string) => `/departments/${id}`,
    USERS: (id: string) => `/departments/${id}/users`,
    USER: (departmentId: string, userId: string) => `/departments/${departmentId}/users/${userId}`,
    HEADS: (id: string) => `/departments/${id}/heads`,
    HEAD: (departmentId: string, userId: string) => `/departments/${departmentId}/heads/${userId}`,
  },

  CATEGORIES: {
    LIST: '/categories',
    SHOW: (id: string) => `/categories/${id}`,
    CREATE: '/categories',
    UPDATE: (id: string) => `/categories/${id}`,
    DELETE: (id: string) => `/categories/${id}`,
    SUBCATEGORIES: (categoryId: string) => `/categories/${categoryId}/subcategories`,
  },

  SUBCATEGORIES: {
    UPDATE: (id: string) => `/subcategories/${id}`,
    DELETE: (id: string) => `/subcategories/${id}`,
  },

  DEPARTMENTS: {
    ASSIGNABLE_USERS: (id: string) => `/departments/${id}/assignable-users`,
    COLLABORATOR_USERS: (id: string) => `/departments/${id}/collaborator-users`,
    AGENTS: (id: string) => `/departments/${id}/agents`,
    TICKET_FORM_OPTIONS: (id: string) => `/departments/${id}/ticket-form-options`,
  },

  DEPARTMENT_PORTAL: {
    SHOW: (slug: string) => `/department-portals/${slug}`,
    CREATE_TICKET: (slug: string) => `/department-portals/${slug}/tickets`,
    MY_TICKETS: (slug: string) => `/department-portals/${slug}/my-tickets`,
  },

  PROFILE: {
    MY_TICKETS: '/profile/my-tickets',
    AVATAR: '/profile/avatar',
  },

  SLA_POLICIES: {
    LIST: '/sla-policies',
    SHOW: (id: string) => `/sla-policies/${id}`,
    CREATE: '/sla-policies',
    UPDATE: (id: string) => `/sla-policies/${id}`,
    DELETE: (id: string) => `/sla-policies/${id}`,
  },

  ROLES: {
    LIST: '/roles',
    SHOW: (id: number) => `/roles/${id}`,
    PERMISSIONS: (id: number) => `/roles/${id}/permissions`,
  },

  PERMISSIONS: {
    LIST: '/permissions',
  },

  TICKET_STATUSES: {
    LIST: '/ticket-statuses',
    CREATE: '/ticket-statuses',
    UPDATE: (id: string) => `/ticket-statuses/${id}`,
    DELETE: (id: string) => `/ticket-statuses/${id}`,
  },

  TICKET_PRIORITIES: {
    LIST: '/ticket-priorities',
    CREATE: '/ticket-priorities',
    UPDATE: (id: string) => `/ticket-priorities/${id}`,
    DELETE: (id: string) => `/ticket-priorities/${id}`,
  },

  NOTIFICATION_TEMPLATES: {
    LIST: '/notification-templates',
    SHOW: (id: string) => `/notification-templates/${id}`,
    UPDATE: (id: string) => `/notification-templates/${id}`,
    CUSTOMIZE: (id: string) => `/notification-templates/${id}/customize`,
    RESET: (id: string) => `/notification-templates/${id}/reset`,
  },

  ONBOARDING: {
    STATUS: '/onboarding/status',
    CHECKLIST: '/onboarding/checklist',
    STEP: '/onboarding/step',
    COMPLETE: '/onboarding/complete',
    TOURS_DISMISS: '/onboarding/tours/dismiss',
  },
} as const;
