# IScaledBalanceToken

Defines the basic interface for a scaled-balance token.

## Mint

```solidity
event Mint(address caller, address onBehalfOf, uint256 value, uint256 balanceIncrease, uint256 index)
```

*Emitted after the mint action*

### Parameters

| Name            | Type    | Description                                                                                         |
| --------------- | ------- | --------------------------------------------------------------------------------------------------- |
| caller          | address | The address performing the mint                                                                     |
| onBehalfOf      | address | The address of the user that will receive the minted tokens                                         |
| value           | uint256 | The scaled-up amount being minted (based on user entered amount and balance increase from interest) |
| balanceIncrease | uint256 | The increase in scaled-up balance since the last action of 'onBehalfOf'                             |
| index           | uint256 | The next liquidity index of the reserve                                                             |

## Burn

```solidity
event Burn(address from, address target, uint256 value, uint256 balanceIncrease, uint256 index)
```

*Emitted after the burn action*\
*If the burn function does not involve a transfer of the underlying asset, the target defaults to zero address*

### Parameters

| Name            | Type    | Description                                                                              |
| --------------- | ------- | ---------------------------------------------------------------------------------------- |
| from            | address | The address from which the tokens will be burned                                         |
| target          | address | The address that will receive the underlying, if any                                     |
| value           | uint256 | The scaled-up amount being burned (user entered amount - balance increase from interest) |
| balanceIncrease | uint256 | The increase in scaled-up balance since the last action of 'from'                        |
| index           | uint256 | The next liquidity index of the reserve                                                  |

## scaledBalanceOf

```solidity
function scaledBalanceOf(address user) external view returns (uint256)
```

Returns the scaled balance of the user.

*The scaled balance is the sum of all the updated stored balance divided by the reserve's liquidity index*\
*at the moment of the update*

### Parameters

| Name | Type    | Description                          |
| ---- | ------- | ------------------------------------ |
| user | address | The user whose balance is calculated |

### Return Values

| Name | Type    | Description                    |
| ---- | ------- | ------------------------------ |
| \[0] | uint256 | The scaled balance of the user |

## getScaledUserBalanceAndSupply

```solidity
function getScaledUserBalanceAndSupply(address user) external view returns (uint256, uint256)
```

Returns the scaled balance of the user and the scaled total supply.

### Parameters

| Name | Type    | Description             |
| ---- | ------- | ----------------------- |
| user | address | The address of the user |

### Return Values

| Name | Type    | Description                    |
| ---- | ------- | ------------------------------ |
| \[0] | uint256 | The scaled balance of the user |
| \[1] | uint256 | The scaled total supply        |

## scaledTotalSupply

```solidity
function scaledTotalSupply() external view returns (uint256)
```

Returns the scaled total supply of the scaled balance token. Represents sum(debt/index)

### Return Values

| Name | Type    | Description             |
| ---- | ------- | ----------------------- |
| \[0] | uint256 | The scaled total supply |

## getPreviousIndex

```solidity
function getPreviousIndex(address user) external view returns (uint256)
```

Returns last index interest was accrued to the user's balance

### Parameters

| Name | Type    | Description             |
| ---- | ------- | ----------------------- |
| user | address | The address of the user |

### Return Values

| Name | Type    | Description                                                                 |
| ---- | ------- | --------------------------------------------------------------------------- |
| \[0] | uint256 | The last index interest was accrued to the user's balance, expressed in ray |


---

# 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.mangrove.exchange/dev/strat-lib/technical-references/api-preferences/strats/src/strategies/vendor/aave/v3/contracts/interfaces/iscaledbalancetoken.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.
