export interface IScreamConfig {
    serverHost?: string;
    tokenEndpoint?: string;
    livekitEndpoint?: string;
    useHttps?: boolean;
    debug?: boolean;
    auth: {
        clientId: string;
        clientSecret: string;
    };
}
export interface ConnectOptions {
    roomName: string;
    participantName: string;
    role: 'teacher' | 'student';
    token?: string;
    publishOnJoin?: boolean;
    adaptiveStream?: boolean;
    dynacast?: boolean;
}
export interface ParticipantInfo {
    identity: string;
    name: string;
    role: 'teacher' | 'student';
    isLocal: boolean;
    isPresenter: boolean;
    mediaState: {
        cameraEnabled: boolean;
        microphoneEnabled: boolean;
        screenShareEnabled: boolean;
    };
}
export interface VideoQualityPreset {
    width: number;
    height: number;
    frameRate: number;
    bitrate: number;
}
export interface AudioQualityPreset {
    sampleRate: number;
    bitrate: number;
}
export interface RoomStatus {
    participants: Array<{
        identity: string;
        name: string;
        role: string;
        metadata?: any;
    }>;
}
export interface TokenResponse {
    token: string;
    serverUrl?: string;
}
export interface AuthResponse {
    access_token: string;
    expires_in: number;
    client_name: string;
}
export interface DataMessage {
    type: string;
    content?: string;
    presenterIdentity?: string;
    previousPresenter?: string;
    timestamp: number;
    reason?: string;
    sender?: string;
}
export interface MediaState {
    camera: boolean;
    microphone: boolean;
    screenShare: boolean;
    canPublish: boolean;
}
export interface ConnectionInfo {
    isConnected: boolean;
    roomName: string | null;
    participantName: string | null;
    role: 'teacher' | 'student' | null;
    participantCount: number;
    canPublish: boolean;
}
export interface DebugInfo {
    connection: ConnectionInfo;
    media: MediaState;
    participants: {
        total: number;
        teachers: number;
        students: number;
        presenter: string | null;
    };
    quality: {
        video: string;
        adaptive: boolean;
    };
}
export declare const VIDEO_QUALITY_PRESETS: Record<string, VideoQualityPreset | {
    adaptive: boolean;
}>;
export declare const AUDIO_QUALITY_PRESETS: Record<string, AudioQualityPreset>;
