use crate::error::Result;
use crate::v2::model::beatmap::structs::beatmap_playcount::BeatmapPlaycount;
use crate::v2::model::beatmapset::structs::beatmapset::Beatmapset;
use crate::v2::model::event::structs::event::Event;
use crate::v2::model::mode::enums::mode::Mode;
use crate::v2::model::score::enums::score_type::ScoreType;
use crate::v2::model::score::structs::score::Score;
use crate::v2::model::user::structs::kudosu_history::KudosuHistory;
use crate::v2::model::user::structs::user::User;
use crate::v2::model::user::structs::users::Users;
pub trait IUsers {
fn get_own_data(
&self,
mode: Option<Mode>,
key: Option<String>,
) -> impl std::future::Future<Output = Result<User>>;
fn get_user_kudosu(
&self,
id: u32,
limit: Option<i32>,
offset: Option<String>,
) -> impl std::future::Future<Output = Result<Vec<KudosuHistory>>>;
fn get_user_scores(
&self,
id: u32,
score_type: ScoreType,
legacy_only: Option<u32>,
limit: Option<i32>,
offset: Option<String>,
) -> impl std::future::Future<Output = Result<Vec<Score>>>;
fn get_user_beatmaps(
&self,
id: u32,
beatmap_type: String,
limit: Option<i32>,
offset: Option<String>,
) -> impl std::future::Future<Output = Result<Vec<Beatmapset>>>;
fn get_user_beatmaps_most_played(
&self,
id: u32,
limit: Option<i32>,
offset: Option<String>,
) -> impl std::future::Future<Output = Result<Vec<BeatmapPlaycount>>>;
fn get_user_recent_activity(
&self,
id: u32,
limit: Option<i32>,
offset: Option<String>,
) -> impl std::future::Future<Output = Result<Vec<Event>>>;
fn get_user(
&self,
id: u32,
mode: Option<Mode>,
key: Option<String>,
) -> impl std::future::Future<Output = Result<User>>;
fn get_user_by_username(
&self,
username: &str,
mode: Option<Mode>,
key: Option<String>,
) -> impl std::future::Future<Output = Result<User>>;
fn get_users(
&self,
ids: Vec<u32>,
include_variant_statistics: Option<bool>,
) -> impl std::future::Future<Output = Result<Users>>;
}