// This file is @generated by prost-build.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ProcedureState {
    #[prost(map = "string, message", tag = "1")]
    pub global_fields: ::std::collections::HashMap<
        ::prost::alloc::string::String,
        FormField,
    >,
    #[prost(message, repeated, tag = "5")]
    pub new_global_fields: ::prost::alloc::vec::Vec<FormField>,
    #[prost(map = "string, message", tag = "2")]
    pub nodes: ::std::collections::HashMap<
        ::prost::alloc::string::String,
        ProcedureNode,
    >,
    #[prost(map = "string, message", tag = "3")]
    pub section_edges: ::std::collections::HashMap<
        ::prost::alloc::string::String,
        NodeList,
    >,
    #[prost(map = "string, message", tag = "4")]
    pub step_edges: ::std::collections::HashMap<
        ::prost::alloc::string::String,
        NodeList,
    >,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ProcedureDisplayGraph {
    #[prost(string, repeated, tag = "1")]
    pub top_level_nodes: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
    #[prost(map = "string, message", tag = "2")]
    pub section_to_sorted_children: ::std::collections::HashMap<
        ::prost::alloc::string::String,
        NodeList,
    >,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct NestedProcedure {
    #[prost(string, tag = "1")]
    pub title: ::prost::alloc::string::String,
    #[prost(string, optional, tag = "2")]
    pub description: ::core::option::Option<::prost::alloc::string::String>,
    #[prost(message, repeated, tag = "3")]
    pub steps: ::prost::alloc::vec::Vec<NestedProcedureNode>,
    #[prost(map = "string, message", tag = "4")]
    pub global_fields: ::std::collections::HashMap<
        ::prost::alloc::string::String,
        FormField,
    >,
    #[prost(message, repeated, tag = "5")]
    pub new_global_fields: ::prost::alloc::vec::Vec<FormField>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct NodeList {
    #[prost(string, repeated, tag = "1")]
    pub node_ids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ProcedureNode {
    #[prost(oneof = "procedure_node::Node", tags = "1, 2")]
    pub node: ::core::option::Option<procedure_node::Node>,
}
/// Nested message and enum types in `ProcedureNode`.
pub mod procedure_node {
    #[derive(Clone, PartialEq, ::prost::Oneof)]
    pub enum Node {
        #[prost(message, tag = "1")]
        Section(super::ProcedureSectionNode),
        #[prost(message, tag = "2")]
        Step(super::ProcedureStepNode),
    }
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ProcedureSectionNode {
    #[prost(string, tag = "1")]
    pub id: ::prost::alloc::string::String,
    #[prost(string, tag = "2")]
    pub title: ::prost::alloc::string::String,
    #[prost(string, optional, tag = "3")]
    pub description: ::core::option::Option<::prost::alloc::string::String>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ProcedureStepNode {
    #[prost(string, tag = "1")]
    pub id: ::prost::alloc::string::String,
    #[prost(string, tag = "2")]
    pub title: ::prost::alloc::string::String,
    #[prost(message, optional, tag = "3")]
    pub content: ::core::option::Option<ProcedureStepContent>,
    #[prost(string, optional, tag = "5")]
    pub description: ::core::option::Option<::prost::alloc::string::String>,
    #[prost(bool, optional, tag = "6")]
    pub is_required: ::core::option::Option<bool>,
    #[prost(message, optional, tag = "7")]
    pub auto_start: ::core::option::Option<AutoStartConfig>,
    #[prost(message, optional, tag = "8")]
    pub initial_auto_proceed_config: ::core::option::Option<AutoProceedConfig>,
    #[prost(message, optional, tag = "9")]
    pub success_condition: ::core::option::Option<SuccessCondition>,
    #[prost(message, repeated, tag = "10")]
    pub completion_action_configs: ::prost::alloc::vec::Vec<CompletionActionConfig>,
    #[prost(string, repeated, tag = "11")]
    pub attachments: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct NestedProcedureNode {
    #[prost(string, tag = "5")]
    pub id: ::prost::alloc::string::String,
    #[prost(string, tag = "1")]
    pub title: ::prost::alloc::string::String,
    #[prost(string, optional, tag = "2")]
    pub description: ::core::option::Option<::prost::alloc::string::String>,
    #[prost(message, repeated, tag = "3")]
    pub steps: ::prost::alloc::vec::Vec<NestedProcedureNode>,
    #[prost(message, optional, tag = "4")]
    pub step: ::core::option::Option<nested_procedure_node::NestedStepNode>,
}
/// Nested message and enum types in `NestedProcedureNode`.
pub mod nested_procedure_node {
    #[derive(Clone, PartialEq, ::prost::Message)]
    pub struct NestedStepNode {
        #[prost(bool, optional, tag = "2")]
        pub is_required: ::core::option::Option<bool>,
        #[prost(message, optional, tag = "3")]
        pub auto_start: ::core::option::Option<super::AutoStartConfig>,
        #[prost(message, optional, tag = "4")]
        pub initial_auto_proceed_config: ::core::option::Option<
            super::AutoProceedConfig,
        >,
        #[prost(message, optional, tag = "5")]
        pub success_condition: ::core::option::Option<super::SuccessCondition>,
        #[prost(message, repeated, tag = "6")]
        pub completion_action_configs: ::prost::alloc::vec::Vec<
            super::CompletionActionConfig,
        >,
        #[prost(string, repeated, tag = "51")]
        pub attachments: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
        #[prost(oneof = "nested_step_node::Content", tags = "7, 8, 9, 10")]
        pub content: ::core::option::Option<nested_step_node::Content>,
    }
    /// Nested message and enum types in `NestedStepNode`.
    pub mod nested_step_node {
        #[derive(Clone, PartialEq, ::prost::Oneof)]
        pub enum Content {
            #[prost(message, tag = "7")]
            Form(super::super::FormStep),
            #[prost(message, tag = "8")]
            StartIngest(super::super::StartIngestStep),
            #[prost(message, tag = "9")]
            SelectOrCreateAsset(super::super::SelectOrCreateAssetStep),
            #[prost(message, tag = "10")]
            Wait(super::super::WaitStep),
        }
    }
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct AutoStartConfig {
    #[prost(oneof = "auto_start_config::Config", tags = "1, 2")]
    pub config: ::core::option::Option<auto_start_config::Config>,
}
/// Nested message and enum types in `AutoStartConfig`.
pub mod auto_start_config {
    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
    pub struct AllParents {}
    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
    pub struct Disabled {}
    #[derive(Clone, Copy, PartialEq, ::prost::Oneof)]
    pub enum Config {
        #[prost(message, tag = "1")]
        AllParents(AllParents),
        #[prost(message, tag = "2")]
        Disabled(Disabled),
    }
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct AutoProceedConfig {
    #[prost(oneof = "auto_proceed_config::Config", tags = "1, 2")]
    pub config: ::core::option::Option<auto_proceed_config::Config>,
}
/// Nested message and enum types in `AutoProceedConfig`.
pub mod auto_proceed_config {
    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
    pub struct Disabled {}
    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
    pub struct Enabled {}
    #[derive(Clone, Copy, PartialEq, ::prost::Oneof)]
    pub enum Config {
        #[prost(message, tag = "1")]
        Disabled(Disabled),
        #[prost(message, tag = "2")]
        Enabled(Enabled),
    }
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct SuccessCondition {
    #[prost(oneof = "success_condition::Condition", tags = "1, 2, 3, 4, 5")]
    pub condition: ::core::option::Option<success_condition::Condition>,
}
/// Nested message and enum types in `SuccessCondition`.
pub mod success_condition {
    #[derive(Clone, PartialEq, ::prost::Oneof)]
    pub enum Condition {
        #[prost(message, tag = "1")]
        And(super::AndSuccessCondition),
        #[prost(message, tag = "2")]
        Timer(super::TimerSuccessCondition),
        #[prost(message, tag = "3")]
        IngestJob(super::IngestJobSuccessCondition),
        #[prost(message, tag = "4")]
        ChannelValidation(super::ChannelValidationSuccessCondition),
        #[prost(message, tag = "5")]
        Webhook(super::WebhookSuccessCondition),
    }
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct AndSuccessCondition {
    #[prost(message, repeated, tag = "1")]
    pub conditions: ::prost::alloc::vec::Vec<SuccessCondition>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct TimerSuccessCondition {
    #[prost(int32, tag = "1")]
    pub duration_seconds: i32,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct IngestJobSuccessCondition {
    #[prost(string, tag = "1")]
    pub field_id: ::prost::alloc::string::String,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ChannelLocator {
    #[prost(string, tag = "1")]
    pub data_source_ref: ::prost::alloc::string::String,
    #[prost(string, tag = "2")]
    pub channel_name: ::prost::alloc::string::String,
    #[prost(map = "string, string", tag = "3")]
    pub tags: ::std::collections::HashMap<
        ::prost::alloc::string::String,
        ::prost::alloc::string::String,
    >,
    #[prost(oneof = "channel_locator::AssetOrRun", tags = "4, 5")]
    pub asset_or_run: ::core::option::Option<channel_locator::AssetOrRun>,
}
/// Nested message and enum types in `ChannelLocator`.
pub mod channel_locator {
    #[derive(Clone, PartialEq, ::prost::Oneof)]
    pub enum AssetOrRun {
        #[prost(message, tag = "4")]
        Asset(super::AssetReference),
        #[prost(message, tag = "5")]
        Run(super::RunReference),
    }
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ChannelCaptureConfig {
    #[prost(string, tag = "1")]
    pub output_field_id: ::prost::alloc::string::String,
    #[prost(enumeration = "CaptureMoment", repeated, packed = "false", tag = "2")]
    pub capture_moments: ::prost::alloc::vec::Vec<i32>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ChannelValidationSuccessCondition {
    #[prost(message, optional, tag = "1")]
    pub channel: ::core::option::Option<ChannelLocator>,
    #[prost(enumeration = "channel_validation_success_condition::Comparator", tag = "2")]
    pub comparator: i32,
    #[prost(double, tag = "3")]
    pub threshold: f64,
    #[prost(int32, tag = "4")]
    pub timeout_millis: i32,
    #[prost(uint32, optional, tag = "5")]
    pub point_persistence: ::core::option::Option<u32>,
    #[prost(uint32, optional, tag = "6")]
    pub time_persistence: ::core::option::Option<u32>,
    #[prost(message, repeated, tag = "7")]
    pub channel_captures: ::prost::alloc::vec::Vec<ChannelCaptureConfig>,
}
/// Nested message and enum types in `ChannelValidationSuccessCondition`.
pub mod channel_validation_success_condition {
    #[derive(
        Clone,
        Copy,
        Debug,
        PartialEq,
        Eq,
        Hash,
        PartialOrd,
        Ord,
        ::prost::Enumeration
    )]
    #[repr(i32)]
    pub enum Comparator {
        Unspecified = 0,
        GreaterThan = 1,
        GreaterThanOrEqual = 2,
        LessThan = 3,
        LessThanOrEqual = 4,
        Equal = 5,
        NotEqual = 6,
        Exists = 7,
    }
    impl Comparator {
        /// String value of the enum field names used in the ProtoBuf definition.
        ///
        /// The values are not transformed in any way and thus are considered stable
        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
        pub fn as_str_name(&self) -> &'static str {
            match self {
                Self::Unspecified => "COMPARATOR_UNSPECIFIED",
                Self::GreaterThan => "COMPARATOR_GREATER_THAN",
                Self::GreaterThanOrEqual => "COMPARATOR_GREATER_THAN_OR_EQUAL",
                Self::LessThan => "COMPARATOR_LESS_THAN",
                Self::LessThanOrEqual => "COMPARATOR_LESS_THAN_OR_EQUAL",
                Self::Equal => "COMPARATOR_EQUAL",
                Self::NotEqual => "COMPARATOR_NOT_EQUAL",
                Self::Exists => "COMPARATOR_EXISTS",
            }
        }
        /// Creates an enum from field names used in the ProtoBuf definition.
        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
            match value {
                "COMPARATOR_UNSPECIFIED" => Some(Self::Unspecified),
                "COMPARATOR_GREATER_THAN" => Some(Self::GreaterThan),
                "COMPARATOR_GREATER_THAN_OR_EQUAL" => Some(Self::GreaterThanOrEqual),
                "COMPARATOR_LESS_THAN" => Some(Self::LessThan),
                "COMPARATOR_LESS_THAN_OR_EQUAL" => Some(Self::LessThanOrEqual),
                "COMPARATOR_EQUAL" => Some(Self::Equal),
                "COMPARATOR_NOT_EQUAL" => Some(Self::NotEqual),
                "COMPARATOR_EXISTS" => Some(Self::Exists),
                _ => None,
            }
        }
    }
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct WebhookSuccessCondition {
    #[prost(string, tag = "1")]
    pub integration_rid: ::prost::alloc::string::String,
    #[prost(message, optional, tag = "2")]
    pub delivery_config: ::core::option::Option<WebhookDeliveryConfig>,
    #[prost(string, tag = "3")]
    pub event_type: ::prost::alloc::string::String,
    #[prost(string, tag = "4")]
    pub payload_template: ::prost::alloc::string::String,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct WebhookDeliveryConfig {
    #[prost(int32, optional, tag = "1")]
    pub max_retries: ::core::option::Option<i32>,
    #[prost(int64, optional, tag = "2")]
    pub retry_interval_seconds: ::core::option::Option<i64>,
    #[prost(bool, optional, tag = "3")]
    pub exponential_backoff: ::core::option::Option<bool>,
    #[prost(int64, optional, tag = "4")]
    pub max_retry_interval_seconds: ::core::option::Option<i64>,
    #[prost(int64, optional, tag = "5")]
    pub timeout_seconds: ::core::option::Option<i64>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct CompletionActionConfig {
    #[prost(oneof = "completion_action_config::Config", tags = "1, 2, 3, 4, 5, 6")]
    pub config: ::core::option::Option<completion_action_config::Config>,
}
/// Nested message and enum types in `CompletionActionConfig`.
pub mod completion_action_config {
    #[derive(Clone, PartialEq, ::prost::Oneof)]
    pub enum Config {
        #[prost(message, tag = "1")]
        CreateEvent(super::CreateEventConfig),
        #[prost(message, tag = "2")]
        SendNotification(super::SendNotificationConfig),
        #[prost(message, tag = "3")]
        CreateRun(super::CreateRunConfig),
        #[prost(message, tag = "4")]
        ApplyWorkbookTemplates(super::ApplyWorkbookTemplatesConfig),
        #[prost(message, tag = "5")]
        ApplyChecklists(super::ApplyChecklistsConfig),
        #[prost(message, tag = "6")]
        UpdateRun(super::UpdateRunConfig),
    }
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct CreateEventConfig {
    #[prost(string, tag = "1")]
    pub name: ::prost::alloc::string::String,
    #[prost(string, optional, tag = "2")]
    pub description: ::core::option::Option<::prost::alloc::string::String>,
    #[prost(string, repeated, tag = "3")]
    pub labels: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
    #[prost(map = "string, string", tag = "4")]
    pub properties: ::std::collections::HashMap<
        ::prost::alloc::string::String,
        ::prost::alloc::string::String,
    >,
    #[prost(string, repeated, tag = "5")]
    pub asset_field_ids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
    #[prost(message, repeated, tag = "6")]
    pub asset_references: ::prost::alloc::vec::Vec<AssetReference>,
    #[prost(message, repeated, tag = "7")]
    pub property_refs: ::prost::alloc::vec::Vec<PropertyReference>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct SendNotificationConfig {
    #[prost(message, optional, tag = "1")]
    pub integrations: ::core::option::Option<MultiIntegrationReference>,
    #[prost(message, optional, tag = "2")]
    pub title: ::core::option::Option<StringReference>,
    #[prost(message, optional, tag = "3")]
    pub message: ::core::option::Option<StringReference>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct CreateRunConfig {
    #[prost(string, optional, tag = "1")]
    pub run_output_field_id: ::core::option::Option<::prost::alloc::string::String>,
    #[prost(message, optional, tag = "2")]
    pub assets: ::core::option::Option<MultiAssetReference>,
    #[prost(message, optional, tag = "3")]
    pub name: ::core::option::Option<StringReference>,
    #[prost(message, optional, tag = "4")]
    pub description: ::core::option::Option<StringReference>,
    #[prost(message, optional, tag = "5")]
    pub time_range: ::core::option::Option<TimeRangeReference>,
    #[prost(message, optional, tag = "6")]
    pub labels: ::core::option::Option<MultiStringReference>,
    #[prost(message, repeated, tag = "7")]
    pub properties: ::prost::alloc::vec::Vec<create_run_config::Property>,
}
/// Nested message and enum types in `CreateRunConfig`.
pub mod create_run_config {
    #[derive(Clone, PartialEq, ::prost::Message)]
    pub struct Property {
        #[prost(message, optional, tag = "1")]
        pub key: ::core::option::Option<super::StringReference>,
        #[prost(message, optional, tag = "2")]
        pub value: ::core::option::Option<super::StringReference>,
    }
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct UpdateRunConfig {
    #[prost(message, optional, tag = "1")]
    pub runs: ::core::option::Option<MultiRunReference>,
    #[prost(message, optional, tag = "2")]
    pub name: ::core::option::Option<StringReference>,
    #[prost(message, optional, tag = "3")]
    pub description: ::core::option::Option<StringReference>,
    #[prost(message, optional, tag = "4")]
    pub time_range: ::core::option::Option<TimeRangeReference>,
    #[prost(message, optional, tag = "5")]
    pub labels: ::core::option::Option<MultiStringReference>,
    #[prost(message, repeated, tag = "6")]
    pub properties: ::prost::alloc::vec::Vec<PropertyReference>,
    #[prost(bool, optional, tag = "7")]
    pub strict_overwrite: ::core::option::Option<bool>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct PropertyReference {
    #[prost(message, optional, tag = "1")]
    pub key: ::core::option::Option<StringReference>,
    #[prost(message, optional, tag = "2")]
    pub value: ::core::option::Option<StringReference>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ApplyWorkbookTemplatesConfig {
    #[prost(message, optional, tag = "1")]
    pub workbook_templates: ::core::option::Option<MultiWorkbookTemplateReference>,
    #[prost(message, optional, tag = "2")]
    pub runs: ::core::option::Option<MultiRunReference>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ApplyChecklistsConfig {
    #[prost(message, optional, tag = "1")]
    pub checklists: ::core::option::Option<MultiChecklistReference>,
    #[prost(message, optional, tag = "2")]
    pub runs: ::core::option::Option<MultiRunReference>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ProcedureStepContent {
    #[prost(oneof = "procedure_step_content::Content", tags = "1, 2, 3, 4")]
    pub content: ::core::option::Option<procedure_step_content::Content>,
}
/// Nested message and enum types in `ProcedureStepContent`.
pub mod procedure_step_content {
    #[derive(Clone, PartialEq, ::prost::Oneof)]
    pub enum Content {
        #[prost(message, tag = "1")]
        Form(super::FormStep),
        #[prost(message, tag = "2")]
        StartIngest(super::StartIngestStep),
        #[prost(message, tag = "3")]
        SelectOrCreateAsset(super::SelectOrCreateAssetStep),
        #[prost(message, tag = "4")]
        Wait(super::WaitStep),
    }
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct WaitStep {}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct FormStep {
    #[prost(message, repeated, tag = "1")]
    pub fields: ::prost::alloc::vec::Vec<FormField>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct StartIngestStep {
    #[prost(message, optional, tag = "1")]
    pub asset: ::core::option::Option<AssetReference>,
    #[prost(message, optional, tag = "2")]
    pub ref_name: ::core::option::Option<StringReference>,
    #[prost(message, optional, tag = "3")]
    pub ingest_type_config: ::core::option::Option<start_ingest_step::IngestTypeConfig>,
    #[prost(string, optional, tag = "4")]
    pub ingest_job_output_field_id: ::core::option::Option<
        ::prost::alloc::string::String,
    >,
}
/// Nested message and enum types in `StartIngestStep`.
pub mod start_ingest_step {
    #[derive(Clone, PartialEq, ::prost::Message)]
    pub struct IngestTypeConfig {
        #[prost(oneof = "ingest_type_config::Config", tags = "1, 2, 3, 4")]
        pub config: ::core::option::Option<ingest_type_config::Config>,
    }
    /// Nested message and enum types in `IngestTypeConfig`.
    pub mod ingest_type_config {
        #[derive(Clone, PartialEq, ::prost::Message)]
        pub struct ContainerizedExtractorIngestConfig {
            #[prost(string, tag = "1")]
            pub rid: ::prost::alloc::string::String,
            #[prost(message, repeated, tag = "2")]
            pub file_input_bindings: ::prost::alloc::vec::Vec<
                super::super::FileInputBinding,
            >,
            #[prost(message, repeated, tag = "3")]
            pub environment_input_bindings: ::prost::alloc::vec::Vec<
                super::super::EnvironmentInputBinding,
            >,
            #[prost(message, repeated, tag = "4")]
            pub additional_file_tag_bindings: ::prost::alloc::vec::Vec<
                super::super::AdditionalFileTagBinding,
            >,
        }
        #[derive(Clone, PartialEq, ::prost::Message)]
        pub struct DataflashIngestConfig {
            #[prost(message, optional, tag = "1")]
            pub file_input: ::core::option::Option<super::super::FileReference>,
        }
        #[derive(Clone, PartialEq, ::prost::Message)]
        pub struct CsvIngestConfig {
            #[prost(message, optional, tag = "1")]
            pub timestamp_series_name: ::core::option::Option<
                super::super::StringReference,
            >,
            #[prost(message, optional, tag = "2")]
            pub timestamp_type: ::core::option::Option<
                super::super::TimestampTypeParameter,
            >,
            #[prost(message, optional, tag = "3")]
            pub file_input: ::core::option::Option<super::super::FileReference>,
        }
        #[derive(Clone, PartialEq, ::prost::Message)]
        pub struct ParquetIngestConfig {
            #[prost(message, optional, tag = "1")]
            pub timestamp_series_name: ::core::option::Option<
                super::super::StringReference,
            >,
            #[prost(message, optional, tag = "2")]
            pub timestamp_type: ::core::option::Option<
                super::super::TimestampTypeParameter,
            >,
            #[prost(message, optional, tag = "3")]
            pub file_input: ::core::option::Option<super::super::FileReference>,
        }
        #[derive(Clone, PartialEq, ::prost::Oneof)]
        pub enum Config {
            #[prost(message, tag = "1")]
            ContainerizedExtractor(ContainerizedExtractorIngestConfig),
            #[prost(message, tag = "2")]
            Dataflash(DataflashIngestConfig),
            #[prost(message, tag = "3")]
            Csv(CsvIngestConfig),
            #[prost(message, tag = "4")]
            Parquet(ParquetIngestConfig),
        }
    }
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct FileInputBinding {
    #[prost(string, tag = "1")]
    pub environment_variable: ::prost::alloc::string::String,
    #[prost(message, optional, tag = "2")]
    pub file_reference: ::core::option::Option<FileReference>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct FileReference {
    #[prost(oneof = "file_reference::Option", tags = "1")]
    pub option: ::core::option::Option<file_reference::Option>,
}
/// Nested message and enum types in `FileReference`.
pub mod file_reference {
    #[derive(Clone, PartialEq, ::prost::Oneof)]
    pub enum Option {
        #[prost(string, tag = "1")]
        FieldId(::prost::alloc::string::String),
    }
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct EnvironmentInputBinding {
    #[prost(string, tag = "1")]
    pub environment_variable: ::prost::alloc::string::String,
    #[prost(message, optional, tag = "2")]
    pub value: ::core::option::Option<StringReference>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct AdditionalFileTagBinding {
    #[prost(string, tag = "1")]
    pub tag_name: ::prost::alloc::string::String,
    #[prost(oneof = "additional_file_tag_binding::Value", tags = "2, 3")]
    pub value: ::core::option::Option<additional_file_tag_binding::Value>,
}
/// Nested message and enum types in `AdditionalFileTagBinding`.
pub mod additional_file_tag_binding {
    #[derive(Clone, PartialEq, ::prost::Oneof)]
    pub enum Value {
        #[prost(message, tag = "2")]
        StringValue(super::StringReference),
        #[prost(message, tag = "3")]
        AssetRid(super::AssetReference),
    }
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct TimestampTypeParameter {
    #[prost(oneof = "timestamp_type_parameter::Option", tags = "1, 2")]
    pub option: ::core::option::Option<timestamp_type_parameter::Option>,
}
/// Nested message and enum types in `TimestampTypeParameter`.
pub mod timestamp_type_parameter {
    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
    pub struct UserInputOptions {}
    #[derive(Clone, PartialEq, ::prost::Oneof)]
    pub enum Option {
        #[prost(message, tag = "1")]
        Constant(super::super::super::types::time::TimestampType),
        #[prost(message, tag = "2")]
        UserInput(UserInputOptions),
    }
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct SelectOrCreateAssetStep {
    #[prost(string, optional, tag = "1")]
    pub asset_output_field_id: ::core::option::Option<::prost::alloc::string::String>,
    #[prost(message, optional, tag = "2")]
    pub create_asset_parameters: ::core::option::Option<
        select_or_create_asset_step::CreateAssetParameters,
    >,
    #[prost(oneof = "select_or_create_asset_step::Options", tags = "3")]
    pub options: ::core::option::Option<select_or_create_asset_step::Options>,
}
/// Nested message and enum types in `SelectOrCreateAssetStep`.
pub mod select_or_create_asset_step {
    #[derive(Clone, PartialEq, ::prost::Message)]
    pub struct CreateAssetParameters {
        #[prost(message, optional, tag = "2")]
        pub description: ::core::option::Option<
            create_asset_parameters::DescriptionParameter,
        >,
        #[prost(message, optional, tag = "3")]
        pub labels: ::core::option::Option<create_asset_parameters::LabelsParameter>,
        #[prost(message, optional, tag = "4")]
        pub properties: ::core::option::Option<
            create_asset_parameters::PropertiesParameter,
        >,
        #[prost(map = "string, message", tag = "5")]
        pub data_scopes: ::std::collections::HashMap<
            ::prost::alloc::string::String,
            create_asset_parameters::DataScopeParameter,
        >,
    }
    /// Nested message and enum types in `CreateAssetParameters`.
    pub mod create_asset_parameters {
        #[derive(Clone, PartialEq, ::prost::Message)]
        pub struct DescriptionParameter {
            #[prost(oneof = "description_parameter::Option", tags = "1")]
            pub option: ::core::option::Option<description_parameter::Option>,
        }
        /// Nested message and enum types in `DescriptionParameter`.
        pub mod description_parameter {
            #[derive(Clone, PartialEq, ::prost::Oneof)]
            pub enum Option {
                #[prost(string, tag = "1")]
                Constant(::prost::alloc::string::String),
            }
        }
        #[derive(Clone, PartialEq, ::prost::Message)]
        pub struct LabelsParameter {
            #[prost(string, repeated, tag = "1")]
            pub constant: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
            #[prost(message, optional, tag = "2")]
            pub user_input: ::core::option::Option<labels_parameter::UserInputOptions>,
        }
        /// Nested message and enum types in `LabelsParameter`.
        pub mod labels_parameter {
            #[derive(Clone, Copy, PartialEq, ::prost::Message)]
            pub struct UserInputOptions {}
        }
        #[derive(Clone, PartialEq, ::prost::Message)]
        pub struct PropertiesParameter {
            #[prost(map = "string, string", tag = "1")]
            pub constant: ::std::collections::HashMap<
                ::prost::alloc::string::String,
                ::prost::alloc::string::String,
            >,
            #[prost(message, optional, tag = "2")]
            pub user_input: ::core::option::Option<
                properties_parameter::UserInputOptions,
            >,
        }
        /// Nested message and enum types in `PropertiesParameter`.
        pub mod properties_parameter {
            #[derive(Clone, PartialEq, ::prost::Message)]
            pub struct UserInputOptions {
                #[prost(string, repeated, tag = "1")]
                pub required_keys: ::prost::alloc::vec::Vec<
                    ::prost::alloc::string::String,
                >,
                #[prost(string, repeated, tag = "2")]
                pub suggested_keys: ::prost::alloc::vec::Vec<
                    ::prost::alloc::string::String,
                >,
            }
        }
        #[derive(Clone, PartialEq, ::prost::Message)]
        pub struct DataScopeParameter {
            #[prost(message, optional, tag = "21")]
            pub series_tags: ::core::option::Option<super::super::TagsParameter>,
            #[prost(oneof = "data_scope_parameter::DataSource", tags = "1, 2")]
            pub data_source: ::core::option::Option<data_scope_parameter::DataSource>,
        }
        /// Nested message and enum types in `DataScopeParameter`.
        pub mod data_scope_parameter {
            #[derive(Clone, Copy, PartialEq, ::prost::Message)]
            pub struct NewDataset {}
            #[derive(Clone, PartialEq, ::prost::Message)]
            pub struct ExistingDataset {
                #[prost(oneof = "existing_dataset::Options", tags = "1")]
                pub options: ::core::option::Option<existing_dataset::Options>,
            }
            /// Nested message and enum types in `ExistingDataset`.
            pub mod existing_dataset {
                #[derive(Clone, PartialEq, ::prost::Oneof)]
                pub enum Options {
                    #[prost(message, tag = "1")]
                    PresetOptions(super::super::super::super::PresetDatasetFieldOptions),
                }
            }
            #[derive(Clone, PartialEq, ::prost::Oneof)]
            pub enum DataSource {
                #[prost(message, tag = "1")]
                NewDataset(NewDataset),
                #[prost(message, tag = "2")]
                ExistingDataset(ExistingDataset),
            }
        }
    }
    #[derive(Clone, PartialEq, ::prost::Oneof)]
    pub enum Options {
        #[prost(message, tag = "3")]
        PresetOptions(super::PresetAssetFieldOptions),
    }
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct PresetDatasetFieldOptions {
    #[prost(message, repeated, tag = "1")]
    pub options: ::prost::alloc::vec::Vec<DatasetReference>,
    #[prost(message, optional, tag = "2")]
    pub default_option: ::core::option::Option<DatasetReference>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct DatasetReference {
    #[prost(oneof = "dataset_reference::Option", tags = "1, 2")]
    pub option: ::core::option::Option<dataset_reference::Option>,
}
/// Nested message and enum types in `DatasetReference`.
pub mod dataset_reference {
    #[derive(Clone, PartialEq, ::prost::Oneof)]
    pub enum Option {
        #[prost(string, tag = "1")]
        Rid(::prost::alloc::string::String),
        #[prost(string, tag = "2")]
        FieldId(::prost::alloc::string::String),
    }
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct TagsParameter {
    #[prost(map = "string, string", tag = "1")]
    pub constant: ::std::collections::HashMap<
        ::prost::alloc::string::String,
        ::prost::alloc::string::String,
    >,
    #[prost(message, optional, tag = "2")]
    pub user_input: ::core::option::Option<tags_parameter::UserInputOptions>,
}
/// Nested message and enum types in `TagsParameter`.
pub mod tags_parameter {
    #[derive(Clone, PartialEq, ::prost::Message)]
    pub struct UserInputOptions {
        #[prost(string, repeated, tag = "1")]
        pub required_keys: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
        #[prost(string, repeated, tag = "2")]
        pub suggested_keys: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
    }
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct MultiStringReference {
    #[prost(oneof = "multi_string_reference::Option", tags = "1")]
    pub option: ::core::option::Option<multi_string_reference::Option>,
}
/// Nested message and enum types in `MultiStringReference`.
pub mod multi_string_reference {
    #[derive(Clone, PartialEq, ::prost::Oneof)]
    pub enum Option {
        #[prost(string, tag = "1")]
        FieldId(::prost::alloc::string::String),
    }
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct StringReference {
    #[prost(oneof = "string_reference::Option", tags = "1, 2")]
    pub option: ::core::option::Option<string_reference::Option>,
}
/// Nested message and enum types in `StringReference`.
pub mod string_reference {
    #[derive(Clone, PartialEq, ::prost::Oneof)]
    pub enum Option {
        #[prost(string, tag = "1")]
        Constant(::prost::alloc::string::String),
        #[prost(string, tag = "2")]
        FieldId(::prost::alloc::string::String),
    }
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct MultiAssetReference {
    #[prost(oneof = "multi_asset_reference::Option", tags = "1")]
    pub option: ::core::option::Option<multi_asset_reference::Option>,
}
/// Nested message and enum types in `MultiAssetReference`.
pub mod multi_asset_reference {
    #[derive(Clone, PartialEq, ::prost::Message)]
    pub struct AssetReferenceList {
        #[prost(message, repeated, tag = "1")]
        pub references: ::prost::alloc::vec::Vec<super::AssetReference>,
    }
    #[derive(Clone, PartialEq, ::prost::Oneof)]
    pub enum Option {
        #[prost(message, tag = "1")]
        List(AssetReferenceList),
    }
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct AssetReference {
    #[prost(oneof = "asset_reference::Option", tags = "1, 2")]
    pub option: ::core::option::Option<asset_reference::Option>,
}
/// Nested message and enum types in `AssetReference`.
pub mod asset_reference {
    #[derive(Clone, PartialEq, ::prost::Oneof)]
    pub enum Option {
        #[prost(string, tag = "1")]
        Rid(::prost::alloc::string::String),
        #[prost(string, tag = "2")]
        FieldId(::prost::alloc::string::String),
    }
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct TimeRangeReference {
    #[prost(oneof = "time_range_reference::Option", tags = "1, 2")]
    pub option: ::core::option::Option<time_range_reference::Option>,
}
/// Nested message and enum types in `TimeRangeReference`.
pub mod time_range_reference {
    #[derive(Clone, PartialEq, ::prost::Message)]
    pub struct IngestJobList {
        #[prost(string, repeated, tag = "1")]
        pub field_ids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
    }
    #[derive(Clone, PartialEq, ::prost::Message)]
    pub struct RangeLiteral {
        #[prost(message, optional, tag = "1")]
        pub start: ::core::option::Option<super::TimestampReference>,
        #[prost(message, optional, tag = "2")]
        pub end: ::core::option::Option<super::TimestampReference>,
    }
    #[derive(Clone, PartialEq, ::prost::Oneof)]
    pub enum Option {
        #[prost(message, tag = "1")]
        FromIngestJobs(IngestJobList),
        #[prost(message, tag = "2")]
        Literal(RangeLiteral),
    }
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct TimestampReference {
    #[prost(oneof = "timestamp_reference::Option", tags = "1, 2")]
    pub option: ::core::option::Option<timestamp_reference::Option>,
}
/// Nested message and enum types in `TimestampReference`.
pub mod timestamp_reference {
    #[derive(Clone, PartialEq, ::prost::Oneof)]
    pub enum Option {
        #[prost(string, tag = "1")]
        FieldId(::prost::alloc::string::String),
        #[prost(message, tag = "2")]
        Constant(super::super::super::super::google::protobuf::Timestamp),
    }
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct MultiRunReference {
    #[prost(oneof = "multi_run_reference::Option", tags = "1")]
    pub option: ::core::option::Option<multi_run_reference::Option>,
}
/// Nested message and enum types in `MultiRunReference`.
pub mod multi_run_reference {
    #[derive(Clone, PartialEq, ::prost::Message)]
    pub struct RunReferenceList {
        #[prost(message, repeated, tag = "1")]
        pub references: ::prost::alloc::vec::Vec<super::RunReference>,
    }
    #[derive(Clone, PartialEq, ::prost::Oneof)]
    pub enum Option {
        #[prost(message, tag = "1")]
        List(RunReferenceList),
    }
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct RunReference {
    #[prost(oneof = "run_reference::Option", tags = "1")]
    pub option: ::core::option::Option<run_reference::Option>,
}
/// Nested message and enum types in `RunReference`.
pub mod run_reference {
    #[derive(Clone, PartialEq, ::prost::Oneof)]
    pub enum Option {
        #[prost(string, tag = "1")]
        FieldId(::prost::alloc::string::String),
    }
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct MultiWorkbookTemplateReference {
    #[prost(oneof = "multi_workbook_template_reference::Option", tags = "1")]
    pub option: ::core::option::Option<multi_workbook_template_reference::Option>,
}
/// Nested message and enum types in `MultiWorkbookTemplateReference`.
pub mod multi_workbook_template_reference {
    #[derive(Clone, PartialEq, ::prost::Message)]
    pub struct WorkbookTemplateReferenceList {
        #[prost(message, repeated, tag = "1")]
        pub references: ::prost::alloc::vec::Vec<super::WorkbookTemplateReference>,
    }
    #[derive(Clone, PartialEq, ::prost::Oneof)]
    pub enum Option {
        #[prost(message, tag = "1")]
        List(WorkbookTemplateReferenceList),
    }
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct WorkbookTemplateReference {
    #[prost(oneof = "workbook_template_reference::Option", tags = "1")]
    pub option: ::core::option::Option<workbook_template_reference::Option>,
}
/// Nested message and enum types in `WorkbookTemplateReference`.
pub mod workbook_template_reference {
    #[derive(Clone, PartialEq, ::prost::Oneof)]
    pub enum Option {
        #[prost(string, tag = "1")]
        Rid(::prost::alloc::string::String),
    }
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct MultiChecklistReference {
    #[prost(oneof = "multi_checklist_reference::Option", tags = "1")]
    pub option: ::core::option::Option<multi_checklist_reference::Option>,
}
/// Nested message and enum types in `MultiChecklistReference`.
pub mod multi_checklist_reference {
    #[derive(Clone, PartialEq, ::prost::Message)]
    pub struct ChecklistReferenceList {
        #[prost(message, repeated, tag = "1")]
        pub references: ::prost::alloc::vec::Vec<super::ChecklistReference>,
    }
    #[derive(Clone, PartialEq, ::prost::Oneof)]
    pub enum Option {
        #[prost(message, tag = "1")]
        List(ChecklistReferenceList),
    }
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ChecklistReference {
    #[prost(oneof = "checklist_reference::Option", tags = "1")]
    pub option: ::core::option::Option<checklist_reference::Option>,
}
/// Nested message and enum types in `ChecklistReference`.
pub mod checklist_reference {
    #[derive(Clone, PartialEq, ::prost::Oneof)]
    pub enum Option {
        #[prost(string, tag = "1")]
        Rid(::prost::alloc::string::String),
    }
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct MultiIntegrationReference {
    #[prost(oneof = "multi_integration_reference::Option", tags = "1")]
    pub option: ::core::option::Option<multi_integration_reference::Option>,
}
/// Nested message and enum types in `MultiIntegrationReference`.
pub mod multi_integration_reference {
    #[derive(Clone, PartialEq, ::prost::Message)]
    pub struct IntegrationReferenceList {
        #[prost(message, repeated, tag = "1")]
        pub references: ::prost::alloc::vec::Vec<super::IntegrationReference>,
    }
    #[derive(Clone, PartialEq, ::prost::Oneof)]
    pub enum Option {
        #[prost(message, tag = "1")]
        List(IntegrationReferenceList),
    }
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct IntegrationReference {
    #[prost(oneof = "integration_reference::Option", tags = "1")]
    pub option: ::core::option::Option<integration_reference::Option>,
}
/// Nested message and enum types in `IntegrationReference`.
pub mod integration_reference {
    #[derive(Clone, PartialEq, ::prost::Oneof)]
    pub enum Option {
        #[prost(string, tag = "1")]
        Rid(::prost::alloc::string::String),
    }
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct FormField {
    #[prost(string, tag = "1")]
    pub id: ::prost::alloc::string::String,
    #[prost(string, optional, tag = "11")]
    pub label: ::core::option::Option<::prost::alloc::string::String>,
    #[prost(string, optional, tag = "12")]
    pub description: ::core::option::Option<::prost::alloc::string::String>,
    #[prost(oneof = "form_field::Field", tags = "2, 3, 4, 5, 6, 7, 8, 9, 10")]
    pub field: ::core::option::Option<form_field::Field>,
}
/// Nested message and enum types in `FormField`.
pub mod form_field {
    #[derive(Clone, PartialEq, ::prost::Oneof)]
    pub enum Field {
        #[prost(message, tag = "2")]
        Asset(super::AssetField),
        #[prost(message, tag = "3")]
        Checkbox(super::CheckboxField),
        #[prost(message, tag = "4")]
        Text(super::TextField),
        #[prost(message, tag = "5")]
        Int(super::IntField),
        #[prost(message, tag = "6")]
        Double(super::DoubleField),
        #[prost(message, tag = "7")]
        SingleEnum(super::SingleEnumField),
        #[prost(message, tag = "8")]
        MultiEnum(super::MultiEnumField),
        #[prost(message, tag = "9")]
        FileUpload(super::FileUploadField),
        #[prost(message, tag = "10")]
        MultiFileUpload(super::MultiFileUploadField),
    }
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct PresetAssetFieldOptions {
    #[prost(message, repeated, tag = "1")]
    pub options: ::prost::alloc::vec::Vec<AssetReference>,
    #[prost(message, optional, tag = "2")]
    pub default_option: ::core::option::Option<AssetReference>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct AssetField {
    #[prost(string, tag = "1")]
    pub label: ::prost::alloc::string::String,
    #[prost(bool, tag = "2")]
    pub is_required: bool,
    #[prost(oneof = "asset_field::Options", tags = "3")]
    pub options: ::core::option::Option<asset_field::Options>,
}
/// Nested message and enum types in `AssetField`.
pub mod asset_field {
    #[derive(Clone, PartialEq, ::prost::Oneof)]
    pub enum Options {
        #[prost(message, tag = "3")]
        PresetOptions(super::PresetAssetFieldOptions),
    }
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct CheckboxField {
    #[prost(string, tag = "1")]
    pub label: ::prost::alloc::string::String,
    #[prost(bool, tag = "2")]
    pub is_required: bool,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct TextFieldSimpleInputType {}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct TextFieldMarkdownInputType {}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct TextField {
    #[prost(string, tag = "1")]
    pub label: ::prost::alloc::string::String,
    #[prost(uint32, optional, tag = "4")]
    pub min_length: ::core::option::Option<u32>,
    #[prost(uint32, optional, tag = "5")]
    pub max_length: ::core::option::Option<u32>,
    #[prost(oneof = "text_field::InputType", tags = "2, 3")]
    pub input_type: ::core::option::Option<text_field::InputType>,
}
/// Nested message and enum types in `TextField`.
pub mod text_field {
    #[derive(Clone, Copy, PartialEq, ::prost::Oneof)]
    pub enum InputType {
        #[prost(message, tag = "2")]
        Simple(super::TextFieldSimpleInputType),
        #[prost(message, tag = "3")]
        Markdown(super::TextFieldMarkdownInputType),
    }
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct IntField {
    #[prost(string, tag = "1")]
    pub label: ::prost::alloc::string::String,
    #[prost(bool, tag = "2")]
    pub is_required: bool,
    #[prost(int64, optional, tag = "3")]
    pub gte_value: ::core::option::Option<i64>,
    #[prost(int64, optional, tag = "4")]
    pub lte_value: ::core::option::Option<i64>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct DoubleField {
    #[prost(string, tag = "1")]
    pub label: ::prost::alloc::string::String,
    #[prost(bool, tag = "2")]
    pub is_required: bool,
    #[prost(oneof = "double_field::LowerBound", tags = "3, 4")]
    pub lower_bound: ::core::option::Option<double_field::LowerBound>,
    #[prost(oneof = "double_field::UpperBound", tags = "5, 6")]
    pub upper_bound: ::core::option::Option<double_field::UpperBound>,
}
/// Nested message and enum types in `DoubleField`.
pub mod double_field {
    #[derive(Clone, Copy, PartialEq, ::prost::Oneof)]
    pub enum LowerBound {
        #[prost(double, tag = "3")]
        GtValue(f64),
        #[prost(double, tag = "4")]
        GteValue(f64),
    }
    #[derive(Clone, Copy, PartialEq, ::prost::Oneof)]
    pub enum UpperBound {
        #[prost(double, tag = "5")]
        LtValue(f64),
        #[prost(double, tag = "6")]
        LteValue(f64),
    }
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct EnumFieldButtonsInputType {}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct EnumFieldMenuInputType {}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct SingleEnumField {
    #[prost(string, tag = "1")]
    pub label: ::prost::alloc::string::String,
    #[prost(string, repeated, tag = "2")]
    pub options: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
    #[prost(bool, tag = "5")]
    pub allow_custom: bool,
    #[prost(bool, tag = "6")]
    pub is_required: bool,
    #[prost(oneof = "single_enum_field::InputType", tags = "3, 4")]
    pub input_type: ::core::option::Option<single_enum_field::InputType>,
}
/// Nested message and enum types in `SingleEnumField`.
pub mod single_enum_field {
    #[derive(Clone, Copy, PartialEq, ::prost::Oneof)]
    pub enum InputType {
        #[prost(message, tag = "3")]
        Buttons(super::EnumFieldButtonsInputType),
        #[prost(message, tag = "4")]
        Dropdown(super::EnumFieldMenuInputType),
    }
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct MultiEnumField {
    #[prost(string, tag = "1")]
    pub label: ::prost::alloc::string::String,
    #[prost(string, repeated, tag = "2")]
    pub options: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
    #[prost(bool, tag = "6")]
    pub allow_custom: bool,
    #[prost(uint32, optional, tag = "7")]
    pub min_count: ::core::option::Option<u32>,
    #[prost(uint32, optional, tag = "8")]
    pub max_count: ::core::option::Option<u32>,
    #[prost(oneof = "multi_enum_field::InputType", tags = "3, 4")]
    pub input_type: ::core::option::Option<multi_enum_field::InputType>,
}
/// Nested message and enum types in `MultiEnumField`.
pub mod multi_enum_field {
    #[derive(Clone, Copy, PartialEq, ::prost::Oneof)]
    pub enum InputType {
        #[prost(message, tag = "3")]
        Buttons(super::EnumFieldButtonsInputType),
        #[prost(message, tag = "4")]
        Dropdown(super::EnumFieldMenuInputType),
    }
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct FileUploadField {
    #[prost(bool, tag = "1")]
    pub is_required: bool,
    #[prost(string, repeated, tag = "2")]
    pub suffix_filters: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct MultiFileUploadField {
    #[prost(uint32, optional, tag = "1")]
    pub min_count: ::core::option::Option<u32>,
    #[prost(uint32, optional, tag = "2")]
    pub max_count: ::core::option::Option<u32>,
    #[prost(string, repeated, tag = "3")]
    pub suffix_filters: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ProcedureMetadata {
    #[prost(string, tag = "1")]
    pub rid: ::prost::alloc::string::String,
    #[prost(string, tag = "2")]
    pub title: ::prost::alloc::string::String,
    #[prost(string, optional, tag = "3")]
    pub description: ::core::option::Option<::prost::alloc::string::String>,
    #[prost(string, repeated, tag = "4")]
    pub labels: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
    #[prost(map = "string, string", tag = "5")]
    pub properties: ::std::collections::HashMap<
        ::prost::alloc::string::String,
        ::prost::alloc::string::String,
    >,
    #[prost(bool, tag = "6")]
    pub is_archived: bool,
    #[prost(bool, tag = "7")]
    pub is_published: bool,
    #[prost(message, optional, tag = "8")]
    pub created_at: ::core::option::Option<
        super::super::super::google::protobuf::Timestamp,
    >,
    #[prost(string, tag = "9")]
    pub created_by: ::prost::alloc::string::String,
    #[prost(message, optional, tag = "10")]
    pub updated_at: ::core::option::Option<
        super::super::super::google::protobuf::Timestamp,
    >,
    #[prost(string, tag = "11")]
    pub updated_by: ::prost::alloc::string::String,
    #[prost(string, tag = "12")]
    pub workspace: ::prost::alloc::string::String,
    #[prost(int64, optional, tag = "13")]
    pub execution_count: ::core::option::Option<i64>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct Procedure {
    #[prost(string, tag = "1")]
    pub rid: ::prost::alloc::string::String,
    #[prost(string, tag = "2")]
    pub commit: ::prost::alloc::string::String,
    #[prost(message, optional, tag = "3")]
    pub metadata: ::core::option::Option<ProcedureMetadata>,
    #[prost(message, optional, tag = "4")]
    pub state: ::core::option::Option<ProcedureState>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct CreateProcedureRequest {
    #[prost(string, tag = "1")]
    pub title: ::prost::alloc::string::String,
    #[prost(string, optional, tag = "2")]
    pub description: ::core::option::Option<::prost::alloc::string::String>,
    #[prost(string, repeated, tag = "3")]
    pub labels: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
    #[prost(map = "string, string", tag = "4")]
    pub properties: ::std::collections::HashMap<
        ::prost::alloc::string::String,
        ::prost::alloc::string::String,
    >,
    #[prost(message, optional, tag = "5")]
    pub state: ::core::option::Option<ProcedureState>,
    #[prost(bool, optional, tag = "6")]
    pub is_published: ::core::option::Option<bool>,
    #[prost(string, tag = "7")]
    pub workspace: ::prost::alloc::string::String,
    #[prost(string, tag = "8")]
    pub commit_message: ::prost::alloc::string::String,
    #[prost(string, optional, tag = "9")]
    pub initial_branch_name: ::core::option::Option<::prost::alloc::string::String>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct CreateProcedureResponse {
    #[prost(message, optional, tag = "1")]
    pub procedure: ::core::option::Option<Procedure>,
    #[prost(string, optional, tag = "2")]
    pub branch_name: ::core::option::Option<::prost::alloc::string::String>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct GetProcedureRequest {
    #[prost(string, tag = "1")]
    pub rid: ::prost::alloc::string::String,
    #[prost(message, optional, tag = "2")]
    pub branch_or_commit: ::core::option::Option<
        super::super::versioning::v1::BranchOrCommit,
    >,
    #[prost(bool, tag = "3")]
    pub include_display_graph: bool,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct GetProcedureResponse {
    #[prost(message, optional, tag = "1")]
    pub procedure: ::core::option::Option<Procedure>,
    #[prost(message, optional, tag = "2")]
    pub display_graph: ::core::option::Option<ProcedureDisplayGraph>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct BatchGetProcedureMetadataRequest {
    #[prost(string, repeated, tag = "1")]
    pub procedure_rids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct BatchGetProcedureMetadataResponse {
    #[prost(message, repeated, tag = "1")]
    pub procedure_metadatas: ::prost::alloc::vec::Vec<ProcedureMetadata>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct UpdateProcedureMetadataRequest {
    #[prost(string, tag = "1")]
    pub rid: ::prost::alloc::string::String,
    #[prost(string, optional, tag = "2")]
    pub title: ::core::option::Option<::prost::alloc::string::String>,
    #[prost(string, optional, tag = "3")]
    pub description: ::core::option::Option<::prost::alloc::string::String>,
    #[prost(message, optional, tag = "4")]
    pub labels: ::core::option::Option<super::super::types::LabelUpdateWrapper>,
    #[prost(message, optional, tag = "5")]
    pub properties: ::core::option::Option<super::super::types::PropertyUpdateWrapper>,
    #[prost(bool, optional, tag = "6")]
    pub is_archived: ::core::option::Option<bool>,
    #[prost(bool, optional, tag = "7")]
    pub is_published: ::core::option::Option<bool>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct UpdateProcedureMetadataResponse {
    #[prost(message, optional, tag = "1")]
    pub procedure_metadata: ::core::option::Option<ProcedureMetadata>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ParseNestedProcedureRequest {
    #[prost(message, optional, tag = "1")]
    pub nested_procedure: ::core::option::Option<NestedProcedure>,
    #[prost(bool, tag = "3")]
    pub include_display_graph: bool,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ParseNestedProcedureResponse {
    #[prost(message, optional, tag = "1")]
    pub procedure: ::core::option::Option<Procedure>,
    #[prost(message, optional, tag = "2")]
    pub display_graph: ::core::option::Option<ProcedureDisplayGraph>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct GetProcedureAsNestedRequest {
    #[prost(string, tag = "1")]
    pub rid: ::prost::alloc::string::String,
    #[prost(message, optional, tag = "2")]
    pub branch_or_commit: ::core::option::Option<
        super::super::versioning::v1::BranchOrCommit,
    >,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct GetProcedureAsNestedResponse {
    #[prost(message, optional, tag = "1")]
    pub nested_procedure: ::core::option::Option<NestedProcedure>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct MergeToMainRequest {
    #[prost(string, tag = "1")]
    pub rid: ::prost::alloc::string::String,
    #[prost(string, tag = "2")]
    pub branch: ::prost::alloc::string::String,
    #[prost(string, optional, tag = "3")]
    pub latest_commit_on_main: ::core::option::Option<::prost::alloc::string::String>,
    #[prost(string, tag = "4")]
    pub message: ::prost::alloc::string::String,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct MergeToMainResponse {
    #[prost(message, optional, tag = "1")]
    pub procedure: ::core::option::Option<Procedure>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct SaveWorkingStateRequest {
    #[prost(string, tag = "1")]
    pub rid: ::prost::alloc::string::String,
    #[prost(string, optional, tag = "2")]
    pub branch: ::core::option::Option<::prost::alloc::string::String>,
    #[prost(string, tag = "3")]
    pub message: ::prost::alloc::string::String,
    #[prost(string, optional, tag = "4")]
    pub latest_commit_on_branch: ::core::option::Option<::prost::alloc::string::String>,
    #[prost(message, optional, tag = "5")]
    pub state: ::core::option::Option<ProcedureState>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct SaveWorkingStateResponse {
    #[prost(message, optional, tag = "1")]
    pub procedure: ::core::option::Option<Procedure>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct CommitRequest {
    #[prost(string, tag = "1")]
    pub rid: ::prost::alloc::string::String,
    #[prost(string, optional, tag = "2")]
    pub branch: ::core::option::Option<::prost::alloc::string::String>,
    #[prost(string, optional, tag = "3")]
    pub latest_commit_on_branch: ::core::option::Option<::prost::alloc::string::String>,
    #[prost(string, tag = "4")]
    pub message: ::prost::alloc::string::String,
    #[prost(message, optional, tag = "5")]
    pub state: ::core::option::Option<ProcedureState>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct CommitResponse {
    #[prost(message, optional, tag = "1")]
    pub procedure: ::core::option::Option<Procedure>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ProcedureSearchQuery {
    #[prost(oneof = "procedure_search_query::Query", tags = "1, 2, 3, 4, 5, 6, 7, 8")]
    pub query: ::core::option::Option<procedure_search_query::Query>,
}
/// Nested message and enum types in `ProcedureSearchQuery`.
pub mod procedure_search_query {
    #[derive(Clone, PartialEq, ::prost::Message)]
    pub struct ProcedureSearchAndQuery {
        #[prost(message, repeated, tag = "1")]
        pub queries: ::prost::alloc::vec::Vec<super::ProcedureSearchQuery>,
    }
    #[derive(Clone, PartialEq, ::prost::Message)]
    pub struct ProcedureSearchOrQuery {
        #[prost(message, repeated, tag = "1")]
        pub queries: ::prost::alloc::vec::Vec<super::ProcedureSearchQuery>,
    }
    #[derive(Clone, PartialEq, ::prost::Oneof)]
    pub enum Query {
        #[prost(string, tag = "1")]
        SearchText(::prost::alloc::string::String),
        #[prost(string, tag = "2")]
        Label(::prost::alloc::string::String),
        #[prost(message, tag = "3")]
        Property(super::super::super::types::Property),
        #[prost(message, tag = "4")]
        And(ProcedureSearchAndQuery),
        #[prost(message, tag = "5")]
        Or(ProcedureSearchOrQuery),
        #[prost(string, tag = "6")]
        Workspace(::prost::alloc::string::String),
        #[prost(string, tag = "7")]
        CreatedBy(::prost::alloc::string::String),
        #[prost(bool, tag = "8")]
        IsArchived(bool),
    }
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct SearchProceduresSortOptions {
    #[prost(bool, optional, tag = "1")]
    pub is_descending: ::core::option::Option<bool>,
    #[prost(enumeration = "SearchProceduresSortField", optional, tag = "2")]
    pub sort_field: ::core::option::Option<i32>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct SearchProceduresRequest {
    #[prost(message, optional, tag = "1")]
    pub query: ::core::option::Option<ProcedureSearchQuery>,
    #[prost(message, optional, tag = "2")]
    pub sort_options: ::core::option::Option<SearchProceduresSortOptions>,
    #[prost(int32, optional, tag = "3")]
    pub page_size: ::core::option::Option<i32>,
    #[prost(string, optional, tag = "4")]
    pub next_page_token: ::core::option::Option<::prost::alloc::string::String>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct SearchProceduresResponse {
    #[prost(message, repeated, tag = "1")]
    pub procedure_metadata: ::prost::alloc::vec::Vec<ProcedureMetadata>,
    #[prost(string, optional, tag = "2")]
    pub next_page_token: ::core::option::Option<::prost::alloc::string::String>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ArchiveProceduresRequest {
    #[prost(string, repeated, tag = "1")]
    pub procedure_rids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ArchiveProceduresResponse {
    #[prost(string, repeated, tag = "1")]
    pub procedure_rids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct UnarchiveProceduresRequest {
    #[prost(string, repeated, tag = "1")]
    pub procedure_rids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct UnarchiveProceduresResponse {
    #[prost(string, repeated, tag = "1")]
    pub procedure_rids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
}
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
#[repr(i32)]
pub enum CaptureMoment {
    Unspecified = 0,
    StepStart = 1,
    StepCompletion = 2,
}
impl CaptureMoment {
    /// String value of the enum field names used in the ProtoBuf definition.
    ///
    /// The values are not transformed in any way and thus are considered stable
    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
    pub fn as_str_name(&self) -> &'static str {
        match self {
            Self::Unspecified => "CAPTURE_MOMENT_UNSPECIFIED",
            Self::StepStart => "CAPTURE_MOMENT_STEP_START",
            Self::StepCompletion => "CAPTURE_MOMENT_STEP_COMPLETION",
        }
    }
    /// Creates an enum from field names used in the ProtoBuf definition.
    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
        match value {
            "CAPTURE_MOMENT_UNSPECIFIED" => Some(Self::Unspecified),
            "CAPTURE_MOMENT_STEP_START" => Some(Self::StepStart),
            "CAPTURE_MOMENT_STEP_COMPLETION" => Some(Self::StepCompletion),
            _ => None,
        }
    }
}
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
#[repr(i32)]
pub enum SearchProceduresSortField {
    Unspecified = 0,
    Name = 1,
    CreatedAt = 2,
    UpdatedAt = 3,
}
impl SearchProceduresSortField {
    /// String value of the enum field names used in the ProtoBuf definition.
    ///
    /// The values are not transformed in any way and thus are considered stable
    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
    pub fn as_str_name(&self) -> &'static str {
        match self {
            Self::Unspecified => "SEARCH_PROCEDURES_SORT_FIELD_UNSPECIFIED",
            Self::Name => "SEARCH_PROCEDURES_SORT_FIELD_NAME",
            Self::CreatedAt => "SEARCH_PROCEDURES_SORT_FIELD_CREATED_AT",
            Self::UpdatedAt => "SEARCH_PROCEDURES_SORT_FIELD_UPDATED_AT",
        }
    }
    /// Creates an enum from field names used in the ProtoBuf definition.
    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
        match value {
            "SEARCH_PROCEDURES_SORT_FIELD_UNSPECIFIED" => Some(Self::Unspecified),
            "SEARCH_PROCEDURES_SORT_FIELD_NAME" => Some(Self::Name),
            "SEARCH_PROCEDURES_SORT_FIELD_CREATED_AT" => Some(Self::CreatedAt),
            "SEARCH_PROCEDURES_SORT_FIELD_UPDATED_AT" => Some(Self::UpdatedAt),
            _ => None,
        }
    }
}
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
#[repr(i32)]
pub enum ProceduresServiceError {
    Unspecified = 0,
    NotFound = 1,
    CommitNotFound = 2,
    CannotMergeMain = 3,
    CannotCommitToArchivedProcedure = 4,
    InvalidGraph = 5,
    InvalidSearchToken = 6,
}
impl ProceduresServiceError {
    /// String value of the enum field names used in the ProtoBuf definition.
    ///
    /// The values are not transformed in any way and thus are considered stable
    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
    pub fn as_str_name(&self) -> &'static str {
        match self {
            Self::Unspecified => "PROCEDURES_SERVICE_ERROR_UNSPECIFIED",
            Self::NotFound => "PROCEDURES_SERVICE_ERROR_NOT_FOUND",
            Self::CommitNotFound => "PROCEDURES_SERVICE_ERROR_COMMIT_NOT_FOUND",
            Self::CannotMergeMain => "PROCEDURES_SERVICE_ERROR_CANNOT_MERGE_MAIN",
            Self::CannotCommitToArchivedProcedure => {
                "PROCEDURES_SERVICE_ERROR_CANNOT_COMMIT_TO_ARCHIVED_PROCEDURE"
            }
            Self::InvalidGraph => "PROCEDURES_SERVICE_ERROR_INVALID_GRAPH",
            Self::InvalidSearchToken => "PROCEDURES_SERVICE_ERROR_INVALID_SEARCH_TOKEN",
        }
    }
    /// Creates an enum from field names used in the ProtoBuf definition.
    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
        match value {
            "PROCEDURES_SERVICE_ERROR_UNSPECIFIED" => Some(Self::Unspecified),
            "PROCEDURES_SERVICE_ERROR_NOT_FOUND" => Some(Self::NotFound),
            "PROCEDURES_SERVICE_ERROR_COMMIT_NOT_FOUND" => Some(Self::CommitNotFound),
            "PROCEDURES_SERVICE_ERROR_CANNOT_MERGE_MAIN" => Some(Self::CannotMergeMain),
            "PROCEDURES_SERVICE_ERROR_CANNOT_COMMIT_TO_ARCHIVED_PROCEDURE" => {
                Some(Self::CannotCommitToArchivedProcedure)
            }
            "PROCEDURES_SERVICE_ERROR_INVALID_GRAPH" => Some(Self::InvalidGraph),
            "PROCEDURES_SERVICE_ERROR_INVALID_SEARCH_TOKEN" => {
                Some(Self::InvalidSearchToken)
            }
            _ => None,
        }
    }
}
/// Generated client implementations.
pub mod procedures_service_client {
    #![allow(
        unused_variables,
        dead_code,
        missing_docs,
        clippy::wildcard_imports,
        clippy::let_unit_value,
    )]
    use tonic::codegen::*;
    use tonic::codegen::http::Uri;
    #[derive(Debug, Clone)]
    pub struct ProceduresServiceClient<T> {
        inner: tonic::client::Grpc<T>,
    }
    impl ProceduresServiceClient<tonic::transport::Channel> {
        /// Attempt to create a new client by connecting to a given endpoint.
        pub async fn connect<D>(dst: D) -> Result<Self, tonic::transport::Error>
        where
            D: TryInto<tonic::transport::Endpoint>,
            D::Error: Into<StdError>,
        {
            let conn = tonic::transport::Endpoint::new(dst)?.connect().await?;
            Ok(Self::new(conn))
        }
    }
    impl<T> ProceduresServiceClient<T>
    where
        T: tonic::client::GrpcService<tonic::body::Body>,
        T::Error: Into<StdError>,
        T::ResponseBody: Body<Data = Bytes> + std::marker::Send + 'static,
        <T::ResponseBody as Body>::Error: Into<StdError> + std::marker::Send,
    {
        pub fn new(inner: T) -> Self {
            let inner = tonic::client::Grpc::new(inner);
            Self { inner }
        }
        pub fn with_origin(inner: T, origin: Uri) -> Self {
            let inner = tonic::client::Grpc::with_origin(inner, origin);
            Self { inner }
        }
        pub fn with_interceptor<F>(
            inner: T,
            interceptor: F,
        ) -> ProceduresServiceClient<InterceptedService<T, F>>
        where
            F: tonic::service::Interceptor,
            T::ResponseBody: Default,
            T: tonic::codegen::Service<
                http::Request<tonic::body::Body>,
                Response = http::Response<
                    <T as tonic::client::GrpcService<tonic::body::Body>>::ResponseBody,
                >,
            >,
            <T as tonic::codegen::Service<
                http::Request<tonic::body::Body>,
            >>::Error: Into<StdError> + std::marker::Send + std::marker::Sync,
        {
            ProceduresServiceClient::new(InterceptedService::new(inner, interceptor))
        }
        /// Compress requests with the given encoding.
        ///
        /// This requires the server to support it otherwise it might respond with an
        /// error.
        #[must_use]
        pub fn send_compressed(mut self, encoding: CompressionEncoding) -> Self {
            self.inner = self.inner.send_compressed(encoding);
            self
        }
        /// Enable decompressing responses.
        #[must_use]
        pub fn accept_compressed(mut self, encoding: CompressionEncoding) -> Self {
            self.inner = self.inner.accept_compressed(encoding);
            self
        }
        /// Limits the maximum size of a decoded message.
        ///
        /// Default: `4MB`
        #[must_use]
        pub fn max_decoding_message_size(mut self, limit: usize) -> Self {
            self.inner = self.inner.max_decoding_message_size(limit);
            self
        }
        /// Limits the maximum size of an encoded message.
        ///
        /// Default: `usize::MAX`
        #[must_use]
        pub fn max_encoding_message_size(mut self, limit: usize) -> Self {
            self.inner = self.inner.max_encoding_message_size(limit);
            self
        }
        pub async fn create_procedure(
            &mut self,
            request: impl tonic::IntoRequest<super::CreateProcedureRequest>,
        ) -> std::result::Result<
            tonic::Response<super::CreateProcedureResponse>,
            tonic::Status,
        > {
            self.inner
                .ready()
                .await
                .map_err(|e| {
                    tonic::Status::unknown(
                        format!("Service was not ready: {}", e.into()),
                    )
                })?;
            let codec = tonic::codec::ProstCodec::default();
            let path = http::uri::PathAndQuery::from_static(
                "/nominal.procedures.v1.ProceduresService/CreateProcedure",
            );
            let mut req = request.into_request();
            req.extensions_mut()
                .insert(
                    GrpcMethod::new(
                        "nominal.procedures.v1.ProceduresService",
                        "CreateProcedure",
                    ),
                );
            self.inner.unary(req, path, codec).await
        }
        pub async fn get_procedure(
            &mut self,
            request: impl tonic::IntoRequest<super::GetProcedureRequest>,
        ) -> std::result::Result<
            tonic::Response<super::GetProcedureResponse>,
            tonic::Status,
        > {
            self.inner
                .ready()
                .await
                .map_err(|e| {
                    tonic::Status::unknown(
                        format!("Service was not ready: {}", e.into()),
                    )
                })?;
            let codec = tonic::codec::ProstCodec::default();
            let path = http::uri::PathAndQuery::from_static(
                "/nominal.procedures.v1.ProceduresService/GetProcedure",
            );
            let mut req = request.into_request();
            req.extensions_mut()
                .insert(
                    GrpcMethod::new(
                        "nominal.procedures.v1.ProceduresService",
                        "GetProcedure",
                    ),
                );
            self.inner.unary(req, path, codec).await
        }
        pub async fn batch_get_procedure_metadata(
            &mut self,
            request: impl tonic::IntoRequest<super::BatchGetProcedureMetadataRequest>,
        ) -> std::result::Result<
            tonic::Response<super::BatchGetProcedureMetadataResponse>,
            tonic::Status,
        > {
            self.inner
                .ready()
                .await
                .map_err(|e| {
                    tonic::Status::unknown(
                        format!("Service was not ready: {}", e.into()),
                    )
                })?;
            let codec = tonic::codec::ProstCodec::default();
            let path = http::uri::PathAndQuery::from_static(
                "/nominal.procedures.v1.ProceduresService/BatchGetProcedureMetadata",
            );
            let mut req = request.into_request();
            req.extensions_mut()
                .insert(
                    GrpcMethod::new(
                        "nominal.procedures.v1.ProceduresService",
                        "BatchGetProcedureMetadata",
                    ),
                );
            self.inner.unary(req, path, codec).await
        }
        pub async fn update_procedure_metadata(
            &mut self,
            request: impl tonic::IntoRequest<super::UpdateProcedureMetadataRequest>,
        ) -> std::result::Result<
            tonic::Response<super::UpdateProcedureMetadataResponse>,
            tonic::Status,
        > {
            self.inner
                .ready()
                .await
                .map_err(|e| {
                    tonic::Status::unknown(
                        format!("Service was not ready: {}", e.into()),
                    )
                })?;
            let codec = tonic::codec::ProstCodec::default();
            let path = http::uri::PathAndQuery::from_static(
                "/nominal.procedures.v1.ProceduresService/UpdateProcedureMetadata",
            );
            let mut req = request.into_request();
            req.extensions_mut()
                .insert(
                    GrpcMethod::new(
                        "nominal.procedures.v1.ProceduresService",
                        "UpdateProcedureMetadata",
                    ),
                );
            self.inner.unary(req, path, codec).await
        }
        pub async fn parse_nested_procedure(
            &mut self,
            request: impl tonic::IntoRequest<super::ParseNestedProcedureRequest>,
        ) -> std::result::Result<
            tonic::Response<super::ParseNestedProcedureResponse>,
            tonic::Status,
        > {
            self.inner
                .ready()
                .await
                .map_err(|e| {
                    tonic::Status::unknown(
                        format!("Service was not ready: {}", e.into()),
                    )
                })?;
            let codec = tonic::codec::ProstCodec::default();
            let path = http::uri::PathAndQuery::from_static(
                "/nominal.procedures.v1.ProceduresService/ParseNestedProcedure",
            );
            let mut req = request.into_request();
            req.extensions_mut()
                .insert(
                    GrpcMethod::new(
                        "nominal.procedures.v1.ProceduresService",
                        "ParseNestedProcedure",
                    ),
                );
            self.inner.unary(req, path, codec).await
        }
        pub async fn get_procedure_as_nested(
            &mut self,
            request: impl tonic::IntoRequest<super::GetProcedureAsNestedRequest>,
        ) -> std::result::Result<
            tonic::Response<super::GetProcedureAsNestedResponse>,
            tonic::Status,
        > {
            self.inner
                .ready()
                .await
                .map_err(|e| {
                    tonic::Status::unknown(
                        format!("Service was not ready: {}", e.into()),
                    )
                })?;
            let codec = tonic::codec::ProstCodec::default();
            let path = http::uri::PathAndQuery::from_static(
                "/nominal.procedures.v1.ProceduresService/GetProcedureAsNested",
            );
            let mut req = request.into_request();
            req.extensions_mut()
                .insert(
                    GrpcMethod::new(
                        "nominal.procedures.v1.ProceduresService",
                        "GetProcedureAsNested",
                    ),
                );
            self.inner.unary(req, path, codec).await
        }
        pub async fn merge_to_main(
            &mut self,
            request: impl tonic::IntoRequest<super::MergeToMainRequest>,
        ) -> std::result::Result<
            tonic::Response<super::MergeToMainResponse>,
            tonic::Status,
        > {
            self.inner
                .ready()
                .await
                .map_err(|e| {
                    tonic::Status::unknown(
                        format!("Service was not ready: {}", e.into()),
                    )
                })?;
            let codec = tonic::codec::ProstCodec::default();
            let path = http::uri::PathAndQuery::from_static(
                "/nominal.procedures.v1.ProceduresService/MergeToMain",
            );
            let mut req = request.into_request();
            req.extensions_mut()
                .insert(
                    GrpcMethod::new(
                        "nominal.procedures.v1.ProceduresService",
                        "MergeToMain",
                    ),
                );
            self.inner.unary(req, path, codec).await
        }
        pub async fn save_working_state(
            &mut self,
            request: impl tonic::IntoRequest<super::SaveWorkingStateRequest>,
        ) -> std::result::Result<
            tonic::Response<super::SaveWorkingStateResponse>,
            tonic::Status,
        > {
            self.inner
                .ready()
                .await
                .map_err(|e| {
                    tonic::Status::unknown(
                        format!("Service was not ready: {}", e.into()),
                    )
                })?;
            let codec = tonic::codec::ProstCodec::default();
            let path = http::uri::PathAndQuery::from_static(
                "/nominal.procedures.v1.ProceduresService/SaveWorkingState",
            );
            let mut req = request.into_request();
            req.extensions_mut()
                .insert(
                    GrpcMethod::new(
                        "nominal.procedures.v1.ProceduresService",
                        "SaveWorkingState",
                    ),
                );
            self.inner.unary(req, path, codec).await
        }
        pub async fn commit(
            &mut self,
            request: impl tonic::IntoRequest<super::CommitRequest>,
        ) -> std::result::Result<tonic::Response<super::CommitResponse>, tonic::Status> {
            self.inner
                .ready()
                .await
                .map_err(|e| {
                    tonic::Status::unknown(
                        format!("Service was not ready: {}", e.into()),
                    )
                })?;
            let codec = tonic::codec::ProstCodec::default();
            let path = http::uri::PathAndQuery::from_static(
                "/nominal.procedures.v1.ProceduresService/Commit",
            );
            let mut req = request.into_request();
            req.extensions_mut()
                .insert(
                    GrpcMethod::new("nominal.procedures.v1.ProceduresService", "Commit"),
                );
            self.inner.unary(req, path, codec).await
        }
        pub async fn search_procedures(
            &mut self,
            request: impl tonic::IntoRequest<super::SearchProceduresRequest>,
        ) -> std::result::Result<
            tonic::Response<super::SearchProceduresResponse>,
            tonic::Status,
        > {
            self.inner
                .ready()
                .await
                .map_err(|e| {
                    tonic::Status::unknown(
                        format!("Service was not ready: {}", e.into()),
                    )
                })?;
            let codec = tonic::codec::ProstCodec::default();
            let path = http::uri::PathAndQuery::from_static(
                "/nominal.procedures.v1.ProceduresService/SearchProcedures",
            );
            let mut req = request.into_request();
            req.extensions_mut()
                .insert(
                    GrpcMethod::new(
                        "nominal.procedures.v1.ProceduresService",
                        "SearchProcedures",
                    ),
                );
            self.inner.unary(req, path, codec).await
        }
        pub async fn archive_procedures(
            &mut self,
            request: impl tonic::IntoRequest<super::ArchiveProceduresRequest>,
        ) -> std::result::Result<
            tonic::Response<super::ArchiveProceduresResponse>,
            tonic::Status,
        > {
            self.inner
                .ready()
                .await
                .map_err(|e| {
                    tonic::Status::unknown(
                        format!("Service was not ready: {}", e.into()),
                    )
                })?;
            let codec = tonic::codec::ProstCodec::default();
            let path = http::uri::PathAndQuery::from_static(
                "/nominal.procedures.v1.ProceduresService/ArchiveProcedures",
            );
            let mut req = request.into_request();
            req.extensions_mut()
                .insert(
                    GrpcMethod::new(
                        "nominal.procedures.v1.ProceduresService",
                        "ArchiveProcedures",
                    ),
                );
            self.inner.unary(req, path, codec).await
        }
        pub async fn unarchive_procedures(
            &mut self,
            request: impl tonic::IntoRequest<super::UnarchiveProceduresRequest>,
        ) -> std::result::Result<
            tonic::Response<super::UnarchiveProceduresResponse>,
            tonic::Status,
        > {
            self.inner
                .ready()
                .await
                .map_err(|e| {
                    tonic::Status::unknown(
                        format!("Service was not ready: {}", e.into()),
                    )
                })?;
            let codec = tonic::codec::ProstCodec::default();
            let path = http::uri::PathAndQuery::from_static(
                "/nominal.procedures.v1.ProceduresService/UnarchiveProcedures",
            );
            let mut req = request.into_request();
            req.extensions_mut()
                .insert(
                    GrpcMethod::new(
                        "nominal.procedures.v1.ProceduresService",
                        "UnarchiveProcedures",
                    ),
                );
            self.inner.unary(req, path, codec).await
        }
    }
}
