function depositERC721TokenToBridge(
address collectionAddress,
) external payable override whenNotPaused {
// check if token was minted from an original collection or minted by this bridge
if (ICrossChainBridgeERC721(bridgeERC721).mintedDeposits(collectionAddress, tokenId)) {
// no whitelist check necessary since token was minted by this bridge
//TODO: to check > will it be a problem that the router will have mint/burn permission instead of the bridges?
//TODO: @CHRIS: pls comment
MintableERC721(collectionAddress).burn(tokenId);
if (!ICrossChainBridgeERC721(bridgeERC721).officialCollectionWhitelist(collectionAddress)) revert Unauthorized();
// transfer the token into the bridge
IERC721Upgradeable(collectionAddress).safeTransferFrom(_msgSender(), address(bridgeERC721), tokenId);
// call bridgeERC721 contract to emit event
ICrossChainBridgeERC721(bridgeERC721).depositERC721(collectionAddress, tokenId, receiverAddress, targetChainId);