import type { ReasonCode } from "./api-types";

export type AdminCaseStatus =
  | "draft"
  | "submitted"
  | "scoring"
  | "under_review"
  | "approved"
  | "rejected";

export interface AdminCaseSummary {
  id: string;
  financeCaseId: string;
  farmerName: string;
  phone: string;
  region?: string;
  district?: string;
  status: AdminCaseStatus;
  score: number | null;
  amountUzs: number | null;
  submittedAt: string | null;
  updatedAt: string;
  preferredInstitution?: string | null;
}

export interface AdminScoringDetail {
  score: number | null;
  eligibilityOutcome: string | null;
  reasonCodes: ReasonCode[];
  scoringMeta?: {
    modelVersion?: string;
    riskRating?: string;
    baselPd?: number;
    cbuClass?: number;
    scoringSource?: string;
    officerOverride?: {
      score: number;
      outcome?: string;
      notes?: string;
      officerId: string;
      overriddenAt: string;
    };
  };
}

export interface AdminCaseDetail extends AdminCaseSummary {
  currentStep: string;
  completedSteps: string[];
  scoring: AdminScoringDetail;
  financePurpose?: string;
  preferredInstitution?: string;
}

export type AdminPermission =
  | "cases:read"
  | "cases:review"
  | "scoring:override"
  | "cases:institution_only";

export interface AdminOfficer {
  id: string;
  email: string;
  name: string;
  role: "officer" | "supervisor" | "bank_officer";
  institutionId?: string;
  permissions: AdminPermission[];
}

export interface ScoringOverrideRequest {
  score: number;
  outcome?: "eligible" | "conditional" | "ineligible";
  notes?: string;
}
