charli3_dendrite 1.3.3.dev0__tar.gz → 1.3.4.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.3.3.dev0 → charli3_dendrite-1.3.4.dev1}/PKG-INFO +1 -1
  2. {charli3_dendrite-1.3.3.dev0 → charli3_dendrite-1.3.4.dev1}/pyproject.toml +2 -2
  3. {charli3_dendrite-1.3.3.dev0 → charli3_dendrite-1.3.4.dev1}/src/charli3_dendrite/dataclasses/datums.py +1 -0
  4. {charli3_dendrite-1.3.3.dev0 → charli3_dendrite-1.3.4.dev1}/src/charli3_dendrite/dataclasses/models.py +10 -6
  5. {charli3_dendrite-1.3.3.dev0 → charli3_dendrite-1.3.4.dev1}/src/charli3_dendrite/dexs/amm/amm_types.py +1 -0
  6. {charli3_dendrite-1.3.3.dev0 → charli3_dendrite-1.3.4.dev1}/src/charli3_dendrite/dexs/amm/spectrum.py +5 -3
  7. {charli3_dendrite-1.3.3.dev0 → charli3_dendrite-1.3.4.dev1}/src/charli3_dendrite/dexs/amm/splash.py +43 -23
  8. {charli3_dendrite-1.3.3.dev0 → charli3_dendrite-1.3.4.dev1}/src/charli3_dendrite/dexs/amm/sundae.py +1 -0
  9. {charli3_dendrite-1.3.3.dev0 → charli3_dendrite-1.3.4.dev1}/src/charli3_dendrite/utility.py +1 -0
  10. {charli3_dendrite-1.3.3.dev0 → charli3_dendrite-1.3.4.dev1}/LICENSE +0 -0
  11. {charli3_dendrite-1.3.3.dev0 → charli3_dendrite-1.3.4.dev1}/README.md +0 -0
  12. {charli3_dendrite-1.3.3.dev0 → charli3_dendrite-1.3.4.dev1}/src/charli3_dendrite/__init__.py +0 -0
  13. {charli3_dendrite-1.3.3.dev0 → charli3_dendrite-1.3.4.dev1}/src/charli3_dendrite/backend/__init__.py +0 -0
  14. {charli3_dendrite-1.3.3.dev0 → charli3_dendrite-1.3.4.dev1}/src/charli3_dendrite/backend/backend_base.py +0 -0
  15. {charli3_dendrite-1.3.3.dev0 → charli3_dendrite-1.3.4.dev1}/src/charli3_dendrite/backend/blockfrost/__init__.py +0 -0
  16. {charli3_dendrite-1.3.3.dev0 → charli3_dendrite-1.3.4.dev1}/src/charli3_dendrite/backend/blockfrost/models.py +0 -0
  17. {charli3_dendrite-1.3.3.dev0 → charli3_dendrite-1.3.4.dev1}/src/charli3_dendrite/backend/dbsync/__init__.py +0 -0
  18. {charli3_dendrite-1.3.3.dev0 → charli3_dendrite-1.3.4.dev1}/src/charli3_dendrite/backend/dbsync/models.py +0 -0
  19. {charli3_dendrite-1.3.3.dev0 → charli3_dendrite-1.3.4.dev1}/src/charli3_dendrite/backend/ogmios_kupo/__init__.py +0 -0
  20. {charli3_dendrite-1.3.3.dev0 → charli3_dendrite-1.3.4.dev1}/src/charli3_dendrite/backend/ogmios_kupo/models.py +0 -0
  21. {charli3_dendrite-1.3.3.dev0 → charli3_dendrite-1.3.4.dev1}/src/charli3_dendrite/backend/utils.py +0 -0
  22. {charli3_dendrite-1.3.3.dev0 → charli3_dendrite-1.3.4.dev1}/src/charli3_dendrite/dataclasses/__init__.py +0 -0
  23. {charli3_dendrite-1.3.3.dev0 → charli3_dendrite-1.3.4.dev1}/src/charli3_dendrite/dexs/__init__.py +0 -0
  24. {charli3_dendrite-1.3.3.dev0 → charli3_dendrite-1.3.4.dev1}/src/charli3_dendrite/dexs/amm/__init__.py +0 -0
  25. {charli3_dendrite-1.3.3.dev0 → charli3_dendrite-1.3.4.dev1}/src/charli3_dendrite/dexs/amm/amm_base.py +0 -0
  26. {charli3_dendrite-1.3.3.dev0 → charli3_dendrite-1.3.4.dev1}/src/charli3_dendrite/dexs/amm/cswap.py +0 -0
  27. {charli3_dendrite-1.3.3.dev0 → charli3_dendrite-1.3.4.dev1}/src/charli3_dendrite/dexs/amm/minswap.py +0 -0
  28. {charli3_dendrite-1.3.3.dev0 → charli3_dendrite-1.3.4.dev1}/src/charli3_dendrite/dexs/amm/muesli.py +0 -0
  29. {charli3_dendrite-1.3.3.dev0 → charli3_dendrite-1.3.4.dev1}/src/charli3_dendrite/dexs/amm/vyfi.py +0 -0
  30. {charli3_dendrite-1.3.3.dev0 → charli3_dendrite-1.3.4.dev1}/src/charli3_dendrite/dexs/amm/wingriders.py +0 -0
  31. {charli3_dendrite-1.3.3.dev0 → charli3_dendrite-1.3.4.dev1}/src/charli3_dendrite/dexs/core/__init__.py +0 -0
  32. {charli3_dendrite-1.3.3.dev0 → charli3_dendrite-1.3.4.dev1}/src/charli3_dendrite/dexs/core/base.py +0 -0
  33. {charli3_dendrite-1.3.3.dev0 → charli3_dendrite-1.3.4.dev1}/src/charli3_dendrite/dexs/core/errors.py +0 -0
  34. {charli3_dendrite-1.3.3.dev0 → charli3_dendrite-1.3.4.dev1}/src/charli3_dendrite/dexs/ob/__init__.py +0 -0
  35. {charli3_dendrite-1.3.3.dev0 → charli3_dendrite-1.3.4.dev1}/src/charli3_dendrite/dexs/ob/axo.py +0 -0
  36. {charli3_dendrite-1.3.3.dev0 → charli3_dendrite-1.3.4.dev1}/src/charli3_dendrite/dexs/ob/djed.py +0 -0
  37. {charli3_dendrite-1.3.3.dev0 → charli3_dendrite-1.3.4.dev1}/src/charli3_dendrite/dexs/ob/geniusyield.py +0 -0
  38. {charli3_dendrite-1.3.3.dev0 → charli3_dendrite-1.3.4.dev1}/src/charli3_dendrite/dexs/ob/ob_base.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: charli3_dendrite
3
- Version: 1.3.3.dev0
3
+ Version: 1.3.4.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.3.3-dev0"
3
+ version = "1.3.4-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.3.3-dev0"
52
+ current_version = "1.3.4-dev1"
53
53
  parse = """(?x)
54
54
  (?P<major>\\d+)\\.
55
55
  (?P<minor>\\d+)\\.
@@ -1,4 +1,5 @@
1
1
  """Dataclasses for the different datums used in the Charli3 Dendrite project."""
2
+
2
3
  from abc import ABC
3
4
  from abc import abstractmethod
4
5
  from dataclasses import dataclass
@@ -151,12 +151,16 @@ class ScriptReference(DendriteBaseModel):
151
151
  output=TransactionOutput(
152
152
  address=Address.decode(self.address),
153
153
  amount=Value(coin=self.assets["lovelace"]),
154
- script=None
155
- if self.script is None
156
- else PlutusV2Script(bytes.fromhex(self.script)),
157
- datum=None
158
- if self.datum_cbor is None
159
- else RawPlutusData.from_cbor(self.datum_cbor),
154
+ script=(
155
+ None
156
+ if self.script is None
157
+ else PlutusV2Script(bytes.fromhex(self.script))
158
+ ),
159
+ datum=(
160
+ None
161
+ if self.datum_cbor is None
162
+ else RawPlutusData.from_cbor(self.datum_cbor)
163
+ ),
160
164
  ),
161
165
  )
162
166
  else:
@@ -1,4 +1,5 @@
1
1
  """Module providing types and state classes for AMM pools."""
2
+
2
3
  import math
3
4
  from typing import ClassVar
4
5
 
@@ -391,9 +391,11 @@ class SpectrumCPPState(AbstractConstantProductPoolState):
391
391
  raise ValueError("pool_nft is required but is None")
392
392
 
393
393
  volume_fee = int(
394
- self.volume_fee[0]
395
- if isinstance(self.volume_fee, list)
396
- else self.volume_fee or 0,
394
+ (
395
+ self.volume_fee[0]
396
+ if isinstance(self.volume_fee, list)
397
+ else self.volume_fee or 0
398
+ ),
397
399
  )
398
400
  return SpectrumOrderDatum.create_datum(
399
401
  address_source=address_source,
@@ -356,7 +356,12 @@ class SplashBaseState(AbstractPairState):
356
356
  if "pool_nft" in values and "lp_tokens" in values:
357
357
  order_class = cls.pool_datum_class()
358
358
  try:
359
- datum: SplashSSPPoolDatum | SplashCPPPoolDatum = order_class.from_cbor(
359
+ datum: (
360
+ SplashSSPPoolDatum
361
+ | SplashCPPPoolDatum
362
+ | SplashCPPRoyaltyPoolDatum
363
+ | SplashCPPBidirPoolDatum
364
+ ) = order_class.from_cbor(
360
365
  values["datum_cbor"],
361
366
  )
362
367
  except DeserializeException as err:
@@ -368,6 +373,10 @@ class SplashBaseState(AbstractPairState):
368
373
  raise NotAPoolError("Invalid LP tokens")
369
374
 
370
375
  values["assets"] = Assets.model_validate(values["assets"])
376
+ if len(values["assets"]) == 3: # noqa: PLR2004
377
+ lovelace = values["assets"].root.pop("lovelace")
378
+ values["assets"].root["lovelace"] = lovelace
379
+
371
380
  return True
372
381
 
373
382
  return False
@@ -450,13 +459,19 @@ class SplashSSPState(SplashBaseState, AbstractCommonStableSwapPoolState):
450
459
  values["fee"] = datum.lp_fee_num + datum.protocol_fee_num
451
460
 
452
461
  assets = values["assets"]
453
- assets.root[assets.unit(0)] -= datum.protocol_fee_x
454
- assets.root[assets.unit(1)] -= datum.protocol_fee_y
455
-
456
- cls.asset_mulitipliers = [
457
- datum.multiplier_x,
458
- datum.multiplier_y,
459
- ]
462
+ assets.root[datum.asset_x.assets.unit()] -= datum.protocol_fee_x
463
+ assets.root[datum.asset_y.assets.unit()] -= datum.protocol_fee_y
464
+
465
+ if datum.asset_x.assets.unit() == assets.unit():
466
+ cls.asset_mulitipliers = [
467
+ datum.multiplier_x,
468
+ datum.multiplier_y,
469
+ ]
470
+ else:
471
+ cls.asset_mulitipliers = [
472
+ datum.multiplier_y,
473
+ datum.multiplier_x,
474
+ ]
460
475
 
461
476
  # Verify pool is active
462
477
  # TODO: should be updated to match the validator:
@@ -534,7 +549,6 @@ class SplashSSPState(SplashBaseState, AbstractCommonStableSwapPoolState):
534
549
  )
535
550
 
536
551
  # Create the pool output UTxO
537
- # TODO: add protocol and fees
538
552
  assets.root[in_assets.unit()] += in_assets.quantity()
539
553
  assets.root[out_assets.unit()] -= out_assets.quantity()
540
554
  txo = TransactionOutput(
@@ -592,8 +606,8 @@ class SplashCPPState(SplashBaseState, AbstractConstantProductPoolState):
592
606
  values["fee"] = 100000 - datum.pool_fee + datum.treasury_fee
593
607
 
594
608
  assets = values["assets"]
595
- assets.root[assets.unit(0)] -= datum.treasury_x
596
- assets.root[assets.unit(1)] -= datum.treasury_y
609
+ assets.root[datum.asset_x.assets.unit()] -= datum.treasury_x
610
+ assets.root[datum.asset_y.assets.unit()] -= datum.treasury_y
597
611
 
598
612
  # Verify pool is active
599
613
  # TODO: should be updated to match the validator:
@@ -699,8 +713,8 @@ class SplashCPPState(SplashBaseState, AbstractConstantProductPoolState):
699
713
  self.pool_datum.to_cbor(),
700
714
  )
701
715
  assets = self.assets + self.pool_nft + self.lp_tokens
702
- assets.root[self.assets.unit()] += pool_datum.treasury_x
703
- assets.root[self.assets.unit(1)] += pool_datum.treasury_y
716
+ assets.root[pool_datum.asset_x.assets.unit()] += pool_datum.treasury_x
717
+ assets.root[pool_datum.asset_y.assets.unit()] += pool_datum.treasury_y
704
718
  input_utxo = UTxO(
705
719
  TransactionInput(
706
720
  transaction_id=TransactionId(bytes.fromhex(self.tx_hash)),
@@ -781,14 +795,20 @@ class SplashCPPBidirState(SplashCPPState):
781
795
  values["datum_cbor"],
782
796
  )
783
797
 
784
- values["fee"] = [
785
- (100000 - datum.pool_fee_x + datum.treasury_fee),
786
- (100000 - datum.pool_fee_y + datum.treasury_fee),
787
- ]
798
+ if datum.asset_x.assets.unit() == values["assets"].unit():
799
+ values["fee"] = [
800
+ (100000 - datum.pool_fee_x + datum.treasury_fee),
801
+ (100000 - datum.pool_fee_y + datum.treasury_fee),
802
+ ]
803
+ else:
804
+ values["fee"] = [
805
+ (100000 - datum.pool_fee_y + datum.treasury_fee),
806
+ (100000 - datum.pool_fee_x + datum.treasury_fee),
807
+ ]
788
808
 
789
809
  assets = values["assets"]
790
- assets.root[assets.unit(0)] -= datum.treasury_x
791
- assets.root[assets.unit(1)] -= datum.treasury_y
810
+ assets.root[datum.asset_x.assets.unit()] -= datum.treasury_x
811
+ assets.root[datum.asset_y.assets.unit()] -= datum.treasury_y
792
812
 
793
813
  # Verify pool is active
794
814
  values["inactive"] = assets.quantity() < LIQUIDITY_THRESHOLD
@@ -832,8 +852,8 @@ class SplashCPPRoyaltyState(SplashCPPState):
832
852
  values["fee"] += datum.royalty_fee
833
853
 
834
854
  assets = values["assets"]
835
- assets.root[assets.unit(0)] -= datum.royalty_x
836
- assets.root[assets.unit(1)] -= datum.royalty_y
855
+ assets.root[datum.asset_x.assets.unit()] -= datum.royalty_x
856
+ assets.root[datum.asset_y.assets.unit()] -= datum.royalty_y
837
857
 
838
858
  def swap_utxo(
839
859
  self,
@@ -878,10 +898,10 @@ class SplashCPPRoyaltyState(SplashCPPState):
878
898
  self.pool_datum.to_cbor(),
879
899
  )
880
900
  assets = self.assets + self.pool_nft + self.lp_tokens
881
- assets.root[self.assets.unit()] += (
901
+ assets.root[pool_datum.asset_x.assets.unit()] += (
882
902
  pool_datum.treasury_x + self.pool_datum.royalty_x
883
903
  )
884
- assets.root[self.assets.unit(1)] += (
904
+ assets.root[pool_datum.asset_y.assets.unit()] += (
885
905
  pool_datum.treasury_y + self.pool_datum.royalty_y
886
906
  )
887
907
  input_utxo = UTxO(
@@ -1,4 +1,5 @@
1
1
  """SundaeSwap DEX module."""
2
+
2
3
  import time
3
4
  from dataclasses import dataclass
4
5
  from functools import lru_cache
@@ -1,4 +1,5 @@
1
1
  """Utility functions for handling asset information."""
2
+
2
3
  import json
3
4
  from datetime import datetime
4
5
  from datetime import timedelta