// This file is @generated by prost-build.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ScheduleIdentity {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<
        super::super::super::super::make87_messages::core::Header,
    >,
    #[prost(string, tag = "2")]
    pub node_uuid: ::prost::alloc::string::String,
    #[prost(message, optional, tag = "3")]
    pub timestamp: ::core::option::Option<super::super::builtin_interfaces::msg::Time>,
}
impl ::prost::Name for ScheduleIdentity {
    const NAME: &'static str = "ScheduleIdentity";
    const PACKAGE: &'static str = "make87_messages_ros2.humble.rmf_traffic_msgs.msg";
    fn full_name() -> ::prost::alloc::string::String {
        "make87_messages_ros2.humble.rmf_traffic_msgs.msg.ScheduleIdentity".into()
    }
    fn type_url() -> ::prost::alloc::string::String {
        "/make87_messages_ros2.humble.rmf_traffic_msgs.msg.ScheduleIdentity".into()
    }
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ScheduleQueryParticipants {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<
        super::super::super::super::make87_messages::core::Header,
    >,
    #[prost(uint32, tag = "2")]
    pub r#type: u32,
    #[prost(uint64, repeated, tag = "3")]
    pub ids: ::prost::alloc::vec::Vec<u64>,
}
impl ::prost::Name for ScheduleQueryParticipants {
    const NAME: &'static str = "ScheduleQueryParticipants";
    const PACKAGE: &'static str = "make87_messages_ros2.humble.rmf_traffic_msgs.msg";
    fn full_name() -> ::prost::alloc::string::String {
        "make87_messages_ros2.humble.rmf_traffic_msgs.msg.ScheduleQueryParticipants"
            .into()
    }
    fn type_url() -> ::prost::alloc::string::String {
        "/make87_messages_ros2.humble.rmf_traffic_msgs.msg.ScheduleQueryParticipants"
            .into()
    }
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct Shape {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<
        super::super::super::super::make87_messages::core::Header,
    >,
    #[prost(uint32, tag = "2")]
    pub r#type: u32,
    #[prost(uint32, tag = "3")]
    pub index: u32,
}
impl ::prost::Name for Shape {
    const NAME: &'static str = "Shape";
    const PACKAGE: &'static str = "make87_messages_ros2.humble.rmf_traffic_msgs.msg";
    fn full_name() -> ::prost::alloc::string::String {
        "make87_messages_ros2.humble.rmf_traffic_msgs.msg.Shape".into()
    }
    fn type_url() -> ::prost::alloc::string::String {
        "/make87_messages_ros2.humble.rmf_traffic_msgs.msg.Shape".into()
    }
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct Space {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<
        super::super::super::super::make87_messages::core::Header,
    >,
    #[prost(message, optional, tag = "2")]
    pub shape: ::core::option::Option<Shape>,
    #[prost(message, optional, tag = "3")]
    pub pose: ::core::option::Option<super::super::geometry_msgs::msg::Pose2D>,
}
impl ::prost::Name for Space {
    const NAME: &'static str = "Space";
    const PACKAGE: &'static str = "make87_messages_ros2.humble.rmf_traffic_msgs.msg";
    fn full_name() -> ::prost::alloc::string::String {
        "make87_messages_ros2.humble.rmf_traffic_msgs.msg.Space".into()
    }
    fn type_url() -> ::prost::alloc::string::String {
        "/make87_messages_ros2.humble.rmf_traffic_msgs.msg.Space".into()
    }
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct Timespan {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<
        super::super::super::super::make87_messages::core::Header,
    >,
    #[prost(string, repeated, tag = "2")]
    pub maps: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
    #[prost(bool, tag = "3")]
    pub has_lower_bound: bool,
    #[prost(int64, tag = "4")]
    pub lower_bound: i64,
    #[prost(bool, tag = "5")]
    pub has_upper_bound: bool,
    #[prost(int64, tag = "6")]
    pub upper_bound: i64,
}
impl ::prost::Name for Timespan {
    const NAME: &'static str = "Timespan";
    const PACKAGE: &'static str = "make87_messages_ros2.humble.rmf_traffic_msgs.msg";
    fn full_name() -> ::prost::alloc::string::String {
        "make87_messages_ros2.humble.rmf_traffic_msgs.msg.Timespan".into()
    }
    fn type_url() -> ::prost::alloc::string::String {
        "/make87_messages_ros2.humble.rmf_traffic_msgs.msg.Timespan".into()
    }
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct Region {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<
        super::super::super::super::make87_messages::core::Header,
    >,
    #[prost(string, tag = "2")]
    pub map: ::prost::alloc::string::String,
    #[prost(message, repeated, tag = "3")]
    pub spaces: ::prost::alloc::vec::Vec<Space>,
    #[prost(message, optional, tag = "4")]
    pub timespan: ::core::option::Option<Timespan>,
}
impl ::prost::Name for Region {
    const NAME: &'static str = "Region";
    const PACKAGE: &'static str = "make87_messages_ros2.humble.rmf_traffic_msgs.msg";
    fn full_name() -> ::prost::alloc::string::String {
        "make87_messages_ros2.humble.rmf_traffic_msgs.msg.Region".into()
    }
    fn type_url() -> ::prost::alloc::string::String {
        "/make87_messages_ros2.humble.rmf_traffic_msgs.msg.Region".into()
    }
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct Circle {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<
        super::super::super::super::make87_messages::core::Header,
    >,
    #[prost(double, tag = "2")]
    pub radius: f64,
}
impl ::prost::Name for Circle {
    const NAME: &'static str = "Circle";
    const PACKAGE: &'static str = "make87_messages_ros2.humble.rmf_traffic_msgs.msg";
    fn full_name() -> ::prost::alloc::string::String {
        "make87_messages_ros2.humble.rmf_traffic_msgs.msg.Circle".into()
    }
    fn type_url() -> ::prost::alloc::string::String {
        "/make87_messages_ros2.humble.rmf_traffic_msgs.msg.Circle".into()
    }
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ConvexShapeContext {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<
        super::super::super::super::make87_messages::core::Header,
    >,
    #[prost(message, repeated, tag = "2")]
    pub circles: ::prost::alloc::vec::Vec<Circle>,
}
impl ::prost::Name for ConvexShapeContext {
    const NAME: &'static str = "ConvexShapeContext";
    const PACKAGE: &'static str = "make87_messages_ros2.humble.rmf_traffic_msgs.msg";
    fn full_name() -> ::prost::alloc::string::String {
        "make87_messages_ros2.humble.rmf_traffic_msgs.msg.ConvexShapeContext".into()
    }
    fn type_url() -> ::prost::alloc::string::String {
        "/make87_messages_ros2.humble.rmf_traffic_msgs.msg.ConvexShapeContext".into()
    }
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ShapeContext {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<
        super::super::super::super::make87_messages::core::Header,
    >,
    #[prost(message, optional, tag = "2")]
    pub convex_shapes: ::core::option::Option<ConvexShapeContext>,
}
impl ::prost::Name for ShapeContext {
    const NAME: &'static str = "ShapeContext";
    const PACKAGE: &'static str = "make87_messages_ros2.humble.rmf_traffic_msgs.msg";
    fn full_name() -> ::prost::alloc::string::String {
        "make87_messages_ros2.humble.rmf_traffic_msgs.msg.ShapeContext".into()
    }
    fn type_url() -> ::prost::alloc::string::String {
        "/make87_messages_ros2.humble.rmf_traffic_msgs.msg.ShapeContext".into()
    }
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ScheduleQuerySpacetime {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<
        super::super::super::super::make87_messages::core::Header,
    >,
    #[prost(uint32, tag = "2")]
    pub r#type: u32,
    #[prost(message, repeated, tag = "3")]
    pub regions: ::prost::alloc::vec::Vec<Region>,
    #[prost(message, optional, tag = "4")]
    pub shape_context: ::core::option::Option<ShapeContext>,
    #[prost(message, optional, tag = "5")]
    pub timespan: ::core::option::Option<Timespan>,
}
impl ::prost::Name for ScheduleQuerySpacetime {
    const NAME: &'static str = "ScheduleQuerySpacetime";
    const PACKAGE: &'static str = "make87_messages_ros2.humble.rmf_traffic_msgs.msg";
    fn full_name() -> ::prost::alloc::string::String {
        "make87_messages_ros2.humble.rmf_traffic_msgs.msg.ScheduleQuerySpacetime".into()
    }
    fn type_url() -> ::prost::alloc::string::String {
        "/make87_messages_ros2.humble.rmf_traffic_msgs.msg.ScheduleQuerySpacetime".into()
    }
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ScheduleQuery {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<
        super::super::super::super::make87_messages::core::Header,
    >,
    #[prost(message, optional, tag = "2")]
    pub spacetime: ::core::option::Option<ScheduleQuerySpacetime>,
    #[prost(message, optional, tag = "3")]
    pub participants: ::core::option::Option<ScheduleQueryParticipants>,
}
impl ::prost::Name for ScheduleQuery {
    const NAME: &'static str = "ScheduleQuery";
    const PACKAGE: &'static str = "make87_messages_ros2.humble.rmf_traffic_msgs.msg";
    fn full_name() -> ::prost::alloc::string::String {
        "make87_messages_ros2.humble.rmf_traffic_msgs.msg.ScheduleQuery".into()
    }
    fn type_url() -> ::prost::alloc::string::String {
        "/make87_messages_ros2.humble.rmf_traffic_msgs.msg.ScheduleQuery".into()
    }
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ConvexShape {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<
        super::super::super::super::make87_messages::core::Header,
    >,
    #[prost(uint32, tag = "2")]
    pub r#type: u32,
    #[prost(uint32, tag = "3")]
    pub index: u32,
}
impl ::prost::Name for ConvexShape {
    const NAME: &'static str = "ConvexShape";
    const PACKAGE: &'static str = "make87_messages_ros2.humble.rmf_traffic_msgs.msg";
    fn full_name() -> ::prost::alloc::string::String {
        "make87_messages_ros2.humble.rmf_traffic_msgs.msg.ConvexShape".into()
    }
    fn type_url() -> ::prost::alloc::string::String {
        "/make87_messages_ros2.humble.rmf_traffic_msgs.msg.ConvexShape".into()
    }
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct Profile {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<
        super::super::super::super::make87_messages::core::Header,
    >,
    #[prost(message, optional, tag = "2")]
    pub footprint: ::core::option::Option<ConvexShape>,
    #[prost(message, optional, tag = "3")]
    pub vicinity: ::core::option::Option<ConvexShape>,
    #[prost(message, optional, tag = "4")]
    pub shape_context: ::core::option::Option<ConvexShapeContext>,
}
impl ::prost::Name for Profile {
    const NAME: &'static str = "Profile";
    const PACKAGE: &'static str = "make87_messages_ros2.humble.rmf_traffic_msgs.msg";
    fn full_name() -> ::prost::alloc::string::String {
        "make87_messages_ros2.humble.rmf_traffic_msgs.msg.Profile".into()
    }
    fn type_url() -> ::prost::alloc::string::String {
        "/make87_messages_ros2.humble.rmf_traffic_msgs.msg.Profile".into()
    }
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ParticipantDescription {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<
        super::super::super::super::make87_messages::core::Header,
    >,
    #[prost(string, tag = "2")]
    pub name: ::prost::alloc::string::String,
    #[prost(string, tag = "3")]
    pub owner: ::prost::alloc::string::String,
    #[prost(uint32, tag = "4")]
    pub responsiveness: u32,
    #[prost(message, optional, tag = "5")]
    pub profile: ::core::option::Option<Profile>,
}
impl ::prost::Name for ParticipantDescription {
    const NAME: &'static str = "ParticipantDescription";
    const PACKAGE: &'static str = "make87_messages_ros2.humble.rmf_traffic_msgs.msg";
    fn full_name() -> ::prost::alloc::string::String {
        "make87_messages_ros2.humble.rmf_traffic_msgs.msg.ParticipantDescription".into()
    }
    fn type_url() -> ::prost::alloc::string::String {
        "/make87_messages_ros2.humble.rmf_traffic_msgs.msg.ParticipantDescription".into()
    }
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct TrafficDependency {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<
        super::super::super::super::make87_messages::core::Header,
    >,
    #[prost(uint64, tag = "2")]
    pub dependent_checkpoint: u64,
    #[prost(uint64, tag = "3")]
    pub on_participant: u64,
    #[prost(uint64, tag = "4")]
    pub on_plan: u64,
    #[prost(uint64, tag = "5")]
    pub on_route: u64,
    #[prost(uint64, tag = "6")]
    pub on_checkpoint: u64,
}
impl ::prost::Name for TrafficDependency {
    const NAME: &'static str = "TrafficDependency";
    const PACKAGE: &'static str = "make87_messages_ros2.humble.rmf_traffic_msgs.msg";
    fn full_name() -> ::prost::alloc::string::String {
        "make87_messages_ros2.humble.rmf_traffic_msgs.msg.TrafficDependency".into()
    }
    fn type_url() -> ::prost::alloc::string::String {
        "/make87_messages_ros2.humble.rmf_traffic_msgs.msg.TrafficDependency".into()
    }
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct TrajectoryWaypoint {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<
        super::super::super::super::make87_messages::core::Header,
    >,
    #[prost(int64, tag = "2")]
    pub time: i64,
    #[prost(double, repeated, tag = "3")]
    pub position: ::prost::alloc::vec::Vec<f64>,
    #[prost(double, repeated, tag = "4")]
    pub velocity: ::prost::alloc::vec::Vec<f64>,
}
impl ::prost::Name for TrajectoryWaypoint {
    const NAME: &'static str = "TrajectoryWaypoint";
    const PACKAGE: &'static str = "make87_messages_ros2.humble.rmf_traffic_msgs.msg";
    fn full_name() -> ::prost::alloc::string::String {
        "make87_messages_ros2.humble.rmf_traffic_msgs.msg.TrajectoryWaypoint".into()
    }
    fn type_url() -> ::prost::alloc::string::String {
        "/make87_messages_ros2.humble.rmf_traffic_msgs.msg.TrajectoryWaypoint".into()
    }
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct Trajectory {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<
        super::super::super::super::make87_messages::core::Header,
    >,
    #[prost(message, repeated, tag = "2")]
    pub waypoints: ::prost::alloc::vec::Vec<TrajectoryWaypoint>,
}
impl ::prost::Name for Trajectory {
    const NAME: &'static str = "Trajectory";
    const PACKAGE: &'static str = "make87_messages_ros2.humble.rmf_traffic_msgs.msg";
    fn full_name() -> ::prost::alloc::string::String {
        "make87_messages_ros2.humble.rmf_traffic_msgs.msg.Trajectory".into()
    }
    fn type_url() -> ::prost::alloc::string::String {
        "/make87_messages_ros2.humble.rmf_traffic_msgs.msg.Trajectory".into()
    }
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct Route {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<
        super::super::super::super::make87_messages::core::Header,
    >,
    #[prost(string, tag = "2")]
    pub map: ::prost::alloc::string::String,
    #[prost(message, optional, tag = "3")]
    pub trajectory: ::core::option::Option<Trajectory>,
    #[prost(uint64, repeated, tag = "4")]
    pub checkpoints: ::prost::alloc::vec::Vec<u64>,
    #[prost(message, repeated, tag = "5")]
    pub dependencies: ::prost::alloc::vec::Vec<TrafficDependency>,
}
impl ::prost::Name for Route {
    const NAME: &'static str = "Route";
    const PACKAGE: &'static str = "make87_messages_ros2.humble.rmf_traffic_msgs.msg";
    fn full_name() -> ::prost::alloc::string::String {
        "make87_messages_ros2.humble.rmf_traffic_msgs.msg.Route".into()
    }
    fn type_url() -> ::prost::alloc::string::String {
        "/make87_messages_ros2.humble.rmf_traffic_msgs.msg.Route".into()
    }
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ScheduleChangeAddItem {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<
        super::super::super::super::make87_messages::core::Header,
    >,
    #[prost(uint64, tag = "2")]
    pub route_id: u64,
    #[prost(uint64, tag = "3")]
    pub storage_id: u64,
    #[prost(message, optional, tag = "4")]
    pub route: ::core::option::Option<Route>,
}
impl ::prost::Name for ScheduleChangeAddItem {
    const NAME: &'static str = "ScheduleChangeAddItem";
    const PACKAGE: &'static str = "make87_messages_ros2.humble.rmf_traffic_msgs.msg";
    fn full_name() -> ::prost::alloc::string::String {
        "make87_messages_ros2.humble.rmf_traffic_msgs.msg.ScheduleChangeAddItem".into()
    }
    fn type_url() -> ::prost::alloc::string::String {
        "/make87_messages_ros2.humble.rmf_traffic_msgs.msg.ScheduleChangeAddItem".into()
    }
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct NegotiationKey {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<
        super::super::super::super::make87_messages::core::Header,
    >,
    #[prost(uint64, tag = "2")]
    pub participant: u64,
    #[prost(uint64, tag = "3")]
    pub version: u64,
}
impl ::prost::Name for NegotiationKey {
    const NAME: &'static str = "NegotiationKey";
    const PACKAGE: &'static str = "make87_messages_ros2.humble.rmf_traffic_msgs.msg";
    fn full_name() -> ::prost::alloc::string::String {
        "make87_messages_ros2.humble.rmf_traffic_msgs.msg.NegotiationKey".into()
    }
    fn type_url() -> ::prost::alloc::string::String {
        "/make87_messages_ros2.humble.rmf_traffic_msgs.msg.NegotiationKey".into()
    }
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct NegotiationForfeit {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<
        super::super::super::super::make87_messages::core::Header,
    >,
    #[prost(uint64, tag = "2")]
    pub conflict_version: u64,
    #[prost(message, repeated, tag = "3")]
    pub table: ::prost::alloc::vec::Vec<NegotiationKey>,
}
impl ::prost::Name for NegotiationForfeit {
    const NAME: &'static str = "NegotiationForfeit";
    const PACKAGE: &'static str = "make87_messages_ros2.humble.rmf_traffic_msgs.msg";
    fn full_name() -> ::prost::alloc::string::String {
        "make87_messages_ros2.humble.rmf_traffic_msgs.msg.NegotiationForfeit".into()
    }
    fn type_url() -> ::prost::alloc::string::String {
        "/make87_messages_ros2.humble.rmf_traffic_msgs.msg.NegotiationForfeit".into()
    }
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct NegotiationProposal {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<
        super::super::super::super::make87_messages::core::Header,
    >,
    #[prost(uint64, tag = "2")]
    pub conflict_version: u64,
    #[prost(uint64, tag = "3")]
    pub proposal_version: u64,
    #[prost(uint64, tag = "4")]
    pub for_participant: u64,
    #[prost(message, repeated, tag = "5")]
    pub to_accommodate: ::prost::alloc::vec::Vec<NegotiationKey>,
    #[prost(uint64, tag = "6")]
    pub plan_id: u64,
    #[prost(message, repeated, tag = "7")]
    pub itinerary: ::prost::alloc::vec::Vec<Route>,
}
impl ::prost::Name for NegotiationProposal {
    const NAME: &'static str = "NegotiationProposal";
    const PACKAGE: &'static str = "make87_messages_ros2.humble.rmf_traffic_msgs.msg";
    fn full_name() -> ::prost::alloc::string::String {
        "make87_messages_ros2.humble.rmf_traffic_msgs.msg.NegotiationProposal".into()
    }
    fn type_url() -> ::prost::alloc::string::String {
        "/make87_messages_ros2.humble.rmf_traffic_msgs.msg.NegotiationProposal".into()
    }
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct Itinerary {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<
        super::super::super::super::make87_messages::core::Header,
    >,
    #[prost(message, repeated, tag = "2")]
    pub routes: ::prost::alloc::vec::Vec<Route>,
}
impl ::prost::Name for Itinerary {
    const NAME: &'static str = "Itinerary";
    const PACKAGE: &'static str = "make87_messages_ros2.humble.rmf_traffic_msgs.msg";
    fn full_name() -> ::prost::alloc::string::String {
        "make87_messages_ros2.humble.rmf_traffic_msgs.msg.Itinerary".into()
    }
    fn type_url() -> ::prost::alloc::string::String {
        "/make87_messages_ros2.humble.rmf_traffic_msgs.msg.Itinerary".into()
    }
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct NegotiationRejection {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<
        super::super::super::super::make87_messages::core::Header,
    >,
    #[prost(uint64, tag = "2")]
    pub conflict_version: u64,
    #[prost(message, repeated, tag = "3")]
    pub table: ::prost::alloc::vec::Vec<NegotiationKey>,
    #[prost(uint64, tag = "4")]
    pub rejected_by: u64,
    #[prost(message, repeated, tag = "5")]
    pub alternatives: ::prost::alloc::vec::Vec<Itinerary>,
}
impl ::prost::Name for NegotiationRejection {
    const NAME: &'static str = "NegotiationRejection";
    const PACKAGE: &'static str = "make87_messages_ros2.humble.rmf_traffic_msgs.msg";
    fn full_name() -> ::prost::alloc::string::String {
        "make87_messages_ros2.humble.rmf_traffic_msgs.msg.NegotiationRejection".into()
    }
    fn type_url() -> ::prost::alloc::string::String {
        "/make87_messages_ros2.humble.rmf_traffic_msgs.msg.NegotiationRejection".into()
    }
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct NegotiationStatus {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<
        super::super::super::super::make87_messages::core::Header,
    >,
    #[prost(uint64, tag = "2")]
    pub conflict_version: u64,
    #[prost(uint64, repeated, tag = "3")]
    pub participants: ::prost::alloc::vec::Vec<u64>,
    #[prost(message, optional, tag = "4")]
    pub start_time: ::core::option::Option<super::super::builtin_interfaces::msg::Time>,
    #[prost(message, optional, tag = "5")]
    pub last_response_time: ::core::option::Option<
        super::super::builtin_interfaces::msg::Time,
    >,
}
impl ::prost::Name for NegotiationStatus {
    const NAME: &'static str = "NegotiationStatus";
    const PACKAGE: &'static str = "make87_messages_ros2.humble.rmf_traffic_msgs.msg";
    fn full_name() -> ::prost::alloc::string::String {
        "make87_messages_ros2.humble.rmf_traffic_msgs.msg.NegotiationStatus".into()
    }
    fn type_url() -> ::prost::alloc::string::String {
        "/make87_messages_ros2.humble.rmf_traffic_msgs.msg.NegotiationStatus".into()
    }
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct NegotiationTreeNode {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<
        super::super::super::super::make87_messages::core::Header,
    >,
    #[prost(int64, tag = "2")]
    pub parent: i64,
    #[prost(message, optional, tag = "3")]
    pub key: ::core::option::Option<NegotiationKey>,
    #[prost(bool, tag = "4")]
    pub rejected: bool,
    #[prost(message, repeated, tag = "5")]
    pub itinerary: ::prost::alloc::vec::Vec<Route>,
}
impl ::prost::Name for NegotiationTreeNode {
    const NAME: &'static str = "NegotiationTreeNode";
    const PACKAGE: &'static str = "make87_messages_ros2.humble.rmf_traffic_msgs.msg";
    fn full_name() -> ::prost::alloc::string::String {
        "make87_messages_ros2.humble.rmf_traffic_msgs.msg.NegotiationTreeNode".into()
    }
    fn type_url() -> ::prost::alloc::string::String {
        "/make87_messages_ros2.humble.rmf_traffic_msgs.msg.NegotiationTreeNode".into()
    }
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct NegotiationState {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<
        super::super::super::super::make87_messages::core::Header,
    >,
    #[prost(message, optional, tag = "2")]
    pub status: ::core::option::Option<NegotiationStatus>,
    #[prost(message, repeated, tag = "3")]
    pub tree: ::prost::alloc::vec::Vec<NegotiationTreeNode>,
    #[prost(message, repeated, tag = "4")]
    pub orphan_proposals: ::prost::alloc::vec::Vec<NegotiationProposal>,
    #[prost(message, repeated, tag = "5")]
    pub orphan_rejections: ::prost::alloc::vec::Vec<NegotiationRejection>,
    #[prost(message, repeated, tag = "6")]
    pub orphan_forfeits: ::prost::alloc::vec::Vec<NegotiationForfeit>,
}
impl ::prost::Name for NegotiationState {
    const NAME: &'static str = "NegotiationState";
    const PACKAGE: &'static str = "make87_messages_ros2.humble.rmf_traffic_msgs.msg";
    fn full_name() -> ::prost::alloc::string::String {
        "make87_messages_ros2.humble.rmf_traffic_msgs.msg.NegotiationState".into()
    }
    fn type_url() -> ::prost::alloc::string::String {
        "/make87_messages_ros2.humble.rmf_traffic_msgs.msg.NegotiationState".into()
    }
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct NegotiationStates {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<
        super::super::super::super::make87_messages::core::Header,
    >,
    #[prost(message, repeated, tag = "2")]
    pub negotiations: ::prost::alloc::vec::Vec<NegotiationState>,
}
impl ::prost::Name for NegotiationStates {
    const NAME: &'static str = "NegotiationStates";
    const PACKAGE: &'static str = "make87_messages_ros2.humble.rmf_traffic_msgs.msg";
    fn full_name() -> ::prost::alloc::string::String {
        "make87_messages_ros2.humble.rmf_traffic_msgs.msg.NegotiationStates".into()
    }
    fn type_url() -> ::prost::alloc::string::String {
        "/make87_messages_ros2.humble.rmf_traffic_msgs.msg.NegotiationStates".into()
    }
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct Participant {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<
        super::super::super::super::make87_messages::core::Header,
    >,
    #[prost(uint64, tag = "2")]
    pub id: u64,
    #[prost(message, optional, tag = "3")]
    pub description: ::core::option::Option<ParticipantDescription>,
}
impl ::prost::Name for Participant {
    const NAME: &'static str = "Participant";
    const PACKAGE: &'static str = "make87_messages_ros2.humble.rmf_traffic_msgs.msg";
    fn full_name() -> ::prost::alloc::string::String {
        "make87_messages_ros2.humble.rmf_traffic_msgs.msg.Participant".into()
    }
    fn type_url() -> ::prost::alloc::string::String {
        "/make87_messages_ros2.humble.rmf_traffic_msgs.msg.Participant".into()
    }
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct BlockadeStatus {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<
        super::super::super::super::make87_messages::core::Header,
    >,
    #[prost(uint64, tag = "2")]
    pub participant: u64,
    #[prost(uint64, tag = "3")]
    pub reservation: u64,
    #[prost(bool, tag = "4")]
    pub any_ready: bool,
    #[prost(uint64, tag = "5")]
    pub last_ready: u64,
    #[prost(uint64, tag = "6")]
    pub last_reached: u64,
    #[prost(uint64, tag = "7")]
    pub assignment_begin: u64,
    #[prost(uint64, tag = "8")]
    pub assignment_end: u64,
}
impl ::prost::Name for BlockadeStatus {
    const NAME: &'static str = "BlockadeStatus";
    const PACKAGE: &'static str = "make87_messages_ros2.humble.rmf_traffic_msgs.msg";
    fn full_name() -> ::prost::alloc::string::String {
        "make87_messages_ros2.humble.rmf_traffic_msgs.msg.BlockadeStatus".into()
    }
    fn type_url() -> ::prost::alloc::string::String {
        "/make87_messages_ros2.humble.rmf_traffic_msgs.msg.BlockadeStatus".into()
    }
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct BlockadeHeartbeat {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<
        super::super::super::super::make87_messages::core::Header,
    >,
    #[prost(message, repeated, tag = "2")]
    pub statuses: ::prost::alloc::vec::Vec<BlockadeStatus>,
    #[prost(bool, tag = "3")]
    pub has_gridlock: bool,
}
impl ::prost::Name for BlockadeHeartbeat {
    const NAME: &'static str = "BlockadeHeartbeat";
    const PACKAGE: &'static str = "make87_messages_ros2.humble.rmf_traffic_msgs.msg";
    fn full_name() -> ::prost::alloc::string::String {
        "make87_messages_ros2.humble.rmf_traffic_msgs.msg.BlockadeHeartbeat".into()
    }
    fn type_url() -> ::prost::alloc::string::String {
        "/make87_messages_ros2.humble.rmf_traffic_msgs.msg.BlockadeHeartbeat".into()
    }
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct BlockadeCheckpoint {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<
        super::super::super::super::make87_messages::core::Header,
    >,
    #[prost(double, repeated, tag = "2")]
    pub position: ::prost::alloc::vec::Vec<f64>,
    #[prost(string, tag = "3")]
    pub map_name: ::prost::alloc::string::String,
    #[prost(bool, tag = "4")]
    pub can_hold: bool,
}
impl ::prost::Name for BlockadeCheckpoint {
    const NAME: &'static str = "BlockadeCheckpoint";
    const PACKAGE: &'static str = "make87_messages_ros2.humble.rmf_traffic_msgs.msg";
    fn full_name() -> ::prost::alloc::string::String {
        "make87_messages_ros2.humble.rmf_traffic_msgs.msg.BlockadeCheckpoint".into()
    }
    fn type_url() -> ::prost::alloc::string::String {
        "/make87_messages_ros2.humble.rmf_traffic_msgs.msg.BlockadeCheckpoint".into()
    }
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct NegotiationNotice {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<
        super::super::super::super::make87_messages::core::Header,
    >,
    #[prost(uint64, tag = "2")]
    pub conflict_version: u64,
    #[prost(uint64, repeated, tag = "3")]
    pub participants: ::prost::alloc::vec::Vec<u64>,
}
impl ::prost::Name for NegotiationNotice {
    const NAME: &'static str = "NegotiationNotice";
    const PACKAGE: &'static str = "make87_messages_ros2.humble.rmf_traffic_msgs.msg";
    fn full_name() -> ::prost::alloc::string::String {
        "make87_messages_ros2.humble.rmf_traffic_msgs.msg.NegotiationNotice".into()
    }
    fn type_url() -> ::prost::alloc::string::String {
        "/make87_messages_ros2.humble.rmf_traffic_msgs.msg.NegotiationNotice".into()
    }
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ItineraryExtend {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<
        super::super::super::super::make87_messages::core::Header,
    >,
    #[prost(uint64, tag = "2")]
    pub participant: u64,
    #[prost(message, repeated, tag = "3")]
    pub routes: ::prost::alloc::vec::Vec<Route>,
    #[prost(uint64, tag = "4")]
    pub itinerary_version: u64,
}
impl ::prost::Name for ItineraryExtend {
    const NAME: &'static str = "ItineraryExtend";
    const PACKAGE: &'static str = "make87_messages_ros2.humble.rmf_traffic_msgs.msg";
    fn full_name() -> ::prost::alloc::string::String {
        "make87_messages_ros2.humble.rmf_traffic_msgs.msg.ItineraryExtend".into()
    }
    fn type_url() -> ::prost::alloc::string::String {
        "/make87_messages_ros2.humble.rmf_traffic_msgs.msg.ItineraryExtend".into()
    }
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct NegotiationParticipantAck {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<
        super::super::super::super::make87_messages::core::Header,
    >,
    #[prost(uint64, tag = "2")]
    pub participant: u64,
    #[prost(bool, tag = "3")]
    pub updating: bool,
    #[prost(uint64, tag = "4")]
    pub itinerary_version: u64,
}
impl ::prost::Name for NegotiationParticipantAck {
    const NAME: &'static str = "NegotiationParticipantAck";
    const PACKAGE: &'static str = "make87_messages_ros2.humble.rmf_traffic_msgs.msg";
    fn full_name() -> ::prost::alloc::string::String {
        "make87_messages_ros2.humble.rmf_traffic_msgs.msg.NegotiationParticipantAck"
            .into()
    }
    fn type_url() -> ::prost::alloc::string::String {
        "/make87_messages_ros2.humble.rmf_traffic_msgs.msg.NegotiationParticipantAck"
            .into()
    }
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct NegotiationAck {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<
        super::super::super::super::make87_messages::core::Header,
    >,
    #[prost(uint64, tag = "2")]
    pub conflict_version: u64,
    #[prost(message, repeated, tag = "3")]
    pub acknowledgments: ::prost::alloc::vec::Vec<NegotiationParticipantAck>,
}
impl ::prost::Name for NegotiationAck {
    const NAME: &'static str = "NegotiationAck";
    const PACKAGE: &'static str = "make87_messages_ros2.humble.rmf_traffic_msgs.msg";
    fn full_name() -> ::prost::alloc::string::String {
        "make87_messages_ros2.humble.rmf_traffic_msgs.msg.NegotiationAck".into()
    }
    fn type_url() -> ::prost::alloc::string::String {
        "/make87_messages_ros2.humble.rmf_traffic_msgs.msg.NegotiationAck".into()
    }
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct NegotiationRefusal {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<
        super::super::super::super::make87_messages::core::Header,
    >,
    #[prost(uint64, tag = "2")]
    pub conflict_version: u64,
}
impl ::prost::Name for NegotiationRefusal {
    const NAME: &'static str = "NegotiationRefusal";
    const PACKAGE: &'static str = "make87_messages_ros2.humble.rmf_traffic_msgs.msg";
    fn full_name() -> ::prost::alloc::string::String {
        "make87_messages_ros2.humble.rmf_traffic_msgs.msg.NegotiationRefusal".into()
    }
    fn type_url() -> ::prost::alloc::string::String {
        "/make87_messages_ros2.humble.rmf_traffic_msgs.msg.NegotiationRefusal".into()
    }
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct NegotiationStatuses {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<
        super::super::super::super::make87_messages::core::Header,
    >,
    #[prost(message, repeated, tag = "2")]
    pub negotiations: ::prost::alloc::vec::Vec<NegotiationStatus>,
}
impl ::prost::Name for NegotiationStatuses {
    const NAME: &'static str = "NegotiationStatuses";
    const PACKAGE: &'static str = "make87_messages_ros2.humble.rmf_traffic_msgs.msg";
    fn full_name() -> ::prost::alloc::string::String {
        "make87_messages_ros2.humble.rmf_traffic_msgs.msg.NegotiationStatuses".into()
    }
    fn type_url() -> ::prost::alloc::string::String {
        "/make87_messages_ros2.humble.rmf_traffic_msgs.msg.NegotiationStatuses".into()
    }
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct NegotiationRepeat {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<
        super::super::super::super::make87_messages::core::Header,
    >,
    #[prost(uint64, tag = "2")]
    pub conflict_version: u64,
    #[prost(uint64, repeated, tag = "3")]
    pub table: ::prost::alloc::vec::Vec<u64>,
}
impl ::prost::Name for NegotiationRepeat {
    const NAME: &'static str = "NegotiationRepeat";
    const PACKAGE: &'static str = "make87_messages_ros2.humble.rmf_traffic_msgs.msg";
    fn full_name() -> ::prost::alloc::string::String {
        "make87_messages_ros2.humble.rmf_traffic_msgs.msg.NegotiationRepeat".into()
    }
    fn type_url() -> ::prost::alloc::string::String {
        "/make87_messages_ros2.humble.rmf_traffic_msgs.msg.NegotiationRepeat".into()
    }
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ItinerarySet {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<
        super::super::super::super::make87_messages::core::Header,
    >,
    #[prost(uint64, tag = "2")]
    pub participant: u64,
    #[prost(uint64, tag = "3")]
    pub plan: u64,
    #[prost(message, repeated, tag = "4")]
    pub itinerary: ::prost::alloc::vec::Vec<Route>,
    #[prost(uint64, tag = "5")]
    pub storage_base: u64,
    #[prost(uint64, tag = "6")]
    pub itinerary_version: u64,
}
impl ::prost::Name for ItinerarySet {
    const NAME: &'static str = "ItinerarySet";
    const PACKAGE: &'static str = "make87_messages_ros2.humble.rmf_traffic_msgs.msg";
    fn full_name() -> ::prost::alloc::string::String {
        "make87_messages_ros2.humble.rmf_traffic_msgs.msg.ItinerarySet".into()
    }
    fn type_url() -> ::prost::alloc::string::String {
        "/make87_messages_ros2.humble.rmf_traffic_msgs.msg.ItinerarySet".into()
    }
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ItineraryErase {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<
        super::super::super::super::make87_messages::core::Header,
    >,
    #[prost(uint64, tag = "2")]
    pub participant: u64,
    #[prost(uint64, repeated, tag = "3")]
    pub routes: ::prost::alloc::vec::Vec<u64>,
    #[prost(uint64, tag = "4")]
    pub itinerary_version: u64,
}
impl ::prost::Name for ItineraryErase {
    const NAME: &'static str = "ItineraryErase";
    const PACKAGE: &'static str = "make87_messages_ros2.humble.rmf_traffic_msgs.msg";
    fn full_name() -> ::prost::alloc::string::String {
        "make87_messages_ros2.humble.rmf_traffic_msgs.msg.ItineraryErase".into()
    }
    fn type_url() -> ::prost::alloc::string::String {
        "/make87_messages_ros2.humble.rmf_traffic_msgs.msg.ItineraryErase".into()
    }
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ScheduleChangeCull {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<
        super::super::super::super::make87_messages::core::Header,
    >,
    #[prost(int64, tag = "2")]
    pub time: i64,
}
impl ::prost::Name for ScheduleChangeCull {
    const NAME: &'static str = "ScheduleChangeCull";
    const PACKAGE: &'static str = "make87_messages_ros2.humble.rmf_traffic_msgs.msg";
    fn full_name() -> ::prost::alloc::string::String {
        "make87_messages_ros2.humble.rmf_traffic_msgs.msg.ScheduleChangeCull".into()
    }
    fn type_url() -> ::prost::alloc::string::String {
        "/make87_messages_ros2.humble.rmf_traffic_msgs.msg.ScheduleChangeCull".into()
    }
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct PolygonVertex {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<
        super::super::super::super::make87_messages::core::Header,
    >,
    #[prost(float, tag = "2")]
    pub x: f32,
    #[prost(float, tag = "3")]
    pub y: f32,
}
impl ::prost::Name for PolygonVertex {
    const NAME: &'static str = "PolygonVertex";
    const PACKAGE: &'static str = "make87_messages_ros2.humble.rmf_traffic_msgs.msg";
    fn full_name() -> ::prost::alloc::string::String {
        "make87_messages_ros2.humble.rmf_traffic_msgs.msg.PolygonVertex".into()
    }
    fn type_url() -> ::prost::alloc::string::String {
        "/make87_messages_ros2.humble.rmf_traffic_msgs.msg.PolygonVertex".into()
    }
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct Polygon {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<
        super::super::super::super::make87_messages::core::Header,
    >,
    #[prost(message, repeated, tag = "2")]
    pub vertices: ::prost::alloc::vec::Vec<PolygonVertex>,
}
impl ::prost::Name for Polygon {
    const NAME: &'static str = "Polygon";
    const PACKAGE: &'static str = "make87_messages_ros2.humble.rmf_traffic_msgs.msg";
    fn full_name() -> ::prost::alloc::string::String {
        "make87_messages_ros2.humble.rmf_traffic_msgs.msg.Polygon".into()
    }
    fn type_url() -> ::prost::alloc::string::String {
        "/make87_messages_ros2.humble.rmf_traffic_msgs.msg.Polygon".into()
    }
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ItineraryClear {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<
        super::super::super::super::make87_messages::core::Header,
    >,
    #[prost(uint64, tag = "2")]
    pub participant: u64,
    #[prost(uint64, tag = "3")]
    pub itinerary_version: u64,
}
impl ::prost::Name for ItineraryClear {
    const NAME: &'static str = "ItineraryClear";
    const PACKAGE: &'static str = "make87_messages_ros2.humble.rmf_traffic_msgs.msg";
    fn full_name() -> ::prost::alloc::string::String {
        "make87_messages_ros2.humble.rmf_traffic_msgs.msg.ItineraryClear".into()
    }
    fn type_url() -> ::prost::alloc::string::String {
        "/make87_messages_ros2.humble.rmf_traffic_msgs.msg.ItineraryClear".into()
    }
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ScheduleChangeAdd {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<
        super::super::super::super::make87_messages::core::Header,
    >,
    #[prost(uint64, tag = "2")]
    pub plan_id: u64,
    #[prost(message, repeated, tag = "3")]
    pub items: ::prost::alloc::vec::Vec<ScheduleChangeAddItem>,
}
impl ::prost::Name for ScheduleChangeAdd {
    const NAME: &'static str = "ScheduleChangeAdd";
    const PACKAGE: &'static str = "make87_messages_ros2.humble.rmf_traffic_msgs.msg";
    fn full_name() -> ::prost::alloc::string::String {
        "make87_messages_ros2.humble.rmf_traffic_msgs.msg.ScheduleChangeAdd".into()
    }
    fn type_url() -> ::prost::alloc::string::String {
        "/make87_messages_ros2.humble.rmf_traffic_msgs.msg.ScheduleChangeAdd".into()
    }
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ScheduleChangeDelay {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<
        super::super::super::super::make87_messages::core::Header,
    >,
    #[prost(int64, tag = "2")]
    pub delay: i64,
}
impl ::prost::Name for ScheduleChangeDelay {
    const NAME: &'static str = "ScheduleChangeDelay";
    const PACKAGE: &'static str = "make87_messages_ros2.humble.rmf_traffic_msgs.msg";
    fn full_name() -> ::prost::alloc::string::String {
        "make87_messages_ros2.humble.rmf_traffic_msgs.msg.ScheduleChangeDelay".into()
    }
    fn type_url() -> ::prost::alloc::string::String {
        "/make87_messages_ros2.humble.rmf_traffic_msgs.msg.ScheduleChangeDelay".into()
    }
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ScheduleChangeProgress {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<
        super::super::super::super::make87_messages::core::Header,
    >,
    #[prost(bool, tag = "2")]
    pub has_progress: bool,
    #[prost(uint64, tag = "3")]
    pub version: u64,
    #[prost(uint64, repeated, tag = "4")]
    pub checkpoints: ::prost::alloc::vec::Vec<u64>,
}
impl ::prost::Name for ScheduleChangeProgress {
    const NAME: &'static str = "ScheduleChangeProgress";
    const PACKAGE: &'static str = "make87_messages_ros2.humble.rmf_traffic_msgs.msg";
    fn full_name() -> ::prost::alloc::string::String {
        "make87_messages_ros2.humble.rmf_traffic_msgs.msg.ScheduleChangeProgress".into()
    }
    fn type_url() -> ::prost::alloc::string::String {
        "/make87_messages_ros2.humble.rmf_traffic_msgs.msg.ScheduleChangeProgress".into()
    }
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ScheduleParticipantPatch {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<
        super::super::super::super::make87_messages::core::Header,
    >,
    #[prost(uint64, tag = "2")]
    pub participant_id: u64,
    #[prost(uint64, tag = "3")]
    pub itinerary_version: u64,
    #[prost(uint64, repeated, tag = "4")]
    pub erasures: ::prost::alloc::vec::Vec<u64>,
    #[prost(message, repeated, tag = "5")]
    pub delays: ::prost::alloc::vec::Vec<ScheduleChangeDelay>,
    #[prost(message, optional, tag = "6")]
    pub additions: ::core::option::Option<ScheduleChangeAdd>,
    #[prost(message, optional, tag = "7")]
    pub progress: ::core::option::Option<ScheduleChangeProgress>,
}
impl ::prost::Name for ScheduleParticipantPatch {
    const NAME: &'static str = "ScheduleParticipantPatch";
    const PACKAGE: &'static str = "make87_messages_ros2.humble.rmf_traffic_msgs.msg";
    fn full_name() -> ::prost::alloc::string::String {
        "make87_messages_ros2.humble.rmf_traffic_msgs.msg.ScheduleParticipantPatch"
            .into()
    }
    fn type_url() -> ::prost::alloc::string::String {
        "/make87_messages_ros2.humble.rmf_traffic_msgs.msg.ScheduleParticipantPatch"
            .into()
    }
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct NegotiationConclusion {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<
        super::super::super::super::make87_messages::core::Header,
    >,
    #[prost(uint64, tag = "2")]
    pub conflict_version: u64,
    #[prost(bool, tag = "3")]
    pub resolved: bool,
    #[prost(message, repeated, tag = "4")]
    pub table: ::prost::alloc::vec::Vec<NegotiationKey>,
}
impl ::prost::Name for NegotiationConclusion {
    const NAME: &'static str = "NegotiationConclusion";
    const PACKAGE: &'static str = "make87_messages_ros2.humble.rmf_traffic_msgs.msg";
    fn full_name() -> ::prost::alloc::string::String {
        "make87_messages_ros2.humble.rmf_traffic_msgs.msg.NegotiationConclusion".into()
    }
    fn type_url() -> ::prost::alloc::string::String {
        "/make87_messages_ros2.humble.rmf_traffic_msgs.msg.NegotiationConclusion".into()
    }
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ItineraryReached {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<
        super::super::super::super::make87_messages::core::Header,
    >,
    #[prost(uint64, tag = "2")]
    pub participant: u64,
    #[prost(uint64, tag = "3")]
    pub plan: u64,
    #[prost(uint64, repeated, tag = "4")]
    pub reached_checkpoints: ::prost::alloc::vec::Vec<u64>,
    #[prost(uint64, tag = "5")]
    pub progress_version: u64,
}
impl ::prost::Name for ItineraryReached {
    const NAME: &'static str = "ItineraryReached";
    const PACKAGE: &'static str = "make87_messages_ros2.humble.rmf_traffic_msgs.msg";
    fn full_name() -> ::prost::alloc::string::String {
        "make87_messages_ros2.humble.rmf_traffic_msgs.msg.ItineraryReached".into()
    }
    fn type_url() -> ::prost::alloc::string::String {
        "/make87_messages_ros2.humble.rmf_traffic_msgs.msg.ItineraryReached".into()
    }
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct BlockadeReady {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<
        super::super::super::super::make87_messages::core::Header,
    >,
    #[prost(uint64, tag = "2")]
    pub participant: u64,
    #[prost(uint64, tag = "3")]
    pub reservation: u64,
    #[prost(uint64, tag = "4")]
    pub checkpoint: u64,
}
impl ::prost::Name for BlockadeReady {
    const NAME: &'static str = "BlockadeReady";
    const PACKAGE: &'static str = "make87_messages_ros2.humble.rmf_traffic_msgs.msg";
    fn full_name() -> ::prost::alloc::string::String {
        "make87_messages_ros2.humble.rmf_traffic_msgs.msg.BlockadeReady".into()
    }
    fn type_url() -> ::prost::alloc::string::String {
        "/make87_messages_ros2.humble.rmf_traffic_msgs.msg.BlockadeReady".into()
    }
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct Heartbeat {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<
        super::super::super::super::make87_messages::core::Header,
    >,
}
impl ::prost::Name for Heartbeat {
    const NAME: &'static str = "Heartbeat";
    const PACKAGE: &'static str = "make87_messages_ros2.humble.rmf_traffic_msgs.msg";
    fn full_name() -> ::prost::alloc::string::String {
        "make87_messages_ros2.humble.rmf_traffic_msgs.msg.Heartbeat".into()
    }
    fn type_url() -> ::prost::alloc::string::String {
        "/make87_messages_ros2.humble.rmf_traffic_msgs.msg.Heartbeat".into()
    }
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct Participants {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<
        super::super::super::super::make87_messages::core::Header,
    >,
    #[prost(message, optional, tag = "2")]
    pub node_id: ::core::option::Option<ScheduleIdentity>,
    #[prost(message, repeated, tag = "3")]
    pub participants: ::prost::alloc::vec::Vec<Participant>,
}
impl ::prost::Name for Participants {
    const NAME: &'static str = "Participants";
    const PACKAGE: &'static str = "make87_messages_ros2.humble.rmf_traffic_msgs.msg";
    fn full_name() -> ::prost::alloc::string::String {
        "make87_messages_ros2.humble.rmf_traffic_msgs.msg.Participants".into()
    }
    fn type_url() -> ::prost::alloc::string::String {
        "/make87_messages_ros2.humble.rmf_traffic_msgs.msg.Participants".into()
    }
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct SchedulePatch {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<
        super::super::super::super::make87_messages::core::Header,
    >,
    #[prost(message, repeated, tag = "2")]
    pub participants: ::prost::alloc::vec::Vec<ScheduleParticipantPatch>,
    #[prost(message, repeated, tag = "3")]
    pub cull: ::prost::alloc::vec::Vec<ScheduleChangeCull>,
    #[prost(bool, tag = "4")]
    pub has_base_version: bool,
    #[prost(uint64, tag = "5")]
    pub base_version: u64,
    #[prost(uint64, tag = "6")]
    pub latest_version: u64,
}
impl ::prost::Name for SchedulePatch {
    const NAME: &'static str = "SchedulePatch";
    const PACKAGE: &'static str = "make87_messages_ros2.humble.rmf_traffic_msgs.msg";
    fn full_name() -> ::prost::alloc::string::String {
        "make87_messages_ros2.humble.rmf_traffic_msgs.msg.SchedulePatch".into()
    }
    fn type_url() -> ::prost::alloc::string::String {
        "/make87_messages_ros2.humble.rmf_traffic_msgs.msg.SchedulePatch".into()
    }
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct MirrorUpdate {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<
        super::super::super::super::make87_messages::core::Header,
    >,
    #[prost(message, optional, tag = "2")]
    pub node_id: ::core::option::Option<ScheduleIdentity>,
    #[prost(uint64, tag = "3")]
    pub database_version: u64,
    #[prost(message, optional, tag = "4")]
    pub patch: ::core::option::Option<SchedulePatch>,
    #[prost(bool, tag = "5")]
    pub is_remedial_update: bool,
}
impl ::prost::Name for MirrorUpdate {
    const NAME: &'static str = "MirrorUpdate";
    const PACKAGE: &'static str = "make87_messages_ros2.humble.rmf_traffic_msgs.msg";
    fn full_name() -> ::prost::alloc::string::String {
        "make87_messages_ros2.humble.rmf_traffic_msgs.msg.MirrorUpdate".into()
    }
    fn type_url() -> ::prost::alloc::string::String {
        "/make87_messages_ros2.humble.rmf_traffic_msgs.msg.MirrorUpdate".into()
    }
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct BlockadeReached {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<
        super::super::super::super::make87_messages::core::Header,
    >,
    #[prost(uint64, tag = "2")]
    pub participant: u64,
    #[prost(uint64, tag = "3")]
    pub reservation: u64,
    #[prost(uint64, tag = "4")]
    pub checkpoint: u64,
}
impl ::prost::Name for BlockadeReached {
    const NAME: &'static str = "BlockadeReached";
    const PACKAGE: &'static str = "make87_messages_ros2.humble.rmf_traffic_msgs.msg";
    fn full_name() -> ::prost::alloc::string::String {
        "make87_messages_ros2.humble.rmf_traffic_msgs.msg.BlockadeReached".into()
    }
    fn type_url() -> ::prost::alloc::string::String {
        "/make87_messages_ros2.humble.rmf_traffic_msgs.msg.BlockadeReached".into()
    }
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct BlockadeCancel {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<
        super::super::super::super::make87_messages::core::Header,
    >,
    #[prost(uint64, tag = "2")]
    pub participant: u64,
    #[prost(bool, tag = "3")]
    pub all_reservations: bool,
    #[prost(uint64, tag = "4")]
    pub reservation: u64,
}
impl ::prost::Name for BlockadeCancel {
    const NAME: &'static str = "BlockadeCancel";
    const PACKAGE: &'static str = "make87_messages_ros2.humble.rmf_traffic_msgs.msg";
    fn full_name() -> ::prost::alloc::string::String {
        "make87_messages_ros2.humble.rmf_traffic_msgs.msg.BlockadeCancel".into()
    }
    fn type_url() -> ::prost::alloc::string::String {
        "/make87_messages_ros2.humble.rmf_traffic_msgs.msg.BlockadeCancel".into()
    }
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ItineraryDelay {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<
        super::super::super::super::make87_messages::core::Header,
    >,
    #[prost(uint64, tag = "2")]
    pub participant: u64,
    #[prost(int64, tag = "3")]
    pub delay: i64,
    #[prost(uint64, tag = "4")]
    pub itinerary_version: u64,
}
impl ::prost::Name for ItineraryDelay {
    const NAME: &'static str = "ItineraryDelay";
    const PACKAGE: &'static str = "make87_messages_ros2.humble.rmf_traffic_msgs.msg";
    fn full_name() -> ::prost::alloc::string::String {
        "make87_messages_ros2.humble.rmf_traffic_msgs.msg.ItineraryDelay".into()
    }
    fn type_url() -> ::prost::alloc::string::String {
        "/make87_messages_ros2.humble.rmf_traffic_msgs.msg.ItineraryDelay".into()
    }
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct BlockadeSet {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<
        super::super::super::super::make87_messages::core::Header,
    >,
    #[prost(uint64, tag = "2")]
    pub participant: u64,
    #[prost(uint64, tag = "3")]
    pub reservation: u64,
    #[prost(double, tag = "4")]
    pub radius: f64,
    #[prost(message, repeated, tag = "5")]
    pub path: ::prost::alloc::vec::Vec<BlockadeCheckpoint>,
}
impl ::prost::Name for BlockadeSet {
    const NAME: &'static str = "BlockadeSet";
    const PACKAGE: &'static str = "make87_messages_ros2.humble.rmf_traffic_msgs.msg";
    fn full_name() -> ::prost::alloc::string::String {
        "make87_messages_ros2.humble.rmf_traffic_msgs.msg.BlockadeSet".into()
    }
    fn type_url() -> ::prost::alloc::string::String {
        "/make87_messages_ros2.humble.rmf_traffic_msgs.msg.BlockadeSet".into()
    }
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ScheduleQueries {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<
        super::super::super::super::make87_messages::core::Header,
    >,
    #[prost(message, optional, tag = "2")]
    pub node_id: ::core::option::Option<ScheduleIdentity>,
    #[prost(message, repeated, tag = "3")]
    pub queries: ::prost::alloc::vec::Vec<ScheduleQuery>,
    #[prost(uint64, repeated, tag = "4")]
    pub query_ids: ::prost::alloc::vec::Vec<u64>,
}
impl ::prost::Name for ScheduleQueries {
    const NAME: &'static str = "ScheduleQueries";
    const PACKAGE: &'static str = "make87_messages_ros2.humble.rmf_traffic_msgs.msg";
    fn full_name() -> ::prost::alloc::string::String {
        "make87_messages_ros2.humble.rmf_traffic_msgs.msg.ScheduleQueries".into()
    }
    fn type_url() -> ::prost::alloc::string::String {
        "/make87_messages_ros2.humble.rmf_traffic_msgs.msg.ScheduleQueries".into()
    }
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct BlockadeRelease {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<
        super::super::super::super::make87_messages::core::Header,
    >,
    #[prost(uint64, tag = "2")]
    pub participant: u64,
    #[prost(uint64, tag = "3")]
    pub reservation: u64,
    #[prost(uint64, tag = "4")]
    pub checkpoint: u64,
}
impl ::prost::Name for BlockadeRelease {
    const NAME: &'static str = "BlockadeRelease";
    const PACKAGE: &'static str = "make87_messages_ros2.humble.rmf_traffic_msgs.msg";
    fn full_name() -> ::prost::alloc::string::String {
        "make87_messages_ros2.humble.rmf_traffic_msgs.msg.BlockadeRelease".into()
    }
    fn type_url() -> ::prost::alloc::string::String {
        "/make87_messages_ros2.humble.rmf_traffic_msgs.msg.BlockadeRelease".into()
    }
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ScheduleInconsistencyRange {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<
        super::super::super::super::make87_messages::core::Header,
    >,
    #[prost(uint64, tag = "2")]
    pub lower: u64,
    #[prost(uint64, tag = "3")]
    pub upper: u64,
}
impl ::prost::Name for ScheduleInconsistencyRange {
    const NAME: &'static str = "ScheduleInconsistencyRange";
    const PACKAGE: &'static str = "make87_messages_ros2.humble.rmf_traffic_msgs.msg";
    fn full_name() -> ::prost::alloc::string::String {
        "make87_messages_ros2.humble.rmf_traffic_msgs.msg.ScheduleInconsistencyRange"
            .into()
    }
    fn type_url() -> ::prost::alloc::string::String {
        "/make87_messages_ros2.humble.rmf_traffic_msgs.msg.ScheduleInconsistencyRange"
            .into()
    }
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ScheduleInconsistency {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<
        super::super::super::super::make87_messages::core::Header,
    >,
    #[prost(uint64, tag = "2")]
    pub participant: u64,
    #[prost(message, repeated, tag = "3")]
    pub ranges: ::prost::alloc::vec::Vec<ScheduleInconsistencyRange>,
    #[prost(uint64, tag = "4")]
    pub last_known_itinerary: u64,
    #[prost(uint64, tag = "5")]
    pub last_known_progress: u64,
}
impl ::prost::Name for ScheduleInconsistency {
    const NAME: &'static str = "ScheduleInconsistency";
    const PACKAGE: &'static str = "make87_messages_ros2.humble.rmf_traffic_msgs.msg";
    fn full_name() -> ::prost::alloc::string::String {
        "make87_messages_ros2.humble.rmf_traffic_msgs.msg.ScheduleInconsistency".into()
    }
    fn type_url() -> ::prost::alloc::string::String {
        "/make87_messages_ros2.humble.rmf_traffic_msgs.msg.ScheduleInconsistency".into()
    }
}
