// This file is @generated by prost-build.
/// Either parsed or checked representation of the `Common Expression Language  <<https://github.com/google/cel-spec>`\_> (CEL) program.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct CelExpression {
    /// Parsed expression in abstract syntax tree (AST) form.
    ///
    /// If `cel_expr_checked` is set, this field is not used.
    #[prost(message, optional, tag = "3")]
    pub cel_expr_parsed: ::core::option::Option<
        super::super::super::cel::expr::ParsedExpr,
    >,
    /// Parsed expression in abstract syntax tree (AST) form that has been successfully type checked.
    ///
    /// If set, takes precedence over `cel_expr_parsed`.
    #[prost(message, optional, tag = "4")]
    pub cel_expr_checked: ::core::option::Option<
        super::super::super::cel::expr::CheckedExpr,
    >,
    /// Unparsed expression in string form. For example, `request.headers\['x-env'\] == 'prod'` will
    /// get `x-env` header value and compare it with `prod`.
    /// Check the `Common Expression Language <<https://github.com/google/cel-spec>`\_> for more details.
    ///
    /// If set, takes precedence over `cel_expr_parsed` and `cel_expr_checked`.
    #[prost(string, tag = "5")]
    pub cel_expr_string: ::prost::alloc::string::String,
    #[prost(oneof = "cel_expression::ExprSpecifier", tags = "1, 2")]
    pub expr_specifier: ::core::option::Option<cel_expression::ExprSpecifier>,
}
/// Nested message and enum types in `CelExpression`.
pub mod cel_expression {
    #[derive(Clone, PartialEq, ::prost::Oneof)]
    pub enum ExprSpecifier {
        /// Parsed expression in abstract syntax tree (AST) form.
        ///
        /// Deprecated -- use `cel_expr_parsed` field instead.
        /// If `cel_expr_parsed` or `cel_expr_checked` is set, this field is not used.
        #[prost(message, tag = "1")]
        ParsedExpr(super::super::super::super::google::api::expr::v1alpha1::ParsedExpr),
        /// Parsed expression in abstract syntax tree (AST) form that has been successfully type checked.
        ///
        /// Deprecated -- use `cel_expr_checked` field instead.
        /// If `cel_expr_parsed` or `cel_expr_checked` is set, this field is not used.
        #[prost(message, tag = "2")]
        CheckedExpr(
            super::super::super::super::google::api::expr::v1alpha1::CheckedExpr,
        ),
    }
}
///
/// Extracts a string by evaluating a `Common Expression Language  <<https://github.com/google/cel-spec>`\_> (CEL) expression against the standardized set of
/// : ref:`HTTP attributes <arch_overview_attributes>`.
///
///
/// .. attention::
///
/// Besides CEL evaluation raising an error explicitly, CEL program returning a type other than
/// the `string`, or not returning anything, are considered an error as well.
///
/// \[\#comment:TODO(sergiitk): When implemented, add the extension tag.\]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct CelExtractString {
    /// The CEL expression used to extract a string from the CEL environment.
    /// the "subject string") that should be replaced.
    #[prost(message, optional, tag = "1")]
    pub expr_extract: ::core::option::Option<CelExpression>,
    /// If CEL expression evaluates to an error, this value is be returned to the caller.
    /// If not set, the error is propagated to the caller.
    #[prost(message, optional, tag = "2")]
    pub default_value: ::core::option::Option<
        super::super::super::google::protobuf::StringValue,
    >,
}
