export enum ServiceItemTypes {
  INCIDENT = 'INCIDENT',
  APPROVAL = 'APPROVAL',
  SUBTASK = 'SUBTASK',
}

export enum ServiceItemStatus {
  ACTIVE = 'ACTIVE',
  INACTIVE = 'INACTIVE',
  DRAFT = 'DRAFT',
}

export enum ServiceItemDesignLayout {
  LIST = 'LIST',
  GRID = 'GRID',
}

export enum CategoryIcon {
  PAYMENTS = 'PAYMENTS',
  TIMER = 'TIMER',
  CHECKROOM = 'CHECKROOM',
  BADGE = 'BADGE',
  WORK = 'WORK',
  HELP = 'HELP',
  FORUM = 'FORUM',
  BUSSINESS = 'BUSSINESS',
  SHOPPING = 'SHOPPING',
  GROUP = 'GROUP',
  DESCRIPTION = 'DESCRIPTION',
  HEALTH = 'HEALTH',
  SPA = 'SPA',
  GLOBAL = 'GLOBAL',
  PREMIUM = 'PREMIUM',
  COMMUTE = 'COMMUTE',
  HARDWARE = 'HARDWARE',
  COMPUTER = 'COMPUTER',
  HOME = 'HOME',
  MONEY = 'MONEY',
  BUS = 'BUS',
  UPDATE = 'UPDATE',
  GROCERY = 'GROCERY',
  CALENDAR = 'CALENDAR',
  HEART = 'HEART',
  LOCK = 'LOCK',
  WIFI = 'WIFI',
  SUPPORT = 'SUPPORT',
  INFO = 'INFO',
  REPAIR = 'REPAIR',
}

export enum CategoryOrderBy {
  NAME = 'NAME',
  CUSTOM_POSITION = 'CUSTOM_POSITION',
}

export type Category = {
  id: string;
  name: string;
  icon: CategoryIcon;
};

export type CoverPictureItem = {
  contentType: string;
  height: number;
  id: number;
  key: string;
  name: string;
  size: string;
  type: string;
  url: string;
  width: number;
};

export type ServiceItem = {
  id: string;
  name: string;
  description: string;
  richDescription?: string;
  automaticMessage: string;
  createdDate: string;
  category: Category;
  status: string;
  formProgressionToken: string;
  formTag: string;
  coverPictureEnabled: boolean;
  coverPicture?: CoverPictureItem;
};

export type ServiceItemTask = {
  id: string;
  name: string;
  description: string;
  formTag: string;
  csatTemplateKey?: string;
  category?: Category;
};

export type ServiceItemFilterValue = {
  id: string;
  name: string;
  formTag: string;
  automaticMessage: string;
};

export type SegmentedParams = {
  page: number;
  query?: string;
  limit?: number;
  categoryId?: string;
  includeAssigned?: boolean;
  applyCandidateAgentRule?: boolean;
  applyVisibilityRule?: boolean;
  status?: ServiceItemStatus;
  helpDeskId?: string;
};
