// Types mirror BE `AwAdminOverviewDto` (Application/ApprovalWorkflowsV2/
// ApprovalWorkflowV2AdminFeatures.cs). Chỉ subset cần cho fe-user read-only
// matrix view (Plan AA Chunk B S24).
//
// 9 Allow* flag per slot Level — Mig 29/30/31 + Mig 58 (allowApproverFinalize)
// + F6 S155 (allowApproverDelete).

export type AwLevelDto = {
  id: string
  order: number
  name: string | null
  approverUserId: string
  approverUserName: string | null
  approverEmail: string | null
  allowReturnOneLevel: boolean
  allowReturnOneStep: boolean
  allowReturnToAssignee: boolean
  allowReturnToDrafter: boolean
  allowApproverEditDetails: boolean
  allowApproverEditBudget: boolean
  allowApproverSkipToFinal: boolean
  // [Mig 58 — anh Kiệt FDC, S89] Flag thứ 8: cấp này Duyệt = KẾT THÚC quy trình (không trình tiếp CEO).
  allowApproverFinalize: boolean
  // [F6 S155] Flag thứ 9: PER-NGƯỜI (per-row) — NV slot này được XÓA phiếu khi
  // phiếu đang Chờ duyệt VÀ đúng lượt duyệt của chính họ. "Cấp" là tập row cùng
  // Order ⇒ tick 1 row KHÔNG mở quyền cho cả Cấp.
  allowApproverDelete: boolean
}

export type AwStepDto = {
  id: string
  order: number
  name: string
  departmentId: string | null
  departmentName: string | null
  levels: AwLevelDto[]
}

export type AwDefinitionDto = {
  id: string
  code: string
  version: number
  applicableType: number
  applicableTypeLabel: string
  name: string
  description: string | null
  isActive: boolean
  isUserSelectable: boolean
  activatedAt: string | null
  createdAt: string
  steps: AwStepDto[]
}

export type AwTypeSummaryDto = {
  applicableType: number
  applicableTypeLabel: string
  active: AwDefinitionDto | null
  history: AwDefinitionDto[]
}

export type AwAdminOverviewDto = {
  types: AwTypeSummaryDto[]
}
