> For the complete documentation index, see [llms.txt](https://developers.strateg.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://developers.strateg.io/core-protocol/contracts/strategvault.md).

# StrategVault

Strateg vault implementation

## Methods

### DOMAIN\_SEPARATOR

```solidity
function DOMAIN_SEPARATOR() external view returns (bytes32)
```

*Returns the domain separator used in the encoding of the signature for {permit}, as defined by {EIP712}.*

#### Returns

| Name | Type    | Description |
| ---- | ------- | ----------- |
| \_0  | bytes32 | undefined   |

### addressProvider

```solidity
function addressProvider() external view returns (contract IStrategAddressesProvider)
```

The address of the operator

#### Returns

<table><thead><tr><th width="129">Name</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td>_0</td><td>contract IStrategAddressesProvider</td><td>undefined</td></tr></tbody></table>

### allowance

```solidity
function allowance(address owner, address spender) external view returns (uint256)
```

*See {IERC20-allowance}.*

#### Parameters

| Name    | Type    | Description |
| ------- | ------- | ----------- |
| owner   | address | undefined   |
| spender | address | undefined   |

#### Returns

| Name | Type    | Description |
| ---- | ------- | ----------- |
| \_0  | uint256 | undefined   |

### approve

```solidity
function approve(address spender, uint256 value) external nonpayable returns (bool)
```

*See {IERC20-approve}. NOTE: If `value` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address.*

#### Parameters

| Name    | Type    | Description |
| ------- | ------- | ----------- |
| spender | address | undefined   |
| value   | uint256 | undefined   |

#### Returns

| Name | Type | Description |
| ---- | ---- | ----------- |
| \_0  | bool | undefined   |

### asset

```solidity
function asset() external view returns (address)
```

*See {IERC4626-asset}.*

#### Returns

| Name | Type    | Description |
| ---- | ------- | ----------- |
| \_0  | address | undefined   |

### balanceOf

```solidity
function balanceOf(address account) external view returns (uint256)
```

*See {IERC20-balanceOf}.*

#### Parameters

| Name    | Type    | Description |
| ------- | ------- | ----------- |
| account | address | undefined   |

#### Returns

| Name | Type    | Description |
| ---- | ------- | ----------- |
| \_0  | uint256 | undefined   |

### buffer

```solidity
function buffer() external view returns (address)
```

The address of the buffer contract

#### Returns

| Name | Type    | Description |
| ---- | ------- | ----------- |
| \_0  | address | undefined   |

### convertToAssets

```solidity
function convertToAssets(uint256 shares) external view returns (uint256)
```

*See {IERC4626-convertToAssets}.*

#### Parameters

| Name   | Type    | Description |
| ------ | ------- | ----------- |
| shares | uint256 | undefined   |

#### Returns

| Name | Type    | Description |
| ---- | ------- | ----------- |
| \_0  | uint256 | undefined   |

### convertToShares

```solidity
function convertToShares(uint256 assets) external view returns (uint256)
```

*See {IERC4626-convertToShares}.*

#### Parameters

| Name   | Type    | Description |
| ------ | ------- | ----------- |
| assets | uint256 | undefined   |

#### Returns

| Name | Type    | Description |
| ---- | ------- | ----------- |
| \_0  | uint256 | undefined   |

### decimals

```solidity
function decimals() external view returns (uint8)
```

*Set the decimal value for the vault token.*

#### Returns

<table><thead><tr><th width="116">Name</th><th width="136">Type</th><th>Description</th></tr></thead><tbody><tr><td>_0</td><td>uint8</td><td>The number of decimals for the vault token.</td></tr></tbody></table>

### deposit

```solidity
function deposit(uint256 assets, address receiver) external nonpayable returns (uint256)
```

*Deposit assets into the vault and mint shares to the receiver.*

#### Parameters

<table><thead><tr><th width="146">Name</th><th width="128">Type</th><th>Description</th></tr></thead><tbody><tr><td>assets</td><td>uint256</td><td>The amount of assets to deposit.</td></tr><tr><td>receiver</td><td>address</td><td>The address to receive the minted shares.</td></tr></tbody></table>

#### Returns

<table><thead><tr><th width="114">Name</th><th width="109">Type</th><th>Description</th></tr></thead><tbody><tr><td>_0</td><td>uint256</td><td>The amount of shares minted.</td></tr></tbody></table>

### eip712Domain

```solidity
function eip712Domain() external view returns (bytes1 fields, string name, string version, uint256 chainId, address verifyingContract, bytes32 salt, uint256[] extensions)
```

*See {IERC-5267}.*

#### Returns

| Name              | Type       | Description |
| ----------------- | ---------- | ----------- |
| fields            | bytes1     | undefined   |
| name              | string     | undefined   |
| version           | string     | undefined   |
| chainId           | uint256    | undefined   |
| verifyingContract | address    | undefined   |
| salt              | bytes32    | undefined   |
| extensions        | uint256\[] | undefined   |

### erc3525

```solidity
function erc3525() external view returns (address)
```

Strateg ERC3525 which define vault ownership

#### Returns

| Name | Type    | Description |
| ---- | ------- | ----------- |
| \_0  | address | undefined   |

### factory

```solidity
function factory() external view returns (address)
```

Strateg vault factory address

#### Returns

| Name | Type    | Description |
| ---- | ------- | ----------- |
| \_0  | address | undefined   |

### getStrat

```solidity
function getStrat() external view returns (address[] _strategyBlocks, bytes[] _strategyBlocksParameters, bool[] _isFinalBlock, address[] _harvestBlocks, bytes[] _harvestBlocksParameters)
```

*Get the strategy blocks for the vault.*

#### Returns

<table><thead><tr><th width="253">Name</th><th width="100">Type</th><th>Description</th></tr></thead><tbody><tr><td>_strategyBlocks</td><td>address[]</td><td>Array of strategy blocks addresses.</td></tr><tr><td>_strategyBlocksParameters</td><td>bytes[]</td><td>Array of strategy blocks parameters.</td></tr><tr><td>_isFinalBlock</td><td>bool[]</td><td>Array of boolean indicating if a block is a final block.</td></tr><tr><td>_harvestBlocks</td><td>address[]</td><td>Array of harvest blocks addresses.</td></tr><tr><td>_harvestBlocksParameters</td><td>bytes[]</td><td>Array of harvest blocks parameters.</td></tr></tbody></table>

### harvest

```solidity
function harvest(uint256[] _dynParamsIndex, bytes[] _dynParams) external nonpayable
```

*Internal function to harvest strategy rewards. Only callable by the operator proxy.*

#### Parameters

<table><thead><tr><th width="187">Name</th><th width="100">Type</th><th>Description</th></tr></thead><tbody><tr><td>_dynParamsIndex</td><td>uint256[]</td><td>The array of dynamic parameter indices.</td></tr><tr><td>_dynParams</td><td>bytes[]</td><td>The array of dynamic parameter values.</td></tr></tbody></table>

### harvestBlocksLength

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

Mapping of harvest block numbers to their corresponding addresses

#### Returns

<table><thead><tr><th width="99">Name</th><th width="109">Type</th><th>Description</th></tr></thead><tbody><tr><td>_0</td><td>uint256</td><td>undefined</td></tr></tbody></table>

### initialize

```solidity
function initialize(address _erc3525, string _name, string _symbol, address _asset) external nonpayable
```

*Initalize function call by the factory on deployment*

#### Parameters

| Name      | Type    | Description     |
| --------- | ------- | --------------- |
| \_erc3525 | address | ERC3525 address |
| \_name    | string  | vault name      |
| \_symbol  | string  | vault symbol    |
| \_asset   | address | native asset    |

### isLive

```solidity
function isLive() external view returns (bool)
```

Indicates whether the vault is live

#### Returns

| Name | Type | Description |
| ---- | ---- | ----------- |
| \_0  | bool | undefined   |

### lastHarvestIndex

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

Last index of harvest operation

#### Returns

| Name | Type    | Description |
| ---- | ------- | ----------- |
| \_0  | uint256 | undefined   |

### maxDeposit

```solidity
function maxDeposit(address) external view returns (uint256)
```

*See {IERC4626-maxDeposit}.*

#### Parameters

| Name | Type    | Description |
| ---- | ------- | ----------- |
| \_0  | address | undefined   |

#### Returns

| Name | Type    | Description |
| ---- | ------- | ----------- |
| \_0  | uint256 | undefined   |

### maxMint

```solidity
function maxMint(address) external view returns (uint256)
```

*See {IERC4626-maxMint}.*

#### Parameters

| Name | Type    | Description |
| ---- | ------- | ----------- |
| \_0  | address | undefined   |

#### Returns

| Name | Type    | Description |
| ---- | ------- | ----------- |
| \_0  | uint256 | undefined   |

### maxRedeem

```solidity
function maxRedeem(address __owner) external view returns (uint256)
```

*See {IERC4626-maxRedeem}.*

#### Parameters

| Name      | Type    | Description |
| --------- | ------- | ----------- |
| \_\_owner | address | undefined   |

#### Returns

| Name | Type    | Description |
| ---- | ------- | ----------- |
| \_0  | uint256 | undefined   |

### maxWithdraw

```solidity
function maxWithdraw(address __owner) external view returns (uint256)
```

*See {IERC4626-maxWithdraw}.*

#### Parameters

| Name      | Type    | Description |
| --------- | ------- | ----------- |
| \_\_owner | address | undefined   |

#### Returns

| Name | Type    | Description |
| ---- | ------- | ----------- |
| \_0  | uint256 | undefined   |

### mint

```solidity
function mint(uint256 shares, address receiver) external nonpayable returns (uint256)
```

*Mint shares to the receiver.*

#### Parameters

<table><thead><tr><th width="142">Name</th><th width="116">Type</th><th>Description</th></tr></thead><tbody><tr><td>shares</td><td>uint256</td><td>The amount of shares to mint.</td></tr><tr><td>receiver</td><td>address</td><td>The address to receive the minted shares.</td></tr></tbody></table>

#### Returns

| Name | Type    | Description                  |
| ---- | ------- | ---------------------------- |
| \_0  | uint256 | The amount of assets minted. |

### name

```solidity
function name() external view returns (string)
```

*Returns the name of the token.*

#### Returns

| Name | Type   | Description |
| ---- | ------ | ----------- |
| \_0  | string | undefined   |

### nonces

```solidity
function nonces(address owner) external view returns (uint256)
```

*Returns the current nonce for `owner`. This value must be included whenever a signature is generated for {permit}. Every successful call to {permit} increases `owner`'s nonce by one. This prevents a signature from being used multiple times.*

#### Parameters

| Name  | Type    | Description |
| ----- | ------- | ----------- |
| owner | address | undefined   |

#### Returns

| Name | Type    | Description |
| ---- | ------- | ----------- |
| \_0  | uint256 | undefined   |

### owner

```solidity
function owner() external view returns (address)
```

return current owner of the vault

#### Returns

| Name | Type    | Description        |
| ---- | ------- | ------------------ |
| \_0  | address | Owner of the vault |

### partialStrategyExecution

```solidity
function partialStrategyExecution(bool _isEnter, address _neededTokenToRebalance, uint256[] _from, uint256[] _to, uint256[] _dynParamsIndex, bytes[] _dynParams) external nonpayable
```

Executes partial strategy enter for a given range of strategy blocks. Only callable by a position manager owned by the vault.

*Executes the strategy enter function for a subset of strategy blocks, starting from `_from` index. The `_dynParamsIndex` array and `_dynParams` array provide dynamic parameters for the strategy blocks.*

#### Parameters

<table><thead><tr><th width="254">Name</th><th width="116">Type</th><th>Description</th></tr></thead><tbody><tr><td>_isEnter</td><td>bool</td><td>Boolean indicating if the strategy blocks are entering or exiting the vault.</td></tr><tr><td>_neededTokenToRebalance</td><td>address</td><td>The token needed for the position manager to rebalance.</td></tr><tr><td>_from</td><td>uint256[]</td><td>The starting index of the strategy blocks.</td></tr><tr><td>_to</td><td>uint256[]</td><td>The ending index of the strategy blocks.</td></tr><tr><td>_dynParamsIndex</td><td>uint256[]</td><td>The array of dynamic parameter indices.</td></tr><tr><td>_dynParams</td><td>bytes[]</td><td>The array of dynamic parameter values.</td></tr></tbody></table>

### permit

```solidity
function permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) external nonpayable
```

*Sets `value` as the allowance of `spender` over `owner`'s tokens, given `owner`'s signed approval. IMPORTANT: The same issues {IERC20-approve} has related to transaction ordering also apply here. Emits an {Approval} event. Requirements: - `spender` cannot be the zero address. - `deadline` must be a timestamp in the future. - `v`, `r` and `s` must be a valid `secp256k1` signature from `owner` over the EIP712-formatted function arguments. - the signature must use `owner`'s current nonce (see {nonces}). For more information on the signature format, see the <https://eips.ethereum.org/EIPS/eip-2612#specification\\[relevant> EIP section]. CAUTION: See Security Considerations above.*

#### Parameters

| Name     | Type    | Description |
| -------- | ------- | ----------- |
| owner    | address | undefined   |
| spender  | address | undefined   |
| value    | uint256 | undefined   |
| deadline | uint256 | undefined   |
| v        | uint8   | undefined   |
| r        | bytes32 | undefined   |
| s        | bytes32 | undefined   |

### previewDeposit

```solidity
function previewDeposit(uint256 assets) external view returns (uint256)
```

*See {IERC4626-previewDeposit}.*

#### Parameters

| Name   | Type    | Description |
| ------ | ------- | ----------- |
| assets | uint256 | undefined   |

#### Returns

| Name | Type    | Description |
| ---- | ------- | ----------- |
| \_0  | uint256 | undefined   |

### previewMint

```solidity
function previewMint(uint256 shares) external view returns (uint256)
```

*See {IERC4626-previewMint}.*

#### Parameters

| Name   | Type    | Description |
| ------ | ------- | ----------- |
| shares | uint256 | undefined   |

#### Returns

| Name | Type    | Description |
| ---- | ------- | ----------- |
| \_0  | uint256 | undefined   |

### previewRedeem

```solidity
function previewRedeem(uint256 shares) external view returns (uint256)
```

*See {IERC4626-previewRedeem}.*

#### Parameters

| Name   | Type    | Description |
| ------ | ------- | ----------- |
| shares | uint256 | undefined   |

#### Returns

| Name | Type    | Description |
| ---- | ------- | ----------- |
| \_0  | uint256 | undefined   |

### previewWithdraw

```solidity
function previewWithdraw(uint256 assets) external view returns (uint256)
```

*See {IERC4626-previewWithdraw}.*

#### Parameters

| Name   | Type    | Description |
| ------ | ------- | ----------- |
| assets | uint256 | undefined   |

#### Returns

| Name | Type    | Description |
| ---- | ------- | ----------- |
| \_0  | uint256 | undefined   |

### rebalance

```solidity
function rebalance(uint256[] _dynParamsIndexEnter, bytes[] _dynParamsEnter, uint256[] _dynParamsIndexExit, bytes[] _dynParamsExit) external nonpayable
```

*Function to execute the buffer rebalancing process. Only callable by the operator proxy.*

#### Parameters

<table><thead><tr><th width="220">Name</th><th width="103">Type</th><th>Description</th></tr></thead><tbody><tr><td>_dynParamsIndexEnter</td><td>uint256[]</td><td>The array of dynamic parameter indices for strategy enter.</td></tr><tr><td>_dynParamsEnter</td><td>bytes[]</td><td>The array of dynamic parameters for strategy enter.</td></tr><tr><td>_dynParamsIndexExit</td><td>uint256[]</td><td>The array of dynamic parameter indices for strategy exit.</td></tr><tr><td>_dynParamsExit</td><td>bytes[]</td><td>The array of dynamic parameters for strategy exit.</td></tr></tbody></table>

### redeem

```solidity
function redeem(uint256 _shares, address _receiver, address __owner) external nonpayable returns (uint256)
```

*Redeem shares for assets from the vault.*

#### Parameters

<table><thead><tr><th width="134">Name</th><th width="103">Type</th><th>Description</th></tr></thead><tbody><tr><td>_shares</td><td>uint256</td><td>The amount of shares to redeem.</td></tr><tr><td>_receiver</td><td>address</td><td>The address to receive the redeemed assets.</td></tr><tr><td>__owner</td><td>address</td><td>The owner of the shares being redeemed.</td></tr></tbody></table>

#### Returns

| Name | Type    | Description                    |
| ---- | ------- | ------------------------------ |
| \_0  | uint256 | The amount of assets redeemed. |

### setStrat

```solidity
function setStrat(address[] _positionManagers, address[] _stratBlocks, bytes[] _stratBlocksParameters, bool[] _isFinalBlock, address[] _harvestBlocks, bytes[] _harvestBlocksParameters) external nonpayable
```

*Set the strategy blocks for the vault. Only callable by the factory.*

#### Parameters

| Name                      | Type       | Description                                               |
| ------------------------- | ---------- | --------------------------------------------------------- |
| \_positionManagers        | address\[] | Array of position managers.                               |
| \_stratBlocks             | address\[] | Array of strategy blocks.                                 |
| \_stratBlocksParameters   | bytes\[]   | Array of strategy block parameters.                       |
| \_isFinalBlock            | bool\[]    | Array of boolean indicating if a block is a final block.. |
| \_harvestBlocks           | address\[] | Array of harvest blocks.                                  |
| \_harvestBlocksParameters | bytes\[]   | Array of harvest block parameters.                        |

### stopStrategy

```solidity
function stopStrategy(uint256[] _dynParamsIndex, bytes[] _dynParams) external nonpayable
```

*Internal function to stop the strategy, harvest fees, and perform rebalancing. Only callable by the operator proxy.*

#### Parameters

| Name             | Type       | Description                             |
| ---------------- | ---------- | --------------------------------------- |
| \_dynParamsIndex | uint256\[] | The array of dynamic parameter indices. |
| \_dynParams      | bytes\[]   | The array of dynamic parameter values.  |

### stratInitialized

```solidity
function stratInitialized() external view returns (bool)
```

Indicates whether the strategy has been initialized

#### Returns

| Name | Type | Description |
| ---- | ---- | ----------- |
| \_0  | bool | undefined   |

### strategyBlocksLength

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

Mapping of strategy block numbers to their corresponding addresses

#### Returns

| Name | Type    | Description |
| ---- | ------- | ----------- |
| \_0  | uint256 | undefined   |

### symbol

```solidity
function symbol() external view returns (string)
```

*Returns the symbol of the token, usually a shorter version of the name.*

#### Returns

| Name | Type   | Description |
| ---- | ------ | ----------- |
| \_0  | string | undefined   |

### timelocks

```solidity
function timelocks(address) external view returns (uint256)
```

User Timelocks

#### Parameters

| Name | Type    | Description |
| ---- | ------- | ----------- |
| \_0  | address | undefined   |

#### Returns

| Name | Type    | Description |
| ---- | ------- | ----------- |
| \_0  | uint256 | undefined   |

### totalAssets

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

*Get the total assets (TVL) of the vault.*

#### Returns

| Name | Type    | Description                          |
| ---- | ------- | ------------------------------------ |
| \_0  | uint256 | The total assets (TVL) of the vault. |

### totalSupply

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

*See {IERC20-totalSupply}.*

#### Returns

| Name | Type    | Description |
| ---- | ------- | ----------- |
| \_0  | uint256 | undefined   |

### transfer

```solidity
function transfer(address to, uint256 value) external nonpayable returns (bool)
```

*See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`.*

#### Parameters

| Name  | Type    | Description |
| ----- | ------- | ----------- |
| to    | address | undefined   |
| value | uint256 | undefined   |

#### Returns

| Name | Type | Description |
| ---- | ---- | ----------- |
| \_0  | bool | undefined   |

### transferFrom

```solidity
function transferFrom(address from, address to, uint256 value) external nonpayable returns (bool)
```

*See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `value`. - the caller must have allowance for `from`'s tokens of at least `value`.*

#### Parameters

| Name  | Type    | Description |
| ----- | ------- | ----------- |
| from  | address | undefined   |
| to    | address | undefined   |
| value | uint256 | undefined   |

#### Returns

| Name | Type | Description |
| ---- | ---- | ----------- |
| \_0  | bool | undefined   |

### userDeposit

```solidity
function userDeposit(address) external view returns (uint256)
```

Mapping of addresses to their deposited amounts.

#### Parameters

| Name | Type    | Description |
| ---- | ------- | ----------- |
| \_0  | address | undefined   |

#### Returns

| Name | Type    | Description |
| ---- | ------- | ----------- |
| \_0  | uint256 | undefined   |

### withdraw

```solidity
function withdraw(uint256 _assets, address _receiver, address __owner) external nonpayable returns (uint256)
```

*Withdraw assets from the vault and burn the corresponding shares.*

#### Parameters

| Name       | Type    | Description                                  |
| ---------- | ------- | -------------------------------------------- |
| \_assets   | uint256 | The amount of assets to withdraw.            |
| \_receiver | address | The address to receive the withdrawn assets. |
| \_\_owner  | address | The owner of the shares being burned.        |

#### Returns

| Name | Type    | Description                  |
| ---- | ------- | ---------------------------- |
| \_0  | uint256 | The amount of shares burned. |

### withdrawalRebalance

```solidity
function withdrawalRebalance(address _user, uint256 _amount, uint256[] _dynParamsIndexExit, bytes[] _dynParamsExit) external nonpayable returns (uint256 totalWithdraw)
```

*Function to perform a withdrawal rebalance. Only callable by the operator proxy.*

#### Parameters

| Name                 | Type       | Description                                               |
| -------------------- | ---------- | --------------------------------------------------------- |
| \_user               | address    | The user address requesting the withdrawal.               |
| \_amount             | uint256    | The amount of shares to be withdrawn.                     |
| \_dynParamsIndexExit | uint256\[] | The array of dynamic parameter indices for strategy exit. |
| \_dynParamsExit      | bytes\[]   | The array of dynamic parameters for strategy exit.        |

#### Returns

| Name          | Type    | Description |
| ------------- | ------- | ----------- |
| totalWithdraw | uint256 | undefined   |

## Events

### Approval

```solidity
event Approval(address indexed owner, address indexed spender, uint256 value)
```

*Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.*

#### Parameters

| Name              | Type    | Description |
| ----------------- | ------- | ----------- |
| owner `indexed`   | address | undefined   |
| spender `indexed` | address | undefined   |
| value             | uint256 | undefined   |

### Deposit

```solidity
event Deposit(address indexed sender, address indexed owner, uint256 assets, uint256 shares)
```

#### Parameters

| Name             | Type    | Description |
| ---------------- | ------- | ----------- |
| sender `indexed` | address | undefined   |
| owner `indexed`  | address | undefined   |
| assets           | uint256 | undefined   |
| shares           | uint256 | undefined   |

### EIP712DomainChanged

```solidity
event EIP712DomainChanged()
```

*MAY be emitted to signal that the domain could have changed.*

### Initialized

```solidity
event Initialized(uint64 version)
```

*Triggered when the contract has been initialized or reinitialized.*

#### Parameters

| Name    | Type   | Description |
| ------- | ------ | ----------- |
| version | uint64 | undefined   |

### StrategVaultUpdate

```solidity
event StrategVaultUpdate(enum IStrategVault.StrategVaultUpdateType indexed update, bytes data)
```

*Emitted when a StrategVault is updated.*

#### Parameters

| Name             | Type                                      | Description                         |
| ---------------- | ----------------------------------------- | ----------------------------------- |
| update `indexed` | enum IStrategVault.StrategVaultUpdateType | The type of update being performed. |
| data             | bytes                                     | Data relevant to the update.        |

### Transfer

```solidity
event Transfer(address indexed from, address indexed to, uint256 value)
```

*Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.*

#### Parameters

| Name           | Type    | Description |
| -------------- | ------- | ----------- |
| from `indexed` | address | undefined   |
| to `indexed`   | address | undefined   |
| value          | uint256 | undefined   |

### Withdraw

```solidity
event Withdraw(address indexed sender, address indexed receiver, address indexed owner, uint256 assets, uint256 shares)
```

#### Parameters

| Name               | Type    | Description |
| ------------------ | ------- | ----------- |
| sender `indexed`   | address | undefined   |
| receiver `indexed` | address | undefined   |
| owner `indexed`    | address | undefined   |
| assets             | uint256 | undefined   |
| shares             | uint256 | undefined   |

## Errors

### AddressEmptyCode

```solidity
error AddressEmptyCode(address target)
```

*There's no code at `target` (it is not a contract).*

#### Parameters

| Name   | Type    | Description |
| ------ | ------- | ----------- |
| target | address | undefined   |

### AddressInsufficientBalance

```solidity
error AddressInsufficientBalance(address account)
```

*The ETH balance of the account is not enough to perform the operation.*

#### Parameters

| Name    | Type    | Description |
| ------- | ------- | ----------- |
| account | address | undefined   |

### BlockListNotValid

```solidity
error BlockListNotValid()
```

Error triggered when you try to include not approved block in a vault strategy

### DepositMoreThanMax

```solidity
error DepositMoreThanMax()
```

Error triggered when you try to deposit more than the maximum of assets depositable

### ECDSAInvalidSignature

```solidity
error ECDSAInvalidSignature()
```

*The signature derives the `address(0)`.*

### ECDSAInvalidSignatureLength

```solidity
error ECDSAInvalidSignatureLength(uint256 length)
```

*The signature has an invalid length.*

#### Parameters

| Name   | Type    | Description |
| ------ | ------- | ----------- |
| length | uint256 | undefined   |

### ECDSAInvalidSignatureS

```solidity
error ECDSAInvalidSignatureS(bytes32 s)
```

*The signature has an S value that is in the upper half order.*

#### Parameters

| Name | Type    | Description |
| ---- | ------- | ----------- |
| s    | bytes32 | undefined   |

### ERC20InsufficientAllowance

```solidity
error ERC20InsufficientAllowance(address spender, uint256 allowance, uint256 needed)
```

*Indicates a failure with the `spender`’s `allowance`. Used in transfers.*

#### Parameters

| Name      | Type    | Description                                                                 |
| --------- | ------- | --------------------------------------------------------------------------- |
| spender   | address | Address that may be allowed to operate on tokens without being their owner. |
| allowance | uint256 | Amount of tokens a `spender` is allowed to operate with.                    |
| needed    | uint256 | Minimum amount required to perform a transfer.                              |

### ERC20InsufficientBalance

```solidity
error ERC20InsufficientBalance(address sender, uint256 balance, uint256 needed)
```

*Indicates an error related to the current `balance` of a `sender`. Used in transfers.*

#### Parameters

| Name    | Type    | Description                                    |
| ------- | ------- | ---------------------------------------------- |
| sender  | address | Address whose tokens are being transferred.    |
| balance | uint256 | Current balance for the interacting account.   |
| needed  | uint256 | Minimum amount required to perform a transfer. |

### ERC20InvalidApprover

```solidity
error ERC20InvalidApprover(address approver)
```

*Indicates a failure with the `approver` of a token to be approved. Used in approvals.*

#### Parameters

| Name     | Type    | Description                               |
| -------- | ------- | ----------------------------------------- |
| approver | address | Address initiating an approval operation. |

### ERC20InvalidReceiver

```solidity
error ERC20InvalidReceiver(address receiver)
```

*Indicates a failure with the token `receiver`. Used in transfers.*

#### Parameters

| Name     | Type    | Description                                    |
| -------- | ------- | ---------------------------------------------- |
| receiver | address | Address to which tokens are being transferred. |

### ERC20InvalidSender

```solidity
error ERC20InvalidSender(address sender)
```

*Indicates a failure with the token `sender`. Used in transfers.*

#### Parameters

| Name   | Type    | Description                                 |
| ------ | ------- | ------------------------------------------- |
| sender | address | Address whose tokens are being transferred. |

### ERC20InvalidSpender

```solidity
error ERC20InvalidSpender(address spender)
```

*Indicates a failure with the `spender` to be approved. Used in approvals.*

#### Parameters

| Name    | Type    | Description                                                                 |
| ------- | ------- | --------------------------------------------------------------------------- |
| spender | address | Address that may be allowed to operate on tokens without being their owner. |

### ERC2612ExpiredSignature

```solidity
error ERC2612ExpiredSignature(uint256 deadline)
```

*Permit deadline has expired.*

#### Parameters

| Name     | Type    | Description |
| -------- | ------- | ----------- |
| deadline | uint256 | undefined   |

### ERC2612InvalidSigner

```solidity
error ERC2612InvalidSigner(address signer, address owner)
```

*Mismatched signature.*

#### Parameters

| Name   | Type    | Description |
| ------ | ------- | ----------- |
| signer | address | undefined   |
| owner  | address | undefined   |

### ERC4626ExceededMaxDeposit

```solidity
error ERC4626ExceededMaxDeposit(address receiver, uint256 assets, uint256 max)
```

*Attempted to deposit more assets than the max amount for `receiver`.*

#### Parameters

| Name     | Type    | Description |
| -------- | ------- | ----------- |
| receiver | address | undefined   |
| assets   | uint256 | undefined   |
| max      | uint256 | undefined   |

### ERC4626ExceededMaxMint

```solidity
error ERC4626ExceededMaxMint(address receiver, uint256 shares, uint256 max)
```

*Attempted to mint more shares than the max amount for `receiver`.*

#### Parameters

| Name     | Type    | Description |
| -------- | ------- | ----------- |
| receiver | address | undefined   |
| shares   | uint256 | undefined   |
| max      | uint256 | undefined   |

### ERC4626ExceededMaxRedeem

```solidity
error ERC4626ExceededMaxRedeem(address owner, uint256 shares, uint256 max)
```

*Attempted to redeem more shares than the max amount for `receiver`.*

#### Parameters

| Name   | Type    | Description |
| ------ | ------- | ----------- |
| owner  | address | undefined   |
| shares | uint256 | undefined   |
| max    | uint256 | undefined   |

### ERC4626ExceededMaxWithdraw

```solidity
error ERC4626ExceededMaxWithdraw(address owner, uint256 assets, uint256 max)
```

*Attempted to withdraw more assets than the max amount for `receiver`.*

#### Parameters

| Name   | Type    | Description |
| ------ | ------- | ----------- |
| owner  | address | undefined   |
| assets | uint256 | undefined   |
| max    | uint256 | undefined   |

### FailedInnerCall

```solidity
error FailedInnerCall()
```

*A call to an address target failed. The target may have reverted.*

### HarvestReverted

```solidity
error HarvestReverted(address _block, uint256 _index, bytes _data)
```

Error triggered when the harvest function reverts

#### Parameters

| Name    | Type    | Description                         |
| ------- | ------- | ----------------------------------- |
| \_block | address | The address of the harvest block    |
| \_index | uint256 | The index of the harvest block      |
| \_data  | bytes   | The data associated with the revert |

### HoldAmountNotReached

```solidity
error HoldAmountNotReached()
```

*Error thrown when the required hold amount is not reached.*

### HookReverted

```solidity
error HookReverted(address _block, uint256 _index, bytes _data)
```

Error triggered when the hook function reverts

#### Parameters

| Name    | Type    | Description                         |
| ------- | ------- | ----------------------------------- |
| \_block | address | The address of the harvest block    |
| \_index | uint256 | The index of the harvest block      |
| \_data  | bytes   | The data associated with the revert |

### InvalidAccountNonce

```solidity
error InvalidAccountNonce(address account, uint256 currentNonce)
```

*The nonce used for an `account` is not the expected current nonce.*

#### Parameters

| Name         | Type    | Description |
| ------------ | ------- | ----------- |
| account      | address | undefined   |
| currentNonce | uint256 | undefined   |

### InvalidInitialization

```solidity
error InvalidInitialization()
```

*The contract is already initialized.*

### MathOverflowedMulDiv

```solidity
error MathOverflowedMulDiv()
```

*Muldiv operation overflow.*

### MaxUserDepositReached

```solidity
error MaxUserDepositReached()
```

*Error thrown when the user's maximum deposit amount is reached.*

### MaxVaultDepositReached

```solidity
error MaxVaultDepositReached()
```

*Error thrown when the vault's maximum deposit amount is reached.*

### MinDepositNotReached

```solidity
error MinDepositNotReached()
```

*Error thrown when the minimum deposit amount is not reached.*

### NoSharesMinted

```solidity
error NoSharesMinted()
```

Error triggered when you try to deposit and the amount of share is 0

### NotFactory

```solidity
error NotFactory()
```

*Error thrown when the caller is not the factory contract.*

### NotInitializing

```solidity
error NotInitializing()
```

*The contract is not initializing.*

### NotOperator

```solidity
error NotOperator()
```

Error triggered on operator proxy reserved function when the sender is not the proxy

### NotOwner

```solidity
error NotOwner()
```

*Error thrown when the caller is not the owner.*

### NotPositionManager

```solidity
error NotPositionManager()
```

Error triggered on position manager reserved function when the sender is not a position manager

### NotWhitelisted

```solidity
error NotWhitelisted()
```

*Error thrown when the caller is not whitelisted.*

### ReentrancyGuardReentrantCall

```solidity
error ReentrancyGuardReentrantCall()
```

*Unauthorized reentrant call.*

### SafeERC20FailedOperation

```solidity
error SafeERC20FailedOperation(address token)
```

*An operation with an ERC20 token failed.*

#### Parameters

| Name  | Type    | Description |
| ----- | ------- | ----------- |
| token | address | undefined   |

### StrategyAlreadyInitialized

```solidity
error StrategyAlreadyInitialized()
```

Error triggered when you try to setup the vault strategy a second time

### StrategyEnterReverted

```solidity
error StrategyEnterReverted(address _block, uint256 _index, bytes _data)
```

Error triggered when the strategy enter function reverts

#### Parameters

| Name    | Type    | Description                         |
| ------- | ------- | ----------------------------------- |
| \_block | address | The address of the strategy block   |
| \_index | uint256 | The index of the strategy block     |
| \_data  | bytes   | The data associated with the revert |

### StrategyExitReverted

```solidity
error StrategyExitReverted(address _block, uint256 _index, bytes _data)
```

Error triggered when the strategy exit function reverts

#### Parameters

| Name    | Type    | Description                         |
| ------- | ------- | ----------------------------------- |
| \_block | address | The address of the strategy block   |
| \_index | uint256 | The index of the strategy block     |
| \_data  | bytes   | The data associated with the revert |

### StrategyNotInitialized

```solidity
error StrategyNotInitialized()
```

Error triggered on strategy related function when strategy isn't set

### TimelockNotReached

```solidity
error TimelockNotReached()
```

*Error thrown when the timelock for withdrawal has not been reached.*

### WithdrawMoreThanMax

```solidity
error WithdrawMoreThanMax()
```

Error triggered when you try to withdraw more than the maximum of assets withdrawable

### WithdrawalRebalanceIssue

```solidity
error WithdrawalRebalanceIssue()
```

Error triggered when there is an issue during the withdrawal rebalance
