charli3_dendrite 1.5.5.dev0__tar.gz → 1.5.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.5.5.dev0 → charli3_dendrite-1.5.6.dev0}/PKG-INFO +1 -1
- {charli3_dendrite-1.5.5.dev0 → charli3_dendrite-1.5.6.dev0}/pyproject.toml +2 -2
- {charli3_dendrite-1.5.5.dev0 → charli3_dendrite-1.5.6.dev0}/src/charli3_dendrite/__init__.py +1 -0
- {charli3_dendrite-1.5.5.dev0 → charli3_dendrite-1.5.6.dev0}/src/charli3_dendrite/dexs/ob/cardanoswaps.py +193 -0
- {charli3_dendrite-1.5.5.dev0 → charli3_dendrite-1.5.6.dev0}/LICENSE +0 -0
- {charli3_dendrite-1.5.5.dev0 → charli3_dendrite-1.5.6.dev0}/README.md +0 -0
- {charli3_dendrite-1.5.5.dev0 → charli3_dendrite-1.5.6.dev0}/src/charli3_dendrite/backend/__init__.py +0 -0
- {charli3_dendrite-1.5.5.dev0 → charli3_dendrite-1.5.6.dev0}/src/charli3_dendrite/backend/backend_base.py +0 -0
- {charli3_dendrite-1.5.5.dev0 → charli3_dendrite-1.5.6.dev0}/src/charli3_dendrite/backend/blockfrost/__init__.py +0 -0
- {charli3_dendrite-1.5.5.dev0 → charli3_dendrite-1.5.6.dev0}/src/charli3_dendrite/backend/blockfrost/models.py +0 -0
- {charli3_dendrite-1.5.5.dev0 → charli3_dendrite-1.5.6.dev0}/src/charli3_dendrite/backend/dbsync/__init__.py +0 -0
- {charli3_dendrite-1.5.5.dev0 → charli3_dendrite-1.5.6.dev0}/src/charli3_dendrite/backend/dbsync/models.py +0 -0
- {charli3_dendrite-1.5.5.dev0 → charli3_dendrite-1.5.6.dev0}/src/charli3_dendrite/backend/ogmios_kupo/__init__.py +0 -0
- {charli3_dendrite-1.5.5.dev0 → charli3_dendrite-1.5.6.dev0}/src/charli3_dendrite/backend/ogmios_kupo/models.py +0 -0
- {charli3_dendrite-1.5.5.dev0 → charli3_dendrite-1.5.6.dev0}/src/charli3_dendrite/backend/utils.py +0 -0
- {charli3_dendrite-1.5.5.dev0 → charli3_dendrite-1.5.6.dev0}/src/charli3_dendrite/dataclasses/__init__.py +0 -0
- {charli3_dendrite-1.5.5.dev0 → charli3_dendrite-1.5.6.dev0}/src/charli3_dendrite/dataclasses/datums.py +0 -0
- {charli3_dendrite-1.5.5.dev0 → charli3_dendrite-1.5.6.dev0}/src/charli3_dendrite/dataclasses/models.py +0 -0
- {charli3_dendrite-1.5.5.dev0 → charli3_dendrite-1.5.6.dev0}/src/charli3_dendrite/dexs/__init__.py +0 -0
- {charli3_dendrite-1.5.5.dev0 → charli3_dendrite-1.5.6.dev0}/src/charli3_dendrite/dexs/amm/__init__.py +0 -0
- {charli3_dendrite-1.5.5.dev0 → charli3_dendrite-1.5.6.dev0}/src/charli3_dendrite/dexs/amm/amm_base.py +0 -0
- {charli3_dendrite-1.5.5.dev0 → charli3_dendrite-1.5.6.dev0}/src/charli3_dendrite/dexs/amm/amm_types.py +0 -0
- {charli3_dendrite-1.5.5.dev0 → charli3_dendrite-1.5.6.dev0}/src/charli3_dendrite/dexs/amm/cswap.py +0 -0
- {charli3_dendrite-1.5.5.dev0 → charli3_dendrite-1.5.6.dev0}/src/charli3_dendrite/dexs/amm/dano.py +0 -0
- {charli3_dendrite-1.5.5.dev0 → charli3_dendrite-1.5.6.dev0}/src/charli3_dendrite/dexs/amm/minswap.py +0 -0
- {charli3_dendrite-1.5.5.dev0 → charli3_dendrite-1.5.6.dev0}/src/charli3_dendrite/dexs/amm/muesli.py +0 -0
- {charli3_dendrite-1.5.5.dev0 → charli3_dendrite-1.5.6.dev0}/src/charli3_dendrite/dexs/amm/spectrum.py +0 -0
- {charli3_dendrite-1.5.5.dev0 → charli3_dendrite-1.5.6.dev0}/src/charli3_dendrite/dexs/amm/splash.py +0 -0
- {charli3_dendrite-1.5.5.dev0 → charli3_dendrite-1.5.6.dev0}/src/charli3_dendrite/dexs/amm/sundae.py +0 -0
- {charli3_dendrite-1.5.5.dev0 → charli3_dendrite-1.5.6.dev0}/src/charli3_dendrite/dexs/amm/vyfi.py +0 -0
- {charli3_dendrite-1.5.5.dev0 → charli3_dendrite-1.5.6.dev0}/src/charli3_dendrite/dexs/amm/wingriders.py +0 -0
- {charli3_dendrite-1.5.5.dev0 → charli3_dendrite-1.5.6.dev0}/src/charli3_dendrite/dexs/core/__init__.py +0 -0
- {charli3_dendrite-1.5.5.dev0 → charli3_dendrite-1.5.6.dev0}/src/charli3_dendrite/dexs/core/base.py +0 -0
- {charli3_dendrite-1.5.5.dev0 → charli3_dendrite-1.5.6.dev0}/src/charli3_dendrite/dexs/core/errors.py +0 -0
- {charli3_dendrite-1.5.5.dev0 → charli3_dendrite-1.5.6.dev0}/src/charli3_dendrite/dexs/ob/__init__.py +0 -0
- {charli3_dendrite-1.5.5.dev0 → charli3_dendrite-1.5.6.dev0}/src/charli3_dendrite/dexs/ob/axo.py +0 -0
- {charli3_dendrite-1.5.5.dev0 → charli3_dendrite-1.5.6.dev0}/src/charli3_dendrite/dexs/ob/chadswap.py +0 -0
- {charli3_dendrite-1.5.5.dev0 → charli3_dendrite-1.5.6.dev0}/src/charli3_dendrite/dexs/ob/djed.py +0 -0
- {charli3_dendrite-1.5.5.dev0 → charli3_dendrite-1.5.6.dev0}/src/charli3_dendrite/dexs/ob/geniusyield.py +0 -0
- {charli3_dendrite-1.5.5.dev0 → charli3_dendrite-1.5.6.dev0}/src/charli3_dendrite/dexs/ob/ob_base.py +0 -0
- {charli3_dendrite-1.5.5.dev0 → charli3_dendrite-1.5.6.dev0}/src/charli3_dendrite/dexs/ob/saturnswap.py +0 -0
- {charli3_dendrite-1.5.5.dev0 → charli3_dendrite-1.5.6.dev0}/src/charli3_dendrite/lending/__init__.py +0 -0
- {charli3_dendrite-1.5.5.dev0 → charli3_dendrite-1.5.6.dev0}/src/charli3_dendrite/lending/base.py +0 -0
- {charli3_dendrite-1.5.5.dev0 → charli3_dendrite-1.5.6.dev0}/src/charli3_dendrite/lending/danogo/__init__.py +0 -0
- {charli3_dendrite-1.5.5.dev0 → charli3_dendrite-1.5.6.dev0}/src/charli3_dendrite/lending/danogo/constants.py +0 -0
- {charli3_dendrite-1.5.5.dev0 → charli3_dendrite-1.5.6.dev0}/src/charli3_dendrite/lending/danogo/datums.py +0 -0
- {charli3_dendrite-1.5.5.dev0 → charli3_dendrite-1.5.6.dev0}/src/charli3_dendrite/lending/danogo/loader.py +0 -0
- {charli3_dendrite-1.5.5.dev0 → charli3_dendrite-1.5.6.dev0}/src/charli3_dendrite/lending/danogo/market.py +0 -0
- {charli3_dendrite-1.5.5.dev0 → charli3_dendrite-1.5.6.dev0}/src/charli3_dendrite/lending/danogo/math.py +0 -0
- {charli3_dendrite-1.5.5.dev0 → charli3_dendrite-1.5.6.dev0}/src/charli3_dendrite/lending/danogo/oracles/__init__.py +0 -0
- {charli3_dendrite-1.5.5.dev0 → charli3_dendrite-1.5.6.dev0}/src/charli3_dendrite/lending/danogo/oracles/aggregator.py +0 -0
- {charli3_dendrite-1.5.5.dev0 → charli3_dendrite-1.5.6.dev0}/src/charli3_dendrite/lending/danogo/oracles/aggregator_datums.py +0 -0
- {charli3_dendrite-1.5.5.dev0 → charli3_dendrite-1.5.6.dev0}/src/charli3_dendrite/lending/danogo/oracles/deployments.py +0 -0
- {charli3_dendrite-1.5.5.dev0 → charli3_dendrite-1.5.6.dev0}/src/charli3_dendrite/lending/danogo/oracles/forward.py +0 -0
- {charli3_dendrite-1.5.5.dev0 → charli3_dendrite-1.5.6.dev0}/src/charli3_dendrite/lending/danogo/oracles/leaves.py +0 -0
- {charli3_dendrite-1.5.5.dev0 → charli3_dendrite-1.5.6.dev0}/src/charli3_dendrite/lending/danogo/oracles/locator.py +0 -0
- {charli3_dendrite-1.5.5.dev0 → charli3_dendrite-1.5.6.dev0}/src/charli3_dendrite/lending/danogo/oracles/lp_pricing.py +0 -0
- {charli3_dendrite-1.5.5.dev0 → charli3_dendrite-1.5.6.dev0}/src/charli3_dendrite/lending/danogo/oracles/recipes.json +0 -0
- {charli3_dendrite-1.5.5.dev0 → charli3_dendrite-1.5.6.dev0}/src/charli3_dendrite/lending/danogo/oracles/redeemer.py +0 -0
- {charli3_dendrite-1.5.5.dev0 → charli3_dendrite-1.5.6.dev0}/src/charli3_dendrite/lending/danogo/oracles/reproduce.py +0 -0
- {charli3_dendrite-1.5.5.dev0 → charli3_dendrite-1.5.6.dev0}/src/charli3_dendrite/lending/danogo/oracles/structured_datums.py +0 -0
- {charli3_dendrite-1.5.5.dev0 → charli3_dendrite-1.5.6.dev0}/src/charli3_dendrite/lending/danogo/state.py +0 -0
- {charli3_dendrite-1.5.5.dev0 → charli3_dendrite-1.5.6.dev0}/src/charli3_dendrite/lending/danogo/transactions/__init__.py +0 -0
- {charli3_dendrite-1.5.5.dev0 → charli3_dendrite-1.5.6.dev0}/src/charli3_dendrite/lending/danogo/transactions/_common.py +0 -0
- {charli3_dendrite-1.5.5.dev0 → charli3_dendrite-1.5.6.dev0}/src/charli3_dendrite/lending/danogo/transactions/build.py +0 -0
- {charli3_dendrite-1.5.5.dev0 → charli3_dendrite-1.5.6.dev0}/src/charli3_dendrite/lending/danogo/transactions/builder.py +0 -0
- {charli3_dendrite-1.5.5.dev0 → charli3_dendrite-1.5.6.dev0}/src/charli3_dendrite/lending/danogo/transactions/context.py +0 -0
- {charli3_dendrite-1.5.5.dev0 → charli3_dendrite-1.5.6.dev0}/src/charli3_dendrite/lending/danogo/transactions/create_loan.py +0 -0
- {charli3_dendrite-1.5.5.dev0 → charli3_dendrite-1.5.6.dev0}/src/charli3_dendrite/lending/danogo/transactions/datum_synth.py +0 -0
- {charli3_dendrite-1.5.5.dev0 → charli3_dendrite-1.5.6.dev0}/src/charli3_dendrite/lending/danogo/transactions/increase_loan.py +0 -0
- {charli3_dendrite-1.5.5.dev0 → charli3_dendrite-1.5.6.dev0}/src/charli3_dendrite/lending/danogo/transactions/loan_ids.py +0 -0
- {charli3_dendrite-1.5.5.dev0 → charli3_dendrite-1.5.6.dev0}/src/charli3_dendrite/lending/danogo/transactions/modify_collateral.py +0 -0
- {charli3_dendrite-1.5.5.dev0 → charli3_dendrite-1.5.6.dev0}/src/charli3_dendrite/lending/danogo/transactions/oracle_redeemer.py +0 -0
- {charli3_dendrite-1.5.5.dev0 → charli3_dendrite-1.5.6.dev0}/src/charli3_dendrite/lending/danogo/transactions/oracle_synth.py +0 -0
- {charli3_dendrite-1.5.5.dev0 → charli3_dendrite-1.5.6.dev0}/src/charli3_dendrite/lending/danogo/transactions/redeemers.py +0 -0
- {charli3_dendrite-1.5.5.dev0 → charli3_dendrite-1.5.6.dev0}/src/charli3_dendrite/lending/danogo/transactions/repay.py +0 -0
- {charli3_dendrite-1.5.5.dev0 → charli3_dendrite-1.5.6.dev0}/src/charli3_dendrite/lending/danogo/transactions/topup_withdraw.py +0 -0
- {charli3_dendrite-1.5.5.dev0 → charli3_dendrite-1.5.6.dev0}/src/charli3_dendrite/lending/danogo/transactions/verify.py +0 -0
- {charli3_dendrite-1.5.5.dev0 → charli3_dendrite-1.5.6.dev0}/src/charli3_dendrite/lending/fluidtokens/__init__.py +0 -0
- {charli3_dendrite-1.5.5.dev0 → charli3_dendrite-1.5.6.dev0}/src/charli3_dendrite/lending/fluidtokens/constants.py +0 -0
- {charli3_dendrite-1.5.5.dev0 → charli3_dendrite-1.5.6.dev0}/src/charli3_dendrite/lending/fluidtokens/datums.py +0 -0
- {charli3_dendrite-1.5.5.dev0 → charli3_dendrite-1.5.6.dev0}/src/charli3_dendrite/lending/fluidtokens/loader.py +0 -0
- {charli3_dendrite-1.5.5.dev0 → charli3_dendrite-1.5.6.dev0}/src/charli3_dendrite/lending/fluidtokens/market.py +0 -0
- {charli3_dendrite-1.5.5.dev0 → charli3_dendrite-1.5.6.dev0}/src/charli3_dendrite/lending/fluidtokens/math.py +0 -0
- {charli3_dendrite-1.5.5.dev0 → charli3_dendrite-1.5.6.dev0}/src/charli3_dendrite/lending/fluidtokens/oracles/__init__.py +0 -0
- {charli3_dendrite-1.5.5.dev0 → charli3_dendrite-1.5.6.dev0}/src/charli3_dendrite/lending/fluidtokens/oracles/feeds.py +0 -0
- {charli3_dendrite-1.5.5.dev0 → charli3_dendrite-1.5.6.dev0}/src/charli3_dendrite/lending/fluidtokens/oracles/fluid_api.py +0 -0
- {charli3_dendrite-1.5.5.dev0 → charli3_dendrite-1.5.6.dev0}/src/charli3_dendrite/lending/fluidtokens/oracles/witness.py +0 -0
- {charli3_dendrite-1.5.5.dev0 → charli3_dendrite-1.5.6.dev0}/src/charli3_dendrite/lending/fluidtokens/state.py +0 -0
- {charli3_dendrite-1.5.5.dev0 → charli3_dendrite-1.5.6.dev0}/src/charli3_dendrite/lending/fluidtokens/transactions/__init__.py +0 -0
- {charli3_dendrite-1.5.5.dev0 → charli3_dendrite-1.5.6.dev0}/src/charli3_dendrite/lending/fluidtokens/transactions/_common.py +0 -0
- {charli3_dendrite-1.5.5.dev0 → charli3_dendrite-1.5.6.dev0}/src/charli3_dendrite/lending/fluidtokens/transactions/borrow.py +0 -0
- {charli3_dendrite-1.5.5.dev0 → charli3_dendrite-1.5.6.dev0}/src/charli3_dendrite/lending/fluidtokens/transactions/builder.py +0 -0
- {charli3_dendrite-1.5.5.dev0 → charli3_dendrite-1.5.6.dev0}/src/charli3_dendrite/lending/fluidtokens/transactions/change_collateral.py +0 -0
- {charli3_dendrite-1.5.5.dev0 → charli3_dendrite-1.5.6.dev0}/src/charli3_dendrite/lending/fluidtokens/transactions/context.py +0 -0
- {charli3_dendrite-1.5.5.dev0 → charli3_dendrite-1.5.6.dev0}/src/charli3_dendrite/lending/fluidtokens/transactions/datum_synth.py +0 -0
- {charli3_dendrite-1.5.5.dev0 → charli3_dendrite-1.5.6.dev0}/src/charli3_dendrite/lending/fluidtokens/transactions/lend.py +0 -0
- {charli3_dendrite-1.5.5.dev0 → charli3_dendrite-1.5.6.dev0}/src/charli3_dendrite/lending/fluidtokens/transactions/pool.py +0 -0
- {charli3_dendrite-1.5.5.dev0 → charli3_dendrite-1.5.6.dev0}/src/charli3_dendrite/lending/fluidtokens/transactions/recast.py +0 -0
- {charli3_dendrite-1.5.5.dev0 → charli3_dendrite-1.5.6.dev0}/src/charli3_dendrite/lending/fluidtokens/transactions/redeemers.py +0 -0
- {charli3_dendrite-1.5.5.dev0 → charli3_dendrite-1.5.6.dev0}/src/charli3_dendrite/lending/fluidtokens/transactions/repay.py +0 -0
- {charli3_dendrite-1.5.5.dev0 → charli3_dendrite-1.5.6.dev0}/src/charli3_dendrite/lending/fluidtokens/transactions/request.py +0 -0
- {charli3_dendrite-1.5.5.dev0 → charli3_dendrite-1.5.6.dev0}/src/charli3_dendrite/lending/fluidtokens/transactions/resolve.py +0 -0
- {charli3_dendrite-1.5.5.dev0 → charli3_dendrite-1.5.6.dev0}/src/charli3_dendrite/lending/math.py +0 -0
- {charli3_dendrite-1.5.5.dev0 → charli3_dendrite-1.5.6.dev0}/src/charli3_dendrite/lending/oracles/__init__.py +0 -0
- {charli3_dendrite-1.5.5.dev0 → charli3_dendrite-1.5.6.dev0}/src/charli3_dendrite/lending/oracles/charli3.py +0 -0
- {charli3_dendrite-1.5.5.dev0 → charli3_dendrite-1.5.6.dev0}/src/charli3_dendrite/lending/oracles/dex_pooled.py +0 -0
- {charli3_dendrite-1.5.5.dev0 → charli3_dendrite-1.5.6.dev0}/src/charli3_dendrite/lending/oracles/fluid.py +0 -0
- {charli3_dendrite-1.5.5.dev0 → charli3_dendrite-1.5.6.dev0}/src/charli3_dendrite/lending/oracles/models.py +0 -0
- {charli3_dendrite-1.5.5.dev0 → charli3_dendrite-1.5.6.dev0}/src/charli3_dendrite/lending/oracles/orcfax.py +0 -0
- {charli3_dendrite-1.5.5.dev0 → charli3_dendrite-1.5.6.dev0}/src/charli3_dendrite/lending/oracles/qtoken.py +0 -0
- {charli3_dendrite-1.5.5.dev0 → charli3_dendrite-1.5.6.dev0}/src/charli3_dendrite/lending/registry.py +0 -0
- {charli3_dendrite-1.5.5.dev0 → charli3_dendrite-1.5.6.dev0}/src/charli3_dendrite/lending/transactions/__init__.py +0 -0
- {charli3_dendrite-1.5.5.dev0 → charli3_dendrite-1.5.6.dev0}/src/charli3_dendrite/lending/transactions/base.py +0 -0
- {charli3_dendrite-1.5.5.dev0 → charli3_dendrite-1.5.6.dev0}/src/charli3_dendrite/lending/transactions/infra.py +0 -0
- {charli3_dendrite-1.5.5.dev0 → charli3_dendrite-1.5.6.dev0}/src/charli3_dendrite/lending/transactions/snapshot.py +0 -0
- {charli3_dendrite-1.5.5.dev0 → charli3_dendrite-1.5.6.dev0}/src/charli3_dendrite/lending/units.py +0 -0
- {charli3_dendrite-1.5.5.dev0 → charli3_dendrite-1.5.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.5.
|
|
3
|
+
version = "1.5.6-dev0"
|
|
4
4
|
description = ""
|
|
5
5
|
authors = ["Elder Millenial <eldermillenial@protonmail.com>"]
|
|
6
6
|
readme = "README.md"
|
|
@@ -50,7 +50,7 @@ module = ["pycardano", "pycardano.*", "dotenv", "nox", "uplc", "uplc.*"]
|
|
|
50
50
|
ignore_missing_imports = true
|
|
51
51
|
|
|
52
52
|
[tool.bumpversion]
|
|
53
|
-
current_version = "1.5.
|
|
53
|
+
current_version = "1.5.6-dev0"
|
|
54
54
|
parse = """(?x)
|
|
55
55
|
(?P<major>\\d+)\\.
|
|
56
56
|
(?P<minor>\\d+)\\.
|
{charli3_dendrite-1.5.5.dev0 → charli3_dendrite-1.5.6.dev0}/src/charli3_dendrite/__init__.py
RENAMED
|
@@ -24,6 +24,7 @@ from charli3_dendrite.dexs.amm.wingriders import WingRidersCPPState
|
|
|
24
24
|
from charli3_dendrite.dexs.amm.wingriders import WingRidersSSPState
|
|
25
25
|
from charli3_dendrite.dexs.amm.wingriders import WingRidersV2CPPState
|
|
26
26
|
from charli3_dendrite.dexs.amm.wingriders import WingRidersV2SSPState
|
|
27
|
+
from charli3_dendrite.dexs.ob.cardanoswaps import CardanoSwapsOrderBook
|
|
27
28
|
from charli3_dendrite.dexs.ob.cardanoswaps import CardanoSwapsOrderState
|
|
28
29
|
from charli3_dendrite.dexs.ob.chadswap import ChadSwapOrderBook
|
|
29
30
|
from charli3_dendrite.dexs.ob.chadswap import ChadSwapOrderState
|
|
@@ -14,6 +14,7 @@ are implemented separately.
|
|
|
14
14
|
import hashlib
|
|
15
15
|
import time
|
|
16
16
|
from dataclasses import dataclass
|
|
17
|
+
from decimal import Decimal
|
|
17
18
|
from typing import Union
|
|
18
19
|
|
|
19
20
|
from pycardano import Address
|
|
@@ -30,12 +31,17 @@ from pycardano import UTxO
|
|
|
30
31
|
from pycardano import plutus_script_hash
|
|
31
32
|
from pycardano.utils import min_lovelace
|
|
32
33
|
|
|
34
|
+
from charli3_dendrite.backend import get_backend
|
|
33
35
|
from charli3_dendrite.dataclasses.datums import OrderDatum
|
|
34
36
|
from charli3_dendrite.dataclasses.datums import PlutusNone
|
|
35
37
|
from charli3_dendrite.dataclasses.models import Assets
|
|
36
38
|
from charli3_dendrite.dataclasses.models import OrderType
|
|
37
39
|
from charli3_dendrite.dataclasses.models import PoolSelector
|
|
40
|
+
from charli3_dendrite.dexs.ob.ob_base import AbstractOrderBookState
|
|
38
41
|
from charli3_dendrite.dexs.ob.ob_base import AbstractOrderState
|
|
42
|
+
from charli3_dendrite.dexs.ob.ob_base import BuyOrderBook
|
|
43
|
+
from charli3_dendrite.dexs.ob.ob_base import OrderBookOrder
|
|
44
|
+
from charli3_dendrite.dexs.ob.ob_base import SellOrderBook
|
|
39
45
|
from charli3_dendrite.utility import asset_to_value
|
|
40
46
|
|
|
41
47
|
# v2 one-way beacon minting policy id (also stored verbatim in the datum's
|
|
@@ -262,6 +268,13 @@ class CardanoSwapsOrderState(AbstractOrderState):
|
|
|
262
268
|
datum_hash: str
|
|
263
269
|
inactive: bool = False
|
|
264
270
|
fee: int = 0
|
|
271
|
+
# The resting UTxO's on-chain address. Unlike every other order-book DEX, a
|
|
272
|
+
# Cardano-Swaps order carries no owner in its datum — the owner is the resting
|
|
273
|
+
# address's staking credential (the beacon-tagged swap address = validator
|
|
274
|
+
# payment part + owner staking part). Retaining it here lets an aggregate fill
|
|
275
|
+
# (:class:`CardanoSwapsOrderBook`) recover each maker's owner without a separate
|
|
276
|
+
# lookup; it is populated from the backend UTxO record on ingest.
|
|
277
|
+
address: str | None = None
|
|
265
278
|
|
|
266
279
|
_batcher: Assets = Assets(lovelace=0)
|
|
267
280
|
_datum_parsed: PlutusData | None = None
|
|
@@ -806,3 +819,183 @@ class CardanoSwapsOrderState(AbstractOrderState):
|
|
|
806
819
|
# script must be executed (a withdrawal). This builder only assembles the
|
|
807
820
|
# spend + burn; signing/withdrawal is the caller's responsibility.
|
|
808
821
|
return self.order_datum
|
|
822
|
+
|
|
823
|
+
|
|
824
|
+
class CardanoSwapsOrderBook(AbstractOrderBookState):
|
|
825
|
+
"""Aggregate order book over resting Cardano-Swaps one-way swap UTxOs.
|
|
826
|
+
|
|
827
|
+
The batcher-less, fee-less sibling of the other order-book aggregates: it
|
|
828
|
+
holds many individual :class:`CardanoSwapsOrderState` orders for a token pair
|
|
829
|
+
and prices/fills across them. Because a Cardano-Swaps order carries no
|
|
830
|
+
protocol fee (``fee = 0``), the base level-walk ``get_amount_out`` /
|
|
831
|
+
``get_amount_in`` are inherited unchanged; only ``price`` (and construction)
|
|
832
|
+
diverge, and ``swap_utxo`` folds a fill across the individual orders.
|
|
833
|
+
"""
|
|
834
|
+
|
|
835
|
+
fee: int = 0
|
|
836
|
+
_deposit: Assets = Assets(lovelace=0)
|
|
837
|
+
|
|
838
|
+
@classmethod
|
|
839
|
+
def get_book(
|
|
840
|
+
cls,
|
|
841
|
+
assets: Assets,
|
|
842
|
+
orders: list[CardanoSwapsOrderState] | None = None,
|
|
843
|
+
) -> "CardanoSwapsOrderBook":
|
|
844
|
+
"""Build an order book from Cardano-Swaps orders for the given pair.
|
|
845
|
+
|
|
846
|
+
Args:
|
|
847
|
+
assets: The token pair to build the book for (unit(0) + unit(1)).
|
|
848
|
+
orders: Pre-fetched orders, or None to discover from the backend by
|
|
849
|
+
beacon policy (``pool_selector`` is beacon-based, not address-based).
|
|
850
|
+
"""
|
|
851
|
+
if orders is None:
|
|
852
|
+
selector = CardanoSwapsOrderState.pool_selector()
|
|
853
|
+
result = get_backend().get_pool_utxos(
|
|
854
|
+
limit=10000,
|
|
855
|
+
historical=False,
|
|
856
|
+
**selector.model_dump(),
|
|
857
|
+
)
|
|
858
|
+
orders = [
|
|
859
|
+
CardanoSwapsOrderState.model_validate(r.model_dump()) for r in result
|
|
860
|
+
]
|
|
861
|
+
|
|
862
|
+
buy_orders = []
|
|
863
|
+
sell_orders = []
|
|
864
|
+
for order in orders:
|
|
865
|
+
if order.inactive:
|
|
866
|
+
continue
|
|
867
|
+
num, denom = order.price
|
|
868
|
+
o = OrderBookOrder(
|
|
869
|
+
price=num / denom,
|
|
870
|
+
quantity=int(order.available.quantity()),
|
|
871
|
+
state=order,
|
|
872
|
+
)
|
|
873
|
+
if order.in_unit == assets.unit() and order.out_unit == assets.unit(1):
|
|
874
|
+
sell_orders.append(o)
|
|
875
|
+
elif order.in_unit == assets.unit(1) and order.out_unit == assets.unit(0):
|
|
876
|
+
buy_orders.append(o)
|
|
877
|
+
|
|
878
|
+
return CardanoSwapsOrderBook(
|
|
879
|
+
assets=assets,
|
|
880
|
+
plutus_v2=True,
|
|
881
|
+
block_time=int(time.time()),
|
|
882
|
+
block_index=0,
|
|
883
|
+
sell_book_full=SellOrderBook(sell_orders),
|
|
884
|
+
buy_book_full=BuyOrderBook(buy_orders),
|
|
885
|
+
)
|
|
886
|
+
|
|
887
|
+
@classmethod
|
|
888
|
+
def dex(cls) -> str:
|
|
889
|
+
"""Official dex name."""
|
|
890
|
+
return "CardanoSwaps"
|
|
891
|
+
|
|
892
|
+
@classmethod
|
|
893
|
+
def order_selector(cls) -> list[str]:
|
|
894
|
+
"""Order selection: discovery is by beacon policy, not address."""
|
|
895
|
+
return CardanoSwapsOrderState.order_selector()
|
|
896
|
+
|
|
897
|
+
@classmethod
|
|
898
|
+
def pool_selector(cls) -> PoolSelector:
|
|
899
|
+
"""Pool/order selection: by beacon policy id."""
|
|
900
|
+
return CardanoSwapsOrderState.pool_selector()
|
|
901
|
+
|
|
902
|
+
@classmethod
|
|
903
|
+
def default_script_class(cls) -> type[PlutusV2Script]:
|
|
904
|
+
"""The swap spending validator is a Plutus V2 script."""
|
|
905
|
+
return CardanoSwapsOrderState.default_script_class()
|
|
906
|
+
|
|
907
|
+
@classmethod
|
|
908
|
+
def order_datum_class(cls) -> type[PlutusData]:
|
|
909
|
+
"""The PlutusData class for parsing order datums."""
|
|
910
|
+
return CardanoSwapsOrderState.order_datum_class()
|
|
911
|
+
|
|
912
|
+
@property
|
|
913
|
+
def swap_forward(self) -> bool:
|
|
914
|
+
"""Swap forwarding is supported on the individual orders."""
|
|
915
|
+
return False
|
|
916
|
+
|
|
917
|
+
@property
|
|
918
|
+
def stake_address(self) -> Address | None:
|
|
919
|
+
"""Batcher-less: no order-book stake address."""
|
|
920
|
+
return None
|
|
921
|
+
|
|
922
|
+
@property
|
|
923
|
+
def pool_id(self) -> str:
|
|
924
|
+
"""Unique identifier for the Cardano-Swaps order book."""
|
|
925
|
+
return "CardanoSwaps"
|
|
926
|
+
|
|
927
|
+
@property
|
|
928
|
+
def price(self) -> tuple[Decimal, Decimal]:
|
|
929
|
+
"""Mid price of assets based on the full order books.
|
|
930
|
+
|
|
931
|
+
Overridden with an empty-book guard: Cardano-Swaps books are frequently
|
|
932
|
+
one-sided (all orders offering one direction of the pair), and the base
|
|
933
|
+
``price`` dereferences the never-populated optional ``buy_book[0]`` /
|
|
934
|
+
``sell_book[0]``.
|
|
935
|
+
"""
|
|
936
|
+
if not self.buy_book_full or not self.sell_book_full:
|
|
937
|
+
return Decimal(0), Decimal(0)
|
|
938
|
+
buy = Decimal(self.buy_book_full[0].price)
|
|
939
|
+
sell = Decimal(self.sell_book_full[0].price)
|
|
940
|
+
return (
|
|
941
|
+
Decimal((buy + (Decimal(1) / sell)) / 2),
|
|
942
|
+
Decimal((sell + (Decimal(1) / buy)) / 2),
|
|
943
|
+
)
|
|
944
|
+
|
|
945
|
+
def swap_utxo(
|
|
946
|
+
self,
|
|
947
|
+
address_source: Address,
|
|
948
|
+
in_assets: Assets,
|
|
949
|
+
out_assets: Assets,
|
|
950
|
+
tx_builder: TransactionBuilder,
|
|
951
|
+
extra_assets: Assets | None = None,
|
|
952
|
+
address_target: Address | None = None,
|
|
953
|
+
datum_target: PlutusData | None = None,
|
|
954
|
+
) -> tuple[TransactionOutput | None, PlutusData]:
|
|
955
|
+
"""Build a fill by walking the book, folding one fill per resting order.
|
|
956
|
+
|
|
957
|
+
Iterates the appropriate side (sell or buy) best-price-first, filling each
|
|
958
|
+
resting order via its own ``swap_utxo`` until the input is exhausted. Each
|
|
959
|
+
fill is threaded the maker's real owner — the resting UTxO's staking
|
|
960
|
+
credential, carried on the order's ``address`` — so the continuing output
|
|
961
|
+
lands back at the correct beacon-tagged swap address (defaulting the owner
|
|
962
|
+
to the taker would reconstruct the wrong input and fail validation).
|
|
963
|
+
"""
|
|
964
|
+
if in_assets.unit() == self.assets.unit():
|
|
965
|
+
book = self.sell_book_full
|
|
966
|
+
else:
|
|
967
|
+
book = self.buy_book_full
|
|
968
|
+
|
|
969
|
+
in_remaining = Assets.model_validate(in_assets.model_dump())
|
|
970
|
+
txo = None
|
|
971
|
+
datum = None
|
|
972
|
+
|
|
973
|
+
for order in book:
|
|
974
|
+
state = order.state
|
|
975
|
+
|
|
976
|
+
order_out, _ = state.get_amount_out(in_remaining)
|
|
977
|
+
order_in, _ = state.get_amount_in(order_out)
|
|
978
|
+
|
|
979
|
+
# Stop once the remaining budget cannot satisfy a meaningful fill.
|
|
980
|
+
if order_out.quantity() <= 0 or order_in.quantity() <= 0:
|
|
981
|
+
break
|
|
982
|
+
|
|
983
|
+
if state.address is None:
|
|
984
|
+
raise ValueError(
|
|
985
|
+
"Cardano-Swaps order-book fill requires each resting order's "
|
|
986
|
+
"address (the maker's owner staking credential).",
|
|
987
|
+
)
|
|
988
|
+
|
|
989
|
+
txo, datum = state.swap_utxo(
|
|
990
|
+
address_source=address_source,
|
|
991
|
+
in_assets=order_in,
|
|
992
|
+
out_assets=order_out,
|
|
993
|
+
tx_builder=tx_builder,
|
|
994
|
+
owner_address=Address.decode(state.address),
|
|
995
|
+
)
|
|
996
|
+
|
|
997
|
+
in_remaining -= order_in
|
|
998
|
+
if in_remaining.quantity() <= state.price[0] / state.price[1]:
|
|
999
|
+
break
|
|
1000
|
+
|
|
1001
|
+
return txo, datum
|
|
File without changes
|
|
File without changes
|
{charli3_dendrite-1.5.5.dev0 → charli3_dendrite-1.5.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.5.5.dev0 → charli3_dendrite-1.5.6.dev0}/src/charli3_dendrite/backend/utils.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{charli3_dendrite-1.5.5.dev0 → charli3_dendrite-1.5.6.dev0}/src/charli3_dendrite/dexs/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{charli3_dendrite-1.5.5.dev0 → charli3_dendrite-1.5.6.dev0}/src/charli3_dendrite/dexs/amm/cswap.py
RENAMED
|
File without changes
|
{charli3_dendrite-1.5.5.dev0 → charli3_dendrite-1.5.6.dev0}/src/charli3_dendrite/dexs/amm/dano.py
RENAMED
|
File without changes
|
{charli3_dendrite-1.5.5.dev0 → charli3_dendrite-1.5.6.dev0}/src/charli3_dendrite/dexs/amm/minswap.py
RENAMED
|
File without changes
|
{charli3_dendrite-1.5.5.dev0 → charli3_dendrite-1.5.6.dev0}/src/charli3_dendrite/dexs/amm/muesli.py
RENAMED
|
File without changes
|
|
File without changes
|
{charli3_dendrite-1.5.5.dev0 → charli3_dendrite-1.5.6.dev0}/src/charli3_dendrite/dexs/amm/splash.py
RENAMED
|
File without changes
|
{charli3_dendrite-1.5.5.dev0 → charli3_dendrite-1.5.6.dev0}/src/charli3_dendrite/dexs/amm/sundae.py
RENAMED
|
File without changes
|
{charli3_dendrite-1.5.5.dev0 → charli3_dendrite-1.5.6.dev0}/src/charli3_dendrite/dexs/amm/vyfi.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{charli3_dendrite-1.5.5.dev0 → charli3_dendrite-1.5.6.dev0}/src/charli3_dendrite/dexs/core/base.py
RENAMED
|
File without changes
|
{charli3_dendrite-1.5.5.dev0 → charli3_dendrite-1.5.6.dev0}/src/charli3_dendrite/dexs/core/errors.py
RENAMED
|
File without changes
|
{charli3_dendrite-1.5.5.dev0 → charli3_dendrite-1.5.6.dev0}/src/charli3_dendrite/dexs/ob/__init__.py
RENAMED
|
File without changes
|
{charli3_dendrite-1.5.5.dev0 → charli3_dendrite-1.5.6.dev0}/src/charli3_dendrite/dexs/ob/axo.py
RENAMED
|
File without changes
|
{charli3_dendrite-1.5.5.dev0 → charli3_dendrite-1.5.6.dev0}/src/charli3_dendrite/dexs/ob/chadswap.py
RENAMED
|
File without changes
|
{charli3_dendrite-1.5.5.dev0 → charli3_dendrite-1.5.6.dev0}/src/charli3_dendrite/dexs/ob/djed.py
RENAMED
|
File without changes
|
|
File without changes
|
{charli3_dendrite-1.5.5.dev0 → charli3_dendrite-1.5.6.dev0}/src/charli3_dendrite/dexs/ob/ob_base.py
RENAMED
|
File without changes
|
|
File without changes
|
{charli3_dendrite-1.5.5.dev0 → charli3_dendrite-1.5.6.dev0}/src/charli3_dendrite/lending/__init__.py
RENAMED
|
File without changes
|
{charli3_dendrite-1.5.5.dev0 → charli3_dendrite-1.5.6.dev0}/src/charli3_dendrite/lending/base.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
|
|
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
|
{charli3_dendrite-1.5.5.dev0 → charli3_dendrite-1.5.6.dev0}/src/charli3_dendrite/lending/math.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.5.5.dev0 → charli3_dendrite-1.5.6.dev0}/src/charli3_dendrite/lending/registry.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{charli3_dendrite-1.5.5.dev0 → charli3_dendrite-1.5.6.dev0}/src/charli3_dendrite/lending/units.py
RENAMED
|
File without changes
|
|
File without changes
|