interface DetailData {
  id: string;
  typeLeave: string;
  dateStartLeave: Date | null | string;
  dateEndLeave: Date | null | string;
  numLeave: number;
  status: string;
  reason: string;
  typeLeaveId: string;
  code: string;
}

interface FormFilter {
  page: number;
  pageSize: number;
  keyword: string;
  type: string;
  posType: string;
  posLevel: string;
  retireYear: string | null;
  rangeYear: { min: number; max: number };
  isShowRetire: boolean;
  isProbation: boolean;
}

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

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

interface ResponseTotalObject {
  typeLeaveId: string;
  typeLeave: string;
  totalLeave: number;
  limitLeave: string;
  remainLeave: string;
}

interface MyObjectRef {
  typeLeave: object | null;
  dateRange: object | null;
  numLeave: object | null;
  statLeave: object | null;
  reason: object | null;
  [key: string]: any;
}

export type {
  DetailData,
  FormFilter,
  DataOptionLeave,
  DataOption,
  ResponseTotalObject,
  MyObjectRef,
};
