# Soulbound

## Overview

This contract is built on ERC4973, and introduces a Soulbound token system with features like pre-sales, scheduled drops, airdrops, and social media link integration.&#x20;

It focuses on unique NFT issuance with options for whitelisting and minting limits.

## Methods

## <mark style="color:blue;">`burn`</mark>

Burns a specific token.

### Parameters

| Name      | Type    | Description                            |
| --------- | ------- | -------------------------------------- |
| \_tokenId | uint256 | <p></p><p>ID of the token to burn.</p> |

## <mark style="color:blue;">`mint`</mark>

Mints a new token.

### Parameters

| Name     | Type    | Description                 |
| -------- | ------- | --------------------------- |
| \_issuee | address | Recipient of the new token. |
| \_uri    | string  | URI for the new token.      |

## <mark style="color:blue;">`preSaleIssue`</mark>

Mints a token during the pre-sale period for whitelisted addresses.

### Parameters

| Name | Type   | Description            |
| ---- | ------ | ---------------------- |
| uri  | string | URI for the new token. |

## <mark style="color:blue;">`perWalletPreSaleIssue`</mark>

Mints a token during pre-sale with per-wallet limits for whitelisted addresses.

### Parameters

| Name | Type   | Description            |
| ---- | ------ | ---------------------- |
| uri  | string | URI for the new token. |

## <mark style="color:blue;">`setScheduleDropMintTime`</mark>

Sets the start and end time for scheduled drops.

### Parameters

| Name            | Type    | Description              |
| --------------- | ------- | ------------------------ |
| \_startDropTime | uint256 | Start time for the drop. |
| \_endDropTime   | uint256 | End time for the drop.   |

## <mark style="color:blue;">`scheduledDropMint`</mark>

Mints a token during a scheduled drop.

### Parameters

| Name | Type   | Description            |
| ---- | ------ | ---------------------- |
| uri  | string | URI for the new token. |

## <mark style="color:blue;">`updateTokenURI`</mark>

Updates the URI of a specific token.

### Parameters

| Name    | Type    | Description                |
| ------- | ------- | -------------------------- |
| tokenId | uint256 | ID of the token to update. |
| uri     | string  | New URI for the token.     |

## <mark style="color:blue;">`airdropNFTs`</mark>

Distributes tokens to a list of recipients.

### Parameters

| Name       | Type       | Description                           |
| ---------- | ---------- | ------------------------------------- |
| recipients | address\[] | Array of recipient addresses.         |
| uris       | string\[]  | URIs for each token to be airdropped. |

## <mark style="color:blue;">`addToWhitelist`</mark>

Manages the whitelist for pre-sale and other privileged activities.

### Parameters

| Name     | Type       | Description                                          |
| -------- | ---------- | ---------------------------------------------------- |
| accounts | address\[] | Addresses to be added or removed from the whitelist. |

## <mark style="color:blue;">`removeFromWhitelist`</mark>

Manages the whitelist for pre-sale and other privileged activities.

### Parameters

| Name     | Type       | Description                                          |
| -------- | ---------- | ---------------------------------------------------- |
| accounts | address\[] | Addresses to be added or removed from the whitelist. |

## <mark style="color:blue;">`whitelistMint`</mark>

Mints a token for a whitelisted address.

### Parameters

| Name | Type   | Description            |
| ---- | ------ | ---------------------- |
| uri  | string | URI for the new token. |

## <mark style="color:blue;">`isWhitelisted`</mark>

Checks if an address is on the whitelist.

### Parameters

| Name    | Type    | Description       |
| ------- | ------- | ----------------- |
| account | address | Address to check. |

### Returns

| Name        | Type | Description                              |
| ----------- | ---- | ---------------------------------------- |
| whitelisted | bool | Indicates if the address is whitelisted. |

## <mark style="color:blue;">`setTokenUri`</mark>

Sets the URI for a specific token. Restricted to the contract owner.

### Parameters

| Name    | Type    | Description            |
| ------- | ------- | ---------------------- |
| tokenId | uint256 | Token ID.              |
| uri     | string  | New URI for the token. |

## <mark style="color:blue;">`pause`</mark>

Toggles the paused state of the contract.

## <mark style="color:blue;">`unpause`</mark>

Toggles the paused state of the contract.

## <mark style="color:blue;">`tokenURI`</mark>

Retrieves the URI for a specific token.

### Parameters

| Name    | Type    | Description |
| ------- | ------- | ----------- |
| tokenId | uint256 | Token ID.   |

### Returns

| Name | Type   | Description                 |
| ---- | ------ | --------------------------- |
| URI  | string | URI of the specified token. |

## <mark style="color:blue;">`setTwitterProfile`</mark>

Sets the Twitter profile link for the contract.

### Parameters

| Name             | Type   | Description                 |
| ---------------- | ------ | --------------------------- |
| \_twitterProfile | string | URL of the Twitter profile. |

## <mark style="color:blue;">`setTelegramChannel`</mark>

Sets the Telegram channel link for the contract.

### Parameters

| Name              | Type   | Description                  |
| ----------------- | ------ | ---------------------------- |
| \_telegramChannel | string | URL of the Telegram channel. |

## <mark style="color:blue;">`setWebsiteURL`</mark>

Sets the website URL for the contract.

### Parameters

| Name         | Type   | Description         |
| ------------ | ------ | ------------------- |
| \_websiteURL | string | URL of the website. |


---

# 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://docs.volary.io/template-library/smart-contracts/soulbound.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.
