prediction-market-agent-tooling 0.37.0__tar.gz → 0.38.0__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 (75) hide show
  1. {prediction_market_agent_tooling-0.37.0 → prediction_market_agent_tooling-0.38.0}/PKG-INFO +2 -1
  2. prediction_market_agent_tooling-0.38.0/prediction_market_agent_tooling/abis/omen_thumbnailmapping.abi.json +52 -0
  3. {prediction_market_agent_tooling-0.37.0 → prediction_market_agent_tooling-0.38.0}/prediction_market_agent_tooling/gtypes.py +1 -0
  4. {prediction_market_agent_tooling-0.37.0 → prediction_market_agent_tooling-0.38.0}/prediction_market_agent_tooling/markets/omen/omen_contracts.py +65 -1
  5. {prediction_market_agent_tooling-0.37.0 → prediction_market_agent_tooling-0.38.0}/prediction_market_agent_tooling/tools/web3_utils.py +22 -0
  6. {prediction_market_agent_tooling-0.37.0 → prediction_market_agent_tooling-0.38.0}/pyproject.toml +2 -1
  7. {prediction_market_agent_tooling-0.37.0 → prediction_market_agent_tooling-0.38.0}/LICENSE +0 -0
  8. {prediction_market_agent_tooling-0.37.0 → prediction_market_agent_tooling-0.38.0}/README.md +0 -0
  9. {prediction_market_agent_tooling-0.37.0 → prediction_market_agent_tooling-0.38.0}/prediction_market_agent_tooling/abis/erc20.abi.json +0 -0
  10. {prediction_market_agent_tooling-0.37.0 → prediction_market_agent_tooling-0.38.0}/prediction_market_agent_tooling/abis/omen_dxdao.abi.json +0 -0
  11. {prediction_market_agent_tooling-0.37.0 → prediction_market_agent_tooling-0.38.0}/prediction_market_agent_tooling/abis/omen_fpmm.abi.json +0 -0
  12. {prediction_market_agent_tooling-0.37.0 → prediction_market_agent_tooling-0.38.0}/prediction_market_agent_tooling/abis/omen_fpmm_conditionaltokens.abi.json +0 -0
  13. {prediction_market_agent_tooling-0.37.0 → prediction_market_agent_tooling-0.38.0}/prediction_market_agent_tooling/abis/omen_fpmm_factory.abi.json +0 -0
  14. {prediction_market_agent_tooling-0.37.0 → prediction_market_agent_tooling-0.38.0}/prediction_market_agent_tooling/abis/omen_kleros.abi.json +0 -0
  15. {prediction_market_agent_tooling-0.37.0 → prediction_market_agent_tooling-0.38.0}/prediction_market_agent_tooling/abis/omen_oracle.abi.json +0 -0
  16. {prediction_market_agent_tooling-0.37.0 → prediction_market_agent_tooling-0.38.0}/prediction_market_agent_tooling/abis/omen_realitio.abi.json +0 -0
  17. {prediction_market_agent_tooling-0.37.0 → prediction_market_agent_tooling-0.38.0}/prediction_market_agent_tooling/abis/wxdai.abi.json +0 -0
  18. {prediction_market_agent_tooling-0.37.0 → prediction_market_agent_tooling-0.38.0}/prediction_market_agent_tooling/benchmark/__init__.py +0 -0
  19. {prediction_market_agent_tooling-0.37.0 → prediction_market_agent_tooling-0.38.0}/prediction_market_agent_tooling/benchmark/agents.py +0 -0
  20. {prediction_market_agent_tooling-0.37.0 → prediction_market_agent_tooling-0.38.0}/prediction_market_agent_tooling/benchmark/benchmark.py +0 -0
  21. {prediction_market_agent_tooling-0.37.0 → prediction_market_agent_tooling-0.38.0}/prediction_market_agent_tooling/benchmark/utils.py +0 -0
  22. {prediction_market_agent_tooling-0.37.0 → prediction_market_agent_tooling-0.38.0}/prediction_market_agent_tooling/config.py +0 -0
  23. {prediction_market_agent_tooling-0.37.0 → prediction_market_agent_tooling-0.38.0}/prediction_market_agent_tooling/deploy/agent.py +0 -0
  24. {prediction_market_agent_tooling-0.37.0 → prediction_market_agent_tooling-0.38.0}/prediction_market_agent_tooling/deploy/agent_example.py +0 -0
  25. {prediction_market_agent_tooling-0.37.0 → prediction_market_agent_tooling-0.38.0}/prediction_market_agent_tooling/deploy/constants.py +0 -0
  26. {prediction_market_agent_tooling-0.37.0 → prediction_market_agent_tooling-0.38.0}/prediction_market_agent_tooling/deploy/gcp/deploy.py +0 -0
  27. {prediction_market_agent_tooling-0.37.0 → prediction_market_agent_tooling-0.38.0}/prediction_market_agent_tooling/deploy/gcp/kubernetes_models.py +0 -0
  28. {prediction_market_agent_tooling-0.37.0 → prediction_market_agent_tooling-0.38.0}/prediction_market_agent_tooling/deploy/gcp/utils.py +0 -0
  29. {prediction_market_agent_tooling-0.37.0 → prediction_market_agent_tooling-0.38.0}/prediction_market_agent_tooling/loggers.py +0 -0
  30. {prediction_market_agent_tooling-0.37.0 → prediction_market_agent_tooling-0.38.0}/prediction_market_agent_tooling/markets/agent_market.py +0 -0
  31. {prediction_market_agent_tooling-0.37.0 → prediction_market_agent_tooling-0.38.0}/prediction_market_agent_tooling/markets/categorize.py +0 -0
  32. {prediction_market_agent_tooling-0.37.0 → prediction_market_agent_tooling-0.38.0}/prediction_market_agent_tooling/markets/data_models.py +0 -0
  33. {prediction_market_agent_tooling-0.37.0 → prediction_market_agent_tooling-0.38.0}/prediction_market_agent_tooling/markets/manifold/__init__.py +0 -0
  34. {prediction_market_agent_tooling-0.37.0 → prediction_market_agent_tooling-0.38.0}/prediction_market_agent_tooling/markets/manifold/api.py +0 -0
  35. {prediction_market_agent_tooling-0.37.0 → prediction_market_agent_tooling-0.38.0}/prediction_market_agent_tooling/markets/manifold/data_models.py +0 -0
  36. {prediction_market_agent_tooling-0.37.0 → prediction_market_agent_tooling-0.38.0}/prediction_market_agent_tooling/markets/manifold/manifold.py +0 -0
  37. {prediction_market_agent_tooling-0.37.0 → prediction_market_agent_tooling-0.38.0}/prediction_market_agent_tooling/markets/manifold/utils.py +0 -0
  38. {prediction_market_agent_tooling-0.37.0 → prediction_market_agent_tooling-0.38.0}/prediction_market_agent_tooling/markets/markets.py +0 -0
  39. {prediction_market_agent_tooling-0.37.0 → prediction_market_agent_tooling-0.38.0}/prediction_market_agent_tooling/markets/omen/__init__.py +0 -0
  40. {prediction_market_agent_tooling-0.37.0 → prediction_market_agent_tooling-0.38.0}/prediction_market_agent_tooling/markets/omen/data_models.py +0 -0
  41. {prediction_market_agent_tooling-0.37.0 → prediction_market_agent_tooling-0.38.0}/prediction_market_agent_tooling/markets/omen/omen.py +0 -0
  42. {prediction_market_agent_tooling-0.37.0 → prediction_market_agent_tooling-0.38.0}/prediction_market_agent_tooling/markets/omen/omen_resolving.py +0 -0
  43. {prediction_market_agent_tooling-0.37.0 → prediction_market_agent_tooling-0.38.0}/prediction_market_agent_tooling/markets/omen/omen_subgraph_handler.py +0 -0
  44. {prediction_market_agent_tooling-0.37.0 → prediction_market_agent_tooling-0.38.0}/prediction_market_agent_tooling/markets/polymarket/api.py +0 -0
  45. {prediction_market_agent_tooling-0.37.0 → prediction_market_agent_tooling-0.38.0}/prediction_market_agent_tooling/markets/polymarket/data_models.py +0 -0
  46. {prediction_market_agent_tooling-0.37.0 → prediction_market_agent_tooling-0.38.0}/prediction_market_agent_tooling/markets/polymarket/data_models_web.py +0 -0
  47. {prediction_market_agent_tooling-0.37.0 → prediction_market_agent_tooling-0.38.0}/prediction_market_agent_tooling/markets/polymarket/polymarket.py +0 -0
  48. {prediction_market_agent_tooling-0.37.0 → prediction_market_agent_tooling-0.38.0}/prediction_market_agent_tooling/markets/polymarket/utils.py +0 -0
  49. {prediction_market_agent_tooling-0.37.0 → prediction_market_agent_tooling-0.38.0}/prediction_market_agent_tooling/monitor/langfuse/langfuse_wrapper.py +0 -0
  50. {prediction_market_agent_tooling-0.37.0 → prediction_market_agent_tooling-0.38.0}/prediction_market_agent_tooling/monitor/markets/manifold.py +0 -0
  51. {prediction_market_agent_tooling-0.37.0 → prediction_market_agent_tooling-0.38.0}/prediction_market_agent_tooling/monitor/markets/omen.py +0 -0
  52. {prediction_market_agent_tooling-0.37.0 → prediction_market_agent_tooling-0.38.0}/prediction_market_agent_tooling/monitor/markets/polymarket.py +0 -0
  53. {prediction_market_agent_tooling-0.37.0 → prediction_market_agent_tooling-0.38.0}/prediction_market_agent_tooling/monitor/monitor.py +0 -0
  54. {prediction_market_agent_tooling-0.37.0 → prediction_market_agent_tooling-0.38.0}/prediction_market_agent_tooling/monitor/monitor_app.py +0 -0
  55. {prediction_market_agent_tooling-0.37.0 → prediction_market_agent_tooling-0.38.0}/prediction_market_agent_tooling/monitor/monitor_settings.py +0 -0
  56. {prediction_market_agent_tooling-0.37.0 → prediction_market_agent_tooling-0.38.0}/prediction_market_agent_tooling/py.typed +0 -0
  57. {prediction_market_agent_tooling-0.37.0 → prediction_market_agent_tooling-0.38.0}/prediction_market_agent_tooling/tools/balances.py +0 -0
  58. {prediction_market_agent_tooling-0.37.0 → prediction_market_agent_tooling-0.38.0}/prediction_market_agent_tooling/tools/betting_strategies/kelly_criterion.py +0 -0
  59. {prediction_market_agent_tooling-0.37.0 → prediction_market_agent_tooling-0.38.0}/prediction_market_agent_tooling/tools/betting_strategies/market_moving.py +0 -0
  60. {prediction_market_agent_tooling-0.37.0 → prediction_market_agent_tooling-0.38.0}/prediction_market_agent_tooling/tools/betting_strategies/minimum_bet_to_win.py +0 -0
  61. {prediction_market_agent_tooling-0.37.0 → prediction_market_agent_tooling-0.38.0}/prediction_market_agent_tooling/tools/betting_strategies/stretch_bet_between.py +0 -0
  62. {prediction_market_agent_tooling-0.37.0 → prediction_market_agent_tooling-0.38.0}/prediction_market_agent_tooling/tools/cache.py +0 -0
  63. {prediction_market_agent_tooling-0.37.0 → prediction_market_agent_tooling-0.38.0}/prediction_market_agent_tooling/tools/contract.py +0 -0
  64. {prediction_market_agent_tooling-0.37.0 → prediction_market_agent_tooling-0.38.0}/prediction_market_agent_tooling/tools/costs.py +0 -0
  65. {prediction_market_agent_tooling-0.37.0 → prediction_market_agent_tooling-0.38.0}/prediction_market_agent_tooling/tools/gnosis_rpc.py +0 -0
  66. {prediction_market_agent_tooling-0.37.0 → prediction_market_agent_tooling-0.38.0}/prediction_market_agent_tooling/tools/google.py +0 -0
  67. {prediction_market_agent_tooling-0.37.0 → prediction_market_agent_tooling-0.38.0}/prediction_market_agent_tooling/tools/hexbytes_custom.py +0 -0
  68. {prediction_market_agent_tooling-0.37.0 → prediction_market_agent_tooling-0.38.0}/prediction_market_agent_tooling/tools/image_gen/image_gen.py +0 -0
  69. {prediction_market_agent_tooling-0.37.0 → prediction_market_agent_tooling-0.38.0}/prediction_market_agent_tooling/tools/image_gen/market_thumbnail_gen.py +0 -0
  70. {prediction_market_agent_tooling-0.37.0 → prediction_market_agent_tooling-0.38.0}/prediction_market_agent_tooling/tools/is_predictable.py +0 -0
  71. {prediction_market_agent_tooling-0.37.0 → prediction_market_agent_tooling-0.38.0}/prediction_market_agent_tooling/tools/parallelism.py +0 -0
  72. {prediction_market_agent_tooling-0.37.0 → prediction_market_agent_tooling-0.38.0}/prediction_market_agent_tooling/tools/safe.py +0 -0
  73. {prediction_market_agent_tooling-0.37.0 → prediction_market_agent_tooling-0.38.0}/prediction_market_agent_tooling/tools/singleton.py +0 -0
  74. {prediction_market_agent_tooling-0.37.0 → prediction_market_agent_tooling-0.38.0}/prediction_market_agent_tooling/tools/streamlit_user_login.py +0 -0
  75. {prediction_market_agent_tooling-0.37.0 → prediction_market_agent_tooling-0.38.0}/prediction_market_agent_tooling/tools/utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: prediction-market-agent-tooling
3
- Version: 0.37.0
3
+ Version: 0.38.0
4
4
  Summary: Tools to benchmark, deploy and monitor prediction market agents.
5
5
  Author: Gnosis
6
6
  Requires-Python: >=3.10,<3.12
@@ -11,6 +11,7 @@ Provides-Extra: google
11
11
  Provides-Extra: langchain
12
12
  Provides-Extra: openai
13
13
  Requires-Dist: autoflake (>=2.2.1,<3.0.0)
14
+ Requires-Dist: base58 (>=2.1.1,<3.0.0)
14
15
  Requires-Dist: cron-validator (>=1.0.8,<2.0.0)
15
16
  Requires-Dist: eth-account (>=0.8.0,<0.9.0)
16
17
  Requires-Dist: eth-typing (>=3.0.0,<4.0.0)
@@ -0,0 +1,52 @@
1
+ [
2
+ {
3
+ "type": "function",
4
+ "name": "get",
5
+ "inputs": [
6
+ {
7
+ "name": "marketAddress",
8
+ "type": "address",
9
+ "internalType": "address"
10
+ }
11
+ ],
12
+ "outputs": [
13
+ {
14
+ "name": "",
15
+ "type": "bytes32",
16
+ "internalType": "bytes32"
17
+ }
18
+ ],
19
+ "stateMutability": "view"
20
+ },
21
+ {
22
+ "type": "function",
23
+ "name": "remove",
24
+ "inputs": [
25
+ {
26
+ "name": "marketAddress",
27
+ "type": "address",
28
+ "internalType": "address"
29
+ }
30
+ ],
31
+ "outputs": [],
32
+ "stateMutability": "nonpayable"
33
+ },
34
+ {
35
+ "type": "function",
36
+ "name": "set",
37
+ "inputs": [
38
+ {
39
+ "name": "marketAddress",
40
+ "type": "address",
41
+ "internalType": "address"
42
+ },
43
+ {
44
+ "name": "image_hash",
45
+ "type": "bytes32",
46
+ "internalType": "bytes32"
47
+ }
48
+ ],
49
+ "outputs": [],
50
+ "stateMutability": "nonpayable"
51
+ }
52
+ ]
@@ -34,6 +34,7 @@ Mana = NewType("Mana", float) # Manifold's "currency"
34
34
  USDC = NewType("USDC", float)
35
35
  DatetimeWithTimezone = NewType("DatetimeWithTimezone", datetime)
36
36
  ChainID = NewType("ChainID", int)
37
+ IPFSCIDVersion0 = NewType("IPFSCIDVersion0", str)
37
38
 
38
39
 
39
40
  def usd_type(amount: Union[str, int, float]) -> USD:
@@ -13,6 +13,7 @@ from prediction_market_agent_tooling.gtypes import (
13
13
  HexAddress,
14
14
  HexBytes,
15
15
  HexStr,
16
+ IPFSCIDVersion0,
16
17
  OmenOutcomeToken,
17
18
  TxParams,
18
19
  TxReceipt,
@@ -26,7 +27,12 @@ from prediction_market_agent_tooling.tools.contract import (
26
27
  ContractOnGnosisChain,
27
28
  abi_field_validator,
28
29
  )
29
- from prediction_market_agent_tooling.tools.web3_utils import xdai_to_wei
30
+ from prediction_market_agent_tooling.tools.web3_utils import (
31
+ ZERO_BYTES,
32
+ byte32_to_ipfscidv0,
33
+ ipfscidv0_to_byte32,
34
+ xdai_to_wei,
35
+ )
30
36
 
31
37
 
32
38
  class OmenOracleContract(ContractOnGnosisChain):
@@ -610,3 +616,61 @@ class OmenRealitioContract(ContractOnGnosisChain):
610
616
  web3: Web3 | None = None,
611
617
  ) -> TxReceipt:
612
618
  return self.send(api_keys=api_keys, function_name="withdraw", web3=web3)
619
+
620
+
621
+ class OmenThumbnailMapping(ContractOnGnosisChain):
622
+ # Contract ABI taken from built https://github.com/gnosis/labs-contracts.
623
+ abi: ABI = abi_field_validator(
624
+ os.path.join(
625
+ os.path.dirname(os.path.realpath(__file__)),
626
+ "../../abis/omen_thumbnailmapping.abi.json",
627
+ )
628
+ )
629
+ address: ChecksumAddress = Web3.to_checksum_address(
630
+ "0x5D8B7B619EcdE05B8A94C0a0E99E0A0727A0e2e7"
631
+ )
632
+
633
+ def get(
634
+ self,
635
+ market_address: ChecksumAddress,
636
+ web3: Web3 | None = None,
637
+ ) -> IPFSCIDVersion0 | None:
638
+ hash_bytes = HexBytes(
639
+ self.call("get", function_params=[market_address], web3=web3)
640
+ )
641
+ return byte32_to_ipfscidv0(hash_bytes) if hash_bytes != ZERO_BYTES else None
642
+
643
+ def get_url(
644
+ self,
645
+ market_address: ChecksumAddress,
646
+ web3: Web3 | None = None,
647
+ ) -> str | None:
648
+ hash_ = self.get(market_address, web3)
649
+ return f"https://ipfs.io/ipfs/{hash_}" if hash_ is not None else None
650
+
651
+ def set(
652
+ self,
653
+ api_keys: APIKeys,
654
+ market_address: ChecksumAddress,
655
+ image_hash: IPFSCIDVersion0,
656
+ web3: Web3 | None = None,
657
+ ) -> TxReceipt:
658
+ return self.send(
659
+ api_keys=api_keys,
660
+ function_name="set",
661
+ function_params=[market_address, ipfscidv0_to_byte32(image_hash)],
662
+ web3=web3,
663
+ )
664
+
665
+ def remove(
666
+ self,
667
+ api_keys: APIKeys,
668
+ market_address: ChecksumAddress,
669
+ web3: Web3 | None = None,
670
+ ) -> TxReceipt:
671
+ return self.send(
672
+ api_keys=api_keys,
673
+ function_name="remove",
674
+ function_params=[market_address],
675
+ web3=web3,
676
+ )
@@ -1,5 +1,7 @@
1
+ import binascii
1
2
  from typing import Any, Optional, TypeVar
2
3
 
4
+ import base58
3
5
  import tenacity
4
6
  from eth_account import Account
5
7
  from eth_typing import URI
@@ -16,6 +18,7 @@ from prediction_market_agent_tooling.gtypes import (
16
18
  HexAddress,
17
19
  HexBytes,
18
20
  HexStr,
21
+ IPFSCIDVersion0,
19
22
  PrivateKey,
20
23
  xDai,
21
24
  xdai_type,
@@ -287,3 +290,22 @@ def send_xdai_to(
287
290
  web3, tx_params_new, from_private_key, timeout
288
291
  )
289
292
  return receipt_tx
293
+
294
+
295
+ def ipfscidv0_to_byte32(cid: IPFSCIDVersion0) -> HexBytes:
296
+ """
297
+ Convert ipfscidv0 to 32 bytes.
298
+ Modified from https://github.com/emg110/ipfs2bytes32/blob/main/python/ipfs2bytes32.py
299
+ """
300
+ decoded = base58.b58decode(cid)
301
+ sliced_decoded = decoded[2:]
302
+ return HexBytes(binascii.b2a_hex(sliced_decoded).decode("utf-8"))
303
+
304
+
305
+ def byte32_to_ipfscidv0(hex: HexBytes) -> IPFSCIDVersion0:
306
+ """
307
+ Convert 32 bytes hex to ipfscidv0.
308
+ Modified from https://github.com/emg110/ipfs2bytes32/blob/main/python/ipfs2bytes32.py
309
+ """
310
+ completed_binary_str = b"\x12 " + hex
311
+ return IPFSCIDVersion0(base58.b58encode(completed_binary_str).decode("utf-8"))
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "prediction-market-agent-tooling"
3
- version = "0.37.0"
3
+ version = "0.38.0"
4
4
  description = "Tools to benchmark, deploy and monitor prediction market agents."
5
5
  authors = ["Gnosis"]
6
6
  readme = "README.md"
@@ -42,6 +42,7 @@ prompt-toolkit = "^3.0.43"
42
42
  safe-cli = "^1.0.0"
43
43
  langfuse = "^2.27.1"
44
44
  openai = { version = "^1.0.0", optional = true}
45
+ base58 = "^2.1.1"
45
46
 
46
47
  [tool.poetry.extras]
47
48
  openai = ["openai"]