interface Pagination {
  rowsPerPage: number;
}

interface DataOption {
  id: string;
  name: string;
}
interface NewPagination {
  descending: boolean;
  page: number;
  rowsPerPage: number;
  sortBy: string;
}
interface ItemsMenu {
  label: string;
  value: string;
  icon: string;
  color: string;
}

interface DataAssignment {
  createdAt: string;
  id: string;
  including: string;
  includingName: string;
  period: string;
  year: string;
}

interface IndicatorType {
  id: string;
  createdAt: string;
  including: number;
  includingName: string;
  kpiPeriod: any;
}

interface OrgTreeNode {
  orgTreeDnaId: string;
  orgTreeId: string;
  orgRootId: string;
  orgLevel: number;
  orgName: string;
  orgTreeName: string;
  orgTreeShortName: string;
  orgTreeCode: string;
  orgCode: string;
  orgTreeRank: string;
  orgTreeRankSub: string | null;
  orgTreeOrder: number;
  orgRootCode: string;
  orgTreePhoneEx: string;
  orgTreePhoneIn: string;
  orgTreeFax: string;
  orgRevisionId: string;
  orgRootName: string;
  responsibility: string | null;
  labelName: string;
  totalPosition: number;
  totalPositionCurrentUse: number;
  totalPositionCurrentVacant: number;
  totalPositionNextUse: number;
  totalPositionNextVacant: number;
  totalRootPosition: number;
  totalRootPositionCurrentUse: number;
  totalRootPositionCurrentVacant: number;
  totalRootPositionNextUse: number;
  totalRootPositionNextVacant: number;
  children: OrgTreeNode[];
}

interface DataHistory {
  id: string;
  createdAt: Date | null;
  createdUserId: string;
  lastUpdatedAt: Date | null;
  lastUpdateUserId: string;
  createdFullName: string;
  lastUpdateFullName: string;
  kpiPlanId: string;
}

interface NodePlan {
  id: string;
  level: number;
  name: string;
  children: NodePlan[];
}

interface KpiRoleData {
  id: string;
  createdAt: Date | null;
  createdUserId: string;
  lastUpdatedAt: Date | null;
  lastUpdateUserId: string;
  createdFullName: string;
  lastUpdateFullName: string;
  kpiRoleId: string;
}

interface IndicatorTotal {
  value: string;
  label: string;
  color: string;
}
interface CompetencySumary {
  value: string;
  label: string;
  color: string;
  total?: string;
}

interface Position {
  id: string;
  name: string;
}

interface Capacity {
  id: string;
  name: string;
  type: string;
  description: string;
}

interface ListLinkGroup {
  id: string;
  groupName: string;
  groupId: string;
  positions: Position[];
  capacitys: Capacity[];
}

interface SizeType {
  width: number;
  height: number;
}

interface FormDataNodeData {
  round: string;
  nodeId: string | null;
  node: number | null;
  keyword: string;
}

export type {
  Pagination,
  DataOption,
  NewPagination,
  ItemsMenu,
  DataAssignment,
  IndicatorType,
  OrgTreeNode,
  DataHistory,
  NodePlan,
  KpiRoleData,
  IndicatorTotal,
  ListLinkGroup,
  Position,
  CompetencySumary,
  SizeType,
  FormDataNodeData
};
