diff --git a/contracts/terminus/TerminusFacet.sol b/contracts/terminus/TerminusFacet.sol index 43752ef..ded77d8 100644 --- a/contracts/terminus/TerminusFacet.sol +++ b/contracts/terminus/TerminusFacet.sol @@ -176,6 +176,24 @@ contract TerminusFacet is ERC1155WithTerminusStorage { return LibTerminus.terminusStorage().poolSupply[poolID]; } + function poolIsTransferable(uint256 poolID) external view returns (bool) { + return !LibTerminus.terminusStorage().poolNotTransferable[poolID]; + } + + function poolIsBurnable(uint256 poolID) external view returns (bool) { + return LibTerminus.terminusStorage().poolBurnable[poolID]; + } + + function setPoolTransferable(uint256 poolID, bool transferable) external { + LibTerminus.TerminusStorage storage ts = LibTerminus.terminusStorage(); + ts.poolNotTransferable[poolID] = !transferable; + } + + function setPoolBurnable(uint256 poolID, bool burnable) external { + LibTerminus.TerminusStorage storage ts = LibTerminus.terminusStorage(); + ts.poolBurnable[poolID] = burnable; + } + function createSimplePool(uint256 _capacity) external returns (uint256) { LibTerminus.enforceIsController(); LibTerminus.TerminusStorage storage ts = LibTerminus.terminusStorage(); diff --git a/dao/TerminusFacet.py b/dao/TerminusFacet.py index 3bbd1f6..974d4c3 100644 --- a/dao/TerminusFacet.py +++ b/dao/TerminusFacet.py @@ -1,5 +1,5 @@ # Code generated by moonworm : https://github.com/bugout-dev/moonworm -# Moonworm version : 0.1.14 +# Moonworm version : 0.2.4 import argparse import json @@ -30,8 +30,8 @@ def boolean_argument_type(raw_value: str) -> bool: ) -def bytes_argument_type(raw_value: str) -> bytes: - return raw_value.encode() +def bytes_argument_type(raw_value: str) -> str: + return raw_value def get_abi_json(abi_name: str) -> List[Dict[str, Any]]: @@ -85,6 +85,7 @@ class TerminusFacet: deployed_contract = contract_class.deploy(transaction_config) self.address = deployed_contract.address self.contract = deployed_contract + return deployed_contract.tx def assert_contract_is_instantiated(self) -> None: if self.contract is None: @@ -101,13 +102,25 @@ class TerminusFacet: self.assert_contract_is_instantiated() return self.contract.approveForPool(pool_id, operator, transaction_config) - def balance_of(self, account: ChecksumAddress, id: int) -> Any: + def balance_of( + self, + account: ChecksumAddress, + id: int, + block_number: Optional[Union[str, int]] = "latest", + ) -> Any: self.assert_contract_is_instantiated() - return self.contract.balanceOf.call(account, id) + return self.contract.balanceOf.call(account, id, block_identifier=block_number) - def balance_of_batch(self, accounts: List, ids: List) -> Any: + def balance_of_batch( + self, + accounts: List, + ids: List, + block_number: Optional[Union[str, int]] = "latest", + ) -> Any: self.assert_contract_is_instantiated() - return self.contract.balanceOfBatch.call(accounts, ids) + return self.contract.balanceOfBatch.call( + accounts, ids, block_identifier=block_number + ) def burn( self, from_: ChecksumAddress, pool_id: int, amount: int, transaction_config @@ -115,9 +128,9 @@ class TerminusFacet: self.assert_contract_is_instantiated() return self.contract.burn(from_, pool_id, amount, transaction_config) - def contract_uri(self) -> Any: + def contract_uri(self, block_number: Optional[Union[str, int]] = "latest") -> Any: self.assert_contract_is_instantiated() - return self.contract.contractURI.call() + return self.contract.contractURI.call(block_identifier=block_number) def create_pool_v1( self, _capacity: int, _transferable: bool, _burnable: bool, transaction_config @@ -132,14 +145,26 @@ class TerminusFacet: return self.contract.createSimplePool(_capacity, transaction_config) def is_approved_for_all( - self, account: ChecksumAddress, operator: ChecksumAddress + self, + account: ChecksumAddress, + operator: ChecksumAddress, + block_number: Optional[Union[str, int]] = "latest", ) -> Any: self.assert_contract_is_instantiated() - return self.contract.isApprovedForAll.call(account, operator) + return self.contract.isApprovedForAll.call( + account, operator, block_identifier=block_number + ) - def is_approved_for_pool(self, pool_id: int, operator: ChecksumAddress) -> Any: + def is_approved_for_pool( + self, + pool_id: int, + operator: ChecksumAddress, + block_number: Optional[Union[str, int]] = "latest", + ) -> Any: self.assert_contract_is_instantiated() - return self.contract.isApprovedForPool.call(pool_id, operator) + return self.contract.isApprovedForPool.call( + pool_id, operator, block_identifier=block_number + ) def mint( self, @@ -163,13 +188,29 @@ class TerminusFacet: self.assert_contract_is_instantiated() return self.contract.mintBatch(to, pool_i_ds, amounts, data, transaction_config) - def payment_token(self) -> Any: + def payment_token(self, block_number: Optional[Union[str, int]] = "latest") -> Any: self.assert_contract_is_instantiated() - return self.contract.paymentToken.call() + return self.contract.paymentToken.call(block_identifier=block_number) - def pool_base_price(self) -> Any: + def pool_base_price( + self, block_number: Optional[Union[str, int]] = "latest" + ) -> Any: self.assert_contract_is_instantiated() - return self.contract.poolBasePrice.call() + return self.contract.poolBasePrice.call(block_identifier=block_number) + + def pool_is_burnable( + self, pool_id: int, block_number: Optional[Union[str, int]] = "latest" + ) -> Any: + self.assert_contract_is_instantiated() + return self.contract.poolIsBurnable.call(pool_id, block_identifier=block_number) + + def pool_is_transferable( + self, pool_id: int, block_number: Optional[Union[str, int]] = "latest" + ) -> Any: + self.assert_contract_is_instantiated() + return self.contract.poolIsTransferable.call( + pool_id, block_identifier=block_number + ) def pool_mint_batch( self, id: int, to_addresses: List, amounts: List, transaction_config @@ -233,6 +274,12 @@ class TerminusFacet: self.assert_contract_is_instantiated() return self.contract.setPoolBasePrice(new_base_price, transaction_config) + def set_pool_burnable( + self, pool_id: int, burnable: bool, transaction_config + ) -> Any: + self.assert_contract_is_instantiated() + return self.contract.setPoolBurnable(pool_id, burnable, transaction_config) + def set_pool_controller( self, pool_id: int, new_controller: ChecksumAddress, transaction_config ) -> Any: @@ -241,37 +288,65 @@ class TerminusFacet: pool_id, new_controller, transaction_config ) + def set_pool_transferable( + self, pool_id: int, transferable: bool, transaction_config + ) -> Any: + self.assert_contract_is_instantiated() + return self.contract.setPoolTransferable( + pool_id, transferable, transaction_config + ) + def set_uri(self, pool_id: int, pool_uri: str, transaction_config) -> Any: self.assert_contract_is_instantiated() return self.contract.setURI(pool_id, pool_uri, transaction_config) - def supports_interface(self, interface_id: bytes) -> Any: + def supports_interface( + self, interface_id: bytes, block_number: Optional[Union[str, int]] = "latest" + ) -> Any: self.assert_contract_is_instantiated() - return self.contract.supportsInterface.call(interface_id) + return self.contract.supportsInterface.call( + interface_id, block_identifier=block_number + ) - def terminus_controller(self) -> Any: + def terminus_controller( + self, block_number: Optional[Union[str, int]] = "latest" + ) -> Any: self.assert_contract_is_instantiated() - return self.contract.terminusController.call() + return self.contract.terminusController.call(block_identifier=block_number) - def terminus_pool_capacity(self, pool_id: int) -> Any: + def terminus_pool_capacity( + self, pool_id: int, block_number: Optional[Union[str, int]] = "latest" + ) -> Any: self.assert_contract_is_instantiated() - return self.contract.terminusPoolCapacity.call(pool_id) + return self.contract.terminusPoolCapacity.call( + pool_id, block_identifier=block_number + ) - def terminus_pool_controller(self, pool_id: int) -> Any: + def terminus_pool_controller( + self, pool_id: int, block_number: Optional[Union[str, int]] = "latest" + ) -> Any: self.assert_contract_is_instantiated() - return self.contract.terminusPoolController.call(pool_id) + return self.contract.terminusPoolController.call( + pool_id, block_identifier=block_number + ) - def terminus_pool_supply(self, pool_id: int) -> Any: + def terminus_pool_supply( + self, pool_id: int, block_number: Optional[Union[str, int]] = "latest" + ) -> Any: self.assert_contract_is_instantiated() - return self.contract.terminusPoolSupply.call(pool_id) + return self.contract.terminusPoolSupply.call( + pool_id, block_identifier=block_number + ) - def total_pools(self) -> Any: + def total_pools(self, block_number: Optional[Union[str, int]] = "latest") -> Any: self.assert_contract_is_instantiated() - return self.contract.totalPools.call() + return self.contract.totalPools.call(block_identifier=block_number) - def uri(self, pool_id: int) -> Any: + def uri( + self, pool_id: int, block_number: Optional[Union[str, int]] = "latest" + ) -> Any: self.assert_contract_is_instantiated() - return self.contract.uri.call(pool_id) + return self.contract.uri.call(pool_id, block_identifier=block_number) def withdraw_payments( self, to_address: ChecksumAddress, amount: int, transaction_config @@ -304,6 +379,12 @@ def add_default_arguments(parser: argparse.ArgumentParser, transact: bool) -> No "--address", required=False, help="Address of deployed contract to connect to" ) if not transact: + parser.add_argument( + "--block-number", + required=False, + type=int, + help="Call at the given block number, defaults to latest", + ) return parser.add_argument( "--sender", required=True, help="Path to keystore file for transaction sender" @@ -335,6 +416,10 @@ def add_default_arguments(parser: argparse.ArgumentParser, transact: bool) -> No parser.add_argument( "--nonce", type=int, default=None, help="Nonce for the transaction (optional)" ) + parser.add_argument( + "--value", default=None, help="Value of the transaction in wei(optional)" + ) + parser.add_argument("--verbose", action="store_true", help="Print verbose output") def handle_deploy(args: argparse.Namespace) -> None: @@ -343,6 +428,8 @@ def handle_deploy(args: argparse.Namespace) -> None: contract = TerminusFacet(None) result = contract.deploy(transaction_config=transaction_config) print(result) + if args.verbose: + print(result.info()) def handle_verify_contract(args: argparse.Namespace) -> None: @@ -362,19 +449,25 @@ def handle_approve_for_pool(args: argparse.Namespace) -> None: transaction_config=transaction_config, ) print(result) + if args.verbose: + print(result.info()) def handle_balance_of(args: argparse.Namespace) -> None: network.connect(args.network) contract = TerminusFacet(args.address) - result = contract.balance_of(account=args.account, id=args.id) + result = contract.balance_of( + account=args.account, id=args.id, block_number=args.block_number + ) print(result) def handle_balance_of_batch(args: argparse.Namespace) -> None: network.connect(args.network) contract = TerminusFacet(args.address) - result = contract.balance_of_batch(accounts=args.accounts, ids=args.ids) + result = contract.balance_of_batch( + accounts=args.accounts, ids=args.ids, block_number=args.block_number + ) print(result) @@ -389,12 +482,14 @@ def handle_burn(args: argparse.Namespace) -> None: transaction_config=transaction_config, ) print(result) + if args.verbose: + print(result.info()) def handle_contract_uri(args: argparse.Namespace) -> None: network.connect(args.network) contract = TerminusFacet(args.address) - result = contract.contract_uri() + result = contract.contract_uri(block_number=args.block_number) print(result) @@ -409,6 +504,8 @@ def handle_create_pool_v1(args: argparse.Namespace) -> None: transaction_config=transaction_config, ) print(result) + if args.verbose: + print(result.info()) def handle_create_simple_pool(args: argparse.Namespace) -> None: @@ -419,19 +516,25 @@ def handle_create_simple_pool(args: argparse.Namespace) -> None: _capacity=args.capacity_arg, transaction_config=transaction_config ) print(result) + if args.verbose: + print(result.info()) def handle_is_approved_for_all(args: argparse.Namespace) -> None: network.connect(args.network) contract = TerminusFacet(args.address) - result = contract.is_approved_for_all(account=args.account, operator=args.operator) + result = contract.is_approved_for_all( + account=args.account, operator=args.operator, block_number=args.block_number + ) print(result) def handle_is_approved_for_pool(args: argparse.Namespace) -> None: network.connect(args.network) contract = TerminusFacet(args.address) - result = contract.is_approved_for_pool(pool_id=args.pool_id, operator=args.operator) + result = contract.is_approved_for_pool( + pool_id=args.pool_id, operator=args.operator, block_number=args.block_number + ) print(result) @@ -447,6 +550,8 @@ def handle_mint(args: argparse.Namespace) -> None: transaction_config=transaction_config, ) print(result) + if args.verbose: + print(result.info()) def handle_mint_batch(args: argparse.Namespace) -> None: @@ -461,19 +566,39 @@ def handle_mint_batch(args: argparse.Namespace) -> None: transaction_config=transaction_config, ) print(result) + if args.verbose: + print(result.info()) def handle_payment_token(args: argparse.Namespace) -> None: network.connect(args.network) contract = TerminusFacet(args.address) - result = contract.payment_token() + result = contract.payment_token(block_number=args.block_number) print(result) def handle_pool_base_price(args: argparse.Namespace) -> None: network.connect(args.network) contract = TerminusFacet(args.address) - result = contract.pool_base_price() + result = contract.pool_base_price(block_number=args.block_number) + print(result) + + +def handle_pool_is_burnable(args: argparse.Namespace) -> None: + network.connect(args.network) + contract = TerminusFacet(args.address) + result = contract.pool_is_burnable( + pool_id=args.pool_id, block_number=args.block_number + ) + print(result) + + +def handle_pool_is_transferable(args: argparse.Namespace) -> None: + network.connect(args.network) + contract = TerminusFacet(args.address) + result = contract.pool_is_transferable( + pool_id=args.pool_id, block_number=args.block_number + ) print(result) @@ -488,6 +613,8 @@ def handle_pool_mint_batch(args: argparse.Namespace) -> None: transaction_config=transaction_config, ) print(result) + if args.verbose: + print(result.info()) def handle_safe_batch_transfer_from(args: argparse.Namespace) -> None: @@ -503,6 +630,8 @@ def handle_safe_batch_transfer_from(args: argparse.Namespace) -> None: transaction_config=transaction_config, ) print(result) + if args.verbose: + print(result.info()) def handle_safe_transfer_from(args: argparse.Namespace) -> None: @@ -518,6 +647,8 @@ def handle_safe_transfer_from(args: argparse.Namespace) -> None: transaction_config=transaction_config, ) print(result) + if args.verbose: + print(result.info()) def handle_set_approval_for_all(args: argparse.Namespace) -> None: @@ -530,6 +661,8 @@ def handle_set_approval_for_all(args: argparse.Namespace) -> None: transaction_config=transaction_config, ) print(result) + if args.verbose: + print(result.info()) def handle_set_contract_uri(args: argparse.Namespace) -> None: @@ -540,6 +673,8 @@ def handle_set_contract_uri(args: argparse.Namespace) -> None: _contract_uri=args.contract_uri_arg, transaction_config=transaction_config ) print(result) + if args.verbose: + print(result.info()) def handle_set_controller(args: argparse.Namespace) -> None: @@ -550,6 +685,8 @@ def handle_set_controller(args: argparse.Namespace) -> None: new_controller=args.new_controller, transaction_config=transaction_config ) print(result) + if args.verbose: + print(result.info()) def handle_set_payment_token(args: argparse.Namespace) -> None: @@ -560,6 +697,8 @@ def handle_set_payment_token(args: argparse.Namespace) -> None: new_payment_token=args.new_payment_token, transaction_config=transaction_config ) print(result) + if args.verbose: + print(result.info()) def handle_set_pool_base_price(args: argparse.Namespace) -> None: @@ -570,6 +709,22 @@ def handle_set_pool_base_price(args: argparse.Namespace) -> None: new_base_price=args.new_base_price, transaction_config=transaction_config ) print(result) + if args.verbose: + print(result.info()) + + +def handle_set_pool_burnable(args: argparse.Namespace) -> None: + network.connect(args.network) + contract = TerminusFacet(args.address) + transaction_config = get_transaction_config(args) + result = contract.set_pool_burnable( + pool_id=args.pool_id, + burnable=args.burnable, + transaction_config=transaction_config, + ) + print(result) + if args.verbose: + print(result.info()) def handle_set_pool_controller(args: argparse.Namespace) -> None: @@ -582,6 +737,22 @@ def handle_set_pool_controller(args: argparse.Namespace) -> None: transaction_config=transaction_config, ) print(result) + if args.verbose: + print(result.info()) + + +def handle_set_pool_transferable(args: argparse.Namespace) -> None: + network.connect(args.network) + contract = TerminusFacet(args.address) + transaction_config = get_transaction_config(args) + result = contract.set_pool_transferable( + pool_id=args.pool_id, + transferable=args.transferable, + transaction_config=transaction_config, + ) + print(result) + if args.verbose: + print(result.info()) def handle_set_uri(args: argparse.Namespace) -> None: @@ -594,54 +765,64 @@ def handle_set_uri(args: argparse.Namespace) -> None: transaction_config=transaction_config, ) print(result) + if args.verbose: + print(result.info()) def handle_supports_interface(args: argparse.Namespace) -> None: network.connect(args.network) contract = TerminusFacet(args.address) - result = contract.supports_interface(interface_id=args.interface_id) + result = contract.supports_interface( + interface_id=args.interface_id, block_number=args.block_number + ) print(result) def handle_terminus_controller(args: argparse.Namespace) -> None: network.connect(args.network) contract = TerminusFacet(args.address) - result = contract.terminus_controller() + result = contract.terminus_controller(block_number=args.block_number) print(result) def handle_terminus_pool_capacity(args: argparse.Namespace) -> None: network.connect(args.network) contract = TerminusFacet(args.address) - result = contract.terminus_pool_capacity(pool_id=args.pool_id) + result = contract.terminus_pool_capacity( + pool_id=args.pool_id, block_number=args.block_number + ) print(result) def handle_terminus_pool_controller(args: argparse.Namespace) -> None: network.connect(args.network) contract = TerminusFacet(args.address) - result = contract.terminus_pool_controller(pool_id=args.pool_id) + result = contract.terminus_pool_controller( + pool_id=args.pool_id, block_number=args.block_number + ) print(result) def handle_terminus_pool_supply(args: argparse.Namespace) -> None: network.connect(args.network) contract = TerminusFacet(args.address) - result = contract.terminus_pool_supply(pool_id=args.pool_id) + result = contract.terminus_pool_supply( + pool_id=args.pool_id, block_number=args.block_number + ) print(result) def handle_total_pools(args: argparse.Namespace) -> None: network.connect(args.network) contract = TerminusFacet(args.address) - result = contract.total_pools() + result = contract.total_pools(block_number=args.block_number) print(result) def handle_uri(args: argparse.Namespace) -> None: network.connect(args.network) contract = TerminusFacet(args.address) - result = contract.uri(pool_id=args.pool_id) + result = contract.uri(pool_id=args.pool_id, block_number=args.block_number) print(result) @@ -655,6 +836,8 @@ def handle_withdraw_payments(args: argparse.Namespace) -> None: transaction_config=transaction_config, ) print(result) + if args.verbose: + print(result.info()) def generate_cli() -> argparse.ArgumentParser: @@ -784,6 +967,20 @@ def generate_cli() -> argparse.ArgumentParser: add_default_arguments(pool_base_price_parser, False) pool_base_price_parser.set_defaults(func=handle_pool_base_price) + pool_is_burnable_parser = subcommands.add_parser("pool-is-burnable") + add_default_arguments(pool_is_burnable_parser, False) + pool_is_burnable_parser.add_argument( + "--pool-id", required=True, help="Type: uint256", type=int + ) + pool_is_burnable_parser.set_defaults(func=handle_pool_is_burnable) + + pool_is_transferable_parser = subcommands.add_parser("pool-is-transferable") + add_default_arguments(pool_is_transferable_parser, False) + pool_is_transferable_parser.add_argument( + "--pool-id", required=True, help="Type: uint256", type=int + ) + pool_is_transferable_parser.set_defaults(func=handle_pool_is_transferable) + pool_mint_batch_parser = subcommands.add_parser("pool-mint-batch") add_default_arguments(pool_mint_batch_parser, True) pool_mint_batch_parser.add_argument( @@ -871,6 +1068,16 @@ def generate_cli() -> argparse.ArgumentParser: ) set_pool_base_price_parser.set_defaults(func=handle_set_pool_base_price) + set_pool_burnable_parser = subcommands.add_parser("set-pool-burnable") + add_default_arguments(set_pool_burnable_parser, True) + set_pool_burnable_parser.add_argument( + "--pool-id", required=True, help="Type: uint256", type=int + ) + set_pool_burnable_parser.add_argument( + "--burnable", required=True, help="Type: bool", type=boolean_argument_type + ) + set_pool_burnable_parser.set_defaults(func=handle_set_pool_burnable) + set_pool_controller_parser = subcommands.add_parser("set-pool-controller") add_default_arguments(set_pool_controller_parser, True) set_pool_controller_parser.add_argument( @@ -881,6 +1088,16 @@ def generate_cli() -> argparse.ArgumentParser: ) set_pool_controller_parser.set_defaults(func=handle_set_pool_controller) + set_pool_transferable_parser = subcommands.add_parser("set-pool-transferable") + add_default_arguments(set_pool_transferable_parser, True) + set_pool_transferable_parser.add_argument( + "--pool-id", required=True, help="Type: uint256", type=int + ) + set_pool_transferable_parser.add_argument( + "--transferable", required=True, help="Type: bool", type=boolean_argument_type + ) + set_pool_transferable_parser.set_defaults(func=handle_set_pool_transferable) + set_uri_parser = subcommands.add_parser("set-uri") add_default_arguments(set_uri_parser, True) set_uri_parser.add_argument( diff --git a/dao/test_terminus.py b/dao/test_terminus.py index 3e60ccf..ffa9fcc 100644 --- a/dao/test_terminus.py +++ b/dao/test_terminus.py @@ -658,6 +658,71 @@ class TestCreatePoolV1(TestPoolOperations): self.assertEqual(final_sender_balance, initial_sender_balance) self.assertEqual(final_receiver_balance, initial_receiver_balance) + def test_pool_state_view_methods(self): + self.diamond_terminus.create_pool_v1(10, False, False, {"from": accounts[1]}) + nontransferable_nonburnable_pool_id = self.diamond_terminus.total_pools() + self.assertFalse( + self.diamond_terminus.pool_is_transferable( + nontransferable_nonburnable_pool_id + ) + ) + self.assertFalse( + self.diamond_terminus.pool_is_burnable(nontransferable_nonburnable_pool_id) + ) + + self.diamond_terminus.create_pool_v1(10, True, False, {"from": accounts[1]}) + transferable_nonburnable_pool_id = self.diamond_terminus.total_pools() + self.assertTrue( + self.diamond_terminus.pool_is_transferable(transferable_nonburnable_pool_id) + ) + self.assertFalse( + self.diamond_terminus.pool_is_burnable(transferable_nonburnable_pool_id) + ) + + self.diamond_terminus.create_pool_v1(10, True, True, {"from": accounts[1]}) + transferable_burnable_pool_id = self.diamond_terminus.total_pools() + self.assertTrue( + self.diamond_terminus.pool_is_transferable(transferable_burnable_pool_id) + ) + self.assertTrue( + self.diamond_terminus.pool_is_burnable(transferable_burnable_pool_id) + ) + + self.diamond_terminus.create_pool_v1(10, False, True, {"from": accounts[1]}) + nontransferable_burnable_pool_id = self.diamond_terminus.total_pools() + self.assertFalse( + self.diamond_terminus.pool_is_transferable(nontransferable_burnable_pool_id) + ) + self.assertTrue( + self.diamond_terminus.pool_is_burnable(nontransferable_burnable_pool_id) + ) + + def test_pool_state_setters(self): + self.diamond_terminus.create_pool_v1(10, False, False, {"from": accounts[1]}) + pool_id = self.diamond_terminus.total_pools() + self.assertFalse(self.diamond_terminus.pool_is_transferable(pool_id)) + self.assertFalse(self.diamond_terminus.pool_is_burnable(pool_id)) + + self.diamond_terminus.set_pool_transferable( + pool_id, True, {"from": accounts[1]} + ) + self.assertTrue(self.diamond_terminus.pool_is_transferable(pool_id)) + self.assertFalse(self.diamond_terminus.pool_is_burnable(pool_id)) + + self.diamond_terminus.set_pool_burnable(pool_id, True, {"from": accounts[1]}) + self.assertTrue(self.diamond_terminus.pool_is_transferable(pool_id)) + self.assertTrue(self.diamond_terminus.pool_is_burnable(pool_id)) + + self.diamond_terminus.set_pool_transferable( + pool_id, False, {"from": accounts[1]} + ) + self.assertFalse(self.diamond_terminus.pool_is_transferable(pool_id)) + self.assertTrue(self.diamond_terminus.pool_is_burnable(pool_id)) + + self.diamond_terminus.set_pool_burnable(pool_id, False, {"from": accounts[1]}) + self.assertFalse(self.diamond_terminus.pool_is_transferable(pool_id)) + self.assertFalse(self.diamond_terminus.pool_is_burnable(pool_id)) + def test_burnable_pool_burn_as_token_owner(self): self.diamond_terminus.create_pool_v1(10, True, True, {"from": accounts[1]}) pool_id = self.diamond_terminus.total_pools()