prediction-market-agent-tooling 0.59.2__py3-none-any.whl → 0.60.0__py3-none-any.whl

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.
@@ -23,6 +23,11 @@ from prediction_market_agent_tooling.markets.data_models import (
23
23
  Resolution,
24
24
  ResolvedBet,
25
25
  )
26
+ from prediction_market_agent_tooling.tools.contract import (
27
+ ContractERC20OnGnosisChain,
28
+ init_collateral_token_contract,
29
+ to_gnosis_chain_contract,
30
+ )
26
31
  from prediction_market_agent_tooling.tools.utils import (
27
32
  BPS_CONSTANT,
28
33
  DatetimeUTC,
@@ -168,6 +173,16 @@ class OmenPosition(BaseModel):
168
173
  def collateral_token_contract_address_checksummed(self) -> ChecksumAddress:
169
174
  return Web3.to_checksum_address(self.collateralTokenAddress)
170
175
 
176
+ def get_collateral_token_contract(
177
+ self, web3: Web3 | None
178
+ ) -> ContractERC20OnGnosisChain:
179
+ web3 = web3 or ContractERC20OnGnosisChain.get_web3()
180
+ return to_gnosis_chain_contract(
181
+ init_collateral_token_contract(
182
+ self.collateral_token_contract_address_checksummed, web3
183
+ )
184
+ )
185
+
171
186
 
172
187
  class OmenUserPosition(BaseModel):
173
188
  id: HexBytes
@@ -80,6 +80,7 @@ from prediction_market_agent_tooling.tools.tokens.auto_deposit import (
80
80
  from prediction_market_agent_tooling.tools.tokens.auto_withdraw import (
81
81
  auto_withdraw_collateral_token,
82
82
  )
83
+ from prediction_market_agent_tooling.tools.tokens.main_token import KEEPING_ERC20_TOKEN
83
84
  from prediction_market_agent_tooling.tools.utils import (
84
85
  DatetimeUTC,
85
86
  calculate_sell_amount_in_collateral,
@@ -190,11 +191,10 @@ class OmenAgentMarket(AgentMarket):
190
191
  for position_outcome, token_amount in prev_position.amounts.items():
191
192
  position_outcome_bool = get_boolean_outcome(position_outcome)
192
193
  if position_outcome_bool != bet_outcome:
193
- # We keep it as collateral since we want to place a bet immediately after this function.
194
194
  self.sell_tokens(
195
195
  outcome=position_outcome_bool,
196
196
  amount=token_amount,
197
- auto_withdraw=False,
197
+ auto_withdraw=True,
198
198
  web3=web3,
199
199
  api_keys=api_keys,
200
200
  )
@@ -259,7 +259,7 @@ class OmenAgentMarket(AgentMarket):
259
259
  self,
260
260
  outcome: bool,
261
261
  amount: TokenAmount,
262
- auto_withdraw: bool = False,
262
+ auto_withdraw: bool = True,
263
263
  api_keys: APIKeys | None = None,
264
264
  web3: Web3 | None = None,
265
265
  ) -> str:
@@ -408,8 +408,12 @@ class OmenAgentMarket(AgentMarket):
408
408
 
409
409
  @staticmethod
410
410
  def get_trade_balance(api_keys: APIKeys, web3: Web3 | None = None) -> xDai:
411
- return get_total_balance(
412
- address=api_keys.bet_from_address, web3=web3, sum_xdai=True, sum_wxdai=True
411
+ native_token_balance = get_balances(api_keys.bet_from_address, web3=web3).xdai
412
+ return xdai_type(
413
+ wei_to_xdai(
414
+ KEEPING_ERC20_TOKEN.balanceOf(api_keys.bet_from_address, web3=web3)
415
+ )
416
+ + native_token_balance
413
417
  )
414
418
 
415
419
  @staticmethod
@@ -1060,6 +1064,7 @@ def omen_fund_market_tx(
1060
1064
  def omen_redeem_full_position_tx(
1061
1065
  api_keys: APIKeys,
1062
1066
  market: OmenAgentMarket,
1067
+ auto_withdraw: bool = True,
1063
1068
  web3: Web3 | None = None,
1064
1069
  ) -> None:
1065
1070
  """
@@ -1071,6 +1076,7 @@ def omen_redeem_full_position_tx(
1071
1076
 
1072
1077
  market_contract: OmenFixedProductMarketMakerContract = market.get_contract()
1073
1078
  conditional_token_contract = OmenConditionalTokenContract()
1079
+ collateral_token_contract = market_contract.get_collateral_token_contract(web3)
1074
1080
 
1075
1081
  # Verify, that markets uses conditional tokens that we expect.
1076
1082
  if market_contract.conditionalTokens() != conditional_token_contract.address:
@@ -1094,6 +1100,7 @@ def omen_redeem_full_position_tx(
1094
1100
  logger.debug("Market not yet resolved, not possible to claim")
1095
1101
  return
1096
1102
 
1103
+ original_balance = collateral_token_contract.balanceOf(from_address, web3=web3)
1097
1104
  conditional_token_contract.redeemPositions(
1098
1105
  api_keys=api_keys,
1099
1106
  collateral_token_address=market.collateral_token_contract_address_checksummed,
@@ -1101,6 +1108,20 @@ def omen_redeem_full_position_tx(
1101
1108
  index_sets=market.condition.index_sets,
1102
1109
  web3=web3,
1103
1110
  )
1111
+ new_balance = collateral_token_contract.balanceOf(from_address, web3=web3)
1112
+ balance_diff = wei_type(new_balance - original_balance)
1113
+
1114
+ logger.info(
1115
+ f"Redeemed {wei_to_xdai(balance_diff)} {collateral_token_contract.symbol_cached(web3=web3)} from market {market.question=} ({market.url})."
1116
+ )
1117
+
1118
+ if auto_withdraw:
1119
+ auto_withdraw_collateral_token(
1120
+ collateral_token_contract=collateral_token_contract,
1121
+ amount_wei=balance_diff,
1122
+ api_keys=api_keys,
1123
+ web3=web3,
1124
+ )
1104
1125
 
1105
1126
 
1106
1127
  def get_conditional_tokens_balance_for_market(
@@ -1139,13 +1160,14 @@ def omen_remove_fund_market_tx(
1139
1160
  market: OmenAgentMarket,
1140
1161
  shares: Wei | None,
1141
1162
  web3: Web3 | None = None,
1163
+ auto_withdraw: bool = True,
1142
1164
  ) -> None:
1143
1165
  """
1144
1166
  Removes funding from a given OmenMarket (moving the funds from the OmenMarket to the
1145
1167
  ConditionalTokens contract), and finally calls the `mergePositions` method which transfers collateralToken from the ConditionalTokens contract to the address corresponding to `from_private_key`.
1146
1168
 
1147
1169
  Warning: Liquidity removal works on the principle of getting market's shares, not the collateral token itself.
1148
- After we remove funding, using the `mergePositions` we get `min(shares per index)` of wxDai back, but the remaining shares can be converted back only after the market is resolved.
1170
+ After we remove funding, using the `mergePositions` we get `min(shares per index)` of collateral token back, but the remaining shares can be converted back only after the market is resolved.
1149
1171
  That can be done using the `redeem_from_all_user_positions` function below.
1150
1172
  """
1151
1173
  from_address = api_keys.bet_from_address
@@ -1189,16 +1211,26 @@ def omen_remove_fund_market_tx(
1189
1211
  )
1190
1212
 
1191
1213
  new_balance = market_collateral_token_contract.balanceOf(from_address, web3=web3)
1214
+ balance_diff = wei_type(new_balance - original_balance)
1192
1215
 
1193
1216
  logger.debug(f"Result from merge positions {result}")
1194
1217
  logger.info(
1195
- f"Withdrawn {new_balance - original_balance} {market_collateral_token_contract.symbol_cached(web3=web3)} from liquidity at {market.url=}."
1218
+ f"Withdrawn {wei_to_xdai(balance_diff)} {market_collateral_token_contract.symbol_cached(web3=web3)} from liquidity at {market.url=}."
1196
1219
  )
1197
1220
 
1221
+ if auto_withdraw:
1222
+ auto_withdraw_collateral_token(
1223
+ collateral_token_contract=market_collateral_token_contract,
1224
+ amount_wei=balance_diff,
1225
+ api_keys=api_keys,
1226
+ web3=web3,
1227
+ )
1228
+
1198
1229
 
1199
1230
  def redeem_from_all_user_positions(
1200
1231
  api_keys: APIKeys,
1201
1232
  web3: Web3 | None = None,
1233
+ auto_withdraw: bool = True,
1202
1234
  ) -> None:
1203
1235
  """
1204
1236
  Redeems from all user positions where the user didn't redeem yet.
@@ -1224,8 +1256,11 @@ def redeem_from_all_user_positions(
1224
1256
  logger.info(
1225
1257
  f"[{index + 1} / {len(user_positions)}] Processing redeem from {user_position.id=}."
1226
1258
  )
1259
+ collateral_token_contract = (
1260
+ user_position.position.get_collateral_token_contract(web3=web3)
1261
+ )
1227
1262
 
1228
- original_balances = get_balances(public_key, web3)
1263
+ original_balance = collateral_token_contract.balanceOf(public_key, web3=web3)
1229
1264
  conditional_token_contract.redeemPositions(
1230
1265
  api_keys=api_keys,
1231
1266
  collateral_token_address=user_position.position.collateral_token_contract_address_checksummed,
@@ -1233,12 +1268,21 @@ def redeem_from_all_user_positions(
1233
1268
  index_sets=user_position.position.indexSets,
1234
1269
  web3=web3,
1235
1270
  )
1236
- new_balances = get_balances(public_key, web3)
1271
+ new_balance = collateral_token_contract.balanceOf(public_key, web3=web3)
1272
+ balance_diff = wei_type(new_balance - original_balance)
1237
1273
 
1238
1274
  logger.info(
1239
- f"Redeemed {new_balances.wxdai - original_balances.wxdai} wxDai from position {user_position.id=}."
1275
+ f"Redeemed {wei_to_xdai(balance_diff)} {collateral_token_contract.symbol_cached(web3=web3)} from position {user_position.id=}."
1240
1276
  )
1241
1277
 
1278
+ if auto_withdraw:
1279
+ auto_withdraw_collateral_token(
1280
+ collateral_token_contract=collateral_token_contract,
1281
+ amount_wei=balance_diff,
1282
+ api_keys=api_keys,
1283
+ web3=web3,
1284
+ )
1285
+
1242
1286
 
1243
1287
  def get_binary_market_p_yes_history(market: OmenAgentMarket) -> list[Probability]:
1244
1288
  history: list[Probability] = []
@@ -26,7 +26,11 @@ from prediction_market_agent_tooling.markets.omen.omen_subgraph_handler import (
26
26
  OmenSubgraphHandler,
27
27
  )
28
28
  from prediction_market_agent_tooling.tools.utils import utcnow
29
- from prediction_market_agent_tooling.tools.web3_utils import ZERO_BYTES, xdai_to_wei
29
+ from prediction_market_agent_tooling.tools.web3_utils import (
30
+ ZERO_BYTES,
31
+ wei_to_xdai,
32
+ xdai_to_wei,
33
+ )
30
34
 
31
35
 
32
36
  def claim_bonds_on_realitio_questions(
@@ -116,7 +120,9 @@ def claim_bonds_on_realitio_question(
116
120
  current_balance = realitio_contract.balanceOf(public_key, web3=web3)
117
121
  # Keeping balance on Realitio is not useful, so it's recommended to just withdraw it.
118
122
  if current_balance > 0 and auto_withdraw:
119
- logger.info(f"Withdrawing remaining balance {current_balance=}")
123
+ logger.info(
124
+ f"Withdrawing remaining balance {wei_to_xdai(current_balance)} xDai from Realitio."
125
+ )
120
126
  realitio_contract.withdraw(api_keys, web3=web3)
121
127
 
122
128
 
@@ -46,10 +46,12 @@ from prediction_market_agent_tooling.tools.web3_utils import (
46
46
  byte32_to_ipfscidv0,
47
47
  )
48
48
 
49
- # TODO: Agents don't know how to convert value between other tokens, we assume 1 unit = 1xDai = $1 (for example if market would be in wETH, betting 1 unit of wETH would be crazy :D)
50
- SAFE_COLLATERAL_TOKEN_MARKETS = (
51
- WrappedxDaiContract().address,
52
- sDaiContract().address,
49
+ SAFE_COLLATERAL_TOKENS = (
50
+ WrappedxDaiContract(),
51
+ sDaiContract(),
52
+ )
53
+ SAFE_COLLATERAL_TOKENS_ADDRESSES = tuple(
54
+ contract.address for contract in SAFE_COLLATERAL_TOKENS
53
55
  )
54
56
 
55
57
 
@@ -326,7 +328,7 @@ class OmenSubgraphHandler(BaseSubgraphHandler):
326
328
  excluded_questions: set[str] | None = None, # question titles
327
329
  collateral_token_address_in: (
328
330
  tuple[ChecksumAddress, ...] | None
329
- ) = SAFE_COLLATERAL_TOKEN_MARKETS,
331
+ ) = SAFE_COLLATERAL_TOKENS_ADDRESSES,
330
332
  category: str | None = None,
331
333
  creator_in: t.Sequence[HexAddress] | None = None,
332
334
  ) -> t.List[OmenMarket]:
@@ -392,7 +394,7 @@ class OmenSubgraphHandler(BaseSubgraphHandler):
392
394
  outcomes: list[str] = OMEN_BINARY_MARKET_OUTCOMES,
393
395
  collateral_token_address_in: (
394
396
  tuple[ChecksumAddress, ...] | None
395
- ) = SAFE_COLLATERAL_TOKEN_MARKETS,
397
+ ) = SAFE_COLLATERAL_TOKENS_ADDRESSES,
396
398
  category: str | None = None,
397
399
  ) -> t.List[OmenMarket]:
398
400
  """
@@ -14,6 +14,7 @@ from typing import (
14
14
  overload,
15
15
  )
16
16
 
17
+ import psycopg2
17
18
  from pydantic import BaseModel
18
19
  from sqlalchemy import Column
19
20
  from sqlalchemy.dialects.postgresql import JSONB
@@ -200,12 +201,22 @@ def db_cache(
200
201
  result=computed_result,
201
202
  created_at=utcnow(),
202
203
  )
203
- with DBManager(
204
- api_keys.sqlalchemy_db_url.get_secret_value()
205
- ).get_session() as session:
206
- logger.info(f"Saving {cache_entry} into database.")
207
- session.add(cache_entry)
208
- session.commit()
204
+ # Do not raise an exception if saving to the database fails, just log it and let the agent continue the work.
205
+ try:
206
+ with DBManager(
207
+ api_keys.sqlalchemy_db_url.get_secret_value()
208
+ ).get_session() as session:
209
+ logger.info(f"Saving {cache_entry} into database.")
210
+ session.add(cache_entry)
211
+ session.commit()
212
+ except psycopg2.errors.UntranslatableCharacter as e:
213
+ logger.warning(
214
+ f"Failed to save {cache_entry} into database, ignoring, because: {e}"
215
+ )
216
+ except Exception:
217
+ logger.exception(
218
+ f"Failed to save {cache_entry} into database, ignoring."
219
+ )
209
220
 
210
221
  return computed_result
211
222
 
@@ -13,7 +13,7 @@ from prediction_market_agent_tooling.tools.utils import utcnow
13
13
  def sell_all(
14
14
  api_keys: APIKeys,
15
15
  closing_later_than_days: int,
16
- auto_withdraw: bool = False,
16
+ auto_withdraw: bool = True,
17
17
  ) -> None:
18
18
  """
19
19
  Helper function to sell all existing outcomes on Omen that would resolve later than in X days.
@@ -2,6 +2,7 @@ from web3 import Web3
2
2
 
3
3
  from prediction_market_agent_tooling.config import APIKeys
4
4
  from prediction_market_agent_tooling.gtypes import Wei
5
+ from prediction_market_agent_tooling.loggers import logger
5
6
  from prediction_market_agent_tooling.tools.contract import (
6
7
  ContractERC20BaseClass,
7
8
  ContractERC4626BaseClass,
@@ -12,7 +13,10 @@ from prediction_market_agent_tooling.tools.cow.cow_order import (
12
13
  )
13
14
  from prediction_market_agent_tooling.tools.tokens.main_token import KEEPING_ERC20_TOKEN
14
15
  from prediction_market_agent_tooling.tools.utils import should_not_happen
15
- from prediction_market_agent_tooling.tools.web3_utils import remove_fraction
16
+ from prediction_market_agent_tooling.tools.web3_utils import (
17
+ remove_fraction,
18
+ wei_to_xdai,
19
+ )
16
20
 
17
21
 
18
22
  def auto_withdraw_collateral_token(
@@ -28,8 +32,17 @@ def auto_withdraw_collateral_token(
28
32
  slippage,
29
33
  )
30
34
 
35
+ if not amount_wei:
36
+ logger.warning(
37
+ f"Amount to withdraw is zero, skipping withdrawal of {collateral_token_contract.symbol_cached(web3)}."
38
+ )
39
+ return
40
+
31
41
  if collateral_token_contract.address == KEEPING_ERC20_TOKEN.address:
32
42
  # Do nothing, as this is the token we want to keep.
43
+ logger.info(
44
+ f"Collateral token {collateral_token_contract.symbol_cached(web3)} is the same as KEEPING_ERC20_TOKEN. Not withdrawing."
45
+ )
33
46
  return
34
47
  elif (
35
48
  isinstance(collateral_token_contract, ContractERC4626BaseClass)
@@ -37,12 +50,18 @@ def auto_withdraw_collateral_token(
37
50
  == KEEPING_ERC20_TOKEN.address
38
51
  ):
39
52
  # If the ERC4626 is backed by KEEPING_ERC20_TOKEN, we can withdraw it directly, no need to go through DEX.
53
+ logger.info(
54
+ f"Withdrawing {wei_to_xdai(amount_wei)} from {collateral_token_contract.symbol_cached(web3)} into {KEEPING_ERC20_TOKEN.symbol_cached(web3)}"
55
+ )
40
56
  collateral_token_contract.withdraw(
41
57
  api_keys,
42
58
  amount_wei,
43
59
  web3=web3,
44
60
  )
45
61
  elif isinstance(collateral_token_contract, ContractERC20BaseClass):
62
+ logger.info(
63
+ f"Swapping {wei_to_xdai(amount_wei)} {collateral_token_contract.symbol_cached(web3)} into {KEEPING_ERC20_TOKEN.symbol_cached(web3)}"
64
+ )
46
65
  # Otherwise, DEX will handle the rest of token swaps.
47
66
  # First, convert `amount_wei` from xDai-based value into the collateral token-based value.
48
67
  collateral_amount_wei = get_buy_token_amount(
@@ -7,7 +7,9 @@ from prediction_market_agent_tooling.tools.contract import (
7
7
 
8
8
  # This is the token where agents will hold their funds,
9
9
  # except for a small portion that will be kept in the native token of the network to pay for the fees.
10
+ # Auto deposit must work from native token into this token.
10
11
  # If changed, then keep in mind that we assume this token is equal to 1 USD.
12
+ # Also if changed, `withdraw_wxdai_to_xdai_to_keep_balance` will require update.
11
13
  KEEPING_ERC20_TOKEN = ContractDepositableWrapperERC20OnGnosisChain(
12
14
  address=WRAPPED_XDAI_CONTRACT_ADDRESS
13
15
  )
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: prediction-market-agent-tooling
3
- Version: 0.59.2
3
+ Version: 0.60.0
4
4
  Summary: Tools to benchmark, deploy and monitor prediction market agents.
5
5
  Author: Gnosis
6
6
  Requires-Python: >=3.10,<3.13
@@ -50,12 +50,12 @@ prediction_market_agent_tooling/markets/metaculus/api.py,sha256=4TRPGytQQbSdf42D
50
50
  prediction_market_agent_tooling/markets/metaculus/data_models.py,sha256=FaBCTPPezXbBwZ9p791CiVgQ4vB696xnMbz9XVXmiVI,3267
51
51
  prediction_market_agent_tooling/markets/metaculus/metaculus.py,sha256=86TIx6cavEWc8Cv4KpZxSvwiSw9oFybXE3YB49pg-CA,4377
52
52
  prediction_market_agent_tooling/markets/omen/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
53
- prediction_market_agent_tooling/markets/omen/data_models.py,sha256=uT8ILKrg2g4jGodPxtolPErk25buNzMYndb01ZL2dYE,28421
54
- prediction_market_agent_tooling/markets/omen/omen.py,sha256=mtkLJR1w3QRfyW6aY_Ey-3ITL2BPHrisvPY0tmB4wGU,49864
53
+ prediction_market_agent_tooling/markets/omen/data_models.py,sha256=sfaOpNk6oFIzxYQzs9EehqAT_19IxYJy9pns-UTepOc,28934
54
+ prediction_market_agent_tooling/markets/omen/omen.py,sha256=nJGjVHKKWvrVtTRwLLdpZoOIpk9vuEtypl238nazO9c,51623
55
55
  prediction_market_agent_tooling/markets/omen/omen_constants.py,sha256=D9oflYKafLQiHYtB5sScMHqmXyzM8JP8J0yATmc4SQQ,233
56
56
  prediction_market_agent_tooling/markets/omen/omen_contracts.py,sha256=EXqBlVivbmW8aBQ65O09X2xkyesHAop49GUl1tUffWA,28648
57
- prediction_market_agent_tooling/markets/omen/omen_resolving.py,sha256=E1BVDvQd1qYtCxmfC94kJtGkmQqpGPHL3zTkcs5wW6M,9697
58
- prediction_market_agent_tooling/markets/omen/omen_subgraph_handler.py,sha256=mZ0CgKfHj0gLFq9plNpBhNqMuclb8V3qNagWfLYcpUc,38806
57
+ prediction_market_agent_tooling/markets/omen/omen_resolving.py,sha256=dMxnPK2DF3aL4oZkBkbxwTcU7EMmi1vnTm0oC5d91yY,9781
58
+ prediction_market_agent_tooling/markets/omen/omen_subgraph_handler.py,sha256=dQyz1RR1MlQncb1Slq7tk1Maql-sbb5YYE_sDe26MYA,38711
59
59
  prediction_market_agent_tooling/markets/polymarket/api.py,sha256=UZ4_TG8ceb9Y-qgsOKs8Qiv8zDt957QkT8IX2c83yqo,4800
60
60
  prediction_market_agent_tooling/markets/polymarket/data_models.py,sha256=Fd5PI5y3mJM8VHExBhWFWEnuuIKxQmIAXgBuoPDvNjw,4341
61
61
  prediction_market_agent_tooling/markets/polymarket/data_models_web.py,sha256=VZhVccTApygSKMmy6Au2G02JCJOKJnR_oVeKlaesuSg,12548
@@ -80,7 +80,7 @@ prediction_market_agent_tooling/tools/betting_strategies/market_moving.py,sha256
80
80
  prediction_market_agent_tooling/tools/betting_strategies/minimum_bet_to_win.py,sha256=-FUSuQQgjcWSSnoFxnlAyTeilY6raJABJVM2QKkFqAY,438
81
81
  prediction_market_agent_tooling/tools/betting_strategies/stretch_bet_between.py,sha256=THMXwFlskvzbjnX_OiYtDSzI8XVFyULWfP2525_9UGc,429
82
82
  prediction_market_agent_tooling/tools/betting_strategies/utils.py,sha256=kpIb-ci67Vc1Yqqaa-_S4OUkbhWSIYog4_Iwp69HU_k,97
83
- prediction_market_agent_tooling/tools/caches/db_cache.py,sha256=aafau_n_AUbLIwkyIRiTPgKB0dmM0767mSqyPDLF2A4,10576
83
+ prediction_market_agent_tooling/tools/caches/db_cache.py,sha256=Q5E5cI5Mn65wq8N9Mv7on_lOnl9JOqzezvZc2ZbWhFo,11119
84
84
  prediction_market_agent_tooling/tools/caches/inmemory_cache.py,sha256=ZW5iI5rmjqeAebu5T7ftRnlkxiL02IC-MxCfDB80x7w,1506
85
85
  prediction_market_agent_tooling/tools/caches/serializers.py,sha256=vFDx4fsPxclXp2q0sv27j4al_M_Tj9aR2JJP-xNHQXA,2151
86
86
  prediction_market_agent_tooling/tools/contract.py,sha256=gmSuANqlfwldFG7hc4uom0q1Z-mo40qfYh5TDUKLFTs,20518
@@ -101,7 +101,7 @@ prediction_market_agent_tooling/tools/is_predictable.py,sha256=qVd6zqay2Dg2fyeAu
101
101
  prediction_market_agent_tooling/tools/langfuse_.py,sha256=jI_4ROxqo41CCnWGS1vN_AeDVhRzLMaQLxH3kxDu3L8,1153
102
102
  prediction_market_agent_tooling/tools/langfuse_client_utils.py,sha256=83T31s-YbsnNBLyYCjmBI2BBKUEqJUuYFa0uCdkoqy8,5901
103
103
  prediction_market_agent_tooling/tools/omen/reality_accuracy.py,sha256=M1SF7iSW1gVlQSTskdVFTn09uPLST23YeipVIWj54io,2236
104
- prediction_market_agent_tooling/tools/omen/sell_positions.py,sha256=JIfTMKF0bHyQ9qXNfyr5ul_eu4hBuydlRVGJET8Uw90,2308
104
+ prediction_market_agent_tooling/tools/omen/sell_positions.py,sha256=hZCxXpcACO95DyiZ5oLFp982N0erZg4wccdSUKTgRlA,2307
105
105
  prediction_market_agent_tooling/tools/parallelism.py,sha256=6Gou0hbjtMZrYvxjTDFUDZuxmE2nqZVbb6hkg1hF82A,1022
106
106
  prediction_market_agent_tooling/tools/relevant_news_analysis/data_models.py,sha256=95l84aztFaxcRLLcRQ46yKJbIlOEuDAbIGLouyliDzA,1316
107
107
  prediction_market_agent_tooling/tools/relevant_news_analysis/relevant_news_analysis.py,sha256=CddJem7tk15NAudJDwmuL8znTycbR-YI8kTNtd3LzG8,5474
@@ -112,13 +112,13 @@ prediction_market_agent_tooling/tools/streamlit_user_login.py,sha256=NXEqfjT9Lc9
112
112
  prediction_market_agent_tooling/tools/tavily/tavily_models.py,sha256=5ldQs1pZe6uJ5eDAuP4OLpzmcqYShlIV67kttNFvGS0,342
113
113
  prediction_market_agent_tooling/tools/tavily/tavily_search.py,sha256=Kw2mXNkMTYTEe1MBSTqhQmLoeXtgb6CkmHlcAJvhtqE,3809
114
114
  prediction_market_agent_tooling/tools/tokens/auto_deposit.py,sha256=o8_ERfPL-ps9FLvH5vgdiSRJQ4dZONJw9KK9sHgeP2I,6390
115
- prediction_market_agent_tooling/tools/tokens/auto_withdraw.py,sha256=B02maQkl3wNptWFtZdnDosICJE5BfnLUVqxp5uJIaPA,2353
116
- prediction_market_agent_tooling/tools/tokens/main_token.py,sha256=5iHO7-iehSlXuue6ocVrr4IsklVjm7QHIwln4BsebJA,573
115
+ prediction_market_agent_tooling/tools/tokens/auto_withdraw.py,sha256=gOvfZlrw6hdpYquGKLjMw-YpjAvWHnyGa-ke0Z6GIzU,3150
116
+ prediction_market_agent_tooling/tools/tokens/main_token.py,sha256=v5PfD2m9m92bJpK-k8ww6yDO7dwpchFtQ1BJRgi8rhs,714
117
117
  prediction_market_agent_tooling/tools/transaction_cache.py,sha256=K5YKNL2_tR10Iw2TD9fuP-CTGpBbZtNdgbd0B_R7pjg,1814
118
118
  prediction_market_agent_tooling/tools/utils.py,sha256=jLG4nbEoIzzJiZ4RgMx4Q969Zdl0p0s63p8uET_0Fuw,6440
119
119
  prediction_market_agent_tooling/tools/web3_utils.py,sha256=2PXZfGRrDVZD60agVpBN4JkOF0YsNBXgTEH1y-V71uQ,12723
120
- prediction_market_agent_tooling-0.59.2.dist-info/LICENSE,sha256=6or154nLLU6bELzjh0mCreFjt0m2v72zLi3yHE0QbeE,7650
121
- prediction_market_agent_tooling-0.59.2.dist-info/METADATA,sha256=MqNzGgXLVbHhIWejKukTi6hRsjK0nr5TRbax5iiyLn8,8629
122
- prediction_market_agent_tooling-0.59.2.dist-info/WHEEL,sha256=XbeZDeTWKc1w7CSIyre5aMDU_-PohRwTQceYnisIYYY,88
123
- prediction_market_agent_tooling-0.59.2.dist-info/entry_points.txt,sha256=m8PukHbeH5g0IAAmOf_1Ahm-sGAMdhSSRQmwtpmi2s8,81
124
- prediction_market_agent_tooling-0.59.2.dist-info/RECORD,,
120
+ prediction_market_agent_tooling-0.60.0.dist-info/LICENSE,sha256=6or154nLLU6bELzjh0mCreFjt0m2v72zLi3yHE0QbeE,7650
121
+ prediction_market_agent_tooling-0.60.0.dist-info/METADATA,sha256=fjcvHbk58d2WjHxPfN_i2lxX73J-MWoaeyr-EchbuBQ,8629
122
+ prediction_market_agent_tooling-0.60.0.dist-info/WHEEL,sha256=XbeZDeTWKc1w7CSIyre5aMDU_-PohRwTQceYnisIYYY,88
123
+ prediction_market_agent_tooling-0.60.0.dist-info/entry_points.txt,sha256=m8PukHbeH5g0IAAmOf_1Ahm-sGAMdhSSRQmwtpmi2s8,81
124
+ prediction_market_agent_tooling-0.60.0.dist-info/RECORD,,