Canto/contracts/turnstile.sol:
   86      /// @return tokenId of the ownership NFT that collects fees
   87:     function register(address _recipient) public onlyUnregistered returns (uint256 tokenId) {
   88:         address smartContract = msg.sender;
   89: 
   90:         if (_recipient == address(0)) revert InvalidRecipient();
   91: 
   92:         tokenId = _tokenIdTracker.current();
   93:         _mint(_recipient, tokenId);
   94:         _tokenIdTracker.increment();
   95: 
   96:         emit Register(smartContract, _recipient, tokenId);
   97: 
   98:         feeRecipient[smartContract] = NftData({
   99:             tokenId: tokenId,
  100:             registered: true
  101:         });
  102:     }
