import type { ApiAssignment } from "../../../lib/api-types";

export type TeacherAssignmentSetupQuestion = {
	id: number;
	title: string;
	promptPreview: string;
	subjectLabel: string;
	difficultyLabel: string;
	sourceLabel: string;
	statusLabel: string;
};

export type TeacherAssignmentSetupData = {
	classrooms: {
		id: number;
		name: string;
		description: string;
		studentCountLabel: string;
	}[];
	questions: TeacherAssignmentSetupQuestion[];
};

export type MixedGenerationInput = {
	primaryTopic: string;
	primaryDifficulty: "easy" | "medium" | "hard";
	totalQuestions: number;
	personalizedRatio?: number;
	seed?: number;
	personalizedDifficulty?: "easy" | "medium" | "hard";
	subject?: string;
	questionStatus?: "draft" | "published" | "archived";
	questionSource?: string;
};

export type GenerateTeacherQuestionsInput = {
	topic: string;
	difficulty: "easy" | "medium" | "hard";
	count: number;
	seed?: number;
	status?: "draft" | "published" | "archived";
	source?: string;
};

export type GenerateTeacherQuestionsResult = {
	seed: number;
	count: number;
	questions: TeacherAssignmentSetupQuestion[];
	generatedQuestionIds: number[];
};

export type TeacherAssignmentsFocusStat = {
	label: string;
	value: string;
	note: string;
};

export type TeacherAssignmentsFocusItem = {
	id: number;
	title: string;
	classroomName: string;
	statusLabel: string;
	tone: "review" | "live" | "closed";
	dueLabel: string;
	queueLabel: string;
	coverageLabel: string;
	workloadLabel: string;
	note: string;
	primaryHref: string | null;
};

export type TeacherAssignmentsFocusGroup = {
	title: string;
	description: string;
	items: TeacherAssignmentsFocusItem[];
};

export type DashboardTeacherAssignmentsFocusData = {
	stats: TeacherAssignmentsFocusStat[];
	groups: TeacherAssignmentsFocusGroup[];
	coachNote: {
		title: string;
		description: string;
		ctaLabel: string;
		ctaHref: string;
	};
};

export type TeacherAssignmentTone = TeacherAssignmentsFocusItem["tone"];

export type IndividualRedoAssignment = ApiAssignment;
