charli3_dendrite 1.2.0.dev1__tar.gz → 1.2.1.dev0__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.
- {charli3_dendrite-1.2.0.dev1 → charli3_dendrite-1.2.1.dev0}/PKG-INFO +1 -1
- {charli3_dendrite-1.2.0.dev1 → charli3_dendrite-1.2.1.dev0}/pyproject.toml +2 -2
- {charli3_dendrite-1.2.0.dev1 → charli3_dendrite-1.2.1.dev0}/src/charli3_dendrite/dexs/amm/cswap.py +9 -12
- {charli3_dendrite-1.2.0.dev1 → charli3_dendrite-1.2.1.dev0}/LICENSE +0 -0
- {charli3_dendrite-1.2.0.dev1 → charli3_dendrite-1.2.1.dev0}/README.md +0 -0
- {charli3_dendrite-1.2.0.dev1 → charli3_dendrite-1.2.1.dev0}/src/charli3_dendrite/__init__.py +0 -0
- {charli3_dendrite-1.2.0.dev1 → charli3_dendrite-1.2.1.dev0}/src/charli3_dendrite/backend/__init__.py +0 -0
- {charli3_dendrite-1.2.0.dev1 → charli3_dendrite-1.2.1.dev0}/src/charli3_dendrite/backend/backend_base.py +0 -0
- {charli3_dendrite-1.2.0.dev1 → charli3_dendrite-1.2.1.dev0}/src/charli3_dendrite/backend/blockfrost/__init__.py +0 -0
- {charli3_dendrite-1.2.0.dev1 → charli3_dendrite-1.2.1.dev0}/src/charli3_dendrite/backend/blockfrost/models.py +0 -0
- {charli3_dendrite-1.2.0.dev1 → charli3_dendrite-1.2.1.dev0}/src/charli3_dendrite/backend/dbsync/__init__.py +0 -0
- {charli3_dendrite-1.2.0.dev1 → charli3_dendrite-1.2.1.dev0}/src/charli3_dendrite/backend/dbsync/models.py +0 -0
- {charli3_dendrite-1.2.0.dev1 → charli3_dendrite-1.2.1.dev0}/src/charli3_dendrite/backend/ogmios_kupo/__init__.py +0 -0
- {charli3_dendrite-1.2.0.dev1 → charli3_dendrite-1.2.1.dev0}/src/charli3_dendrite/backend/ogmios_kupo/models.py +0 -0
- {charli3_dendrite-1.2.0.dev1 → charli3_dendrite-1.2.1.dev0}/src/charli3_dendrite/backend/utils.py +0 -0
- {charli3_dendrite-1.2.0.dev1 → charli3_dendrite-1.2.1.dev0}/src/charli3_dendrite/dataclasses/__init__.py +0 -0
- {charli3_dendrite-1.2.0.dev1 → charli3_dendrite-1.2.1.dev0}/src/charli3_dendrite/dataclasses/datums.py +0 -0
- {charli3_dendrite-1.2.0.dev1 → charli3_dendrite-1.2.1.dev0}/src/charli3_dendrite/dataclasses/models.py +0 -0
- {charli3_dendrite-1.2.0.dev1 → charli3_dendrite-1.2.1.dev0}/src/charli3_dendrite/dexs/__init__.py +0 -0
- {charli3_dendrite-1.2.0.dev1 → charli3_dendrite-1.2.1.dev0}/src/charli3_dendrite/dexs/amm/__init__.py +0 -0
- {charli3_dendrite-1.2.0.dev1 → charli3_dendrite-1.2.1.dev0}/src/charli3_dendrite/dexs/amm/amm_base.py +0 -0
- {charli3_dendrite-1.2.0.dev1 → charli3_dendrite-1.2.1.dev0}/src/charli3_dendrite/dexs/amm/amm_types.py +0 -0
- {charli3_dendrite-1.2.0.dev1 → charli3_dendrite-1.2.1.dev0}/src/charli3_dendrite/dexs/amm/minswap.py +0 -0
- {charli3_dendrite-1.2.0.dev1 → charli3_dendrite-1.2.1.dev0}/src/charli3_dendrite/dexs/amm/muesli.py +0 -0
- {charli3_dendrite-1.2.0.dev1 → charli3_dendrite-1.2.1.dev0}/src/charli3_dendrite/dexs/amm/spectrum.py +0 -0
- {charli3_dendrite-1.2.0.dev1 → charli3_dendrite-1.2.1.dev0}/src/charli3_dendrite/dexs/amm/splash.py +0 -0
- {charli3_dendrite-1.2.0.dev1 → charli3_dendrite-1.2.1.dev0}/src/charli3_dendrite/dexs/amm/sundae.py +0 -0
- {charli3_dendrite-1.2.0.dev1 → charli3_dendrite-1.2.1.dev0}/src/charli3_dendrite/dexs/amm/vyfi.py +0 -0
- {charli3_dendrite-1.2.0.dev1 → charli3_dendrite-1.2.1.dev0}/src/charli3_dendrite/dexs/amm/wingriders.py +0 -0
- {charli3_dendrite-1.2.0.dev1 → charli3_dendrite-1.2.1.dev0}/src/charli3_dendrite/dexs/core/__init__.py +0 -0
- {charli3_dendrite-1.2.0.dev1 → charli3_dendrite-1.2.1.dev0}/src/charli3_dendrite/dexs/core/base.py +0 -0
- {charli3_dendrite-1.2.0.dev1 → charli3_dendrite-1.2.1.dev0}/src/charli3_dendrite/dexs/core/errors.py +0 -0
- {charli3_dendrite-1.2.0.dev1 → charli3_dendrite-1.2.1.dev0}/src/charli3_dendrite/dexs/ob/__init__.py +0 -0
- {charli3_dendrite-1.2.0.dev1 → charli3_dendrite-1.2.1.dev0}/src/charli3_dendrite/dexs/ob/axo.py +0 -0
- {charli3_dendrite-1.2.0.dev1 → charli3_dendrite-1.2.1.dev0}/src/charli3_dendrite/dexs/ob/djed.py +0 -0
- {charli3_dendrite-1.2.0.dev1 → charli3_dendrite-1.2.1.dev0}/src/charli3_dendrite/dexs/ob/geniusyield.py +0 -0
- {charli3_dendrite-1.2.0.dev1 → charli3_dendrite-1.2.1.dev0}/src/charli3_dendrite/dexs/ob/ob_base.py +0 -0
- {charli3_dendrite-1.2.0.dev1 → charli3_dendrite-1.2.1.dev0}/src/charli3_dendrite/utility.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[tool.poetry]
|
|
2
2
|
name = "charli3_dendrite"
|
|
3
|
-
version = "1.2.
|
|
3
|
+
version = "1.2.1-dev0"
|
|
4
4
|
description = ""
|
|
5
5
|
authors = ["Elder Millenial <eldermillenial@protonmail.com>"]
|
|
6
6
|
readme = "README.md"
|
|
@@ -49,7 +49,7 @@ module = ["pycardano", "pycardano.*", "dotenv", "nox"]
|
|
|
49
49
|
ignore_missing_imports = true
|
|
50
50
|
|
|
51
51
|
[tool.bumpversion]
|
|
52
|
-
current_version = "1.2.
|
|
52
|
+
current_version = "1.2.1-dev0"
|
|
53
53
|
parse = """(?x)
|
|
54
54
|
(?P<major>\\d+)\\.
|
|
55
55
|
(?P<minor>\\d+)\\.
|
{charli3_dendrite-1.2.0.dev1 → charli3_dendrite-1.2.1.dev0}/src/charli3_dendrite/dexs/amm/cswap.py
RENAMED
|
@@ -72,7 +72,7 @@ class CSwapOrderDatum(OrderDatum):
|
|
|
72
72
|
# Validate ADA-only restriction
|
|
73
73
|
merged_assets = in_assets + out_assets
|
|
74
74
|
if "lovelace" not in merged_assets:
|
|
75
|
-
raise ValueError("
|
|
75
|
+
raise ValueError("CSWAP only supports ADA pairs - one token must be ADA")
|
|
76
76
|
|
|
77
77
|
full_address = PlutusFullAddress.from_address(address_source)
|
|
78
78
|
|
|
@@ -136,7 +136,6 @@ class CSwapPoolDatum(PoolDatum):
|
|
|
136
136
|
|
|
137
137
|
CONSTR_ID = 0
|
|
138
138
|
|
|
139
|
-
# Fields MUST be in exact order per cswap.md specification
|
|
140
139
|
total_lp_tokens: int # Field 0: total lp tokens issued
|
|
141
140
|
pool_fee: int # Field 1: pool fee per 10K (85 = 0.85%)
|
|
142
141
|
quote_policy: bytes # Field 2: quote policy id - ADA (empty)
|
|
@@ -153,8 +152,6 @@ class CSwapPoolDatum(PoolDatum):
|
|
|
153
152
|
if not base_unit:
|
|
154
153
|
base_unit = "lovelace"
|
|
155
154
|
|
|
156
|
-
# For CSwap, we can't determine quantities from datum alone
|
|
157
|
-
# This will be filled by post_init
|
|
158
155
|
return Assets(**{quote_unit: 0, base_unit: 0})
|
|
159
156
|
|
|
160
157
|
|
|
@@ -171,7 +168,7 @@ class CSwapCPPState(AbstractConstantProductPoolState):
|
|
|
171
168
|
@classmethod
|
|
172
169
|
def dex(cls) -> str:
|
|
173
170
|
"""Get the DEX name."""
|
|
174
|
-
return "
|
|
171
|
+
return "CSWAP"
|
|
175
172
|
|
|
176
173
|
@classmethod
|
|
177
174
|
def order_selector(cls) -> list[str]:
|
|
@@ -233,12 +230,12 @@ class CSwapCPPState(AbstractConstantProductPoolState):
|
|
|
233
230
|
if "pool_nft" in values:
|
|
234
231
|
pool_nft = Assets(**dict(values["pool_nft"].items()))
|
|
235
232
|
if pool_nft.quantity() != 1:
|
|
236
|
-
raise NotAPoolError("
|
|
233
|
+
raise NotAPoolError("CSWAP pool NFT must have quantity of exactly 1")
|
|
237
234
|
|
|
238
235
|
# Check if token name is "c" (hex: 63)
|
|
239
236
|
unit = pool_nft.unit()
|
|
240
237
|
if len(unit) < 56 or unit[56:] != "63": # "c" in hex
|
|
241
|
-
raise NotAPoolError("
|
|
238
|
+
raise NotAPoolError("CSWAP pool NFT must have name 'c'")
|
|
242
239
|
|
|
243
240
|
return pool_nft
|
|
244
241
|
|
|
@@ -258,7 +255,7 @@ class CSwapCPPState(AbstractConstantProductPoolState):
|
|
|
258
255
|
|
|
259
256
|
if pool_nft is None:
|
|
260
257
|
raise NotAPoolError(
|
|
261
|
-
"
|
|
258
|
+
"CSWAP pool must contain exactly one pool NFT with name 'c'"
|
|
262
259
|
)
|
|
263
260
|
|
|
264
261
|
values["pool_nft"] = pool_nft
|
|
@@ -275,7 +272,7 @@ class CSwapCPPState(AbstractConstantProductPoolState):
|
|
|
275
272
|
"""
|
|
276
273
|
# Validate ADA-only restriction
|
|
277
274
|
if "lovelace" not in [self.unit_a, self.unit_b]:
|
|
278
|
-
raise ValueError("
|
|
275
|
+
raise ValueError("CSWAP only supports ADA pairs - one token must be ADA")
|
|
279
276
|
|
|
280
277
|
if asset.unit() not in [self.unit_a, self.unit_b]:
|
|
281
278
|
raise ValueError(f"Asset {asset.unit()} not valid for this pool")
|
|
@@ -286,7 +283,7 @@ class CSwapCPPState(AbstractConstantProductPoolState):
|
|
|
286
283
|
# Ensure one of the pair assets is ADA
|
|
287
284
|
merged_test = Assets(**{asset.unit(): 1, "lovelace": 1})
|
|
288
285
|
if not any(unit in [self.unit_a, self.unit_b] for unit in merged_test):
|
|
289
|
-
raise ValueError("
|
|
286
|
+
raise ValueError("CSWAP only supports ADA pairs")
|
|
290
287
|
|
|
291
288
|
return super().get_amount_out(asset, precise)
|
|
292
289
|
|
|
@@ -301,7 +298,7 @@ class CSwapCPPState(AbstractConstantProductPoolState):
|
|
|
301
298
|
"""
|
|
302
299
|
# Validate ADA-only restriction
|
|
303
300
|
if "lovelace" not in [self.unit_a, self.unit_b]:
|
|
304
|
-
raise ValueError("
|
|
301
|
+
raise ValueError("CSWAP only supports ADA pairs - one token must be ADA")
|
|
305
302
|
|
|
306
303
|
if asset.unit() not in [self.unit_a, self.unit_b]:
|
|
307
304
|
raise ValueError(f"Asset {asset.unit()} not valid for this pool")
|
|
@@ -345,7 +342,7 @@ class CSwapCPPState(AbstractConstantProductPoolState):
|
|
|
345
342
|
# Validate this is an ADA pair
|
|
346
343
|
asset_units = list(assets.root.keys())
|
|
347
344
|
if "lovelace" not in asset_units:
|
|
348
|
-
raise NotAPoolError("
|
|
345
|
+
raise NotAPoolError("CSWAP pools must contain ADA (lovelace)")
|
|
349
346
|
|
|
350
347
|
# Subtract 2 ADA pool maintenance from lovelace reserves
|
|
351
348
|
# CSwap pools require 2 ADA minimum to maintain the pool
|
|
File without changes
|
|
File without changes
|
{charli3_dendrite-1.2.0.dev1 → charli3_dendrite-1.2.1.dev0}/src/charli3_dendrite/__init__.py
RENAMED
|
File without changes
|
{charli3_dendrite-1.2.0.dev1 → charli3_dendrite-1.2.1.dev0}/src/charli3_dendrite/backend/__init__.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
|
{charli3_dendrite-1.2.0.dev1 → charli3_dendrite-1.2.1.dev0}/src/charli3_dendrite/backend/utils.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{charli3_dendrite-1.2.0.dev1 → charli3_dendrite-1.2.1.dev0}/src/charli3_dendrite/dexs/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{charli3_dendrite-1.2.0.dev1 → charli3_dendrite-1.2.1.dev0}/src/charli3_dendrite/dexs/amm/minswap.py
RENAMED
|
File without changes
|
{charli3_dendrite-1.2.0.dev1 → charli3_dendrite-1.2.1.dev0}/src/charli3_dendrite/dexs/amm/muesli.py
RENAMED
|
File without changes
|
|
File without changes
|
{charli3_dendrite-1.2.0.dev1 → charli3_dendrite-1.2.1.dev0}/src/charli3_dendrite/dexs/amm/splash.py
RENAMED
|
File without changes
|
{charli3_dendrite-1.2.0.dev1 → charli3_dendrite-1.2.1.dev0}/src/charli3_dendrite/dexs/amm/sundae.py
RENAMED
|
File without changes
|
{charli3_dendrite-1.2.0.dev1 → charli3_dendrite-1.2.1.dev0}/src/charli3_dendrite/dexs/amm/vyfi.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{charli3_dendrite-1.2.0.dev1 → charli3_dendrite-1.2.1.dev0}/src/charli3_dendrite/dexs/core/base.py
RENAMED
|
File without changes
|
{charli3_dendrite-1.2.0.dev1 → charli3_dendrite-1.2.1.dev0}/src/charli3_dendrite/dexs/core/errors.py
RENAMED
|
File without changes
|
{charli3_dendrite-1.2.0.dev1 → charli3_dendrite-1.2.1.dev0}/src/charli3_dendrite/dexs/ob/__init__.py
RENAMED
|
File without changes
|
{charli3_dendrite-1.2.0.dev1 → charli3_dendrite-1.2.1.dev0}/src/charli3_dendrite/dexs/ob/axo.py
RENAMED
|
File without changes
|
{charli3_dendrite-1.2.0.dev1 → charli3_dendrite-1.2.1.dev0}/src/charli3_dendrite/dexs/ob/djed.py
RENAMED
|
File without changes
|
|
File without changes
|
{charli3_dendrite-1.2.0.dev1 → charli3_dendrite-1.2.1.dev0}/src/charli3_dendrite/dexs/ob/ob_base.py
RENAMED
|
File without changes
|
|
File without changes
|