use async_trait::async_trait;
use crate::{GazelleError, GroupResponse, TorrentResponse, UploadForm, UploadResponse, User};
#[async_trait]
pub trait GazelleClientTrait: Send + Sync {
async fn get_torrent(&self, id: u32) -> Result<TorrentResponse, GazelleError>;
async fn get_torrent_group(&self, id: u32) -> Result<GroupResponse, GazelleError>;
async fn get_user(&self, id: u32) -> Result<User, GazelleError>;
async fn download_torrent(&self, id: u32) -> Result<Vec<u8>, GazelleError>;
async fn upload_torrent(&self, upload: UploadForm) -> Result<UploadResponse, GazelleError>;
}