import { PagedAndSortedResultRequestDto } from '../abp' export type RoleState = 'role-selection' | 'dashboard' | 'classroom' export type Role = 'teacher' | 'student' | 'observer' export type MessageType = 'public' | 'private' | 'announcement' export type VideoLayoutType = 'grid' | 'sidebar' | 'teacher-focus' export interface User { id: string name: string email: string role: Role } export interface ClassroomDto { id: string name: string description?: string subject?: string teacherId: string teacherName: string scheduledStartTime: string scheduledEndTime: string duration?: number actualStartTime?: string actualEndTime?: string maxParticipants?: number participantCount: number settingsDto?: ClassroomSettingsDto } export interface ClassroomSettingsDto { allowHandRaise: boolean allowStudentChat: boolean allowPrivateMessages: boolean allowStudentScreenShare: boolean defaultMicrophoneState: 'muted' | 'unmuted' defaultCameraState: 'on' | 'off' defaultLayout: string autoMuteNewParticipants: boolean } export interface ClassroomAttendanceDto { id: string sessionId: string studentId: string studentName: string joinTime: string leaveTime?: string totalDurationMinutes: number } export interface ClassroomParticipantDto { id: string name: string isTeacher: boolean isObserver?: boolean isAudioMuted?: boolean isVideoMuted?: boolean isHandRaised?: boolean isActive?: boolean stream?: MediaStream screenStream?: MediaStream isScreenSharing?: boolean peerConnection?: RTCPeerConnection } export interface ClassroomChatDto { id: string sessionId: string senderId: string senderName: string message: string timestamp: string isTeacher: boolean recipientId?: string recipientName?: string messageType: MessageType } export interface VideoLayoutDto { id: string name: string type: VideoLayoutType description: string } export interface TeacherLayoutDto extends VideoLayoutDto { id: 'teacher-focus' name: 'Öğretmen Odaklı' type: 'teacher-focus' description: 'Öğretmen tam ekranda, öğrenciler küçük panelde' } export interface ScheduledClassDto { id: string name: string scheduledTime: string duration: number } export interface HandRaiseDto { id: string studentId: string studentName: string timestamp: string isActive: boolean } export interface ClassDocumentDto { id: string name: string url: string type: string size: number uploadedAt: string uploadedBy: string isPresentation?: boolean totalPages?: number } export interface ScreenShareRequestDto { userId: string userName: string isActive: boolean } export interface ClassroomFilterInputDto extends PagedAndSortedResultRequestDto { search: string status: string }