interface Pagination {
  rowsPerPage: number;
}

interface DataOption {
  id: string;
  name: string;
}
interface DataOption2 {
  id: number;
  name: string;
}

interface DataOptionSys {
  id: string;
  name: string;
  system: string;
}
interface DataOptionInsignia {
  id: string;
  name: string;
  typeId: string;
  typeName: string;
}

interface DataOptionEducation {
  label: string;
  value: boolean;
}

interface DataOptionEducationLevel {
  label: string;
  value: string;
}

interface zipCodeOption {
  id: string;
  name: string;
  zipCode: string;
}

interface InformationOps {
  prefixOps: DataOption[];
  rankOps: DataOption[];
  genderOps: DataOption[];
  bloodOps: DataOption[];
  statusOps: DataOption[];
  religionOps: DataOption[];
  employeeClassOps: DataOption[];
  employeeTypeOps: DataOption[];
}

interface AddressOps {
  provinceOps: DataOption[];
  districtOps: DataOption[];
  districtCOps: DataOption[];
  subdistrictOps: zipCodeOption[];
  subdistrictCOps: zipCodeOption[];
}

interface InsigniaOps {
  insigniaOptions: DataOptionInsignia[];
}

interface ItemTab {
  name: string;
  icon: string;
  label: string;
}

interface Request {
  createdAt: string;
  createdFullName: string;
  detail: string;
  fullname: string;
  id: string;
  idcard: string;
  lastUpdateFullName: string;
  lastUpdatedAt: string;
  profileId: string;
  remark: string;
  status: string;
  topic: string;
}

interface InsigniasType {
  id: string;
  createdAt: Date;
  createdUserId: string;
  lastUpdatedAt: Date;
  lastUpdateUserId: string;
  createdFullName: string;
  lastUpdateFullName: string;
  name: string;
  isActive: boolean;
  insignias: InsigniasTypeSub[];
}

interface InsigniasTypeSub {
  id: string;
  createdAt: Date;
  createdUserId: string;
  lastUpdatedAt: Date;
  lastUpdateUserId: string;
  createdFullName: string;
  lastUpdateFullName: string;
  name: string;
  shortName: string;
  level: string;
  isActive: string;
  note: string;
  insigniaTypeId: string;
}

interface ResFileData {
  downloadUrl: string;
  fileName: string;
  path: string;
  pathname: string;
}

interface DataHistory {
  [key: string]: string | number | Date | boolean;
}
export type {
  Pagination,
  DataOption,
  DataOption2,
  DataOptionInsignia,
  zipCodeOption,
  InformationOps,
  AddressOps,
  InsigniaOps,
  DataOptionSys,
  ItemTab,
  DataOptionEducation,
  DataOptionEducationLevel,
  Request,
  InsigniasType,
  InsigniasTypeSub,
  ResFileData,
  DataHistory,
};
