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