prediction-market-agent-tooling 0.60.1.dev424__py3-none-any.whl → 0.60.2__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 +14 -3
- prediction_market_agent_tooling/deploy/agent.py +10 -5
- prediction_market_agent_tooling/markets/omen/omen.py +55 -19
- prediction_market_agent_tooling/markets/omen/omen_resolving.py +17 -0
- prediction_market_agent_tooling/markets/seer/seer.py +2 -9
- prediction_market_agent_tooling/tools/caches/db_cache.py +6 -2
- prediction_market_agent_tooling/tools/tavily/tavily_search.py +5 -1
- prediction_market_agent_tooling/tools/tokens/main_token.py +4 -1
- {prediction_market_agent_tooling-0.60.1.dev424.dist-info → prediction_market_agent_tooling-0.60.2.dist-info}/METADATA +1 -1
- {prediction_market_agent_tooling-0.60.1.dev424.dist-info → prediction_market_agent_tooling-0.60.2.dist-info}/RECORD +13 -13
- {prediction_market_agent_tooling-0.60.1.dev424.dist-info → prediction_market_agent_tooling-0.60.2.dist-info}/LICENSE +0 -0
- {prediction_market_agent_tooling-0.60.1.dev424.dist-info → prediction_market_agent_tooling-0.60.2.dist-info}/WHEEL +0 -0
- {prediction_market_agent_tooling-0.60.1.dev424.dist-info → prediction_market_agent_tooling-0.60.2.dist-info}/entry_points.txt +0 -0
@@ -3,13 +3,13 @@ import typing as t
|
|
3
3
|
from copy import deepcopy
|
4
4
|
|
5
5
|
from eth_account.signers.local import LocalAccount
|
6
|
-
from pydantic import Field, model_validator
|
6
|
+
from pydantic import BeforeValidator, Field, model_validator
|
7
7
|
from pydantic.types import SecretStr
|
8
8
|
from pydantic.v1.types import SecretStr as SecretStrV1
|
9
9
|
from pydantic_settings import BaseSettings, SettingsConfigDict
|
10
10
|
from safe_eth.eth import EthereumClient
|
11
11
|
from safe_eth.safe.safe import SafeV141
|
12
|
-
from web3 import Account
|
12
|
+
from web3 import Account, Web3
|
13
13
|
|
14
14
|
from prediction_market_agent_tooling.deploy.gcp.utils import gcp_get_secret_value
|
15
15
|
from prediction_market_agent_tooling.gtypes import (
|
@@ -39,7 +39,10 @@ class APIKeys(BaseSettings):
|
|
39
39
|
METACULUS_API_KEY: t.Optional[SecretStr] = None
|
40
40
|
METACULUS_USER_ID: t.Optional[int] = None
|
41
41
|
BET_FROM_PRIVATE_KEY: t.Optional[PrivateKey] = None
|
42
|
-
SAFE_ADDRESS: t.
|
42
|
+
SAFE_ADDRESS: t.Annotated[
|
43
|
+
ChecksumAddress | None,
|
44
|
+
BeforeValidator(lambda x: x if x is None else Web3.to_checksum_address(x)),
|
45
|
+
] = None
|
43
46
|
OPENAI_API_KEY: t.Optional[SecretStr] = None
|
44
47
|
GRAPH_API_KEY: t.Optional[SecretStr] = None
|
45
48
|
TENDERLY_FORK_RPC: t.Optional[str] = None
|
@@ -91,6 +94,14 @@ class APIKeys(BaseSettings):
|
|
91
94
|
raise ValueError("Data must be a dictionary.")
|
92
95
|
return data
|
93
96
|
|
97
|
+
def copy_without_safe_address(self) -> "APIKeys":
|
98
|
+
"""
|
99
|
+
This is handy when you operate in environment with SAFE_ADDRESS, but need to execute transaction using EOA.
|
100
|
+
"""
|
101
|
+
data = self.model_copy(deep=True)
|
102
|
+
data.SAFE_ADDRESS = None
|
103
|
+
return data
|
104
|
+
|
94
105
|
@property
|
95
106
|
def manifold_user_id(self) -> str:
|
96
107
|
return get_authenticated_user(
|
@@ -30,7 +30,7 @@ from prediction_market_agent_tooling.deploy.trade_interval import (
|
|
30
30
|
FixedInterval,
|
31
31
|
TradeInterval,
|
32
32
|
)
|
33
|
-
from prediction_market_agent_tooling.gtypes import xDai
|
33
|
+
from prediction_market_agent_tooling.gtypes import xDai
|
34
34
|
from prediction_market_agent_tooling.loggers import logger
|
35
35
|
from prediction_market_agent_tooling.markets.agent_market import (
|
36
36
|
AgentMarket,
|
@@ -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,
|
@@ -62,6 +62,9 @@ from prediction_market_agent_tooling.tools.custom_exceptions import (
|
|
62
62
|
from prediction_market_agent_tooling.tools.is_invalid import is_invalid
|
63
63
|
from prediction_market_agent_tooling.tools.is_predictable import is_predictable_binary
|
64
64
|
from prediction_market_agent_tooling.tools.langfuse_ import langfuse_context, observe
|
65
|
+
from prediction_market_agent_tooling.tools.tokens.main_token import (
|
66
|
+
MINIMUM_NATIVE_TOKEN_IN_EOA_FOR_FEES,
|
67
|
+
)
|
65
68
|
from prediction_market_agent_tooling.tools.utils import DatetimeUTC, utcnow
|
66
69
|
|
67
70
|
MAX_AVAILABLE_MARKETS = 1000
|
@@ -289,7 +292,9 @@ class DeployablePredictionAgent(DeployableAgent):
|
|
289
292
|
allow_invalid_questions: bool = False
|
290
293
|
same_market_trade_interval: TradeInterval = FixedInterval(timedelta(hours=24))
|
291
294
|
|
292
|
-
min_balance_to_keep_in_native_currency: xDai | None =
|
295
|
+
min_balance_to_keep_in_native_currency: xDai | None = (
|
296
|
+
MINIMUM_NATIVE_TOKEN_IN_EOA_FOR_FEES
|
297
|
+
)
|
293
298
|
|
294
299
|
# Only Metaculus allows to post predictions without trading (buying/selling of outcome tokens).
|
295
300
|
supported_markets: t.Sequence[MarketType] = [MarketType.METACULUS]
|
@@ -416,10 +421,10 @@ class DeployablePredictionAgent(DeployableAgent):
|
|
416
421
|
if market_type.is_blockchain_market:
|
417
422
|
# Exchange wxdai back to xdai if the balance is getting low, so we can keep paying for fees.
|
418
423
|
if self.min_balance_to_keep_in_native_currency is not None:
|
419
|
-
|
424
|
+
send_keeping_token_to_eoa_xdai(
|
420
425
|
api_keys,
|
421
426
|
min_required_balance=self.min_balance_to_keep_in_native_currency,
|
422
|
-
|
427
|
+
multiplier=3,
|
423
428
|
)
|
424
429
|
|
425
430
|
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(
|
@@ -18,6 +18,9 @@ from prediction_market_agent_tooling.markets.omen.data_models import (
|
|
18
18
|
OmenMarket,
|
19
19
|
RealityQuestion,
|
20
20
|
)
|
21
|
+
from prediction_market_agent_tooling.markets.omen.omen import (
|
22
|
+
send_keeping_token_to_eoa_xdai,
|
23
|
+
)
|
21
24
|
from prediction_market_agent_tooling.markets.omen.omen_contracts import (
|
22
25
|
OmenOracleContract,
|
23
26
|
OmenRealitioContract,
|
@@ -25,11 +28,15 @@ from prediction_market_agent_tooling.markets.omen.omen_contracts import (
|
|
25
28
|
from prediction_market_agent_tooling.markets.omen.omen_subgraph_handler import (
|
26
29
|
OmenSubgraphHandler,
|
27
30
|
)
|
31
|
+
from prediction_market_agent_tooling.tools.tokens.main_token import (
|
32
|
+
MINIMUM_NATIVE_TOKEN_IN_EOA_FOR_FEES,
|
33
|
+
)
|
28
34
|
from prediction_market_agent_tooling.tools.utils import utcnow
|
29
35
|
from prediction_market_agent_tooling.tools.web3_utils import (
|
30
36
|
ZERO_BYTES,
|
31
37
|
wei_to_xdai,
|
32
38
|
xdai_to_wei,
|
39
|
+
xdai_type,
|
33
40
|
)
|
34
41
|
|
35
42
|
|
@@ -139,6 +146,16 @@ def finalize_markets(
|
|
139
146
|
logger.info(
|
140
147
|
f"[{idx+1} / {len(markets_with_resolutions)}] Looking into {market.url=} {market.question_title=}"
|
141
148
|
)
|
149
|
+
|
150
|
+
# If we don't have enough of xDai for bond, try to get it from the keeping token.
|
151
|
+
send_keeping_token_to_eoa_xdai(
|
152
|
+
api_keys=api_keys,
|
153
|
+
min_required_balance=xdai_type(
|
154
|
+
realitio_bond + MINIMUM_NATIVE_TOKEN_IN_EOA_FOR_FEES
|
155
|
+
),
|
156
|
+
web3=web3,
|
157
|
+
)
|
158
|
+
|
142
159
|
closed_before_days = (utcnow() - market.close_time).days
|
143
160
|
|
144
161
|
if resolution is None:
|
@@ -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":
|
@@ -18,6 +18,7 @@ import psycopg2
|
|
18
18
|
from pydantic import BaseModel
|
19
19
|
from sqlalchemy import Column
|
20
20
|
from sqlalchemy.dialects.postgresql import JSONB
|
21
|
+
from sqlalchemy.exc import DataError
|
21
22
|
from sqlmodel import Field, SQLModel, desc, select
|
22
23
|
|
23
24
|
from prediction_market_agent_tooling.config import APIKeys
|
@@ -51,6 +52,7 @@ def db_cache(
|
|
51
52
|
api_keys: APIKeys | None = None,
|
52
53
|
ignore_args: Sequence[str] | None = None,
|
53
54
|
ignore_arg_types: Sequence[type] | None = None,
|
55
|
+
log_error_on_unsavable_data: bool = True,
|
54
56
|
) -> Callable[[FunctionT], FunctionT]:
|
55
57
|
...
|
56
58
|
|
@@ -64,6 +66,7 @@ def db_cache(
|
|
64
66
|
api_keys: APIKeys | None = None,
|
65
67
|
ignore_args: Sequence[str] | None = None,
|
66
68
|
ignore_arg_types: Sequence[type] | None = None,
|
69
|
+
log_error_on_unsavable_data: bool = True,
|
67
70
|
) -> FunctionT:
|
68
71
|
...
|
69
72
|
|
@@ -76,6 +79,7 @@ def db_cache(
|
|
76
79
|
api_keys: APIKeys | None = None,
|
77
80
|
ignore_args: Sequence[str] | None = None,
|
78
81
|
ignore_arg_types: Sequence[type] | None = None,
|
82
|
+
log_error_on_unsavable_data: bool = True,
|
79
83
|
) -> FunctionT | Callable[[FunctionT], FunctionT]:
|
80
84
|
if func is None:
|
81
85
|
# Ugly Pythonic way to support this decorator as `@postgres_cache` but also `@postgres_cache(max_age=timedelta(days=3))`
|
@@ -209,8 +213,8 @@ def db_cache(
|
|
209
213
|
logger.info(f"Saving {cache_entry} into database.")
|
210
214
|
session.add(cache_entry)
|
211
215
|
session.commit()
|
212
|
-
except psycopg2.errors.UntranslatableCharacter as e:
|
213
|
-
logger.warning(
|
216
|
+
except (DataError, psycopg2.errors.UntranslatableCharacter) as e:
|
217
|
+
(logger.error if log_error_on_unsavable_data else logger.warning)(
|
214
218
|
f"Failed to save {cache_entry} into database, ignoring, because: {e}"
|
215
219
|
)
|
216
220
|
except Exception:
|
@@ -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",
|
@@ -1,3 +1,4 @@
|
|
1
|
+
from prediction_market_agent_tooling.gtypes import xdai_type
|
1
2
|
from prediction_market_agent_tooling.markets.omen.omen_constants import (
|
2
3
|
WRAPPED_XDAI_CONTRACT_ADDRESS,
|
3
4
|
)
|
@@ -9,7 +10,9 @@ from prediction_market_agent_tooling.tools.contract import (
|
|
9
10
|
# except for a small portion that will be kept in the native token of the network to pay for the fees.
|
10
11
|
# Auto deposit must work from native token into this token.
|
11
12
|
# If changed, then keep in mind that we assume this token is equal to 1 USD.
|
12
|
-
# Also if changed, `
|
13
|
+
# Also if changed, `send_keeping_token_to_eoa_xdai` will require update.
|
13
14
|
KEEPING_ERC20_TOKEN = ContractDepositableWrapperERC20OnGnosisChain(
|
14
15
|
address=WRAPPED_XDAI_CONTRACT_ADDRESS
|
15
16
|
)
|
17
|
+
|
18
|
+
MINIMUM_NATIVE_TOKEN_IN_EOA_FOR_FEES = xdai_type(0.1)
|
@@ -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=eiJPhb736Jtgrbh2d035_bFz2YaIiipUPapgIjYNqM4,9629
|
24
|
+
prediction_market_agent_tooling/deploy/agent.py,sha256=tC0MQKR_63SdsfDrCWXAko0yP01zvP7tuspAbjCj0eE,24988
|
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,10 +51,10 @@ 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=
|
57
|
+
prediction_market_agent_tooling/markets/omen/omen_resolving.py,sha256=B4z9dPqtEfows8-1hkstBLLS_7X0L9z3CG41adyCYgg,10336
|
58
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
|
@@ -62,7 +62,7 @@ prediction_market_agent_tooling/markets/polymarket/data_models_web.py,sha256=VZh
|
|
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,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=
|
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
86
|
prediction_market_agent_tooling/tools/contract.py,sha256=BCl3R-n5jpp5XPAho9yTuUxRbOoKbZSga1Qaa4RfAp8,20945
|
@@ -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
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=
|
116
|
+
prediction_market_agent_tooling/tools/tokens/main_token.py,sha256=7JPgVF4RbiFzLDQVBkBuC--eUoM1AYOcJ4VygbmK5yo,822
|
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.2.dist-info/LICENSE,sha256=6or154nLLU6bELzjh0mCreFjt0m2v72zLi3yHE0QbeE,7650
|
121
|
+
prediction_market_agent_tooling-0.60.2.dist-info/METADATA,sha256=vijNsJBwWEVEPwvWJdGA-SQ7uklcgNzXF5IbcQyTVZs,8629
|
122
|
+
prediction_market_agent_tooling-0.60.2.dist-info/WHEEL,sha256=XbeZDeTWKc1w7CSIyre5aMDU_-PohRwTQceYnisIYYY,88
|
123
|
+
prediction_market_agent_tooling-0.60.2.dist-info/entry_points.txt,sha256=m8PukHbeH5g0IAAmOf_1Ahm-sGAMdhSSRQmwtpmi2s8,81
|
124
|
+
prediction_market_agent_tooling-0.60.2.dist-info/RECORD,,
|
File without changes
|
File without changes
|