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