> For the complete documentation index, see [llms.txt](https://bloxxa-1.gitbook.io/bloxxa-guide/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://bloxxa-1.gitbook.io/bloxxa-guide/technical-guide/markdown/vesting.md).

# Vesting

To create a vesting contract, specify the following parameters:

* **\_vestingToken** — the address of the token to be distributed.
* **\_initialAddress** — the address of the contract owner.

The **createVesting()** function accepts the following parameters:

* **\_vestingId** — the unique identifier for the vesting.
* **\_pool** — the total number of tokens to be distributed.
* **\_cliffPeriod** — the period during which tokens cannot be claimed (in seconds).
* **\_vestingPeriod** — the period over which tokens are distributed.
* **\_tge** — the percentage of tokens available immediately.
* **\_startTimeStamp** — the start time of the vesting (in Unix format).

To add users, use:

* **addBeneficiary(beneficiary, totalAmount, vestingId)** — add a single user.
* **addBatchBeneficiary(beneficiaries\[], totalAmounts\[], vestingId)** — add multiple users.

**Interaction Functions:**

* **availableToClaim(beneficiary, vestingId)** — check the available tokens for withdrawal.
* **claim(vestingId)** — withdraw tokens by the beneficiary.
* **transferTokens(account, amount)** — withdraw tokens by the contract owner (to return excess tokens).
