charli3_dendrite 1.4.5.dev0__tar.gz → 1.4.6.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.4.5.dev0 → charli3_dendrite-1.4.6.dev0}/PKG-INFO +1 -1
- {charli3_dendrite-1.4.5.dev0 → charli3_dendrite-1.4.6.dev0}/pyproject.toml +2 -2
- {charli3_dendrite-1.4.5.dev0 → charli3_dendrite-1.4.6.dev0}/src/charli3_dendrite/dexs/amm/minswap.py +35 -0
- {charli3_dendrite-1.4.5.dev0 → charli3_dendrite-1.4.6.dev0}/src/charli3_dendrite/dexs/amm/vyfi.py +20 -1
- {charli3_dendrite-1.4.5.dev0 → charli3_dendrite-1.4.6.dev0}/LICENSE +0 -0
- {charli3_dendrite-1.4.5.dev0 → charli3_dendrite-1.4.6.dev0}/README.md +0 -0
- {charli3_dendrite-1.4.5.dev0 → charli3_dendrite-1.4.6.dev0}/src/charli3_dendrite/__init__.py +0 -0
- {charli3_dendrite-1.4.5.dev0 → charli3_dendrite-1.4.6.dev0}/src/charli3_dendrite/backend/__init__.py +0 -0
- {charli3_dendrite-1.4.5.dev0 → charli3_dendrite-1.4.6.dev0}/src/charli3_dendrite/backend/backend_base.py +0 -0
- {charli3_dendrite-1.4.5.dev0 → charli3_dendrite-1.4.6.dev0}/src/charli3_dendrite/backend/blockfrost/__init__.py +0 -0
- {charli3_dendrite-1.4.5.dev0 → charli3_dendrite-1.4.6.dev0}/src/charli3_dendrite/backend/blockfrost/models.py +0 -0
- {charli3_dendrite-1.4.5.dev0 → charli3_dendrite-1.4.6.dev0}/src/charli3_dendrite/backend/dbsync/__init__.py +0 -0
- {charli3_dendrite-1.4.5.dev0 → charli3_dendrite-1.4.6.dev0}/src/charli3_dendrite/backend/dbsync/models.py +0 -0
- {charli3_dendrite-1.4.5.dev0 → charli3_dendrite-1.4.6.dev0}/src/charli3_dendrite/backend/ogmios_kupo/__init__.py +0 -0
- {charli3_dendrite-1.4.5.dev0 → charli3_dendrite-1.4.6.dev0}/src/charli3_dendrite/backend/ogmios_kupo/models.py +0 -0
- {charli3_dendrite-1.4.5.dev0 → charli3_dendrite-1.4.6.dev0}/src/charli3_dendrite/backend/utils.py +0 -0
- {charli3_dendrite-1.4.5.dev0 → charli3_dendrite-1.4.6.dev0}/src/charli3_dendrite/dataclasses/__init__.py +0 -0
- {charli3_dendrite-1.4.5.dev0 → charli3_dendrite-1.4.6.dev0}/src/charli3_dendrite/dataclasses/datums.py +0 -0
- {charli3_dendrite-1.4.5.dev0 → charli3_dendrite-1.4.6.dev0}/src/charli3_dendrite/dataclasses/models.py +0 -0
- {charli3_dendrite-1.4.5.dev0 → charli3_dendrite-1.4.6.dev0}/src/charli3_dendrite/dexs/__init__.py +0 -0
- {charli3_dendrite-1.4.5.dev0 → charli3_dendrite-1.4.6.dev0}/src/charli3_dendrite/dexs/amm/__init__.py +0 -0
- {charli3_dendrite-1.4.5.dev0 → charli3_dendrite-1.4.6.dev0}/src/charli3_dendrite/dexs/amm/amm_base.py +0 -0
- {charli3_dendrite-1.4.5.dev0 → charli3_dendrite-1.4.6.dev0}/src/charli3_dendrite/dexs/amm/amm_types.py +0 -0
- {charli3_dendrite-1.4.5.dev0 → charli3_dendrite-1.4.6.dev0}/src/charli3_dendrite/dexs/amm/cswap.py +0 -0
- {charli3_dendrite-1.4.5.dev0 → charli3_dendrite-1.4.6.dev0}/src/charli3_dendrite/dexs/amm/muesli.py +0 -0
- {charli3_dendrite-1.4.5.dev0 → charli3_dendrite-1.4.6.dev0}/src/charli3_dendrite/dexs/amm/spectrum.py +0 -0
- {charli3_dendrite-1.4.5.dev0 → charli3_dendrite-1.4.6.dev0}/src/charli3_dendrite/dexs/amm/splash.py +0 -0
- {charli3_dendrite-1.4.5.dev0 → charli3_dendrite-1.4.6.dev0}/src/charli3_dendrite/dexs/amm/sundae.py +0 -0
- {charli3_dendrite-1.4.5.dev0 → charli3_dendrite-1.4.6.dev0}/src/charli3_dendrite/dexs/amm/wingriders.py +0 -0
- {charli3_dendrite-1.4.5.dev0 → charli3_dendrite-1.4.6.dev0}/src/charli3_dendrite/dexs/core/__init__.py +0 -0
- {charli3_dendrite-1.4.5.dev0 → charli3_dendrite-1.4.6.dev0}/src/charli3_dendrite/dexs/core/base.py +0 -0
- {charli3_dendrite-1.4.5.dev0 → charli3_dendrite-1.4.6.dev0}/src/charli3_dendrite/dexs/core/errors.py +0 -0
- {charli3_dendrite-1.4.5.dev0 → charli3_dendrite-1.4.6.dev0}/src/charli3_dendrite/dexs/ob/__init__.py +0 -0
- {charli3_dendrite-1.4.5.dev0 → charli3_dendrite-1.4.6.dev0}/src/charli3_dendrite/dexs/ob/axo.py +0 -0
- {charli3_dendrite-1.4.5.dev0 → charli3_dendrite-1.4.6.dev0}/src/charli3_dendrite/dexs/ob/chadswap.py +0 -0
- {charli3_dendrite-1.4.5.dev0 → charli3_dendrite-1.4.6.dev0}/src/charli3_dendrite/dexs/ob/djed.py +0 -0
- {charli3_dendrite-1.4.5.dev0 → charli3_dendrite-1.4.6.dev0}/src/charli3_dendrite/dexs/ob/geniusyield.py +0 -0
- {charli3_dendrite-1.4.5.dev0 → charli3_dendrite-1.4.6.dev0}/src/charli3_dendrite/dexs/ob/ob_base.py +0 -0
- {charli3_dendrite-1.4.5.dev0 → charli3_dendrite-1.4.6.dev0}/src/charli3_dendrite/dexs/ob/saturnswap.py +0 -0
- {charli3_dendrite-1.4.5.dev0 → charli3_dendrite-1.4.6.dev0}/src/charli3_dendrite/utility.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[tool.poetry]
|
|
2
2
|
name = "charli3_dendrite"
|
|
3
|
-
version = "1.4.
|
|
3
|
+
version = "1.4.6-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.4.
|
|
52
|
+
current_version = "1.4.6-dev0"
|
|
53
53
|
parse = """(?x)
|
|
54
54
|
(?P<major>\\d+)\\.
|
|
55
55
|
(?P<minor>\\d+)\\.
|
{charli3_dendrite-1.4.5.dev0 → charli3_dendrite-1.4.6.dev0}/src/charli3_dendrite/dexs/amm/minswap.py
RENAMED
|
@@ -618,6 +618,41 @@ class MinswapV2OrderDatum(OrderDatum):
|
|
|
618
618
|
return Assets({"asset_b": self.step.minimum_receive})
|
|
619
619
|
else:
|
|
620
620
|
return Assets({"asset_a": self.step.minimum_receive})
|
|
621
|
+
elif isinstance(self.step, StopLossV2):
|
|
622
|
+
if isinstance(self.step.a_to_b_direction, BoolTrue):
|
|
623
|
+
return Assets({"asset_b": self.step.stop_loss_receive})
|
|
624
|
+
else:
|
|
625
|
+
return Assets({"asset_a": self.step.stop_loss_receive})
|
|
626
|
+
elif isinstance(self.step, OCOV2):
|
|
627
|
+
# OCO carries a take-profit (minimum_receive) and a stop-loss
|
|
628
|
+
# (stop_loss_receive); report the take-profit limit as the requested
|
|
629
|
+
# amount, mirroring the minimum_receive used for SwapExactInV2.
|
|
630
|
+
if isinstance(self.step.a_to_b_direction, BoolTrue):
|
|
631
|
+
return Assets({"asset_b": self.step.minimum_receive})
|
|
632
|
+
else:
|
|
633
|
+
return Assets({"asset_a": self.step.minimum_receive})
|
|
634
|
+
elif isinstance(self.step, ZapOutV2):
|
|
635
|
+
if isinstance(self.step.a_to_b_direction, BoolTrue):
|
|
636
|
+
return Assets({"asset_b": self.step.minimum_receive})
|
|
637
|
+
else:
|
|
638
|
+
return Assets({"asset_a": self.step.minimum_receive})
|
|
639
|
+
elif isinstance(self.step, PartialSwapV2):
|
|
640
|
+
# PartialSwap has no minimum_receive field; io_ratio is the limit
|
|
641
|
+
# price, so the requested output is total_swap_amount scaled by
|
|
642
|
+
# io_ratio_numerator / io_ratio_denominator.
|
|
643
|
+
requested = (
|
|
644
|
+
self.step.total_swap_amount
|
|
645
|
+
* self.step.io_ratio_numerator
|
|
646
|
+
// self.step.io_ratio_denominator
|
|
647
|
+
)
|
|
648
|
+
if isinstance(self.step.a_to_b_direction, BoolTrue):
|
|
649
|
+
return Assets({"asset_b": requested})
|
|
650
|
+
else:
|
|
651
|
+
return Assets({"asset_a": requested})
|
|
652
|
+
elif isinstance(self.step, WithdrawImbalanceV2):
|
|
653
|
+
# Only asset_a carries a guaranteed minimum (minimum_asset_a); the
|
|
654
|
+
# asset_b amount is governed by the withdrawal ratio, not a floor.
|
|
655
|
+
return Assets({"asset_a": self.step.minimum_asset_a})
|
|
621
656
|
else:
|
|
622
657
|
return Assets({})
|
|
623
658
|
|
{charli3_dendrite-1.4.5.dev0 → charli3_dendrite-1.4.6.dev0}/src/charli3_dendrite/dexs/amm/vyfi.py
RENAMED
|
@@ -324,7 +324,26 @@ class VyFiCPPState(AbstractConstantProductPoolState):
|
|
|
324
324
|
|
|
325
325
|
@staticmethod
|
|
326
326
|
def _encode_asset(policy_id: str, asset_name: str) -> str:
|
|
327
|
-
"""Encode an asset by combining policy ID and
|
|
327
|
+
r"""Encode an asset by combining policy ID and the on-chain asset name.
|
|
328
|
+
|
|
329
|
+
VyFi's API returns ``token_name`` in two forms: a human-readable string
|
|
330
|
+
(e.g. ``"PUDGY"``), or the on-chain asset name *already hex-encoded* and
|
|
331
|
+
marked with a ``"0x"`` prefix, optionally preceded by a NUL byte
|
|
332
|
+
(e.g. ``"\x000x55534441"`` for ``"USDA"``). For the latter the hex is
|
|
333
|
+
the real on-chain asset name and must be used verbatim -- re-encoding it
|
|
334
|
+
as UTF-8 double-encodes the name and corrupts the unit, frequently
|
|
335
|
+
pushing it past the 32-byte asset-name limit (and mangling names with
|
|
336
|
+
non-UTF-8 bytes, e.g. ``"\x000xf6..."``).
|
|
337
|
+
"""
|
|
338
|
+
marked = asset_name.lstrip("\x00")
|
|
339
|
+
if marked.startswith("0x"):
|
|
340
|
+
hex_name = marked[2:]
|
|
341
|
+
try:
|
|
342
|
+
bytes.fromhex(hex_name)
|
|
343
|
+
except ValueError:
|
|
344
|
+
pass
|
|
345
|
+
else:
|
|
346
|
+
return policy_id + hex_name.lower()
|
|
328
347
|
encoded_name = asset_name.encode("utf-8").hex()
|
|
329
348
|
return policy_id + encoded_name
|
|
330
349
|
|
|
File without changes
|
|
File without changes
|
{charli3_dendrite-1.4.5.dev0 → charli3_dendrite-1.4.6.dev0}/src/charli3_dendrite/__init__.py
RENAMED
|
File without changes
|
{charli3_dendrite-1.4.5.dev0 → charli3_dendrite-1.4.6.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.4.5.dev0 → charli3_dendrite-1.4.6.dev0}/src/charli3_dendrite/backend/utils.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{charli3_dendrite-1.4.5.dev0 → charli3_dendrite-1.4.6.dev0}/src/charli3_dendrite/dexs/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{charli3_dendrite-1.4.5.dev0 → charli3_dendrite-1.4.6.dev0}/src/charli3_dendrite/dexs/amm/cswap.py
RENAMED
|
File without changes
|
{charli3_dendrite-1.4.5.dev0 → charli3_dendrite-1.4.6.dev0}/src/charli3_dendrite/dexs/amm/muesli.py
RENAMED
|
File without changes
|
|
File without changes
|
{charli3_dendrite-1.4.5.dev0 → charli3_dendrite-1.4.6.dev0}/src/charli3_dendrite/dexs/amm/splash.py
RENAMED
|
File without changes
|
{charli3_dendrite-1.4.5.dev0 → charli3_dendrite-1.4.6.dev0}/src/charli3_dendrite/dexs/amm/sundae.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{charli3_dendrite-1.4.5.dev0 → charli3_dendrite-1.4.6.dev0}/src/charli3_dendrite/dexs/core/base.py
RENAMED
|
File without changes
|
{charli3_dendrite-1.4.5.dev0 → charli3_dendrite-1.4.6.dev0}/src/charli3_dendrite/dexs/core/errors.py
RENAMED
|
File without changes
|
{charli3_dendrite-1.4.5.dev0 → charli3_dendrite-1.4.6.dev0}/src/charli3_dendrite/dexs/ob/__init__.py
RENAMED
|
File without changes
|
{charli3_dendrite-1.4.5.dev0 → charli3_dendrite-1.4.6.dev0}/src/charli3_dendrite/dexs/ob/axo.py
RENAMED
|
File without changes
|
{charli3_dendrite-1.4.5.dev0 → charli3_dendrite-1.4.6.dev0}/src/charli3_dendrite/dexs/ob/chadswap.py
RENAMED
|
File without changes
|
{charli3_dendrite-1.4.5.dev0 → charli3_dendrite-1.4.6.dev0}/src/charli3_dendrite/dexs/ob/djed.py
RENAMED
|
File without changes
|
|
File without changes
|
{charli3_dendrite-1.4.5.dev0 → charli3_dendrite-1.4.6.dev0}/src/charli3_dendrite/dexs/ob/ob_base.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|