charli3_dendrite 1.5.18.dev1__tar.gz → 1.5.19.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.
Files changed (155) hide show
  1. {charli3_dendrite-1.5.18.dev1 → charli3_dendrite-1.5.19.dev0}/PKG-INFO +1 -1
  2. {charli3_dendrite-1.5.18.dev1 → charli3_dendrite-1.5.19.dev0}/pyproject.toml +2 -2
  3. {charli3_dendrite-1.5.18.dev1 → charli3_dendrite-1.5.19.dev0}/src/charli3_dendrite/dexs/amm/multi_asset.py +23 -16
  4. {charli3_dendrite-1.5.18.dev1 → charli3_dendrite-1.5.19.dev0}/src/charli3_dendrite/dexs/amm/sundae_v4.py +92 -0
  5. {charli3_dendrite-1.5.18.dev1 → charli3_dendrite-1.5.19.dev0}/LICENSE +0 -0
  6. {charli3_dendrite-1.5.18.dev1 → charli3_dendrite-1.5.19.dev0}/README.md +0 -0
  7. {charli3_dendrite-1.5.18.dev1 → charli3_dendrite-1.5.19.dev0}/src/charli3_dendrite/__init__.py +0 -0
  8. {charli3_dendrite-1.5.18.dev1 → charli3_dendrite-1.5.19.dev0}/src/charli3_dendrite/backend/__init__.py +0 -0
  9. {charli3_dendrite-1.5.18.dev1 → charli3_dendrite-1.5.19.dev0}/src/charli3_dendrite/backend/backend_base.py +0 -0
  10. {charli3_dendrite-1.5.18.dev1 → charli3_dendrite-1.5.19.dev0}/src/charli3_dendrite/backend/blockfrost/__init__.py +0 -0
  11. {charli3_dendrite-1.5.18.dev1 → charli3_dendrite-1.5.19.dev0}/src/charli3_dendrite/backend/blockfrost/models.py +0 -0
  12. {charli3_dendrite-1.5.18.dev1 → charli3_dendrite-1.5.19.dev0}/src/charli3_dendrite/backend/dbsync/__init__.py +0 -0
  13. {charli3_dendrite-1.5.18.dev1 → charli3_dendrite-1.5.19.dev0}/src/charli3_dendrite/backend/dbsync/models.py +0 -0
  14. {charli3_dendrite-1.5.18.dev1 → charli3_dendrite-1.5.19.dev0}/src/charli3_dendrite/backend/ogmios_kupo/__init__.py +0 -0
  15. {charli3_dendrite-1.5.18.dev1 → charli3_dendrite-1.5.19.dev0}/src/charli3_dendrite/backend/ogmios_kupo/models.py +0 -0
  16. {charli3_dendrite-1.5.18.dev1 → charli3_dendrite-1.5.19.dev0}/src/charli3_dendrite/backend/utils.py +0 -0
  17. {charli3_dendrite-1.5.18.dev1 → charli3_dendrite-1.5.19.dev0}/src/charli3_dendrite/dataclasses/__init__.py +0 -0
  18. {charli3_dendrite-1.5.18.dev1 → charli3_dendrite-1.5.19.dev0}/src/charli3_dendrite/dataclasses/datums.py +0 -0
  19. {charli3_dendrite-1.5.18.dev1 → charli3_dendrite-1.5.19.dev0}/src/charli3_dendrite/dataclasses/models.py +0 -0
  20. {charli3_dendrite-1.5.18.dev1 → charli3_dendrite-1.5.19.dev0}/src/charli3_dendrite/dexs/__init__.py +0 -0
  21. {charli3_dendrite-1.5.18.dev1 → charli3_dendrite-1.5.19.dev0}/src/charli3_dendrite/dexs/amm/__init__.py +0 -0
  22. {charli3_dendrite-1.5.18.dev1 → charli3_dendrite-1.5.19.dev0}/src/charli3_dendrite/dexs/amm/amm_base.py +0 -0
  23. {charli3_dendrite-1.5.18.dev1 → charli3_dendrite-1.5.19.dev0}/src/charli3_dendrite/dexs/amm/amm_types.py +0 -0
  24. {charli3_dendrite-1.5.18.dev1 → charli3_dendrite-1.5.19.dev0}/src/charli3_dendrite/dexs/amm/cswap.py +0 -0
  25. {charli3_dendrite-1.5.18.dev1 → charli3_dendrite-1.5.19.dev0}/src/charli3_dendrite/dexs/amm/dano.py +0 -0
  26. {charli3_dendrite-1.5.18.dev1 → charli3_dendrite-1.5.19.dev0}/src/charli3_dendrite/dexs/amm/minswap.py +0 -0
  27. {charli3_dendrite-1.5.18.dev1 → charli3_dendrite-1.5.19.dev0}/src/charli3_dendrite/dexs/amm/muesli.py +0 -0
  28. {charli3_dendrite-1.5.18.dev1 → charli3_dendrite-1.5.19.dev0}/src/charli3_dendrite/dexs/amm/spectrum.py +0 -0
  29. {charli3_dendrite-1.5.18.dev1 → charli3_dendrite-1.5.19.dev0}/src/charli3_dendrite/dexs/amm/splash.py +0 -0
  30. {charli3_dendrite-1.5.18.dev1 → charli3_dendrite-1.5.19.dev0}/src/charli3_dendrite/dexs/amm/sundae.py +0 -0
  31. {charli3_dendrite-1.5.18.dev1 → charli3_dendrite-1.5.19.dev0}/src/charli3_dendrite/dexs/amm/sundae_v4_deployments.json +0 -0
  32. {charli3_dendrite-1.5.18.dev1 → charli3_dendrite-1.5.19.dev0}/src/charli3_dendrite/dexs/amm/sundae_v4_stableswap_math.py +0 -0
  33. {charli3_dendrite-1.5.18.dev1 → charli3_dendrite-1.5.19.dev0}/src/charli3_dendrite/dexs/amm/vyfi.py +0 -0
  34. {charli3_dendrite-1.5.18.dev1 → charli3_dendrite-1.5.19.dev0}/src/charli3_dendrite/dexs/amm/wingriders.py +0 -0
  35. {charli3_dendrite-1.5.18.dev1 → charli3_dendrite-1.5.19.dev0}/src/charli3_dendrite/dexs/core/__init__.py +0 -0
  36. {charli3_dendrite-1.5.18.dev1 → charli3_dendrite-1.5.19.dev0}/src/charli3_dendrite/dexs/core/base.py +0 -0
  37. {charli3_dendrite-1.5.18.dev1 → charli3_dendrite-1.5.19.dev0}/src/charli3_dendrite/dexs/core/errors.py +0 -0
  38. {charli3_dendrite-1.5.18.dev1 → charli3_dendrite-1.5.19.dev0}/src/charli3_dendrite/dexs/ob/__init__.py +0 -0
  39. {charli3_dendrite-1.5.18.dev1 → charli3_dendrite-1.5.19.dev0}/src/charli3_dendrite/dexs/ob/axo.py +0 -0
  40. {charli3_dendrite-1.5.18.dev1 → charli3_dendrite-1.5.19.dev0}/src/charli3_dendrite/dexs/ob/cardanoswaps.py +0 -0
  41. {charli3_dendrite-1.5.18.dev1 → charli3_dendrite-1.5.19.dev0}/src/charli3_dendrite/dexs/ob/chadswap.py +0 -0
  42. {charli3_dendrite-1.5.18.dev1 → charli3_dendrite-1.5.19.dev0}/src/charli3_dendrite/dexs/ob/djed.py +0 -0
  43. {charli3_dendrite-1.5.18.dev1 → charli3_dendrite-1.5.19.dev0}/src/charli3_dendrite/dexs/ob/geniusyield.py +0 -0
  44. {charli3_dendrite-1.5.18.dev1 → charli3_dendrite-1.5.19.dev0}/src/charli3_dendrite/dexs/ob/ob_base.py +0 -0
  45. {charli3_dendrite-1.5.18.dev1 → charli3_dendrite-1.5.19.dev0}/src/charli3_dendrite/dexs/ob/saturnswap.py +0 -0
  46. {charli3_dendrite-1.5.18.dev1 → charli3_dendrite-1.5.19.dev0}/src/charli3_dendrite/lending/__init__.py +0 -0
  47. {charli3_dendrite-1.5.18.dev1 → charli3_dendrite-1.5.19.dev0}/src/charli3_dendrite/lending/base.py +0 -0
  48. {charli3_dendrite-1.5.18.dev1 → charli3_dendrite-1.5.19.dev0}/src/charli3_dendrite/lending/danogo/__init__.py +0 -0
  49. {charli3_dendrite-1.5.18.dev1 → charli3_dendrite-1.5.19.dev0}/src/charli3_dendrite/lending/danogo/constants.py +0 -0
  50. {charli3_dendrite-1.5.18.dev1 → charli3_dendrite-1.5.19.dev0}/src/charli3_dendrite/lending/danogo/datums.py +0 -0
  51. {charli3_dendrite-1.5.18.dev1 → charli3_dendrite-1.5.19.dev0}/src/charli3_dendrite/lending/danogo/loader.py +0 -0
  52. {charli3_dendrite-1.5.18.dev1 → charli3_dendrite-1.5.19.dev0}/src/charli3_dendrite/lending/danogo/market.py +0 -0
  53. {charli3_dendrite-1.5.18.dev1 → charli3_dendrite-1.5.19.dev0}/src/charli3_dendrite/lending/danogo/math.py +0 -0
  54. {charli3_dendrite-1.5.18.dev1 → charli3_dendrite-1.5.19.dev0}/src/charli3_dendrite/lending/danogo/oracles/__init__.py +0 -0
  55. {charli3_dendrite-1.5.18.dev1 → charli3_dendrite-1.5.19.dev0}/src/charli3_dendrite/lending/danogo/oracles/aggregator.py +0 -0
  56. {charli3_dendrite-1.5.18.dev1 → charli3_dendrite-1.5.19.dev0}/src/charli3_dendrite/lending/danogo/oracles/aggregator_datums.py +0 -0
  57. {charli3_dendrite-1.5.18.dev1 → charli3_dendrite-1.5.19.dev0}/src/charli3_dendrite/lending/danogo/oracles/deployments.py +0 -0
  58. {charli3_dendrite-1.5.18.dev1 → charli3_dendrite-1.5.19.dev0}/src/charli3_dendrite/lending/danogo/oracles/forward.py +0 -0
  59. {charli3_dendrite-1.5.18.dev1 → charli3_dendrite-1.5.19.dev0}/src/charli3_dendrite/lending/danogo/oracles/leaves.py +0 -0
  60. {charli3_dendrite-1.5.18.dev1 → charli3_dendrite-1.5.19.dev0}/src/charli3_dendrite/lending/danogo/oracles/locator.py +0 -0
  61. {charli3_dendrite-1.5.18.dev1 → charli3_dendrite-1.5.19.dev0}/src/charli3_dendrite/lending/danogo/oracles/lp_pricing.py +0 -0
  62. {charli3_dendrite-1.5.18.dev1 → charli3_dendrite-1.5.19.dev0}/src/charli3_dendrite/lending/danogo/oracles/recipes.json +0 -0
  63. {charli3_dendrite-1.5.18.dev1 → charli3_dendrite-1.5.19.dev0}/src/charli3_dendrite/lending/danogo/oracles/redeemer.py +0 -0
  64. {charli3_dendrite-1.5.18.dev1 → charli3_dendrite-1.5.19.dev0}/src/charli3_dendrite/lending/danogo/oracles/reproduce.py +0 -0
  65. {charli3_dendrite-1.5.18.dev1 → charli3_dendrite-1.5.19.dev0}/src/charli3_dendrite/lending/danogo/oracles/structured_datums.py +0 -0
  66. {charli3_dendrite-1.5.18.dev1 → charli3_dendrite-1.5.19.dev0}/src/charli3_dendrite/lending/danogo/state.py +0 -0
  67. {charli3_dendrite-1.5.18.dev1 → charli3_dendrite-1.5.19.dev0}/src/charli3_dendrite/lending/danogo/transactions/__init__.py +0 -0
  68. {charli3_dendrite-1.5.18.dev1 → charli3_dendrite-1.5.19.dev0}/src/charli3_dendrite/lending/danogo/transactions/_common.py +0 -0
  69. {charli3_dendrite-1.5.18.dev1 → charli3_dendrite-1.5.19.dev0}/src/charli3_dendrite/lending/danogo/transactions/build.py +0 -0
  70. {charli3_dendrite-1.5.18.dev1 → charli3_dendrite-1.5.19.dev0}/src/charli3_dendrite/lending/danogo/transactions/builder.py +0 -0
  71. {charli3_dendrite-1.5.18.dev1 → charli3_dendrite-1.5.19.dev0}/src/charli3_dendrite/lending/danogo/transactions/context.py +0 -0
  72. {charli3_dendrite-1.5.18.dev1 → charli3_dendrite-1.5.19.dev0}/src/charli3_dendrite/lending/danogo/transactions/create_loan.py +0 -0
  73. {charli3_dendrite-1.5.18.dev1 → charli3_dendrite-1.5.19.dev0}/src/charli3_dendrite/lending/danogo/transactions/datum_synth.py +0 -0
  74. {charli3_dendrite-1.5.18.dev1 → charli3_dendrite-1.5.19.dev0}/src/charli3_dendrite/lending/danogo/transactions/increase_loan.py +0 -0
  75. {charli3_dendrite-1.5.18.dev1 → charli3_dendrite-1.5.19.dev0}/src/charli3_dendrite/lending/danogo/transactions/loan_ids.py +0 -0
  76. {charli3_dendrite-1.5.18.dev1 → charli3_dendrite-1.5.19.dev0}/src/charli3_dendrite/lending/danogo/transactions/modify_collateral.py +0 -0
  77. {charli3_dendrite-1.5.18.dev1 → charli3_dendrite-1.5.19.dev0}/src/charli3_dendrite/lending/danogo/transactions/oracle_redeemer.py +0 -0
  78. {charli3_dendrite-1.5.18.dev1 → charli3_dendrite-1.5.19.dev0}/src/charli3_dendrite/lending/danogo/transactions/oracle_synth.py +0 -0
  79. {charli3_dendrite-1.5.18.dev1 → charli3_dendrite-1.5.19.dev0}/src/charli3_dendrite/lending/danogo/transactions/redeemers.py +0 -0
  80. {charli3_dendrite-1.5.18.dev1 → charli3_dendrite-1.5.19.dev0}/src/charli3_dendrite/lending/danogo/transactions/repay.py +0 -0
  81. {charli3_dendrite-1.5.18.dev1 → charli3_dendrite-1.5.19.dev0}/src/charli3_dendrite/lending/danogo/transactions/topup_withdraw.py +0 -0
  82. {charli3_dendrite-1.5.18.dev1 → charli3_dendrite-1.5.19.dev0}/src/charli3_dendrite/lending/danogo/transactions/verify.py +0 -0
  83. {charli3_dendrite-1.5.18.dev1 → charli3_dendrite-1.5.19.dev0}/src/charli3_dendrite/lending/fluidtokens/__init__.py +0 -0
  84. {charli3_dendrite-1.5.18.dev1 → charli3_dendrite-1.5.19.dev0}/src/charli3_dendrite/lending/fluidtokens/constants.py +0 -0
  85. {charli3_dendrite-1.5.18.dev1 → charli3_dendrite-1.5.19.dev0}/src/charli3_dendrite/lending/fluidtokens/datums.py +0 -0
  86. {charli3_dendrite-1.5.18.dev1 → charli3_dendrite-1.5.19.dev0}/src/charli3_dendrite/lending/fluidtokens/loader.py +0 -0
  87. {charli3_dendrite-1.5.18.dev1 → charli3_dendrite-1.5.19.dev0}/src/charli3_dendrite/lending/fluidtokens/market.py +0 -0
  88. {charli3_dendrite-1.5.18.dev1 → charli3_dendrite-1.5.19.dev0}/src/charli3_dendrite/lending/fluidtokens/math.py +0 -0
  89. {charli3_dendrite-1.5.18.dev1 → charli3_dendrite-1.5.19.dev0}/src/charli3_dendrite/lending/fluidtokens/oracles/__init__.py +0 -0
  90. {charli3_dendrite-1.5.18.dev1 → charli3_dendrite-1.5.19.dev0}/src/charli3_dendrite/lending/fluidtokens/oracles/feeds.py +0 -0
  91. {charli3_dendrite-1.5.18.dev1 → charli3_dendrite-1.5.19.dev0}/src/charli3_dendrite/lending/fluidtokens/oracles/fluid_api.py +0 -0
  92. {charli3_dendrite-1.5.18.dev1 → charli3_dendrite-1.5.19.dev0}/src/charli3_dendrite/lending/fluidtokens/oracles/witness.py +0 -0
  93. {charli3_dendrite-1.5.18.dev1 → charli3_dendrite-1.5.19.dev0}/src/charli3_dendrite/lending/fluidtokens/state.py +0 -0
  94. {charli3_dendrite-1.5.18.dev1 → charli3_dendrite-1.5.19.dev0}/src/charli3_dendrite/lending/fluidtokens/transactions/__init__.py +0 -0
  95. {charli3_dendrite-1.5.18.dev1 → charli3_dendrite-1.5.19.dev0}/src/charli3_dendrite/lending/fluidtokens/transactions/_common.py +0 -0
  96. {charli3_dendrite-1.5.18.dev1 → charli3_dendrite-1.5.19.dev0}/src/charli3_dendrite/lending/fluidtokens/transactions/borrow.py +0 -0
  97. {charli3_dendrite-1.5.18.dev1 → charli3_dendrite-1.5.19.dev0}/src/charli3_dendrite/lending/fluidtokens/transactions/borrow_terms.py +0 -0
  98. {charli3_dendrite-1.5.18.dev1 → charli3_dendrite-1.5.19.dev0}/src/charli3_dendrite/lending/fluidtokens/transactions/builder.py +0 -0
  99. {charli3_dendrite-1.5.18.dev1 → charli3_dendrite-1.5.19.dev0}/src/charli3_dendrite/lending/fluidtokens/transactions/change_collateral.py +0 -0
  100. {charli3_dendrite-1.5.18.dev1 → charli3_dendrite-1.5.19.dev0}/src/charli3_dendrite/lending/fluidtokens/transactions/context.py +0 -0
  101. {charli3_dendrite-1.5.18.dev1 → charli3_dendrite-1.5.19.dev0}/src/charli3_dendrite/lending/fluidtokens/transactions/datum_synth.py +0 -0
  102. {charli3_dendrite-1.5.18.dev1 → charli3_dendrite-1.5.19.dev0}/src/charli3_dendrite/lending/fluidtokens/transactions/lend.py +0 -0
  103. {charli3_dendrite-1.5.18.dev1 → charli3_dendrite-1.5.19.dev0}/src/charli3_dendrite/lending/fluidtokens/transactions/pool.py +0 -0
  104. {charli3_dendrite-1.5.18.dev1 → charli3_dendrite-1.5.19.dev0}/src/charli3_dendrite/lending/fluidtokens/transactions/recast.py +0 -0
  105. {charli3_dendrite-1.5.18.dev1 → charli3_dendrite-1.5.19.dev0}/src/charli3_dendrite/lending/fluidtokens/transactions/redeemers.py +0 -0
  106. {charli3_dendrite-1.5.18.dev1 → charli3_dendrite-1.5.19.dev0}/src/charli3_dendrite/lending/fluidtokens/transactions/repay.py +0 -0
  107. {charli3_dendrite-1.5.18.dev1 → charli3_dendrite-1.5.19.dev0}/src/charli3_dendrite/lending/fluidtokens/transactions/request.py +0 -0
  108. {charli3_dendrite-1.5.18.dev1 → charli3_dendrite-1.5.19.dev0}/src/charli3_dendrite/lending/fluidtokens/transactions/resolve.py +0 -0
  109. {charli3_dendrite-1.5.18.dev1 → charli3_dendrite-1.5.19.dev0}/src/charli3_dendrite/lending/fluidtokens/transactions/utxos.py +0 -0
  110. {charli3_dendrite-1.5.18.dev1 → charli3_dendrite-1.5.19.dev0}/src/charli3_dendrite/lending/fluidtokens_v4/__init__.py +0 -0
  111. {charli3_dendrite-1.5.18.dev1 → charli3_dendrite-1.5.19.dev0}/src/charli3_dendrite/lending/fluidtokens_v4/constants.py +0 -0
  112. {charli3_dendrite-1.5.18.dev1 → charli3_dendrite-1.5.19.dev0}/src/charli3_dendrite/lending/fluidtokens_v4/datums.py +0 -0
  113. {charli3_dendrite-1.5.18.dev1 → charli3_dendrite-1.5.19.dev0}/src/charli3_dendrite/lending/fluidtokens_v4/indexing.py +0 -0
  114. {charli3_dendrite-1.5.18.dev1 → charli3_dendrite-1.5.19.dev0}/src/charli3_dendrite/lending/fluidtokens_v4/loader.py +0 -0
  115. {charli3_dendrite-1.5.18.dev1 → charli3_dendrite-1.5.19.dev0}/src/charli3_dendrite/lending/fluidtokens_v4/market.py +0 -0
  116. {charli3_dendrite-1.5.18.dev1 → charli3_dendrite-1.5.19.dev0}/src/charli3_dendrite/lending/fluidtokens_v4/rates.py +0 -0
  117. {charli3_dendrite-1.5.18.dev1 → charli3_dendrite-1.5.19.dev0}/src/charli3_dendrite/lending/fluidtokens_v4/state.py +0 -0
  118. {charli3_dendrite-1.5.18.dev1 → charli3_dendrite-1.5.19.dev0}/src/charli3_dendrite/lending/fluidtokens_v4/transactions/__init__.py +0 -0
  119. {charli3_dendrite-1.5.18.dev1 → charli3_dendrite-1.5.19.dev0}/src/charli3_dendrite/lending/fluidtokens_v4/transactions/borrow.py +0 -0
  120. {charli3_dendrite-1.5.18.dev1 → charli3_dendrite-1.5.19.dev0}/src/charli3_dendrite/lending/fluidtokens_v4/transactions/builder.py +0 -0
  121. {charli3_dendrite-1.5.18.dev1 → charli3_dendrite-1.5.19.dev0}/src/charli3_dendrite/lending/fluidtokens_v4/transactions/change_collateral.py +0 -0
  122. {charli3_dendrite-1.5.18.dev1 → charli3_dendrite-1.5.19.dev0}/src/charli3_dendrite/lending/fluidtokens_v4/transactions/claim.py +0 -0
  123. {charli3_dendrite-1.5.18.dev1 → charli3_dendrite-1.5.19.dev0}/src/charli3_dendrite/lending/fluidtokens_v4/transactions/common.py +0 -0
  124. {charli3_dendrite-1.5.18.dev1 → charli3_dendrite-1.5.19.dev0}/src/charli3_dendrite/lending/fluidtokens_v4/transactions/lender_bond.py +0 -0
  125. {charli3_dendrite-1.5.18.dev1 → charli3_dendrite-1.5.19.dev0}/src/charli3_dendrite/lending/fluidtokens_v4/transactions/loan_action.py +0 -0
  126. {charli3_dendrite-1.5.18.dev1 → charli3_dendrite-1.5.19.dev0}/src/charli3_dendrite/lending/fluidtokens_v4/transactions/loan_terms.py +0 -0
  127. {charli3_dendrite-1.5.18.dev1 → charli3_dendrite-1.5.19.dev0}/src/charli3_dendrite/lending/fluidtokens_v4/transactions/oracle.py +0 -0
  128. {charli3_dendrite-1.5.18.dev1 → charli3_dendrite-1.5.19.dev0}/src/charli3_dendrite/lending/fluidtokens_v4/transactions/pool_action.py +0 -0
  129. {charli3_dendrite-1.5.18.dev1 → charli3_dendrite-1.5.19.dev0}/src/charli3_dendrite/lending/fluidtokens_v4/transactions/pool_cancel.py +0 -0
  130. {charli3_dendrite-1.5.18.dev1 → charli3_dendrite-1.5.19.dev0}/src/charli3_dendrite/lending/fluidtokens_v4/transactions/pool_create.py +0 -0
  131. {charli3_dendrite-1.5.18.dev1 → charli3_dendrite-1.5.19.dev0}/src/charli3_dendrite/lending/fluidtokens_v4/transactions/pool_edit.py +0 -0
  132. {charli3_dendrite-1.5.18.dev1 → charli3_dendrite-1.5.19.dev0}/src/charli3_dendrite/lending/fluidtokens_v4/transactions/pool_terms.py +0 -0
  133. {charli3_dendrite-1.5.18.dev1 → charli3_dendrite-1.5.19.dev0}/src/charli3_dendrite/lending/fluidtokens_v4/transactions/recast.py +0 -0
  134. {charli3_dendrite-1.5.18.dev1 → charli3_dendrite-1.5.19.dev0}/src/charli3_dendrite/lending/fluidtokens_v4/transactions/redeemers.py +0 -0
  135. {charli3_dendrite-1.5.18.dev1 → charli3_dendrite-1.5.19.dev0}/src/charli3_dendrite/lending/fluidtokens_v4/transactions/repay.py +0 -0
  136. {charli3_dendrite-1.5.18.dev1 → charli3_dendrite-1.5.19.dev0}/src/charli3_dendrite/lending/fluidtokens_v4/transactions/resolve.py +0 -0
  137. {charli3_dendrite-1.5.18.dev1 → charli3_dendrite-1.5.19.dev0}/src/charli3_dendrite/lending/markets.py +0 -0
  138. {charli3_dendrite-1.5.18.dev1 → charli3_dendrite-1.5.19.dev0}/src/charli3_dendrite/lending/math.py +0 -0
  139. {charli3_dendrite-1.5.18.dev1 → charli3_dendrite-1.5.19.dev0}/src/charli3_dendrite/lending/normalized.py +0 -0
  140. {charli3_dendrite-1.5.18.dev1 → charli3_dendrite-1.5.19.dev0}/src/charli3_dendrite/lending/oracles/__init__.py +0 -0
  141. {charli3_dendrite-1.5.18.dev1 → charli3_dendrite-1.5.19.dev0}/src/charli3_dendrite/lending/oracles/charli3.py +0 -0
  142. {charli3_dendrite-1.5.18.dev1 → charli3_dendrite-1.5.19.dev0}/src/charli3_dendrite/lending/oracles/dex_pooled.py +0 -0
  143. {charli3_dendrite-1.5.18.dev1 → charli3_dendrite-1.5.19.dev0}/src/charli3_dendrite/lending/oracles/fluid.py +0 -0
  144. {charli3_dendrite-1.5.18.dev1 → charli3_dendrite-1.5.19.dev0}/src/charli3_dendrite/lending/oracles/models.py +0 -0
  145. {charli3_dendrite-1.5.18.dev1 → charli3_dendrite-1.5.19.dev0}/src/charli3_dendrite/lending/oracles/orcfax.py +0 -0
  146. {charli3_dendrite-1.5.18.dev1 → charli3_dendrite-1.5.19.dev0}/src/charli3_dendrite/lending/oracles/qtoken.py +0 -0
  147. {charli3_dendrite-1.5.18.dev1 → charli3_dendrite-1.5.19.dev0}/src/charli3_dendrite/lending/plutus.py +0 -0
  148. {charli3_dendrite-1.5.18.dev1 → charli3_dendrite-1.5.19.dev0}/src/charli3_dendrite/lending/rates.py +0 -0
  149. {charli3_dendrite-1.5.18.dev1 → charli3_dendrite-1.5.19.dev0}/src/charli3_dendrite/lending/registry.py +0 -0
  150. {charli3_dendrite-1.5.18.dev1 → charli3_dendrite-1.5.19.dev0}/src/charli3_dendrite/lending/transactions/__init__.py +0 -0
  151. {charli3_dendrite-1.5.18.dev1 → charli3_dendrite-1.5.19.dev0}/src/charli3_dendrite/lending/transactions/base.py +0 -0
  152. {charli3_dendrite-1.5.18.dev1 → charli3_dendrite-1.5.19.dev0}/src/charli3_dendrite/lending/transactions/infra.py +0 -0
  153. {charli3_dendrite-1.5.18.dev1 → charli3_dendrite-1.5.19.dev0}/src/charli3_dendrite/lending/transactions/snapshot.py +0 -0
  154. {charli3_dendrite-1.5.18.dev1 → charli3_dendrite-1.5.19.dev0}/src/charli3_dendrite/lending/units.py +0 -0
  155. {charli3_dendrite-1.5.18.dev1 → charli3_dendrite-1.5.19.dev0}/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.5.18.dev1
3
+ Version: 1.5.19.dev0
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.5.18-dev1"
3
+ version = "1.5.19-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.18-dev1"
53
+ current_version = "1.5.19-dev0"
54
54
  parse = """(?x)
55
55
  (?P<major>\\d+)\\.
56
56
  (?P<minor>\\d+)\\.
@@ -127,6 +127,22 @@ class AbstractMultiAssetPoolState(DendriteBaseModel, ABC):
127
127
  """
128
128
  return self.reserves.root[unit]
129
129
 
130
+ def _order_output(
131
+ self,
132
+ in_assets: Assets,
133
+ fee: int,
134
+ rider: int,
135
+ order_datum: PlutusData,
136
+ ) -> TransactionOutput:
137
+ """The order output: in_assets plus fee and rider lovelace, an inline datum."""
138
+ value = Assets(**dict(in_assets.root))
139
+ value.root["lovelace"] = value.root.get("lovelace", 0) + fee + rider
140
+ return TransactionOutput(
141
+ address=self.stake_address,
142
+ amount=asset_to_value(value),
143
+ datum=order_datum,
144
+ )
145
+
130
146
  def swap_utxo(
131
147
  self,
132
148
  address_source: Address,
@@ -152,19 +168,10 @@ class AbstractMultiAssetPoolState(DendriteBaseModel, ABC):
152
168
  address_target=address_target,
153
169
  datum_target=datum_target,
154
170
  )
155
- value = Assets(**dict(in_assets.root))
156
- value.root["lovelace"] = (
157
- value.root.get("lovelace", 0)
158
- + self.batcher_fee(
159
- in_assets=in_assets,
160
- out_assets=out_assets,
161
- extra_assets=extra_assets,
162
- ).quantity()
163
- + self.deposit(in_assets=in_assets, out_assets=out_assets).quantity()
164
- )
165
- output = TransactionOutput(
166
- address=self.stake_address,
167
- amount=asset_to_value(value),
168
- datum=order_datum,
169
- )
170
- return output, order_datum
171
+ fee = self.batcher_fee(
172
+ in_assets=in_assets,
173
+ out_assets=out_assets,
174
+ extra_assets=extra_assets,
175
+ ).quantity()
176
+ rider = self.deposit(in_assets=in_assets, out_assets=out_assets).quantity()
177
+ return self._order_output(in_assets, fee, rider, order_datum), order_datum
@@ -84,6 +84,7 @@ from pycardano import RawPlutusData
84
84
  from pycardano import Redeemer
85
85
  from pycardano import ScriptHash
86
86
  from pycardano import TransactionBuilder
87
+ from pycardano import TransactionOutput
87
88
  from pycardano import UTxO
88
89
  from pycardano import VerificationKeyHash
89
90
  from pycardano.serialization import CBORTag
@@ -1665,6 +1666,13 @@ _DEPLOYMENTS_RESOURCE = "sundae_v4_deployments.json"
1665
1666
  # payout output and is returned with the fill (or the cancel).
1666
1667
  _ORDER_RIDER = 2_000_000
1667
1668
 
1669
+ # The scooper's charge, beyond the flat base fee, for routing one basic order
1670
+ # across several vaults: each vault beyond the first costs ROUTE_EXTRA_POOL_FEE
1671
+ # and each hop beyond the first ROUTE_EXTRA_HOP_FEE (lovelace). A straight path
1672
+ # over k vaults has k pools and k hops.
1673
+ ROUTE_EXTRA_POOL_FEE = 1_000_000
1674
+ ROUTE_EXTRA_HOP_FEE = 500_000
1675
+
1668
1676
  # How long a live (or fallback) SundaeV4Vault.base_fee() reading is cached, per
1669
1677
  # network, before the fee-settings node is read again.
1670
1678
  _BASE_FEE_TTL_S = 300
@@ -2108,6 +2116,38 @@ class SundaeV4Vault(DendriteBaseModel):
2108
2116
  cls._base_fee_cache[deployment.network] = (fee, now)
2109
2117
  return fee
2110
2118
 
2119
+ @classmethod
2120
+ def route_fee_budget(
2121
+ cls,
2122
+ pools: int,
2123
+ hops: int,
2124
+ *,
2125
+ base_fee: int | None = None,
2126
+ ) -> int:
2127
+ """The fee budget a basic order needs for the scooper to route it.
2128
+
2129
+ ``base_fee + (pools - 1) * ROUTE_EXTRA_POOL_FEE + (hops - 1) *
2130
+ ROUTE_EXTRA_HOP_FEE``: one vault on one hop is the flat base fee; a
2131
+ straight path over ``k`` vaults has ``pools == hops == k``. Set the
2132
+ order's ``service_budget`` and ``max_per_execution`` to it (and lock it)
2133
+ for a multi-vault fill. ``base_fee`` defaults to the live
2134
+ :meth:`base_fee`; pass the value a quote was priced at to reuse it.
2135
+
2136
+ Raises:
2137
+ ValueError: ``pools`` or ``hops`` is below one, or ``hops`` exceeds
2138
+ ``pools`` (every hop crosses at least one vault).
2139
+ """
2140
+ if pools < 1 or hops < 1 or hops > pools:
2141
+ msg = (
2142
+ f"A route crosses at least one vault per hop: "
2143
+ f"pools={pools}, hops={hops}."
2144
+ )
2145
+ raise ValueError(msg)
2146
+ fee = cls.base_fee() if base_fee is None else base_fee
2147
+ return (
2148
+ fee + (pools - 1) * ROUTE_EXTRA_POOL_FEE + (hops - 1) * ROUTE_EXTRA_HOP_FEE
2149
+ )
2150
+
2111
2151
  @classmethod
2112
2152
  def dex(cls) -> str:
2113
2153
  """Get the DEX name."""
@@ -2775,6 +2815,15 @@ class _SundaeV4BoundPool(_SundaeV4OrderBuilders):
2775
2815
  tag: int
2776
2816
  reserves: Assets
2777
2817
 
2818
+ def _order_output(
2819
+ self,
2820
+ in_assets: Assets,
2821
+ fee: int,
2822
+ rider: int,
2823
+ order_datum: PlutusData,
2824
+ ) -> TransactionOutput:
2825
+ ...
2826
+
2778
2827
  _deposit_rider: ClassVar[Assets] = Assets(lovelace=_ORDER_RIDER)
2779
2828
 
2780
2829
  @classmethod
@@ -2819,6 +2868,49 @@ class _SundaeV4BoundPool(_SundaeV4OrderBuilders):
2819
2868
  """The lovelace rider returned with the order's payout."""
2820
2869
  return self._deposit_rider
2821
2870
 
2871
+ def swap_utxo(
2872
+ self,
2873
+ address_source: Address,
2874
+ in_assets: Assets,
2875
+ out_assets: Assets,
2876
+ extra_assets: Assets | None = None,
2877
+ address_target: Address | None = None,
2878
+ datum_target: PlutusData | None = None,
2879
+ *,
2880
+ fee_budget: int | None = None,
2881
+ ) -> tuple[TransactionOutput, PlutusData]:
2882
+ """The order output for a swap: input + fee budget + rider, inline datum.
2883
+
2884
+ Unset, ``fee_budget`` is the live base fee: the order budgets and locks
2885
+ exactly one vault's execution. Set, the datum's ``service_budget`` and
2886
+ ``max_per_execution`` are both ``fee_budget`` and the order locks it: the
2887
+ budget a multi-vault route needs (:meth:`SundaeV4Vault.route_fee_budget`).
2888
+
2889
+ Raises:
2890
+ ValueError: more than one asset offered or asked, or ``fee_budget``
2891
+ below the live base fee (the scooper never includes such an order).
2892
+ """
2893
+ if len(in_assets) != 1 or len(out_assets) != 1:
2894
+ msg = "Only one asset can be supplied as input, and one asset as output."
2895
+ raise ValueError(msg)
2896
+ base_fee = SundaeV4Vault.base_fee()
2897
+ if fee_budget is not None and fee_budget < base_fee:
2898
+ msg = f"A fee budget of {fee_budget} is below the base fee {base_fee}."
2899
+ raise ValueError(msg)
2900
+ order_datum = self.swap_datum(
2901
+ address_source=address_source,
2902
+ in_assets=in_assets,
2903
+ out_assets=out_assets,
2904
+ extra_assets=extra_assets,
2905
+ address_target=address_target,
2906
+ datum_target=datum_target,
2907
+ service_budget=fee_budget,
2908
+ max_per_execution=fee_budget,
2909
+ )
2910
+ fee = base_fee if fee_budget is None else fee_budget
2911
+ rider = self.deposit(in_assets=in_assets, out_assets=out_assets).quantity()
2912
+ return self._order_output(in_assets, fee, rider, order_datum), order_datum
2913
+
2822
2914
  def apply_swap(self, asset_in: Assets, asset_out: Assets) -> None:
2823
2915
  """Move every touched reserve as if the swap settled.
2824
2916