package com.example.godeye.models

/**
 * Состояния подключения к сигналлинг серверу
 */
enum class SignalingState {
    DISCONNECTED,
    CONNECTING,
    CONNECTED,
    RECONNECTING,
    ERROR
}

/**
 * Состояния сессии с оператором
 */
enum class SessionState {
    WAITING,      // Ожидание подключения оператора
    INCOMING,     // Входящий вызов от оператора
    ACTIVE,       // Активная сессия
    ENDED         // Сессия завершена
}

/**
 * Типы сообщений сигналлинга
 */
enum class SignalingMessageType {
    DEVICE_REGISTER,
    OPERATOR_CALL,
    CALL_ACCEPT,
    CALL_REJECT,
    OFFER,
    ANSWER,
    ICE_CANDIDATE,
    CALL_END
}

/**
 * Базовое сообщение сигналлинга
 */
data class SignalingMessage(
    val type: SignalingMessageType,
    val from: String? = null,
    val to: String? = null,
    val data: Any? = null,
    val timestamp: Long = System.currentTimeMillis()
)

/**
 * Данные входящего вызова
 */
data class IncomingCall(
    val operatorId: String,
    val operatorName: String,
    val callId: String,
    val timestamp: Long
)

/**
 * WebRTC Offer/Answer данные
 */
data class RTCSessionDescription(
    val type: String, // "offer" или "answer"
    val sdp: String
)

/**
 * ICE Candidate данные
 */
data class RTCIceCandidate(
    val candidate: String,
    val sdpMid: String?,
    val sdpMLineIndex: Int?
)
