# FutureToken

## ITTFutureTokenV2

*The lightweight interface for TTFutureTokenV2(.5.x), which handles unlocking schedule ownership for TokenTable.*

### DidSetBaseURI

```solidity
event DidSetBaseURI(string newURI)
```

### NotPermissioned

```solidity
error NotPermissioned()
```

*0x7f63bd0f*

### initialize

```solidity
function initialize(address projectToken, bool isTransferable) external
```

*This contract should be deployed with `TTUDeployerLite`, which calls this function with the correct parameters.*

#### Parameters

| Name           | Type    | Description                                                                 |
| -------------- | ------- | --------------------------------------------------------------------------- |
| projectToken   | address | The address of the token that the founder intends to unlock and distribute. |
| isTransferable | bool    | If the FutureTokens (aka schedules) can be transfered once minted.          |

### setAuthorizedMinterSingleUse

```solidity
function setAuthorizedMinterSingleUse(address authorizedMinter_) external
```

This contract should be deployed with `TTUDeployerLite`, which calls this function with the correct parameters.

*This function can only be called once.*

#### Parameters

| Name               | Type    | Description                                                                                                          |
| ------------------ | ------- | -------------------------------------------------------------------------------------------------------------------- |
| authorizedMinter\_ | address | The address which is authorized to mint new FutureTokens. This is set to the corresponding Unlocker in the deployer. |

### safeMint

```solidity
function safeMint(address to) external returns (uint256 tokenId)
```

Safely mints a new FutureToken to the specified address.

*This function can only be called by the authorized minter.*

#### Parameters

| Name | Type    | Description                           |
| ---- | ------- | ------------------------------------- |
| to   | address | The recipient of the new FutureToken. |

#### Return Values

| Name    | Type    | Description                                         |
| ------- | ------- | --------------------------------------------------- |
| tokenId | uint256 | The minted token ID (aka actual ID or schedule ID). |

### setURI

```solidity
function setURI(string uri) external
```

Updates the base URI.

*This function can only be called by the owner of the authorized minter, which is usually the founder.*

#### Parameters

| Name | Type   | Description       |
| ---- | ------ | ----------------- |
| uri  | string | The new base URI. |

### getClaimInfo

```solidity
function getClaimInfo(uint256 tokenId) external view returns (uint256 deltaAmountClaimable, uint256 amountAlreadyClaimed, bool isCancelable)
```

Gets information regarding the unlocking schedule associated with this FutureToken.

#### Parameters

| Name    | Type    | Description                   |
| ------- | ------- | ----------------------------- |
| tokenId | uint256 | The actual ID or schedule ID. |

#### Return Values

| Name                 | Type    | Description                                                                                               |
| -------------------- | ------- | --------------------------------------------------------------------------------------------------------- |
| deltaAmountClaimable | uint256 | The amount of unlocked and unclaimed funds currently eligible to be claimed by the owner of the given ID. |
| amountAlreadyClaimed | uint256 | The amount of unlocked and claimed funds of the given ID.                                                 |
| isCancelable         | bool    | If the schedule associated with this ID can be canceled by the founder.                                   |
