charli3_dendrite 1.2.5.dev0__tar.gz → 1.2.5.dev1__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 (38) hide show
  1. {charli3_dendrite-1.2.5.dev0 → charli3_dendrite-1.2.5.dev1}/PKG-INFO +1 -1
  2. {charli3_dendrite-1.2.5.dev0 → charli3_dendrite-1.2.5.dev1}/pyproject.toml +2 -2
  3. {charli3_dendrite-1.2.5.dev0 → charli3_dendrite-1.2.5.dev1}/src/charli3_dendrite/dexs/amm/splash.py +146 -103
  4. {charli3_dendrite-1.2.5.dev0 → charli3_dendrite-1.2.5.dev1}/LICENSE +0 -0
  5. {charli3_dendrite-1.2.5.dev0 → charli3_dendrite-1.2.5.dev1}/README.md +0 -0
  6. {charli3_dendrite-1.2.5.dev0 → charli3_dendrite-1.2.5.dev1}/src/charli3_dendrite/__init__.py +0 -0
  7. {charli3_dendrite-1.2.5.dev0 → charli3_dendrite-1.2.5.dev1}/src/charli3_dendrite/backend/__init__.py +0 -0
  8. {charli3_dendrite-1.2.5.dev0 → charli3_dendrite-1.2.5.dev1}/src/charli3_dendrite/backend/backend_base.py +0 -0
  9. {charli3_dendrite-1.2.5.dev0 → charli3_dendrite-1.2.5.dev1}/src/charli3_dendrite/backend/blockfrost/__init__.py +0 -0
  10. {charli3_dendrite-1.2.5.dev0 → charli3_dendrite-1.2.5.dev1}/src/charli3_dendrite/backend/blockfrost/models.py +0 -0
  11. {charli3_dendrite-1.2.5.dev0 → charli3_dendrite-1.2.5.dev1}/src/charli3_dendrite/backend/dbsync/__init__.py +0 -0
  12. {charli3_dendrite-1.2.5.dev0 → charli3_dendrite-1.2.5.dev1}/src/charli3_dendrite/backend/dbsync/models.py +0 -0
  13. {charli3_dendrite-1.2.5.dev0 → charli3_dendrite-1.2.5.dev1}/src/charli3_dendrite/backend/ogmios_kupo/__init__.py +0 -0
  14. {charli3_dendrite-1.2.5.dev0 → charli3_dendrite-1.2.5.dev1}/src/charli3_dendrite/backend/ogmios_kupo/models.py +0 -0
  15. {charli3_dendrite-1.2.5.dev0 → charli3_dendrite-1.2.5.dev1}/src/charli3_dendrite/backend/utils.py +0 -0
  16. {charli3_dendrite-1.2.5.dev0 → charli3_dendrite-1.2.5.dev1}/src/charli3_dendrite/dataclasses/__init__.py +0 -0
  17. {charli3_dendrite-1.2.5.dev0 → charli3_dendrite-1.2.5.dev1}/src/charli3_dendrite/dataclasses/datums.py +0 -0
  18. {charli3_dendrite-1.2.5.dev0 → charli3_dendrite-1.2.5.dev1}/src/charli3_dendrite/dataclasses/models.py +0 -0
  19. {charli3_dendrite-1.2.5.dev0 → charli3_dendrite-1.2.5.dev1}/src/charli3_dendrite/dexs/__init__.py +0 -0
  20. {charli3_dendrite-1.2.5.dev0 → charli3_dendrite-1.2.5.dev1}/src/charli3_dendrite/dexs/amm/__init__.py +0 -0
  21. {charli3_dendrite-1.2.5.dev0 → charli3_dendrite-1.2.5.dev1}/src/charli3_dendrite/dexs/amm/amm_base.py +0 -0
  22. {charli3_dendrite-1.2.5.dev0 → charli3_dendrite-1.2.5.dev1}/src/charli3_dendrite/dexs/amm/amm_types.py +0 -0
  23. {charli3_dendrite-1.2.5.dev0 → charli3_dendrite-1.2.5.dev1}/src/charli3_dendrite/dexs/amm/cswap.py +0 -0
  24. {charli3_dendrite-1.2.5.dev0 → charli3_dendrite-1.2.5.dev1}/src/charli3_dendrite/dexs/amm/minswap.py +0 -0
  25. {charli3_dendrite-1.2.5.dev0 → charli3_dendrite-1.2.5.dev1}/src/charli3_dendrite/dexs/amm/muesli.py +0 -0
  26. {charli3_dendrite-1.2.5.dev0 → charli3_dendrite-1.2.5.dev1}/src/charli3_dendrite/dexs/amm/spectrum.py +0 -0
  27. {charli3_dendrite-1.2.5.dev0 → charli3_dendrite-1.2.5.dev1}/src/charli3_dendrite/dexs/amm/sundae.py +0 -0
  28. {charli3_dendrite-1.2.5.dev0 → charli3_dendrite-1.2.5.dev1}/src/charli3_dendrite/dexs/amm/vyfi.py +0 -0
  29. {charli3_dendrite-1.2.5.dev0 → charli3_dendrite-1.2.5.dev1}/src/charli3_dendrite/dexs/amm/wingriders.py +0 -0
  30. {charli3_dendrite-1.2.5.dev0 → charli3_dendrite-1.2.5.dev1}/src/charli3_dendrite/dexs/core/__init__.py +0 -0
  31. {charli3_dendrite-1.2.5.dev0 → charli3_dendrite-1.2.5.dev1}/src/charli3_dendrite/dexs/core/base.py +0 -0
  32. {charli3_dendrite-1.2.5.dev0 → charli3_dendrite-1.2.5.dev1}/src/charli3_dendrite/dexs/core/errors.py +0 -0
  33. {charli3_dendrite-1.2.5.dev0 → charli3_dendrite-1.2.5.dev1}/src/charli3_dendrite/dexs/ob/__init__.py +0 -0
  34. {charli3_dendrite-1.2.5.dev0 → charli3_dendrite-1.2.5.dev1}/src/charli3_dendrite/dexs/ob/axo.py +0 -0
  35. {charli3_dendrite-1.2.5.dev0 → charli3_dendrite-1.2.5.dev1}/src/charli3_dendrite/dexs/ob/djed.py +0 -0
  36. {charli3_dendrite-1.2.5.dev0 → charli3_dendrite-1.2.5.dev1}/src/charli3_dendrite/dexs/ob/geniusyield.py +0 -0
  37. {charli3_dendrite-1.2.5.dev0 → charli3_dendrite-1.2.5.dev1}/src/charli3_dendrite/dexs/ob/ob_base.py +0 -0
  38. {charli3_dendrite-1.2.5.dev0 → charli3_dendrite-1.2.5.dev1}/src/charli3_dendrite/utility.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: charli3_dendrite
3
- Version: 1.2.5.dev0
3
+ Version: 1.2.5.dev1
4
4
  Summary:
5
5
  Author: Elder Millenial
6
6
  Author-email: eldermillenial@protonmail.com
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "charli3_dendrite"
3
- version = "1.2.5-dev0"
3
+ version = "1.2.5-dev1"
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.5-dev0"
52
+ current_version = "1.2.5-dev1"
53
53
  parse = """(?x)
54
54
  (?P<major>\\d+)\\.
55
55
  (?P<minor>\\d+)\\.
@@ -1,6 +1,8 @@
1
1
  """Minswap DEX Module."""
2
2
 
3
- from dataclasses import dataclass
3
+ from dataclasses import dataclass, field
4
+ from random import choice
5
+ from string import hexdigits
4
6
  from typing import Any
5
7
  from typing import List
6
8
  from typing import Union
@@ -71,7 +73,11 @@ class SplashOrderDatum(OrderDatum):
71
73
  fee: int
72
74
  redeemer_address: PlutusFullAddress
73
75
  cancel_pkh: bytes
74
- permitted_executors: List[bytes]
76
+ permitted_executors: List[bytes] = field(
77
+ default_factory=lambda: [
78
+ b"\\\xb2\xc9h\xe5\xd1\xc7\x19zl\xe7aYg1\n7UE\xd9\xbce\x06:\x96C5\xb2"
79
+ ]
80
+ )
75
81
 
76
82
  def address_source(self) -> Address:
77
83
  """This method should return the source address associated with the order."""
@@ -88,6 +94,43 @@ class SplashOrderDatum(OrderDatum):
88
94
  """This method should return the type of the order."""
89
95
  return OrderType.swap
90
96
 
97
+ @classmethod
98
+ def create_datum(
99
+ cls,
100
+ address_source: Address,
101
+ in_assets: Assets,
102
+ out_assets: Assets,
103
+ batcher_fee: Assets,
104
+ deposit: Assets,
105
+ address_target: Address | None = None,
106
+ datum_target: PlutusData | None = None,
107
+ ) -> "CSwapOrderDatum":
108
+ """Create a CSwap order datum."""
109
+ # Validate ADA-only restriction
110
+ merged_assets = in_assets + out_assets
111
+
112
+ full_address = PlutusFullAddress.from_address(address_source)
113
+
114
+ beacon = "".join(choice(hexdigits) for _ in range(56))
115
+
116
+ numerator, denominator = float.as_integer_ratio(
117
+ in_assets.quantity() / out_assets.quantity(),
118
+ )
119
+
120
+ return cls(
121
+ tag=b"\x00",
122
+ beacon=beacon,
123
+ in_asset=AssetClass.from_assets(in_assets),
124
+ tradable_input=in_assets.quantity(),
125
+ cost_per_ex_step=batcher_fee.quantity(),
126
+ min_marginal_output=out_assets.quantity(),
127
+ output=AssetClass.from_assets(out_assets),
128
+ base_price=Rationale(numerator=numerator, denominator=denominator),
129
+ fee=0,
130
+ redeemer_address=full_address,
131
+ cancel_pkh=address_source.payment_part.payload,
132
+ )
133
+
91
134
 
92
135
  @dataclass
93
136
  class SplashSSPPoolDatum(PoolDatum):
@@ -741,8 +784,8 @@ class SplashCPPRoyaltyState(SplashCPPState):
741
784
  """Splash StableSwap Pool State."""
742
785
 
743
786
  fee: int = 30
744
- _batcher = Assets(lovelace=0)
745
- _deposit = Assets(lovelace=0)
787
+ _batcher = Assets(lovelace=1000000)
788
+ _deposit = Assets(lovelace=1500000)
746
789
 
747
790
  def _treasury_x(self) -> int:
748
791
  return self.pool_datum.treasury_x + self.pool_datum.royalty_x
@@ -779,102 +822,102 @@ class SplashCPPRoyaltyState(SplashCPPState):
779
822
  # Verify pool is active
780
823
  values["inactive"] = assets.quantity() < 100000000
781
824
 
782
- def swap_utxo(
783
- self,
784
- address_source: Address,
785
- in_assets: Assets,
786
- out_assets: Assets,
787
- tx_builder: TransactionBuilder | None = None,
788
- extra_assets: Assets | None = None,
789
- address_target: Address | None = None,
790
- datum_target: PlutusData | None = None,
791
- ) -> tuple[TransactionOutput | None, PlutusData]:
792
- assert self.tx_hash is not None
793
- assert self.pool_nft is not None
794
- assert self.lp_tokens is not None
795
- assert tx_builder is not None
796
-
797
- order_info = get_backend().get_pool_in_tx(
798
- self.tx_hash,
799
- assets=[self.pool_nft.unit()],
800
- addresses=self.pool_selector().addresses,
801
- )
802
-
803
- # Get the output assets
804
- out_assets, _ = self.get_amount_out(asset=in_assets)
805
-
806
- # Create the output redeemer
807
- redeemer = Redeemer(
808
- CPPoolRedeemer(
809
- action=2,
810
- self_index=-1,
811
- ),
812
- )
813
-
814
- # Create the pool input UTxO
815
- pool_datum_class = self.pool_datum_class()
816
- pool_datum = pool_datum_class.from_cbor(
817
- self.pool_datum.to_cbor(),
818
- )
819
- assets = self.assets + self.pool_nft + self.lp_tokens
820
- assets.root[self.assets.unit()] += (
821
- pool_datum.treasury_x + self.pool_datum.royalty_x
822
- )
823
- assets.root[self.assets.unit(1)] += (
824
- pool_datum.treasury_y + self.pool_datum.royalty_y
825
- )
826
- input_utxo = UTxO(
827
- TransactionInput(
828
- transaction_id=TransactionId(bytes.fromhex(self.tx_hash)),
829
- index=self.tx_index,
830
- ),
831
- output=TransactionOutput(
832
- address=order_info[0].address,
833
- amount=asset_to_value(assets),
834
- datum=self.pool_datum,
835
- ),
836
- )
837
-
838
- # Create the pool output UTxO
839
- new_assets = Assets.model_validate(assets.model_dump())
840
- new_assets.root[in_assets.unit()] += in_assets.quantity()
841
- new_assets.root[out_assets.unit()] += -out_assets.quantity()
842
- new_pool_datum = pool_datum_class.from_cbor(
843
- self.pool_datum.to_cbor(),
844
- )
845
-
846
- if in_assets.unit() == new_pool_datum.asset_x.assets.unit():
847
- new_pool_datum.treasury_x += int(
848
- in_assets.quantity() * new_pool_datum.treasury_fee // 100000,
849
- )
850
- new_pool_datum.royalty_x += int(
851
- in_assets.quantity() * new_pool_datum.royalty_fee // 100000,
852
- )
853
- elif in_assets.unit() == new_pool_datum.asset_y.assets.unit():
854
- new_pool_datum.treasury_y += int(
855
- in_assets.quantity() * new_pool_datum.treasury_fee // 100000,
856
- )
857
- new_pool_datum.royalty_y += int(
858
- in_assets.quantity() * new_pool_datum.royalty_fee // 100000,
859
- )
860
- else:
861
- raise ValueError("Invalid input asset")
862
-
863
- txo = TransactionOutput(
864
- address=order_info[0].address,
865
- amount=asset_to_value(new_assets),
866
- datum=new_pool_datum,
867
- )
868
-
869
- # Add the script input
870
- pool_hash = Address.decode(order_info[0].address).payment_part.payload
871
- script = (
872
- get_backend()
873
- .get_script_from_address(
874
- Address(payment_part=ScriptHash(payload=pool_hash)),
875
- )
876
- .to_utxo()
877
- )
878
- tx_builder.add_script_input(utxo=input_utxo, script=script, redeemer=redeemer)
879
-
880
- return txo, self.pool_datum
825
+ # def swap_utxo(
826
+ # self,
827
+ # address_source: Address,
828
+ # in_assets: Assets,
829
+ # out_assets: Assets,
830
+ # tx_builder: TransactionBuilder | None = None,
831
+ # extra_assets: Assets | None = None,
832
+ # address_target: Address | None = None,
833
+ # datum_target: PlutusData | None = None,
834
+ # ) -> tuple[TransactionOutput | None, PlutusData]:
835
+ # assert self.tx_hash is not None
836
+ # assert self.pool_nft is not None
837
+ # assert self.lp_tokens is not None
838
+ # assert tx_builder is not None
839
+
840
+ # order_info = get_backend().get_pool_in_tx(
841
+ # self.tx_hash,
842
+ # assets=[self.pool_nft.unit()],
843
+ # addresses=self.pool_selector().addresses,
844
+ # )
845
+
846
+ # # Get the output assets
847
+ # out_assets, _ = self.get_amount_out(asset=in_assets)
848
+
849
+ # # Create the output redeemer
850
+ # redeemer = Redeemer(
851
+ # CPPoolRedeemer(
852
+ # action=2,
853
+ # self_index=-1,
854
+ # ),
855
+ # )
856
+
857
+ # # Create the pool input UTxO
858
+ # pool_datum_class = self.pool_datum_class()
859
+ # pool_datum = pool_datum_class.from_cbor(
860
+ # self.pool_datum.to_cbor(),
861
+ # )
862
+ # assets = self.assets + self.pool_nft + self.lp_tokens
863
+ # assets.root[self.assets.unit()] += (
864
+ # pool_datum.treasury_x + self.pool_datum.royalty_x
865
+ # )
866
+ # assets.root[self.assets.unit(1)] += (
867
+ # pool_datum.treasury_y + self.pool_datum.royalty_y
868
+ # )
869
+ # input_utxo = UTxO(
870
+ # TransactionInput(
871
+ # transaction_id=TransactionId(bytes.fromhex(self.tx_hash)),
872
+ # index=self.tx_index,
873
+ # ),
874
+ # output=TransactionOutput(
875
+ # address=order_info[0].address,
876
+ # amount=asset_to_value(assets),
877
+ # datum=self.pool_datum,
878
+ # ),
879
+ # )
880
+
881
+ # # Create the pool output UTxO
882
+ # new_assets = Assets.model_validate(assets.model_dump())
883
+ # new_assets.root[in_assets.unit()] += in_assets.quantity()
884
+ # new_assets.root[out_assets.unit()] += -out_assets.quantity()
885
+ # new_pool_datum = pool_datum_class.from_cbor(
886
+ # self.pool_datum.to_cbor(),
887
+ # )
888
+
889
+ # if in_assets.unit() == new_pool_datum.asset_x.assets.unit():
890
+ # new_pool_datum.treasury_x += int(
891
+ # in_assets.quantity() * new_pool_datum.treasury_fee // 100000,
892
+ # )
893
+ # new_pool_datum.royalty_x += int(
894
+ # in_assets.quantity() * new_pool_datum.royalty_fee // 100000,
895
+ # )
896
+ # elif in_assets.unit() == new_pool_datum.asset_y.assets.unit():
897
+ # new_pool_datum.treasury_y += int(
898
+ # in_assets.quantity() * new_pool_datum.treasury_fee // 100000,
899
+ # )
900
+ # new_pool_datum.royalty_y += int(
901
+ # in_assets.quantity() * new_pool_datum.royalty_fee // 100000,
902
+ # )
903
+ # else:
904
+ # raise ValueError("Invalid input asset")
905
+
906
+ # txo = TransactionOutput(
907
+ # address=order_info[0].address,
908
+ # amount=asset_to_value(new_assets),
909
+ # datum=new_pool_datum,
910
+ # )
911
+
912
+ # # Add the script input
913
+ # pool_hash = Address.decode(order_info[0].address).payment_part.payload
914
+ # script = (
915
+ # get_backend()
916
+ # .get_script_from_address(
917
+ # Address(payment_part=ScriptHash(payload=pool_hash)),
918
+ # )
919
+ # .to_utxo()
920
+ # )
921
+ # tx_builder.add_script_input(utxo=input_utxo, script=script, redeemer=redeemer)
922
+
923
+ # return txo, self.pool_datum