export type SourceStudent = { className: string; seatNumber: number; name: string; }; export type ClassRef = { classId: string; className: string; }; export type StudentNameFormat = "seat_number_dot_name" | "name_only"; export type RosterPreviewClass = ClassRef & { sourceClassName: string; students: string[]; missingSeatNumbers: number[]; existingStudents?: string[]; additions?: string[]; }; export type RosterPreview = { studentNameFormat: StudentNameFormat; classes: RosterPreviewClass[]; }; export interface ClassDojoAdapter { pasteStudents(input: { classId: string; students: string[]; studentNameFormat: StudentNameFormat; }): Promise; getRoster(classId: string): Promise; } export declare class ConfirmationRequiredError extends Error { constructor(); } export declare function verifyRoster(expected: string[], actual: string[]): { matches: boolean; expectedCount: number; actualCount: number; missingStudents: string[]; unexpectedStudents: string[]; }; export declare function createRosterPreview(classes: ClassRef[], sourceStudents: SourceStudent[], classMap: Record, studentNameFormat?: StudentNameFormat): RosterPreview; export declare function summarizeRosterPreview(preview: RosterPreview): { studentNameFormat: StudentNameFormat; classes: { classId: string; className: string; sourceClassName: string; expectedCount: number; existingCount: number; additionsCount: number; missingSeatNumbers: number[]; }[]; }; export type ImportClassResult = { classId: string; className: string; status: "imported"; verifiedStudents: string[]; } | { classId: string; className: string; status: "failed"; error: string; }; export declare function applyRosterImport(adapter: ClassDojoAdapter, preview: RosterPreview, confirmed: boolean): Promise<{ status: "completed" | "failed"; classes: ImportClassResult[]; verifiedClassNames: string[]; safelyRetryableClassNames: string[]; retryRequiresNewPreview: boolean; }>;