> ## Documentation Index
> Fetch the complete documentation index at: https://docs.mellow.finance/llms.txt
> Use this file to discover all available pages before exploring further.

# BasicRedeemHook

### Overview

`BasicRedeemHook` is a minimal hook implementation for `IHook`, designed to dynamically fetch liquidity from subvaults during redemption processing in a `VaultModule`. It ensures that enough assets are available for user redemptions by pulling liquidity from a set of registered subvaults.

This hook is typically invoked by a vault’s redemption queue or during `redeem()` operations when assets must be made liquid.

### Purpose

* Ensures **sufficient liquidity** in the vault to fulfill asset redemptions.
* Minimizes idle capital by **pulling only when needed**.
* Supports **liquidity routing** across subvaults.

### Key Functions

### `callHook(address asset, uint256 assets)`

Attempts to make `assets` of `asset` liquid within the main vault by pulling from subvaults if needed.

**Execution Flow:**

1. Checks how much of the `asset` the vault already holds.
2. If balance is sufficient → no-op.
3. Otherwise:
   * Iterates over subvaults (via `subvaultAt(i)`)
   * For each subvault:
     * Pulls **only the required portion** via `hookPullAssets()`
     * Stops when total required assets have been pulled

**Guarantees:**

* Only pulls the **exact missing amount**, no over-pulling
* Efficient: stops once liquidity need is satisfied
* Skips subvaults with `0` balance

### `getLiquidAssets(address asset) → uint256`

Returns the **total liquid amount of a given asset** available across the vault and all its subvaults.

* Reads balances:
  * `vault.balanceOf(asset)`
  * `subvault[i].balanceOf(asset)` for each subvault
* Aggregates and returns sum

### Contract Assumptions

* The `vault` invoking this hook implements `IVaultModule` and supports:
  * `subvaults()` → total number of subvaults
  * `subvaultAt(index)` → address of a given subvault
  * `hookPullAssets(subvault, asset, amount)` → callable method to move funds

### Security Considerations

* Hook only pulls assets using vault-controlled `hookPullAssets()`, ensuring controlled asset flow.
* Assumes vault validates which hook is active — no permissioning within the hook itself.
