# VariableDebtToken

The `VariableDebtToken` contract is part of the Fathom lending protocol. It tracks users' borrowing positions at variable interest rates. This token is non-transferable and can only be minted or burned by the lending pool.

### Storage Variables

* `DEBT_TOKEN_REVISION`: Version of the debt token.
* `_underlyingAsset`: The address of the underlying asset.
* `POOL`: Reference to the main Pool contract.
* `_incentivesController`: Incentives controller for the token.

### **Set Functions:**

* `approveDelegation`: Delegates borrowing power to a user.
* `delegationWithSig`: Delegates borrowing power via signature.
* `setIncentivesController`: Sets the incentives controller.

### **Get Functions:**

* `balanceOf`: Returns the debt balance of a user.
* `totalSupply`: Returns the total supply of the debt token.
* `borrowAllowance`: Returns the borrow allowance for a user.
* `name`: Returns the name of the token.
* `symbol`: Returns the symbol of the token.
* `decimals`: Returns the number of decimals.
* `getIncentivesController`: Returns the incentives controller address.
* `UNDERLYING_ASSET_ADDRESS`: Returns the underlying asset address.

**Mint/Burn Functions:**

* `mint`: Mints debt tokens to a user.
* `burn`: Burns debt tokens from a user.

### Disabled ERC20 Functions

The following standard ERC20 functions are disabled as this is a non-transferable token:

* `transfer`
* `allowance`
* `approve`
* `transferFrom`
* `increaseAllowance`
* `decreaseAllowance`

These functions revert with an `OPERATION_NOT_SUPPORTED` error if called.

### Events

* `Mint`: Emitted when tokens are minted.
* `Burn`: Emitted when tokens are burned.
* `BorrowAllowanceDelegated`: Emitted when borrow allowance is delegated.
* `Transfer`: Emitted when tokens are transferred (disabled in this contract).
* `Approval`: Emitted when approval is given (disabled in this contract).
* `Initialized`: Emitted when the contract is initialized.


---

# 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.fathom.fi/lending/interfaces/variabledebttoken.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.
