Yes, it is possible to use the Token Bridging feature of Arbitrum to move ERC721 tokens between chains. The ITransferAndCall library that you mentioned only provides support for ERC20 tokens, but you can still use the Token Bridging feature with an ERC721 contract by using the call method of the ERC721 contract to call the required functions on the other side of the bridge.
Here is an example of how you could use the Token Bridging feature to move an ERC721 token between chains:
- On the source chain, you would need to deploy an ERC721 token contract and an instance of the Token Bridge contract.
- You would then need to create a message that includes the contract address of the ERC721 token contract and the ID of the ERC721 token that you want to move, as well as any other necessary data.
- You would then call the
submitMessagefunction of the Token Bridge contract on the source chain, passing in the message that you created in step 2. This will send the message to the destination chain. - On the destination chain, you would need to deploy an instance of the Token Bridge contract and an ERC721 token contract that is identical to the one on the source chain.
- When the message is received on the destination chain, the
executeMessagefunction of the Token Bridge contract will be called. This function will parse the message and extract the necessary data, including the contract address of the ERC721 token contract and the ID of the ERC721 token. - The
executeMessagefunction will then call thecallmethod of the ERC721 token contract on the destination chain, passing in the required parameters to transfer the ERC721 token to the desired address on the destination chain.
I hope this helps!