/// Metadata about a GAPIC library for a specific combination of API, version, and
/// computer language.
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct GapicMetadata {
    /// Schema version of this proto. Current value: 1.0
    #[prost(string, tag = "1")]
    pub schema: ::prost::alloc::string::String,
    /// Any human-readable comments to be included in this file.
    #[prost(string, tag = "2")]
    pub comment: ::prost::alloc::string::String,
    /// Computer language of this generated language. This must be
    /// spelled out as it spoken in English, with no capitalization or
    /// separators (e.g. "csharp", "nodejs").
    #[prost(string, tag = "3")]
    pub language: ::prost::alloc::string::String,
    /// The proto package containing the API definition for which this
    /// GAPIC library was generated.
    #[prost(string, tag = "4")]
    pub proto_package: ::prost::alloc::string::String,
    /// The language-specific library package for this GAPIC library.
    #[prost(string, tag = "5")]
    pub library_package: ::prost::alloc::string::String,
    /// A map from each proto-defined service to ServiceForTransports,
    /// which allows listing information about transport-specific
    /// implementations of the service.
    ///
    /// The key is the name of the service as it appears in the .proto
    /// file.
    #[prost(map = "string, message", tag = "6")]
    pub services: ::std::collections::HashMap<
        ::prost::alloc::string::String,
        gapic_metadata::ServiceForTransport,
    >,
}
/// Nested message and enum types in `GapicMetadata`.
pub mod gapic_metadata {
    /// A map from a transport name to ServiceAsClient, which allows
    /// listing information about the client objects that implement the
    /// parent RPC service for the specified transport.
    ///
    /// The key name is the transport, lower-cased with no separators
    /// (e.g. "grpc", "rest").
    #[allow(clippy::derive_partial_eq_without_eq)]
    #[derive(Clone, PartialEq, ::prost::Message)]
    pub struct ServiceForTransport {
        #[prost(map = "string, message", tag = "1")]
        pub clients: ::std::collections::HashMap<
            ::prost::alloc::string::String,
            ServiceAsClient,
        >,
    }
    /// Information about a specific client implementing a proto-defined service.
    #[allow(clippy::derive_partial_eq_without_eq)]
    #[derive(Clone, PartialEq, ::prost::Message)]
    pub struct ServiceAsClient {
        /// The name of the library client formatted as it appears in the source code
        #[prost(string, tag = "1")]
        pub library_client: ::prost::alloc::string::String,
        /// A mapping from each proto-defined RPC name to the the list of
        /// methods in library_client that implement it. There can be more
        /// than one library_client method for each RPC. RPCs with no
        /// library_client methods need not be included.
        ///
        /// The key name is the name of the RPC as defined and formated in
        /// the proto file.
        #[prost(map = "string, message", tag = "2")]
        pub rpcs: ::std::collections::HashMap<
            ::prost::alloc::string::String,
            MethodList,
        >,
    }
    /// List of GAPIC client methods implementing the proto-defined RPC
    /// for the transport and service specified in the containing
    /// structures.
    #[allow(clippy::derive_partial_eq_without_eq)]
    #[derive(Clone, PartialEq, ::prost::Message)]
    pub struct MethodList {
        /// List of methods for a specific proto-service client in the
        /// GAPIC. These names should be formatted as they appear in the
        /// source code.
        #[prost(string, repeated, tag = "1")]
        pub methods: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
    }
}
