prediction-market-agent-tooling 0.43.2__py3-none-any.whl → 0.43.4__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/abis/depositablewrapper_erc20.abi.json +279 -0
- prediction_market_agent_tooling/abis/erc20.abi.json +221 -314
- prediction_market_agent_tooling/abis/erc4626.abi.json +623 -0
- prediction_market_agent_tooling/abis/proxy.abi.json +24 -0
- prediction_market_agent_tooling/gtypes.py +1 -1
- prediction_market_agent_tooling/markets/agent_market.py +2 -1
- prediction_market_agent_tooling/markets/manifold/manifold.py +3 -2
- prediction_market_agent_tooling/markets/omen/data_models.py +2 -1
- prediction_market_agent_tooling/markets/omen/omen.py +73 -38
- prediction_market_agent_tooling/markets/omen/omen_contracts.py +43 -12
- prediction_market_agent_tooling/markets/omen/omen_resolving.py +15 -5
- prediction_market_agent_tooling/markets/omen/omen_subgraph_handler.py +9 -0
- prediction_market_agent_tooling/markets/polymarket/polymarket.py +2 -1
- prediction_market_agent_tooling/tools/contract.py +303 -11
- {prediction_market_agent_tooling-0.43.2.dist-info → prediction_market_agent_tooling-0.43.4.dist-info}/METADATA +1 -1
- {prediction_market_agent_tooling-0.43.2.dist-info → prediction_market_agent_tooling-0.43.4.dist-info}/RECORD +19 -17
- prediction_market_agent_tooling/abis/wxdai.abi.json +0 -279
- {prediction_market_agent_tooling-0.43.2.dist-info → prediction_market_agent_tooling-0.43.4.dist-info}/LICENSE +0 -0
- {prediction_market_agent_tooling-0.43.2.dist-info → prediction_market_agent_tooling-0.43.4.dist-info}/WHEEL +0 -0
- {prediction_market_agent_tooling-0.43.2.dist-info → prediction_market_agent_tooling-0.43.4.dist-info}/entry_points.txt +0 -0
@@ -1,4 +1,5 @@
|
|
1
1
|
import json
|
2
|
+
import os
|
2
3
|
import time
|
3
4
|
import typing as t
|
4
5
|
from contextlib import contextmanager
|
@@ -151,11 +152,33 @@ class ContractBaseClass(BaseModel):
|
|
151
152
|
return Web3(Web3.HTTPProvider(cls.CHAIN_RPC_URL))
|
152
153
|
|
153
154
|
|
155
|
+
class ContractProxyBaseClass(ContractBaseClass):
|
156
|
+
"""
|
157
|
+
Contract base class for proxy contracts.
|
158
|
+
"""
|
159
|
+
|
160
|
+
abi: ABI = abi_field_validator(
|
161
|
+
os.path.join(
|
162
|
+
os.path.dirname(os.path.realpath(__file__)), "../abis/proxy.abi.json"
|
163
|
+
)
|
164
|
+
)
|
165
|
+
|
166
|
+
def implementation(self, web3: Web3 | None = None) -> ChecksumAddress:
|
167
|
+
address = self.call("implementation", web3=web3)
|
168
|
+
return Web3.to_checksum_address(address)
|
169
|
+
|
170
|
+
|
154
171
|
class ContractERC20BaseClass(ContractBaseClass):
|
155
172
|
"""
|
156
173
|
Contract base class extended by ERC-20 standard methods.
|
157
174
|
"""
|
158
175
|
|
176
|
+
abi: ABI = abi_field_validator(
|
177
|
+
os.path.join(
|
178
|
+
os.path.dirname(os.path.realpath(__file__)), "../abis/erc20.abi.json"
|
179
|
+
)
|
180
|
+
)
|
181
|
+
|
159
182
|
def approve(
|
160
183
|
self,
|
161
184
|
api_keys: APIKeys,
|
@@ -175,6 +198,41 @@ class ContractERC20BaseClass(ContractBaseClass):
|
|
175
198
|
web3=web3,
|
176
199
|
)
|
177
200
|
|
201
|
+
def transferFrom(
|
202
|
+
self,
|
203
|
+
api_keys: APIKeys,
|
204
|
+
sender: ChecksumAddress,
|
205
|
+
recipient: ChecksumAddress,
|
206
|
+
amount_wei: Wei,
|
207
|
+
tx_params: t.Optional[TxParams] = None,
|
208
|
+
web3: Web3 | None = None,
|
209
|
+
) -> TxReceipt:
|
210
|
+
return self.send(
|
211
|
+
api_keys=api_keys,
|
212
|
+
function_name="transferFrom",
|
213
|
+
function_params=[sender, recipient, amount_wei],
|
214
|
+
tx_params=tx_params,
|
215
|
+
web3=web3,
|
216
|
+
)
|
217
|
+
|
218
|
+
def balanceOf(self, for_address: ChecksumAddress, web3: Web3 | None = None) -> Wei:
|
219
|
+
balance: Wei = self.call("balanceOf", [for_address], web3=web3)
|
220
|
+
return balance
|
221
|
+
|
222
|
+
|
223
|
+
class ContractDepositableWrapperERC20BaseClass(ContractERC20BaseClass):
|
224
|
+
"""
|
225
|
+
ERC-20 standard base class extended for wrapper tokens.
|
226
|
+
Altough this is not a standard, it's seems to be a common pattern for wrapped tokens (at least it checks out for wxDai and wETH).
|
227
|
+
"""
|
228
|
+
|
229
|
+
abi: ABI = abi_field_validator(
|
230
|
+
os.path.join(
|
231
|
+
os.path.dirname(os.path.realpath(__file__)),
|
232
|
+
"../abis/depositablewrapper_erc20.abi.json",
|
233
|
+
)
|
234
|
+
)
|
235
|
+
|
178
236
|
def deposit(
|
179
237
|
self,
|
180
238
|
api_keys: APIKeys,
|
@@ -190,41 +248,93 @@ class ContractERC20BaseClass(ContractBaseClass):
|
|
190
248
|
web3=web3,
|
191
249
|
)
|
192
250
|
|
193
|
-
def
|
251
|
+
def withdraw(
|
194
252
|
self,
|
195
253
|
api_keys: APIKeys,
|
196
|
-
sender: ChecksumAddress,
|
197
|
-
recipient: ChecksumAddress,
|
198
254
|
amount_wei: Wei,
|
199
255
|
tx_params: t.Optional[TxParams] = None,
|
200
256
|
web3: Web3 | None = None,
|
201
257
|
) -> TxReceipt:
|
202
258
|
return self.send(
|
203
259
|
api_keys=api_keys,
|
204
|
-
function_name="
|
205
|
-
function_params=[
|
260
|
+
function_name="withdraw",
|
261
|
+
function_params=[amount_wei],
|
206
262
|
tx_params=tx_params,
|
207
263
|
web3=web3,
|
208
264
|
)
|
209
265
|
|
210
|
-
|
266
|
+
|
267
|
+
class ContractERC4626BaseClass(ContractERC20BaseClass):
|
268
|
+
"""
|
269
|
+
Class for ERC-4626, which is a superset for ERC-20.
|
270
|
+
"""
|
271
|
+
|
272
|
+
abi: ABI = abi_field_validator(
|
273
|
+
os.path.join(
|
274
|
+
os.path.dirname(os.path.realpath(__file__)), "../abis/erc4626.abi.json"
|
275
|
+
)
|
276
|
+
)
|
277
|
+
|
278
|
+
def asset(self, web3: Web3 | None = None) -> ChecksumAddress:
|
279
|
+
address = self.call("asset", web3=web3)
|
280
|
+
return Web3.to_checksum_address(address)
|
281
|
+
|
282
|
+
def deposit(
|
211
283
|
self,
|
212
284
|
api_keys: APIKeys,
|
213
285
|
amount_wei: Wei,
|
286
|
+
receiver: ChecksumAddress,
|
214
287
|
tx_params: t.Optional[TxParams] = None,
|
215
288
|
web3: Web3 | None = None,
|
216
289
|
) -> TxReceipt:
|
217
290
|
return self.send(
|
218
291
|
api_keys=api_keys,
|
219
|
-
function_name="
|
220
|
-
function_params=[amount_wei],
|
292
|
+
function_name="deposit",
|
293
|
+
function_params=[amount_wei, receiver],
|
221
294
|
tx_params=tx_params,
|
222
295
|
web3=web3,
|
223
296
|
)
|
224
297
|
|
225
|
-
def
|
226
|
-
|
227
|
-
return
|
298
|
+
def convertToShares(self, assets: Wei, web3: Web3 | None = None) -> Wei:
|
299
|
+
shares: Wei = self.call("convertToShares", [assets], web3=web3)
|
300
|
+
return shares
|
301
|
+
|
302
|
+
def convertToAssets(self, shares: Wei, web3: Web3 | None = None) -> Wei:
|
303
|
+
assets: Wei = self.call("convertToAssets", [shares], web3=web3)
|
304
|
+
return assets
|
305
|
+
|
306
|
+
def get_asset_token_contract(
|
307
|
+
self, web3: Web3 | None = None
|
308
|
+
) -> ContractERC20BaseClass | ContractDepositableWrapperERC20BaseClass:
|
309
|
+
web3 = web3 or self.get_web3()
|
310
|
+
contract = init_erc4626_or_wrappererc20_or_erc20_contract(
|
311
|
+
self.asset(), web3=web3
|
312
|
+
)
|
313
|
+
assert not isinstance(
|
314
|
+
contract, ContractERC4626OnGnosisChain
|
315
|
+
), "Asset token should be either Depositable Wrapper ERC-20 or ERC-20." # Shrinking down possible types.
|
316
|
+
return contract
|
317
|
+
|
318
|
+
def get_asset_token_balance(
|
319
|
+
self, for_address: ChecksumAddress, web3: Web3 | None = None
|
320
|
+
) -> Wei:
|
321
|
+
asset_token_contract = self.get_asset_token_contract(web3=web3)
|
322
|
+
return asset_token_contract.balanceOf(for_address, web3=web3)
|
323
|
+
|
324
|
+
def deposit_asset_token(
|
325
|
+
self, asset_value: Wei, api_keys: APIKeys, web3: Web3 | None = None
|
326
|
+
) -> TxReceipt:
|
327
|
+
for_address = api_keys.bet_from_address
|
328
|
+
web3 = web3 or self.get_web3()
|
329
|
+
|
330
|
+
asset_token_contract = self.get_asset_token_contract(web3=web3)
|
331
|
+
# Approve vault to withdraw the erc-20 token from the user.
|
332
|
+
asset_token_contract.approve(api_keys, self.address, asset_value, web3=web3)
|
333
|
+
|
334
|
+
# Deposit asset token (erc20) and we will receive shares in this vault.
|
335
|
+
receipt = self.deposit(api_keys, asset_value, for_address, web3=web3)
|
336
|
+
|
337
|
+
return receipt
|
228
338
|
|
229
339
|
|
230
340
|
class ContractOnGnosisChain(ContractBaseClass):
|
@@ -236,7 +346,189 @@ class ContractOnGnosisChain(ContractBaseClass):
|
|
236
346
|
CHAIN_RPC_URL = GNOSIS_RPC_URL
|
237
347
|
|
238
348
|
|
349
|
+
class ContractProxyOnGnosisChain(ContractProxyBaseClass, ContractOnGnosisChain):
|
350
|
+
"""
|
351
|
+
Proxy contract base class with Gnosis Chain configuration.
|
352
|
+
"""
|
353
|
+
|
354
|
+
|
239
355
|
class ContractERC20OnGnosisChain(ContractERC20BaseClass, ContractOnGnosisChain):
|
240
356
|
"""
|
241
357
|
ERC-20 standard base class with Gnosis Chain configuration.
|
242
358
|
"""
|
359
|
+
|
360
|
+
|
361
|
+
class ContractDepositableWrapperERC20OnGnosisChain(
|
362
|
+
ContractDepositableWrapperERC20BaseClass, ContractOnGnosisChain
|
363
|
+
):
|
364
|
+
"""
|
365
|
+
Depositable Wrapper ERC-20 standard base class with Gnosis Chain configuration.
|
366
|
+
"""
|
367
|
+
|
368
|
+
|
369
|
+
class ContractERC4626OnGnosisChain(ContractERC4626BaseClass, ContractOnGnosisChain):
|
370
|
+
"""
|
371
|
+
ERC-4626 standard base class with Gnosis Chain configuration.
|
372
|
+
"""
|
373
|
+
|
374
|
+
|
375
|
+
def contract_implements_function(
|
376
|
+
contract_address: ChecksumAddress,
|
377
|
+
function_name: str,
|
378
|
+
web3: Web3,
|
379
|
+
function_arg_types: list[str] | None = None,
|
380
|
+
look_for_proxy_contract: bool = True,
|
381
|
+
) -> bool:
|
382
|
+
function_signature = f"{function_name}({','.join(function_arg_types or [])})"
|
383
|
+
function_hash = web3.keccak(text=function_signature)[0:4].hex()[2:]
|
384
|
+
contract_code = web3.eth.get_code(contract_address).hex()
|
385
|
+
implements = function_hash in contract_code
|
386
|
+
if (
|
387
|
+
not implements
|
388
|
+
and look_for_proxy_contract
|
389
|
+
and contract_implements_function(
|
390
|
+
contract_address, "implementation", web3, look_for_proxy_contract=False
|
391
|
+
)
|
392
|
+
):
|
393
|
+
implementation_address = ContractProxyOnGnosisChain(
|
394
|
+
address=contract_address
|
395
|
+
).implementation()
|
396
|
+
implements = contract_implements_function(
|
397
|
+
implementation_address,
|
398
|
+
function_name=function_name,
|
399
|
+
web3=web3,
|
400
|
+
function_arg_types=function_arg_types,
|
401
|
+
look_for_proxy_contract=False,
|
402
|
+
)
|
403
|
+
return implements
|
404
|
+
|
405
|
+
|
406
|
+
def init_erc4626_or_wrappererc20_or_erc20_contract(
|
407
|
+
address: ChecksumAddress,
|
408
|
+
web3: Web3,
|
409
|
+
) -> (
|
410
|
+
ContractERC20BaseClass
|
411
|
+
| ContractERC4626BaseClass
|
412
|
+
| ContractDepositableWrapperERC20BaseClass
|
413
|
+
):
|
414
|
+
"""
|
415
|
+
Checks if the given contract is Depositable ERC-20, ERC-20 or ERC-4626 and returns the appropriate class instance.
|
416
|
+
Throws an error if the contract is neither of them.
|
417
|
+
"""
|
418
|
+
if contract_implements_function(address, "asset", web3=web3):
|
419
|
+
return ContractERC4626BaseClass(address=address)
|
420
|
+
|
421
|
+
elif contract_implements_function(
|
422
|
+
address,
|
423
|
+
"deposit",
|
424
|
+
web3=web3,
|
425
|
+
):
|
426
|
+
return ContractDepositableWrapperERC20BaseClass(address=address)
|
427
|
+
|
428
|
+
elif contract_implements_function(
|
429
|
+
address,
|
430
|
+
"balanceOf",
|
431
|
+
web3=web3,
|
432
|
+
function_arg_types=["address"],
|
433
|
+
):
|
434
|
+
return ContractERC20BaseClass(address=address)
|
435
|
+
|
436
|
+
else:
|
437
|
+
raise ValueError(
|
438
|
+
f"Contract at {address} on Gnosis Chain is neither WrapperERC-20, ERC-20 nor ERC-4626."
|
439
|
+
)
|
440
|
+
|
441
|
+
|
442
|
+
def auto_deposit_collateral_token(
|
443
|
+
collateral_token_contract: (
|
444
|
+
ContractERC20BaseClass
|
445
|
+
| ContractERC4626BaseClass
|
446
|
+
| ContractDepositableWrapperERC20BaseClass
|
447
|
+
),
|
448
|
+
amount_wei: Wei,
|
449
|
+
api_keys: APIKeys,
|
450
|
+
web3: Web3 | None,
|
451
|
+
) -> None:
|
452
|
+
for_address = api_keys.bet_from_address
|
453
|
+
# This might be in shares, if it's an erc-4626 token.
|
454
|
+
collateral_token_balance = collateral_token_contract.balanceOf(
|
455
|
+
for_address=for_address, web3=web3
|
456
|
+
)
|
457
|
+
|
458
|
+
if isinstance(collateral_token_contract, ContractERC4626BaseClass):
|
459
|
+
# In the more complex case, we need to deposit into the saving token, out of the erc-20 token.
|
460
|
+
# We need to compare with shares, because if erc-4626 is used, the liquidity in market will be in shares as well.
|
461
|
+
if collateral_token_balance < collateral_token_contract.convertToShares(
|
462
|
+
amount_wei
|
463
|
+
):
|
464
|
+
asset_token_contract = collateral_token_contract.get_asset_token_contract(
|
465
|
+
web3=web3
|
466
|
+
)
|
467
|
+
|
468
|
+
# If the asset token is Depositable Wrapper ERC-20, we can deposit it, in case we don't have enough.
|
469
|
+
if (
|
470
|
+
collateral_token_contract.get_asset_token_balance(for_address, web3)
|
471
|
+
< amount_wei
|
472
|
+
):
|
473
|
+
if isinstance(
|
474
|
+
asset_token_contract, ContractDepositableWrapperERC20BaseClass
|
475
|
+
):
|
476
|
+
asset_token_contract.deposit(api_keys, amount_wei, web3=web3)
|
477
|
+
else:
|
478
|
+
raise ValueError(
|
479
|
+
f"Not enough of the asset token, but it's not a depositable wrapper token that we can deposit automatically."
|
480
|
+
)
|
481
|
+
|
482
|
+
collateral_token_contract.deposit_asset_token(amount_wei, api_keys, web3)
|
483
|
+
|
484
|
+
elif isinstance(
|
485
|
+
collateral_token_contract, ContractDepositableWrapperERC20BaseClass
|
486
|
+
):
|
487
|
+
# If the collateral token is Depositable Wrapper ERC-20, it's a simple case where we can just deposit it, if needed.
|
488
|
+
if collateral_token_balance < amount_wei:
|
489
|
+
collateral_token_contract.deposit(api_keys, amount_wei, web3=web3)
|
490
|
+
|
491
|
+
elif isinstance(collateral_token_contract, ContractERC20BaseClass):
|
492
|
+
if collateral_token_balance < amount_wei:
|
493
|
+
raise ValueError(
|
494
|
+
f"Not enough of the collateral token, but it's not a wrapper token that we can deposit automatically."
|
495
|
+
)
|
496
|
+
|
497
|
+
else:
|
498
|
+
raise RuntimeError("Bug in our logic! :(")
|
499
|
+
|
500
|
+
|
501
|
+
def asset_or_shares(
|
502
|
+
collateral_token_contract: (
|
503
|
+
ContractERC20BaseClass
|
504
|
+
| ContractERC4626BaseClass
|
505
|
+
| ContractDepositableWrapperERC20BaseClass
|
506
|
+
),
|
507
|
+
amount_wei: Wei,
|
508
|
+
) -> Wei:
|
509
|
+
return (
|
510
|
+
collateral_token_contract.convertToShares(amount_wei)
|
511
|
+
if isinstance(collateral_token_contract, ContractERC4626BaseClass)
|
512
|
+
else amount_wei
|
513
|
+
)
|
514
|
+
|
515
|
+
|
516
|
+
def to_gnosis_chain_contract(
|
517
|
+
contract: (
|
518
|
+
ContractDepositableWrapperERC20BaseClass
|
519
|
+
| ContractERC4626BaseClass
|
520
|
+
| ContractERC20BaseClass
|
521
|
+
),
|
522
|
+
) -> (
|
523
|
+
ContractDepositableWrapperERC20OnGnosisChain
|
524
|
+
| ContractERC4626OnGnosisChain
|
525
|
+
| ContractERC20OnGnosisChain
|
526
|
+
):
|
527
|
+
if isinstance(contract, ContractERC4626BaseClass):
|
528
|
+
return ContractERC4626OnGnosisChain(address=contract.address)
|
529
|
+
elif isinstance(contract, ContractDepositableWrapperERC20BaseClass):
|
530
|
+
return ContractDepositableWrapperERC20OnGnosisChain(address=contract.address)
|
531
|
+
elif isinstance(contract, ContractERC20BaseClass):
|
532
|
+
return ContractERC20OnGnosisChain(address=contract.address)
|
533
|
+
else:
|
534
|
+
raise ValueError("Unsupported contract type")
|
@@ -1,4 +1,6 @@
|
|
1
|
-
prediction_market_agent_tooling/abis/
|
1
|
+
prediction_market_agent_tooling/abis/depositablewrapper_erc20.abi.json,sha256=m0Wk3uQyLM8apWRRvX4d3u1d77bWVuXfV38D-aV48t0,4612
|
2
|
+
prediction_market_agent_tooling/abis/erc20.abi.json,sha256=b8t6tPUhjBo5dHFq8ipsK-ih_g29dOTbWI0GBZiEWL8,3685
|
3
|
+
prediction_market_agent_tooling/abis/erc4626.abi.json,sha256=qvmonhj3tJU5flR4pJjXCSSwB8tgEiJcx4Sc5ilQ5VY,17801
|
2
4
|
prediction_market_agent_tooling/abis/omen_dxdao.abi.json,sha256=Z1kD1QfgYfGwsZEI2UFDNEGZ4hMOix3HGICk8xlO4Ds,9578
|
3
5
|
prediction_market_agent_tooling/abis/omen_fpmm.abi.json,sha256=CDib_b5PVj4m0JBVCB20cTshiVx8st1Be-7E460qFoY,11406
|
4
6
|
prediction_market_agent_tooling/abis/omen_fpmm_conditionaltokens.abi.json,sha256=ux30hTxtZiOZ86FsTEK8Xnm910iyjB1CFnkXrCbhfm8,9841
|
@@ -7,7 +9,7 @@ prediction_market_agent_tooling/abis/omen_kleros.abi.json,sha256=QPMXrYA5UCo_wVU
|
|
7
9
|
prediction_market_agent_tooling/abis/omen_oracle.abi.json,sha256=YPZ-FLvd4PA9pYd6d5mQI1TD11JnsE0LGxH4XcZZFCA,1775
|
8
10
|
prediction_market_agent_tooling/abis/omen_realitio.abi.json,sha256=7HmFkBF_rq83UTaH2kRRsEfc_WZuf4n-qvkB4nhvweo,15953
|
9
11
|
prediction_market_agent_tooling/abis/omen_thumbnailmapping.abi.json,sha256=u1-3B8FB3Ys9KVJCH-lw9ArkicdxbNMf34dV-VEGMMU,930
|
10
|
-
prediction_market_agent_tooling/abis/
|
12
|
+
prediction_market_agent_tooling/abis/proxy.abi.json,sha256=h24GXZ6Q0bSZlwh7zOv0EiDvbqUz_PHtWfKHTyPJ1w4,644
|
11
13
|
prediction_market_agent_tooling/benchmark/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
12
14
|
prediction_market_agent_tooling/benchmark/agents.py,sha256=HPIFJvackW110ch3UkktbxhU48gMRVo4gQse84Klhdc,4000
|
13
15
|
prediction_market_agent_tooling/benchmark/benchmark.py,sha256=xiHKzZx5GHSsDerFHMZ9j_LXAXnSaITSvv67iPe3MEU,21095
|
@@ -19,30 +21,30 @@ prediction_market_agent_tooling/deploy/constants.py,sha256=M5ty8URipYMGe_G-RzxRy
|
|
19
21
|
prediction_market_agent_tooling/deploy/gcp/deploy.py,sha256=CYUgnfy-9XVk04kkxA_5yp0GE9Mw5caYqlFUZQ2j3ks,3739
|
20
22
|
prediction_market_agent_tooling/deploy/gcp/kubernetes_models.py,sha256=qYIHRxQLac3yxtZ8ChikiPG9O1aUQucHW0muTSm1nto,2627
|
21
23
|
prediction_market_agent_tooling/deploy/gcp/utils.py,sha256=oyW0jgrUT2Tr49c7GlpcMsYNQjoCSOcWis3q-MmVAhU,6089
|
22
|
-
prediction_market_agent_tooling/gtypes.py,sha256=
|
24
|
+
prediction_market_agent_tooling/gtypes.py,sha256=ezM2iAycTRJ0uHKK03s0z76a8YFSF438kjOwT_BAqz4,2474
|
23
25
|
prediction_market_agent_tooling/loggers.py,sha256=ua9rynYmsbOJZjxPIFxRBooomeN08zuLSJ7lxZMDS7w,3133
|
24
|
-
prediction_market_agent_tooling/markets/agent_market.py,sha256=
|
26
|
+
prediction_market_agent_tooling/markets/agent_market.py,sha256=BELq6x3F4xLZwi0XmoN84RA7ttRQIclyHL2CY6a4Ixc,8409
|
25
27
|
prediction_market_agent_tooling/markets/categorize.py,sha256=HyKSFHXPL7Hfe90ahbF7xszamYREUVrPkLcpifw1V9Y,935
|
26
28
|
prediction_market_agent_tooling/markets/data_models.py,sha256=qD0LyFkzimaMkDVE0QO2a4I9fQ8qpO2qPmVzb-0JBik,2085
|
27
29
|
prediction_market_agent_tooling/markets/manifold/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
28
30
|
prediction_market_agent_tooling/markets/manifold/api.py,sha256=AC2zmkzpBU3P4kyybs7CgPbDg4hLAx3GY5mjgDi7qDo,7221
|
29
31
|
prediction_market_agent_tooling/markets/manifold/data_models.py,sha256=jHqOzOiN21wYvDNyh4VtbGtj4adWr6vA4liOQmh24cc,6239
|
30
|
-
prediction_market_agent_tooling/markets/manifold/manifold.py,sha256=
|
32
|
+
prediction_market_agent_tooling/markets/manifold/manifold.py,sha256=7vLi3KT-Qqq523gb4AZxgbvuB0deSqS5KQYiLwCiMl4,4194
|
31
33
|
prediction_market_agent_tooling/markets/manifold/utils.py,sha256=cPPFWXm3vCYH1jy7_ctJZuQH9ZDaPL4_AgAYzGWkoow,513
|
32
34
|
prediction_market_agent_tooling/markets/markets.py,sha256=Hz3E7LJ5HIjCHQtdU5_Bymav2dYT0dDxKOL0i8mV0mg,3142
|
33
35
|
prediction_market_agent_tooling/markets/metaculus/api.py,sha256=gvPQVAM5NlCyWzEMt4WML9saRBsK9eiHAZP6jwirVqc,2750
|
34
36
|
prediction_market_agent_tooling/markets/metaculus/data_models.py,sha256=6TBy17xntdLBR61QCE5wddwTa_k2D0D8ZgK6p7sGUuc,2448
|
35
37
|
prediction_market_agent_tooling/markets/metaculus/metaculus.py,sha256=uNF7LP4evvubk818g2zbX1VlnFxeUQOkNgx_e_LwaJA,3416
|
36
38
|
prediction_market_agent_tooling/markets/omen/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
37
|
-
prediction_market_agent_tooling/markets/omen/data_models.py,sha256=
|
38
|
-
prediction_market_agent_tooling/markets/omen/omen.py,sha256=
|
39
|
-
prediction_market_agent_tooling/markets/omen/omen_contracts.py,sha256=
|
40
|
-
prediction_market_agent_tooling/markets/omen/omen_resolving.py,sha256=
|
41
|
-
prediction_market_agent_tooling/markets/omen/omen_subgraph_handler.py,sha256=
|
39
|
+
prediction_market_agent_tooling/markets/omen/data_models.py,sha256=fpYxaslKq48lpNDsFUHcggY5geZIAKWDfC9FwUgIstE,14539
|
40
|
+
prediction_market_agent_tooling/markets/omen/omen.py,sha256=_H_1huaCXTpmDUmHaHqIQoCbIrrMATHeXXdkw5BHu1s,40713
|
41
|
+
prediction_market_agent_tooling/markets/omen/omen_contracts.py,sha256=BmIWFvQ-CM355eHmRrKipS_FcYc6TEISv2l2r45qHAU,22790
|
42
|
+
prediction_market_agent_tooling/markets/omen/omen_resolving.py,sha256=tXTJM_HNefODAJSGU_w1OklZ457ZMAjL6dC0EvkUYQ8,9450
|
43
|
+
prediction_market_agent_tooling/markets/omen/omen_subgraph_handler.py,sha256=s-CHD1DuWyGv1_KfxNZv8fmBft60528b51nZ5XANzpU,25692
|
42
44
|
prediction_market_agent_tooling/markets/polymarket/api.py,sha256=HXmA1akA0qDj0m3e-GEvWG8x75pm6BX4H7YJPQcST7I,4767
|
43
45
|
prediction_market_agent_tooling/markets/polymarket/data_models.py,sha256=9CJzakyEcsn6DQBK2nOXjOMzTZBLAmK_KqevXvW17DI,4292
|
44
46
|
prediction_market_agent_tooling/markets/polymarket/data_models_web.py,sha256=yK0uxLQrwImVAXbvwscdmxTjSxMpAjCcN760EWEK_8M,11914
|
45
|
-
prediction_market_agent_tooling/markets/polymarket/polymarket.py,sha256=
|
47
|
+
prediction_market_agent_tooling/markets/polymarket/polymarket.py,sha256=f7r79fAhLzwS22urfuhVW1Si2m2pZrr5r45WNt-Q3VU,2737
|
46
48
|
prediction_market_agent_tooling/markets/polymarket/utils.py,sha256=m4JG6WULh5epCJt4XBMHg0ae5NoVhqlOvAl0A7DR9iM,2023
|
47
49
|
prediction_market_agent_tooling/monitor/langfuse/langfuse_wrapper.py,sha256=b6T69YB1x8kSUvW9uRFuSWPLOrXzapZG7m5O5SU0QTQ,895
|
48
50
|
prediction_market_agent_tooling/monitor/markets/manifold.py,sha256=GdYpgRX1GahDi-75Mr53jgtEg6nWcs_rHDUkg4o_7dQ,3352
|
@@ -59,7 +61,7 @@ prediction_market_agent_tooling/tools/betting_strategies/market_moving.py,sha256
|
|
59
61
|
prediction_market_agent_tooling/tools/betting_strategies/minimum_bet_to_win.py,sha256=-FUSuQQgjcWSSnoFxnlAyTeilY6raJABJVM2QKkFqAY,438
|
60
62
|
prediction_market_agent_tooling/tools/betting_strategies/stretch_bet_between.py,sha256=THMXwFlskvzbjnX_OiYtDSzI8XVFyULWfP2525_9UGc,429
|
61
63
|
prediction_market_agent_tooling/tools/cache.py,sha256=tGHHd9HCiE_hCCtPtloHZQdDfBuiow9YsqJNYi2Tx_0,499
|
62
|
-
prediction_market_agent_tooling/tools/contract.py,sha256=
|
64
|
+
prediction_market_agent_tooling/tools/contract.py,sha256=vjkPeZszvco_IAITp1GUfCZ3X8HrSol4GCDDa8TFFvw,17100
|
63
65
|
prediction_market_agent_tooling/tools/costs.py,sha256=EaAJ7v9laD4VEV3d8B44M4u3_oEO_H16jRVCdoZ93Uw,954
|
64
66
|
prediction_market_agent_tooling/tools/gnosis_rpc.py,sha256=_MYSoyOR2MgAJkop1ERf8RhLum-M8S6OjaAsaqUW41w,203
|
65
67
|
prediction_market_agent_tooling/tools/google.py,sha256=SfVDxb3oEOUK8mpd0l3mTX9ybrdrTPNM6HjfJ7kfNjA,1794
|
@@ -73,8 +75,8 @@ prediction_market_agent_tooling/tools/singleton.py,sha256=CiIELUiI-OeS7U7eeHEt0r
|
|
73
75
|
prediction_market_agent_tooling/tools/streamlit_user_login.py,sha256=NXEqfjT9Lc9QtliwSGRASIz1opjQ7Btme43H4qJbzgE,3010
|
74
76
|
prediction_market_agent_tooling/tools/utils.py,sha256=JE9YWtPPhnTgLiOyGAZDNG5K8nCwUY9IZEuAlm9UcxA,6611
|
75
77
|
prediction_market_agent_tooling/tools/web3_utils.py,sha256=nKRHmdLnWSKd3wpo-cysXGvhhrJ2Yf69sN2FFQfSt6s,10578
|
76
|
-
prediction_market_agent_tooling-0.43.
|
77
|
-
prediction_market_agent_tooling-0.43.
|
78
|
-
prediction_market_agent_tooling-0.43.
|
79
|
-
prediction_market_agent_tooling-0.43.
|
80
|
-
prediction_market_agent_tooling-0.43.
|
78
|
+
prediction_market_agent_tooling-0.43.4.dist-info/LICENSE,sha256=6or154nLLU6bELzjh0mCreFjt0m2v72zLi3yHE0QbeE,7650
|
79
|
+
prediction_market_agent_tooling-0.43.4.dist-info/METADATA,sha256=3-3qr88s5tHIqW1_h8tK8HCP5ayx-GANQyPFGCNkS_k,7634
|
80
|
+
prediction_market_agent_tooling-0.43.4.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
|
81
|
+
prediction_market_agent_tooling-0.43.4.dist-info/entry_points.txt,sha256=m8PukHbeH5g0IAAmOf_1Ahm-sGAMdhSSRQmwtpmi2s8,81
|
82
|
+
prediction_market_agent_tooling-0.43.4.dist-info/RECORD,,
|