# ITokenTimelock

## Functions

### release

```solidity
function release(
    address to,
    uint256 amount
) external
```

#### Parameters

| Name     | Type    | Description |
| -------- | ------- | ----------- |
| `to`     | address |             |
| `amount` | uint256 |             |

### releaseMax

```solidity
function releaseMax(
    address to
) external
```

#### Parameters

| Name | Type    | Description |
| ---- | ------- | ----------- |
| `to` | address |             |

### setPendingBeneficiary

```solidity
function setPendingBeneficiary(
    address _pendingBeneficiary
) external
```

#### Parameters

| Name                  | Type    | Description |
| --------------------- | ------- | ----------- |
| `_pendingBeneficiary` | address |             |

### acceptBeneficiary

```solidity
function acceptBeneficiary() external
```

### lockedToken

```solidity
function lockedToken() external returns (contract IERC20)
```

### beneficiary

```solidity
function beneficiary() external returns (address)
```

### pendingBeneficiary

```solidity
function pendingBeneficiary() external returns (address)
```

### initialBalance

```solidity
function initialBalance() external returns (uint256)
```

### availableForRelease

```solidity
function availableForRelease() external returns (uint256)
```

### totalToken

```solidity
function totalToken() external returns (uint256)
```

### alreadyReleasedAmount

```solidity
function alreadyReleasedAmount() external returns (uint256)
```

## Events

### Release

```solidity
event Release(
    address _beneficiary,
    address _recipient,
    uint256 _amount
)
```

#### Parameters

| Name                  | Type    | Description |
| --------------------- | ------- | ----------- |
| `_beneficiary`        | address |             |
| `_recipient`          | address |             |
| `_amount`             | uint256 |             |
| ### BeneficiaryUpdate |         |             |

```solidity
event BeneficiaryUpdate(
    address _beneficiary
)
```

#### Parameters

| Name                         | Type    | Description |
| ---------------------------- | ------- | ----------- |
| `_beneficiary`               | address |             |
| ### PendingBeneficiaryUpdate |         |             |

```solidity
event PendingBeneficiaryUpdate(
    address _pendingBeneficiary
)
```

#### Parameters

| Name                  | Type    | Description |
| --------------------- | ------- | ----------- |
| `_pendingBeneficiary` | address |             |


---

# 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.essencefinance.io/development/smart-contracts/timelocks/itokentimelock.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.
