# 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="../alphaprovault#deposit"><code>deposit()</code></a></td><td>Depositing into the vault</td></tr><tr><td><code>withdraw();</code></td><td><a href="../alphaprovault#withdraw"><code>withdraw()</code></a></td><td>Withdrawing from the vault</td></tr><tr><td><code>rebalance();</code></td><td><a href="../alphaprovault#rebalance"><code>rebalance()</code></a></td><td>Rebalance the vault</td></tr><tr><td><code>checkCanRebalance();</code></td><td><a href="../alphaprovault#checkcanrebalance"><code>checkCanRebalance()</code></a></td><td>Check if vault can rebalance</td></tr><tr><td><code>getTotalAmounts();</code></td><td><a href="../alphaprovault#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="../alphaprovault#getbalance0"><code>getBalance0()</code></a></td><td>Amount of token0 not used</td></tr><tr><td><code>getBalance1();</code></td><td><a href="../alphaprovault#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](https://learn.charm.fi/charm/technical-references/alphaprovault#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](https://learn.charm.fi/charm/technical-references/alphaprovault#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](https://learn.charm.fi/charm/technical-references/alphaprovault#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](https://learn.charm.fi/charm/technical-references/alphaprovault#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](https://learn.charm.fi/charm/technical-references/alphaprovault#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](https://learn.charm.fi/charm/technical-references/alphaprovault#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](https://learn.charm.fi/charm/technical-references/alphaprovault#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>
