#![doc = "Transport-independent service interface for local and remote calls."]
use async_trait::async_trait;
use spiral_contract::auth::AuthHeader;
use spiral_contract::call::CallError;
use uuid::Uuid;
use crate::api::vector_indexes::objects::*;
#[async_trait]
pub trait VectorIndexesApi: Send + Sync + 'static {
async fn begin_version(
&self,
auth_header: AuthHeader,
vector_index_id: Uuid,
request: BeginVersionRequest,
) -> Result<BeginVersionResponse, CallError<VectorIndexesError>>;
async fn create_vector_index(
&self,
auth_header: AuthHeader,
request: CreateVectorIndexRequest,
) -> Result<CreateVectorIndexResponse, CallError<VectorIndexesError>>;
async fn read_version(
&self,
auth_header: AuthHeader,
vector_index_id: Uuid,
version_id: Uuid,
) -> Result<ReadVersionResponse, CallError<VectorIndexesError>>;
async fn revise_definition(
&self,
auth_header: AuthHeader,
vector_index_id: Uuid,
request: ReviseDefinitionRequest,
) -> Result<ReadVersionResponse, CallError<VectorIndexesError>>;
async fn seal_version(
&self,
auth_header: AuthHeader,
vector_index_id: Uuid,
version_id: Uuid,
request: SealVersionRequest,
) -> Result<VersionResponse, CallError<VectorIndexesError>>;
async fn storage_access(
&self,
auth_header: AuthHeader,
vector_index_id: Uuid,
request: StorageAccessRequest,
) -> Result<StorageAccessResponse, CallError<VectorIndexesError>>;
async fn storage_binding(
&self,
auth_header: AuthHeader,
vector_index_id: Uuid,
request: StorageAccessRequest,
) -> Result<StorageBinding, CallError<VectorIndexesError>>;
}