> For the complete documentation index, see [llms.txt](https://snowconedao.gitbook.io/snowconedao/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://snowconedao.gitbook.io/snowconedao/api/contracts/snwprojects.md).

# SNWProjects

**Interfaces**

| Name              | Description                                                                                                                     |
| ----------------- | ------------------------------------------------------------------------------------------------------------------------------- |
| ISnowconeProjects | General interface for the methods in this contract that interact with the blockchain's state according to the protocol's rules. |

**Inheritance**

| Contract           | Description                                                                                                                              |
| ------------------ | ---------------------------------------------------------------------------------------------------------------------------------------- |
| SnowconeOperatable | Includes convenience functionality for checking a message sender's permissions before executing certain transactions.                    |
| ERC721Votes        | A checkpointable standard definition for non-fungible tokens (NFTs).                                                                     |
| Ownable            | Includes convenience functionality for specifying an address that owns the contract, with modifiers that only allow access by the owner. |

**Constructor**

```javascript
constructor(ISnowconeOperatorStore _operatorStore)
  ERC721('Snowcone Projects', 'SNOWCONE')
  EIP712('Snowcone Projects', '1')
  SnowconeOperatable(_operatorStore)
{}

```

`_operatorStore` is an ISnowconeOperatorStore contract storing operator assignments.

**Events**

| Name                | Data                                                                                                       |
| ------------------- | ---------------------------------------------------------------------------------------------------------- |
| Create              | `uint256 indexed projectId`, `address indexed owner`, `SnowconeProjectMetadata metadata`, `address caller` |
| SetMetadata         | `uint256 indexed projectId`, `SnowconeProjectMetadata metadata`, `address caller`                          |
| SetTokenUriResolver | `ISnowconeTokenUriResolver indexed resolver`, `address caller`                                             |

**Properties**

| Name              | Definition                                                        |
| ----------------- | ----------------------------------------------------------------- |
| count             | Returns `uint256`                                                 |
| metadataContentOf | Params: `uint256 _projectId`, `uint256 _domain` Returns: `string` |
| tokenUriResolver  | Returns `ISnowconeTokenUriResolver`                               |

**Read**

| Function          | Definition                                     |
| ----------------- | ---------------------------------------------- |
| tokenURI          | Params: `uint256 _projectId`                   |
| supportsInterface | Params: `uint256 _interfaceId` Returns: `bool` |

**Write**

| Function            | Definition                                                                                    |
| ------------------- | --------------------------------------------------------------------------------------------- |
| createFor           | Params: `address _owner`, `SnowconeProjectMetadata _metadata` Returns: `uint256 projectId`    |
| setMetadataOf       | Traits: `requirePermission` Params: `uint256 _projectId`, `SnowconeProjectMetadata _metadata` |
| setTokenUriResolver | Traits: `onlyOwner` Params: `ISnowconeTokenUriResolver _newResolver`                          |
