prediction-market-agent-tooling 0.58.4__py3-none-any.whl → 0.59.0.dev399__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/deploy/agent.py +13 -2
- prediction_market_agent_tooling/markets/metaculus/data_models.py +1 -1
- prediction_market_agent_tooling/tools/contract.py +1 -169
- {prediction_market_agent_tooling-0.58.4.dist-info → prediction_market_agent_tooling-0.59.0.dev399.dist-info}/METADATA +1 -1
- {prediction_market_agent_tooling-0.58.4.dist-info → prediction_market_agent_tooling-0.59.0.dev399.dist-info}/RECORD +8 -11
- prediction_market_agent_tooling/abis/agentcommunication.abi.json +0 -224
- prediction_market_agent_tooling/abis/simpletreasury.abi.json +0 -156
- prediction_market_agent_tooling/tools/data_models.py +0 -23
- {prediction_market_agent_tooling-0.58.4.dist-info → prediction_market_agent_tooling-0.59.0.dev399.dist-info}/LICENSE +0 -0
- {prediction_market_agent_tooling-0.58.4.dist-info → prediction_market_agent_tooling-0.59.0.dev399.dist-info}/WHEEL +0 -0
- {prediction_market_agent_tooling-0.58.4.dist-info → prediction_market_agent_tooling-0.59.0.dev399.dist-info}/entry_points.txt +0 -0
@@ -361,17 +361,23 @@ class DeployablePredictionAgent(DeployableAgent):
|
|
361
361
|
if self.have_bet_on_market_since(
|
362
362
|
market, since=self.same_market_trade_interval.get(market=market)
|
363
363
|
):
|
364
|
+
logger.info(
|
365
|
+
f"Market already bet on within {self.same_market_trade_interval}."
|
366
|
+
)
|
364
367
|
return False
|
365
368
|
|
366
369
|
# Manifold allows to bet only on markets with probability between 1 and 99.
|
367
370
|
if market_type == MarketType.MANIFOLD and not (1 < market.current_p_yes < 99):
|
371
|
+
logger.info("Manifold's market probability not in the range 1-99.")
|
368
372
|
return False
|
369
373
|
|
370
374
|
# Do as a last check, as it uses paid OpenAI API.
|
371
375
|
if not is_predictable_binary(market.question):
|
376
|
+
logger.info("Market question is not predictable.")
|
372
377
|
return False
|
373
378
|
|
374
379
|
if not self.allow_invalid_questions and is_invalid(market.question):
|
380
|
+
logger.info("Market question is invalid.")
|
375
381
|
return False
|
376
382
|
|
377
383
|
return True
|
@@ -481,7 +487,10 @@ class DeployablePredictionAgent(DeployableAgent):
|
|
481
487
|
)
|
482
488
|
processed = 0
|
483
489
|
|
484
|
-
for market in available_markets:
|
490
|
+
for market_idx, market in enumerate(available_markets):
|
491
|
+
logger.info(
|
492
|
+
f"Going to process market {market_idx+1} / {len(available_markets)}."
|
493
|
+
)
|
485
494
|
self.before_process_market(market_type, market)
|
486
495
|
processed_market = self.process_market(market_type, market)
|
487
496
|
self.after_process_market(market_type, market, processed_market)
|
@@ -492,7 +501,9 @@ class DeployablePredictionAgent(DeployableAgent):
|
|
492
501
|
if processed == self.bet_on_n_markets_per_run:
|
493
502
|
break
|
494
503
|
|
495
|
-
logger.info(
|
504
|
+
logger.info(
|
505
|
+
f"All markets processed. Successfully processed {processed}/{len(available_markets)}."
|
506
|
+
)
|
496
507
|
|
497
508
|
def after_process_markets(self, market_type: MarketType) -> None:
|
498
509
|
"""
|
@@ -18,16 +18,12 @@ from prediction_market_agent_tooling.gtypes import (
|
|
18
18
|
TxParams,
|
19
19
|
TxReceipt,
|
20
20
|
Wei,
|
21
|
-
xDai,
|
22
21
|
)
|
23
|
-
from prediction_market_agent_tooling.tools.
|
24
|
-
from prediction_market_agent_tooling.tools.hexbytes_custom import HexBytes
|
25
|
-
from prediction_market_agent_tooling.tools.utils import BPS_CONSTANT, DatetimeUTC
|
22
|
+
from prediction_market_agent_tooling.tools.utils import DatetimeUTC
|
26
23
|
from prediction_market_agent_tooling.tools.web3_utils import (
|
27
24
|
call_function_on_contract,
|
28
25
|
send_function_on_contract_tx,
|
29
26
|
send_function_on_contract_tx_using_safe,
|
30
|
-
wei_to_xdai,
|
31
27
|
)
|
32
28
|
|
33
29
|
|
@@ -568,170 +564,6 @@ class DebuggingContract(ContractOnGnosisChain):
|
|
568
564
|
)
|
569
565
|
|
570
566
|
|
571
|
-
class SimpleTreasuryContract(ContractOnGnosisChain, OwnableContract):
|
572
|
-
# Contract ABI taken from built https://github.com/gnosis/labs-contracts.
|
573
|
-
abi: ABI = abi_field_validator(
|
574
|
-
os.path.join(
|
575
|
-
os.path.dirname(os.path.realpath(__file__)),
|
576
|
-
"../abis/simpletreasury.abi.json",
|
577
|
-
)
|
578
|
-
)
|
579
|
-
|
580
|
-
address: ChecksumAddress = Web3.to_checksum_address(
|
581
|
-
"0x624ad0db52e6b18afb4d36b8e79d0c2a74f3fc8a"
|
582
|
-
)
|
583
|
-
|
584
|
-
def required_nft_balance(self, web3: Web3 | None = None) -> int:
|
585
|
-
min_num_of_nfts: int = self.call("requiredNFTBalance", web3=web3)
|
586
|
-
return min_num_of_nfts
|
587
|
-
|
588
|
-
def set_required_nft_balance(
|
589
|
-
self,
|
590
|
-
api_keys: APIKeys,
|
591
|
-
new_required_balance: int,
|
592
|
-
web3: Web3 | None = None,
|
593
|
-
) -> TxReceipt:
|
594
|
-
return self.send(
|
595
|
-
api_keys=api_keys,
|
596
|
-
function_name="setRequiredNFTBalance",
|
597
|
-
function_params=[new_required_balance],
|
598
|
-
web3=web3,
|
599
|
-
)
|
600
|
-
|
601
|
-
def nft_contract(self, web3: Web3 | None = None) -> ContractERC721BaseClass:
|
602
|
-
nft_contract_address: ChecksumAddress = self.call("nftContract", web3=web3)
|
603
|
-
contract = ContractERC721BaseClass(address=nft_contract_address)
|
604
|
-
return contract
|
605
|
-
|
606
|
-
def withdraw(
|
607
|
-
self,
|
608
|
-
api_keys: APIKeys,
|
609
|
-
web3: Web3 | None = None,
|
610
|
-
) -> TxReceipt:
|
611
|
-
return self.send(
|
612
|
-
api_keys=api_keys,
|
613
|
-
function_name="withdraw",
|
614
|
-
web3=web3,
|
615
|
-
)
|
616
|
-
|
617
|
-
|
618
|
-
class AgentCommunicationContract(ContractOnGnosisChain, OwnableContract):
|
619
|
-
# Contract ABI taken from built https://github.com/gnosis/labs-contracts.
|
620
|
-
abi: ABI = abi_field_validator(
|
621
|
-
os.path.join(
|
622
|
-
os.path.dirname(os.path.realpath(__file__)),
|
623
|
-
"../abis/agentcommunication.abi.json",
|
624
|
-
)
|
625
|
-
)
|
626
|
-
|
627
|
-
address: ChecksumAddress = Web3.to_checksum_address(
|
628
|
-
"0xe9dd78FF297DbaAbe5D0E45aE554a4B561935DE9"
|
629
|
-
)
|
630
|
-
|
631
|
-
def minimum_message_value(self, web3: Web3 | None = None) -> xDai:
|
632
|
-
value: Wei = self.call("minimumValueForSendingMessageInWei", web3=web3)
|
633
|
-
return wei_to_xdai(value)
|
634
|
-
|
635
|
-
def ratio_given_to_treasury(self, web3: Web3 | None = None) -> float:
|
636
|
-
bps: int = self.call("pctToTreasuryInBasisPoints", web3=web3)
|
637
|
-
return bps / BPS_CONSTANT
|
638
|
-
|
639
|
-
def count_unseen_messages(
|
640
|
-
self,
|
641
|
-
agent_address: ChecksumAddress,
|
642
|
-
web3: Web3 | None = None,
|
643
|
-
) -> int:
|
644
|
-
unseen_message_count: int = self.call(
|
645
|
-
"countMessages", function_params=[agent_address], web3=web3
|
646
|
-
)
|
647
|
-
return unseen_message_count
|
648
|
-
|
649
|
-
def get_at_index(
|
650
|
-
self,
|
651
|
-
agent_address: ChecksumAddress,
|
652
|
-
idx: int,
|
653
|
-
web3: Web3 | None = None,
|
654
|
-
) -> MessageContainer:
|
655
|
-
message_container_raw: t.Tuple[t.Any] = self.call(
|
656
|
-
"getAtIndex", function_params=[agent_address, idx], web3=web3
|
657
|
-
)
|
658
|
-
return MessageContainer.from_tuple(message_container_raw)
|
659
|
-
|
660
|
-
def set_treasury_address(
|
661
|
-
self,
|
662
|
-
api_keys: APIKeys,
|
663
|
-
new_treasury_address: ChecksumAddress,
|
664
|
-
web3: Web3 | None = None,
|
665
|
-
) -> TxReceipt:
|
666
|
-
return self.send(
|
667
|
-
api_keys=api_keys,
|
668
|
-
function_name="setTreasuryAddress",
|
669
|
-
function_params=[new_treasury_address],
|
670
|
-
web3=web3,
|
671
|
-
)
|
672
|
-
|
673
|
-
def set_minimum_value_for_sending_message(
|
674
|
-
self,
|
675
|
-
api_keys: APIKeys,
|
676
|
-
new_minimum_value: Wei,
|
677
|
-
web3: Web3 | None = None,
|
678
|
-
) -> TxReceipt:
|
679
|
-
return self.send(
|
680
|
-
api_keys=api_keys,
|
681
|
-
function_name="adjustMinimumValueForSendingMessage",
|
682
|
-
function_params=[new_minimum_value],
|
683
|
-
web3=web3,
|
684
|
-
)
|
685
|
-
|
686
|
-
def pop_message(
|
687
|
-
self,
|
688
|
-
api_keys: APIKeys,
|
689
|
-
agent_address: ChecksumAddress,
|
690
|
-
index: int = 0,
|
691
|
-
web3: Web3 | None = None,
|
692
|
-
) -> MessageContainer:
|
693
|
-
"""
|
694
|
-
Retrieves and removes message at specified index from the agent's message queue.
|
695
|
-
|
696
|
-
This method first retrieves the message at the front of the queue without removing it,
|
697
|
-
allowing us to return the message content directly. The actual removal of the message
|
698
|
-
from the queue is performed by sending a transaction to the contract, which executes
|
699
|
-
the `popMessageAtIndex` function. The transaction receipt is not used to obtain the message
|
700
|
-
content, as it only contains event data, not the returned struct.
|
701
|
-
"""
|
702
|
-
|
703
|
-
# Peek the element before popping.
|
704
|
-
message_container = self.get_at_index(
|
705
|
-
agent_address=agent_address, idx=index, web3=web3
|
706
|
-
)
|
707
|
-
|
708
|
-
# Next, pop that element and discard the transaction receipt.
|
709
|
-
self.send(
|
710
|
-
api_keys=api_keys,
|
711
|
-
function_name="popMessageAtIndex",
|
712
|
-
function_params=[agent_address, index],
|
713
|
-
web3=web3,
|
714
|
-
)
|
715
|
-
|
716
|
-
return message_container
|
717
|
-
|
718
|
-
def send_message(
|
719
|
-
self,
|
720
|
-
api_keys: APIKeys,
|
721
|
-
agent_address: ChecksumAddress,
|
722
|
-
message: HexBytes,
|
723
|
-
amount_wei: Wei,
|
724
|
-
web3: Web3 | None = None,
|
725
|
-
) -> TxReceipt:
|
726
|
-
return self.send_with_value(
|
727
|
-
api_keys=api_keys,
|
728
|
-
function_name="sendMessage",
|
729
|
-
amount_wei=amount_wei,
|
730
|
-
function_params=[agent_address, message],
|
731
|
-
web3=web3,
|
732
|
-
)
|
733
|
-
|
734
|
-
|
735
567
|
def contract_implements_function(
|
736
568
|
contract_address: ChecksumAddress,
|
737
569
|
function_name: str,
|
@@ -1,4 +1,3 @@
|
|
1
|
-
prediction_market_agent_tooling/abis/agentcommunication.abi.json,sha256=Go6blKVORPuViDkxw_vqFzcpRH5i2qHje9R1wILDqM8,5817
|
2
1
|
prediction_market_agent_tooling/abis/debuggingcontract.abi.json,sha256=KdkCWmif_WO421RFKhc03kGJiccFqsxsZNrgCd8EH_4,571
|
3
2
|
prediction_market_agent_tooling/abis/depositablewrapper_erc20.abi.json,sha256=m0Wk3uQyLM8apWRRvX4d3u1d77bWVuXfV38D-aV48t0,4612
|
4
3
|
prediction_market_agent_tooling/abis/erc20.abi.json,sha256=b8t6tPUhjBo5dHFq8ipsK-ih_g29dOTbWI0GBZiEWL8,3685
|
@@ -17,13 +16,12 @@ prediction_market_agent_tooling/abis/ownable.abi.json,sha256=DeTy_7VmsMhFl7jwI8M
|
|
17
16
|
prediction_market_agent_tooling/abis/ownable_erc721.abi.json,sha256=9sxm588MAQmqCV_S0D3eYC7l9grbeALsd0Da_AHxdEI,8506
|
18
17
|
prediction_market_agent_tooling/abis/proxy.abi.json,sha256=h24GXZ6Q0bSZlwh7zOv0EiDvbqUz_PHtWfKHTyPJ1w4,644
|
19
18
|
prediction_market_agent_tooling/abis/seer_market_factory.abi.json,sha256=g7RVxZVUWlTXIgTV2W6kO4twQM909Qv58zAr7Dk4XIc,13553
|
20
|
-
prediction_market_agent_tooling/abis/simpletreasury.abi.json,sha256=7-l7rntLkcFKkoN8hXywO0-h-mUZxOZlyQg1Jk7yTB0,2877
|
21
19
|
prediction_market_agent_tooling/benchmark/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
22
20
|
prediction_market_agent_tooling/benchmark/agents.py,sha256=B1-uWdyeN4GGKMWGK_-CcAFJg1m9Y_XuaeIHPB29QR8,3971
|
23
21
|
prediction_market_agent_tooling/benchmark/benchmark.py,sha256=MqTiaaJ3cYiOLUVR7OyImLWxcEya3Rl5JyFYW-K0lwM,17097
|
24
22
|
prediction_market_agent_tooling/benchmark/utils.py,sha256=D0MfUkVZllmvcU0VOurk9tcKT7JTtwwOp-63zuCBVuc,2880
|
25
23
|
prediction_market_agent_tooling/config.py,sha256=owJ3goDbH1aeX8PzeJCeGK5pitYJqqk7yFOkaTbDarY,9209
|
26
|
-
prediction_market_agent_tooling/deploy/agent.py,sha256=
|
24
|
+
prediction_market_agent_tooling/deploy/agent.py,sha256=fFUxATQjSTRz70oDxBrgCk93NzF1i506cklJ8WtS_S0,24199
|
27
25
|
prediction_market_agent_tooling/deploy/agent_example.py,sha256=dIIdZashExWk9tOdyDjw87AuUcGyM7jYxNChYrVK2dM,1001
|
28
26
|
prediction_market_agent_tooling/deploy/betting_strategy.py,sha256=Y6Pb8OfSb6galRbfdNBvvNTgO-4dR2ybJ4o5GKJcMoM,12894
|
29
27
|
prediction_market_agent_tooling/deploy/constants.py,sha256=M5ty8URipYMGe_G-RzxRydK3AFL6CyvmqCraJUrLBnE,82
|
@@ -49,7 +47,7 @@ prediction_market_agent_tooling/markets/manifold/utils.py,sha256=_gGlWid0sPF127O
|
|
49
47
|
prediction_market_agent_tooling/markets/market_fees.py,sha256=Q64T9uaJx0Vllt0BkrPmpMEz53ra-hMVY8Czi7CEP7s,1227
|
50
48
|
prediction_market_agent_tooling/markets/markets.py,sha256=OMADWd1C5wD7sVdcY_GVdxAFDndkU9kn6Ble4GXCw0c,4045
|
51
49
|
prediction_market_agent_tooling/markets/metaculus/api.py,sha256=4TRPGytQQbSdf42DCg2M_JWYPAuNjqZ3eBqaQBLkNks,2736
|
52
|
-
prediction_market_agent_tooling/markets/metaculus/data_models.py,sha256=
|
50
|
+
prediction_market_agent_tooling/markets/metaculus/data_models.py,sha256=FaBCTPPezXbBwZ9p791CiVgQ4vB696xnMbz9XVXmiVI,3267
|
53
51
|
prediction_market_agent_tooling/markets/metaculus/metaculus.py,sha256=86TIx6cavEWc8Cv4KpZxSvwiSw9oFybXE3YB49pg-CA,4377
|
54
52
|
prediction_market_agent_tooling/markets/omen/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
55
53
|
prediction_market_agent_tooling/markets/omen/data_models.py,sha256=uT8ILKrg2g4jGodPxtolPErk25buNzMYndb01ZL2dYE,28421
|
@@ -85,12 +83,11 @@ prediction_market_agent_tooling/tools/betting_strategies/utils.py,sha256=kpIb-ci
|
|
85
83
|
prediction_market_agent_tooling/tools/caches/db_cache.py,sha256=aafau_n_AUbLIwkyIRiTPgKB0dmM0767mSqyPDLF2A4,10576
|
86
84
|
prediction_market_agent_tooling/tools/caches/inmemory_cache.py,sha256=ZW5iI5rmjqeAebu5T7ftRnlkxiL02IC-MxCfDB80x7w,1506
|
87
85
|
prediction_market_agent_tooling/tools/caches/serializers.py,sha256=vFDx4fsPxclXp2q0sv27j4al_M_Tj9aR2JJP-xNHQXA,2151
|
88
|
-
prediction_market_agent_tooling/tools/contract.py,sha256=
|
86
|
+
prediction_market_agent_tooling/tools/contract.py,sha256=gmSuANqlfwldFG7hc4uom0q1Z-mo40qfYh5TDUKLFTs,20518
|
89
87
|
prediction_market_agent_tooling/tools/costs.py,sha256=EaAJ7v9laD4VEV3d8B44M4u3_oEO_H16jRVCdoZ93Uw,954
|
90
88
|
prediction_market_agent_tooling/tools/cow/cow_manager.py,sha256=WK6Uk722VotjLHtxDPHxvwBrWVb3rvTegg_3w58ehwU,3869
|
91
89
|
prediction_market_agent_tooling/tools/cow/cow_order.py,sha256=ohriN_65BZ69f_BV6bNg_AwZjidip4yi4d2G6Ddy5Qg,4238
|
92
90
|
prediction_market_agent_tooling/tools/custom_exceptions.py,sha256=Fh8z1fbwONvP4-j7AmV_PuEcoqb6-QXa9PJ9m7guMcM,93
|
93
|
-
prediction_market_agent_tooling/tools/data_models.py,sha256=jDQ7FU0QQhXlcgJh5VZZGwDTYP2OPAqKPHZFewCPAUY,732
|
94
91
|
prediction_market_agent_tooling/tools/datetime_utc.py,sha256=8_WackjtjC8zHXrhQFTGQ6e6Fz_6llWoKR4CSFvIv9I,2766
|
95
92
|
prediction_market_agent_tooling/tools/db/db_manager.py,sha256=GtzHH1NLl8HwqC8Z7s6eTlIQXuV0blxfaV2PeQrBnfQ,3013
|
96
93
|
prediction_market_agent_tooling/tools/google_utils.py,sha256=t3_UEEvKX3L0biSIQ560GdRbllQ6eprhK_upE243A-0,3185
|
@@ -120,8 +117,8 @@ prediction_market_agent_tooling/tools/tokens/main_token.py,sha256=5iHO7-iehSlXuu
|
|
120
117
|
prediction_market_agent_tooling/tools/transaction_cache.py,sha256=K5YKNL2_tR10Iw2TD9fuP-CTGpBbZtNdgbd0B_R7pjg,1814
|
121
118
|
prediction_market_agent_tooling/tools/utils.py,sha256=jLG4nbEoIzzJiZ4RgMx4Q969Zdl0p0s63p8uET_0Fuw,6440
|
122
119
|
prediction_market_agent_tooling/tools/web3_utils.py,sha256=e7lqqQddVZaa905rhBb6L1fC3o39Yr-PDJsJjHFBeRE,12523
|
123
|
-
prediction_market_agent_tooling-0.
|
124
|
-
prediction_market_agent_tooling-0.
|
125
|
-
prediction_market_agent_tooling-0.
|
126
|
-
prediction_market_agent_tooling-0.
|
127
|
-
prediction_market_agent_tooling-0.
|
120
|
+
prediction_market_agent_tooling-0.59.0.dev399.dist-info/LICENSE,sha256=6or154nLLU6bELzjh0mCreFjt0m2v72zLi3yHE0QbeE,7650
|
121
|
+
prediction_market_agent_tooling-0.59.0.dev399.dist-info/METADATA,sha256=2hdm2FPByw4iA2un7-to2JRnrvo-pOV6PHz8lkG61zE,8636
|
122
|
+
prediction_market_agent_tooling-0.59.0.dev399.dist-info/WHEEL,sha256=XbeZDeTWKc1w7CSIyre5aMDU_-PohRwTQceYnisIYYY,88
|
123
|
+
prediction_market_agent_tooling-0.59.0.dev399.dist-info/entry_points.txt,sha256=m8PukHbeH5g0IAAmOf_1Ahm-sGAMdhSSRQmwtpmi2s8,81
|
124
|
+
prediction_market_agent_tooling-0.59.0.dev399.dist-info/RECORD,,
|
@@ -1,224 +0,0 @@
|
|
1
|
-
[
|
2
|
-
{
|
3
|
-
"inputs": [
|
4
|
-
{
|
5
|
-
"internalType": "address payable",
|
6
|
-
"name": "_treasury",
|
7
|
-
"type": "address"
|
8
|
-
},
|
9
|
-
{
|
10
|
-
"internalType": "uint256",
|
11
|
-
"name": "_pctToTreasuryInBasisPoints",
|
12
|
-
"type": "uint256"
|
13
|
-
}
|
14
|
-
],
|
15
|
-
"stateMutability": "nonpayable",
|
16
|
-
"type": "constructor"
|
17
|
-
},
|
18
|
-
{ "inputs": [], "name": "MessageNotSentByAgent", "type": "error" },
|
19
|
-
{
|
20
|
-
"inputs": [
|
21
|
-
{ "internalType": "address", "name": "owner", "type": "address" }
|
22
|
-
],
|
23
|
-
"name": "OwnableInvalidOwner",
|
24
|
-
"type": "error"
|
25
|
-
},
|
26
|
-
{
|
27
|
-
"inputs": [
|
28
|
-
{ "internalType": "address", "name": "account", "type": "address" }
|
29
|
-
],
|
30
|
-
"name": "OwnableUnauthorizedAccount",
|
31
|
-
"type": "error"
|
32
|
-
},
|
33
|
-
{
|
34
|
-
"anonymous": false,
|
35
|
-
"inputs": [
|
36
|
-
{
|
37
|
-
"indexed": true,
|
38
|
-
"internalType": "address",
|
39
|
-
"name": "sender",
|
40
|
-
"type": "address"
|
41
|
-
},
|
42
|
-
{
|
43
|
-
"indexed": true,
|
44
|
-
"internalType": "address",
|
45
|
-
"name": "agentAddress",
|
46
|
-
"type": "address"
|
47
|
-
},
|
48
|
-
{
|
49
|
-
"indexed": false,
|
50
|
-
"internalType": "bytes",
|
51
|
-
"name": "message",
|
52
|
-
"type": "bytes"
|
53
|
-
},
|
54
|
-
{
|
55
|
-
"indexed": false,
|
56
|
-
"internalType": "uint256",
|
57
|
-
"name": "value",
|
58
|
-
"type": "uint256"
|
59
|
-
}
|
60
|
-
],
|
61
|
-
"name": "LogMessage",
|
62
|
-
"type": "event"
|
63
|
-
},
|
64
|
-
{
|
65
|
-
"anonymous": false,
|
66
|
-
"inputs": [
|
67
|
-
{
|
68
|
-
"indexed": true,
|
69
|
-
"internalType": "address",
|
70
|
-
"name": "previousOwner",
|
71
|
-
"type": "address"
|
72
|
-
},
|
73
|
-
{
|
74
|
-
"indexed": true,
|
75
|
-
"internalType": "address",
|
76
|
-
"name": "newOwner",
|
77
|
-
"type": "address"
|
78
|
-
}
|
79
|
-
],
|
80
|
-
"name": "OwnershipTransferred",
|
81
|
-
"type": "event"
|
82
|
-
},
|
83
|
-
{
|
84
|
-
"inputs": [
|
85
|
-
{ "internalType": "uint256", "name": "newValue", "type": "uint256" }
|
86
|
-
],
|
87
|
-
"name": "adjustMinimumValueForSendingMessage",
|
88
|
-
"outputs": [],
|
89
|
-
"stateMutability": "nonpayable",
|
90
|
-
"type": "function"
|
91
|
-
},
|
92
|
-
{
|
93
|
-
"inputs": [
|
94
|
-
{ "internalType": "address", "name": "agentAddress", "type": "address" }
|
95
|
-
],
|
96
|
-
"name": "countMessages",
|
97
|
-
"outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
|
98
|
-
"stateMutability": "view",
|
99
|
-
"type": "function"
|
100
|
-
},
|
101
|
-
{
|
102
|
-
"inputs": [
|
103
|
-
{ "internalType": "address", "name": "agentAddress", "type": "address" },
|
104
|
-
{ "internalType": "uint256", "name": "idx", "type": "uint256" }
|
105
|
-
],
|
106
|
-
"name": "getAtIndex",
|
107
|
-
"outputs": [
|
108
|
-
{
|
109
|
-
"components": [
|
110
|
-
{ "internalType": "address", "name": "sender", "type": "address" },
|
111
|
-
{ "internalType": "address", "name": "recipient", "type": "address" },
|
112
|
-
{ "internalType": "bytes", "name": "message", "type": "bytes" },
|
113
|
-
{ "internalType": "uint256", "name": "value", "type": "uint256" }
|
114
|
-
],
|
115
|
-
"internalType": "struct DoubleEndedStructQueue.MessageContainer",
|
116
|
-
"name": "",
|
117
|
-
"type": "tuple"
|
118
|
-
}
|
119
|
-
],
|
120
|
-
"stateMutability": "view",
|
121
|
-
"type": "function"
|
122
|
-
},
|
123
|
-
{
|
124
|
-
"inputs": [],
|
125
|
-
"name": "minimumValueForSendingMessageInWei",
|
126
|
-
"outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
|
127
|
-
"stateMutability": "view",
|
128
|
-
"type": "function"
|
129
|
-
},
|
130
|
-
{
|
131
|
-
"inputs": [],
|
132
|
-
"name": "owner",
|
133
|
-
"outputs": [{ "internalType": "address", "name": "", "type": "address" }],
|
134
|
-
"stateMutability": "view",
|
135
|
-
"type": "function"
|
136
|
-
},
|
137
|
-
{
|
138
|
-
"inputs": [],
|
139
|
-
"name": "pctToTreasuryInBasisPoints",
|
140
|
-
"outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
|
141
|
-
"stateMutability": "view",
|
142
|
-
"type": "function"
|
143
|
-
},
|
144
|
-
{
|
145
|
-
"inputs": [
|
146
|
-
{ "internalType": "address", "name": "agentAddress", "type": "address" },
|
147
|
-
{ "internalType": "uint256", "name": "idx", "type": "uint256" }
|
148
|
-
],
|
149
|
-
"name": "popMessageAtIndex",
|
150
|
-
"outputs": [
|
151
|
-
{
|
152
|
-
"components": [
|
153
|
-
{ "internalType": "address", "name": "sender", "type": "address" },
|
154
|
-
{ "internalType": "address", "name": "recipient", "type": "address" },
|
155
|
-
{ "internalType": "bytes", "name": "message", "type": "bytes" },
|
156
|
-
{ "internalType": "uint256", "name": "value", "type": "uint256" }
|
157
|
-
],
|
158
|
-
"internalType": "struct DoubleEndedStructQueue.MessageContainer",
|
159
|
-
"name": "",
|
160
|
-
"type": "tuple"
|
161
|
-
}
|
162
|
-
],
|
163
|
-
"stateMutability": "nonpayable",
|
164
|
-
"type": "function"
|
165
|
-
},
|
166
|
-
{
|
167
|
-
"inputs": [{ "internalType": "address", "name": "", "type": "address" }],
|
168
|
-
"name": "queues",
|
169
|
-
"outputs": [
|
170
|
-
{ "internalType": "uint128", "name": "_begin", "type": "uint128" },
|
171
|
-
{ "internalType": "uint128", "name": "_end", "type": "uint128" }
|
172
|
-
],
|
173
|
-
"stateMutability": "view",
|
174
|
-
"type": "function"
|
175
|
-
},
|
176
|
-
{
|
177
|
-
"inputs": [],
|
178
|
-
"name": "renounceOwnership",
|
179
|
-
"outputs": [],
|
180
|
-
"stateMutability": "nonpayable",
|
181
|
-
"type": "function"
|
182
|
-
},
|
183
|
-
{
|
184
|
-
"inputs": [
|
185
|
-
{ "internalType": "address", "name": "agentAddress", "type": "address" },
|
186
|
-
{ "internalType": "bytes", "name": "message", "type": "bytes" }
|
187
|
-
],
|
188
|
-
"name": "sendMessage",
|
189
|
-
"outputs": [],
|
190
|
-
"stateMutability": "payable",
|
191
|
-
"type": "function"
|
192
|
-
},
|
193
|
-
{
|
194
|
-
"inputs": [
|
195
|
-
{
|
196
|
-
"internalType": "address payable",
|
197
|
-
"name": "_treasury",
|
198
|
-
"type": "address"
|
199
|
-
}
|
200
|
-
],
|
201
|
-
"name": "setTreasuryAddress",
|
202
|
-
"outputs": [],
|
203
|
-
"stateMutability": "nonpayable",
|
204
|
-
"type": "function"
|
205
|
-
},
|
206
|
-
{
|
207
|
-
"inputs": [
|
208
|
-
{ "internalType": "address", "name": "newOwner", "type": "address" }
|
209
|
-
],
|
210
|
-
"name": "transferOwnership",
|
211
|
-
"outputs": [],
|
212
|
-
"stateMutability": "nonpayable",
|
213
|
-
"type": "function"
|
214
|
-
},
|
215
|
-
{
|
216
|
-
"inputs": [],
|
217
|
-
"name": "treasury",
|
218
|
-
"outputs": [
|
219
|
-
{ "internalType": "address payable", "name": "", "type": "address" }
|
220
|
-
],
|
221
|
-
"stateMutability": "view",
|
222
|
-
"type": "function"
|
223
|
-
}
|
224
|
-
]
|
@@ -1,156 +0,0 @@
|
|
1
|
-
[
|
2
|
-
{
|
3
|
-
"inputs": [
|
4
|
-
{
|
5
|
-
"internalType": "address",
|
6
|
-
"name": "_nftContract",
|
7
|
-
"type": "address"
|
8
|
-
}
|
9
|
-
],
|
10
|
-
"stateMutability": "nonpayable",
|
11
|
-
"type": "constructor"
|
12
|
-
},
|
13
|
-
{
|
14
|
-
"inputs": [
|
15
|
-
{
|
16
|
-
"internalType": "address",
|
17
|
-
"name": "owner",
|
18
|
-
"type": "address"
|
19
|
-
}
|
20
|
-
],
|
21
|
-
"name": "OwnableInvalidOwner",
|
22
|
-
"type": "error"
|
23
|
-
},
|
24
|
-
{
|
25
|
-
"inputs": [
|
26
|
-
{
|
27
|
-
"internalType": "address",
|
28
|
-
"name": "account",
|
29
|
-
"type": "address"
|
30
|
-
}
|
31
|
-
],
|
32
|
-
"name": "OwnableUnauthorizedAccount",
|
33
|
-
"type": "error"
|
34
|
-
},
|
35
|
-
{
|
36
|
-
"anonymous": false,
|
37
|
-
"inputs": [
|
38
|
-
{
|
39
|
-
"indexed": true,
|
40
|
-
"internalType": "address",
|
41
|
-
"name": "previousOwner",
|
42
|
-
"type": "address"
|
43
|
-
},
|
44
|
-
{
|
45
|
-
"indexed": true,
|
46
|
-
"internalType": "address",
|
47
|
-
"name": "newOwner",
|
48
|
-
"type": "address"
|
49
|
-
}
|
50
|
-
],
|
51
|
-
"name": "OwnershipTransferred",
|
52
|
-
"type": "event"
|
53
|
-
},
|
54
|
-
{
|
55
|
-
"anonymous": false,
|
56
|
-
"inputs": [
|
57
|
-
{
|
58
|
-
"indexed": true,
|
59
|
-
"internalType": "address",
|
60
|
-
"name": "holder",
|
61
|
-
"type": "address"
|
62
|
-
},
|
63
|
-
{
|
64
|
-
"indexed": false,
|
65
|
-
"internalType": "uint256",
|
66
|
-
"name": "amount",
|
67
|
-
"type": "uint256"
|
68
|
-
}
|
69
|
-
],
|
70
|
-
"name": "WithdrawnByNFTHolder",
|
71
|
-
"type": "event"
|
72
|
-
},
|
73
|
-
{
|
74
|
-
"inputs": [],
|
75
|
-
"name": "nftContract",
|
76
|
-
"outputs": [
|
77
|
-
{
|
78
|
-
"internalType": "contract IERC721",
|
79
|
-
"name": "",
|
80
|
-
"type": "address"
|
81
|
-
}
|
82
|
-
],
|
83
|
-
"stateMutability": "view",
|
84
|
-
"type": "function"
|
85
|
-
},
|
86
|
-
{
|
87
|
-
"inputs": [],
|
88
|
-
"name": "owner",
|
89
|
-
"outputs": [
|
90
|
-
{
|
91
|
-
"internalType": "address",
|
92
|
-
"name": "",
|
93
|
-
"type": "address"
|
94
|
-
}
|
95
|
-
],
|
96
|
-
"stateMutability": "view",
|
97
|
-
"type": "function"
|
98
|
-
},
|
99
|
-
{
|
100
|
-
"inputs": [],
|
101
|
-
"name": "renounceOwnership",
|
102
|
-
"outputs": [],
|
103
|
-
"stateMutability": "nonpayable",
|
104
|
-
"type": "function"
|
105
|
-
},
|
106
|
-
{
|
107
|
-
"inputs": [],
|
108
|
-
"name": "requiredNFTBalance",
|
109
|
-
"outputs": [
|
110
|
-
{
|
111
|
-
"internalType": "uint256",
|
112
|
-
"name": "",
|
113
|
-
"type": "uint256"
|
114
|
-
}
|
115
|
-
],
|
116
|
-
"stateMutability": "view",
|
117
|
-
"type": "function"
|
118
|
-
},
|
119
|
-
{
|
120
|
-
"inputs": [
|
121
|
-
{
|
122
|
-
"internalType": "uint256",
|
123
|
-
"name": "_newBalance",
|
124
|
-
"type": "uint256"
|
125
|
-
}
|
126
|
-
],
|
127
|
-
"name": "setRequiredNFTBalance",
|
128
|
-
"outputs": [],
|
129
|
-
"stateMutability": "nonpayable",
|
130
|
-
"type": "function"
|
131
|
-
},
|
132
|
-
{
|
133
|
-
"inputs": [
|
134
|
-
{
|
135
|
-
"internalType": "address",
|
136
|
-
"name": "newOwner",
|
137
|
-
"type": "address"
|
138
|
-
}
|
139
|
-
],
|
140
|
-
"name": "transferOwnership",
|
141
|
-
"outputs": [],
|
142
|
-
"stateMutability": "nonpayable",
|
143
|
-
"type": "function"
|
144
|
-
},
|
145
|
-
{
|
146
|
-
"inputs": [],
|
147
|
-
"name": "withdraw",
|
148
|
-
"outputs": [],
|
149
|
-
"stateMutability": "nonpayable",
|
150
|
-
"type": "function"
|
151
|
-
},
|
152
|
-
{
|
153
|
-
"stateMutability": "payable",
|
154
|
-
"type": "receive"
|
155
|
-
}
|
156
|
-
]
|
@@ -1,23 +0,0 @@
|
|
1
|
-
import typing as t
|
2
|
-
|
3
|
-
from pydantic import BaseModel, ConfigDict, Field
|
4
|
-
|
5
|
-
from prediction_market_agent_tooling.gtypes import ChecksumAddress, HexBytes, Wei
|
6
|
-
|
7
|
-
|
8
|
-
# Taken from https://github.com/gnosis/labs-contracts/blob/main/src/NFT/DoubleEndedStructQueue.sol
|
9
|
-
class MessageContainer(BaseModel):
|
10
|
-
model_config = ConfigDict(populate_by_name=True)
|
11
|
-
sender: ChecksumAddress
|
12
|
-
recipient: ChecksumAddress = Field(alias="agentAddress")
|
13
|
-
message: HexBytes
|
14
|
-
value: Wei
|
15
|
-
|
16
|
-
@staticmethod
|
17
|
-
def from_tuple(values: tuple[t.Any, ...]) -> "MessageContainer":
|
18
|
-
return MessageContainer(
|
19
|
-
sender=values[0],
|
20
|
-
recipient=values[1],
|
21
|
-
message=HexBytes(values[2]),
|
22
|
-
value=values[3],
|
23
|
-
)
|
File without changes
|
File without changes
|