1use crate::client::BybitClient;
4use crate::error::Result;
5use crate::models::user::*;
6
7impl BybitClient {
8 pub async fn get_affiliate_sub_list(
10 &self,
11 cursor: Option<&str>,
12 size: Option<i64>,
13 start_date: Option<&str>,
14 end_date: Option<&str>,
15 sub_aff_id: Option<i64>,
16 ) -> Result<GetAffiliateSubListResponse> {
17 let size_str;
18 let sub_aff_id_str;
19 let mut params: Vec<(&str, &str)> = vec![];
20 if let Some(c) = cursor {
21 params.push(("cursor", c));
22 }
23 if let Some(s) = size {
24 size_str = s.to_string();
25 params.push(("size", size_str.as_str()));
26 }
27 if let Some(s) = start_date {
28 params.push(("startDate", s));
29 }
30 if let Some(e) = end_date {
31 params.push(("endDate", e));
32 }
33 if let Some(s) = sub_aff_id {
34 sub_aff_id_str = s.to_string();
35 params.push(("subAffId", sub_aff_id_str.as_str()));
36 }
37 self.get("/v5/affiliate/affiliate-sub-list", ¶ms).await
38 }
39
40 pub async fn get_affiliate_user_info(&self, uid: &str) -> Result<GetAffiliateUserInfoResponse> {
42 let params = vec![("uid", uid)];
43 self.get("/v5/user/aff-customer-info", ¶ms).await
44 }
45
46 #[allow(clippy::too_many_arguments)] pub async fn get_affiliate_user_list(
49 &self,
50 cursor: Option<&str>,
51 size: Option<i64>,
52 need_deposit: Option<bool>,
53 need30: Option<bool>,
54 need365: Option<bool>,
55 start_date: Option<&str>,
56 end_date: Option<&str>,
57 ) -> Result<GetAffiliateUserListResponse> {
58 let size_str;
59 let need_deposit_str;
60 let need30_str;
61 let need365_str;
62 let mut params: Vec<(&str, &str)> = vec![];
63 if let Some(c) = cursor {
64 params.push(("cursor", c));
65 }
66 if let Some(s) = size {
67 size_str = s.to_string();
68 params.push(("size", size_str.as_str()));
69 }
70 if let Some(n) = need_deposit {
71 need_deposit_str = n.to_string();
72 params.push(("needDeposit", need_deposit_str.as_str()));
73 }
74 if let Some(n) = need30 {
75 need30_str = n.to_string();
76 params.push(("need30", need30_str.as_str()));
77 }
78 if let Some(n) = need365 {
79 need365_str = n.to_string();
80 params.push(("need365", need365_str.as_str()));
81 }
82 if let Some(s) = start_date {
83 params.push(("startDate", s));
84 }
85 if let Some(e) = end_date {
86 params.push(("endDate", e));
87 }
88 self.get("/v5/affiliate/aff-user-list", ¶ms).await
89 }
90
91 pub async fn create_sub_api_key(
93 &self,
94 params: CreateSubApiKeyParams,
95 ) -> Result<CreateSubApiKeyResponse> {
96 self.post("/v5/user/create-sub-api", ¶ms).await
97 }
98
99 pub async fn create_sub_member(
101 &self,
102 params: CreateSubMemberParams,
103 ) -> Result<CreateSubMemberResponse> {
104 self.post("/v5/user/create-sub-member", ¶ms).await
105 }
106
107 pub async fn delete_api_key(&self, params: DeleteApiKeyParams) -> Result<DeleteApiKeyResponse> {
109 self.post("/v5/user/delete-api", ¶ms).await
110 }
111
112 pub async fn delete_sub_api_key(
114 &self,
115 params: DeleteSubApiKeyParams,
116 ) -> Result<DeleteSubApiKeyResponse> {
117 self.post("/v5/user/delete-sub-api", ¶ms).await
118 }
119
120 pub async fn delete_sub_member_v5(
122 &self,
123 params: DeleteSubMemberV5Params,
124 ) -> Result<DeleteSubMemberV5Response> {
125 self.post("/v5/user/del-submember", ¶ms).await
126 }
127
128 pub async fn frozen_sub_member(
130 &self,
131 params: FrozenSubMemberParams,
132 ) -> Result<FrozenSubMemberResponse> {
133 self.post("/v5/user/frozen-sub-member", ¶ms).await
134 }
135
136 pub async fn get_member_account_type(
141 &self,
142 member_ids: Option<&str>,
143 ) -> Result<serde_json::Value> {
144 let mut params: Vec<(&str, &str)> = vec![];
145 if let Some(m) = member_ids {
146 params.push(("memberIds", m));
147 }
148 self.get("/v5/user/get-member-type", ¶ms).await
149 }
150
151 pub async fn list_sub_api_keys_v5(
155 &self,
156 sub_member_id: i64,
157 limit: Option<i64>,
158 cursor: Option<&str>,
159 ) -> Result<ListSubApiKeysV5Response> {
160 let sub_member_id_str = sub_member_id.to_string();
161 let limit_str;
162 let mut params: Vec<(&str, &str)> =
163 vec![("subMemberId", sub_member_id_str.as_str())];
164 if let Some(l) = limit {
165 limit_str = l.to_string();
166 params.push(("limit", limit_str.as_str()));
167 }
168 if let Some(c) = cursor {
169 params.push(("cursor", c));
170 }
171 self.get("/v5/user/sub-apikeys", ¶ms).await
172 }
173
174 pub async fn query_api_key(&self) -> Result<QueryApiKeyResponse> {
176 self.get("/v5/user/query-api", &[]).await
177 }
178
179 pub async fn query_escrow_sub_members_v5(
181 &self,
182 next_cursor: Option<i64>,
183 page_size: Option<i64>,
184 ) -> Result<QueryEscrowSubMembersV5Response> {
185 let next_cursor_str;
186 let page_size_str;
187 let mut params: Vec<(&str, &str)> = vec![];
188 if let Some(n) = next_cursor {
189 next_cursor_str = n.to_string();
190 params.push(("nextCursor", next_cursor_str.as_str()));
191 }
192 if let Some(p) = page_size {
193 page_size_str = p.to_string();
194 params.push(("pageSize", page_size_str.as_str()));
195 }
196 self.get("/v5/user/escrow_sub_members", ¶ms).await
197 }
198
199 pub async fn query_referrals(
201 &self,
202 cursor: Option<&str>,
203 size: Option<i64>,
204 status: Option<&str>,
205 ) -> Result<QueryReferralsResponse> {
206 let size_str;
207 let mut params: Vec<(&str, &str)> = vec![];
208 if let Some(c) = cursor {
209 params.push(("cursor", c));
210 }
211 if let Some(s) = size {
212 size_str = s.to_string();
213 params.push(("size", size_str.as_str()));
214 }
215 if let Some(s) = status {
216 params.push(("status", s));
217 }
218 self.get("/v5/user/invitation/referrals", ¶ms).await
219 }
220
221 pub async fn query_sub_members(&self) -> Result<QuerySubMembersResponse> {
223 self.get("/v5/user/query-sub-members", &[]).await
224 }
225
226 pub async fn query_sub_members_v5(
228 &self,
229 page_size: Option<i64>,
230 next_cursor: Option<i64>,
231 ) -> Result<QuerySubMembersV5Response> {
232 let page_size_str;
233 let next_cursor_str;
234 let mut params: Vec<(&str, &str)> = vec![];
235 if let Some(p) = page_size {
236 page_size_str = p.to_string();
237 params.push(("pageSize", page_size_str.as_str()));
238 }
239 if let Some(n) = next_cursor {
240 next_cursor_str = n.to_string();
241 params.push(("nextCursor", next_cursor_str.as_str()));
242 }
243 self.get("/v5/user/submembers", ¶ms).await
244 }
245
246 pub async fn sign_agreement(
248 &self,
249 params: SignAgreementParams,
250 ) -> Result<SignAgreementResponse> {
251 self.post("/v5/user/agreement", ¶ms).await
252 }
253
254 pub async fn update_api_key(&self, params: UpdateApiKeyParams) -> Result<UpdateApiKeyResponse> {
256 self.post("/v5/user/update-api", ¶ms).await
257 }
258
259 pub async fn update_sub_api_key(
261 &self,
262 params: UpdateSubApiKeyParams,
263 ) -> Result<UpdateSubApiKeyResponse> {
264 self.post("/v5/user/update-sub-api", ¶ms).await
265 }
266}