use crate::client::BybitClient;
use crate::error::Result;
use crate::models::user::*;
impl BybitClient {
pub async fn get_affiliate_sub_list(
&self,
cursor: Option<&str>,
size: Option<i64>,
start_date: Option<&str>,
end_date: Option<&str>,
sub_aff_id: Option<i64>,
) -> Result<GetAffiliateSubListResponse> {
let size_str;
let sub_aff_id_str;
let mut params: Vec<(&str, &str)> = vec![];
if let Some(c) = cursor {
params.push(("cursor", c));
}
if let Some(s) = size {
size_str = s.to_string();
params.push(("size", size_str.as_str()));
}
if let Some(s) = start_date {
params.push(("startDate", s));
}
if let Some(e) = end_date {
params.push(("endDate", e));
}
if let Some(s) = sub_aff_id {
sub_aff_id_str = s.to_string();
params.push(("subAffId", sub_aff_id_str.as_str()));
}
self.get("/v5/affiliate/affiliate-sub-list", ¶ms).await
}
pub async fn get_affiliate_user_info(&self, uid: &str) -> Result<GetAffiliateUserInfoResponse> {
let params = vec![("uid", uid)];
self.get("/v5/user/aff-customer-info", ¶ms).await
}
#[allow(clippy::too_many_arguments)] pub async fn get_affiliate_user_list(
&self,
cursor: Option<&str>,
size: Option<i64>,
need_deposit: Option<bool>,
need30: Option<bool>,
need365: Option<bool>,
start_date: Option<&str>,
end_date: Option<&str>,
) -> Result<GetAffiliateUserListResponse> {
let size_str;
let need_deposit_str;
let need30_str;
let need365_str;
let mut params: Vec<(&str, &str)> = vec![];
if let Some(c) = cursor {
params.push(("cursor", c));
}
if let Some(s) = size {
size_str = s.to_string();
params.push(("size", size_str.as_str()));
}
if let Some(n) = need_deposit {
need_deposit_str = n.to_string();
params.push(("needDeposit", need_deposit_str.as_str()));
}
if let Some(n) = need30 {
need30_str = n.to_string();
params.push(("need30", need30_str.as_str()));
}
if let Some(n) = need365 {
need365_str = n.to_string();
params.push(("need365", need365_str.as_str()));
}
if let Some(s) = start_date {
params.push(("startDate", s));
}
if let Some(e) = end_date {
params.push(("endDate", e));
}
self.get("/v5/affiliate/aff-user-list", ¶ms).await
}
pub async fn create_sub_api_key(
&self,
params: CreateSubApiKeyParams,
) -> Result<CreateSubApiKeyResponse> {
self.post("/v5/user/create-sub-api", ¶ms).await
}
pub async fn create_sub_member(
&self,
params: CreateSubMemberParams,
) -> Result<CreateSubMemberResponse> {
self.post("/v5/user/create-sub-member", ¶ms).await
}
pub async fn delete_api_key(&self, params: DeleteApiKeyParams) -> Result<DeleteApiKeyResponse> {
self.post("/v5/user/delete-api", ¶ms).await
}
pub async fn delete_sub_api_key(
&self,
params: DeleteSubApiKeyParams,
) -> Result<DeleteSubApiKeyResponse> {
self.post("/v5/user/delete-sub-api", ¶ms).await
}
pub async fn delete_sub_member_v5(
&self,
params: DeleteSubMemberV5Params,
) -> Result<DeleteSubMemberV5Response> {
self.post("/v5/user/del-submember", ¶ms).await
}
pub async fn frozen_sub_member(
&self,
params: FrozenSubMemberParams,
) -> Result<FrozenSubMemberResponse> {
self.post("/v5/user/frozen-sub-member", ¶ms).await
}
pub async fn get_member_account_type(
&self,
member_ids: Option<&str>,
) -> Result<serde_json::Value> {
let mut params: Vec<(&str, &str)> = vec![];
if let Some(m) = member_ids {
params.push(("memberIds", m));
}
self.get("/v5/user/get-member-type", ¶ms).await
}
pub async fn list_sub_api_keys_v5(
&self,
sub_member_id: i64,
limit: Option<i64>,
cursor: Option<&str>,
) -> Result<ListSubApiKeysV5Response> {
let sub_member_id_str = sub_member_id.to_string();
let limit_str;
let mut params: Vec<(&str, &str)> =
vec![("subMemberId", sub_member_id_str.as_str())];
if let Some(l) = limit {
limit_str = l.to_string();
params.push(("limit", limit_str.as_str()));
}
if let Some(c) = cursor {
params.push(("cursor", c));
}
self.get("/v5/user/sub-apikeys", ¶ms).await
}
pub async fn query_api_key(&self) -> Result<QueryApiKeyResponse> {
self.get("/v5/user/query-api", &[]).await
}
pub async fn query_escrow_sub_members_v5(
&self,
next_cursor: Option<i64>,
page_size: Option<i64>,
) -> Result<QueryEscrowSubMembersV5Response> {
let next_cursor_str;
let page_size_str;
let mut params: Vec<(&str, &str)> = vec![];
if let Some(n) = next_cursor {
next_cursor_str = n.to_string();
params.push(("nextCursor", next_cursor_str.as_str()));
}
if let Some(p) = page_size {
page_size_str = p.to_string();
params.push(("pageSize", page_size_str.as_str()));
}
self.get("/v5/user/escrow_sub_members", ¶ms).await
}
pub async fn query_referrals(
&self,
cursor: Option<&str>,
size: Option<i64>,
status: Option<&str>,
) -> Result<QueryReferralsResponse> {
let size_str;
let mut params: Vec<(&str, &str)> = vec![];
if let Some(c) = cursor {
params.push(("cursor", c));
}
if let Some(s) = size {
size_str = s.to_string();
params.push(("size", size_str.as_str()));
}
if let Some(s) = status {
params.push(("status", s));
}
self.get("/v5/user/invitation/referrals", ¶ms).await
}
pub async fn query_sub_members(&self) -> Result<QuerySubMembersResponse> {
self.get("/v5/user/query-sub-members", &[]).await
}
pub async fn query_sub_members_v5(
&self,
page_size: Option<i64>,
next_cursor: Option<i64>,
) -> Result<QuerySubMembersV5Response> {
let page_size_str;
let next_cursor_str;
let mut params: Vec<(&str, &str)> = vec![];
if let Some(p) = page_size {
page_size_str = p.to_string();
params.push(("pageSize", page_size_str.as_str()));
}
if let Some(n) = next_cursor {
next_cursor_str = n.to_string();
params.push(("nextCursor", next_cursor_str.as_str()));
}
self.get("/v5/user/submembers", ¶ms).await
}
pub async fn sign_agreement(
&self,
params: SignAgreementParams,
) -> Result<SignAgreementResponse> {
self.post("/v5/user/agreement", ¶ms).await
}
pub async fn update_api_key(&self, params: UpdateApiKeyParams) -> Result<UpdateApiKeyResponse> {
self.post("/v5/user/update-api", ¶ms).await
}
pub async fn update_sub_api_key(
&self,
params: UpdateSubApiKeyParams,
) -> Result<UpdateSubApiKeyResponse> {
self.post("/v5/user/update-sub-api", ¶ms).await
}
}