charli3_dendrite 1.5.9.dev0__tar.gz → 1.5.10.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.9.dev0 → charli3_dendrite-1.5.10.dev0}/PKG-INFO +1 -1
- {charli3_dendrite-1.5.9.dev0 → charli3_dendrite-1.5.10.dev0}/pyproject.toml +2 -2
- {charli3_dendrite-1.5.9.dev0 → charli3_dendrite-1.5.10.dev0}/src/charli3_dendrite/dexs/amm/amm_base.py +12 -1
- {charli3_dendrite-1.5.9.dev0 → charli3_dendrite-1.5.10.dev0}/src/charli3_dendrite/dexs/amm/minswap.py +22 -4
- {charli3_dendrite-1.5.9.dev0 → charli3_dendrite-1.5.10.dev0}/src/charli3_dendrite/dexs/amm/spectrum.py +3 -2
- {charli3_dendrite-1.5.9.dev0 → charli3_dendrite-1.5.10.dev0}/src/charli3_dendrite/dexs/amm/sundae.py +19 -3
- {charli3_dendrite-1.5.9.dev0 → charli3_dendrite-1.5.10.dev0}/src/charli3_dendrite/dexs/amm/wingriders.py +13 -8
- {charli3_dendrite-1.5.9.dev0 → charli3_dendrite-1.5.10.dev0}/LICENSE +0 -0
- {charli3_dendrite-1.5.9.dev0 → charli3_dendrite-1.5.10.dev0}/README.md +0 -0
- {charli3_dendrite-1.5.9.dev0 → charli3_dendrite-1.5.10.dev0}/src/charli3_dendrite/__init__.py +0 -0
- {charli3_dendrite-1.5.9.dev0 → charli3_dendrite-1.5.10.dev0}/src/charli3_dendrite/backend/__init__.py +0 -0
- {charli3_dendrite-1.5.9.dev0 → charli3_dendrite-1.5.10.dev0}/src/charli3_dendrite/backend/backend_base.py +0 -0
- {charli3_dendrite-1.5.9.dev0 → charli3_dendrite-1.5.10.dev0}/src/charli3_dendrite/backend/blockfrost/__init__.py +0 -0
- {charli3_dendrite-1.5.9.dev0 → charli3_dendrite-1.5.10.dev0}/src/charli3_dendrite/backend/blockfrost/models.py +0 -0
- {charli3_dendrite-1.5.9.dev0 → charli3_dendrite-1.5.10.dev0}/src/charli3_dendrite/backend/dbsync/__init__.py +0 -0
- {charli3_dendrite-1.5.9.dev0 → charli3_dendrite-1.5.10.dev0}/src/charli3_dendrite/backend/dbsync/models.py +0 -0
- {charli3_dendrite-1.5.9.dev0 → charli3_dendrite-1.5.10.dev0}/src/charli3_dendrite/backend/ogmios_kupo/__init__.py +0 -0
- {charli3_dendrite-1.5.9.dev0 → charli3_dendrite-1.5.10.dev0}/src/charli3_dendrite/backend/ogmios_kupo/models.py +0 -0
- {charli3_dendrite-1.5.9.dev0 → charli3_dendrite-1.5.10.dev0}/src/charli3_dendrite/backend/utils.py +0 -0
- {charli3_dendrite-1.5.9.dev0 → charli3_dendrite-1.5.10.dev0}/src/charli3_dendrite/dataclasses/__init__.py +0 -0
- {charli3_dendrite-1.5.9.dev0 → charli3_dendrite-1.5.10.dev0}/src/charli3_dendrite/dataclasses/datums.py +0 -0
- {charli3_dendrite-1.5.9.dev0 → charli3_dendrite-1.5.10.dev0}/src/charli3_dendrite/dataclasses/models.py +0 -0
- {charli3_dendrite-1.5.9.dev0 → charli3_dendrite-1.5.10.dev0}/src/charli3_dendrite/dexs/__init__.py +0 -0
- {charli3_dendrite-1.5.9.dev0 → charli3_dendrite-1.5.10.dev0}/src/charli3_dendrite/dexs/amm/__init__.py +0 -0
- {charli3_dendrite-1.5.9.dev0 → charli3_dendrite-1.5.10.dev0}/src/charli3_dendrite/dexs/amm/amm_types.py +0 -0
- {charli3_dendrite-1.5.9.dev0 → charli3_dendrite-1.5.10.dev0}/src/charli3_dendrite/dexs/amm/cswap.py +0 -0
- {charli3_dendrite-1.5.9.dev0 → charli3_dendrite-1.5.10.dev0}/src/charli3_dendrite/dexs/amm/dano.py +0 -0
- {charli3_dendrite-1.5.9.dev0 → charli3_dendrite-1.5.10.dev0}/src/charli3_dendrite/dexs/amm/muesli.py +0 -0
- {charli3_dendrite-1.5.9.dev0 → charli3_dendrite-1.5.10.dev0}/src/charli3_dendrite/dexs/amm/splash.py +0 -0
- {charli3_dendrite-1.5.9.dev0 → charli3_dendrite-1.5.10.dev0}/src/charli3_dendrite/dexs/amm/vyfi.py +0 -0
- {charli3_dendrite-1.5.9.dev0 → charli3_dendrite-1.5.10.dev0}/src/charli3_dendrite/dexs/core/__init__.py +0 -0
- {charli3_dendrite-1.5.9.dev0 → charli3_dendrite-1.5.10.dev0}/src/charli3_dendrite/dexs/core/base.py +0 -0
- {charli3_dendrite-1.5.9.dev0 → charli3_dendrite-1.5.10.dev0}/src/charli3_dendrite/dexs/core/errors.py +0 -0
- {charli3_dendrite-1.5.9.dev0 → charli3_dendrite-1.5.10.dev0}/src/charli3_dendrite/dexs/ob/__init__.py +0 -0
- {charli3_dendrite-1.5.9.dev0 → charli3_dendrite-1.5.10.dev0}/src/charli3_dendrite/dexs/ob/axo.py +0 -0
- {charli3_dendrite-1.5.9.dev0 → charli3_dendrite-1.5.10.dev0}/src/charli3_dendrite/dexs/ob/cardanoswaps.py +0 -0
- {charli3_dendrite-1.5.9.dev0 → charli3_dendrite-1.5.10.dev0}/src/charli3_dendrite/dexs/ob/chadswap.py +0 -0
- {charli3_dendrite-1.5.9.dev0 → charli3_dendrite-1.5.10.dev0}/src/charli3_dendrite/dexs/ob/djed.py +0 -0
- {charli3_dendrite-1.5.9.dev0 → charli3_dendrite-1.5.10.dev0}/src/charli3_dendrite/dexs/ob/geniusyield.py +0 -0
- {charli3_dendrite-1.5.9.dev0 → charli3_dendrite-1.5.10.dev0}/src/charli3_dendrite/dexs/ob/ob_base.py +0 -0
- {charli3_dendrite-1.5.9.dev0 → charli3_dendrite-1.5.10.dev0}/src/charli3_dendrite/dexs/ob/saturnswap.py +0 -0
- {charli3_dendrite-1.5.9.dev0 → charli3_dendrite-1.5.10.dev0}/src/charli3_dendrite/lending/__init__.py +0 -0
- {charli3_dendrite-1.5.9.dev0 → charli3_dendrite-1.5.10.dev0}/src/charli3_dendrite/lending/base.py +0 -0
- {charli3_dendrite-1.5.9.dev0 → charli3_dendrite-1.5.10.dev0}/src/charli3_dendrite/lending/danogo/__init__.py +0 -0
- {charli3_dendrite-1.5.9.dev0 → charli3_dendrite-1.5.10.dev0}/src/charli3_dendrite/lending/danogo/constants.py +0 -0
- {charli3_dendrite-1.5.9.dev0 → charli3_dendrite-1.5.10.dev0}/src/charli3_dendrite/lending/danogo/datums.py +0 -0
- {charli3_dendrite-1.5.9.dev0 → charli3_dendrite-1.5.10.dev0}/src/charli3_dendrite/lending/danogo/loader.py +0 -0
- {charli3_dendrite-1.5.9.dev0 → charli3_dendrite-1.5.10.dev0}/src/charli3_dendrite/lending/danogo/market.py +0 -0
- {charli3_dendrite-1.5.9.dev0 → charli3_dendrite-1.5.10.dev0}/src/charli3_dendrite/lending/danogo/math.py +0 -0
- {charli3_dendrite-1.5.9.dev0 → charli3_dendrite-1.5.10.dev0}/src/charli3_dendrite/lending/danogo/oracles/__init__.py +0 -0
- {charli3_dendrite-1.5.9.dev0 → charli3_dendrite-1.5.10.dev0}/src/charli3_dendrite/lending/danogo/oracles/aggregator.py +0 -0
- {charli3_dendrite-1.5.9.dev0 → charli3_dendrite-1.5.10.dev0}/src/charli3_dendrite/lending/danogo/oracles/aggregator_datums.py +0 -0
- {charli3_dendrite-1.5.9.dev0 → charli3_dendrite-1.5.10.dev0}/src/charli3_dendrite/lending/danogo/oracles/deployments.py +0 -0
- {charli3_dendrite-1.5.9.dev0 → charli3_dendrite-1.5.10.dev0}/src/charli3_dendrite/lending/danogo/oracles/forward.py +0 -0
- {charli3_dendrite-1.5.9.dev0 → charli3_dendrite-1.5.10.dev0}/src/charli3_dendrite/lending/danogo/oracles/leaves.py +0 -0
- {charli3_dendrite-1.5.9.dev0 → charli3_dendrite-1.5.10.dev0}/src/charli3_dendrite/lending/danogo/oracles/locator.py +0 -0
- {charli3_dendrite-1.5.9.dev0 → charli3_dendrite-1.5.10.dev0}/src/charli3_dendrite/lending/danogo/oracles/lp_pricing.py +0 -0
- {charli3_dendrite-1.5.9.dev0 → charli3_dendrite-1.5.10.dev0}/src/charli3_dendrite/lending/danogo/oracles/recipes.json +0 -0
- {charli3_dendrite-1.5.9.dev0 → charli3_dendrite-1.5.10.dev0}/src/charli3_dendrite/lending/danogo/oracles/redeemer.py +0 -0
- {charli3_dendrite-1.5.9.dev0 → charli3_dendrite-1.5.10.dev0}/src/charli3_dendrite/lending/danogo/oracles/reproduce.py +0 -0
- {charli3_dendrite-1.5.9.dev0 → charli3_dendrite-1.5.10.dev0}/src/charli3_dendrite/lending/danogo/oracles/structured_datums.py +0 -0
- {charli3_dendrite-1.5.9.dev0 → charli3_dendrite-1.5.10.dev0}/src/charli3_dendrite/lending/danogo/state.py +0 -0
- {charli3_dendrite-1.5.9.dev0 → charli3_dendrite-1.5.10.dev0}/src/charli3_dendrite/lending/danogo/transactions/__init__.py +0 -0
- {charli3_dendrite-1.5.9.dev0 → charli3_dendrite-1.5.10.dev0}/src/charli3_dendrite/lending/danogo/transactions/_common.py +0 -0
- {charli3_dendrite-1.5.9.dev0 → charli3_dendrite-1.5.10.dev0}/src/charli3_dendrite/lending/danogo/transactions/build.py +0 -0
- {charli3_dendrite-1.5.9.dev0 → charli3_dendrite-1.5.10.dev0}/src/charli3_dendrite/lending/danogo/transactions/builder.py +0 -0
- {charli3_dendrite-1.5.9.dev0 → charli3_dendrite-1.5.10.dev0}/src/charli3_dendrite/lending/danogo/transactions/context.py +0 -0
- {charli3_dendrite-1.5.9.dev0 → charli3_dendrite-1.5.10.dev0}/src/charli3_dendrite/lending/danogo/transactions/create_loan.py +0 -0
- {charli3_dendrite-1.5.9.dev0 → charli3_dendrite-1.5.10.dev0}/src/charli3_dendrite/lending/danogo/transactions/datum_synth.py +0 -0
- {charli3_dendrite-1.5.9.dev0 → charli3_dendrite-1.5.10.dev0}/src/charli3_dendrite/lending/danogo/transactions/increase_loan.py +0 -0
- {charli3_dendrite-1.5.9.dev0 → charli3_dendrite-1.5.10.dev0}/src/charli3_dendrite/lending/danogo/transactions/loan_ids.py +0 -0
- {charli3_dendrite-1.5.9.dev0 → charli3_dendrite-1.5.10.dev0}/src/charli3_dendrite/lending/danogo/transactions/modify_collateral.py +0 -0
- {charli3_dendrite-1.5.9.dev0 → charli3_dendrite-1.5.10.dev0}/src/charli3_dendrite/lending/danogo/transactions/oracle_redeemer.py +0 -0
- {charli3_dendrite-1.5.9.dev0 → charli3_dendrite-1.5.10.dev0}/src/charli3_dendrite/lending/danogo/transactions/oracle_synth.py +0 -0
- {charli3_dendrite-1.5.9.dev0 → charli3_dendrite-1.5.10.dev0}/src/charli3_dendrite/lending/danogo/transactions/redeemers.py +0 -0
- {charli3_dendrite-1.5.9.dev0 → charli3_dendrite-1.5.10.dev0}/src/charli3_dendrite/lending/danogo/transactions/repay.py +0 -0
- {charli3_dendrite-1.5.9.dev0 → charli3_dendrite-1.5.10.dev0}/src/charli3_dendrite/lending/danogo/transactions/topup_withdraw.py +0 -0
- {charli3_dendrite-1.5.9.dev0 → charli3_dendrite-1.5.10.dev0}/src/charli3_dendrite/lending/danogo/transactions/verify.py +0 -0
- {charli3_dendrite-1.5.9.dev0 → charli3_dendrite-1.5.10.dev0}/src/charli3_dendrite/lending/fluidtokens/__init__.py +0 -0
- {charli3_dendrite-1.5.9.dev0 → charli3_dendrite-1.5.10.dev0}/src/charli3_dendrite/lending/fluidtokens/constants.py +0 -0
- {charli3_dendrite-1.5.9.dev0 → charli3_dendrite-1.5.10.dev0}/src/charli3_dendrite/lending/fluidtokens/datums.py +0 -0
- {charli3_dendrite-1.5.9.dev0 → charli3_dendrite-1.5.10.dev0}/src/charli3_dendrite/lending/fluidtokens/loader.py +0 -0
- {charli3_dendrite-1.5.9.dev0 → charli3_dendrite-1.5.10.dev0}/src/charli3_dendrite/lending/fluidtokens/market.py +0 -0
- {charli3_dendrite-1.5.9.dev0 → charli3_dendrite-1.5.10.dev0}/src/charli3_dendrite/lending/fluidtokens/math.py +0 -0
- {charli3_dendrite-1.5.9.dev0 → charli3_dendrite-1.5.10.dev0}/src/charli3_dendrite/lending/fluidtokens/oracles/__init__.py +0 -0
- {charli3_dendrite-1.5.9.dev0 → charli3_dendrite-1.5.10.dev0}/src/charli3_dendrite/lending/fluidtokens/oracles/feeds.py +0 -0
- {charli3_dendrite-1.5.9.dev0 → charli3_dendrite-1.5.10.dev0}/src/charli3_dendrite/lending/fluidtokens/oracles/fluid_api.py +0 -0
- {charli3_dendrite-1.5.9.dev0 → charli3_dendrite-1.5.10.dev0}/src/charli3_dendrite/lending/fluidtokens/oracles/witness.py +0 -0
- {charli3_dendrite-1.5.9.dev0 → charli3_dendrite-1.5.10.dev0}/src/charli3_dendrite/lending/fluidtokens/state.py +0 -0
- {charli3_dendrite-1.5.9.dev0 → charli3_dendrite-1.5.10.dev0}/src/charli3_dendrite/lending/fluidtokens/transactions/__init__.py +0 -0
- {charli3_dendrite-1.5.9.dev0 → charli3_dendrite-1.5.10.dev0}/src/charli3_dendrite/lending/fluidtokens/transactions/_common.py +0 -0
- {charli3_dendrite-1.5.9.dev0 → charli3_dendrite-1.5.10.dev0}/src/charli3_dendrite/lending/fluidtokens/transactions/borrow.py +0 -0
- {charli3_dendrite-1.5.9.dev0 → charli3_dendrite-1.5.10.dev0}/src/charli3_dendrite/lending/fluidtokens/transactions/builder.py +0 -0
- {charli3_dendrite-1.5.9.dev0 → charli3_dendrite-1.5.10.dev0}/src/charli3_dendrite/lending/fluidtokens/transactions/change_collateral.py +0 -0
- {charli3_dendrite-1.5.9.dev0 → charli3_dendrite-1.5.10.dev0}/src/charli3_dendrite/lending/fluidtokens/transactions/context.py +0 -0
- {charli3_dendrite-1.5.9.dev0 → charli3_dendrite-1.5.10.dev0}/src/charli3_dendrite/lending/fluidtokens/transactions/datum_synth.py +0 -0
- {charli3_dendrite-1.5.9.dev0 → charli3_dendrite-1.5.10.dev0}/src/charli3_dendrite/lending/fluidtokens/transactions/lend.py +0 -0
- {charli3_dendrite-1.5.9.dev0 → charli3_dendrite-1.5.10.dev0}/src/charli3_dendrite/lending/fluidtokens/transactions/pool.py +0 -0
- {charli3_dendrite-1.5.9.dev0 → charli3_dendrite-1.5.10.dev0}/src/charli3_dendrite/lending/fluidtokens/transactions/recast.py +0 -0
- {charli3_dendrite-1.5.9.dev0 → charli3_dendrite-1.5.10.dev0}/src/charli3_dendrite/lending/fluidtokens/transactions/redeemers.py +0 -0
- {charli3_dendrite-1.5.9.dev0 → charli3_dendrite-1.5.10.dev0}/src/charli3_dendrite/lending/fluidtokens/transactions/repay.py +0 -0
- {charli3_dendrite-1.5.9.dev0 → charli3_dendrite-1.5.10.dev0}/src/charli3_dendrite/lending/fluidtokens/transactions/request.py +0 -0
- {charli3_dendrite-1.5.9.dev0 → charli3_dendrite-1.5.10.dev0}/src/charli3_dendrite/lending/fluidtokens/transactions/resolve.py +0 -0
- {charli3_dendrite-1.5.9.dev0 → charli3_dendrite-1.5.10.dev0}/src/charli3_dendrite/lending/math.py +0 -0
- {charli3_dendrite-1.5.9.dev0 → charli3_dendrite-1.5.10.dev0}/src/charli3_dendrite/lending/oracles/__init__.py +0 -0
- {charli3_dendrite-1.5.9.dev0 → charli3_dendrite-1.5.10.dev0}/src/charli3_dendrite/lending/oracles/charli3.py +0 -0
- {charli3_dendrite-1.5.9.dev0 → charli3_dendrite-1.5.10.dev0}/src/charli3_dendrite/lending/oracles/dex_pooled.py +0 -0
- {charli3_dendrite-1.5.9.dev0 → charli3_dendrite-1.5.10.dev0}/src/charli3_dendrite/lending/oracles/fluid.py +0 -0
- {charli3_dendrite-1.5.9.dev0 → charli3_dendrite-1.5.10.dev0}/src/charli3_dendrite/lending/oracles/models.py +0 -0
- {charli3_dendrite-1.5.9.dev0 → charli3_dendrite-1.5.10.dev0}/src/charli3_dendrite/lending/oracles/orcfax.py +0 -0
- {charli3_dendrite-1.5.9.dev0 → charli3_dendrite-1.5.10.dev0}/src/charli3_dendrite/lending/oracles/qtoken.py +0 -0
- {charli3_dendrite-1.5.9.dev0 → charli3_dendrite-1.5.10.dev0}/src/charli3_dendrite/lending/registry.py +0 -0
- {charli3_dendrite-1.5.9.dev0 → charli3_dendrite-1.5.10.dev0}/src/charli3_dendrite/lending/transactions/__init__.py +0 -0
- {charli3_dendrite-1.5.9.dev0 → charli3_dendrite-1.5.10.dev0}/src/charli3_dendrite/lending/transactions/base.py +0 -0
- {charli3_dendrite-1.5.9.dev0 → charli3_dendrite-1.5.10.dev0}/src/charli3_dendrite/lending/transactions/infra.py +0 -0
- {charli3_dendrite-1.5.9.dev0 → charli3_dendrite-1.5.10.dev0}/src/charli3_dendrite/lending/transactions/snapshot.py +0 -0
- {charli3_dendrite-1.5.9.dev0 → charli3_dendrite-1.5.10.dev0}/src/charli3_dendrite/lending/units.py +0 -0
- {charli3_dendrite-1.5.9.dev0 → charli3_dendrite-1.5.10.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.10-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.10-dev0"
|
|
54
54
|
parse = """(?x)
|
|
55
55
|
(?P<major>\\d+)\\.
|
|
56
56
|
(?P<minor>\\d+)\\.
|
|
@@ -79,6 +79,7 @@ class AbstractPoolState(AbstractPairState):
|
|
|
79
79
|
extra_assets: Assets | None = None,
|
|
80
80
|
address_target: Address | None = None,
|
|
81
81
|
datum_target: PlutusData | None = None,
|
|
82
|
+
minimum_receive: Assets | None = None,
|
|
82
83
|
) -> PlutusData:
|
|
83
84
|
"""Create a swap datum for the pool.
|
|
84
85
|
|
|
@@ -92,6 +93,8 @@ class AbstractPoolState(AbstractPairState):
|
|
|
92
93
|
Defaults to None.
|
|
93
94
|
datum_target (PlutusData | None, optional): The target datum for the swap.
|
|
94
95
|
Defaults to None.
|
|
96
|
+
minimum_receive (Assets | None, optional): Overrides the baked on-chain
|
|
97
|
+
minimum; fee and deposit still size from out_assets. Defaults to None.
|
|
95
98
|
|
|
96
99
|
Returns:
|
|
97
100
|
PlutusData: The created swap datum.
|
|
@@ -104,10 +107,14 @@ class AbstractPoolState(AbstractPairState):
|
|
|
104
107
|
f"{self.__class__.__name__} does not support swap forwarding.",
|
|
105
108
|
)
|
|
106
109
|
|
|
110
|
+
# ``minimum_receive`` (when set) becomes the datum's baked floor; the batcher
|
|
111
|
+
# fee and deposit are still derived from the EXACT ``out_assets`` so relaxing
|
|
112
|
+
# the floor never under-fees the order — only the step's ``minimum_receive``
|
|
113
|
+
# loosens. Same output unit, so swap direction and lp_asset are unaffected.
|
|
107
114
|
return self.order_datum_class().create_datum(
|
|
108
115
|
address_source=address_source,
|
|
109
116
|
in_assets=in_assets,
|
|
110
|
-
out_assets=out_assets,
|
|
117
|
+
out_assets=out_assets if minimum_receive is None else minimum_receive,
|
|
111
118
|
batcher_fee=self.batcher_fee(
|
|
112
119
|
in_assets=in_assets,
|
|
113
120
|
out_assets=out_assets,
|
|
@@ -127,6 +134,7 @@ class AbstractPoolState(AbstractPairState):
|
|
|
127
134
|
extra_assets: Assets | None = None,
|
|
128
135
|
address_target: Address | None = None,
|
|
129
136
|
datum_target: PlutusData | None = None,
|
|
137
|
+
minimum_receive: Assets | None = None,
|
|
130
138
|
) -> tuple[TransactionOutput | None, PlutusData]:
|
|
131
139
|
"""Create a swap UTXO for the pool.
|
|
132
140
|
|
|
@@ -141,6 +149,8 @@ class AbstractPoolState(AbstractPairState):
|
|
|
141
149
|
Defaults to None.
|
|
142
150
|
datum_target (PlutusData | None, optional): The target datum for the swap.
|
|
143
151
|
Defaults to None.
|
|
152
|
+
minimum_receive (Assets | None, optional): Overrides the baked on-chain
|
|
153
|
+
minimum; fee and deposit still size from out_assets. Defaults to None.
|
|
144
154
|
|
|
145
155
|
Returns:
|
|
146
156
|
tuple[TransactionOutput, PlutusData]: A tuple containing the created
|
|
@@ -163,6 +173,7 @@ class AbstractPoolState(AbstractPairState):
|
|
|
163
173
|
extra_assets=extra_assets,
|
|
164
174
|
address_target=address_target,
|
|
165
175
|
datum_target=datum_target,
|
|
176
|
+
minimum_receive=minimum_receive,
|
|
166
177
|
)
|
|
167
178
|
|
|
168
179
|
in_assets.root["lovelace"] = (
|
|
@@ -32,6 +32,7 @@ from charli3_dendrite.dexs.amm.amm_types import AbstractConstantProductPoolState
|
|
|
32
32
|
from charli3_dendrite.dexs.amm.sundae import SundaeV3PlutusNone
|
|
33
33
|
from charli3_dendrite.dexs.amm.sundae import SundaeV3ReceiverDatumHash
|
|
34
34
|
from charli3_dendrite.dexs.amm.sundae import SundaeV3ReceiverInlineDatum
|
|
35
|
+
from charli3_dendrite.dexs.amm.sundae import SundaeV3ReceiverInlineDatumHash
|
|
35
36
|
from charli3_dendrite.utility import Assets
|
|
36
37
|
|
|
37
38
|
|
|
@@ -506,12 +507,14 @@ class MinswapV2OrderDatum(OrderDatum):
|
|
|
506
507
|
refund_datum_hash: Union[
|
|
507
508
|
SundaeV3PlutusNone,
|
|
508
509
|
SundaeV3ReceiverDatumHash,
|
|
510
|
+
SundaeV3ReceiverInlineDatumHash,
|
|
509
511
|
SundaeV3ReceiverInlineDatum,
|
|
510
512
|
]
|
|
511
513
|
receiver_address: PlutusFullAddress
|
|
512
514
|
receiver_datum_hash: Union[
|
|
513
515
|
SundaeV3PlutusNone,
|
|
514
516
|
SundaeV3ReceiverDatumHash,
|
|
517
|
+
SundaeV3ReceiverInlineDatumHash,
|
|
515
518
|
SundaeV3ReceiverInlineDatum,
|
|
516
519
|
]
|
|
517
520
|
lp_asset: AssetClass
|
|
@@ -546,16 +549,31 @@ class MinswapV2OrderDatum(OrderDatum):
|
|
|
546
549
|
full_address_source = PlutusFullAddress.from_address(address_source)
|
|
547
550
|
step = SwapExactInV2.from_assets(in_asset=in_assets, out_asset=out_assets)
|
|
548
551
|
|
|
549
|
-
#
|
|
550
|
-
#
|
|
551
|
-
#
|
|
552
|
+
# Minswap V2's ExtraDatum carries only the 32-byte HASH of the datum the
|
|
553
|
+
# batcher attaches to the forwarded output (Constr 1 for a datum-hash output,
|
|
554
|
+
# Constr 2 for an inline-datum output) — never the datum itself; the validator
|
|
555
|
+
# un_b_data's the field, so an embedded datum is unspendable. `datum_target` is
|
|
556
|
+
# either a ready receiver form built by the caller (whose form encodes what the
|
|
557
|
+
# next-hop protocol expects) or a raw next-hop order datum, which is forwarded
|
|
558
|
+
# by inline-datum-hash. No target (or no datum) -> no receiver datum.
|
|
552
559
|
if address_target is None:
|
|
553
560
|
address_target = address_source
|
|
554
561
|
receiver_datum = SundaeV3PlutusNone()
|
|
555
562
|
elif datum_target is None:
|
|
556
563
|
receiver_datum = SundaeV3PlutusNone()
|
|
564
|
+
elif isinstance(
|
|
565
|
+
datum_target,
|
|
566
|
+
(
|
|
567
|
+
SundaeV3PlutusNone,
|
|
568
|
+
SundaeV3ReceiverDatumHash,
|
|
569
|
+
SundaeV3ReceiverInlineDatumHash,
|
|
570
|
+
),
|
|
571
|
+
):
|
|
572
|
+
receiver_datum = datum_target
|
|
557
573
|
else:
|
|
558
|
-
receiver_datum =
|
|
574
|
+
receiver_datum = SundaeV3ReceiverInlineDatumHash(
|
|
575
|
+
datum_hash=datum_target.hash().payload,
|
|
576
|
+
)
|
|
559
577
|
|
|
560
578
|
full_address_target = PlutusFullAddress.from_address(address_target)
|
|
561
579
|
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
from dataclasses import dataclass
|
|
4
4
|
from typing import Any
|
|
5
5
|
from typing import ClassVar
|
|
6
|
-
from typing import List
|
|
6
|
+
from typing import List
|
|
7
7
|
from typing import Union
|
|
8
8
|
|
|
9
9
|
from pycardano import Address
|
|
@@ -366,6 +366,7 @@ class SpectrumCPPState(AbstractConstantProductPoolState):
|
|
|
366
366
|
extra_assets: Assets | None = None,
|
|
367
367
|
address_target: Address | None = None,
|
|
368
368
|
datum_target: PlutusData | None = None,
|
|
369
|
+
minimum_receive: Assets | None = None,
|
|
369
370
|
) -> PlutusData:
|
|
370
371
|
"""Create a PlutusData object representing a swap datum.
|
|
371
372
|
|
|
@@ -400,7 +401,7 @@ class SpectrumCPPState(AbstractConstantProductPoolState):
|
|
|
400
401
|
return SpectrumOrderDatum.create_datum(
|
|
401
402
|
address_source=address_source,
|
|
402
403
|
in_assets=in_assets,
|
|
403
|
-
out_assets=out_assets,
|
|
404
|
+
out_assets=out_assets if minimum_receive is None else minimum_receive,
|
|
404
405
|
batcher_fee=self.batcher_fee(in_assets=in_assets, out_assets=out_assets)[
|
|
405
406
|
"lovelace"
|
|
406
407
|
],
|
{charli3_dendrite-1.5.9.dev0 → charli3_dendrite-1.5.10.dev0}/src/charli3_dendrite/dexs/amm/sundae.py
RENAMED
|
@@ -122,6 +122,19 @@ class SundaeV3ReceiverInlineDatum(PlutusData):
|
|
|
122
122
|
datum: Datum
|
|
123
123
|
|
|
124
124
|
|
|
125
|
+
@dataclass
|
|
126
|
+
class SundaeV3ReceiverInlineDatumHash(PlutusData):
|
|
127
|
+
"""Inline-datum receiver identified by the 32-byte hash of the datum the batcher
|
|
128
|
+
attaches inline to the forwarded output (``Constr 2 [B <hash>]``). Unlike
|
|
129
|
+
``SundaeV3ReceiverInlineDatum``, which embeds the datum itself, receivers such as
|
|
130
|
+
Minswap V2 carry only the hash and verify the attached inline datum against it.
|
|
131
|
+
"""
|
|
132
|
+
|
|
133
|
+
CONSTR_ID = 2
|
|
134
|
+
|
|
135
|
+
datum_hash: bytes
|
|
136
|
+
|
|
137
|
+
|
|
125
138
|
@dataclass
|
|
126
139
|
class SundaeAddressWithDatum(PlutusData):
|
|
127
140
|
"""SundaeSwap address with datum."""
|
|
@@ -602,6 +615,7 @@ class SundaeSwapCPPState(AbstractConstantProductPoolState):
|
|
|
602
615
|
extra_assets: Assets | None = None,
|
|
603
616
|
address_target: Address | None = None,
|
|
604
617
|
datum_target: PlutusData | None = None,
|
|
618
|
+
minimum_receive: Assets | None = None,
|
|
605
619
|
) -> PlutusData:
|
|
606
620
|
"""Create a swap datum."""
|
|
607
621
|
if self.swap_forward and address_target is not None:
|
|
@@ -613,7 +627,7 @@ class SundaeSwapCPPState(AbstractConstantProductPoolState):
|
|
|
613
627
|
ident=ident,
|
|
614
628
|
address_source=address_source,
|
|
615
629
|
in_assets=in_assets,
|
|
616
|
-
out_assets=out_assets,
|
|
630
|
+
out_assets=out_assets if minimum_receive is None else minimum_receive,
|
|
617
631
|
fee=self.batcher_fee(in_assets=in_assets, out_assets=out_assets).quantity(),
|
|
618
632
|
)
|
|
619
633
|
|
|
@@ -754,6 +768,7 @@ class SundaeSwapV3CPPState(AbstractConstantProductPoolState):
|
|
|
754
768
|
extra_assets: Assets | None = None,
|
|
755
769
|
address_target: Address | None = None,
|
|
756
770
|
datum_target: PlutusData | None = None,
|
|
771
|
+
minimum_receive: Assets | None = None,
|
|
757
772
|
) -> PlutusData:
|
|
758
773
|
ident = bytes.fromhex(self.pool_nft.unit()[64:])
|
|
759
774
|
|
|
@@ -761,7 +776,7 @@ class SundaeSwapV3CPPState(AbstractConstantProductPoolState):
|
|
|
761
776
|
ident=ident,
|
|
762
777
|
address_source=address_source,
|
|
763
778
|
in_assets=in_assets,
|
|
764
|
-
out_assets=out_assets,
|
|
779
|
+
out_assets=out_assets if minimum_receive is None else minimum_receive,
|
|
765
780
|
fee=self.batcher_fee(in_assets=in_assets, out_assets=out_assets).quantity(),
|
|
766
781
|
address_target=address_target,
|
|
767
782
|
datum_target=datum_target,
|
|
@@ -932,6 +947,7 @@ class SundaeSwapV3StableSwap(AbstractStableSwapPoolState):
|
|
|
932
947
|
extra_assets: Assets | None = None,
|
|
933
948
|
address_target: Address | None = None,
|
|
934
949
|
datum_target: PlutusData | None = None,
|
|
950
|
+
minimum_receive: Assets | None = None,
|
|
935
951
|
) -> PlutusData:
|
|
936
952
|
ident = bytes.fromhex(self.pool_nft.unit()[64:])
|
|
937
953
|
|
|
@@ -939,7 +955,7 @@ class SundaeSwapV3StableSwap(AbstractStableSwapPoolState):
|
|
|
939
955
|
ident=ident,
|
|
940
956
|
address_source=address_source,
|
|
941
957
|
in_assets=in_assets,
|
|
942
|
-
out_assets=out_assets,
|
|
958
|
+
out_assets=out_assets if minimum_receive is None else minimum_receive,
|
|
943
959
|
fee=self.batcher_fee(in_assets=in_assets, out_assets=out_assets).quantity(),
|
|
944
960
|
address_target=address_target,
|
|
945
961
|
datum_target=datum_target,
|
|
@@ -388,8 +388,14 @@ class WingRidersV2OrderDatum(OrderDatum):
|
|
|
388
388
|
compensation_datum = b""
|
|
389
389
|
compensation_datum_type = NoDatum()
|
|
390
390
|
|
|
391
|
+
# ``oil`` declares the lovelace the batcher passes through to the beneficiary
|
|
392
|
+
# (it swaps the rest). A forwarded order must ride the full deposit through to
|
|
393
|
+
# fund the next hop, so oil follows ``deposit``; a plain owner-paid swap keeps
|
|
394
|
+
# the standard 2-ADA buffer.
|
|
395
|
+
oil = deposit.quantity() if address_target is not None else 2000000
|
|
396
|
+
|
|
391
397
|
return WingRidersV2OrderDatum(
|
|
392
|
-
oil=
|
|
398
|
+
oil=oil,
|
|
393
399
|
beneficiary=beneficiary,
|
|
394
400
|
owner_address=plutus_address,
|
|
395
401
|
compensation_datum=compensation_datum,
|
|
@@ -833,12 +839,10 @@ class WingRidersV2CPPState(AbstractConstantProductPoolState):
|
|
|
833
839
|
out_assets: Assets | None = None,
|
|
834
840
|
extra_assets: Assets | None = None,
|
|
835
841
|
):
|
|
836
|
-
|
|
837
|
-
|
|
838
|
-
|
|
839
|
-
|
|
840
|
-
elif merged_assets["lovelace"] <= 500000000:
|
|
841
|
-
return Assets(lovelace=1500000)
|
|
842
|
+
"""The V2 batcher charges a flat 2 ADA regardless of swap size (an order
|
|
843
|
+
fill deducts exactly ``2_000_000`` from the order value; the V1-era ADA
|
|
844
|
+
size tiers do not apply to V2).
|
|
845
|
+
"""
|
|
842
846
|
return Assets(lovelace=2000000)
|
|
843
847
|
|
|
844
848
|
|
|
@@ -887,11 +891,12 @@ class WingRidersV2SSPState(AbstractStableSwapPoolState, WingRidersV2CPPState):
|
|
|
887
891
|
extra_assets: Assets | None = None,
|
|
888
892
|
address_target: Address | None = None,
|
|
889
893
|
datum_target: PlutusData | None = None,
|
|
894
|
+
minimum_receive: Assets | None = None,
|
|
890
895
|
) -> PlutusData:
|
|
891
896
|
return self.order_datum_class().create_datum(
|
|
892
897
|
address_source=address_source,
|
|
893
898
|
in_assets=in_assets,
|
|
894
|
-
out_assets=out_assets,
|
|
899
|
+
out_assets=out_assets if minimum_receive is None else minimum_receive,
|
|
895
900
|
batcher_fee=self.batcher_fee(
|
|
896
901
|
in_assets=in_assets,
|
|
897
902
|
out_assets=out_assets,
|
|
File without changes
|
|
File without changes
|
{charli3_dendrite-1.5.9.dev0 → charli3_dendrite-1.5.10.dev0}/src/charli3_dendrite/__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
|
|
File without changes
|
{charli3_dendrite-1.5.9.dev0 → charli3_dendrite-1.5.10.dev0}/src/charli3_dendrite/backend/utils.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{charli3_dendrite-1.5.9.dev0 → charli3_dendrite-1.5.10.dev0}/src/charli3_dendrite/dexs/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{charli3_dendrite-1.5.9.dev0 → charli3_dendrite-1.5.10.dev0}/src/charli3_dendrite/dexs/amm/cswap.py
RENAMED
|
File without changes
|
{charli3_dendrite-1.5.9.dev0 → charli3_dendrite-1.5.10.dev0}/src/charli3_dendrite/dexs/amm/dano.py
RENAMED
|
File without changes
|
{charli3_dendrite-1.5.9.dev0 → charli3_dendrite-1.5.10.dev0}/src/charli3_dendrite/dexs/amm/muesli.py
RENAMED
|
File without changes
|
{charli3_dendrite-1.5.9.dev0 → charli3_dendrite-1.5.10.dev0}/src/charli3_dendrite/dexs/amm/splash.py
RENAMED
|
File without changes
|
{charli3_dendrite-1.5.9.dev0 → charli3_dendrite-1.5.10.dev0}/src/charli3_dendrite/dexs/amm/vyfi.py
RENAMED
|
File without changes
|
|
File without changes
|
{charli3_dendrite-1.5.9.dev0 → charli3_dendrite-1.5.10.dev0}/src/charli3_dendrite/dexs/core/base.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{charli3_dendrite-1.5.9.dev0 → charli3_dendrite-1.5.10.dev0}/src/charli3_dendrite/dexs/ob/axo.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{charli3_dendrite-1.5.9.dev0 → charli3_dendrite-1.5.10.dev0}/src/charli3_dendrite/dexs/ob/djed.py
RENAMED
|
File without changes
|
|
File without changes
|
{charli3_dendrite-1.5.9.dev0 → charli3_dendrite-1.5.10.dev0}/src/charli3_dendrite/dexs/ob/ob_base.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{charli3_dendrite-1.5.9.dev0 → charli3_dendrite-1.5.10.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.9.dev0 → charli3_dendrite-1.5.10.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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{charli3_dendrite-1.5.9.dev0 → charli3_dendrite-1.5.10.dev0}/src/charli3_dendrite/lending/units.py
RENAMED
|
File without changes
|
{charli3_dendrite-1.5.9.dev0 → charli3_dendrite-1.5.10.dev0}/src/charli3_dendrite/utility.py
RENAMED
|
File without changes
|