use crate::option::repo::ListOptions;
use crate::types::repo::RepoInfo;
use crate::types::user::{ContributionResult, UserInfo};
use async_trait::async_trait;
#[async_trait]
pub trait User {
async fn info(&self, user_name: Option<&str>) -> crate::Result<UserInfo>;
async fn avatar_url(&self, user_name: Option<&str>) -> crate::Result<String>;
async fn contribution(&self, user_name: Option<&str>) -> crate::Result<ContributionResult>;
async fn repo_list(
&self,
user_name: Option<&str>,
option: Option<ListOptions>,
) -> crate::Result<Vec<RepoInfo>>;
}