> For the complete documentation index, see [llms.txt](https://learn.charm.fi/charm/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://learn.charm.fi/charm/technical-references/core/interfaces.md).

# Interfaces

### Essential Interfaces

These interfaces allow an external contract or address to trigger the vault to perform essential functions, or to provide important information to the caller.

<table><thead><tr><th width="258">Interface</th><th width="253">Implementation</th><th>Summary</th></tr></thead><tbody><tr><td><code>deposit();</code></td><td><a href="/pages/djF6LyxowCrJF42BfzhO#deposit"><code>deposit()</code></a></td><td>Depositing into the vault</td></tr><tr><td><code>withdraw();</code></td><td><a href="/pages/djF6LyxowCrJF42BfzhO#withdraw"><code>withdraw()</code></a></td><td>Withdrawing from the vault</td></tr><tr><td><code>rebalance();</code></td><td><a href="/pages/djF6LyxowCrJF42BfzhO#rebalance"><code>rebalance()</code></a></td><td>Rebalance the vault</td></tr><tr><td><code>checkCanRebalance();</code></td><td><a href="/pages/djF6LyxowCrJF42BfzhO#checkcanrebalance"><code>checkCanRebalance()</code></a></td><td>Check if vault can rebalance</td></tr><tr><td><code>getTotalAmounts();</code></td><td><a href="/pages/djF6LyxowCrJF42BfzhO#gettotalamounts"><code>getTotalAmounts()</code></a></td><td>Get the total amount of tokens held by the vault</td></tr><tr><td><code>getBalance0();</code></td><td><a href="/pages/djF6LyxowCrJF42BfzhO#getbalance0"><code>getBalance0()</code></a></td><td>Amount of token0 not used</td></tr><tr><td><code>getBalance1();</code></td><td><a href="/pages/djF6LyxowCrJF42BfzhO#getbalance1"><code>getBalance1()</code></a></td><td>Amount of token1 not used</td></tr><tr><td><code>totalsupply();</code></td><td>IERC20Upgradeable.sol</td><td>Get the total number of vault shares that's been minted</td></tr><tr><td><code>name();</code></td><td>IERC20Upgradeable.sol</td><td>Name of the vault share</td></tr><tr><td><code>symbol();</code></td><td>IERC20Upgradeable.sol</td><td>Symbol of the vault share</td></tr></tbody></table>

### Pool Interfaces

The following interfaces are implemented by each of the getter functions for the [Pool Variables](/charm/technical-references/core/alphaprovault.md#pool-variables):&#x20;

<table><thead><tr><th width="259">Interface</th></tr></thead><tbody><tr><td><code>pool();</code></td></tr><tr><td><code>token0();</code></td></tr><tr><td><code>token1();</code></td></tr><tr><td><code>tickSpacing();</code></td></tr></tbody></table>

### Vault Interfaces

The following interfaces are implemented by each of the getter functions for the [Vault Variables](/charm/technical-references/core/alphaprovault.md#vault-variables):&#x20;

<table><thead><tr><th width="259">Interface</th></tr></thead><tbody><tr><td><code>name();</code></td></tr><tr><td><code>symbol();</code></td></tr><tr><td><code>maxTotalSupply();</code></td></tr></tbody></table>

### Protocol Interfaces

The following interfaces are implemented by each of the getter functions for [Protocol Variables](/charm/technical-references/core/alphaprovault.md#protocol-variables):

<table><thead><tr><th width="289">Interface</th></tr></thead><tbody><tr><td><code>factory();</code></td></tr><tr><td><code>protocolFee();</code></td></tr><tr><td><code>accruedProtocolFees0();</code></td></tr><tr><td><code>accruedProtocolFees1();</code></td></tr></tbody></table>

### Strategy Interfaces

The following interfaces are implemented by each of the getter functions for [Strategy Variables](/charm/technical-references/core/alphaprovault.md#strategy-variables):

<table><thead><tr><th width="289">Interface</th></tr></thead><tbody><tr><td><code>fullRangeWeight();</code></td></tr><tr><td><code>baseThreshold();</code></td></tr><tr><td><code>limitThreshold();</code></td></tr><tr><td><code>period();</code></td></tr><tr><td><code>lastTimestamp();</code></td></tr><tr><td><code>lastTick();</code></td></tr><tr><td><code>fullLower();</code></td></tr><tr><td><code>fullUpper();</code></td></tr><tr><td><code>baseLower();</code></td></tr><tr><td><code>baseUpper();</code></td></tr><tr><td><code>limitLower();</code></td></tr><tr><td><code>limitUpper();</code></td></tr></tbody></table>

### Security Interfaces

The following interfaces are implemented by each of the getter functions for the [Security Variables](/charm/technical-references/core/alphaprovault.md#security-variables):

<table><thead><tr><th width="289">Interface</th></tr></thead><tbody><tr><td><code>maxTwapDeviation();</code></td></tr><tr><td><code>twapDuration();</code></td></tr></tbody></table>

### Gas Optimization Interfaces

The following interfaces are implemented by each of the getter functions for [Gas Optimization Variables](/charm/technical-references/core/alphaprovault.md#gas-optimization-variables):

<table><thead><tr><th width="289">Interface</th></tr></thead><tbody><tr><td><code>minTickMove();</code></td></tr></tbody></table>

### Vault Manager Interfaces

he following interfaces are implemented by each of the getter functions for the [Vault Manager Variables](/charm/technical-references/core/alphaprovault.md#vault-manager-variables):

<table><thead><tr><th width="289">Interface</th></tr></thead><tbody><tr><td><code>manager();</code></td></tr><tr><td><code>pendingManager();</code></td></tr><tr><td><code>rebalanceDelegate();</code></td></tr><tr><td><code>period();</code></td></tr><tr><td><code>managerFee();</code></td></tr><tr><td><code>pendingManagerFee();</code></td></tr><tr><td><code>accruedManagerFees0();</code></td></tr><tr><td><code>accruedManagerFees1();</code></td></tr><tr><td><code>baseUpper();</code></td></tr></tbody></table>
