diff --git a/docs/home/10000-libraries/100-evm-contracts/200-solidity/200-generated-docs.mdx b/docs/home/10000-libraries/100-evm-contracts/200-solidity/200-generated-docs.mdx
index 0a1a1930..a1c56f2a 100644
--- a/docs/home/10000-libraries/100-evm-contracts/200-solidity/200-generated-docs.mdx
+++ b/docs/home/10000-libraries/100-evm-contracts/200-solidity/200-generated-docs.mdx
@@ -14,7 +14,8 @@ Core contracts
State-annotated contracts
- [AnnotatedMintNft](#AnnotatedMintNft): A standard ERC721 that accepts calldata in the mint function for any initialization data needed in a Paima dApp.
- - [InverseProjectedNft](#InverseProjectedNft): Project game state into a ERC721 NFT on an EVM layer.
+ - [InverseBaseProjectedNft](#InverseBaseProjectedNft): Project game state into a ERC721 NFT on an EVM layer initiated on said base layer.
+ - [InverseAppProjectedNft](#InverseAppProjectedNft): Project game state into a ERC721 NFT on an EVM layer initiated on the app layer.
Facilitating monetization
@@ -25,7 +26,7 @@ Facilitating monetization
## Core contracts
-
+
### PaimaL2Contract
@@ -170,7 +171,7 @@ Callable only by the contract owner.
## State-annotated contracts
-
+
### AnnotatedMintNft
@@ -874,7 +875,7 @@ Emits the `UpdateMaxSupply` event.
Emitted when a new token with ID `tokenId` is minted, with `initialData` provided in the `mint` function parameters.
-
+
### IInverseProjectedNft
@@ -882,7 +883,1114 @@ Emits the `UpdateMaxSupply` event.
import "@paima/evm-contracts/contracts/token/IInverseProjectedNft.sol";
```
+A standard ERC721 that can be burned and has a special tokenURI function accepting a custom base URI.
+See PRC3 for more.
+
+
+
+
+
+
+
+
+ Burns token of ID `_tokenId`. Callable only by the owner of the specified token.
+Reverts if `_tokenId` is not existing.
+
+
+
+ Sets `_URI` as the `baseURI` of the NFT.
+Callable only by the contract owner.
+Emits the `SetBaseURI` event.
+
+
+
+ Sets `_newBaseExtension` as the `baseExtension` of the NFT.
+Callable only by the contract owner.
+
+
+
+ Returns the token URI of specified `tokenId` using a custom base URI.
+
+
+
+ Returns the token URI of specified `tokenId` using a call to contract implementing `ITokenUri`.
+
+
+
+ Emitted when `baseExtension` is updated from `oldBaseExtension` to `newBaseExtension`.
+
+
+
+ Emitted when `baseUri` is updated from `oldUri` to `newUri`.
+
+
+
+ ### IInverseBaseProjectedNft
+
+
+```solidity
+import "@paima/evm-contracts/contracts/token/IInverseBaseProjectedNft.sol";
+```
+
+A Paima Inverse Projection NFT where initialization is handled by the base-layer.
A standard ERC721 that accepts calldata in the mint function for any initialization data needed in a Paima dApp.
+See PRC3 for more.
+
+
+
+
+
+
+
+
+ Mints a new token to address `_to`, passing `initialData` to be emitted in the event.
+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.
+
+
+
+ Emitted when the globally-enforced tokenId is minted, with `initialData` provided in the `mint` function parameters.
+
+
+
+ ### InverseBaseProjectedNft
+
+
+```solidity
+import "@paima/evm-contracts/contracts/token/InverseBaseProjectedNft.sol";
+```
+
+A standard ERC721 that accepts calldata in the mint function for any initialization data needed in a Paima dApp.
+See PRC3 for more.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Reverts if `msg.sender` is not the specified token's owner.
+
+
+
+ Sets the NFT's `name`, `symbol`, and transfers ownership to `owner`.
+Also sets `currentTokenId` to 1 and `baseExtension` to `".json"`.
+
+
+
+ Returns true if this contract implements the interface defined by `interfaceId`. See EIP165.
+
+
+
+ Mints a new token to address `_to`, passing `initialData` to be emitted in the event.
+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.
+
+
+
+ Burns token of ID `_tokenId`. Callable only by the owner of the specified token.
+Reverts if `_tokenId` does not exist.
+
+
+
+ Returns the `baseURI` of this NFT.
+
+
+
+ Returns the token URI of specified `tokenId` using the default set base URI.
+
+
+
+ Returns the token URI of specified `tokenId` using a custom base URI.
+
+
+
+ Returns the token URI of specified `tokenId` using a call to contract implementing `ITokenUri`.
+
+
+
+ Sets `_URI` as the `baseURI` of the NFT.
+Callable only by the contract owner.
+Emits the `SetBaseURI` event.
+
+
+
+ Sets `_newBaseExtension` as the `baseExtension` of the NFT.
+Callable only by the contract owner.
+
+
+
+ Function that emits an event to notify third-parties (e.g. NFT marketplaces) about
+an update to consecutive range of tokens. Can be overriden in inheriting contract.
+
+
+
+ Function that emits an event to notify third-parties (e.g. NFT marketplaces) about
+an update to a single token. Can be overriden in inheriting contract.
+
+
+
+ The token ID that will be minted when calling the `mint` function.
+
+
+
+ Base URI that is used in the `tokenURI` function to form the start of the token URI.
+
+
+
+ Total token supply, increased by minting and decreased by burning.
+
+
+
+ Base extension that is used in the `tokenURI` function to form the end of the token URI.
+
+
+
+ ### IInverseAppProjectedNft
+
+
+```solidity
+import "@paima/evm-contracts/contracts/token/IInverseAppProjectedNft.sol";
+```
+
+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.
+See PRC3 for more.
- Mints a new token to address `_to`, passing `initialData` to be emitted in the event.
+ Mints a new token to address `_to`
Increases the `totalSupply` and `currentTokenId`.
-Reverts if `totalSupply` is not less than `maxSupply` or if `_to` is a zero address.
+Reverts if `_to` is a zero address or if it refers to smart contract but does not implement IERC721Receiver-onERC721Received.
Emits the `Minted` event.
- Burns token of ID `_tokenId`. Callable only by the owner of the specified token.
-Reverts if `_tokenId` is not existing.
-
-
-
- Sets `_URI` as the `baseURI` of the NFT.
-Callable only by the contract owner.
-Emits the `SetBaseURI` event.
-
-
-
- Sets `_newBaseExtension` as the `baseExtension` of the NFT.
-Callable only by the contract owner.
+ This works identically to the other function with an extra data parameter,
+ except this function just sets data to "".
- Returns the token URI of specified `tokenId` using a custom base URI.
-
-
-
- Emitted when `baseExtension` is updated from `oldBaseExtension` to `newBaseExtension`.
-
-
-
- Emitted when `baseUri` is updated from `oldUri` to `newUri`.
+ Useful if you need to either needs to
+ 1. Check if the nonce matches the expected value, or if more NFTs need to be minted
+ 2. Use a nonce algorithm where the next nonce depends on the current nonce
- Emitted when a new token with ID `tokenId` is minted, with `initialData` provided in the `mint` function parameters.
+ Emitted when the globally-enforced tokenId in combination with an unique `` pair is minted.
-
- ### InverseProjectedNft
+
+ ### InverseAppProjectedNft
```solidity
-import "@paima/evm-contracts/contracts/token/InverseProjectedNft.sol";
+import "@paima/evm-contracts/contracts/token/InverseAppProjectedNft.sol";
```
A standard ERC721 that accepts calldata in the mint function for any initialization data needed in a Paima dApp.
+See PRC3 for more.
Reverts if `msg.sender` is not the specified token's owner.
@@ -1587,7 +2742,7 @@ A standard ERC721 that accepts calldata in the mint function for any initializat
title="constructor"
params="(string name, string symbol, address owner)"
visibility="public"
- anchor="xref-InverseProjectedNft-constructor-string-string-address-"
+ anchor="xref-InverseAppProjectedNft-constructor-string-string-address-"
>
Sets the NFT's `name`, `symbol`, and transfers ownership to `owner`.
Also sets `currentTokenId` to 1 and `baseExtension` to `".json"`.
@@ -1597,28 +2752,56 @@ Also sets `currentTokenId` to 1 and `baseExtension` to `".json"`.
title="supportsInterface"
params="(bytes4 interfaceId) → bool"
visibility="public"
- anchor="xref-InverseProjectedNft-supportsInterface-bytes4-"
+ anchor="xref-InverseAppProjectedNft-supportsInterface-bytes4-"
>
Returns true if this contract implements the interface defined by `interfaceId`. See EIP165.
- Mints a new token to address `_to`, passing `initialData` to be emitted in the event.
+ No description given
+
+
+
+ No description given
+
+
+
+ Mints a new token to address `_to`.
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.
+
+ This works identically to the other function with an extra data parameter,
+ except this function just sets data to "".
+
+
Burns token of ID `_tokenId`. Callable only by the owner of the specified token.
Reverts if `_tokenId` does not exist.
@@ -1628,7 +2811,7 @@ Reverts if `_tokenId` does not exist.
title="_baseURI"
params="() → string"
visibility="internal"
- anchor="xref-InverseProjectedNft-_baseURI--"
+ anchor="xref-InverseAppProjectedNft-_baseURI--"
>
Returns the `baseURI` of this NFT.
@@ -1637,7 +2820,7 @@ Reverts if `_tokenId` does not exist.
title="tokenURI"
params="(uint256 tokenId) → string"
visibility="public"
- anchor="xref-InverseProjectedNft-tokenURI-uint256-"
+ anchor="xref-InverseAppProjectedNft-tokenURI-uint256-"
>
Returns the token URI of specified `tokenId` using the default set base URI.
@@ -1646,16 +2829,25 @@ Reverts if `_tokenId` does not exist.
title="tokenURI"
params="(uint256 tokenId, string customBaseUri) → string"
visibility="public"
- anchor="xref-InverseProjectedNft-tokenURI-uint256-string-"
+ anchor="xref-InverseAppProjectedNft-tokenURI-uint256-string-"
>
Returns the token URI of specified `tokenId` using a custom base URI.
+
+ Returns the token URI of specified `tokenId` using a call to contract implementing `ITokenUri`.
+
+
Sets `_URI` as the `baseURI` of the NFT.
Callable only by the contract owner.
@@ -1666,7 +2858,7 @@ Emits the `SetBaseURI` event.
title="setBaseExtension"
params="(string _newBaseExtension)"
visibility="public"
- anchor="xref-InverseProjectedNft-setBaseExtension-string-"
+ anchor="xref-InverseAppProjectedNft-setBaseExtension-string-"
>
Sets `_newBaseExtension` as the `baseExtension` of the NFT.
Callable only by the contract owner.
@@ -1676,7 +2868,7 @@ Callable only by the contract owner.
title="updateMetadataBatch"
params="(uint256 _fromTokenId, uint256 _toTokenId)"
visibility="public"
- anchor="xref-InverseProjectedNft-updateMetadataBatch-uint256-uint256-"
+ anchor="xref-InverseAppProjectedNft-updateMetadataBatch-uint256-uint256-"
>
Function that emits an event to notify third-parties (e.g. NFT marketplaces) about
an update to consecutive range of tokens. Can be overriden in inheriting contract.
@@ -1686,17 +2878,35 @@ an update to consecutive range of tokens. Can be overriden in inheriting contrac
title="updateMetadata"
params="(uint256 _tokenId)"
visibility="public"
- anchor="xref-InverseProjectedNft-updateMetadata-uint256-"
+ anchor="xref-InverseAppProjectedNft-updateMetadata-uint256-"
>
Function that emits an event to notify third-parties (e.g. NFT marketplaces) about
an update to a single token. Can be overriden in inheriting contract.
+
+ tokenId => MintEntry.
+
+
+
+ No description given
+
+
The token ID that will be minted when calling the `mint` function.
@@ -1705,7 +2915,7 @@ an update to a single token. Can be overriden in inheriting contract.
title="baseURI"
params="() → string"
visibility="public"
- anchor="xref-InverseProjectedNft-baseURI-string"
+ anchor="xref-InverseAppProjectedNft-baseURI-string"
>
Base URI that is used in the `tokenURI` function to form the start of the token URI.
@@ -1714,7 +2924,7 @@ an update to a single token. Can be overriden in inheriting contract.
title="totalSupply"
params="() → uint256"
visibility="public"
- anchor="xref-InverseProjectedNft-totalSupply-uint256"
+ anchor="xref-InverseAppProjectedNft-totalSupply-uint256"
>
Total token supply, increased by minting and decreased by burning.
@@ -1723,14 +2933,14 @@ an update to a single token. Can be overriden in inheriting contract.
title="baseExtension"
params="() → string"
visibility="public"
- anchor="xref-InverseProjectedNft-baseExtension-string"
+ anchor="xref-InverseAppProjectedNft-baseExtension-string"
>
Base extension that is used in the `tokenURI` function to form the end of the token URI.
## Facilitating monetization
-
+
### NativeNftSale
@@ -2102,7 +3312,7 @@ Callable only by the contract owner.
Emitted when an NFT of `tokenId` is minted to `receiver` by `buyer` paying `PRICE` in native tokens.
-
+
### GenericPayment
@@ -2417,7 +3627,7 @@ Callable only by the contract owner.
Emitted when payment of `amount` if made by `payer` with `message`.
-
+
### Erc20NftSale
@@ -2886,7 +4096,7 @@ Callable only by the contract owner.
## Utilities
-
+
### BaseState
@@ -2894,6 +4104,8 @@ Callable only by the contract owner.
import "@paima/evm-contracts/contracts/BaseState.sol";
```
+No description given
+
-
+
### State
@@ -2953,6 +4165,8 @@ import "@paima/evm-contracts/contracts/BaseState.sol";
import "@paima/evm-contracts/contracts/State.sol";
```
+No description given
+
-
+
### ERC1967
@@ -3105,7 +4319,42 @@ Made as a small subset of https://github.com/OpenZeppelin/openzeppelin-contracts
Stores a new address in the EIP1967 implementation slot.
-
+
+ ### ITokenUri
+
+
+```solidity
+import "@paima/evm-contracts/contracts/token/ITokenUri.sol";
+```
+
+An interface exposing the `tokenURI` function from IERC721Metadata.
+
+
+
+
+
+ Returns the Uniform Resource Identifier (URI) for `tokenId` token.
+
+
+
### NativeNftSaleProxy
@@ -3215,7 +4464,7 @@ Will run if no other function in the contract matches the call data.
Called if this contract is receiving native tokens and `msg.data` is empty
-
+
### GenericPaymentProxy
@@ -3312,7 +4561,7 @@ directly to the external caller.
Will run if no other function in the contract matches the call data.
-
+
### Erc20NftSaleProxy