diff --git a/prediction_market_agent/agents/microchain_agent/nft_treasury_game/app_nft_treasury_game.py b/prediction_market_agent/agents/microchain_agent/nft_treasury_game/app_nft_treasury_game.py index dbb0a2c2..4ae8d208 100644 --- a/prediction_market_agent/agents/microchain_agent/nft_treasury_game/app_nft_treasury_game.py +++ b/prediction_market_agent/agents/microchain_agent/nft_treasury_game/app_nft_treasury_game.py @@ -21,6 +21,9 @@ NFT_TOKEN_FACTORY, TREASURY_SAFE_ADDRESS, ) +from prediction_market_agent.agents.microchain_agent.nft_treasury_game.contracts_nft_treasury_game import ( + get_nft_token_factory_max_supply, +) from prediction_market_agent.agents.microchain_agent.nft_treasury_game.deploy_nft_treasury_game import ( DEPLOYED_NFT_AGENTS, DeployableAgentNFTGameAbstract, @@ -246,7 +249,7 @@ def show_treasury_part() -> None: treasury_xdai_balance = get_balances(TREASURY_SAFE_ADDRESS).xdai st.markdown( f"""### Treasury -Currently holds {treasury_xdai_balance:.2f} xDAI.""", +Currently holds {treasury_xdai_balance:.2f} xDAI. There are {get_nft_token_factory_max_supply()} NFT keys.""", unsafe_allow_html=True, ) diff --git a/prediction_market_agent/agents/microchain_agent/nft_treasury_game/contracts_nft_treasury_game.py b/prediction_market_agent/agents/microchain_agent/nft_treasury_game/contracts_nft_treasury_game.py new file mode 100644 index 00000000..ca3d3480 --- /dev/null +++ b/prediction_market_agent/agents/microchain_agent/nft_treasury_game/contracts_nft_treasury_game.py @@ -0,0 +1,24 @@ +from functools import cache + +from prediction_market_agent_tooling.gtypes import ChecksumAddress +from prediction_market_agent_tooling.tools.contract import ( + ContractOwnableERC721OnGnosisChain, +) +from web3 import Web3 + +from prediction_market_agent.agents.microchain_agent.nft_treasury_game.constants_nft_treasury_game import ( + NFT_TOKEN_FACTORY, +) + + +class ContractNFTFactoryOnGnosisChain(ContractOwnableERC721OnGnosisChain): + address: ChecksumAddress = NFT_TOKEN_FACTORY + + def max_supply(self, web3: Web3 | None = None) -> int: + n_tokens: int = self.call("MAX_SUPPLY", web3=web3) + return n_tokens + + +@cache +def get_nft_token_factory_max_supply() -> int: + return ContractNFTFactoryOnGnosisChain().max_supply() diff --git a/prediction_market_agent/agents/microchain_agent/nft_treasury_game/deploy_nft_treasury_game.py b/prediction_market_agent/agents/microchain_agent/nft_treasury_game/deploy_nft_treasury_game.py index 4a374814..85bc02cb 100644 --- a/prediction_market_agent/agents/microchain_agent/nft_treasury_game/deploy_nft_treasury_game.py +++ b/prediction_market_agent/agents/microchain_agent/nft_treasury_game/deploy_nft_treasury_game.py @@ -14,6 +14,9 @@ NFT_TOKEN_FACTORY, TREASURY_SAFE_ADDRESS, ) +from prediction_market_agent.agents.microchain_agent.nft_treasury_game.contracts_nft_treasury_game import ( + get_nft_token_factory_max_supply, +) class DeployableAgentNFTGameAbstract(DeployableMicrochainAgentAbstract): @@ -184,6 +187,7 @@ def get_initial_system_prompt(cls) -> str: def nft_treasury_game_base_prompt(wallet_address: ChecksumAddress) -> str: keys = MicrochainAgentKeys() + n_nft_keys = get_nft_token_factory_max_supply() other_agents_keys_formatted = ", ".join( x.wallet_address for x in DEPLOYED_NFT_AGENTS @@ -194,8 +198,8 @@ def nft_treasury_game_base_prompt(wallet_address: ChecksumAddress) -> str: - You participate in the securing of the NFT key to a treasury. - Your wallet address is {wallet_address}. - Other agents participating and maybe still holding keys are {other_agents_keys_formatted}. -- Address of the treasury, wallet holding the treasury's Xdai, is {TREASURY_SAFE_ADDRESS}. -- Address of the NFT contract is {NFT_TOKEN_FACTORY}, there are 5 keys, with token_id 0, 1, 2, 3, 4. +- Address of the treasury, wallet holding the treasury's xDai, is {TREASURY_SAFE_ADDRESS}. +- Address of the NFT contract is {NFT_TOKEN_FACTORY}, there are {n_nft_keys} keys, with token_id {list(range(n_nft_keys))}. - You can own multiple NFT keys. - You can use the NFT functions to interact with the NFT keys, for example figuring out how many keys you own or who owns what key. - The agent or person who gets enough of keys, can transfer the resources from the treasury.