From 9e8958780c1e843302c7c1ffc1c9dc34b6b781bb Mon Sep 17 00:00:00 2001 From: Matej Poklemba Date: Thu, 11 Apr 2024 11:36:37 +0200 Subject: [PATCH] Add mint function to pass data to onERC721Received --- PRCS/prc-3.md | 25 ++++++++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) diff --git a/PRCS/prc-3.md b/PRCS/prc-3.md index 63191e1..a562a36 100644 --- a/PRCS/prc-3.md +++ b/PRCS/prc-3.md @@ -117,7 +117,7 @@ This case uses the following extension to the base interface /// @dev A Paima Inverse Projection NFT where initialization is handled by the app-layer. /// A standard ERC721 that can be freely minted and stores an unique pair (used in tokenURI) when minted. interface IInverseAppProjectedNft is IInverseProjectedNft { - /// @dev Emitted when the globally-enforced tokenId in combination with an unique pair is minted. + /// @dev Emitted when the globally-enforced tokenId in combination with an unique `` pair is minted. event Minted(uint256 indexed tokenId, address indexed minter, uint256 indexed userTokenId); /// @dev Mints a new token to address `_to` @@ -126,10 +126,18 @@ interface IInverseAppProjectedNft is IInverseProjectedNft { /// Emits the `Minted` event. /// @param _to where to send the NFT to /// @param _verificationData any additional data to verify the validity of the mint + /// @param _data any additional data to pass to the receiver contract + /// @return id of the minted token + function mint( + address _to, + bytes memory _verificationData, + bytes memory _data + ) external returns (uint256); + + /// @dev Shorthand function that calls the `mint` function with empty `_data`. function mint(address _to, bytes memory _verificationData) external returns (uint256); - /// @dev This works identically to the other function with an extra data parameter, - /// except this function just sets data to "". + /// @dev Shorthand function that calls the `mint` function with empty `_verificationData` and empty `_data`. function mint(address _to) external returns (uint256); /// @notice Returns the last nonce used (or 0 if the user has never minted) @@ -209,6 +217,17 @@ interface IInverseBaseProjectedNft is IInverseProjectedNft { /// Increases the `totalSupply` and `currentTokenId`. /// Reverts if `_to` is a zero address or if it refers to smart contract but does not implement IERC721Receiver-onERC721Received. /// Emits the `Minted` event. + /// @param _to where to send the NFT to + /// @param initialData data that is emitted in the `Minted` event + /// @param data any additional data to pass to the receiver contract + /// @return id of the minted token + function mint( + address _to, + string calldata initialData, + bytes memory data + ) external returns (uint256); + + /// @dev Shorthand function that calls the `mint` function with empty `data`. function mint(address _to, string calldata initialData) external returns (uint256); } ```