// This file is generated by rust-protobuf 3.3.0. Do not edit
// .proto file is parsed by protoc --rust-out=...
// @generated

// https://github.com/rust-lang/rust-clippy/issues/702
#![allow(unknown_lints)]
#![allow(clippy::all)]

#![allow(unused_attributes)]
#![cfg_attr(rustfmt, rustfmt::skip)]

#![allow(box_pointers)]
#![allow(dead_code)]
#![allow(missing_docs)]
#![allow(non_camel_case_types)]
#![allow(non_snake_case)]
#![allow(non_upper_case_globals)]
#![allow(trivial_casts)]
#![allow(unused_results)]
#![allow(unused_mut)]

//! Generated file from `sp_internal.proto`

/// Generated files are compatible only with the same version
/// of protobuf runtime.
const _PROTOBUF_VERSION_CHECK: () = ::protobuf::VERSION_3_3_0;

// @@protoc_insertion_point(message:protos.NewAudienceRequest)
#[derive(PartialEq,Clone,Default,Debug)]
pub struct NewAudienceRequest {
    // message fields
    ///  The session that is performing this call
    // @@protoc_insertion_point(field:protos.NewAudienceRequest.session_id)
    pub session_id: ::std::string::String,
    ///  Newly created audience.
    // @@protoc_insertion_point(field:protos.NewAudienceRequest.audience)
    pub audience: ::protobuf::MessageField<super::sp_common::Audience>,
    // special fields
    // @@protoc_insertion_point(special_field:protos.NewAudienceRequest.special_fields)
    pub special_fields: ::protobuf::SpecialFields,
}

impl<'a> ::std::default::Default for &'a NewAudienceRequest {
    fn default() -> &'a NewAudienceRequest {
        <NewAudienceRequest as ::protobuf::Message>::default_instance()
    }
}

impl NewAudienceRequest {
    pub fn new() -> NewAudienceRequest {
        ::std::default::Default::default()
    }

    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
        let mut fields = ::std::vec::Vec::with_capacity(2);
        let mut oneofs = ::std::vec::Vec::with_capacity(0);
        fields.push(::protobuf::reflect::rt::v2::make_simpler_field_accessor::<_, _>(
            "session_id",
            |m: &NewAudienceRequest| { &m.session_id },
            |m: &mut NewAudienceRequest| { &mut m.session_id },
        ));
        fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, super::sp_common::Audience>(
            "audience",
            |m: &NewAudienceRequest| { &m.audience },
            |m: &mut NewAudienceRequest| { &mut m.audience },
        ));
        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<NewAudienceRequest>(
            "NewAudienceRequest",
            fields,
            oneofs,
        )
    }
}

impl ::protobuf::Message for NewAudienceRequest {
    const NAME: &'static str = "NewAudienceRequest";

    fn is_initialized(&self) -> bool {
        true
    }

    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
        while let Some(tag) = is.read_raw_tag_or_eof()? {
            match tag {
                10 => {
                    self.session_id = is.read_string()?;
                },
                18 => {
                    ::protobuf::rt::read_singular_message_into_field(is, &mut self.audience)?;
                },
                tag => {
                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
                },
            };
        }
        ::std::result::Result::Ok(())
    }

    // Compute sizes of nested messages
    #[allow(unused_variables)]
    fn compute_size(&self) -> u64 {
        let mut my_size = 0;
        if !self.session_id.is_empty() {
            my_size += ::protobuf::rt::string_size(1, &self.session_id);
        }
        if let Some(v) = self.audience.as_ref() {
            let len = v.compute_size();
            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
        }
        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
        self.special_fields.cached_size().set(my_size as u32);
        my_size
    }

    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
        if !self.session_id.is_empty() {
            os.write_string(1, &self.session_id)?;
        }
        if let Some(v) = self.audience.as_ref() {
            ::protobuf::rt::write_message_field_with_cached_size(2, v, os)?;
        }
        os.write_unknown_fields(self.special_fields.unknown_fields())?;
        ::std::result::Result::Ok(())
    }

    fn special_fields(&self) -> &::protobuf::SpecialFields {
        &self.special_fields
    }

    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
        &mut self.special_fields
    }

    fn new() -> NewAudienceRequest {
        NewAudienceRequest::new()
    }

    fn clear(&mut self) {
        self.session_id.clear();
        self.audience.clear();
        self.special_fields.clear();
    }

    fn default_instance() -> &'static NewAudienceRequest {
        static instance: NewAudienceRequest = NewAudienceRequest {
            session_id: ::std::string::String::new(),
            audience: ::protobuf::MessageField::none(),
            special_fields: ::protobuf::SpecialFields::new(),
        };
        &instance
    }
}

impl ::protobuf::MessageFull for NewAudienceRequest {
    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
        descriptor.get(|| file_descriptor().message_by_package_relative_name("NewAudienceRequest").unwrap()).clone()
    }
}

impl ::std::fmt::Display for NewAudienceRequest {
    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
        ::protobuf::text_format::fmt(self, f)
    }
}

impl ::protobuf::reflect::ProtobufValue for NewAudienceRequest {
    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
}

///  Each consumer and producer should send periodic heartbeats to the server
///  to let the server know that they are still active.
// @@protoc_insertion_point(message:protos.HeartbeatRequest)
#[derive(PartialEq,Clone,Default,Debug)]
pub struct HeartbeatRequest {
    // message fields
    ///  Session ID for this instance of the SDK.
    // @@protoc_insertion_point(field:protos.HeartbeatRequest.session_id)
    pub session_id: ::std::string::String,
    ///  Name of the service that is sending the heartbeat. Used for refreshing registration
    // @@protoc_insertion_point(field:protos.HeartbeatRequest.service_name)
    pub service_name: ::std::string::String,
    ///  Used for refreshing live audience keys in the event that backing store
    ///  connection is lost and TTLed audience keys are lost
    // @@protoc_insertion_point(field:protos.HeartbeatRequest.audiences)
    pub audiences: ::std::vec::Vec<super::sp_common::Audience>,
    ///  Used for refreshing registration
    // @@protoc_insertion_point(field:protos.HeartbeatRequest.client_info)
    pub client_info: ::protobuf::MessageField<super::sp_info::ClientInfo>,
    // special fields
    // @@protoc_insertion_point(special_field:protos.HeartbeatRequest.special_fields)
    pub special_fields: ::protobuf::SpecialFields,
}

impl<'a> ::std::default::Default for &'a HeartbeatRequest {
    fn default() -> &'a HeartbeatRequest {
        <HeartbeatRequest as ::protobuf::Message>::default_instance()
    }
}

impl HeartbeatRequest {
    pub fn new() -> HeartbeatRequest {
        ::std::default::Default::default()
    }

    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
        let mut fields = ::std::vec::Vec::with_capacity(4);
        let mut oneofs = ::std::vec::Vec::with_capacity(0);
        fields.push(::protobuf::reflect::rt::v2::make_simpler_field_accessor::<_, _>(
            "session_id",
            |m: &HeartbeatRequest| { &m.session_id },
            |m: &mut HeartbeatRequest| { &mut m.session_id },
        ));
        fields.push(::protobuf::reflect::rt::v2::make_simpler_field_accessor::<_, _>(
            "service_name",
            |m: &HeartbeatRequest| { &m.service_name },
            |m: &mut HeartbeatRequest| { &mut m.service_name },
        ));
        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
            "audiences",
            |m: &HeartbeatRequest| { &m.audiences },
            |m: &mut HeartbeatRequest| { &mut m.audiences },
        ));
        fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, super::sp_info::ClientInfo>(
            "client_info",
            |m: &HeartbeatRequest| { &m.client_info },
            |m: &mut HeartbeatRequest| { &mut m.client_info },
        ));
        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<HeartbeatRequest>(
            "HeartbeatRequest",
            fields,
            oneofs,
        )
    }
}

impl ::protobuf::Message for HeartbeatRequest {
    const NAME: &'static str = "HeartbeatRequest";

    fn is_initialized(&self) -> bool {
        true
    }

    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
        while let Some(tag) = is.read_raw_tag_or_eof()? {
            match tag {
                10 => {
                    self.session_id = is.read_string()?;
                },
                18 => {
                    self.service_name = is.read_string()?;
                },
                26 => {
                    self.audiences.push(is.read_message()?);
                },
                34 => {
                    ::protobuf::rt::read_singular_message_into_field(is, &mut self.client_info)?;
                },
                tag => {
                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
                },
            };
        }
        ::std::result::Result::Ok(())
    }

    // Compute sizes of nested messages
    #[allow(unused_variables)]
    fn compute_size(&self) -> u64 {
        let mut my_size = 0;
        if !self.session_id.is_empty() {
            my_size += ::protobuf::rt::string_size(1, &self.session_id);
        }
        if !self.service_name.is_empty() {
            my_size += ::protobuf::rt::string_size(2, &self.service_name);
        }
        for value in &self.audiences {
            let len = value.compute_size();
            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
        };
        if let Some(v) = self.client_info.as_ref() {
            let len = v.compute_size();
            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
        }
        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
        self.special_fields.cached_size().set(my_size as u32);
        my_size
    }

    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
        if !self.session_id.is_empty() {
            os.write_string(1, &self.session_id)?;
        }
        if !self.service_name.is_empty() {
            os.write_string(2, &self.service_name)?;
        }
        for v in &self.audiences {
            ::protobuf::rt::write_message_field_with_cached_size(3, v, os)?;
        };
        if let Some(v) = self.client_info.as_ref() {
            ::protobuf::rt::write_message_field_with_cached_size(4, v, os)?;
        }
        os.write_unknown_fields(self.special_fields.unknown_fields())?;
        ::std::result::Result::Ok(())
    }

    fn special_fields(&self) -> &::protobuf::SpecialFields {
        &self.special_fields
    }

    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
        &mut self.special_fields
    }

    fn new() -> HeartbeatRequest {
        HeartbeatRequest::new()
    }

    fn clear(&mut self) {
        self.session_id.clear();
        self.service_name.clear();
        self.audiences.clear();
        self.client_info.clear();
        self.special_fields.clear();
    }

    fn default_instance() -> &'static HeartbeatRequest {
        static instance: HeartbeatRequest = HeartbeatRequest {
            session_id: ::std::string::String::new(),
            service_name: ::std::string::String::new(),
            audiences: ::std::vec::Vec::new(),
            client_info: ::protobuf::MessageField::none(),
            special_fields: ::protobuf::SpecialFields::new(),
        };
        &instance
    }
}

impl ::protobuf::MessageFull for HeartbeatRequest {
    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
        descriptor.get(|| file_descriptor().message_by_package_relative_name("HeartbeatRequest").unwrap()).clone()
    }
}

impl ::std::fmt::Display for HeartbeatRequest {
    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
        ::protobuf::text_format::fmt(self, f)
    }
}

impl ::protobuf::reflect::ProtobufValue for HeartbeatRequest {
    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
}

// @@protoc_insertion_point(message:protos.NotifyRequest)
#[derive(PartialEq,Clone,Default,Debug)]
pub struct NotifyRequest {
    // message fields
    // @@protoc_insertion_point(field:protos.NotifyRequest.pipeline_id)
    pub pipeline_id: ::std::string::String,
    // @@protoc_insertion_point(field:protos.NotifyRequest.step_name)
    pub step_name: ::std::string::String,
    // @@protoc_insertion_point(field:protos.NotifyRequest.audience)
    pub audience: ::protobuf::MessageField<super::sp_common::Audience>,
    // @@protoc_insertion_point(field:protos.NotifyRequest.occurred_at_unix_ts_utc)
    pub occurred_at_unix_ts_utc: i64,
    // special fields
    // @@protoc_insertion_point(special_field:protos.NotifyRequest.special_fields)
    pub special_fields: ::protobuf::SpecialFields,
}

impl<'a> ::std::default::Default for &'a NotifyRequest {
    fn default() -> &'a NotifyRequest {
        <NotifyRequest as ::protobuf::Message>::default_instance()
    }
}

impl NotifyRequest {
    pub fn new() -> NotifyRequest {
        ::std::default::Default::default()
    }

    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
        let mut fields = ::std::vec::Vec::with_capacity(4);
        let mut oneofs = ::std::vec::Vec::with_capacity(0);
        fields.push(::protobuf::reflect::rt::v2::make_simpler_field_accessor::<_, _>(
            "pipeline_id",
            |m: &NotifyRequest| { &m.pipeline_id },
            |m: &mut NotifyRequest| { &mut m.pipeline_id },
        ));
        fields.push(::protobuf::reflect::rt::v2::make_simpler_field_accessor::<_, _>(
            "step_name",
            |m: &NotifyRequest| { &m.step_name },
            |m: &mut NotifyRequest| { &mut m.step_name },
        ));
        fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, super::sp_common::Audience>(
            "audience",
            |m: &NotifyRequest| { &m.audience },
            |m: &mut NotifyRequest| { &mut m.audience },
        ));
        fields.push(::protobuf::reflect::rt::v2::make_simpler_field_accessor::<_, _>(
            "occurred_at_unix_ts_utc",
            |m: &NotifyRequest| { &m.occurred_at_unix_ts_utc },
            |m: &mut NotifyRequest| { &mut m.occurred_at_unix_ts_utc },
        ));
        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<NotifyRequest>(
            "NotifyRequest",
            fields,
            oneofs,
        )
    }
}

impl ::protobuf::Message for NotifyRequest {
    const NAME: &'static str = "NotifyRequest";

    fn is_initialized(&self) -> bool {
        true
    }

    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
        while let Some(tag) = is.read_raw_tag_or_eof()? {
            match tag {
                10 => {
                    self.pipeline_id = is.read_string()?;
                },
                18 => {
                    self.step_name = is.read_string()?;
                },
                26 => {
                    ::protobuf::rt::read_singular_message_into_field(is, &mut self.audience)?;
                },
                32 => {
                    self.occurred_at_unix_ts_utc = is.read_int64()?;
                },
                tag => {
                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
                },
            };
        }
        ::std::result::Result::Ok(())
    }

    // Compute sizes of nested messages
    #[allow(unused_variables)]
    fn compute_size(&self) -> u64 {
        let mut my_size = 0;
        if !self.pipeline_id.is_empty() {
            my_size += ::protobuf::rt::string_size(1, &self.pipeline_id);
        }
        if !self.step_name.is_empty() {
            my_size += ::protobuf::rt::string_size(2, &self.step_name);
        }
        if let Some(v) = self.audience.as_ref() {
            let len = v.compute_size();
            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
        }
        if self.occurred_at_unix_ts_utc != 0 {
            my_size += ::protobuf::rt::int64_size(4, self.occurred_at_unix_ts_utc);
        }
        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
        self.special_fields.cached_size().set(my_size as u32);
        my_size
    }

    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
        if !self.pipeline_id.is_empty() {
            os.write_string(1, &self.pipeline_id)?;
        }
        if !self.step_name.is_empty() {
            os.write_string(2, &self.step_name)?;
        }
        if let Some(v) = self.audience.as_ref() {
            ::protobuf::rt::write_message_field_with_cached_size(3, v, os)?;
        }
        if self.occurred_at_unix_ts_utc != 0 {
            os.write_int64(4, self.occurred_at_unix_ts_utc)?;
        }
        os.write_unknown_fields(self.special_fields.unknown_fields())?;
        ::std::result::Result::Ok(())
    }

    fn special_fields(&self) -> &::protobuf::SpecialFields {
        &self.special_fields
    }

    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
        &mut self.special_fields
    }

    fn new() -> NotifyRequest {
        NotifyRequest::new()
    }

    fn clear(&mut self) {
        self.pipeline_id.clear();
        self.step_name.clear();
        self.audience.clear();
        self.occurred_at_unix_ts_utc = 0;
        self.special_fields.clear();
    }

    fn default_instance() -> &'static NotifyRequest {
        static instance: NotifyRequest = NotifyRequest {
            pipeline_id: ::std::string::String::new(),
            step_name: ::std::string::String::new(),
            audience: ::protobuf::MessageField::none(),
            occurred_at_unix_ts_utc: 0,
            special_fields: ::protobuf::SpecialFields::new(),
        };
        &instance
    }
}

impl ::protobuf::MessageFull for NotifyRequest {
    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
        descriptor.get(|| file_descriptor().message_by_package_relative_name("NotifyRequest").unwrap()).clone()
    }
}

impl ::std::fmt::Display for NotifyRequest {
    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
        ::protobuf::text_format::fmt(self, f)
    }
}

impl ::protobuf::reflect::ProtobufValue for NotifyRequest {
    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
}

// @@protoc_insertion_point(message:protos.MetricsRequest)
#[derive(PartialEq,Clone,Default,Debug)]
pub struct MetricsRequest {
    // message fields
    // @@protoc_insertion_point(field:protos.MetricsRequest.metrics)
    pub metrics: ::std::vec::Vec<super::sp_common::Metric>,
    // special fields
    // @@protoc_insertion_point(special_field:protos.MetricsRequest.special_fields)
    pub special_fields: ::protobuf::SpecialFields,
}

impl<'a> ::std::default::Default for &'a MetricsRequest {
    fn default() -> &'a MetricsRequest {
        <MetricsRequest as ::protobuf::Message>::default_instance()
    }
}

impl MetricsRequest {
    pub fn new() -> MetricsRequest {
        ::std::default::Default::default()
    }

    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
        let mut fields = ::std::vec::Vec::with_capacity(1);
        let mut oneofs = ::std::vec::Vec::with_capacity(0);
        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
            "metrics",
            |m: &MetricsRequest| { &m.metrics },
            |m: &mut MetricsRequest| { &mut m.metrics },
        ));
        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<MetricsRequest>(
            "MetricsRequest",
            fields,
            oneofs,
        )
    }
}

impl ::protobuf::Message for MetricsRequest {
    const NAME: &'static str = "MetricsRequest";

    fn is_initialized(&self) -> bool {
        true
    }

    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
        while let Some(tag) = is.read_raw_tag_or_eof()? {
            match tag {
                10 => {
                    self.metrics.push(is.read_message()?);
                },
                tag => {
                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
                },
            };
        }
        ::std::result::Result::Ok(())
    }

    // Compute sizes of nested messages
    #[allow(unused_variables)]
    fn compute_size(&self) -> u64 {
        let mut my_size = 0;
        for value in &self.metrics {
            let len = value.compute_size();
            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
        };
        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
        self.special_fields.cached_size().set(my_size as u32);
        my_size
    }

    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
        for v in &self.metrics {
            ::protobuf::rt::write_message_field_with_cached_size(1, v, os)?;
        };
        os.write_unknown_fields(self.special_fields.unknown_fields())?;
        ::std::result::Result::Ok(())
    }

    fn special_fields(&self) -> &::protobuf::SpecialFields {
        &self.special_fields
    }

    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
        &mut self.special_fields
    }

    fn new() -> MetricsRequest {
        MetricsRequest::new()
    }

    fn clear(&mut self) {
        self.metrics.clear();
        self.special_fields.clear();
    }

    fn default_instance() -> &'static MetricsRequest {
        static instance: MetricsRequest = MetricsRequest {
            metrics: ::std::vec::Vec::new(),
            special_fields: ::protobuf::SpecialFields::new(),
        };
        &instance
    }
}

impl ::protobuf::MessageFull for MetricsRequest {
    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
        descriptor.get(|| file_descriptor().message_by_package_relative_name("MetricsRequest").unwrap()).clone()
    }
}

impl ::std::fmt::Display for MetricsRequest {
    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
        ::protobuf::text_format::fmt(self, f)
    }
}

impl ::protobuf::reflect::ProtobufValue for MetricsRequest {
    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
}

// @@protoc_insertion_point(message:protos.RegisterRequest)
#[derive(PartialEq,Clone,Default,Debug)]
pub struct RegisterRequest {
    // message fields
    ///  REQUIRED -- Name of the service that is registering.
    // @@protoc_insertion_point(field:protos.RegisterRequest.service_name)
    pub service_name: ::std::string::String,
    ///  REQUIRED -- Unique ID for this SDK instance.
    ///
    ///  This should be generated every time the SDK is instantiated (oe. every
    ///  time a NEW registration is performed).
    // @@protoc_insertion_point(field:protos.RegisterRequest.session_id)
    pub session_id: ::std::string::String,
    ///  REQUIRED -- Info about the client (lib name, lang, os, arch, etc.)
    // @@protoc_insertion_point(field:protos.RegisterRequest.client_info)
    pub client_info: ::protobuf::MessageField<super::sp_info::ClientInfo>,
    ///  OPTIONAL -- if these are defined, these will show up in the UI even if
    ///  there is no active .Process() call from the SDK.
    // @@protoc_insertion_point(field:protos.RegisterRequest.audiences)
    pub audiences: ::std::vec::Vec<super::sp_common::Audience>,
    ///  OPTIONAL -- If set, we know that any pipelines or steps executed in this
    ///  SDK will NOT modify the input/output data. As in, the SDK will log what it
    ///  _would_ do and always return the original data set.
    // @@protoc_insertion_point(field:protos.RegisterRequest.dry_run)
    pub dry_run: bool,
    // special fields
    // @@protoc_insertion_point(special_field:protos.RegisterRequest.special_fields)
    pub special_fields: ::protobuf::SpecialFields,
}

impl<'a> ::std::default::Default for &'a RegisterRequest {
    fn default() -> &'a RegisterRequest {
        <RegisterRequest as ::protobuf::Message>::default_instance()
    }
}

impl RegisterRequest {
    pub fn new() -> RegisterRequest {
        ::std::default::Default::default()
    }

    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
        let mut fields = ::std::vec::Vec::with_capacity(5);
        let mut oneofs = ::std::vec::Vec::with_capacity(0);
        fields.push(::protobuf::reflect::rt::v2::make_simpler_field_accessor::<_, _>(
            "service_name",
            |m: &RegisterRequest| { &m.service_name },
            |m: &mut RegisterRequest| { &mut m.service_name },
        ));
        fields.push(::protobuf::reflect::rt::v2::make_simpler_field_accessor::<_, _>(
            "session_id",
            |m: &RegisterRequest| { &m.session_id },
            |m: &mut RegisterRequest| { &mut m.session_id },
        ));
        fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, super::sp_info::ClientInfo>(
            "client_info",
            |m: &RegisterRequest| { &m.client_info },
            |m: &mut RegisterRequest| { &mut m.client_info },
        ));
        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
            "audiences",
            |m: &RegisterRequest| { &m.audiences },
            |m: &mut RegisterRequest| { &mut m.audiences },
        ));
        fields.push(::protobuf::reflect::rt::v2::make_simpler_field_accessor::<_, _>(
            "dry_run",
            |m: &RegisterRequest| { &m.dry_run },
            |m: &mut RegisterRequest| { &mut m.dry_run },
        ));
        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<RegisterRequest>(
            "RegisterRequest",
            fields,
            oneofs,
        )
    }
}

impl ::protobuf::Message for RegisterRequest {
    const NAME: &'static str = "RegisterRequest";

    fn is_initialized(&self) -> bool {
        true
    }

    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
        while let Some(tag) = is.read_raw_tag_or_eof()? {
            match tag {
                10 => {
                    self.service_name = is.read_string()?;
                },
                18 => {
                    self.session_id = is.read_string()?;
                },
                26 => {
                    ::protobuf::rt::read_singular_message_into_field(is, &mut self.client_info)?;
                },
                34 => {
                    self.audiences.push(is.read_message()?);
                },
                40 => {
                    self.dry_run = is.read_bool()?;
                },
                tag => {
                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
                },
            };
        }
        ::std::result::Result::Ok(())
    }

    // Compute sizes of nested messages
    #[allow(unused_variables)]
    fn compute_size(&self) -> u64 {
        let mut my_size = 0;
        if !self.service_name.is_empty() {
            my_size += ::protobuf::rt::string_size(1, &self.service_name);
        }
        if !self.session_id.is_empty() {
            my_size += ::protobuf::rt::string_size(2, &self.session_id);
        }
        if let Some(v) = self.client_info.as_ref() {
            let len = v.compute_size();
            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
        }
        for value in &self.audiences {
            let len = value.compute_size();
            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
        };
        if self.dry_run != false {
            my_size += 1 + 1;
        }
        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
        self.special_fields.cached_size().set(my_size as u32);
        my_size
    }

    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
        if !self.service_name.is_empty() {
            os.write_string(1, &self.service_name)?;
        }
        if !self.session_id.is_empty() {
            os.write_string(2, &self.session_id)?;
        }
        if let Some(v) = self.client_info.as_ref() {
            ::protobuf::rt::write_message_field_with_cached_size(3, v, os)?;
        }
        for v in &self.audiences {
            ::protobuf::rt::write_message_field_with_cached_size(4, v, os)?;
        };
        if self.dry_run != false {
            os.write_bool(5, self.dry_run)?;
        }
        os.write_unknown_fields(self.special_fields.unknown_fields())?;
        ::std::result::Result::Ok(())
    }

    fn special_fields(&self) -> &::protobuf::SpecialFields {
        &self.special_fields
    }

    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
        &mut self.special_fields
    }

    fn new() -> RegisterRequest {
        RegisterRequest::new()
    }

    fn clear(&mut self) {
        self.service_name.clear();
        self.session_id.clear();
        self.client_info.clear();
        self.audiences.clear();
        self.dry_run = false;
        self.special_fields.clear();
    }

    fn default_instance() -> &'static RegisterRequest {
        static instance: RegisterRequest = RegisterRequest {
            service_name: ::std::string::String::new(),
            session_id: ::std::string::String::new(),
            client_info: ::protobuf::MessageField::none(),
            audiences: ::std::vec::Vec::new(),
            dry_run: false,
            special_fields: ::protobuf::SpecialFields::new(),
        };
        &instance
    }
}

impl ::protobuf::MessageFull for RegisterRequest {
    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
        descriptor.get(|| file_descriptor().message_by_package_relative_name("RegisterRequest").unwrap()).clone()
    }
}

impl ::std::fmt::Display for RegisterRequest {
    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
        ::protobuf::text_format::fmt(self, f)
    }
}

impl ::protobuf::reflect::ProtobufValue for RegisterRequest {
    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
}

///  Same as RegisterRequest - used for broadcasting a deregistration event
// @@protoc_insertion_point(message:protos.DeregisterRequest)
#[derive(PartialEq,Clone,Default,Debug)]
pub struct DeregisterRequest {
    // message fields
    // @@protoc_insertion_point(field:protos.DeregisterRequest.service_name)
    pub service_name: ::std::string::String,
    // @@protoc_insertion_point(field:protos.DeregisterRequest.session_id)
    pub session_id: ::std::string::String,
    // special fields
    // @@protoc_insertion_point(special_field:protos.DeregisterRequest.special_fields)
    pub special_fields: ::protobuf::SpecialFields,
}

impl<'a> ::std::default::Default for &'a DeregisterRequest {
    fn default() -> &'a DeregisterRequest {
        <DeregisterRequest as ::protobuf::Message>::default_instance()
    }
}

impl DeregisterRequest {
    pub fn new() -> DeregisterRequest {
        ::std::default::Default::default()
    }

    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
        let mut fields = ::std::vec::Vec::with_capacity(2);
        let mut oneofs = ::std::vec::Vec::with_capacity(0);
        fields.push(::protobuf::reflect::rt::v2::make_simpler_field_accessor::<_, _>(
            "service_name",
            |m: &DeregisterRequest| { &m.service_name },
            |m: &mut DeregisterRequest| { &mut m.service_name },
        ));
        fields.push(::protobuf::reflect::rt::v2::make_simpler_field_accessor::<_, _>(
            "session_id",
            |m: &DeregisterRequest| { &m.session_id },
            |m: &mut DeregisterRequest| { &mut m.session_id },
        ));
        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<DeregisterRequest>(
            "DeregisterRequest",
            fields,
            oneofs,
        )
    }
}

impl ::protobuf::Message for DeregisterRequest {
    const NAME: &'static str = "DeregisterRequest";

    fn is_initialized(&self) -> bool {
        true
    }

    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
        while let Some(tag) = is.read_raw_tag_or_eof()? {
            match tag {
                10 => {
                    self.service_name = is.read_string()?;
                },
                18 => {
                    self.session_id = is.read_string()?;
                },
                tag => {
                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
                },
            };
        }
        ::std::result::Result::Ok(())
    }

    // Compute sizes of nested messages
    #[allow(unused_variables)]
    fn compute_size(&self) -> u64 {
        let mut my_size = 0;
        if !self.service_name.is_empty() {
            my_size += ::protobuf::rt::string_size(1, &self.service_name);
        }
        if !self.session_id.is_empty() {
            my_size += ::protobuf::rt::string_size(2, &self.session_id);
        }
        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
        self.special_fields.cached_size().set(my_size as u32);
        my_size
    }

    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
        if !self.service_name.is_empty() {
            os.write_string(1, &self.service_name)?;
        }
        if !self.session_id.is_empty() {
            os.write_string(2, &self.session_id)?;
        }
        os.write_unknown_fields(self.special_fields.unknown_fields())?;
        ::std::result::Result::Ok(())
    }

    fn special_fields(&self) -> &::protobuf::SpecialFields {
        &self.special_fields
    }

    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
        &mut self.special_fields
    }

    fn new() -> DeregisterRequest {
        DeregisterRequest::new()
    }

    fn clear(&mut self) {
        self.service_name.clear();
        self.session_id.clear();
        self.special_fields.clear();
    }

    fn default_instance() -> &'static DeregisterRequest {
        static instance: DeregisterRequest = DeregisterRequest {
            service_name: ::std::string::String::new(),
            session_id: ::std::string::String::new(),
            special_fields: ::protobuf::SpecialFields::new(),
        };
        &instance
    }
}

impl ::protobuf::MessageFull for DeregisterRequest {
    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
        descriptor.get(|| file_descriptor().message_by_package_relative_name("DeregisterRequest").unwrap()).clone()
    }
}

impl ::std::fmt::Display for DeregisterRequest {
    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
        ::protobuf::text_format::fmt(self, f)
    }
}

impl ::protobuf::reflect::ProtobufValue for DeregisterRequest {
    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
}

// @@protoc_insertion_point(message:protos.GetAttachCommandsByServiceRequest)
#[derive(PartialEq,Clone,Default,Debug)]
pub struct GetAttachCommandsByServiceRequest {
    // message fields
    // @@protoc_insertion_point(field:protos.GetAttachCommandsByServiceRequest.service_name)
    pub service_name: ::std::string::String,
    // special fields
    // @@protoc_insertion_point(special_field:protos.GetAttachCommandsByServiceRequest.special_fields)
    pub special_fields: ::protobuf::SpecialFields,
}

impl<'a> ::std::default::Default for &'a GetAttachCommandsByServiceRequest {
    fn default() -> &'a GetAttachCommandsByServiceRequest {
        <GetAttachCommandsByServiceRequest as ::protobuf::Message>::default_instance()
    }
}

impl GetAttachCommandsByServiceRequest {
    pub fn new() -> GetAttachCommandsByServiceRequest {
        ::std::default::Default::default()
    }

    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
        let mut fields = ::std::vec::Vec::with_capacity(1);
        let mut oneofs = ::std::vec::Vec::with_capacity(0);
        fields.push(::protobuf::reflect::rt::v2::make_simpler_field_accessor::<_, _>(
            "service_name",
            |m: &GetAttachCommandsByServiceRequest| { &m.service_name },
            |m: &mut GetAttachCommandsByServiceRequest| { &mut m.service_name },
        ));
        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<GetAttachCommandsByServiceRequest>(
            "GetAttachCommandsByServiceRequest",
            fields,
            oneofs,
        )
    }
}

impl ::protobuf::Message for GetAttachCommandsByServiceRequest {
    const NAME: &'static str = "GetAttachCommandsByServiceRequest";

    fn is_initialized(&self) -> bool {
        true
    }

    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
        while let Some(tag) = is.read_raw_tag_or_eof()? {
            match tag {
                10 => {
                    self.service_name = is.read_string()?;
                },
                tag => {
                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
                },
            };
        }
        ::std::result::Result::Ok(())
    }

    // Compute sizes of nested messages
    #[allow(unused_variables)]
    fn compute_size(&self) -> u64 {
        let mut my_size = 0;
        if !self.service_name.is_empty() {
            my_size += ::protobuf::rt::string_size(1, &self.service_name);
        }
        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
        self.special_fields.cached_size().set(my_size as u32);
        my_size
    }

    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
        if !self.service_name.is_empty() {
            os.write_string(1, &self.service_name)?;
        }
        os.write_unknown_fields(self.special_fields.unknown_fields())?;
        ::std::result::Result::Ok(())
    }

    fn special_fields(&self) -> &::protobuf::SpecialFields {
        &self.special_fields
    }

    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
        &mut self.special_fields
    }

    fn new() -> GetAttachCommandsByServiceRequest {
        GetAttachCommandsByServiceRequest::new()
    }

    fn clear(&mut self) {
        self.service_name.clear();
        self.special_fields.clear();
    }

    fn default_instance() -> &'static GetAttachCommandsByServiceRequest {
        static instance: GetAttachCommandsByServiceRequest = GetAttachCommandsByServiceRequest {
            service_name: ::std::string::String::new(),
            special_fields: ::protobuf::SpecialFields::new(),
        };
        &instance
    }
}

impl ::protobuf::MessageFull for GetAttachCommandsByServiceRequest {
    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
        descriptor.get(|| file_descriptor().message_by_package_relative_name("GetAttachCommandsByServiceRequest").unwrap()).clone()
    }
}

impl ::std::fmt::Display for GetAttachCommandsByServiceRequest {
    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
        ::protobuf::text_format::fmt(self, f)
    }
}

impl ::protobuf::reflect::ProtobufValue for GetAttachCommandsByServiceRequest {
    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
}

// @@protoc_insertion_point(message:protos.GetAttachCommandsByServiceResponse)
#[derive(PartialEq,Clone,Default,Debug)]
pub struct GetAttachCommandsByServiceResponse {
    // message fields
    ///  AttachCommands for all active pipelines
    // @@protoc_insertion_point(field:protos.GetAttachCommandsByServiceResponse.active)
    pub active: ::std::vec::Vec<super::sp_command::Command>,
    ///  AttachCommands, but ones which are paused
    ///  The SDK still needs to have these to support un-pausing
    // @@protoc_insertion_point(field:protos.GetAttachCommandsByServiceResponse.paused)
    pub paused: ::std::vec::Vec<super::sp_command::Command>,
    ///  ID = wasm ID
    // @@protoc_insertion_point(field:protos.GetAttachCommandsByServiceResponse.wasm_modules)
    pub wasm_modules: ::std::collections::HashMap<::std::string::String, WasmModule>,
    // special fields
    // @@protoc_insertion_point(special_field:protos.GetAttachCommandsByServiceResponse.special_fields)
    pub special_fields: ::protobuf::SpecialFields,
}

impl<'a> ::std::default::Default for &'a GetAttachCommandsByServiceResponse {
    fn default() -> &'a GetAttachCommandsByServiceResponse {
        <GetAttachCommandsByServiceResponse as ::protobuf::Message>::default_instance()
    }
}

impl GetAttachCommandsByServiceResponse {
    pub fn new() -> GetAttachCommandsByServiceResponse {
        ::std::default::Default::default()
    }

    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
        let mut fields = ::std::vec::Vec::with_capacity(3);
        let mut oneofs = ::std::vec::Vec::with_capacity(0);
        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
            "active",
            |m: &GetAttachCommandsByServiceResponse| { &m.active },
            |m: &mut GetAttachCommandsByServiceResponse| { &mut m.active },
        ));
        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
            "paused",
            |m: &GetAttachCommandsByServiceResponse| { &m.paused },
            |m: &mut GetAttachCommandsByServiceResponse| { &mut m.paused },
        ));
        fields.push(::protobuf::reflect::rt::v2::make_map_simpler_accessor::<_, _, _>(
            "wasm_modules",
            |m: &GetAttachCommandsByServiceResponse| { &m.wasm_modules },
            |m: &mut GetAttachCommandsByServiceResponse| { &mut m.wasm_modules },
        ));
        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<GetAttachCommandsByServiceResponse>(
            "GetAttachCommandsByServiceResponse",
            fields,
            oneofs,
        )
    }
}

impl ::protobuf::Message for GetAttachCommandsByServiceResponse {
    const NAME: &'static str = "GetAttachCommandsByServiceResponse";

    fn is_initialized(&self) -> bool {
        true
    }

    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
        while let Some(tag) = is.read_raw_tag_or_eof()? {
            match tag {
                10 => {
                    self.active.push(is.read_message()?);
                },
                18 => {
                    self.paused.push(is.read_message()?);
                },
                26 => {
                    let len = is.read_raw_varint32()?;
                    let old_limit = is.push_limit(len as u64)?;
                    let mut key = ::std::default::Default::default();
                    let mut value = ::std::default::Default::default();
                    while let Some(tag) = is.read_raw_tag_or_eof()? {
                        match tag {
                            10 => key = is.read_string()?,
                            18 => value = is.read_message()?,
                            _ => ::protobuf::rt::skip_field_for_tag(tag, is)?,
                        };
                    }
                    is.pop_limit(old_limit);
                    self.wasm_modules.insert(key, value);
                },
                tag => {
                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
                },
            };
        }
        ::std::result::Result::Ok(())
    }

    // Compute sizes of nested messages
    #[allow(unused_variables)]
    fn compute_size(&self) -> u64 {
        let mut my_size = 0;
        for value in &self.active {
            let len = value.compute_size();
            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
        };
        for value in &self.paused {
            let len = value.compute_size();
            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
        };
        for (k, v) in &self.wasm_modules {
            let mut entry_size = 0;
            entry_size += ::protobuf::rt::string_size(1, &k);
            let len = v.compute_size();
            entry_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(entry_size) + entry_size
        };
        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
        self.special_fields.cached_size().set(my_size as u32);
        my_size
    }

    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
        for v in &self.active {
            ::protobuf::rt::write_message_field_with_cached_size(1, v, os)?;
        };
        for v in &self.paused {
            ::protobuf::rt::write_message_field_with_cached_size(2, v, os)?;
        };
        for (k, v) in &self.wasm_modules {
            let mut entry_size = 0;
            entry_size += ::protobuf::rt::string_size(1, &k);
            let len = v.cached_size() as u64;
            entry_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
            os.write_raw_varint32(26)?; // Tag.
            os.write_raw_varint32(entry_size as u32)?;
            os.write_string(1, &k)?;
            ::protobuf::rt::write_message_field_with_cached_size(2, v, os)?;
        };
        os.write_unknown_fields(self.special_fields.unknown_fields())?;
        ::std::result::Result::Ok(())
    }

    fn special_fields(&self) -> &::protobuf::SpecialFields {
        &self.special_fields
    }

    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
        &mut self.special_fields
    }

    fn new() -> GetAttachCommandsByServiceResponse {
        GetAttachCommandsByServiceResponse::new()
    }

    fn clear(&mut self) {
        self.active.clear();
        self.paused.clear();
        self.wasm_modules.clear();
        self.special_fields.clear();
    }

    fn default_instance() -> &'static GetAttachCommandsByServiceResponse {
        static instance: ::protobuf::rt::Lazy<GetAttachCommandsByServiceResponse> = ::protobuf::rt::Lazy::new();
        instance.get(GetAttachCommandsByServiceResponse::new)
    }
}

impl ::protobuf::MessageFull for GetAttachCommandsByServiceResponse {
    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
        descriptor.get(|| file_descriptor().message_by_package_relative_name("GetAttachCommandsByServiceResponse").unwrap()).clone()
    }
}

impl ::std::fmt::Display for GetAttachCommandsByServiceResponse {
    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
        ::protobuf::text_format::fmt(self, f)
    }
}

impl ::protobuf::reflect::ProtobufValue for GetAttachCommandsByServiceResponse {
    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
}

///  WasmModule is used to ensure we only send the wasm module once per request
///  instead of duplicated in every pipeline where it is used. This prevents
///  over-sized payloads on SDK startup
// @@protoc_insertion_point(message:protos.WasmModule)
#[derive(PartialEq,Clone,Default,Debug)]
pub struct WasmModule {
    // message fields
    ///  ID is a uuid(sha256(_wasm_bytes)) that is set by streamdal server
    // @@protoc_insertion_point(field:protos.WasmModule.id)
    pub id: ::std::string::String,
    ///  WASM module bytes (set by server)
    // @@protoc_insertion_point(field:protos.WasmModule.bytes)
    pub bytes: ::std::vec::Vec<u8>,
    ///  WASM function name to execute (set by server)
    // @@protoc_insertion_point(field:protos.WasmModule.function)
    pub function: ::std::string::String,
    // special fields
    // @@protoc_insertion_point(special_field:protos.WasmModule.special_fields)
    pub special_fields: ::protobuf::SpecialFields,
}

impl<'a> ::std::default::Default for &'a WasmModule {
    fn default() -> &'a WasmModule {
        <WasmModule as ::protobuf::Message>::default_instance()
    }
}

impl WasmModule {
    pub fn new() -> WasmModule {
        ::std::default::Default::default()
    }

    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
        let mut fields = ::std::vec::Vec::with_capacity(3);
        let mut oneofs = ::std::vec::Vec::with_capacity(0);
        fields.push(::protobuf::reflect::rt::v2::make_simpler_field_accessor::<_, _>(
            "id",
            |m: &WasmModule| { &m.id },
            |m: &mut WasmModule| { &mut m.id },
        ));
        fields.push(::protobuf::reflect::rt::v2::make_simpler_field_accessor::<_, _>(
            "bytes",
            |m: &WasmModule| { &m.bytes },
            |m: &mut WasmModule| { &mut m.bytes },
        ));
        fields.push(::protobuf::reflect::rt::v2::make_simpler_field_accessor::<_, _>(
            "function",
            |m: &WasmModule| { &m.function },
            |m: &mut WasmModule| { &mut m.function },
        ));
        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<WasmModule>(
            "WasmModule",
            fields,
            oneofs,
        )
    }
}

impl ::protobuf::Message for WasmModule {
    const NAME: &'static str = "WasmModule";

    fn is_initialized(&self) -> bool {
        true
    }

    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
        while let Some(tag) = is.read_raw_tag_or_eof()? {
            match tag {
                10 => {
                    self.id = is.read_string()?;
                },
                18 => {
                    self.bytes = is.read_bytes()?;
                },
                26 => {
                    self.function = is.read_string()?;
                },
                tag => {
                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
                },
            };
        }
        ::std::result::Result::Ok(())
    }

    // Compute sizes of nested messages
    #[allow(unused_variables)]
    fn compute_size(&self) -> u64 {
        let mut my_size = 0;
        if !self.id.is_empty() {
            my_size += ::protobuf::rt::string_size(1, &self.id);
        }
        if !self.bytes.is_empty() {
            my_size += ::protobuf::rt::bytes_size(2, &self.bytes);
        }
        if !self.function.is_empty() {
            my_size += ::protobuf::rt::string_size(3, &self.function);
        }
        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
        self.special_fields.cached_size().set(my_size as u32);
        my_size
    }

    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
        if !self.id.is_empty() {
            os.write_string(1, &self.id)?;
        }
        if !self.bytes.is_empty() {
            os.write_bytes(2, &self.bytes)?;
        }
        if !self.function.is_empty() {
            os.write_string(3, &self.function)?;
        }
        os.write_unknown_fields(self.special_fields.unknown_fields())?;
        ::std::result::Result::Ok(())
    }

    fn special_fields(&self) -> &::protobuf::SpecialFields {
        &self.special_fields
    }

    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
        &mut self.special_fields
    }

    fn new() -> WasmModule {
        WasmModule::new()
    }

    fn clear(&mut self) {
        self.id.clear();
        self.bytes.clear();
        self.function.clear();
        self.special_fields.clear();
    }

    fn default_instance() -> &'static WasmModule {
        static instance: WasmModule = WasmModule {
            id: ::std::string::String::new(),
            bytes: ::std::vec::Vec::new(),
            function: ::std::string::String::new(),
            special_fields: ::protobuf::SpecialFields::new(),
        };
        &instance
    }
}

impl ::protobuf::MessageFull for WasmModule {
    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
        descriptor.get(|| file_descriptor().message_by_package_relative_name("WasmModule").unwrap()).clone()
    }
}

impl ::std::fmt::Display for WasmModule {
    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
        ::protobuf::text_format::fmt(self, f)
    }
}

impl ::protobuf::reflect::ProtobufValue for WasmModule {
    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
}

// @@protoc_insertion_point(message:protos.SendSchemaRequest)
#[derive(PartialEq,Clone,Default,Debug)]
pub struct SendSchemaRequest {
    // message fields
    // @@protoc_insertion_point(field:protos.SendSchemaRequest.audience)
    pub audience: ::protobuf::MessageField<super::sp_common::Audience>,
    // @@protoc_insertion_point(field:protos.SendSchemaRequest.schema)
    pub schema: ::protobuf::MessageField<super::sp_common::Schema>,
    // special fields
    // @@protoc_insertion_point(special_field:protos.SendSchemaRequest.special_fields)
    pub special_fields: ::protobuf::SpecialFields,
}

impl<'a> ::std::default::Default for &'a SendSchemaRequest {
    fn default() -> &'a SendSchemaRequest {
        <SendSchemaRequest as ::protobuf::Message>::default_instance()
    }
}

impl SendSchemaRequest {
    pub fn new() -> SendSchemaRequest {
        ::std::default::Default::default()
    }

    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
        let mut fields = ::std::vec::Vec::with_capacity(2);
        let mut oneofs = ::std::vec::Vec::with_capacity(0);
        fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, super::sp_common::Audience>(
            "audience",
            |m: &SendSchemaRequest| { &m.audience },
            |m: &mut SendSchemaRequest| { &mut m.audience },
        ));
        fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, super::sp_common::Schema>(
            "schema",
            |m: &SendSchemaRequest| { &m.schema },
            |m: &mut SendSchemaRequest| { &mut m.schema },
        ));
        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<SendSchemaRequest>(
            "SendSchemaRequest",
            fields,
            oneofs,
        )
    }
}

impl ::protobuf::Message for SendSchemaRequest {
    const NAME: &'static str = "SendSchemaRequest";

    fn is_initialized(&self) -> bool {
        true
    }

    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
        while let Some(tag) = is.read_raw_tag_or_eof()? {
            match tag {
                10 => {
                    ::protobuf::rt::read_singular_message_into_field(is, &mut self.audience)?;
                },
                18 => {
                    ::protobuf::rt::read_singular_message_into_field(is, &mut self.schema)?;
                },
                tag => {
                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
                },
            };
        }
        ::std::result::Result::Ok(())
    }

    // Compute sizes of nested messages
    #[allow(unused_variables)]
    fn compute_size(&self) -> u64 {
        let mut my_size = 0;
        if let Some(v) = self.audience.as_ref() {
            let len = v.compute_size();
            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
        }
        if let Some(v) = self.schema.as_ref() {
            let len = v.compute_size();
            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
        }
        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
        self.special_fields.cached_size().set(my_size as u32);
        my_size
    }

    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
        if let Some(v) = self.audience.as_ref() {
            ::protobuf::rt::write_message_field_with_cached_size(1, v, os)?;
        }
        if let Some(v) = self.schema.as_ref() {
            ::protobuf::rt::write_message_field_with_cached_size(2, v, os)?;
        }
        os.write_unknown_fields(self.special_fields.unknown_fields())?;
        ::std::result::Result::Ok(())
    }

    fn special_fields(&self) -> &::protobuf::SpecialFields {
        &self.special_fields
    }

    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
        &mut self.special_fields
    }

    fn new() -> SendSchemaRequest {
        SendSchemaRequest::new()
    }

    fn clear(&mut self) {
        self.audience.clear();
        self.schema.clear();
        self.special_fields.clear();
    }

    fn default_instance() -> &'static SendSchemaRequest {
        static instance: SendSchemaRequest = SendSchemaRequest {
            audience: ::protobuf::MessageField::none(),
            schema: ::protobuf::MessageField::none(),
            special_fields: ::protobuf::SpecialFields::new(),
        };
        &instance
    }
}

impl ::protobuf::MessageFull for SendSchemaRequest {
    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
        descriptor.get(|| file_descriptor().message_by_package_relative_name("SendSchemaRequest").unwrap()).clone()
    }
}

impl ::std::fmt::Display for SendSchemaRequest {
    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
        ::protobuf::text_format::fmt(self, f)
    }
}

impl ::protobuf::reflect::ProtobufValue for SendSchemaRequest {
    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
}

static file_descriptor_proto_data: &'static [u8] = b"\
    \n\x11sp_internal.proto\x12\x06protos\x1a\x10sp_command.proto\x1a\x0fsp_\
    common.proto\x1a\rsp_info.proto\"a\n\x12NewAudienceRequest\x12\x1d\n\nse\
    ssion_id\x18\x01\x20\x01(\tR\tsessionId\x12,\n\x08audience\x18\x02\x20\
    \x01(\x0b2\x10.protos.AudienceR\x08audience\"\xb9\x01\n\x10HeartbeatRequ\
    est\x12\x1d\n\nsession_id\x18\x01\x20\x01(\tR\tsessionId\x12!\n\x0cservi\
    ce_name\x18\x02\x20\x01(\tR\x0bserviceName\x12.\n\taudiences\x18\x03\x20\
    \x03(\x0b2\x10.protos.AudienceR\taudiences\x123\n\x0bclient_info\x18\x04\
    \x20\x01(\x0b2\x12.protos.ClientInfoR\nclientInfo\"\xb1\x01\n\rNotifyReq\
    uest\x12\x1f\n\x0bpipeline_id\x18\x01\x20\x01(\tR\npipelineId\x12\x1b\n\
    \tstep_name\x18\x02\x20\x01(\tR\x08stepName\x12,\n\x08audience\x18\x03\
    \x20\x01(\x0b2\x10.protos.AudienceR\x08audience\x124\n\x17occurred_at_un\
    ix_ts_utc\x18\x04\x20\x01(\x03R\x13occurredAtUnixTsUtc\":\n\x0eMetricsRe\
    quest\x12(\n\x07metrics\x18\x01\x20\x03(\x0b2\x0e.protos.MetricR\x07metr\
    ics\"\xd1\x01\n\x0fRegisterRequest\x12!\n\x0cservice_name\x18\x01\x20\
    \x01(\tR\x0bserviceName\x12\x1d\n\nsession_id\x18\x02\x20\x01(\tR\tsessi\
    onId\x123\n\x0bclient_info\x18\x03\x20\x01(\x0b2\x12.protos.ClientInfoR\
    \nclientInfo\x12.\n\taudiences\x18\x04\x20\x03(\x0b2\x10.protos.Audience\
    R\taudiences\x12\x17\n\x07dry_run\x18\x05\x20\x01(\x08R\x06dryRun\"U\n\
    \x11DeregisterRequest\x12!\n\x0cservice_name\x18\x01\x20\x01(\tR\x0bserv\
    iceName\x12\x1d\n\nsession_id\x18\x02\x20\x01(\tR\tsessionId\"F\n!GetAtt\
    achCommandsByServiceRequest\x12!\n\x0cservice_name\x18\x01\x20\x01(\tR\
    \x0bserviceName\"\xaa\x02\n\"GetAttachCommandsByServiceResponse\x12'\n\
    \x06active\x18\x01\x20\x03(\x0b2\x0f.protos.CommandR\x06active\x12'\n\
    \x06paused\x18\x02\x20\x03(\x0b2\x0f.protos.CommandR\x06paused\x12^\n\
    \x0cwasm_modules\x18\x03\x20\x03(\x0b2;.protos.GetAttachCommandsByServic\
    eResponse.WasmModulesEntryR\x0bwasmModules\x1aR\n\x10WasmModulesEntry\
    \x12\x10\n\x03key\x18\x01\x20\x01(\tR\x03key\x12(\n\x05value\x18\x02\x20\
    \x01(\x0b2\x12.protos.WasmModuleR\x05value:\x028\x01\"N\n\nWasmModule\
    \x12\x0e\n\x02id\x18\x01\x20\x01(\tR\x02id\x12\x14\n\x05bytes\x18\x02\
    \x20\x01(\x0cR\x05bytes\x12\x1a\n\x08function\x18\x03\x20\x01(\tR\x08fun\
    ction\"i\n\x11SendSchemaRequest\x12,\n\x08audience\x18\x01\x20\x01(\x0b2\
    \x10.protos.AudienceR\x08audience\x12&\n\x06schema\x18\x02\x20\x01(\x0b2\
    \x0e.protos.SchemaR\x06schema2\xb6\x04\n\x08Internal\x126\n\x08Register\
    \x12\x17.protos.RegisterRequest\x1a\x0f.protos.Command0\x01\x12C\n\x0bNe\
    wAudience\x12\x1a.protos.NewAudienceRequest\x1a\x18.protos.StandardRespo\
    nse\x12?\n\tHeartbeat\x12\x18.protos.HeartbeatRequest\x1a\x18.protos.Sta\
    ndardResponse\x129\n\x06Notify\x12\x15.protos.NotifyRequest\x1a\x18.prot\
    os.StandardResponse\x12;\n\x07Metrics\x12\x16.protos.MetricsRequest\x1a\
    \x18.protos.StandardResponse\x12s\n\x1aGetAttachCommandsByService\x12).p\
    rotos.GetAttachCommandsByServiceRequest\x1a*.protos.GetAttachCommandsByS\
    erviceResponse\x12<\n\x08SendTail\x12\x14.protos.TailResponse\x1a\x18.pr\
    otos.StandardResponse(\x01\x12A\n\nSendSchema\x12\x19.protos.SendSchemaR\
    equest\x1a\x18.protos.StandardResponseB-Z+github.com/streamdal/protos/bu\
    ild/go/protosJ\xa2'\n\x07\x12\x05\0\0\x8e\x01\x01\n\x08\n\x01\x0c\x12\
    \x03\0\0\x12\n\x08\n\x01\x02\x12\x03\x02\0\x0f\n\t\n\x02\x03\0\x12\x03\
    \x04\0\x1a\n\t\n\x02\x03\x01\x12\x03\x05\0\x19\n\t\n\x02\x03\x02\x12\x03\
    \x06\0\x17\n\x08\n\x01\x08\x12\x03\x08\0B\n\t\n\x02\x08\x0b\x12\x03\x08\
    \0B\n\n\n\x02\x06\0\x12\x04\n\0*\x01\n\n\n\x03\x06\0\x01\x12\x03\n\x08\
    \x10\n\xbc\x02\n\x04\x06\0\x02\0\x12\x03\x10\x02@\x1a\xae\x02\x20Initial\
    \x20method\x20that\x20an\x20SDK\x20should\x20call\x20to\x20register\x20i\
    tself\x20with\x20the\x20server.\n\x20The\x20server\x20will\x20use\x20thi\
    s\x20stream\x20to\x20send\x20commands\x20to\x20the\x20SDK\x20via\x20the\
    \n\x20`CommandResponse`\x20message.\x20Clients\x20should\x20continuously\
    \x20listen\x20for\n\x20CommandResponse\x20messages\x20and\x20re-establis\
    h\x20registration\x20if\x20the\x20stream\x20gets\n\x20disconnected.\n\n\
    \x0c\n\x05\x06\0\x02\0\x01\x12\x03\x10\x06\x0e\n\x0c\n\x05\x06\0\x02\0\
    \x02\x12\x03\x10\x0f\x1e\n\x0c\n\x05\x06\0\x02\0\x06\x12\x03\x10)/\n\x0c\
    \n\x05\x06\0\x02\0\x03\x12\x03\x100>\n\xb0\x01\n\x04\x06\0\x02\x01\x12\
    \x03\x15\x02A\x1a\xa2\x01\x20Declare\x20a\x20new\x20audience\x20that\x20\
    the\x20SDK\x20is\x20able\x20to\x20accept\x20commands\x20for.\n\x20An\x20\
    SDK\x20would\x20use\x20this\x20method\x20when\x20a\x20new\x20audience\
    \x20is\x20declared\x20by\x20the\x20user\n\x20via\x20`.Process()`.\n\n\
    \x0c\n\x05\x06\0\x02\x01\x01\x12\x03\x15\x06\x11\n\x0c\n\x05\x06\0\x02\
    \x01\x02\x12\x03\x15\x12$\n\x0c\n\x05\x06\0\x02\x01\x03\x12\x03\x15/?\n\
    \x84\x01\n\x04\x06\0\x02\x02\x12\x03\x19\x02=\x1aw\x20SDK\x20is\x20respo\
    nsible\x20for\x20sending\x20heartbeats\x20to\x20the\x20server\x20to\x20l\
    et\x20the\x20server\n\x20know\x20about\x20active\x20consumers\x20and\x20\
    producers.\n\n\x0c\n\x05\x06\0\x02\x02\x01\x12\x03\x19\x06\x0f\n\x0c\n\
    \x05\x06\0\x02\x02\x02\x12\x03\x19\x10\x20\n\x0c\n\x05\x06\0\x02\x02\x03\
    \x12\x03\x19+;\n\x86\x01\n\x04\x06\0\x02\x03\x12\x03\x1d\x027\x1ay\x20Us\
    e\x20this\x20method\x20when\x20Notify\x20condition\x20has\x20been\x20tri\
    ggered;\x20the\x20server\x20will\n\x20decide\x20on\x20what\x20to\x20do\
    \x20about\x20the\x20notification.\n\n\x0c\n\x05\x06\0\x02\x03\x01\x12\
    \x03\x1d\x06\x0c\n\x0c\n\x05\x06\0\x02\x03\x02\x12\x03\x1d\r\x1a\n\x0c\n\
    \x05\x06\0\x02\x03\x03\x12\x03\x1d%5\n2\n\x04\x06\0\x02\x04\x12\x03\x20\
    \x029\x1a%\x20Send\x20periodic\x20metrics\x20to\x20the\x20server\n\n\x0c\
    \n\x05\x06\0\x02\x04\x01\x12\x03\x20\x06\r\n\x0c\n\x05\x06\0\x02\x04\x02\
    \x12\x03\x20\x0e\x1c\n\x0c\n\x05\x06\0\x02\x04\x03\x12\x03\x20'7\n\x8a\
    \x01\n\x04\x06\0\x02\x05\x12\x03$\x02q\x1a}\x20Used\x20to\x20pull\x20all\
    \x20pipeline\x20configs\x20for\x20the\x20service\x20name\x20in\x20the\
    \x20SDK's\x20constructor\n\x20This\x20is\x20needed\x20because\x20Registe\
    r()\x20is\x20async\n\n\x0c\n\x05\x06\0\x02\x05\x01\x12\x03$\x06\x20\n\
    \x0c\n\x05\x06\0\x02\x05\x02\x12\x03$!B\n\x0c\n\x05\x06\0\x02\x05\x03\
    \x12\x03$Mo\n\x0b\n\x04\x06\0\x02\x06\x12\x03&\x02?\n\x0c\n\x05\x06\0\
    \x02\x06\x01\x12\x03&\x06\x0e\n\x0c\n\x05\x06\0\x02\x06\x05\x12\x03&\x0f\
    \x15\n\x0c\n\x05\x06\0\x02\x06\x02\x12\x03&\x16\"\n\x0c\n\x05\x06\0\x02\
    \x06\x03\x12\x03&-=\n=\n\x04\x06\0\x02\x07\x12\x03)\x02?\x1a0\x20Used\
    \x20by\x20SDK\x20to\x20send\x20a\x20new\x20schema\x20to\x20the\x20server\
    \n\n\x0c\n\x05\x06\0\x02\x07\x01\x12\x03)\x06\x10\n\x0c\n\x05\x06\0\x02\
    \x07\x02\x12\x03)\x11\"\n\x0c\n\x05\x06\0\x02\x07\x03\x12\x03)-=\n\n\n\
    \x02\x04\0\x12\x04,\02\x01\n\n\n\x03\x04\0\x01\x12\x03,\x08\x1a\n7\n\x04\
    \x04\0\x02\0\x12\x03.\x02\x18\x1a*\x20The\x20session\x20that\x20is\x20pe\
    rforming\x20this\x20call\n\n\x0c\n\x05\x04\0\x02\0\x05\x12\x03.\x02\x08\
    \n\x0c\n\x05\x04\0\x02\0\x01\x12\x03.\t\x13\n\x0c\n\x05\x04\0\x02\0\x03\
    \x12\x03.\x16\x17\n&\n\x04\x04\0\x02\x01\x12\x031\x02\x18\x1a\x19\x20New\
    ly\x20created\x20audience.\n\n\x0c\n\x05\x04\0\x02\x01\x06\x12\x031\x02\
    \n\n\x0c\n\x05\x04\0\x02\x01\x01\x12\x031\x0b\x13\n\x0c\n\x05\x04\0\x02\
    \x01\x03\x12\x031\x16\x17\n\x8a\x01\n\x02\x04\x01\x12\x046\0C\x01\x1a~\
    \x20Each\x20consumer\x20and\x20producer\x20should\x20send\x20periodic\
    \x20heartbeats\x20to\x20the\x20server\n\x20to\x20let\x20the\x20server\
    \x20know\x20that\x20they\x20are\x20still\x20active.\n\n\n\n\x03\x04\x01\
    \x01\x12\x036\x08\x18\n7\n\x04\x04\x01\x02\0\x12\x038\x02\x18\x1a*\x20Se\
    ssion\x20ID\x20for\x20this\x20instance\x20of\x20the\x20SDK.\n\n\x0c\n\
    \x05\x04\x01\x02\0\x05\x12\x038\x02\x08\n\x0c\n\x05\x04\x01\x02\0\x01\
    \x12\x038\t\x13\n\x0c\n\x05\x04\x01\x02\0\x03\x12\x038\x16\x17\nb\n\x04\
    \x04\x01\x02\x01\x12\x03;\x02\x1a\x1aU\x20Name\x20of\x20the\x20service\
    \x20that\x20is\x20sending\x20the\x20heartbeat.\x20Used\x20for\x20refresh\
    ing\x20registration\n\n\x0c\n\x05\x04\x01\x02\x01\x05\x12\x03;\x02\x08\n\
    \x0c\n\x05\x04\x01\x02\x01\x01\x12\x03;\t\x15\n\x0c\n\x05\x04\x01\x02\
    \x01\x03\x12\x03;\x18\x19\n\x8a\x01\n\x04\x04\x01\x02\x02\x12\x03?\x02\"\
    \x1a}\x20Used\x20for\x20refreshing\x20live\x20audience\x20keys\x20in\x20\
    the\x20event\x20that\x20backing\x20store\n\x20connection\x20is\x20lost\
    \x20and\x20TTLed\x20audience\x20keys\x20are\x20lost\n\n\x0c\n\x05\x04\
    \x01\x02\x02\x04\x12\x03?\x02\n\n\x0c\n\x05\x04\x01\x02\x02\x06\x12\x03?\
    \x0b\x13\n\x0c\n\x05\x04\x01\x02\x02\x01\x12\x03?\x14\x1d\n\x0c\n\x05\
    \x04\x01\x02\x02\x03\x12\x03?\x20!\n/\n\x04\x04\x01\x02\x03\x12\x03B\x02\
    $\x1a\"\x20Used\x20for\x20refreshing\x20registration\n\n\x0c\n\x05\x04\
    \x01\x02\x03\x06\x12\x03B\x02\x13\n\x0c\n\x05\x04\x01\x02\x03\x01\x12\
    \x03B\x14\x1f\n\x0c\n\x05\x04\x01\x02\x03\x03\x12\x03B\"#\n\n\n\x02\x04\
    \x02\x12\x04E\0J\x01\n\n\n\x03\x04\x02\x01\x12\x03E\x08\x15\n\x0b\n\x04\
    \x04\x02\x02\0\x12\x03F\x02\x19\n\x0c\n\x05\x04\x02\x02\0\x05\x12\x03F\
    \x02\x08\n\x0c\n\x05\x04\x02\x02\0\x01\x12\x03F\t\x14\n\x0c\n\x05\x04\
    \x02\x02\0\x03\x12\x03F\x17\x18\n\x0b\n\x04\x04\x02\x02\x01\x12\x03G\x02\
    \x17\n\x0c\n\x05\x04\x02\x02\x01\x05\x12\x03G\x02\x08\n\x0c\n\x05\x04\
    \x02\x02\x01\x01\x12\x03G\t\x12\n\x0c\n\x05\x04\x02\x02\x01\x03\x12\x03G\
    \x15\x16\n\x0b\n\x04\x04\x02\x02\x02\x12\x03H\x02\x18\n\x0c\n\x05\x04\
    \x02\x02\x02\x06\x12\x03H\x02\n\n\x0c\n\x05\x04\x02\x02\x02\x01\x12\x03H\
    \x0b\x13\n\x0c\n\x05\x04\x02\x02\x02\x03\x12\x03H\x16\x17\n\x0b\n\x04\
    \x04\x02\x02\x03\x12\x03I\x02$\n\x0c\n\x05\x04\x02\x02\x03\x05\x12\x03I\
    \x02\x07\n\x0c\n\x05\x04\x02\x02\x03\x01\x12\x03I\x08\x1f\n\x0c\n\x05\
    \x04\x02\x02\x03\x03\x12\x03I\"#\n\n\n\x02\x04\x03\x12\x04L\0N\x01\n\n\n\
    \x03\x04\x03\x01\x12\x03L\x08\x16\n\x0b\n\x04\x04\x03\x02\0\x12\x03M\x02\
    %\n\x0c\n\x05\x04\x03\x02\0\x04\x12\x03M\x02\n\n\x0c\n\x05\x04\x03\x02\0\
    \x06\x12\x03M\x0b\x18\n\x0c\n\x05\x04\x03\x02\0\x01\x12\x03M\x19\x20\n\
    \x0c\n\x05\x04\x03\x02\0\x03\x12\x03M#$\n\n\n\x02\x04\x04\x12\x04P\0e\
    \x01\n\n\n\x03\x04\x04\x01\x12\x03P\x08\x17\nC\n\x04\x04\x04\x02\0\x12\
    \x03R\x02\x1a\x1a6\x20REQUIRED\x20--\x20Name\x20of\x20the\x20service\x20\
    that\x20is\x20registering.\n\n\x0c\n\x05\x04\x04\x02\0\x05\x12\x03R\x02\
    \x08\n\x0c\n\x05\x04\x04\x02\0\x01\x12\x03R\t\x15\n\x0c\n\x05\x04\x04\
    \x02\0\x03\x12\x03R\x18\x19\n\xad\x01\n\x04\x04\x04\x02\x01\x12\x03X\x02\
    \x18\x1a\x9f\x01\x20REQUIRED\x20--\x20Unique\x20ID\x20for\x20this\x20SDK\
    \x20instance.\n\n\x20This\x20should\x20be\x20generated\x20every\x20time\
    \x20the\x20SDK\x20is\x20instantiated\x20(oe.\x20every\n\x20time\x20a\x20\
    NEW\x20registration\x20is\x20performed).\n\n\x0c\n\x05\x04\x04\x02\x01\
    \x05\x12\x03X\x02\x08\n\x0c\n\x05\x04\x04\x02\x01\x01\x12\x03X\t\x13\n\
    \x0c\n\x05\x04\x04\x02\x01\x03\x12\x03X\x16\x17\nQ\n\x04\x04\x04\x02\x02\
    \x12\x03[\x02$\x1aD\x20REQUIRED\x20--\x20Info\x20about\x20the\x20client\
    \x20(lib\x20name,\x20lang,\x20os,\x20arch,\x20etc.)\n\n\x0c\n\x05\x04\
    \x04\x02\x02\x06\x12\x03[\x02\x13\n\x0c\n\x05\x04\x04\x02\x02\x01\x12\
    \x03[\x14\x1f\n\x0c\n\x05\x04\x04\x02\x02\x03\x12\x03[\"#\n\x87\x01\n\
    \x04\x04\x04\x02\x03\x12\x03_\x02)\x1az\x20OPTIONAL\x20--\x20if\x20these\
    \x20are\x20defined,\x20these\x20will\x20show\x20up\x20in\x20the\x20UI\
    \x20even\x20if\n\x20there\x20is\x20no\x20active\x20.Process()\x20call\
    \x20from\x20the\x20SDK.\n\n\x0c\n\x05\x04\x04\x02\x03\x04\x12\x03_\x02\n\
    \n\x0c\n\x05\x04\x04\x02\x03\x06\x12\x03_\x0b\x1a\n\x0c\n\x05\x04\x04\
    \x02\x03\x01\x12\x03_\x1b$\n\x0c\n\x05\x04\x04\x02\x03\x03\x12\x03_'(\n\
    \xd9\x01\n\x04\x04\x04\x02\x04\x12\x03d\x02\x13\x1a\xcb\x01\x20OPTIONAL\
    \x20--\x20If\x20set,\x20we\x20know\x20that\x20any\x20pipelines\x20or\x20\
    steps\x20executed\x20in\x20this\n\x20SDK\x20will\x20NOT\x20modify\x20the\
    \x20input/output\x20data.\x20As\x20in,\x20the\x20SDK\x20will\x20log\x20w\
    hat\x20it\n\x20_would_\x20do\x20and\x20always\x20return\x20the\x20origin\
    al\x20data\x20set.\n\n\x0c\n\x05\x04\x04\x02\x04\x05\x12\x03d\x02\x06\n\
    \x0c\n\x05\x04\x04\x02\x04\x01\x12\x03d\x07\x0e\n\x0c\n\x05\x04\x04\x02\
    \x04\x03\x12\x03d\x11\x12\nT\n\x02\x04\x05\x12\x04h\0k\x01\x1aH\x20Same\
    \x20as\x20RegisterRequest\x20-\x20used\x20for\x20broadcasting\x20a\x20de\
    registration\x20event\n\n\n\n\x03\x04\x05\x01\x12\x03h\x08\x19\n\x0b\n\
    \x04\x04\x05\x02\0\x12\x03i\x02\x1a\n\x0c\n\x05\x04\x05\x02\0\x05\x12\
    \x03i\x02\x08\n\x0c\n\x05\x04\x05\x02\0\x01\x12\x03i\t\x15\n\x0c\n\x05\
    \x04\x05\x02\0\x03\x12\x03i\x18\x19\n\x0b\n\x04\x04\x05\x02\x01\x12\x03j\
    \x02\x18\n\x0c\n\x05\x04\x05\x02\x01\x05\x12\x03j\x02\x08\n\x0c\n\x05\
    \x04\x05\x02\x01\x01\x12\x03j\t\x13\n\x0c\n\x05\x04\x05\x02\x01\x03\x12\
    \x03j\x16\x17\n\n\n\x02\x04\x06\x12\x04m\0o\x01\n\n\n\x03\x04\x06\x01\
    \x12\x03m\x08)\n\x0b\n\x04\x04\x06\x02\0\x12\x03n\x02\x1a\n\x0c\n\x05\
    \x04\x06\x02\0\x05\x12\x03n\x02\x08\n\x0c\n\x05\x04\x06\x02\0\x01\x12\
    \x03n\t\x15\n\x0c\n\x05\x04\x06\x02\0\x03\x12\x03n\x18\x19\n\n\n\x02\x04\
    \x07\x12\x04q\0{\x01\n\n\n\x03\x04\x07\x01\x12\x03q\x08*\n6\n\x04\x04\
    \x07\x02\0\x12\x03s\x02%\x1a)\x20AttachCommands\x20for\x20all\x20active\
    \x20pipelines\n\n\x0c\n\x05\x04\x07\x02\0\x04\x12\x03s\x02\n\n\x0c\n\x05\
    \x04\x07\x02\0\x06\x12\x03s\x0b\x19\n\x0c\n\x05\x04\x07\x02\0\x01\x12\
    \x03s\x1a\x20\n\x0c\n\x05\x04\x07\x02\0\x03\x12\x03s#$\nq\n\x04\x04\x07\
    \x02\x01\x12\x03w\x02%\x1ad\x20AttachCommands,\x20but\x20ones\x20which\
    \x20are\x20paused\n\x20The\x20SDK\x20still\x20needs\x20to\x20have\x20the\
    se\x20to\x20support\x20un-pausing\n\n\x0c\n\x05\x04\x07\x02\x01\x04\x12\
    \x03w\x02\n\n\x0c\n\x05\x04\x07\x02\x01\x06\x12\x03w\x0b\x19\n\x0c\n\x05\
    \x04\x07\x02\x01\x01\x12\x03w\x1a\x20\n\x0c\n\x05\x04\x07\x02\x01\x03\
    \x12\x03w#$\n\x1b\n\x04\x04\x07\x02\x02\x12\x03z\x02*\x1a\x0e\x20ID\x20=\
    \x20wasm\x20ID\n\n\x0c\n\x05\x04\x07\x02\x02\x06\x12\x03z\x02\x18\n\x0c\
    \n\x05\x04\x07\x02\x02\x01\x12\x03z\x19%\n\x0c\n\x05\x04\x07\x02\x02\x03\
    \x12\x03z()\n\xc8\x01\n\x02\x04\x08\x12\x06\x80\x01\0\x89\x01\x01\x1a\
    \xb9\x01\x20WasmModule\x20is\x20used\x20to\x20ensure\x20we\x20only\x20se\
    nd\x20the\x20wasm\x20module\x20once\x20per\x20request\n\x20instead\x20of\
    \x20duplicated\x20in\x20every\x20pipeline\x20where\x20it\x20is\x20used.\
    \x20This\x20prevents\n\x20over-sized\x20payloads\x20on\x20SDK\x20startup\
    \n\n\x0b\n\x03\x04\x08\x01\x12\x04\x80\x01\x08\x12\nQ\n\x04\x04\x08\x02\
    \0\x12\x04\x82\x01\x02\x10\x1aC\x20ID\x20is\x20a\x20uuid(sha256(_wasm_by\
    tes))\x20that\x20is\x20set\x20by\x20streamdal\x20server\n\n\r\n\x05\x04\
    \x08\x02\0\x05\x12\x04\x82\x01\x02\x08\n\r\n\x05\x04\x08\x02\0\x01\x12\
    \x04\x82\x01\t\x0b\n\r\n\x05\x04\x08\x02\0\x03\x12\x04\x82\x01\x0e\x0f\n\
    1\n\x04\x04\x08\x02\x01\x12\x04\x85\x01\x02\x12\x1a#\x20WASM\x20module\
    \x20bytes\x20(set\x20by\x20server)\n\n\r\n\x05\x04\x08\x02\x01\x05\x12\
    \x04\x85\x01\x02\x07\n\r\n\x05\x04\x08\x02\x01\x01\x12\x04\x85\x01\x08\r\
    \n\r\n\x05\x04\x08\x02\x01\x03\x12\x04\x85\x01\x10\x11\n=\n\x04\x04\x08\
    \x02\x02\x12\x04\x88\x01\x02\x16\x1a/\x20WASM\x20function\x20name\x20to\
    \x20execute\x20(set\x20by\x20server)\n\n\r\n\x05\x04\x08\x02\x02\x05\x12\
    \x04\x88\x01\x02\x08\n\r\n\x05\x04\x08\x02\x02\x01\x12\x04\x88\x01\t\x11\
    \n\r\n\x05\x04\x08\x02\x02\x03\x12\x04\x88\x01\x14\x15\n\x0c\n\x02\x04\t\
    \x12\x06\x8b\x01\0\x8e\x01\x01\n\x0b\n\x03\x04\t\x01\x12\x04\x8b\x01\x08\
    \x19\n\x0c\n\x04\x04\t\x02\0\x12\x04\x8c\x01\x02\x18\n\r\n\x05\x04\t\x02\
    \0\x06\x12\x04\x8c\x01\x02\n\n\r\n\x05\x04\t\x02\0\x01\x12\x04\x8c\x01\
    \x0b\x13\n\r\n\x05\x04\t\x02\0\x03\x12\x04\x8c\x01\x16\x17\n\x0c\n\x04\
    \x04\t\x02\x01\x12\x04\x8d\x01\x02\x14\n\r\n\x05\x04\t\x02\x01\x06\x12\
    \x04\x8d\x01\x02\x08\n\r\n\x05\x04\t\x02\x01\x01\x12\x04\x8d\x01\t\x0f\n\
    \r\n\x05\x04\t\x02\x01\x03\x12\x04\x8d\x01\x12\x13b\x06proto3\
";

/// `FileDescriptorProto` object which was a source for this generated file
fn file_descriptor_proto() -> &'static ::protobuf::descriptor::FileDescriptorProto {
    static file_descriptor_proto_lazy: ::protobuf::rt::Lazy<::protobuf::descriptor::FileDescriptorProto> = ::protobuf::rt::Lazy::new();
    file_descriptor_proto_lazy.get(|| {
        ::protobuf::Message::parse_from_bytes(file_descriptor_proto_data).unwrap()
    })
}

/// `FileDescriptor` object which allows dynamic access to files
pub fn file_descriptor() -> &'static ::protobuf::reflect::FileDescriptor {
    static generated_file_descriptor_lazy: ::protobuf::rt::Lazy<::protobuf::reflect::GeneratedFileDescriptor> = ::protobuf::rt::Lazy::new();
    static file_descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::FileDescriptor> = ::protobuf::rt::Lazy::new();
    file_descriptor.get(|| {
        let generated_file_descriptor = generated_file_descriptor_lazy.get(|| {
            let mut deps = ::std::vec::Vec::with_capacity(3);
            deps.push(super::sp_command::file_descriptor().clone());
            deps.push(super::sp_common::file_descriptor().clone());
            deps.push(super::sp_info::file_descriptor().clone());
            let mut messages = ::std::vec::Vec::with_capacity(10);
            messages.push(NewAudienceRequest::generated_message_descriptor_data());
            messages.push(HeartbeatRequest::generated_message_descriptor_data());
            messages.push(NotifyRequest::generated_message_descriptor_data());
            messages.push(MetricsRequest::generated_message_descriptor_data());
            messages.push(RegisterRequest::generated_message_descriptor_data());
            messages.push(DeregisterRequest::generated_message_descriptor_data());
            messages.push(GetAttachCommandsByServiceRequest::generated_message_descriptor_data());
            messages.push(GetAttachCommandsByServiceResponse::generated_message_descriptor_data());
            messages.push(WasmModule::generated_message_descriptor_data());
            messages.push(SendSchemaRequest::generated_message_descriptor_data());
            let mut enums = ::std::vec::Vec::with_capacity(0);
            ::protobuf::reflect::GeneratedFileDescriptor::new_generated(
                file_descriptor_proto(),
                deps,
                messages,
                enums,
            )
        });
        ::protobuf::reflect::FileDescriptor::new_generated_2(generated_file_descriptor)
    })
}
