charli3_dendrite 1.4.13.dev0__tar.gz → 1.4.13.dev2__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.
Files changed (42) hide show
  1. {charli3_dendrite-1.4.13.dev0 → charli3_dendrite-1.4.13.dev2}/PKG-INFO +1 -1
  2. {charli3_dendrite-1.4.13.dev0 → charli3_dendrite-1.4.13.dev2}/pyproject.toml +2 -2
  3. {charli3_dendrite-1.4.13.dev0 → charli3_dendrite-1.4.13.dev2}/src/charli3_dendrite/dexs/ob/cardanoswaps.py +35 -6
  4. {charli3_dendrite-1.4.13.dev0 → charli3_dendrite-1.4.13.dev2}/LICENSE +0 -0
  5. {charli3_dendrite-1.4.13.dev0 → charli3_dendrite-1.4.13.dev2}/README.md +0 -0
  6. {charli3_dendrite-1.4.13.dev0 → charli3_dendrite-1.4.13.dev2}/src/charli3_dendrite/__init__.py +0 -0
  7. {charli3_dendrite-1.4.13.dev0 → charli3_dendrite-1.4.13.dev2}/src/charli3_dendrite/backend/__init__.py +0 -0
  8. {charli3_dendrite-1.4.13.dev0 → charli3_dendrite-1.4.13.dev2}/src/charli3_dendrite/backend/backend_base.py +0 -0
  9. {charli3_dendrite-1.4.13.dev0 → charli3_dendrite-1.4.13.dev2}/src/charli3_dendrite/backend/blockfrost/__init__.py +0 -0
  10. {charli3_dendrite-1.4.13.dev0 → charli3_dendrite-1.4.13.dev2}/src/charli3_dendrite/backend/blockfrost/models.py +0 -0
  11. {charli3_dendrite-1.4.13.dev0 → charli3_dendrite-1.4.13.dev2}/src/charli3_dendrite/backend/dbsync/__init__.py +0 -0
  12. {charli3_dendrite-1.4.13.dev0 → charli3_dendrite-1.4.13.dev2}/src/charli3_dendrite/backend/dbsync/models.py +0 -0
  13. {charli3_dendrite-1.4.13.dev0 → charli3_dendrite-1.4.13.dev2}/src/charli3_dendrite/backend/ogmios_kupo/__init__.py +0 -0
  14. {charli3_dendrite-1.4.13.dev0 → charli3_dendrite-1.4.13.dev2}/src/charli3_dendrite/backend/ogmios_kupo/models.py +0 -0
  15. {charli3_dendrite-1.4.13.dev0 → charli3_dendrite-1.4.13.dev2}/src/charli3_dendrite/backend/utils.py +0 -0
  16. {charli3_dendrite-1.4.13.dev0 → charli3_dendrite-1.4.13.dev2}/src/charli3_dendrite/dataclasses/__init__.py +0 -0
  17. {charli3_dendrite-1.4.13.dev0 → charli3_dendrite-1.4.13.dev2}/src/charli3_dendrite/dataclasses/datums.py +0 -0
  18. {charli3_dendrite-1.4.13.dev0 → charli3_dendrite-1.4.13.dev2}/src/charli3_dendrite/dataclasses/models.py +0 -0
  19. {charli3_dendrite-1.4.13.dev0 → charli3_dendrite-1.4.13.dev2}/src/charli3_dendrite/dexs/__init__.py +0 -0
  20. {charli3_dendrite-1.4.13.dev0 → charli3_dendrite-1.4.13.dev2}/src/charli3_dendrite/dexs/amm/__init__.py +0 -0
  21. {charli3_dendrite-1.4.13.dev0 → charli3_dendrite-1.4.13.dev2}/src/charli3_dendrite/dexs/amm/amm_base.py +0 -0
  22. {charli3_dendrite-1.4.13.dev0 → charli3_dendrite-1.4.13.dev2}/src/charli3_dendrite/dexs/amm/amm_types.py +0 -0
  23. {charli3_dendrite-1.4.13.dev0 → charli3_dendrite-1.4.13.dev2}/src/charli3_dendrite/dexs/amm/cswap.py +0 -0
  24. {charli3_dendrite-1.4.13.dev0 → charli3_dendrite-1.4.13.dev2}/src/charli3_dendrite/dexs/amm/dano.py +0 -0
  25. {charli3_dendrite-1.4.13.dev0 → charli3_dendrite-1.4.13.dev2}/src/charli3_dendrite/dexs/amm/minswap.py +0 -0
  26. {charli3_dendrite-1.4.13.dev0 → charli3_dendrite-1.4.13.dev2}/src/charli3_dendrite/dexs/amm/muesli.py +0 -0
  27. {charli3_dendrite-1.4.13.dev0 → charli3_dendrite-1.4.13.dev2}/src/charli3_dendrite/dexs/amm/spectrum.py +0 -0
  28. {charli3_dendrite-1.4.13.dev0 → charli3_dendrite-1.4.13.dev2}/src/charli3_dendrite/dexs/amm/splash.py +0 -0
  29. {charli3_dendrite-1.4.13.dev0 → charli3_dendrite-1.4.13.dev2}/src/charli3_dendrite/dexs/amm/sundae.py +0 -0
  30. {charli3_dendrite-1.4.13.dev0 → charli3_dendrite-1.4.13.dev2}/src/charli3_dendrite/dexs/amm/vyfi.py +0 -0
  31. {charli3_dendrite-1.4.13.dev0 → charli3_dendrite-1.4.13.dev2}/src/charli3_dendrite/dexs/amm/wingriders.py +0 -0
  32. {charli3_dendrite-1.4.13.dev0 → charli3_dendrite-1.4.13.dev2}/src/charli3_dendrite/dexs/core/__init__.py +0 -0
  33. {charli3_dendrite-1.4.13.dev0 → charli3_dendrite-1.4.13.dev2}/src/charli3_dendrite/dexs/core/base.py +0 -0
  34. {charli3_dendrite-1.4.13.dev0 → charli3_dendrite-1.4.13.dev2}/src/charli3_dendrite/dexs/core/errors.py +0 -0
  35. {charli3_dendrite-1.4.13.dev0 → charli3_dendrite-1.4.13.dev2}/src/charli3_dendrite/dexs/ob/__init__.py +0 -0
  36. {charli3_dendrite-1.4.13.dev0 → charli3_dendrite-1.4.13.dev2}/src/charli3_dendrite/dexs/ob/axo.py +0 -0
  37. {charli3_dendrite-1.4.13.dev0 → charli3_dendrite-1.4.13.dev2}/src/charli3_dendrite/dexs/ob/chadswap.py +0 -0
  38. {charli3_dendrite-1.4.13.dev0 → charli3_dendrite-1.4.13.dev2}/src/charli3_dendrite/dexs/ob/djed.py +0 -0
  39. {charli3_dendrite-1.4.13.dev0 → charli3_dendrite-1.4.13.dev2}/src/charli3_dendrite/dexs/ob/geniusyield.py +0 -0
  40. {charli3_dendrite-1.4.13.dev0 → charli3_dendrite-1.4.13.dev2}/src/charli3_dendrite/dexs/ob/ob_base.py +0 -0
  41. {charli3_dendrite-1.4.13.dev0 → charli3_dendrite-1.4.13.dev2}/src/charli3_dendrite/dexs/ob/saturnswap.py +0 -0
  42. {charli3_dendrite-1.4.13.dev0 → charli3_dendrite-1.4.13.dev2}/src/charli3_dendrite/utility.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: charli3_dendrite
3
- Version: 1.4.13.dev0
3
+ Version: 1.4.13.dev2
4
4
  Summary:
5
5
  License-File: LICENSE
6
6
  Author: Elder Millenial
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "charli3_dendrite"
3
- version = "1.4.13-dev0"
3
+ version = "1.4.13-dev2"
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.4.13-dev0"
53
+ current_version = "1.4.13-dev2"
54
54
  parse = """(?x)
55
55
  (?P<major>\\d+)\\.
56
56
  (?P<minor>\\d+)\\.
@@ -585,10 +585,33 @@ class CardanoSwapsOrderState(AbstractOrderState):
585
585
  amount=asset_to_value(output_assets),
586
586
  datum=datum,
587
587
  )
588
- txo.amount.coin = max(
589
- txo.amount.coin,
590
- min_lovelace(tx_builder.context, output=txo),
591
- )
588
+ if offer_unit == "lovelace":
589
+ # ADA offer: the offered asset IS the UTxO's min-ADA, and the
590
+ # validator derives ``offer_taken = lovelace_in - lovelace_out``, so a
591
+ # taker can never draw the UTxO below its min-ADA floor — the tail of
592
+ # the stated offer would be un-fillable. Fund a SEPARATE carrier on
593
+ # top of the offer, sized to the FINAL full-fill state (3 beacons +
594
+ # the fully-accumulated ask asset + inline datum), so the entire
595
+ # offer is drawable while the UTxO stays at/above that floor. The
596
+ # maker reclaims the carrier (plus the accumulated ask) on CLOSE.
597
+ full_ask = -(-offer.quantity() * num // den) # ceil(offer x price)
598
+ final_assets = cls._beacon_mint_assets(datum, 1) + Assets(
599
+ root={ask_unit: full_ask},
600
+ )
601
+ final_txo = TransactionOutput(
602
+ address=swap_address,
603
+ amount=asset_to_value(final_assets),
604
+ datum=datum,
605
+ )
606
+ carrier = min_lovelace(tx_builder.context, output=final_txo)
607
+ txo.amount.coin = offer.quantity() + carrier
608
+ else:
609
+ # Token offer: the offered token fully leaves on a fill and the
610
+ # min-ADA is a separate lovelace carrier (no phantom tail).
611
+ txo.amount.coin = max(
612
+ txo.amount.coin,
613
+ min_lovelace(tx_builder.context, output=txo),
614
+ )
592
615
  tx_builder.add_output(txo)
593
616
 
594
617
  return txo, datum
@@ -679,7 +702,10 @@ class CardanoSwapsOrderState(AbstractOrderState):
679
702
  script=self._swap_script_arg(swap_ref_utxo),
680
703
  redeemer=Redeemer(Swap()),
681
704
  )
682
- tx_builder.datums.update({self.order_datum.hash(): self.order_datum})
705
+ # No witness datum: the order UTxO carries its SwapDatum inline (CS requires
706
+ # inline datums, and ``_input_utxo`` attaches it to the spent input above), so
707
+ # the validator reads it from the input directly. Adding the same datum to the
708
+ # witness set makes it an extraneous datum the ledger rejects on submit.
683
709
 
684
710
  # The swap is a single accumulating UTxO: the taker removes the offer
685
711
  # they take and deposits the ask (at price or better) back into the SAME
@@ -757,7 +783,10 @@ class CardanoSwapsOrderState(AbstractOrderState):
757
783
  script=self._swap_script_arg(swap_ref_utxo),
758
784
  redeemer=Redeemer(SpendWithMint()),
759
785
  )
760
- tx_builder.datums.update({self.order_datum.hash(): self.order_datum})
786
+ # No witness datum: the order UTxO carries its SwapDatum inline (CS requires
787
+ # inline datums, and ``_input_utxo`` attaches it to the spent input above), so
788
+ # the validator reads it from the input directly. Adding the same datum to the
789
+ # witness set makes it an extraneous datum the ledger rejects on submit.
761
790
 
762
791
  # Burn the three beacons.
763
792
  tx_builder.add_minting_script(