xync-client 0.0.25.dev45__tar.gz → 0.0.25.dev46__tar.gz
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.
- {xync_client-0.0.25.dev45/xync_client.egg-info → xync_client-0.0.25.dev46}/PKG-INFO +1 -1
- {xync_client-0.0.25.dev45 → xync_client-0.0.25.dev46}/xync_client/Abc/Ex.py +6 -6
- xync_client-0.0.25.dev46/xync_client/Abc/types.py +36 -0
- {xync_client-0.0.25.dev45 → xync_client-0.0.25.dev46}/xync_client/TgWallet/ex.py +7 -5
- {xync_client-0.0.25.dev45 → xync_client-0.0.25.dev46}/xync_client/pm_unifier.py +2 -3
- {xync_client-0.0.25.dev45 → xync_client-0.0.25.dev46/xync_client.egg-info}/PKG-INFO +1 -1
- xync_client-0.0.25.dev45/xync_client/Abc/types.py +0 -32
- {xync_client-0.0.25.dev45 → xync_client-0.0.25.dev46}/.env.sample +0 -0
- {xync_client-0.0.25.dev45 → xync_client-0.0.25.dev46}/.gitignore +0 -0
- {xync_client-0.0.25.dev45 → xync_client-0.0.25.dev46}/.pre-commit-config.yaml +0 -0
- {xync_client-0.0.25.dev45 → xync_client-0.0.25.dev46}/README.md +0 -0
- {xync_client-0.0.25.dev45 → xync_client-0.0.25.dev46}/makefile +0 -0
- {xync_client-0.0.25.dev45 → xync_client-0.0.25.dev46}/pyproject.toml +0 -0
- {xync_client-0.0.25.dev45 → xync_client-0.0.25.dev46}/setup.cfg +0 -0
- {xync_client-0.0.25.dev45 → xync_client-0.0.25.dev46}/tests/TestAgent.py +0 -0
- {xync_client-0.0.25.dev45 → xync_client-0.0.25.dev46}/tests/TestAsset.py +0 -0
- {xync_client-0.0.25.dev45 → xync_client-0.0.25.dev46}/tests/TestEx.py +0 -0
- {xync_client-0.0.25.dev45 → xync_client-0.0.25.dev46}/tests/TestOrder.py +0 -0
- {xync_client-0.0.25.dev45 → xync_client-0.0.25.dev46}/tests/_todo_refact/Binance/test_binance.py +0 -0
- {xync_client-0.0.25.dev45 → xync_client-0.0.25.dev46}/tests/_todo_refact/Bybit/test_bybit.py +0 -0
- {xync_client-0.0.25.dev45 → xync_client-0.0.25.dev46}/tests/_todo_refact/Bybit/test_bybit_p2p.py +0 -0
- {xync_client-0.0.25.dev45 → xync_client-0.0.25.dev46}/tests/_todo_refact/Gate/test_gate.py +0 -0
- {xync_client-0.0.25.dev45 → xync_client-0.0.25.dev46}/tests/_todo_refact/Htx/test_htx_p2p.py +0 -0
- {xync_client-0.0.25.dev45 → xync_client-0.0.25.dev46}/tests/_todo_refact/Wallet/test_agent.py +0 -0
- {xync_client-0.0.25.dev45 → xync_client-0.0.25.dev46}/tests/_todo_refact/Wallet/test_ex.py +0 -0
- {xync_client-0.0.25.dev45 → xync_client-0.0.25.dev46}/tests/_todo_refact/__init__.py +0 -0
- {xync_client-0.0.25.dev45 → xync_client-0.0.25.dev46}/tests/_todo_refact/_test_ex.py +0 -0
- {xync_client-0.0.25.dev45 → xync_client-0.0.25.dev46}/xync_client/Abc/Agent.py +0 -0
- {xync_client-0.0.25.dev45 → xync_client-0.0.25.dev46}/xync_client/Abc/Asset.py +0 -0
- {xync_client-0.0.25.dev45 → xync_client-0.0.25.dev46}/xync_client/Abc/AuthTrait.py +0 -0
- {xync_client-0.0.25.dev45 → xync_client-0.0.25.dev46}/xync_client/Abc/Base.py +0 -0
- {xync_client-0.0.25.dev45 → xync_client-0.0.25.dev46}/xync_client/Abc/BaseTest.py +0 -0
- {xync_client-0.0.25.dev45 → xync_client-0.0.25.dev46}/xync_client/Abc/InAgent.py +0 -0
- {xync_client-0.0.25.dev45 → xync_client-0.0.25.dev46}/xync_client/Abc/Order.py +0 -0
- {xync_client-0.0.25.dev45 → xync_client-0.0.25.dev46}/xync_client/Binance/__init__.py +0 -0
- {xync_client-0.0.25.dev45 → xync_client-0.0.25.dev46}/xync_client/Binance/binance_async.py +0 -0
- {xync_client-0.0.25.dev45 → xync_client-0.0.25.dev46}/xync_client/Binance/earn_api.py +0 -0
- {xync_client-0.0.25.dev45 → xync_client-0.0.25.dev46}/xync_client/Binance/ex.py +0 -0
- {xync_client-0.0.25.dev45 → xync_client-0.0.25.dev46}/xync_client/Binance/exceptions.py +0 -0
- {xync_client-0.0.25.dev45 → xync_client-0.0.25.dev46}/xync_client/Binance/sapi.py +0 -0
- {xync_client-0.0.25.dev45 → xync_client-0.0.25.dev46}/xync_client/Binance/web_c2c.py +0 -0
- {xync_client-0.0.25.dev45 → xync_client-0.0.25.dev46}/xync_client/BingX/__init__.py +0 -0
- {xync_client-0.0.25.dev45 → xync_client-0.0.25.dev46}/xync_client/BingX/agent.py +0 -0
- {xync_client-0.0.25.dev45 → xync_client-0.0.25.dev46}/xync_client/BingX/base.py +0 -0
- {xync_client-0.0.25.dev45 → xync_client-0.0.25.dev46}/xync_client/BingX/ex.py +0 -0
- {xync_client-0.0.25.dev45 → xync_client-0.0.25.dev46}/xync_client/BingX/pyd.py +0 -0
- {xync_client-0.0.25.dev45 → xync_client-0.0.25.dev46}/xync_client/BingX/req.mjs +0 -0
- {xync_client-0.0.25.dev45 → xync_client-0.0.25.dev46}/xync_client/BingX/sign.js +0 -0
- {xync_client-0.0.25.dev45 → xync_client-0.0.25.dev46}/xync_client/BingX/test/main.py +0 -0
- {xync_client-0.0.25.dev45 → xync_client-0.0.25.dev46}/xync_client/BitGet/__init__.py +0 -0
- {xync_client-0.0.25.dev45 → xync_client-0.0.25.dev46}/xync_client/BitGet/agent.py +0 -0
- {xync_client-0.0.25.dev45 → xync_client-0.0.25.dev46}/xync_client/BitGet/ex.py +0 -0
- {xync_client-0.0.25.dev45 → xync_client-0.0.25.dev46}/xync_client/BitGet/req.mjs +0 -0
- {xync_client-0.0.25.dev45 → xync_client-0.0.25.dev46}/xync_client/Bybit/agent.py +0 -0
- {xync_client-0.0.25.dev45 → xync_client-0.0.25.dev46}/xync_client/Bybit/ex.py +0 -0
- {xync_client-0.0.25.dev45 → xync_client-0.0.25.dev46}/xync_client/Bybit/web_earn.py +0 -0
- {xync_client-0.0.25.dev45 → xync_client-0.0.25.dev46}/xync_client/Bybit/web_p2p.py +0 -0
- {xync_client-0.0.25.dev45 → xync_client-0.0.25.dev46}/xync_client/Gate/ex.py +0 -0
- {xync_client-0.0.25.dev45 → xync_client-0.0.25.dev46}/xync_client/Gate/premarket.py +0 -0
- {xync_client-0.0.25.dev45 → xync_client-0.0.25.dev46}/xync_client/Htx/agent.py +0 -0
- {xync_client-0.0.25.dev45 → xync_client-0.0.25.dev46}/xync_client/Htx/earn.py +0 -0
- {xync_client-0.0.25.dev45 → xync_client-0.0.25.dev46}/xync_client/Htx/etype/__init__.py +0 -0
- {xync_client-0.0.25.dev45 → xync_client-0.0.25.dev46}/xync_client/Htx/etype/ad.py +7 -7
- {xync_client-0.0.25.dev45 → xync_client-0.0.25.dev46}/xync_client/Htx/etype/cred.py +0 -0
- {xync_client-0.0.25.dev45 → xync_client-0.0.25.dev46}/xync_client/Htx/etype/pm.py +0 -0
- {xync_client-0.0.25.dev45 → xync_client-0.0.25.dev46}/xync_client/Htx/ex.py +0 -0
- {xync_client-0.0.25.dev45 → xync_client-0.0.25.dev46}/xync_client/KuCoin/pub.py +0 -0
- {xync_client-0.0.25.dev45 → xync_client-0.0.25.dev46}/xync_client/KuCoin/web.py +0 -0
- {xync_client-0.0.25.dev45 → xync_client-0.0.25.dev46}/xync_client/Okx/ex.py +0 -0
- {xync_client-0.0.25.dev45 → xync_client-0.0.25.dev46}/xync_client/Okx/pyd.py +0 -0
- {xync_client-0.0.25.dev45 → xync_client-0.0.25.dev46}/xync_client/TgWallet/agent.py +0 -0
- {xync_client-0.0.25.dev45 → xync_client-0.0.25.dev46}/xync_client/TgWallet/asset.py +0 -0
- {xync_client-0.0.25.dev45 → xync_client-0.0.25.dev46}/xync_client/TgWallet/auth.py +0 -0
- {xync_client-0.0.25.dev45 → xync_client-0.0.25.dev46}/xync_client/TgWallet/inAgent.py +0 -0
- {xync_client-0.0.25.dev45 → xync_client-0.0.25.dev46}/xync_client/TgWallet/order.py +0 -0
- {xync_client-0.0.25.dev45 → xync_client-0.0.25.dev46}/xync_client/TgWallet/pyd.py +6 -6
- {xync_client-0.0.25.dev45 → xync_client-0.0.25.dev46}/xync_client/TgWallet/pyro.py +0 -0
- {xync_client-0.0.25.dev45 → xync_client-0.0.25.dev46}/xync_client/TgWallet/web.py +0 -0
- {xync_client-0.0.25.dev45 → xync_client-0.0.25.dev46}/xync_client/__init__.py +0 -0
- {xync_client-0.0.25.dev45 → xync_client-0.0.25.dev46}/xync_client/loader.py +0 -0
- {xync_client-0.0.25.dev45 → xync_client-0.0.25.dev46}/xync_client/pyro.py +0 -0
- {xync_client-0.0.25.dev45 → xync_client-0.0.25.dev46}/xync_client.egg-info/SOURCES.txt +0 -0
- {xync_client-0.0.25.dev45 → xync_client-0.0.25.dev46}/xync_client.egg-info/dependency_links.txt +0 -0
- {xync_client-0.0.25.dev45 → xync_client-0.0.25.dev46}/xync_client.egg-info/requires.txt +0 -0
- {xync_client-0.0.25.dev45 → xync_client-0.0.25.dev46}/xync_client.egg-info/top_level.txt +0 -0
|
@@ -3,7 +3,6 @@ from abc import abstractmethod
|
|
|
3
3
|
|
|
4
4
|
import msgspec
|
|
5
5
|
from msgspec import Struct
|
|
6
|
-
from msgspec.structs import asdict
|
|
7
6
|
from tortoise.exceptions import MultipleObjectsReturned, IntegrityError
|
|
8
7
|
from xync_schema import models
|
|
9
8
|
from xync_schema.types import CurEx, CoinEx, BaseAd, BaseAdIn
|
|
@@ -68,7 +67,9 @@ class BaseExClient(BaseClient):
|
|
|
68
67
|
cur_pyd.exid: (await models.Cur.update_or_create({"rate": cur_pyd.rate}, ticker=tkr))[0]
|
|
69
68
|
for tkr, cur_pyd in cur_pyds.items()
|
|
70
69
|
}
|
|
71
|
-
curexs = [
|
|
70
|
+
curexs = [
|
|
71
|
+
models.Curex(**c.model_dump(exclude_none=True), cur=curs[c.exid], ex=self.ex) for c in cur_pyds.values()
|
|
72
|
+
]
|
|
72
73
|
# Curex
|
|
73
74
|
await models.Curex.bulk_create(
|
|
74
75
|
curexs, update_fields=["minimum", "rounding_scale"], on_conflict=["cur_id", "ex_id"]
|
|
@@ -145,9 +146,9 @@ class BaseExClient(BaseClient):
|
|
|
145
146
|
# и добавляем.обновляем Pmex для него
|
|
146
147
|
await models.Pmex.update_or_create({"pm": pm_}, ex=self.ex, exid=k, name=pm.name)
|
|
147
148
|
else:
|
|
148
|
-
pmin = PmIn(**{**
|
|
149
|
+
pmin = PmIn(**{**pmu.model_dump(exclude_none=True), "country": country, "typ": pm.typ, "logo": pm.logo})
|
|
149
150
|
try:
|
|
150
|
-
pms[k], _ = await models.Pm.update_or_create(**pmin.df_unq(
|
|
151
|
+
pms[k], _ = await models.Pm.update_or_create(**pmin.df_unq())
|
|
151
152
|
except (MultipleObjectsReturned, IntegrityError) as e:
|
|
152
153
|
raise e
|
|
153
154
|
prev = k, pmu.norm, pm.name, pmu.country
|
|
@@ -191,8 +192,7 @@ class BaseExClient(BaseClient):
|
|
|
191
192
|
|
|
192
193
|
# Сохранение чужого объявления (с Pm-ами) в бд
|
|
193
194
|
async def ad_pydin2db(self, ad_pydin: BaseAdIn) -> models.Ad:
|
|
194
|
-
|
|
195
|
-
ad_db, _ = await models.Ad.update_or_create(df, **unq)
|
|
195
|
+
ad_db, _ = await models.Ad.update_or_create(**ad_pydin.df_unq())
|
|
196
196
|
if getattr(ad_pydin, "pms_", None): # if it ListItem, not Full One # todo: remove?
|
|
197
197
|
await ad_db.pms.add(*ad_pydin.pms_)
|
|
198
198
|
return ad_db
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
from pydantic import BaseModel
|
|
2
|
+
from x_model.types import New
|
|
3
|
+
from xync_schema.enums import PmType
|
|
4
|
+
from xync_schema.models import Country, Pm, Ex
|
|
5
|
+
from xync_schema.types import PmexBank
|
|
6
|
+
|
|
7
|
+
from xync_client.pm_unifier import PmUni
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
class PmTrait:
|
|
11
|
+
typ: PmType | None = None
|
|
12
|
+
logo: str | None = None
|
|
13
|
+
banks: list[PmexBank] | None = None
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
class PmEx(BaseModel, PmTrait):
|
|
17
|
+
exid: int | str
|
|
18
|
+
name: str
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
class PmIn(New, PmUni, PmTrait):
|
|
22
|
+
_unq = "norm", "country"
|
|
23
|
+
country: Country | None = None
|
|
24
|
+
|
|
25
|
+
class Config:
|
|
26
|
+
arbitrary_types_allowed = True
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
class PmExIn(BaseModel):
|
|
30
|
+
pm: Pm
|
|
31
|
+
ex: Ex
|
|
32
|
+
exid: int | str
|
|
33
|
+
name: str
|
|
34
|
+
|
|
35
|
+
class Config:
|
|
36
|
+
arbitrary_types_allowed = True
|
|
@@ -117,7 +117,7 @@ class ExClient(BaseExClient, AuthClient):
|
|
|
117
117
|
pairex, _ = await models.PairEx.get_or_create(pair=pair, ex=self.ex)
|
|
118
118
|
dr, _ = await models.Direction.get_or_create(pairex=pairex, sell=ad.is_sell)
|
|
119
119
|
return types.BaseAdIn(
|
|
120
|
-
|
|
120
|
+
id=ad.exid,
|
|
121
121
|
price=ad.price.value,
|
|
122
122
|
min_fiat=ad.orderAmountLimits.min,
|
|
123
123
|
max_fiat=ad.orderAmountLimits.max,
|
|
@@ -133,7 +133,8 @@ class ExClient(BaseExClient, AuthClient):
|
|
|
133
133
|
adx.maker = actor
|
|
134
134
|
pms = ad.paymentMethods if isinstance(ad, _PmsTrait) else [pd.paymentMethod for pd in ad.paymentDetails]
|
|
135
135
|
return types.AdBuyIn(
|
|
136
|
-
**adx.model_dump(),
|
|
136
|
+
**adx.model_dump(by_alias=True),
|
|
137
|
+
pms_=await models.Pm.filter(pmexs__ex=self.ex, pmexs__exid__in=[p.code for p in pms]),
|
|
137
138
|
)
|
|
138
139
|
|
|
139
140
|
|
|
@@ -141,9 +142,10 @@ async def _test():
|
|
|
141
142
|
await init_db(PG_DSN, models, True)
|
|
142
143
|
tgex = await models.Ex.get(name="TgWallet")
|
|
143
144
|
cl: ExClient = tgex.client()
|
|
144
|
-
await cl.
|
|
145
|
-
await cl.
|
|
146
|
-
await cl.
|
|
145
|
+
# await cl.pms()
|
|
146
|
+
# await cl.pairs()
|
|
147
|
+
# await cl.set_pmcurexs()
|
|
148
|
+
# await cl.set_coinexs()
|
|
147
149
|
|
|
148
150
|
# # # SALE # # #
|
|
149
151
|
# get ads list
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
from msgspec import Struct
|
|
2
|
-
from x_model.types import New
|
|
3
|
-
from xync_schema.enums import PmType
|
|
4
|
-
from xync_schema.models import Country, Pm, Ex
|
|
5
|
-
from xync_schema.types import PmexBank
|
|
6
|
-
|
|
7
|
-
from xync_client.pm_unifier import PmUni
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
class PmEx(Struct):
|
|
11
|
-
exid: int | str
|
|
12
|
-
name: str
|
|
13
|
-
# todo: duplicates
|
|
14
|
-
typ: PmType = None
|
|
15
|
-
logo: str = None
|
|
16
|
-
banks: list[PmexBank] = None
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
class PmIn(New, PmUni):
|
|
20
|
-
_unq = "norm", "country"
|
|
21
|
-
country: Country = None
|
|
22
|
-
# todo: duplicates
|
|
23
|
-
typ: PmType = None
|
|
24
|
-
logo: str = None
|
|
25
|
-
banks: list[PmexBank] = None
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
class PmExIn(Struct):
|
|
29
|
-
pm = Pm
|
|
30
|
-
ex = Ex
|
|
31
|
-
exid = int | str
|
|
32
|
-
name = str
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{xync_client-0.0.25.dev45 → xync_client-0.0.25.dev46}/tests/_todo_refact/Binance/test_binance.py
RENAMED
|
File without changes
|
{xync_client-0.0.25.dev45 → xync_client-0.0.25.dev46}/tests/_todo_refact/Bybit/test_bybit.py
RENAMED
|
File without changes
|
{xync_client-0.0.25.dev45 → xync_client-0.0.25.dev46}/tests/_todo_refact/Bybit/test_bybit_p2p.py
RENAMED
|
File without changes
|
|
File without changes
|
{xync_client-0.0.25.dev45 → xync_client-0.0.25.dev46}/tests/_todo_refact/Htx/test_htx_p2p.py
RENAMED
|
File without changes
|
{xync_client-0.0.25.dev45 → xync_client-0.0.25.dev46}/tests/_todo_refact/Wallet/test_agent.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -23,14 +23,10 @@ class Req(BaseModel):
|
|
|
23
23
|
maxTradeLimit: float
|
|
24
24
|
tradeCount: float
|
|
25
25
|
password: str
|
|
26
|
-
securityToken: str | None = ""
|
|
27
26
|
payTerm: int
|
|
28
27
|
isFixed: Literal["off", "on"]
|
|
29
28
|
premium: int
|
|
30
|
-
fixedPrice: str | None = ""
|
|
31
|
-
autoReplyContent: str | None = ""
|
|
32
29
|
isAutoReply: Literal["off", "on"]
|
|
33
|
-
tradeRule: str | None = ""
|
|
34
30
|
takerAcceptOrder: int
|
|
35
31
|
isPayCode: Literal["off", "on"]
|
|
36
32
|
isVerifyCapital: bool
|
|
@@ -43,6 +39,10 @@ class Req(BaseModel):
|
|
|
43
39
|
apiVersion: int
|
|
44
40
|
channel: str
|
|
45
41
|
tradeRulesV2: list[TradeRule]
|
|
42
|
+
securityToken: str | None = ""
|
|
43
|
+
fixedPrice: str | None = ""
|
|
44
|
+
autoReplyContent: str | None = ""
|
|
45
|
+
tradeRule: str | None = ""
|
|
46
46
|
|
|
47
47
|
|
|
48
48
|
class PayMethod(BaseModel):
|
|
@@ -69,10 +69,8 @@ class Resp(BaseAd):
|
|
|
69
69
|
isOnline: bool
|
|
70
70
|
isTrade: bool
|
|
71
71
|
isVerifyCapital: bool
|
|
72
|
-
labelName: str | None = None
|
|
73
72
|
maxTradeLimit: str
|
|
74
73
|
merchantLevel: int
|
|
75
|
-
merchantTags: list[str] | None
|
|
76
74
|
minTradeLimit: str
|
|
77
75
|
orderCompleteRate: str
|
|
78
76
|
payMethod: str
|
|
@@ -80,7 +78,6 @@ class Resp(BaseAd):
|
|
|
80
78
|
payName: str # list[PayName] # приходит массив объектов внутри строки
|
|
81
79
|
payTerm: int
|
|
82
80
|
price: str
|
|
83
|
-
seaViewRoom: str | None = None
|
|
84
81
|
takerAcceptAmount: str
|
|
85
82
|
takerAcceptOrder: int
|
|
86
83
|
takerLimit: int
|
|
@@ -91,3 +88,6 @@ class Resp(BaseAd):
|
|
|
91
88
|
tradeType: int
|
|
92
89
|
uid: int
|
|
93
90
|
userName: str
|
|
91
|
+
merchantTags: list[str] | None
|
|
92
|
+
labelName: str | None = None
|
|
93
|
+
seaViewRoom: str | None = None
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -17,8 +17,8 @@ class User(BaseModel):
|
|
|
17
17
|
avatarCode: str
|
|
18
18
|
statistics: UserStatistics
|
|
19
19
|
isVerified: bool
|
|
20
|
-
lastOnlineMinutesAgo: int | None = None
|
|
21
20
|
onlineStatus: str
|
|
21
|
+
lastOnlineMinutesAgo: int | None = None
|
|
22
22
|
|
|
23
23
|
|
|
24
24
|
class AvailableVolume(BaseModel):
|
|
@@ -69,13 +69,13 @@ class Fee(BaseModel):
|
|
|
69
69
|
|
|
70
70
|
|
|
71
71
|
class KeyVal(BaseModel):
|
|
72
|
-
name: Literal["PAYMENT_DETAILS_NUMBER", "PHONE"] = "PAYMENT_DETAILS_NUMBER"
|
|
73
72
|
value: str
|
|
73
|
+
name: Literal["PAYMENT_DETAILS_NUMBER", "PHONE"] = "PAYMENT_DETAILS_NUMBER"
|
|
74
74
|
|
|
75
75
|
|
|
76
76
|
class BanksIn(BaseModel):
|
|
77
|
-
name: Literal["BANKS"] = "BANKS"
|
|
78
77
|
value: list[str]
|
|
78
|
+
name: Literal["BANKS"] = "BANKS"
|
|
79
79
|
|
|
80
80
|
|
|
81
81
|
class Bank(BaseModel):
|
|
@@ -89,8 +89,8 @@ class Banks(BanksIn):
|
|
|
89
89
|
|
|
90
90
|
|
|
91
91
|
class Attrs(BaseModel):
|
|
92
|
-
version: Literal["V1"] = "V1"
|
|
93
92
|
values: list[KeyVal]
|
|
93
|
+
version: Literal["V1"] = "V1"
|
|
94
94
|
|
|
95
95
|
|
|
96
96
|
class AttrsV2In(BaseModel):
|
|
@@ -125,8 +125,8 @@ class CredEpyd(BaseModel):
|
|
|
125
125
|
userId: int
|
|
126
126
|
paymentMethod: PmEpydRoot
|
|
127
127
|
currency: str
|
|
128
|
-
name: str = ""
|
|
129
128
|
attributes: Attrs | AttrsV2
|
|
129
|
+
name: str = ""
|
|
130
130
|
|
|
131
131
|
|
|
132
132
|
class InitVolume(BaseModel):
|
|
@@ -263,7 +263,6 @@ class OrderEpyd(BaseModel):
|
|
|
263
263
|
buyer: User
|
|
264
264
|
offerId: int
|
|
265
265
|
offerType: AdType
|
|
266
|
-
offerComment: str = ""
|
|
267
266
|
isExpress: bool
|
|
268
267
|
price: Price
|
|
269
268
|
paymentDetails: CredEpyd
|
|
@@ -278,6 +277,7 @@ class OrderEpyd(BaseModel):
|
|
|
278
277
|
status: OrderStatus
|
|
279
278
|
changeLog: ChangeLog
|
|
280
279
|
isAutoAccept: bool
|
|
280
|
+
offerComment: str = ""
|
|
281
281
|
|
|
282
282
|
@computed_field
|
|
283
283
|
@property
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{xync_client-0.0.25.dev45 → xync_client-0.0.25.dev46}/xync_client.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|