# 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`                          |


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://snowconedao.gitbook.io/snowconedao/api/contracts/snwprojects.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
