import type { zipCodeOption } from "../../components/profileType";
interface Pagination {
  page: number;
  rowsPerPage: number;
}

interface DataOption {
  id: string;
  name: string;
  disable?: boolean;
}

interface DataOptionLeave {
  id: string;
  name: string;
  totalLeave: number;
}

interface DataOptionInsignia {
  id: string;
  name: string;
  typeName: string;
}

interface treeTab {
  id: string;
  label: string;
  children: treeTab[];
}

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

interface OldNameOps {
  prefixOps: DataOption[];
  statusOps: DataOption[];
}

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

interface FamilyOps {
  prefixOps: DataOption[];
}

interface EduOps {
  levelOptions: DataOption[];
  positionPathOptions: DataOption[];
}

interface InsigniaOps {
  insigniaOptions: DataOptionInsignia[];
}

interface DisciplineOps {
  levelOptions: DataOption[];
}

interface OptionType {
  id: string;
  posTypeName: string;
}

interface OptionLevel {
  id: string;
  posLevelName: string;
}

interface FormSalaryNew {
  date: Date;
  posNo: string;
  templatePos: string;
  position: string;
  typePosition: string;
  levelPosition: string;
  salary: number | undefined;
  salaryPos: number | undefined;
  templateDoc: string;
  doc: string;
}

interface FormSalaryNewRef {
  date: object | null;
  posNo: object | null;
  templatePos: object | null;
  position: object | null;
  levelPosition: object | null;
  salary: object | null;
  templateDoc: object | null;
  doc: object | null;
  [key: string]: any;
}

export type {
  FormSalaryNew,
  FormSalaryNewRef,
  Pagination,
  DataOption,
  DataOptionInsignia,
  treeTab,
  InformationOps,
  OldNameOps,
  AddressOps,
  FamilyOps,
  EduOps,
  InsigniaOps,
  DisciplineOps,
  DataOptionLeave,
  OptionType,
  OptionLevel,
};
