prediction-market-agent-tooling 0.63.1__tar.gz → 0.63.3__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 (127) hide show
  1. {prediction_market_agent_tooling-0.63.1 → prediction_market_agent_tooling-0.63.3}/PKG-INFO +1 -1
  2. {prediction_market_agent_tooling-0.63.1 → prediction_market_agent_tooling-0.63.3}/prediction_market_agent_tooling/markets/seer/price_manager.py +26 -1
  3. {prediction_market_agent_tooling-0.63.1 → prediction_market_agent_tooling-0.63.3}/prediction_market_agent_tooling/markets/seer/seer.py +32 -3
  4. {prediction_market_agent_tooling-0.63.1 → prediction_market_agent_tooling-0.63.3}/prediction_market_agent_tooling/tools/_generic_value.py +3 -0
  5. {prediction_market_agent_tooling-0.63.1 → prediction_market_agent_tooling-0.63.3}/prediction_market_agent_tooling/tools/cow/cow_order.py +2 -2
  6. {prediction_market_agent_tooling-0.63.1 → prediction_market_agent_tooling-0.63.3}/prediction_market_agent_tooling/tools/tokens/usd.py +2 -2
  7. {prediction_market_agent_tooling-0.63.1 → prediction_market_agent_tooling-0.63.3}/pyproject.toml +1 -1
  8. {prediction_market_agent_tooling-0.63.1 → prediction_market_agent_tooling-0.63.3}/LICENSE +0 -0
  9. {prediction_market_agent_tooling-0.63.1 → prediction_market_agent_tooling-0.63.3}/README.md +0 -0
  10. {prediction_market_agent_tooling-0.63.1 → prediction_market_agent_tooling-0.63.3}/prediction_market_agent_tooling/abis/debuggingcontract.abi.json +0 -0
  11. {prediction_market_agent_tooling-0.63.1 → prediction_market_agent_tooling-0.63.3}/prediction_market_agent_tooling/abis/depositablewrapper_erc20.abi.json +0 -0
  12. {prediction_market_agent_tooling-0.63.1 → prediction_market_agent_tooling-0.63.3}/prediction_market_agent_tooling/abis/erc20.abi.json +0 -0
  13. {prediction_market_agent_tooling-0.63.1 → prediction_market_agent_tooling-0.63.3}/prediction_market_agent_tooling/abis/erc4626.abi.json +0 -0
  14. {prediction_market_agent_tooling-0.63.1 → prediction_market_agent_tooling-0.63.3}/prediction_market_agent_tooling/abis/erc721.abi.json +0 -0
  15. {prediction_market_agent_tooling-0.63.1 → prediction_market_agent_tooling-0.63.3}/prediction_market_agent_tooling/abis/omen_agentresultmapping.abi.json +0 -0
  16. {prediction_market_agent_tooling-0.63.1 → prediction_market_agent_tooling-0.63.3}/prediction_market_agent_tooling/abis/omen_dxdao.abi.json +0 -0
  17. {prediction_market_agent_tooling-0.63.1 → prediction_market_agent_tooling-0.63.3}/prediction_market_agent_tooling/abis/omen_fpmm.abi.json +0 -0
  18. {prediction_market_agent_tooling-0.63.1 → prediction_market_agent_tooling-0.63.3}/prediction_market_agent_tooling/abis/omen_fpmm_conditionaltokens.abi.json +0 -0
  19. {prediction_market_agent_tooling-0.63.1 → prediction_market_agent_tooling-0.63.3}/prediction_market_agent_tooling/abis/omen_fpmm_factory.abi.json +0 -0
  20. {prediction_market_agent_tooling-0.63.1 → prediction_market_agent_tooling-0.63.3}/prediction_market_agent_tooling/abis/omen_kleros.abi.json +0 -0
  21. {prediction_market_agent_tooling-0.63.1 → prediction_market_agent_tooling-0.63.3}/prediction_market_agent_tooling/abis/omen_oracle.abi.json +0 -0
  22. {prediction_market_agent_tooling-0.63.1 → prediction_market_agent_tooling-0.63.3}/prediction_market_agent_tooling/abis/omen_realitio.abi.json +0 -0
  23. {prediction_market_agent_tooling-0.63.1 → prediction_market_agent_tooling-0.63.3}/prediction_market_agent_tooling/abis/omen_thumbnailmapping.abi.json +0 -0
  24. {prediction_market_agent_tooling-0.63.1 → prediction_market_agent_tooling-0.63.3}/prediction_market_agent_tooling/abis/ownable.abi.json +0 -0
  25. {prediction_market_agent_tooling-0.63.1 → prediction_market_agent_tooling-0.63.3}/prediction_market_agent_tooling/abis/ownable_erc721.abi.json +0 -0
  26. {prediction_market_agent_tooling-0.63.1 → prediction_market_agent_tooling-0.63.3}/prediction_market_agent_tooling/abis/proxy.abi.json +0 -0
  27. {prediction_market_agent_tooling-0.63.1 → prediction_market_agent_tooling-0.63.3}/prediction_market_agent_tooling/abis/seer_market_factory.abi.json +0 -0
  28. {prediction_market_agent_tooling-0.63.1 → prediction_market_agent_tooling-0.63.3}/prediction_market_agent_tooling/benchmark/__init__.py +0 -0
  29. {prediction_market_agent_tooling-0.63.1 → prediction_market_agent_tooling-0.63.3}/prediction_market_agent_tooling/benchmark/agents.py +0 -0
  30. {prediction_market_agent_tooling-0.63.1 → prediction_market_agent_tooling-0.63.3}/prediction_market_agent_tooling/benchmark/benchmark.py +0 -0
  31. {prediction_market_agent_tooling-0.63.1 → prediction_market_agent_tooling-0.63.3}/prediction_market_agent_tooling/benchmark/utils.py +0 -0
  32. {prediction_market_agent_tooling-0.63.1 → prediction_market_agent_tooling-0.63.3}/prediction_market_agent_tooling/config.py +0 -0
  33. {prediction_market_agent_tooling-0.63.1 → prediction_market_agent_tooling-0.63.3}/prediction_market_agent_tooling/deploy/agent.py +0 -0
  34. {prediction_market_agent_tooling-0.63.1 → prediction_market_agent_tooling-0.63.3}/prediction_market_agent_tooling/deploy/agent_example.py +0 -0
  35. {prediction_market_agent_tooling-0.63.1 → prediction_market_agent_tooling-0.63.3}/prediction_market_agent_tooling/deploy/betting_strategy.py +0 -0
  36. {prediction_market_agent_tooling-0.63.1 → prediction_market_agent_tooling-0.63.3}/prediction_market_agent_tooling/deploy/constants.py +0 -0
  37. {prediction_market_agent_tooling-0.63.1 → prediction_market_agent_tooling-0.63.3}/prediction_market_agent_tooling/deploy/gcp/deploy.py +0 -0
  38. {prediction_market_agent_tooling-0.63.1 → prediction_market_agent_tooling-0.63.3}/prediction_market_agent_tooling/deploy/gcp/kubernetes_models.py +0 -0
  39. {prediction_market_agent_tooling-0.63.1 → prediction_market_agent_tooling-0.63.3}/prediction_market_agent_tooling/deploy/gcp/utils.py +0 -0
  40. {prediction_market_agent_tooling-0.63.1 → prediction_market_agent_tooling-0.63.3}/prediction_market_agent_tooling/deploy/trade_interval.py +0 -0
  41. {prediction_market_agent_tooling-0.63.1 → prediction_market_agent_tooling-0.63.3}/prediction_market_agent_tooling/gtypes.py +0 -0
  42. {prediction_market_agent_tooling-0.63.1 → prediction_market_agent_tooling-0.63.3}/prediction_market_agent_tooling/jobs/__init__.py +0 -0
  43. {prediction_market_agent_tooling-0.63.1 → prediction_market_agent_tooling-0.63.3}/prediction_market_agent_tooling/jobs/jobs_models.py +0 -0
  44. {prediction_market_agent_tooling-0.63.1 → prediction_market_agent_tooling-0.63.3}/prediction_market_agent_tooling/jobs/omen/omen_jobs.py +0 -0
  45. {prediction_market_agent_tooling-0.63.1 → prediction_market_agent_tooling-0.63.3}/prediction_market_agent_tooling/loggers.py +0 -0
  46. {prediction_market_agent_tooling-0.63.1 → prediction_market_agent_tooling-0.63.3}/prediction_market_agent_tooling/markets/agent_market.py +0 -0
  47. {prediction_market_agent_tooling-0.63.1 → prediction_market_agent_tooling-0.63.3}/prediction_market_agent_tooling/markets/base_subgraph_handler.py +0 -0
  48. {prediction_market_agent_tooling-0.63.1 → prediction_market_agent_tooling-0.63.3}/prediction_market_agent_tooling/markets/blockchain_utils.py +0 -0
  49. {prediction_market_agent_tooling-0.63.1 → prediction_market_agent_tooling-0.63.3}/prediction_market_agent_tooling/markets/categorize.py +0 -0
  50. {prediction_market_agent_tooling-0.63.1 → prediction_market_agent_tooling-0.63.3}/prediction_market_agent_tooling/markets/data_models.py +0 -0
  51. {prediction_market_agent_tooling-0.63.1 → prediction_market_agent_tooling-0.63.3}/prediction_market_agent_tooling/markets/manifold/__init__.py +0 -0
  52. {prediction_market_agent_tooling-0.63.1 → prediction_market_agent_tooling-0.63.3}/prediction_market_agent_tooling/markets/manifold/api.py +0 -0
  53. {prediction_market_agent_tooling-0.63.1 → prediction_market_agent_tooling-0.63.3}/prediction_market_agent_tooling/markets/manifold/data_models.py +0 -0
  54. {prediction_market_agent_tooling-0.63.1 → prediction_market_agent_tooling-0.63.3}/prediction_market_agent_tooling/markets/manifold/manifold.py +0 -0
  55. {prediction_market_agent_tooling-0.63.1 → prediction_market_agent_tooling-0.63.3}/prediction_market_agent_tooling/markets/manifold/utils.py +0 -0
  56. {prediction_market_agent_tooling-0.63.1 → prediction_market_agent_tooling-0.63.3}/prediction_market_agent_tooling/markets/market_fees.py +0 -0
  57. {prediction_market_agent_tooling-0.63.1 → prediction_market_agent_tooling-0.63.3}/prediction_market_agent_tooling/markets/markets.py +0 -0
  58. {prediction_market_agent_tooling-0.63.1 → prediction_market_agent_tooling-0.63.3}/prediction_market_agent_tooling/markets/metaculus/api.py +0 -0
  59. {prediction_market_agent_tooling-0.63.1 → prediction_market_agent_tooling-0.63.3}/prediction_market_agent_tooling/markets/metaculus/data_models.py +0 -0
  60. {prediction_market_agent_tooling-0.63.1 → prediction_market_agent_tooling-0.63.3}/prediction_market_agent_tooling/markets/metaculus/metaculus.py +0 -0
  61. {prediction_market_agent_tooling-0.63.1 → prediction_market_agent_tooling-0.63.3}/prediction_market_agent_tooling/markets/omen/__init__.py +0 -0
  62. {prediction_market_agent_tooling-0.63.1 → prediction_market_agent_tooling-0.63.3}/prediction_market_agent_tooling/markets/omen/data_models.py +0 -0
  63. {prediction_market_agent_tooling-0.63.1 → prediction_market_agent_tooling-0.63.3}/prediction_market_agent_tooling/markets/omen/omen.py +0 -0
  64. {prediction_market_agent_tooling-0.63.1 → prediction_market_agent_tooling-0.63.3}/prediction_market_agent_tooling/markets/omen/omen_constants.py +0 -0
  65. {prediction_market_agent_tooling-0.63.1 → prediction_market_agent_tooling-0.63.3}/prediction_market_agent_tooling/markets/omen/omen_contracts.py +0 -0
  66. {prediction_market_agent_tooling-0.63.1 → prediction_market_agent_tooling-0.63.3}/prediction_market_agent_tooling/markets/omen/omen_resolving.py +0 -0
  67. {prediction_market_agent_tooling-0.63.1 → prediction_market_agent_tooling-0.63.3}/prediction_market_agent_tooling/markets/omen/omen_subgraph_handler.py +0 -0
  68. {prediction_market_agent_tooling-0.63.1 → prediction_market_agent_tooling-0.63.3}/prediction_market_agent_tooling/markets/polymarket/api.py +0 -0
  69. {prediction_market_agent_tooling-0.63.1 → prediction_market_agent_tooling-0.63.3}/prediction_market_agent_tooling/markets/polymarket/data_models.py +0 -0
  70. {prediction_market_agent_tooling-0.63.1 → prediction_market_agent_tooling-0.63.3}/prediction_market_agent_tooling/markets/polymarket/data_models_web.py +0 -0
  71. {prediction_market_agent_tooling-0.63.1 → prediction_market_agent_tooling-0.63.3}/prediction_market_agent_tooling/markets/polymarket/polymarket.py +0 -0
  72. {prediction_market_agent_tooling-0.63.1 → prediction_market_agent_tooling-0.63.3}/prediction_market_agent_tooling/markets/polymarket/utils.py +0 -0
  73. {prediction_market_agent_tooling-0.63.1 → prediction_market_agent_tooling-0.63.3}/prediction_market_agent_tooling/markets/seer/data_models.py +0 -0
  74. {prediction_market_agent_tooling-0.63.1 → prediction_market_agent_tooling-0.63.3}/prediction_market_agent_tooling/markets/seer/seer_contracts.py +0 -0
  75. {prediction_market_agent_tooling-0.63.1 → prediction_market_agent_tooling-0.63.3}/prediction_market_agent_tooling/markets/seer/seer_subgraph_handler.py +0 -0
  76. {prediction_market_agent_tooling-0.63.1 → prediction_market_agent_tooling-0.63.3}/prediction_market_agent_tooling/markets/seer/subgraph_data_models.py +0 -0
  77. {prediction_market_agent_tooling-0.63.1 → prediction_market_agent_tooling-0.63.3}/prediction_market_agent_tooling/monitor/financial_metrics/financial_metrics.py +0 -0
  78. {prediction_market_agent_tooling-0.63.1 → prediction_market_agent_tooling-0.63.3}/prediction_market_agent_tooling/monitor/markets/manifold.py +0 -0
  79. {prediction_market_agent_tooling-0.63.1 → prediction_market_agent_tooling-0.63.3}/prediction_market_agent_tooling/monitor/markets/metaculus.py +0 -0
  80. {prediction_market_agent_tooling-0.63.1 → prediction_market_agent_tooling-0.63.3}/prediction_market_agent_tooling/monitor/markets/omen.py +0 -0
  81. {prediction_market_agent_tooling-0.63.1 → prediction_market_agent_tooling-0.63.3}/prediction_market_agent_tooling/monitor/markets/polymarket.py +0 -0
  82. {prediction_market_agent_tooling-0.63.1 → prediction_market_agent_tooling-0.63.3}/prediction_market_agent_tooling/monitor/monitor.py +0 -0
  83. {prediction_market_agent_tooling-0.63.1 → prediction_market_agent_tooling-0.63.3}/prediction_market_agent_tooling/monitor/monitor_app.py +0 -0
  84. {prediction_market_agent_tooling-0.63.1 → prediction_market_agent_tooling-0.63.3}/prediction_market_agent_tooling/monitor/monitor_settings.py +0 -0
  85. {prediction_market_agent_tooling-0.63.1 → prediction_market_agent_tooling-0.63.3}/prediction_market_agent_tooling/py.typed +0 -0
  86. {prediction_market_agent_tooling-0.63.1 → prediction_market_agent_tooling-0.63.3}/prediction_market_agent_tooling/tools/balances.py +0 -0
  87. {prediction_market_agent_tooling-0.63.1 → prediction_market_agent_tooling-0.63.3}/prediction_market_agent_tooling/tools/betting_strategies/kelly_criterion.py +0 -0
  88. {prediction_market_agent_tooling-0.63.1 → prediction_market_agent_tooling-0.63.3}/prediction_market_agent_tooling/tools/betting_strategies/market_moving.py +0 -0
  89. {prediction_market_agent_tooling-0.63.1 → prediction_market_agent_tooling-0.63.3}/prediction_market_agent_tooling/tools/betting_strategies/minimum_bet_to_win.py +0 -0
  90. {prediction_market_agent_tooling-0.63.1 → prediction_market_agent_tooling-0.63.3}/prediction_market_agent_tooling/tools/betting_strategies/stretch_bet_between.py +0 -0
  91. {prediction_market_agent_tooling-0.63.1 → prediction_market_agent_tooling-0.63.3}/prediction_market_agent_tooling/tools/betting_strategies/utils.py +0 -0
  92. {prediction_market_agent_tooling-0.63.1 → prediction_market_agent_tooling-0.63.3}/prediction_market_agent_tooling/tools/caches/db_cache.py +0 -0
  93. {prediction_market_agent_tooling-0.63.1 → prediction_market_agent_tooling-0.63.3}/prediction_market_agent_tooling/tools/caches/inmemory_cache.py +0 -0
  94. {prediction_market_agent_tooling-0.63.1 → prediction_market_agent_tooling-0.63.3}/prediction_market_agent_tooling/tools/caches/serializers.py +0 -0
  95. {prediction_market_agent_tooling-0.63.1 → prediction_market_agent_tooling-0.63.3}/prediction_market_agent_tooling/tools/contract.py +0 -0
  96. {prediction_market_agent_tooling-0.63.1 → prediction_market_agent_tooling-0.63.3}/prediction_market_agent_tooling/tools/costs.py +0 -0
  97. {prediction_market_agent_tooling-0.63.1 → prediction_market_agent_tooling-0.63.3}/prediction_market_agent_tooling/tools/custom_exceptions.py +0 -0
  98. {prediction_market_agent_tooling-0.63.1 → prediction_market_agent_tooling-0.63.3}/prediction_market_agent_tooling/tools/datetime_utc.py +0 -0
  99. {prediction_market_agent_tooling-0.63.1 → prediction_market_agent_tooling-0.63.3}/prediction_market_agent_tooling/tools/db/db_manager.py +0 -0
  100. {prediction_market_agent_tooling-0.63.1 → prediction_market_agent_tooling-0.63.3}/prediction_market_agent_tooling/tools/google_utils.py +0 -0
  101. {prediction_market_agent_tooling-0.63.1 → prediction_market_agent_tooling-0.63.3}/prediction_market_agent_tooling/tools/hexbytes_custom.py +0 -0
  102. {prediction_market_agent_tooling-0.63.1 → prediction_market_agent_tooling-0.63.3}/prediction_market_agent_tooling/tools/httpx_cached_client.py +0 -0
  103. {prediction_market_agent_tooling-0.63.1 → prediction_market_agent_tooling-0.63.3}/prediction_market_agent_tooling/tools/image_gen/image_gen.py +0 -0
  104. {prediction_market_agent_tooling-0.63.1 → prediction_market_agent_tooling-0.63.3}/prediction_market_agent_tooling/tools/image_gen/market_thumbnail_gen.py +0 -0
  105. {prediction_market_agent_tooling-0.63.1 → prediction_market_agent_tooling-0.63.3}/prediction_market_agent_tooling/tools/ipfs/ipfs_handler.py +0 -0
  106. {prediction_market_agent_tooling-0.63.1 → prediction_market_agent_tooling-0.63.3}/prediction_market_agent_tooling/tools/is_invalid.py +0 -0
  107. {prediction_market_agent_tooling-0.63.1 → prediction_market_agent_tooling-0.63.3}/prediction_market_agent_tooling/tools/is_predictable.py +0 -0
  108. {prediction_market_agent_tooling-0.63.1 → prediction_market_agent_tooling-0.63.3}/prediction_market_agent_tooling/tools/langfuse_.py +0 -0
  109. {prediction_market_agent_tooling-0.63.1 → prediction_market_agent_tooling-0.63.3}/prediction_market_agent_tooling/tools/langfuse_client_utils.py +0 -0
  110. {prediction_market_agent_tooling-0.63.1 → prediction_market_agent_tooling-0.63.3}/prediction_market_agent_tooling/tools/omen/reality_accuracy.py +0 -0
  111. {prediction_market_agent_tooling-0.63.1 → prediction_market_agent_tooling-0.63.3}/prediction_market_agent_tooling/tools/omen/sell_positions.py +0 -0
  112. {prediction_market_agent_tooling-0.63.1 → prediction_market_agent_tooling-0.63.3}/prediction_market_agent_tooling/tools/parallelism.py +0 -0
  113. {prediction_market_agent_tooling-0.63.1 → prediction_market_agent_tooling-0.63.3}/prediction_market_agent_tooling/tools/relevant_news_analysis/data_models.py +0 -0
  114. {prediction_market_agent_tooling-0.63.1 → prediction_market_agent_tooling-0.63.3}/prediction_market_agent_tooling/tools/relevant_news_analysis/relevant_news_analysis.py +0 -0
  115. {prediction_market_agent_tooling-0.63.1 → prediction_market_agent_tooling-0.63.3}/prediction_market_agent_tooling/tools/relevant_news_analysis/relevant_news_cache.py +0 -0
  116. {prediction_market_agent_tooling-0.63.1 → prediction_market_agent_tooling-0.63.3}/prediction_market_agent_tooling/tools/safe.py +0 -0
  117. {prediction_market_agent_tooling-0.63.1 → prediction_market_agent_tooling-0.63.3}/prediction_market_agent_tooling/tools/singleton.py +0 -0
  118. {prediction_market_agent_tooling-0.63.1 → prediction_market_agent_tooling-0.63.3}/prediction_market_agent_tooling/tools/streamlit_user_login.py +0 -0
  119. {prediction_market_agent_tooling-0.63.1 → prediction_market_agent_tooling-0.63.3}/prediction_market_agent_tooling/tools/tavily/tavily_models.py +0 -0
  120. {prediction_market_agent_tooling-0.63.1 → prediction_market_agent_tooling-0.63.3}/prediction_market_agent_tooling/tools/tavily/tavily_search.py +0 -0
  121. {prediction_market_agent_tooling-0.63.1 → prediction_market_agent_tooling-0.63.3}/prediction_market_agent_tooling/tools/tokens/auto_deposit.py +0 -0
  122. {prediction_market_agent_tooling-0.63.1 → prediction_market_agent_tooling-0.63.3}/prediction_market_agent_tooling/tools/tokens/auto_withdraw.py +0 -0
  123. {prediction_market_agent_tooling-0.63.1 → prediction_market_agent_tooling-0.63.3}/prediction_market_agent_tooling/tools/tokens/main_token.py +0 -0
  124. {prediction_market_agent_tooling-0.63.1 → prediction_market_agent_tooling-0.63.3}/prediction_market_agent_tooling/tools/tokens/token_utils.py +0 -0
  125. {prediction_market_agent_tooling-0.63.1 → prediction_market_agent_tooling-0.63.3}/prediction_market_agent_tooling/tools/transaction_cache.py +0 -0
  126. {prediction_market_agent_tooling-0.63.1 → prediction_market_agent_tooling-0.63.3}/prediction_market_agent_tooling/tools/utils.py +0 -0
  127. {prediction_market_agent_tooling-0.63.1 → prediction_market_agent_tooling-0.63.3}/prediction_market_agent_tooling/tools/web3_utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: prediction-market-agent-tooling
3
- Version: 0.63.1
3
+ Version: 0.63.3
4
4
  Summary: Tools to benchmark, deploy and monitor prediction market agents.
5
5
  Author: Gnosis
6
6
  Requires-Python: >=3.10,<3.13
@@ -1,3 +1,6 @@
1
+ import typing as t
2
+
3
+ from cachetools import TTLCache, cached
1
4
  from web3 import Web3
2
5
 
3
6
  from prediction_market_agent_tooling.gtypes import (
@@ -20,6 +23,27 @@ from prediction_market_agent_tooling.tools.cow.cow_order import (
20
23
  from prediction_market_agent_tooling.tools.hexbytes_custom import HexBytes
21
24
 
22
25
 
26
+ def _make_cache_key(
27
+ *args: t.Any,
28
+ token: ChecksumAddress,
29
+ collateral_exchange_amount: CollateralToken | None = None,
30
+ ) -> str:
31
+ """
32
+ Generate a unique cache key based on a token address and optional collateral token.
33
+ """
34
+
35
+ if collateral_exchange_amount is None:
36
+ return f"{token}-no_collateral"
37
+
38
+ return "-".join(
39
+ [
40
+ token,
41
+ collateral_exchange_amount.symbol,
42
+ str(collateral_exchange_amount.value),
43
+ ]
44
+ )
45
+
46
+
23
47
  class PriceManager:
24
48
  def __init__(self, seer_market: SeerMarket, seer_subgraph: SeerSubgraphHandler):
25
49
  self.seer_market = seer_market
@@ -65,6 +89,7 @@ class PriceManager:
65
89
  else:
66
90
  return None
67
91
 
92
+ @cached(TTLCache(maxsize=100, ttl=5 * 60), key=_make_cache_key)
68
93
  def get_price_for_token(
69
94
  self,
70
95
  token: ChecksumAddress,
@@ -78,7 +103,7 @@ class PriceManager:
78
103
 
79
104
  try:
80
105
  buy_token_amount = get_buy_token_amount_else_raise(
81
- amount_wei=collateral_exchange_amount.as_wei,
106
+ sell_amount=collateral_exchange_amount.as_wei,
82
107
  sell_token=self.seer_market.collateral_token_contract_address_checksummed,
83
108
  buy_token=token,
84
109
  )
@@ -46,7 +46,10 @@ from prediction_market_agent_tooling.tools.contract import (
46
46
  init_collateral_token_contract,
47
47
  to_gnosis_chain_contract,
48
48
  )
49
- from prediction_market_agent_tooling.tools.cow.cow_order import swap_tokens_waiting
49
+ from prediction_market_agent_tooling.tools.cow.cow_order import (
50
+ get_buy_token_amount_else_raise,
51
+ swap_tokens_waiting,
52
+ )
50
53
  from prediction_market_agent_tooling.tools.datetime_utc import DatetimeUTC
51
54
  from prediction_market_agent_tooling.tools.tokens.auto_deposit import (
52
55
  auto_deposit_collateral_token,
@@ -122,6 +125,23 @@ class SeerAgentMarket(AgentMarket):
122
125
  amount_outcome_tokens = bet_amount_in_tokens / price
123
126
  return OutcomeToken(amount_outcome_tokens)
124
127
 
128
+ def get_sell_value_of_outcome_token(
129
+ self, outcome: str, amount: OutcomeToken
130
+ ) -> CollateralToken:
131
+ if amount == amount.zero():
132
+ return CollateralToken.zero()
133
+
134
+ outcome_index = self.get_outcome_index(outcome=outcome)
135
+ wrapped_outcome_token = self.wrapped_tokens[outcome_index]
136
+
137
+ # We calculate how much collateral we would get back if we sold `amount` of outcome token.
138
+ value_outcome_token_in_collateral = get_buy_token_amount_else_raise(
139
+ sell_amount=amount.as_outcome_wei.as_wei,
140
+ sell_token=wrapped_outcome_token,
141
+ buy_token=self.collateral_token_contract_address_checksummed,
142
+ )
143
+ return value_outcome_token_in_collateral.as_token
144
+
125
145
  def get_outcome_str_from_bool(self, outcome: bool) -> OutcomeStr:
126
146
  outcome_translated = SeerOutcomeEnum.from_bool(outcome)
127
147
  idx = self.seer_outcomes[outcome_translated]
@@ -134,9 +154,9 @@ class SeerAgentMarket(AgentMarket):
134
154
  def get_tiny_bet_amount(self) -> CollateralToken:
135
155
  return self.get_in_token(SEER_TINY_BET_AMOUNT)
136
156
 
137
- def get_position(
157
+ def get_position_else_raise(
138
158
  self, user_id: str, web3: Web3 | None = None
139
- ) -> ExistingPosition | None:
159
+ ) -> ExistingPosition:
140
160
  """
141
161
  Fetches position from the user in a given market.
142
162
  We ignore the INVALID balances since we are only interested in binary outcomes.
@@ -169,6 +189,15 @@ class SeerAgentMarket(AgentMarket):
169
189
  amounts_ot=amounts_ot,
170
190
  )
171
191
 
192
+ def get_position(
193
+ self, user_id: str, web3: Web3 | None = None
194
+ ) -> ExistingPosition | None:
195
+ try:
196
+ return self.get_position_else_raise(user_id=user_id, web3=web3)
197
+ except Exception as e:
198
+ logger.warning(f"Could not get position for user {user_id}, exception {e}")
199
+ return None
200
+
172
201
  @staticmethod
173
202
  def get_user_id(api_keys: APIKeys) -> str:
174
203
  return OmenAgentMarket.get_user_id(api_keys)
@@ -231,6 +231,9 @@ class _GenericValue(
231
231
  def __bool__(self) -> bool:
232
232
  return bool(self.value)
233
233
 
234
+ def __hash__(self) -> int: # type: ignore[override]
235
+ return hash(tuple(sorted(self.items())))
236
+
234
237
  @classmethod
235
238
  def __get_pydantic_core_schema__(
236
239
  cls, source_type: t.Any, handler: GetCoreSchemaHandler
@@ -127,14 +127,14 @@ def get_quote(
127
127
 
128
128
 
129
129
  def get_buy_token_amount_else_raise(
130
- amount_wei: Wei,
130
+ sell_amount: Wei,
131
131
  sell_token: ChecksumAddress,
132
132
  buy_token: ChecksumAddress,
133
133
  chain: Chain = Chain.GNOSIS,
134
134
  env: Envs = "prod",
135
135
  ) -> Wei:
136
136
  order_quote = get_quote(
137
- amount_wei=amount_wei,
137
+ amount_wei=sell_amount,
138
138
  sell_token=sell_token,
139
139
  buy_token=buy_token,
140
140
  chain=chain,
@@ -50,7 +50,7 @@ def get_single_token_to_usd_rate(token_address: ChecksumAddress) -> USD:
50
50
  .as_token.value
51
51
  )
52
52
  in_wei = get_buy_token_amount_else_raise(
53
- amount_wei=CollateralToken(1).as_wei,
53
+ sell_amount=CollateralToken(1).as_wei,
54
54
  sell_token=token_address,
55
55
  buy_token=WRAPPED_XDAI_CONTRACT_ADDRESS,
56
56
  )
@@ -72,7 +72,7 @@ def get_single_usd_to_token_rate(token_address: ChecksumAddress) -> CollateralTo
72
72
  .as_token.value
73
73
  )
74
74
  in_wei = get_buy_token_amount_else_raise(
75
- amount_wei=CollateralToken(1).as_wei,
75
+ sell_amount=CollateralToken(1).as_wei,
76
76
  sell_token=WRAPPED_XDAI_CONTRACT_ADDRESS,
77
77
  buy_token=token_address,
78
78
  )
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "prediction-market-agent-tooling"
3
- version = "0.63.1"
3
+ version = "0.63.3"
4
4
  description = "Tools to benchmark, deploy and monitor prediction market agents."
5
5
  authors = ["Gnosis"]
6
6
  readme = "README.md"