use crate::{Identifier, IggyError, Stream, StreamDetails};
use async_trait::async_trait;
#[async_trait]
pub trait StreamClient {
async fn get_stream(&self, stream_id: &Identifier) -> Result<Option<StreamDetails>, IggyError>;
async fn get_streams(&self) -> Result<Vec<Stream>, IggyError>;
async fn create_stream(&self, name: &str) -> Result<StreamDetails, IggyError>;
async fn update_stream(&self, stream_id: &Identifier, name: &str) -> Result<(), IggyError>;
async fn delete_stream(&self, stream_id: &Identifier) -> Result<(), IggyError>;
async fn purge_stream(&self, stream_id: &Identifier) -> Result<(), IggyError>;
}