/**
 * Permission names mirror backend App\Modules\Identity\Enums\Permission.
 */
export const PERMISSIONS = {
  COMPANIES_MANAGE: 'companies.manage',
  COMPANIES_VIEW: 'companies.view',
  GLOBAL_SETTINGS_MANAGE: 'global.settings.manage',
  GLOBAL_AUDIT_VIEW: 'global.audit.view',
  COMPANY_DEPARTMENTS_MANAGE: 'company.departments.manage',
  COMPANY_USERS_MANAGE: 'company.users.manage',
  COMPANY_REPORTS_VIEW: 'company.reports.view',
  COMPANY_SETTINGS_MANAGE: 'company.settings.manage',
  COMPANY_AUDIT_VIEW: 'company.audit.view',
  DEPARTMENT_TICKETS_VIEW: 'department.tickets.view',
  DEPARTMENT_TICKETS_CREATE: 'department.tickets.create',
  DEPARTMENT_TICKETS_ASSIGN: 'department.tickets.assign',
  DEPARTMENT_TICKETS_ASSIGNABLE: 'department.tickets.assignable',
  DEPARTMENT_TICKETS_CLOSE: 'department.tickets.close',
  DEPARTMENT_TICKETS_DELETE: 'department.tickets.delete',
  DEPARTMENT_TICKETS_COLLABORATORS_VIEW: 'department.tickets.collaborators.view',
  DEPARTMENT_TICKETS_COLLABORATORS_MANAGE: 'department.tickets.collaborators.manage',
  DEPARTMENT_TICKETS_COLLABORATORS_ADD_SELF: 'department.tickets.collaborators.add_self',
  DEPARTMENT_CATEGORIES_MANAGE: 'department.categories.manage',
  DEPARTMENT_SLA_MANAGE: 'department.sla.manage',
  DEPARTMENT_USERS_VIEW: 'department.users.view',
  DEPARTMENT_USERS_MANAGE: 'department.users.manage',
  DEPARTMENT_HEADS_MANAGE: 'department.heads.manage',
  USERS_INVITE: 'users.invite',
  USERS_DEACTIVATE: 'users.deactivate',
  USERS_ROLES_MANAGE: 'users.roles.manage',
  DEPARTMENT_SETTINGS_MANAGE: 'department.settings.manage',
  DEPARTMENT_REPORTS_VIEW: 'department.reports.view',
  DEPARTMENT_AUDIT_VIEW: 'department.audit.view',
} as const;

export type PermissionName = (typeof PERMISSIONS)[keyof typeof PERMISSIONS];

export type PermissionCheck = PermissionName | PermissionName[];
