// @generated
// This file is @generated by prost-build.
/// EntityState represents the state of an entity in the mesh (e.g., a room).
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct EntityState {
    /// Type of entity (e.g., "room")
    #[prost(string, tag="1")]
    pub entity_type: ::prost::alloc::string::String,
    /// Unique identifier (e.g., room name)
    #[prost(string, tag="2")]
    pub entity_id: ::prost::alloc::string::String,
    /// Whether the entity is active
    #[prost(bool, tag="3")]
    pub active: bool,
    /// Relay ID that owns this entity
    #[prost(string, tag="4")]
    pub owner_relay_id: ::prost::alloc::string::String,
}
/// MeshMessage is the top-level message for all relay-to-relay communication.
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct MeshMessage {
    #[prost(oneof="mesh_message::Type", tags="1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13")]
    pub r#type: ::core::option::Option<mesh_message::Type>,
}
/// Nested message and enum types in `MeshMessage`.
pub mod mesh_message {
    #[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Oneof)]
    pub enum Type {
        /// Level 0
        #[prost(message, tag="1")]
        StateUpdate(super::StateUpdate),
        #[prost(message, tag="2")]
        Ack(super::Ack),
        #[prost(message, tag="3")]
        RetransmissionRequest(super::RetransmissionRequest),
        #[prost(message, tag="4")]
        Retransmission(super::Retransmission),
        #[prost(message, tag="5")]
        Heartbeat(super::Heartbeat),
        #[prost(message, tag="6")]
        SuspectRelay(super::SuspectRelay),
        #[prost(message, tag="7")]
        Disconnect(super::Disconnect),
        /// Level 1
        #[prost(message, tag="8")]
        ForwardSdp(super::ForwardSdp),
        #[prost(message, tag="9")]
        ForwardIce(super::ForwardIce),
        #[prost(message, tag="10")]
        ForwardIngest(super::ForwardIngest),
        #[prost(message, tag="11")]
        StreamRequest(super::StreamRequest),
        /// Level 2
        #[prost(message, tag="12")]
        Handshake(super::Handshake),
        #[prost(message, tag="13")]
        HandshakeResponse(super::HandshakeResponse),
    }
}
/// Handshake to inititiate new connection to mesh.
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct Handshake {
    /// UUID of the relay
    #[prost(string, tag="1")]
    pub relay_id: ::prost::alloc::string::String,
    /// base64 encoded Diffie-Hellman public key
    #[prost(string, tag="2")]
    pub dh_public_key: ::prost::alloc::string::String,
}
/// HandshakeResponse to respond to a mesh joiner.
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct HandshakeResponse {
    #[prost(string, tag="1")]
    pub relay_id: ::prost::alloc::string::String,
    #[prost(string, tag="2")]
    pub dh_public_key: ::prost::alloc::string::String,
    /// relay id to signature
    #[prost(map="string, string", tag="3")]
    pub approvals: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
}
/// Forwarded SDP from another relay.
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ForwardSdp {
    #[prost(string, tag="1")]
    pub room_name: ::prost::alloc::string::String,
    #[prost(string, tag="2")]
    pub participant_id: ::prost::alloc::string::String,
    #[prost(string, tag="3")]
    pub sdp: ::prost::alloc::string::String,
    /// "offer" or "answer"
    #[prost(string, tag="4")]
    pub r#type: ::prost::alloc::string::String,
}
/// Forwarded ICE candidate from another relay.
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ForwardIce {
    #[prost(string, tag="1")]
    pub room_name: ::prost::alloc::string::String,
    #[prost(string, tag="2")]
    pub participant_id: ::prost::alloc::string::String,
    #[prost(string, tag="3")]
    pub candidate: ::prost::alloc::string::String,
}
/// Forwarded ingest room from another relay.
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ForwardIngest {
    #[prost(string, tag="1")]
    pub room_name: ::prost::alloc::string::String,
}
/// Stream request from mesh.
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct StreamRequest {
    #[prost(string, tag="1")]
    pub room_name: ::prost::alloc::string::String,
}
/// StateUpdate propagates entity state changes across the mesh.
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct StateUpdate {
    /// Unique sequence number for this update
    #[prost(uint64, tag="1")]
    pub sequence_number: u64,
    /// Key: entity_id (e.g., room name), Value: EntityState
    #[prost(map="string, message", tag="2")]
    pub entities: ::std::collections::HashMap<::prost::alloc::string::String, EntityState>,
}
/// Ack acknowledges receipt of a StateUpdate.
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct Ack {
    /// UUID of the acknowledging relay
    #[prost(string, tag="1")]
    pub relay_id: ::prost::alloc::string::String,
    /// Sequence number being acknowledged
    #[prost(uint64, tag="2")]
    pub sequence_number: u64,
}
/// RetransmissionRequest requests a missed StateUpdate.
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct RetransmissionRequest {
    /// UUID of the requesting relay
    #[prost(string, tag="1")]
    pub relay_id: ::prost::alloc::string::String,
    /// Sequence number of the missed update
    #[prost(uint64, tag="2")]
    pub sequence_number: u64,
}
/// Retransmission resends a StateUpdate.
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct Retransmission {
    /// UUID of the sending relay
    #[prost(string, tag="1")]
    pub relay_id: ::prost::alloc::string::String,
    /// The retransmitted update
    #[prost(message, optional, tag="2")]
    pub state_update: ::core::option::Option<StateUpdate>,
}
/// Heartbeat signals relay liveness.
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct Heartbeat {
    /// UUID of the sending relay
    #[prost(string, tag="1")]
    pub relay_id: ::prost::alloc::string::String,
    /// Time of the heartbeat
    #[prost(message, optional, tag="2")]
    pub timestamp: ::core::option::Option<::prost_types::Timestamp>,
}
/// SuspectRelay marks a relay as potentially unresponsive.
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct SuspectRelay {
    /// UUID of the suspected relay
    #[prost(string, tag="1")]
    pub relay_id: ::prost::alloc::string::String,
    /// Reason for suspicion (e.g., "no heartbeat")
    #[prost(string, tag="2")]
    pub reason: ::prost::alloc::string::String,
}
/// Disconnect signals to remove a relay from the mesh.
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct Disconnect {
    /// UUID of the relay to disconnect
    #[prost(string, tag="1")]
    pub relay_id: ::prost::alloc::string::String,
    /// Reason for disconnection (e.g., "unresponsive")
    #[prost(string, tag="2")]
    pub reason: ::prost::alloc::string::String,
}
// @@protoc_insertion_point(module)
