// This file is @generated by prost-build.
/// Creates a new store in the database with the specified dimension, predicates, and non-linear indices.
/// If `error_if_exists` is set to true, it will return an error if the store already exists.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct CreateStore {
    /// The name of the store.
    #[prost(string, tag = "1")]
    pub store: ::prost::alloc::string::String,
    /// The dimension of the data within the store.
    #[prost(uint32, tag = "2")]
    pub dimension: u32,
    /// Predicates used for querying.
    #[prost(string, repeated, tag = "3")]
    pub create_predicates: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
    /// Non-linear algorithms for indexing.
    #[prost(
        enumeration = "super::super::algorithm::nonlinear::NonLinearAlgorithm",
        repeated,
        tag = "4"
    )]
    pub non_linear_indices: ::prost::alloc::vec::Vec<i32>,
    /// Flag indicating whether to error if store already exists.
    #[prost(bool, tag = "5")]
    pub error_if_exists: bool,
}
/// Retrieves values from the store based on provided keys.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct GetKey {
    /// The name of the store.
    #[prost(string, tag = "1")]
    pub store: ::prost::alloc::string::String,
    /// The keys to retrieve from the store.
    #[prost(message, repeated, tag = "2")]
    pub keys: ::prost::alloc::vec::Vec<super::super::keyval::StoreKey>,
}
/// Retrieves values from the store based on predicates. Validation checks if the predicate is enabled.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct GetPred {
    /// The name of the store.
    #[prost(string, tag = "1")]
    pub store: ::prost::alloc::string::String,
    /// The condition for the predicate query.
    #[prost(message, optional, tag = "2")]
    pub condition: ::core::option::Option<super::super::predicates::PredicateCondition>,
}
/// Retrieves the `n` most similar items to the input vector from the store, using the specified algorithm.
/// Validation checks that the dimensions of the input vector match the store's dimensions.
/// `n` could be less than originally specified.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct GetSimN {
    /// The name of the store.
    #[prost(string, tag = "1")]
    pub store: ::prost::alloc::string::String,
    /// The input vector for similarity comparison.
    #[prost(message, optional, tag = "2")]
    pub search_input: ::core::option::Option<super::super::keyval::StoreKey>,
    /// The number of closest matches to return.
    #[prost(uint64, tag = "3")]
    pub closest_n: u64,
    /// The algorithm to use for similarity computation.
    #[prost(
        enumeration = "super::super::algorithm::algorithms::Algorithm",
        tag = "4"
    )]
    pub algorithm: i32,
    /// The predicate condition to apply.
    #[prost(message, optional, tag = "5")]
    pub condition: ::core::option::Option<super::super::predicates::PredicateCondition>,
}
/// Creates an index in the store based on the provided predicates.
/// This operation is idempotent: it will only add new predicates, not remove existing ones.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct CreatePredIndex {
    /// The name of the store.
    #[prost(string, tag = "1")]
    pub store: ::prost::alloc::string::String,
    /// The predicates to create indexes for.
    #[prost(string, repeated, tag = "2")]
    pub predicates: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
}
/// Creates an index for non-linear algorithms in the store, if it does not already exist.
/// This operation is idempotent: it will only add new non-linear indices, not remove existing ones.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct CreateNonLinearAlgorithmIndex {
    /// The name of the store.
    #[prost(string, tag = "1")]
    pub store: ::prost::alloc::string::String,
    /// Non-linear algorithms to create indices for.
    #[prost(
        enumeration = "super::super::algorithm::nonlinear::NonLinearAlgorithm",
        repeated,
        tag = "2"
    )]
    pub non_linear_indices: ::prost::alloc::vec::Vec<i32>,
}
/// Drops the specified predicates from the store.
/// If `error_if_not_exists` is true, an error is returned if the predicate does not exist.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct DropPredIndex {
    /// The name of the store.
    #[prost(string, tag = "1")]
    pub store: ::prost::alloc::string::String,
    /// The predicates to drop.
    #[prost(string, repeated, tag = "2")]
    pub predicates: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
    /// Flag indicating whether to error if predicate does not exist.
    #[prost(bool, tag = "3")]
    pub error_if_not_exists: bool,
}
/// Drops the specified non-linear indices from the store.
/// If `error_if_not_exists` is true, an error is returned if the non-linear index does not exist.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct DropNonLinearAlgorithmIndex {
    /// The name of the store.
    #[prost(string, tag = "1")]
    pub store: ::prost::alloc::string::String,
    /// Non-linear indices to drop.
    #[prost(
        enumeration = "super::super::algorithm::nonlinear::NonLinearAlgorithm",
        repeated,
        tag = "2"
    )]
    pub non_linear_indices: ::prost::alloc::vec::Vec<i32>,
    /// Flag indicating whether to error if index does not exist.
    #[prost(bool, tag = "3")]
    pub error_if_not_exists: bool,
}
/// Deletes the specified keys from the store and returns the number of deleted keys.
/// It will also update the indices in a non-blocking manner.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct DelKey {
    /// The name of the store.
    #[prost(string, tag = "1")]
    pub store: ::prost::alloc::string::String,
    /// The keys to delete from the store.
    #[prost(message, repeated, tag = "2")]
    pub keys: ::prost::alloc::vec::Vec<super::super::keyval::StoreKey>,
}
/// Deletes values from the store based on the provided predicate condition.
/// It will also update the indices in a non-blocking manner.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct DelPred {
    /// The name of the store.
    #[prost(string, tag = "1")]
    pub store: ::prost::alloc::string::String,
    /// The condition for the predicate deletion.
    #[prost(message, optional, tag = "2")]
    pub condition: ::core::option::Option<super::super::predicates::PredicateCondition>,
}
/// Drops a store and deletes all its data and associated indices.
/// If `error_if_not_exists` is true, it will return an error if the store does not exist.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct DropStore {
    /// The name of the store.
    #[prost(string, tag = "1")]
    pub store: ::prost::alloc::string::String,
    /// Flag indicating whether to error if store does not exist.
    #[prost(bool, tag = "2")]
    pub error_if_not_exists: bool,
}
/// A request to get server information such as host, port, and version.
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct InfoServer {}
/// A request to list all the stores on the server, along with their size or length.
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct ListStores {}
/// A request to list all the clients currently connected to the server.
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct ListClients {}
/// A simple ping request to check if the server is reachable.
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct Ping {}
/// A request to set multiple key-value entries in the store.
/// Validation is done for each vector before updating the store.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct Set {
    /// The name of the store.
    #[prost(string, tag = "1")]
    pub store: ::prost::alloc::string::String,
    /// The key-value entries to set in the store.
    #[prost(message, repeated, tag = "2")]
    pub inputs: ::prost::alloc::vec::Vec<super::super::keyval::DbStoreEntry>,
}
