prediction-market-agent-tooling 0.60.0.dev412__py3-none-any.whl → 0.60.1__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.
- prediction_market_agent_tooling/config.py +8 -0
- prediction_market_agent_tooling/deploy/agent.py +3 -3
- prediction_market_agent_tooling/markets/omen/omen.py +55 -19
- prediction_market_agent_tooling/markets/omen/omen_resolving.py +8 -2
- prediction_market_agent_tooling/markets/omen/omen_subgraph_handler.py +8 -6
- prediction_market_agent_tooling/markets/seer/seer.py +2 -9
- prediction_market_agent_tooling/tools/caches/db_cache.py +21 -6
- prediction_market_agent_tooling/tools/contract.py +8 -0
- prediction_market_agent_tooling/tools/tavily/tavily_search.py +5 -1
- prediction_market_agent_tooling/tools/tokens/auto_withdraw.py +1 -1
- prediction_market_agent_tooling/tools/tokens/main_token.py +1 -1
- {prediction_market_agent_tooling-0.60.0.dev412.dist-info → prediction_market_agent_tooling-0.60.1.dist-info}/METADATA +1 -1
- {prediction_market_agent_tooling-0.60.0.dev412.dist-info → prediction_market_agent_tooling-0.60.1.dist-info}/RECORD +16 -16
- {prediction_market_agent_tooling-0.60.0.dev412.dist-info → prediction_market_agent_tooling-0.60.1.dist-info}/LICENSE +0 -0
- {prediction_market_agent_tooling-0.60.0.dev412.dist-info → prediction_market_agent_tooling-0.60.1.dist-info}/WHEEL +0 -0
- {prediction_market_agent_tooling-0.60.0.dev412.dist-info → prediction_market_agent_tooling-0.60.1.dist-info}/entry_points.txt +0 -0
@@ -91,6 +91,14 @@ class APIKeys(BaseSettings):
|
|
91
91
|
raise ValueError("Data must be a dictionary.")
|
92
92
|
return data
|
93
93
|
|
94
|
+
def copy_without_safe_address(self) -> "APIKeys":
|
95
|
+
"""
|
96
|
+
This is handy when you operate in environment with SAFE_ADDRESS, but need to execute transaction using EOA.
|
97
|
+
"""
|
98
|
+
data = self.model_copy(deep=True)
|
99
|
+
data.SAFE_ADDRESS = None
|
100
|
+
return data
|
101
|
+
|
94
102
|
@property
|
95
103
|
def manifold_user_id(self) -> str:
|
96
104
|
return get_authenticated_user(
|
@@ -50,7 +50,7 @@ from prediction_market_agent_tooling.markets.markets import (
|
|
50
50
|
have_bet_on_market_since,
|
51
51
|
)
|
52
52
|
from prediction_market_agent_tooling.markets.omen.omen import (
|
53
|
-
|
53
|
+
send_keeping_token_to_eoa_xdai,
|
54
54
|
)
|
55
55
|
from prediction_market_agent_tooling.monitor.monitor_app import (
|
56
56
|
MARKET_TYPE_TO_DEPLOYED_AGENT,
|
@@ -416,10 +416,10 @@ class DeployablePredictionAgent(DeployableAgent):
|
|
416
416
|
if market_type.is_blockchain_market:
|
417
417
|
# Exchange wxdai back to xdai if the balance is getting low, so we can keep paying for fees.
|
418
418
|
if self.min_balance_to_keep_in_native_currency is not None:
|
419
|
-
|
419
|
+
send_keeping_token_to_eoa_xdai(
|
420
420
|
api_keys,
|
421
421
|
min_required_balance=self.min_balance_to_keep_in_native_currency,
|
422
|
-
|
422
|
+
multiplier=3,
|
423
423
|
)
|
424
424
|
|
425
425
|
def process_market(
|
@@ -1315,41 +1315,77 @@ def get_binary_market_p_yes_history(market: OmenAgentMarket) -> list[Probability
|
|
1315
1315
|
return history
|
1316
1316
|
|
1317
1317
|
|
1318
|
-
def
|
1318
|
+
def send_keeping_token_to_eoa_xdai(
|
1319
1319
|
api_keys: APIKeys,
|
1320
1320
|
min_required_balance: xDai,
|
1321
|
-
|
1321
|
+
multiplier: float = 1.0,
|
1322
1322
|
web3: Web3 | None = None,
|
1323
1323
|
) -> None:
|
1324
1324
|
"""
|
1325
|
-
Keeps xDai balance above the minimum required balance by
|
1326
|
-
Optionally, the amount to
|
1325
|
+
Keeps xDai balance above the minimum required balance by transfering keeping token to xDai.
|
1326
|
+
Optionally, the amount to transfer can be multiplied by the `multiplier`, which can be useful to keep a buffer.
|
1327
1327
|
"""
|
1328
|
-
#
|
1329
|
-
|
1328
|
+
# Only wxDai can be withdrawn to xDai. Anything else needs to be swapped to wxDai first.
|
1329
|
+
wxdai_contract = WrappedxDaiContract()
|
1330
|
+
|
1331
|
+
if KEEPING_ERC20_TOKEN.address != wxdai_contract.address:
|
1332
|
+
raise RuntimeError(
|
1333
|
+
"Only wxDai can be withdrawn to xDai. Rest is not implemented for simplicity for now. It would require trading using CoW, or double withdrawing from sDai"
|
1334
|
+
)
|
1330
1335
|
|
1331
|
-
|
1336
|
+
current_balances_eoa = get_balances(api_keys.public_key, web3)
|
1337
|
+
current_balances_betting = get_balances(api_keys.bet_from_address, web3)
|
1338
|
+
|
1339
|
+
# xDai needs to be in our wallet where we pay transaction fees, so do not check for Safe's balance here, but for EOA.
|
1340
|
+
if current_balances_eoa.xdai >= min_required_balance:
|
1332
1341
|
logger.info(
|
1333
|
-
f"Current xDai balance {
|
1342
|
+
f"Current xDai balance {current_balances_eoa.xdai} is more or equal than the required minimum balance {min_required_balance}."
|
1334
1343
|
)
|
1335
1344
|
return
|
1336
1345
|
|
1337
1346
|
need_to_withdraw = xDai(
|
1338
|
-
(min_required_balance -
|
1347
|
+
(min_required_balance - current_balances_eoa.xdai) * multiplier
|
1339
1348
|
)
|
1349
|
+
need_to_withdraw_wei = xdai_to_wei(need_to_withdraw)
|
1340
1350
|
|
1341
|
-
if
|
1342
|
-
|
1343
|
-
|
1351
|
+
if current_balances_eoa.wxdai >= need_to_withdraw:
|
1352
|
+
# If EOA has enough of wxDai, simply withdraw it.
|
1353
|
+
logger.info(
|
1354
|
+
f"Withdrawing {need_to_withdraw} wxDai from EOA to keep the EOA's xDai balance above the minimum required balance {min_required_balance}."
|
1355
|
+
)
|
1356
|
+
wxdai_contract.withdraw(
|
1357
|
+
api_keys=api_keys.copy_without_safe_address(),
|
1358
|
+
amount_wei=need_to_withdraw_wei,
|
1359
|
+
web3=web3,
|
1344
1360
|
)
|
1345
1361
|
|
1346
|
-
|
1347
|
-
|
1348
|
-
|
1349
|
-
|
1350
|
-
|
1351
|
-
|
1352
|
-
|
1362
|
+
elif current_balances_betting.wxdai >= need_to_withdraw:
|
1363
|
+
# If Safe has enough of wxDai:
|
1364
|
+
# First send them to EOA's address.
|
1365
|
+
logger.info(
|
1366
|
+
f"Transfering {need_to_withdraw} wxDai from betting address to EOA's address."
|
1367
|
+
)
|
1368
|
+
wxdai_contract.transferFrom(
|
1369
|
+
api_keys=api_keys,
|
1370
|
+
sender=api_keys.bet_from_address,
|
1371
|
+
recipient=api_keys.public_key,
|
1372
|
+
amount_wei=need_to_withdraw_wei,
|
1373
|
+
web3=web3,
|
1374
|
+
)
|
1375
|
+
# And then simply withdraw it.
|
1376
|
+
logger.info(
|
1377
|
+
f"Withdrawing {need_to_withdraw} wxDai from EOA to keep the EOA's xDai balance above the minimum required balance {min_required_balance}."
|
1378
|
+
)
|
1379
|
+
wxdai_contract.withdraw(
|
1380
|
+
api_keys=api_keys.copy_without_safe_address(),
|
1381
|
+
amount_wei=need_to_withdraw_wei,
|
1382
|
+
web3=web3,
|
1383
|
+
)
|
1384
|
+
|
1385
|
+
else:
|
1386
|
+
raise OutOfFundsError(
|
1387
|
+
f"Current wxDai balance ({current_balances_eoa=}, {current_balances_betting=}) is less than the required minimum wxDai to withdraw {need_to_withdraw}."
|
1388
|
+
)
|
1353
1389
|
|
1354
1390
|
|
1355
1391
|
def get_buy_outcome_token_amount(
|
@@ -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
|
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(
|
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
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
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
|
-
) =
|
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
|
-
) =
|
397
|
+
) = SAFE_COLLATERAL_TOKENS_ADDRESSES,
|
396
398
|
category: str | None = None,
|
397
399
|
) -> t.List[OmenMarket]:
|
398
400
|
"""
|
@@ -22,10 +22,7 @@ from prediction_market_agent_tooling.markets.agent_market import (
|
|
22
22
|
ProcessedTradedMarket,
|
23
23
|
SortBy,
|
24
24
|
)
|
25
|
-
from prediction_market_agent_tooling.markets.blockchain_utils import
|
26
|
-
get_total_balance,
|
27
|
-
store_trades,
|
28
|
-
)
|
25
|
+
from prediction_market_agent_tooling.markets.blockchain_utils import store_trades
|
29
26
|
from prediction_market_agent_tooling.markets.data_models import (
|
30
27
|
BetAmount,
|
31
28
|
Currency,
|
@@ -167,11 +164,7 @@ class SeerAgentMarket(AgentMarket):
|
|
167
164
|
|
168
165
|
@staticmethod
|
169
166
|
def verify_operational_balance(api_keys: APIKeys) -> bool:
|
170
|
-
return
|
171
|
-
api_keys.public_key,
|
172
|
-
# Use `public_key`, not `bet_from_address` because transaction costs are paid from the EOA wallet.
|
173
|
-
sum_wxdai=False,
|
174
|
-
) > xdai_type(0.001)
|
167
|
+
return OmenAgentMarket.verify_operational_balance(api_keys=api_keys)
|
175
168
|
|
176
169
|
@staticmethod
|
177
170
|
def from_data_model(model: SeerMarket) -> "SeerAgentMarket":
|
@@ -14,9 +14,11 @@ 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
|
21
|
+
from sqlalchemy.exc import DataError
|
20
22
|
from sqlmodel import Field, SQLModel, desc, select
|
21
23
|
|
22
24
|
from prediction_market_agent_tooling.config import APIKeys
|
@@ -50,6 +52,7 @@ def db_cache(
|
|
50
52
|
api_keys: APIKeys | None = None,
|
51
53
|
ignore_args: Sequence[str] | None = None,
|
52
54
|
ignore_arg_types: Sequence[type] | None = None,
|
55
|
+
log_error_on_unsavable_data: bool = True,
|
53
56
|
) -> Callable[[FunctionT], FunctionT]:
|
54
57
|
...
|
55
58
|
|
@@ -63,6 +66,7 @@ def db_cache(
|
|
63
66
|
api_keys: APIKeys | None = None,
|
64
67
|
ignore_args: Sequence[str] | None = None,
|
65
68
|
ignore_arg_types: Sequence[type] | None = None,
|
69
|
+
log_error_on_unsavable_data: bool = True,
|
66
70
|
) -> FunctionT:
|
67
71
|
...
|
68
72
|
|
@@ -75,6 +79,7 @@ def db_cache(
|
|
75
79
|
api_keys: APIKeys | None = None,
|
76
80
|
ignore_args: Sequence[str] | None = None,
|
77
81
|
ignore_arg_types: Sequence[type] | None = None,
|
82
|
+
log_error_on_unsavable_data: bool = True,
|
78
83
|
) -> FunctionT | Callable[[FunctionT], FunctionT]:
|
79
84
|
if func is None:
|
80
85
|
# Ugly Pythonic way to support this decorator as `@postgres_cache` but also `@postgres_cache(max_age=timedelta(days=3))`
|
@@ -200,12 +205,22 @@ def db_cache(
|
|
200
205
|
result=computed_result,
|
201
206
|
created_at=utcnow(),
|
202
207
|
)
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
|
208
|
+
# Do not raise an exception if saving to the database fails, just log it and let the agent continue the work.
|
209
|
+
try:
|
210
|
+
with DBManager(
|
211
|
+
api_keys.sqlalchemy_db_url.get_secret_value()
|
212
|
+
).get_session() as session:
|
213
|
+
logger.info(f"Saving {cache_entry} into database.")
|
214
|
+
session.add(cache_entry)
|
215
|
+
session.commit()
|
216
|
+
except (DataError, psycopg2.errors.UntranslatableCharacter) as e:
|
217
|
+
(logger.error if log_error_on_unsavable_data else logger.warning)(
|
218
|
+
f"Failed to save {cache_entry} into database, ignoring, because: {e}"
|
219
|
+
)
|
220
|
+
except Exception:
|
221
|
+
logger.exception(
|
222
|
+
f"Failed to save {cache_entry} into database, ignoring."
|
223
|
+
)
|
209
224
|
|
210
225
|
return computed_result
|
211
226
|
|
@@ -336,6 +336,7 @@ class ContractERC4626BaseClass(ContractERC20BaseClass):
|
|
336
336
|
tx_params: t.Optional[TxParams] = None,
|
337
337
|
web3: Web3 | None = None,
|
338
338
|
) -> TxReceipt:
|
339
|
+
# assets_wei is the amount of assets (underlying erc20 token amount) we want to withdraw.
|
339
340
|
receiver = receiver or api_keys.bet_from_address
|
340
341
|
owner = owner or api_keys.bet_from_address
|
341
342
|
return self.send(
|
@@ -346,6 +347,13 @@ class ContractERC4626BaseClass(ContractERC20BaseClass):
|
|
346
347
|
web3=web3,
|
347
348
|
)
|
348
349
|
|
350
|
+
def withdraw_in_shares(
|
351
|
+
self, api_keys: APIKeys, shares_wei: Wei, web3: Web3 | None = None
|
352
|
+
) -> TxReceipt:
|
353
|
+
# shares_wei is the amount of shares we want to withdraw.
|
354
|
+
assets = self.convertToAssets(shares_wei, web3=web3)
|
355
|
+
return self.withdraw(api_keys=api_keys, assets_wei=assets, web3=web3)
|
356
|
+
|
349
357
|
def convertToShares(self, assets: Wei, web3: Web3 | None = None) -> Wei:
|
350
358
|
shares: Wei = self.call("convertToShares", [assets], web3=web3)
|
351
359
|
return shares
|
@@ -14,7 +14,11 @@ from prediction_market_agent_tooling.tools.tavily.tavily_models import (
|
|
14
14
|
DEFAULT_SCORE_THRESHOLD = 0.75 # Based on some empirical testing, anything lower wasn't very relevant to the question being asked
|
15
15
|
|
16
16
|
|
17
|
-
@db_cache(
|
17
|
+
@db_cache(
|
18
|
+
max_age=timedelta(days=1),
|
19
|
+
ignore_args=["api_keys"],
|
20
|
+
log_error_on_unsavable_data=False,
|
21
|
+
)
|
18
22
|
def tavily_search(
|
19
23
|
query: str,
|
20
24
|
search_depth: t.Literal["basic", "advanced"] = "advanced",
|
@@ -53,7 +53,7 @@ def auto_withdraw_collateral_token(
|
|
53
53
|
logger.info(
|
54
54
|
f"Withdrawing {wei_to_xdai(amount_wei)} from {collateral_token_contract.symbol_cached(web3)} into {KEEPING_ERC20_TOKEN.symbol_cached(web3)}"
|
55
55
|
)
|
56
|
-
collateral_token_contract.
|
56
|
+
collateral_token_contract.withdraw_in_shares(
|
57
57
|
api_keys,
|
58
58
|
amount_wei,
|
59
59
|
web3=web3,
|
@@ -9,7 +9,7 @@ from prediction_market_agent_tooling.tools.contract import (
|
|
9
9
|
# except for a small portion that will be kept in the native token of the network to pay for the fees.
|
10
10
|
# Auto deposit must work from native token into this token.
|
11
11
|
# If changed, then keep in mind that we assume this token is equal to 1 USD.
|
12
|
-
# Also if changed, `
|
12
|
+
# Also if changed, `send_keeping_token_to_eoa_xdai` will require update.
|
13
13
|
KEEPING_ERC20_TOKEN = ContractDepositableWrapperERC20OnGnosisChain(
|
14
14
|
address=WRAPPED_XDAI_CONTRACT_ADDRESS
|
15
15
|
)
|
@@ -20,8 +20,8 @@ prediction_market_agent_tooling/benchmark/__init__.py,sha256=47DEQpj8HBSa-_TImW-
|
|
20
20
|
prediction_market_agent_tooling/benchmark/agents.py,sha256=B1-uWdyeN4GGKMWGK_-CcAFJg1m9Y_XuaeIHPB29QR8,3971
|
21
21
|
prediction_market_agent_tooling/benchmark/benchmark.py,sha256=MqTiaaJ3cYiOLUVR7OyImLWxcEya3Rl5JyFYW-K0lwM,17097
|
22
22
|
prediction_market_agent_tooling/benchmark/utils.py,sha256=D0MfUkVZllmvcU0VOurk9tcKT7JTtwwOp-63zuCBVuc,2880
|
23
|
-
prediction_market_agent_tooling/config.py,sha256=
|
24
|
-
prediction_market_agent_tooling/deploy/agent.py,sha256=
|
23
|
+
prediction_market_agent_tooling/config.py,sha256=hiZc_A6q7-_kHW2OdavHNBjNrCpxIEqaklfIf0TFyy0,9499
|
24
|
+
prediction_market_agent_tooling/deploy/agent.py,sha256=TRQ5F-b3NA6zVn6tJBlXl_ZDI73b4q7WPZCMxFxzTtE,24847
|
25
25
|
prediction_market_agent_tooling/deploy/agent_example.py,sha256=dIIdZashExWk9tOdyDjw87AuUcGyM7jYxNChYrVK2dM,1001
|
26
26
|
prediction_market_agent_tooling/deploy/betting_strategy.py,sha256=Y6Pb8OfSb6galRbfdNBvvNTgO-4dR2ybJ4o5GKJcMoM,12894
|
27
27
|
prediction_market_agent_tooling/deploy/constants.py,sha256=M5ty8URipYMGe_G-RzxRydK3AFL6CyvmqCraJUrLBnE,82
|
@@ -51,18 +51,18 @@ prediction_market_agent_tooling/markets/metaculus/data_models.py,sha256=FaBCTPPe
|
|
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
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=
|
54
|
+
prediction_market_agent_tooling/markets/omen/omen.py,sha256=ZLKa0X5hSQucqcqIyuwUM_NzHuAlbLZzUPSqSQBUscE,53213
|
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=
|
58
|
-
prediction_market_agent_tooling/markets/omen/omen_subgraph_handler.py,sha256=
|
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
|
62
62
|
prediction_market_agent_tooling/markets/polymarket/polymarket.py,sha256=NRoZK71PtH8kkangMqme7twcAXhRJSSabbmOir-UnAI,3418
|
63
63
|
prediction_market_agent_tooling/markets/polymarket/utils.py,sha256=DImFxeMg8lTfsEDZ8FavndW38TfUsCkawcVGnucsuGo,2029
|
64
64
|
prediction_market_agent_tooling/markets/seer/data_models.py,sha256=HGJv4XSvCxXLLC5VwxZTZ5E4w_bWGKv50fM_6ssloxI,8203
|
65
|
-
prediction_market_agent_tooling/markets/seer/seer.py,sha256=
|
65
|
+
prediction_market_agent_tooling/markets/seer/seer.py,sha256=r21sXj_4_oIG2L1N5l56vEYGI_q2RGem_6G-Sixkbck,12954
|
66
66
|
prediction_market_agent_tooling/markets/seer/seer_contracts.py,sha256=E7CYAKZiK6cg3dyj1kJuIPKSYYUft98F64shF5S0g4s,2730
|
67
67
|
prediction_market_agent_tooling/markets/seer/seer_subgraph_handler.py,sha256=aycOvJ1_f5m7xzd_Hlx98_-VeM869IY9mTzJ2zn_VEM,8577
|
68
68
|
prediction_market_agent_tooling/monitor/financial_metrics/financial_metrics.py,sha256=fjIgjDIx5MhH5mwf7S0cspLOOSU3elYLhGYoIiM26mU,2746
|
@@ -80,10 +80,10 @@ 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=
|
83
|
+
prediction_market_agent_tooling/tools/caches/db_cache.py,sha256=j8ULI7z0BDaKg16Vua1UbhrIKEjqpa8800haYPQaF9w,11358
|
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
|
-
prediction_market_agent_tooling/tools/contract.py,sha256=
|
86
|
+
prediction_market_agent_tooling/tools/contract.py,sha256=BCl3R-n5jpp5XPAho9yTuUxRbOoKbZSga1Qaa4RfAp8,20945
|
87
87
|
prediction_market_agent_tooling/tools/costs.py,sha256=EaAJ7v9laD4VEV3d8B44M4u3_oEO_H16jRVCdoZ93Uw,954
|
88
88
|
prediction_market_agent_tooling/tools/cow/cow_manager.py,sha256=WK6Uk722VotjLHtxDPHxvwBrWVb3rvTegg_3w58ehwU,3869
|
89
89
|
prediction_market_agent_tooling/tools/cow/cow_order.py,sha256=M3zQohgAzy_LETnf9rKtS1L9rr7FP92CH6v0G2laZkM,4435
|
@@ -110,15 +110,15 @@ prediction_market_agent_tooling/tools/safe.py,sha256=9vxGGLvSPnfy-sxUFDpBTe8omqp
|
|
110
110
|
prediction_market_agent_tooling/tools/singleton.py,sha256=CiIELUiI-OeS7U7eeHEt0rnVhtQGzwoUdAgn_7u_GBM,729
|
111
111
|
prediction_market_agent_tooling/tools/streamlit_user_login.py,sha256=NXEqfjT9Lc9QtliwSGRASIz1opjQ7Btme43H4qJbzgE,3010
|
112
112
|
prediction_market_agent_tooling/tools/tavily/tavily_models.py,sha256=5ldQs1pZe6uJ5eDAuP4OLpzmcqYShlIV67kttNFvGS0,342
|
113
|
-
prediction_market_agent_tooling/tools/tavily/tavily_search.py,sha256=
|
113
|
+
prediction_market_agent_tooling/tools/tavily/tavily_search.py,sha256=pPs0qZNfJ7G-1ajfz0iaWOBQyiC0TbcShfrW8T39jtg,3859
|
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=
|
116
|
-
prediction_market_agent_tooling/tools/tokens/main_token.py,sha256=
|
115
|
+
prediction_market_agent_tooling/tools/tokens/auto_withdraw.py,sha256=25Y0H1p0hSD3gWShKPcJ5BckQc3nr_hOAvImOFODC0w,3160
|
116
|
+
prediction_market_agent_tooling/tools/tokens/main_token.py,sha256=SWkoa2VYEoNBWR5Umraa2g-LEAwQB252fQJ28oI49pI,706
|
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.60.
|
121
|
-
prediction_market_agent_tooling-0.60.
|
122
|
-
prediction_market_agent_tooling-0.60.
|
123
|
-
prediction_market_agent_tooling-0.60.
|
124
|
-
prediction_market_agent_tooling-0.60.
|
120
|
+
prediction_market_agent_tooling-0.60.1.dist-info/LICENSE,sha256=6or154nLLU6bELzjh0mCreFjt0m2v72zLi3yHE0QbeE,7650
|
121
|
+
prediction_market_agent_tooling-0.60.1.dist-info/METADATA,sha256=UAGTKEHQz1wnZiLPHWxxgHTPoQK75ouA578h__WZ9S0,8629
|
122
|
+
prediction_market_agent_tooling-0.60.1.dist-info/WHEEL,sha256=XbeZDeTWKc1w7CSIyre5aMDU_-PohRwTQceYnisIYYY,88
|
123
|
+
prediction_market_agent_tooling-0.60.1.dist-info/entry_points.txt,sha256=m8PukHbeH5g0IAAmOf_1Ahm-sGAMdhSSRQmwtpmi2s8,81
|
124
|
+
prediction_market_agent_tooling-0.60.1.dist-info/RECORD,,
|
File without changes
|
File without changes
|