from enum import Enum


class SocketResponseEvents(str, Enum):
    Hello = "hello"
    ConnectRoomResponse = "connectRoomResponse"
    CreateTransportOnClient = "createTransportOnClient"
    ProduceResponse = "produceResponse"
    ConnectTransportResponse = "connectTransportResponse"
    RestartTransportIceResponse = "restartTransportIceResponse"
    ProduceDataResponse = "produceDataResponse"
    SyncMeetingStateResponse = "syncMeetingStateResponse"
    ConsumeResponse = "consumeResponse"
    ConsumeDataResponse = "consumeDataResponse"
    CloseProducerSuccess = "closeProducerSuccess"
    PauseProducerSuccess = "pauseProducerSuccess"
    ResumeProducerSuccess = "resumeProducerSuccess"
    CloseConsumerSuccess = "closeConsumerSuccess"
    NewPeerJoined = "newPeerJoined"
    NewLobbyPeer = "newLobbyPeer"
    NewPermissions = "newPermissions"
    NewRoomControls = "newRoomControls"
    NewPeerRole = "newPeerRole"
    ReceiveData = "receiveData"
    PeerMetadataUpdated = "peerMetadataUpdated"
    RoomMetadataUpdated = "roomMetadataUpdated"
    RoomCloseProducers = "roomCloseProducers"
    PeerLeft = "peerLeft"
    LobbyPeerLeft = "lobbyPeerLeft"
    WaitingRoom = "waitingRoom"
    Error = "error"


class SocketRequestEvents(str, Enum):
    ConnectRoom = "connect_room"
    CreateTransport = "create_transport"
    ConnectTransport = "connect_transport"
    CreateDataConsumer = "create_data_consumer"
    Produce = "produce"
    ProduceData = "produce_data"
    Consume = "consume"
    ResumeConsumer = "resume_consumer"
    CloseProducer = "close_producer"
    PauseProducer = "pause_producer"
    ResumeProducer = "resume_producer"
    CloseConsumer = "close_consumer"
    SyncMeetingState = "sync_meeting_state"
    RestartTransportIce = "restart_transport_ice"
    SendData = "send_data"
    UpdateRoomControls = "update_room_controls"
    UpdatePeerPermission = "update_peer_permission"
    ActivateSpeakerNotification = "activate_speaker_notification"
    UpdatePeerRole = "update_peer_role"
    UpdatePeerMetadata = "update_peer_metadata"
    UpdateRoomMetadata = "update_room_metadata"
    CloseStreamOfLabel = "close_stream_of_label"
    AcceptLobbyPeer = "accept_lobby_peer"
    DenyLobbyPeer = "deny_lobby_peer"
    KickPeer = "kick_peer"
    CloseRoom = "close_room"
