// This file is @generated by prost-build.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct CreateStore {
    /// Creates a new store with the following details:
    /// - store name
    /// - AI query and index models (String or Images are currently supported. It's worth noting that queries/insertions must match the model's supported type)
    /// - list of predicates for indexing
    /// - optional non-linear algorithm indices for advanced searching
    /// - store behavior settings, like error handling and storing original data
    ///
    /// Unique name for the store
    #[prost(string, tag = "1")]
    pub store: ::prost::alloc::string::String,
    /// AI model used for querying (string or image-based)
    #[prost(enumeration = "super::models::AiModel", tag = "2")]
    pub query_model: i32,
    /// AI model used for indexing
    #[prost(enumeration = "super::models::AiModel", tag = "3")]
    pub index_model: i32,
    /// List of predicates used for creating indices
    #[prost(string, repeated, tag = "4")]
    pub predicates: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
    /// Optional non-linear indices
    #[prost(
        enumeration = "super::super::algorithm::nonlinear::NonLinearAlgorithm",
        repeated,
        tag = "5"
    )]
    pub non_linear_indices: ::prost::alloc::vec::Vec<i32>,
    /// Whether to throw an error if the store already exists
    #[prost(bool, tag = "6")]
    pub error_if_exists: bool,
    /// Flag to store original data. Used if you wanna keep the original(image or text) input sent
    #[prost(bool, tag = "7")]
    pub store_original: bool,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct GetPred {
    /// Fetches values from the store that match the specified predicates
    /// Validation checks if the predicates are enabled
    ///
    /// Name of the store
    #[prost(string, tag = "1")]
    pub store: ::prost::alloc::string::String,
    /// Condition to match for predicates
    #[prost(message, optional, tag = "2")]
    pub condition: ::core::option::Option<super::super::predicates::PredicateCondition>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct GetSimN {
    /// Retrieves the top N similar entries from the store based on a given search input and algorithm
    ///
    /// Name of the store
    #[prost(string, tag = "1")]
    pub store: ::prost::alloc::string::String,
    /// Input data to search (can be a string or image)
    #[prost(message, optional, tag = "2")]
    pub search_input: ::core::option::Option<super::super::keyval::StoreInput>,
    /// Optional: filters results by predicate condition
    #[prost(message, optional, tag = "3")]
    pub condition: ::core::option::Option<super::super::predicates::PredicateCondition>,
    /// Number of similar results to return
    #[prost(uint64, tag = "4")]
    pub closest_n: u64,
    /// Algorithm to use for similarity search
    #[prost(
        enumeration = "super::super::algorithm::algorithms::Algorithm",
        tag = "5"
    )]
    pub algorithm: i32,
    /// Preprocessing actions to apply to input before querying
    #[prost(enumeration = "super::preprocess::PreprocessAction", tag = "6")]
    pub preprocess_action: i32,
    /// Optional execution provider for specific optimizations
    #[prost(
        enumeration = "super::execution_provider::ExecutionProvider",
        optional,
        tag = "7"
    )]
    pub execution_provider: ::core::option::Option<i32>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct CreatePredIndex {
    /// Creates predicate indexes for a store. Adds new predicates if they don’t already exist
    ///
    /// Store name
    #[prost(string, tag = "1")]
    pub store: ::prost::alloc::string::String,
    /// Predicates to use for indexing
    #[prost(string, repeated, tag = "2")]
    pub predicates: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct CreateNonLinearAlgorithmIndex {
    /// Creates non-linear algorithm indices for the store if they don't already exist
    ///
    /// Store name
    #[prost(string, tag = "1")]
    pub store: ::prost::alloc::string::String,
    /// Non-linear indices to create
    #[prost(
        enumeration = "super::super::algorithm::nonlinear::NonLinearAlgorithm",
        repeated,
        tag = "2"
    )]
    pub non_linear_indices: ::prost::alloc::vec::Vec<i32>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct DropPredIndex {
    /// Drops a predicate index for the store
    /// Throws an error if the predicate index doesn’t exist (controlled by `error_if_not_exists`)
    ///
    /// Store name
    #[prost(string, tag = "1")]
    pub store: ::prost::alloc::string::String,
    /// Predicates to remove
    #[prost(string, repeated, tag = "2")]
    pub predicates: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
    /// Flag to enforce error if the predicate doesn’t exist
    #[prost(bool, tag = "3")]
    pub error_if_not_exists: bool,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct DropNonLinearAlgorithmIndex {
    /// Drops non-linear algorithm indices from the store
    /// Similar to dropping predicate indices, does not remove existing data
    ///
    /// Store name
    #[prost(string, tag = "1")]
    pub store: ::prost::alloc::string::String,
    /// Non-linear indices to remove
    #[prost(
        enumeration = "super::super::algorithm::nonlinear::NonLinearAlgorithm",
        repeated,
        tag = "2"
    )]
    pub non_linear_indices: ::prost::alloc::vec::Vec<i32>,
    /// Flag to enforce error if the index doesn’t exist
    #[prost(bool, tag = "3")]
    pub error_if_not_exists: bool,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct DelKey {
    /// Deletes a key-value pair from the store, matching the given key
    /// Updates indices non-blocking after deletion
    ///
    /// Store name
    #[prost(string, tag = "1")]
    pub store: ::prost::alloc::string::String,
    /// Key to delete (type depends on the store model)
    #[prost(message, repeated, tag = "2")]
    pub keys: ::prost::alloc::vec::Vec<super::super::keyval::StoreInput>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct DropStore {
    /// Deletes the entire store and removes all associated data
    /// Destroys the store, and updates indices accordingly
    ///
    /// Store name
    #[prost(string, tag = "1")]
    pub store: ::prost::alloc::string::String,
    /// Flag to throw an error if the store does not exist
    #[prost(bool, tag = "2")]
    pub error_if_not_exists: bool,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct GetKey {
    /// Fetches specific input(image or string) from a store. This only works if, store_original is set to true
    ///
    /// Store name
    #[prost(string, tag = "1")]
    pub store: ::prost::alloc::string::String,
    /// Keys to retrieve from the store
    #[prost(message, repeated, tag = "2")]
    pub keys: ::prost::alloc::vec::Vec<super::super::keyval::StoreInput>,
}
/// Returns the information about the server, including version, host, and port
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct InfoServer {}
/// Lists all clients currently connected to the server
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct ListClients {}
/// Lists all stores on the server along with details like store size, embedding dimensions, AI models, etc.
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct ListStores {}
/// Purges (deletes) all stores on the server, effectively destroying all stored data
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct PurgeStores {}
/// Pings the server to check if it's reachable (typically for health-checking)
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct Ping {}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct Set {
    /// Sets a list of entries in the store
    /// Each entry corresponds to a key-value pair and is validated before insertion
    ///
    /// Store name
    #[prost(string, tag = "1")]
    pub store: ::prost::alloc::string::String,
    /// List of entries to set
    #[prost(message, repeated, tag = "2")]
    pub inputs: ::prost::alloc::vec::Vec<super::super::keyval::AiStoreEntry>,
    /// Preprocessing action to apply to inputs before setting
    #[prost(enumeration = "super::preprocess::PreprocessAction", tag = "3")]
    pub preprocess_action: i32,
    /// Optional execution provider for optimizations
    #[prost(
        enumeration = "super::execution_provider::ExecutionProvider",
        optional,
        tag = "4"
    )]
    pub execution_provider: ::core::option::Option<i32>,
}
