xync-client 0.0.150__py3-none-any.whl → 0.0.151__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of xync-client might be problematic. Click here for more details.

xync_client/Abc/Agent.py CHANGED
@@ -134,21 +134,7 @@ class BaseAgentClient(HttpClient):
134
134
  async def my_assets(self) -> dict: ...
135
135
 
136
136
  @abstractmethod
137
- async def _take_ad(self, req: TakeAdReq): ...
138
-
139
- async def take_ad(self, req: TakeAdReq):
140
- if req.is_sell:
141
- fltr = dict(ex_id=self.actor.ex_id, cred__pmcur__pm_id=req.pm_id, cred__person_id=self.actor.person.id)
142
- if req.cur_:
143
- fltr |= dict(cred__pmcur__cur__ticker=req.cur_)
144
- pmexs = await models.CredEx.filter(**fltr)
145
- else:
146
- pmexs = await models.PmEx.filter(ex_id=self.actor.ex_id, pm_id=req.pm_id)
147
- if len(pmexs) > 1:
148
- pmexs = [p for p in pmexs if p.name.endswith(f" ({req.cur_})")]
149
- req.pm_id = pmexs[0].exid
150
- req.quantity = round(req.amount / req.price, 4) # todo: to get the scale from coinEx
151
- return await self._take_ad(req)
137
+ async def take_ad(self, req: TakeAdReq): ...
152
138
 
153
139
  # Сохранение объявления (с Pm/Cred-ами) в бд
154
140
  # async def ad_pydin2db(self, ad_pydin: AdSaleIn | AdBuyIn) -> Ad:
xync_client/Abc/xtype.py CHANGED
@@ -53,7 +53,7 @@ class BaseOrderReq(BaseModel):
53
53
  asset_amount: float | None = None
54
54
  fiat_amount: float | None = None
55
55
 
56
- pm_id: int = (None,)
56
+ pmex_exid: str = None # int
57
57
 
58
58
  # todo: mv from base to special ex class
59
59
  amount_is_fiat: bool = True
@@ -335,7 +335,7 @@ class InAgentClient(BaseInAgentClient):
335
335
  pma, cur = await self.get_pma_by_pmex(order_db)
336
336
  async with in_transaction():
337
337
  # отмечаем ордер на бирже "оплачен"
338
- pmex = await models.PmEx.get(pm_id=order_db.cred.pmcur.pm_id, ex=self.agent_client.actor.ex)
338
+ pmex = await models.PmEx.get(pm_id=order_db.cred.pmcur.pmex_exid, ex=self.agent_client.actor.ex)
339
339
  credex = await models.CredEx.get(cred=order_db.cred, ex=self.agent_client.actor.ex)
340
340
  self.agent_client.api.mark_as_paid(
341
341
  orderId=str(order_db.exid),
@@ -385,20 +385,20 @@ class InAgentClient(BaseInAgentClient):
385
385
  exid__in=[ptl.id for ptl in order.paymentTermList],
386
386
  cred__person=self.agent_client.actor.person,
387
387
  ).prefetch_related("cred__pmcur__cur")
388
- pmas = [pma for cdx in cdxs if (pma := self.pmacs.get(cdx.cred.pmcur.pm_id))]
388
+ pmas = [pma for cdx in cdxs if (pma := self.pmacs.get(cdx.cred.pmcur.pmex_exid))]
389
389
  if not len(pmas):
390
390
  # raise ValueError(order.paymentTermList, f"No pm_agents for {order.paymentTermList[0].paymentType}")
391
391
  return None
392
392
  elif len(pmas) > 1:
393
- logging.error(order.paymentTermList, f">1 pm_agents for {cdxs[0].cred.pmcur.pm_id}")
393
+ logging.error(order.paymentTermList, f">1 pm_agents for {cdxs[0].cred.pmcur.pmex_exid}")
394
394
  else:
395
395
  return pmas[0], cdxs[0]
396
396
 
397
397
  async def get_pma_by_pmex(self, order_db: models.Order) -> tuple[PmAgentClient, str]:
398
- pma = self.pmacs.get(order_db.cred.pmcur.pm_id)
398
+ pma = self.pmacs.get(order_db.cred.pmcur.pmex_exid)
399
399
  if pma:
400
400
  return pma, order_db.cred.pmcur.cur.ticker
401
- logging.error(f"No pm_agents for {order_db.cred.pmcur.pm_id}")
401
+ logging.error(f"No pm_agents for {order_db.cred.pmcur.pmex_exid}")
402
402
 
403
403
  @staticmethod
404
404
  def listen(data: dict | None):
@@ -22,6 +22,7 @@ from tortoise.expressions import Q
22
22
  from tortoise.functions import Count
23
23
  from tortoise.signals import post_save
24
24
  from urllib3.exceptions import ReadTimeoutError
25
+ from x_client import df_hdrs
25
26
  from x_model import init_db
26
27
  from x_model.func import ArrayAgg
27
28
  from xync_bot import XyncBot
@@ -54,10 +55,8 @@ class NoMakerException(Exception):
54
55
 
55
56
 
56
57
  class AgentClient(BaseAgentClient): # Bybit client
57
- headers = {
58
- # "accept": "application/json",
59
- "Cookie": ";",
60
- }
58
+ headers = df_hdrs | {"accept-language": "ru-RU"}
59
+ sec_hdrs: dict[str, str]
61
60
  # rewrite token for public methods
62
61
  api: P2P
63
62
  last_ad_id: list[str] = []
@@ -91,6 +90,11 @@ class AgentClient(BaseAgentClient): # Bybit client
91
90
 
92
91
  def __init__(self, agent: Agent, fbot: FileClient, bbot: XyncBot, **kwargs):
93
92
  super().__init__(agent, fbot, bbot, **kwargs)
93
+ self.sec_hdrs = {
94
+ "accept-language": "ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7",
95
+ "gdfp": agent.auth["Risktoken"],
96
+ "tx-id": agent.auth["Risktoken"],
97
+ }
94
98
  self.api = P2P(testnet=False, api_key=agent.auth["key"], api_secret=agent.auth["sec"])
95
99
  self.hist: dict | None = None
96
100
  self.completed_orders: list[int] | None = None
@@ -268,46 +272,29 @@ class AgentClient(BaseAgentClient): # Bybit client
268
272
  return security_risk_token
269
273
 
270
274
  async def _check_2fa(self, risk_token) -> int:
271
- res = await self._post(
272
- "/x-api/user/public/risk/components",
273
- {"risk_token": risk_token},
274
- hdrs={
275
- # "Accept-Language": "ru,en;q=0.9",
276
- },
277
- )
275
+ data = {"risk_token": risk_token}
276
+ res = await self._post("/x-api/user/public/risk/components", data, hdrs=self.sec_hdrs)
278
277
  if res["ret_msg"] != "success":
279
278
  raise HTTPException("get")
280
279
  cres = sorted(res["result"]["component_list"], key=lambda c: c["component_id"], reverse=True)
281
- # cres = [{"component_id": "payment_password_verify"}]
282
280
  vdata = {
283
281
  "risk_token": risk_token,
284
282
  "component_list": {c["component_id"]: await self.__get_2fa(c["component_id"], risk_token) for c in cres},
285
283
  }
286
- res = await self._post(
287
- "/x-api/user/public/risk/verify",
288
- vdata,
289
- hdrs={
290
- "user-agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36",
291
- "accept-language": "ru,en;q=0.9",
292
- # "accept-language": "ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7",
293
- "accept-encoding": "gzip, deflate, br, zstd",
294
- "accept": "application/json",
295
- },
296
- )
297
- if res["ret_msg"] != "success":
284
+ res = await self._post("/x-api/user/public/risk/verify", vdata, hdrs=self.sec_hdrs)
285
+ if er_code := res["ret_code"] or res["result"]["ret_code"]: # если код не 0, значит ошибка
298
286
  logging.error("Wrong 2fa, wait 5 secs and retry..")
299
287
  await sleep(5)
300
- await self._check_2fa(risk_token)
301
- return res["ret_code"]
288
+ return await self._check_2fa(risk_token)
289
+ return er_code
302
290
 
303
291
  async def __get_2fa(
304
292
  self, typ: Literal["google2fa", "email_verify", "payment_password_verify", "phone_verify"], rt: str = None
305
293
  ):
306
294
  res = {"ret_msg": "success"}
307
295
  if typ != "google2fa":
308
- # "accept-language": "ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7",
309
- # "accept": "application/json"
310
- res = await self._post("/x-api/user/public/risk/send/code", {"risk_token": rt, "component_id": typ})
296
+ data = {"risk_token": rt, "component_id": typ}
297
+ res = await self._post("/x-api/user/public/risk/send/code", data, hdrs=self.sec_hdrs)
311
298
  if res["ret_msg"] == "success":
312
299
  if typ == "google2fa":
313
300
  bybit_secret = self.agent.auth["2fa"]
@@ -381,36 +368,33 @@ class AgentClient(BaseAgentClient): # Bybit client
381
368
  res = res["result"]
382
369
  return PreOrderResp.model_validate(res)
383
370
 
384
- async def __order_request_build(self, por: PreOrderResp, br: BaseOrderReq) -> OrderRequest:
371
+ async def _order_request(self, bor: BaseOrderReq) -> OrderResp:
372
+ por: PreOrderResp = await self.__preorder_request(bor.ad_id)
385
373
  req = OrderRequest(
386
374
  itemId=por.id,
387
- tokenId=br.coin_exid,
388
- currencyId=br.cur_exid,
389
- side="1" if br.is_sell else "0",
390
- amount=f"{br.fiat_amount:.2f}".rstrip("0").rstrip("."),
375
+ tokenId=bor.coin_exid,
376
+ currencyId=bor.cur_exid,
377
+ side="1" if bor.is_sell else "0",
378
+ amount=f"{bor.fiat_amount:.2f}".rstrip("0").rstrip("."),
391
379
  curPrice=por.curPrice,
392
- quantity=str(round(br.fiat_amount / float(por.price), br.coin_scale)),
380
+ quantity=str(round(bor.fiat_amount / float(por.price), bor.coin_scale)),
393
381
  flag="amount",
394
382
  # online="0"
395
383
  )
396
- if br.is_sell:
384
+ if bor.is_sell:
397
385
  credex = await models.CredEx.get(
398
386
  cred__person_id=self.actor.person_id,
399
- cred__pmcur__pm__pmexs__exid=por.payments[0],
387
+ cred__pmcur__pm__pmexs__exid=[pp for pp in por.payments if pp == bor.pmex_exid][0], # bor.pmex_exid
400
388
  cred__pmcur__pm__pmexs__ex_id=self.ex_client.ex.id,
401
- cred__pmcur__cur__ticker=br.cur_exid,
389
+ cred__pmcur__cur__ticker=bor.cur_exid,
402
390
  )
403
- req = OrderSellRequest(**req.model_dump(), paymentType=por.payments[0], paymentId=str(credex.exid))
404
- return req
405
-
406
- async def _order_request(self, bor: BaseOrderReq) -> OrderResp:
407
- por: PreOrderResp = await self.__preorder_request(bor.ad_id)
408
- req: OrderRequest | OrderSellRequest = await self.__order_request_build(por, bor)
391
+ req = OrderSellRequest(**req.model_dump(), paymentType=bor.pmex_exid, paymentId=str(credex.exid))
409
392
  # вот непосредственно сам запрос на ордер
410
393
  return await self.__order_create(req, bor)
411
394
 
412
395
  async def __order_create(self, req: OrderRequest | OrderSellRequest, bor: BaseOrderReq) -> OrderResp:
413
- res: dict = await self._post("/x-api/fiat/otc/order/create", json=req.model_dump())
396
+ hdrs = {"Risktoken": self.sec_hdrs["gdfp"]}
397
+ res: dict = await self._post("/x-api/fiat/otc/order/create", json=req.model_dump(), hdrs=hdrs)
414
398
  if res["ret_code"] == 0:
415
399
  resp = OrderResp.model_validate(res["result"])
416
400
  elif res["ret_code"] == 10001:
@@ -972,9 +956,25 @@ class AgentClient(BaseAgentClient): # Bybit client
972
956
  bc, sc = mdl + mdl * (perc / 2), mdl - mdl * (perc / 2)
973
957
  return (bc, sc), hp, vmf, zplace
974
958
 
975
- async def _take_ad(self, req: TakeAdReq):
959
+ async def take_ad(self, req: TakeAdReq):
960
+ if req.price and req.is_sell and req.cur_:
961
+ ... # todo call the get_ad_details() only if lack of data
976
962
  res = self.api.get_ad_details(itemId=req.ad_id)["result"]
977
963
  ad: Ad = Ad.model_validate(res)
964
+ pmexs = await models.PmEx.filter(ex_id=self.actor.ex_id, pm_id=req.pm_id)
965
+ if len(pmexs) > 1:
966
+ pmexs = [p for p in pmexs if p.exid in ad.payments]
967
+ # if ad.side: # продажа, я (тейкер) покупатель
968
+ # pmexs = await models.PmEx.filter(ex_id=self.actor.ex_id, pm_id=req.pm_id)
969
+ # if len(pmexs) > 1:
970
+ # pmexs = [p for p in pmexs if p.name.endswith(f" ({ad.currencyId})")]
971
+ # else:
972
+ # pmexs = await models.CredEx.filter(
973
+ # ex_id=self.actor.ex_id, cred__person_id=self.actor.person_id,
974
+ # cred__pmcur__pm_id=req.pm_id, cred__pmcur__cur__ticker=ad.currencyId
975
+ # )
976
+ # req.pm_id = pmexs[0].exid
977
+ # req.quantity = round(req.amount / float(ad.price) - 0.00005, 4) # todo: to get the scale from coinEx
978
978
 
979
979
  bor = BaseOrderReq(
980
980
  ad_id=str(ad.id),
@@ -983,7 +983,7 @@ class AgentClient(BaseAgentClient): # Bybit client
983
983
  cur_exid=ad.currencyId,
984
984
  coin_exid=ad.tokenId,
985
985
  coin_scale=ad.symbolInfo.token.scale,
986
- pm_id=req.pm_id,
986
+ pmex_exid=pmexs[0].exid,
987
987
  )
988
988
  resp: OrderResp = await self._order_request(bor)
989
989
  return resp
@@ -1115,14 +1115,22 @@ async def main():
1115
1115
  ...
1116
1116
 
1117
1117
  agent = (
1118
- await models.Agent.filter(actor__ex_id=4, auth__isnull=False, active=True)
1119
- .prefetch_related("actor__ex", "actor__person__user__gmail")
1118
+ await models.Agent.filter(actor__ex_id=4, auth__isnull=False, active=True, actor__person__user__id=2)
1119
+ .prefetch_related(
1120
+ "actor__ex",
1121
+ "actor__person__user__gmail",
1122
+ "actor__my_ads__my_ad__race",
1123
+ "actor__my_ads__pair_side__pair__cur",
1124
+ "actor__my_ads__pms",
1125
+ )
1120
1126
  .first()
1121
1127
  )
1122
1128
  filebot = FileClient(NET_TOKEN)
1123
- await filebot.start()
1129
+ # await filebot.start()
1124
1130
  # b.add_handler(MessageHandler(cond_start_handler, command("cond")))
1125
1131
  cl: AgentClient = agent.client(filebot, XyncBot(PAY_TOKEN, cn))
1132
+ req = TakeAdReq(ad_id=1955696985964089344, amount=504, pm_id=128)
1133
+ await cl.take_ad(req)
1126
1134
 
1127
1135
  # await cl.ex_client.set_pairs()
1128
1136
  # await cl.ex_client.set_pms()
@@ -47,9 +47,9 @@ class StatusApi(IntEnum):
47
47
  class TakeAdReq(BaseModel):
48
48
  ad_id: int | str
49
49
  amount: float
50
- quantity: float = None
51
- is_sell: bool
52
- price: float
50
+ quantity: float | None = None
51
+ is_sell: bool | None = None
52
+ price: float | None = None
53
53
  pm_id: int | str = None
54
54
  cur_: str | None = None
55
55
 
@@ -106,8 +106,8 @@ class OrderResp(BaseModel):
106
106
  confirmId: str = ""
107
107
  success: bool
108
108
  securityRiskToken: str = ""
109
- riskTokenType: Literal["challenge"] = None
110
- riskVersion: Literal["1", "2"] = None
109
+ riskTokenType: Literal["challenge", ""] = ""
110
+ riskVersion: Literal["1", "2", ""] = ""
111
111
  needSecurityRisk: bool
112
112
  isBulkOrder: bool
113
113
  confirmed: str = None
xync_client/Htx/agent.py CHANGED
@@ -46,7 +46,7 @@ class AgentClient(BaseAgentClient):
46
46
 
47
47
  async def cred_new(self, cred: models.Cred) -> models.CredEx:
48
48
  pmcur = await cred.pmcur
49
- exid = str(await models.PmEx.get(pm_id=pmcur.pm_id, ex=self.ex_client.ex).values_list("exid", flat=True))
49
+ exid = str(await models.PmEx.get(pm_id=pmcur.pmex_exid, ex=self.ex_client.ex).values_list("exid", flat=True))
50
50
  field_map = {
51
51
  "payee": "name",
52
52
  "bank": "extra",
@@ -71,7 +71,7 @@ class AgentClient(BaseAgentClient):
71
71
 
72
72
  async def cred_upd(self, cred: models.Cred, exid: int) -> models.CredEx:
73
73
  pmcur = await cred.pmcur
74
- _exid = str(await models.PmEx.get(pm_id=pmcur.pm_id, ex=self.ex_client.ex).values_list("exid", flat=True))
74
+ _exid = str(await models.PmEx.get(pm_id=pmcur.pmex_exid, ex=self.ex_client.ex).values_list("exid", flat=True))
75
75
  field_map = {
76
76
  "payee": "name",
77
77
  "bank": "extra",
xync_client/Mexc/agent.py CHANGED
@@ -1,4 +1,5 @@
1
1
  from asyncio import run
2
+ from hashlib import md5
2
3
  from uuid import uuid4
3
4
 
4
5
  from pyro_client.client.file import FileClient
@@ -24,11 +25,11 @@ class AgentClient(BaseAgentClient):
24
25
  self.i = 33 if self.i > 9998 else self.i + 2
25
26
  hdrs = self.headers | {"trochilus-trace-id": f"{uuid4()}-{self.i:04d}"}
26
27
  auth = {
27
- "p0": "hzE/loX7MBr0j8vnx7n5qY72DCChDHOiNG/ZAXbc0BrKIiwLc7cqg0vDdK15x/qArCO1xCX2jNqmtGO0aUxa0yrspnh2xX8tJnZ1oDbvkqPjcJuKdnvehVL2rMHVXOtC0ImfcZ++zfmIXrNFchhC+u2O9LqyjiHw8F5XNtdkMVWzcgs2tNAZmZiyliHDQso3WslCuRyp0iAogxT99DdP2A5bNoqOFvcurk0+/mMFskoeGwykq7OBVAGKhHwr4jbFFURGE5DYN1tKHUtIYkDaul5b+wpLn83IEYSEhwwxfSE+cy3VvKE7xPiAOf/ptmZa9s0FyALNb8jCeTLwa8Wh4stO0qM/flL0oOHXXA+dxiQtQIDOdFqOIKoDhPrZ9nnqq0V/UyhACk4Omf7dc9ElVtbNuX4Q/bgZefAE674y+IXvBHl9ss36kVOImui2xpT0lH+sc35pR8xht5SndOTz6+oiHLIr+z850DYSVpj06i343sSjTfQxNj1bKATpRTXgOVwPTUO67hMFSFFpNLQ7Mxl5IeKEXI7dZjud1qlxIVSPJAYe6m3vomY6jm4U50C11Nh9CXC9p9TcD0e7QPfchzoSiFjzkwCxfOjAsxWzKkSpSnoaQTHO58c6RieHszMsahazVqCQ9rtLJV4kJ65lKLPegKrBY/yI4gXQs0NdvtdFjdGd5EBTC1inr3g7PeSvNZc9PzN5y/x0oC5r2KGBY4CdxqWxzAnr7Tvnl2sL8MPZ6WDcizCnK6aegfl0Kk976MOlC221ZfPutfYTuyB4d1utADE82g2X63idNtF/h6iUl9bIsAKisoNzgUz26MCzkG/K++Cm/0/Sip40znh4lmT0z6XNhA4GiXmjbkxrhUsI4M8HiVRjuNWvrdq7D2l81j5K+JYHFWOaAUQuDNx+bB4eB9KJnHX03hxkJYfhYQtxr+X1LAPITWWfb+qmFy8x4+mWP1TVTBl27j7FAqWXnCL8FeJQ4sSP7Xphj3t7Fd62RtQewiq5L/BYegJGD3c9NvQBvC2gOXMuhTIE9RcQAUdXDsKKizZ4mXpXTvcGYXwednrVwz1SaLe8WhEe54e6tSLRf5Or3pce/7epsDqrKQXDeKugo6so//SN8y7wPsd8xpGeBtUjhvrESwNcRp305pYm4f+2A4lF71a92P6PHSOQm5ruGT7qB+9uwvzXIoFY985dI8aRq7g7GbAyQ1z7LhhjJzS11xUEpekunxdAxySl6OOFcAlTjnx8FgGBl2xiP+KtTJeSVB4b07OsqoUmAS54I0Sj19Tm8WQz+FKbKZ0eReApT+gyyqFJBSRcJYIyA3dLL/fYSNfNmNUu76KGR+o3xMHTSb8V/kVHmgWs6qmE98NE1BcXWnABiHVkqZU0lU/R0b9jhuUaYXB0md0VjyY61MztgfEk6VQnWfPQT/POuic6lBf4UJ3IWolsGttYlLo9sa9mAUqLXuDeSo+mTs7nDECVyYGZK/E+BCG+eEnhmwKB8dvY500kE/0Megf4i4Ymi0GG0jjy3z8VLsjP2cnUGrQHfe8d/etqgPN0CFI7crxEFoAeo8fl9VfEyr+ug61MWt+jcFtU2wfK66A75iPHobQpZVxW1tOv72PhiKTDWjgsLifJlYmFG1Eoadq8kiSEgkldsSCEYPTSjj4anXGSVBicRiaNliyQTuDT8DOjKmv3jGgu7opv/wKQ8Lz1FZDwL6i9WJExFzebdgJn+RNRZjpjWWKH0A9c0ZTd0Xa9q9WZyxEe8bycEkf4e4jnoalL4w==",
28
- "k0": "Dt/l/MGcXIAOoCeR1L1VW5vTgqRcc4qqXzXrb6O+/a/2c9pHywRAVhPZZm46Us91VyNi2zg3S6Dzpe3FiwnC/NC1zwFAfKLIcKYgnDxTHesv5jUEYghDFlDsZFzCeY6b0TJ6ZlNr7+/NOQ4Hx1gbCsOlO0BrcMJ+DlqJlR7KM0od2SBWmbmJO1Dh25H/PzKnPhzq4NDuzHGcsDMrlkqmsKFHvkF01IiPVOCMFMdOWfCy3O4HGsSu3r9b/JvhxsC8hdfOZg1JKKDtKOGaHo8Fmajqozp39akG8EKk4C27hf2qDT2zh0LLrb3ZL0Gnd0y33LJTvUbYBSfFK1b7xv0i0A==",
29
- "chash": "ccef0ebde038ce0e7cb086851c51781c498a429be65ab70bf4f46671c637516e",
30
- "mtoken": "9482d04a3235e3090e954d3b6a8871e1",
31
- "mhash": "06cabb6939e0262495aa5d55e44dfc27",
28
+ "p0": self.actor.agent.auth["p0"],
29
+ "k0": self.actor.agent.auth["k0"],
30
+ "chash": self.actor.agent.auth["chash"],
31
+ "mtoken": self.actor.agent.auth["deviceId"],
32
+ "mhash": md5(self.actor.agent.auth["deviceId"].encode()).hexdigest(),
32
33
  }
33
34
  data = {
34
35
  "scene": "TRADE_BUY",
@@ -273,7 +273,7 @@ async def _test():
273
273
  pma = await models.PmAgent.get(
274
274
  active=True,
275
275
  auth__isnull=False,
276
- pm_id=o.cred.pmcur.pm_id,
276
+ pm_id=o.cred.pmcur.pmex_exid,
277
277
  user__person__actors=o.ad.maker_id,
278
278
  user__status=UserStatus.ACTIVE,
279
279
  ).prefetch_related("pm", "user__gmail", "user__username__session")
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: xync-client
3
- Version: 0.0.150
3
+ Version: 0.0.151
4
4
  Author-email: Mike Artemiev <mixartemev@gmail.com>
5
5
  Project-URL: Homepage, https://gitlab.com/XyncNet/client
6
6
  Project-URL: Repository, https://gitlab.com/XyncNet/client
@@ -3,7 +3,7 @@ xync_client/details.py,sha256=21itVPCgAtaYRR1H9J9oYudj95gafcFjExUN6QL17OI,1330
3
3
  xync_client/loader.py,sha256=hxf8ob50DO7r_qjr2qBoO7IyjkXeHHzVQ63YjXerjoU,600
4
4
  xync_client/pm_unifier.py,sha256=T2Xh-tvcu114P2YBI6RK_XDiaIhyq6ABMrXDuXPlx7A,6541
5
5
  xync_client/Abc/AdLoader.py,sha256=VgT6y1b2icFSm4-pjpA2H5WUXjlRf7acBxBR9t9Tips,13701
6
- xync_client/Abc/Agent.py,sha256=IiDjtm5UckYIr6HTPEvSq9b_hbWjR8GCsfYlwthgJ9s,6591
6
+ xync_client/Abc/Agent.py,sha256=uP7FsO_Gs9ThSqayNWT5eufbBJBhvRYH5Wc9_l352rQ,5881
7
7
  xync_client/Abc/Asset.py,sha256=hlgyFaU9byr2N2r8Heh-_ICx49SKuKxfRTUA4yQWmEw,454
8
8
  xync_client/Abc/Auth.py,sha256=OPQXN7_XYQZP9431ylFksd6JDusbKG8N_1g6CXTZ6yY,1495
9
9
  xync_client/Abc/BaseTest.py,sha256=vaAs5Z4HYV7k_C3zQz6JKO75s2hXtVbBI3-0Srkzv5Q,2388
@@ -13,7 +13,7 @@ xync_client/Abc/HasAbotUid.py,sha256=LsTHHjMHBauCwJoqgDa9Lx4R6xsDOHfsN4jM539Bpqg
13
13
  xync_client/Abc/InAgent.py,sha256=XLf5czbxxEimsIIe653buoP7OsWZD6mc2w37q4TkNd0,703
14
14
  xync_client/Abc/Order.py,sha256=7-FGIJu5z9aYi0A_eJV4F-cp_6Mz_izNpefexDQZvHw,2428
15
15
  xync_client/Abc/PmAgent.py,sha256=8ozQDxriAwtU2cNsJleuWcZ2ZdNeZPhgwO6l6jvi0MY,4350
16
- xync_client/Abc/xtype.py,sha256=FRvYm_VeQiCNOzjw2Ey1iwl9PC8hfjcAqKEEpU5_7Fc,2607
16
+ xync_client/Abc/xtype.py,sha256=SnzcFm6muyaNXc2qRKub9nRnkaslD19wU-eAK3HbRMA,2615
17
17
  xync_client/Binance/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
18
18
  xync_client/Binance/binance_async.py,sha256=LP2DZaHwkfsp_4Tjvetb-1ntjQtJfODF0OgZpoPx4KU,2688
19
19
  xync_client/Binance/earn_api.py,sha256=hvk0MaVTLszIglQXVhbUjGcaHfbF9Ul7FFXmy94U2so,4411
@@ -36,8 +36,8 @@ xync_client/BitGet/agent.py,sha256=YVs3bDY0OcEJGU7m2A8chzO6PFhWDnQQrA-E6MVkBBg,3
36
36
  xync_client/BitGet/ex.py,sha256=uEvvXuLaJv8o8BFi0bMA3XyBuTfVDWagAjLOHZl-xlE,3765
37
37
  xync_client/BitGet/etype/ad.py,sha256=fysSW47wGYjSOPUqY864z857AJz4gjN-nOkI1Jxd27U,1838
38
38
  xync_client/BitPapa/ex.py,sha256=U-RRB_RSOtErfRgxOZYWegZ_td_uZO37YKo3Jxchf_w,912
39
- xync_client/Bybit/InAgent.py,sha256=1Y4ZyxqAY8xbAflku48fJjjlSs4pOz2mFFJSO9iWg8w,26405
40
- xync_client/Bybit/agent.py,sha256=gejZk59WhhBOPPdzmGk2UIoNyKj-bfsJnz18jCa2Pto,53407
39
+ xync_client/Bybit/InAgent.py,sha256=1jNAGFFZOwePlPACXf3HDRhOxCkjj-89afwbqpUkzKI,26425
40
+ xync_client/Bybit/agent.py,sha256=aMWZcuQfJOYKLaaFLkeg7J1WoPkugl6fvslvO7HyKzU,54243
41
41
  xync_client/Bybit/ex.py,sha256=3oARvReBoDs90FzQY31-L-q_YU-TIRbvWB7z4lwESsA,4715
42
42
  xync_client/Bybit/order.py,sha256=H4UIb8hxFGnw1hZuSbr0yZ4qeaCOIZOMc6jEst0ycBs,1713
43
43
  xync_client/Bybit/web_earn.py,sha256=qjqS10xlFc8r40IhDdPZ0LxA2dFEGbvBGXdsrUUJCMo,3019
@@ -45,12 +45,12 @@ xync_client/Bybit/web_p2p.py,sha256=sAXzK03t6jwDnz4rrvP2IzI0KxfKa7C_5GuzH1HwLuA,
45
45
  xync_client/Bybit/ws.py,sha256=OQjZHo_MiAH1dlOs3c-aUZBKyqToNTmH560udh6RYDE,1431
46
46
  xync_client/Bybit/etype/ad.py,sha256=pCD0I9SL4Paaegs85fHGtvZ-7Cm917AQXYel0k1MbY0,8065
47
47
  xync_client/Bybit/etype/cred.py,sha256=qDQUsMqLV4XtXKYWZV4f805kLDf7AdcPYscHRA-IMBo,1386
48
- xync_client/Bybit/etype/order.py,sha256=EuBZPS_mkGgoEF9kSne3g-BpopBD6io8XPs5Uxbyx_U,8970
48
+ xync_client/Bybit/etype/order.py,sha256=t7cOd5CfyPG4-CyTMNVMy0kvqJiHrG8eZVWb6-D9W1A,9009
49
49
  xync_client/Gate/ex.py,sha256=QbhB3u7TWnvVGD-AknB2nay6KZjEXQ-1JT9UacX4sWI,3735
50
50
  xync_client/Gate/premarket.py,sha256=IW-CgkmNJePJR2j_NRfULNKTePMX35XlhldqdiO76zY,2138
51
51
  xync_client/Gate/etype/ad.py,sha256=-EwtFcOWWvtE6UjaOdsuXWDTCVjAIRK0kSEsqPP4Yls,1296
52
52
  xync_client/Gmail/__init__.py,sha256=9JGT8PyzJaOTVvaFV0Gki3Fdo6Bp6m6DnWOPGZJ-eAA,5436
53
- xync_client/Htx/agent.py,sha256=rOURgTeY9TsA-IzT78l5-Ze91i0x1PY683mrX38MSgs,7356
53
+ xync_client/Htx/agent.py,sha256=RzDgs5HSIoyoCsPjNcbmI1GyXjq8AzTXbUpi5jcyBZY,7364
54
54
  xync_client/Htx/earn.py,sha256=jL6eRwytZEMRom_3bFm1DYthi_GFg-E1Mm3ZDXENHSg,2386
55
55
  xync_client/Htx/ex.py,sha256=GuWK5lA_MvtSd-0DhKf2MAstKvZMHhc3BIiZSgdwZv4,6074
56
56
  xync_client/Htx/etype/__init__.py,sha256=sZIhFOxj2dRQRmMe86-y9vlzOGAPo1qoOi6u1qVxWr0,123
@@ -62,7 +62,7 @@ xync_client/KuCoin/ex.py,sha256=w-6-aedlC1mYf8LShMv6pOrQzqMR9E6yIyXGUHQP888,3237
62
62
  xync_client/KuCoin/web.py,sha256=--OHS0Z29xjfNUjdTL7K0EDmU4dwej95OJ8Sv4PsxLI,920
63
63
  xync_client/KuCoin/etype/ad.py,sha256=MTx90Qo2xFKvfgIr4_qMowjwO23HVpFCD6J7INNFDuQ,1223
64
64
  xync_client/KuCoin/etype/pm.py,sha256=S50S5fyY5YeWlcPwO66o-GsPcdqgoeXuxvmEIy6Zqvs,130
65
- xync_client/Mexc/agent.py,sha256=htJm-FSrKGJ0i3E169Ji901yxUItI6QtjalgRqHR3rA,4905
65
+ xync_client/Mexc/agent.py,sha256=7xhT-UH3aLFAVAfnGUhHqOauNeADNt84ifsT-x3ydq4,2843
66
66
  xync_client/Mexc/ex.py,sha256=jpITGa2GTeYayMVStQOomBW-P0YQoXjKExKZi_kS-2A,4295
67
67
  xync_client/Mexc/etype/ad.py,sha256=GUgvylx_z64CXNcw0YejUQJHg9F59eRo5v0zU7DRrAM,1434
68
68
  xync_client/Mexc/etype/pm.py,sha256=m5kCoMx9IEKUPB-z7YwwymQhASkv2npC4-Z_ePYeeRY,453
@@ -81,7 +81,7 @@ xync_client/Pms/Payeer/login.py,sha256=GyNwB-GKE_1nlkbZJ0KNI-EnCT0j_S9ogFdn-ufb-
81
81
  xync_client/Pms/Sber/__init__.py,sha256=dxQfd9ZPhFTc_C4xrwaxrV6p0SijDCLNzBeUv3oQG38,4926
82
82
  xync_client/Pms/Sber/utils.py,sha256=gIeJspwvoBbOBt-fjxwW4WDHPoL2Evs8LVufsjrFOfo,1870
83
83
  xync_client/Pms/Tinkoff/__init__.py,sha256=ZyLvBEUn-vh-85oPUUDS586AHgvx3c-mkQE3yBQtbw8,5580
84
- xync_client/Pms/Volet/__init__.py,sha256=JGd1QDn_H-tqck932cbARGLSOCHmnHKIns05Ll8dowA,12048
84
+ xync_client/Pms/Volet/__init__.py,sha256=lAvGjcdL7xpUmXYRaNqZP7MWvVnmzcJ_frEQaedJMJ8,12052
85
85
  xync_client/Pms/Volet/api.py,sha256=6_dH2rzmyyvha3PeoiZdSltiAzKDWn8roSUJOAErX4M,3673
86
86
  xync_client/Pms/Volet/pl.py,sha256=l7lvUrpjFoObXPHaseOIAcSbkNqJdpy6OLDutxYJH3U,2451
87
87
  xync_client/Pms/Volet/_todo_req/req.mjs,sha256=ut3Jw37rL5lY7SskjZ9f1l0VE33tuP-PZEYUTcJMc2I,817
@@ -98,7 +98,7 @@ xync_client/TgWallet/order.py,sha256=BOmBx5WWfJv0-_-A8DcR-Xd8utqO_VTmSqSegm0cteQ
98
98
  xync_client/TgWallet/pyd.py,sha256=Ys3E8b3RLuyQ26frWT0F0BorkNxVpxnd18tY4Gp9dik,5636
99
99
  xync_client/TgWallet/pyro.py,sha256=2K7QWdo48k4MbbgQt90gdz_HiPck69Njm4xaMjIVgoo,1440
100
100
  xync_client/TgWallet/web.py,sha256=kDcv9SKKQPe91mw1qJBpbuyKYCAmZdfdHJylHumLBVU,1608
101
- xync_client-0.0.150.dist-info/METADATA,sha256=MYF6WFaa4ISVIDcRTVfwr4fLGEWSmFz-ZnqLbGOH6DI,1149
102
- xync_client-0.0.150.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
103
- xync_client-0.0.150.dist-info/top_level.txt,sha256=bmYEVIIrD3v7yFwH-X15pEfRvzhuAdfsAZ2igvNI4O8,12
104
- xync_client-0.0.150.dist-info/RECORD,,
101
+ xync_client-0.0.151.dist-info/METADATA,sha256=jP557ojq5INZDkKILaA1-u8a2uZoezXanQkGTpLuSow,1149
102
+ xync_client-0.0.151.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
103
+ xync_client-0.0.151.dist-info/top_level.txt,sha256=bmYEVIIrD3v7yFwH-X15pEfRvzhuAdfsAZ2igvNI4O8,12
104
+ xync_client-0.0.151.dist-info/RECORD,,