> ## 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.

# SignatureDepositQueue

### Purpose

`SignatureDepositQueue` extends `SignatureQueue` to enable **instant deposit** of assets into a vault, bypassing the standard on-chain `DepositQueue` mechanism. It leverages **off-chain approvals** signed by a trusted consensus group, using **EIP-712** or **EIP-1271**-compliant signatures, to authorize asset inflows and minting of vault shares.

This contract is optimized for high-trust environments requiring immediate asset onboarding while maintaining on-chain price safety guarantees.

### Key Features

* **Instant deposit execution** with no queuing delay
* **EIP-712 signed orders** with nonce-based replay protection
* **Vault share minting** at off-chain pre-agreed price
* **Fully integrated with vault accounting and share manager**
* **No deposit fee** applied (unlike possible fees in `DepositQueue`)

### Workflow

1. A consensus group signs an `Order` authorizing a user deposit:
   * Includes asset amount (`ordered`) and shares to mint (`requested`)
   * Binds the request to a specific queue and vault
   * Includes a nonce and expiration timestamp
2. User submits the order on-chain by calling `deposit` function:
   * The contract validates the order using signatures and price logic
   * Receives tokens from the user
   * Transfers these tokens to the vault
   * Mints shares to the specified recipient
   * Updates vault internal balance and executes post-deposit hook

### Function: `deposit`

```solidity theme={null}
function deposit(Order calldata order, IConsensus.Signature[] calldata signatures) external payable nonReentrant
```

### Parameters:

* `order`: A signed `Order` struct including deposit parameters
* `signatures`: Signatures from the off-chain consensus validating the order

### Steps:

1. `validateOrder(...)`:
   * Confirms order is not expired
   * Confirms order is intended for this queue
   * Confirms correct asset, caller, and nonce
   * Validates off-chain signatures
   * Computes and validates asset/share price using vault oracle
2. Increments the caller’s nonce to prevent replay
3. Transfers `order.ordered` assets from the caller to this contract
4. Transfers these assets into the vault
5. Calls `vault.callHook(...)` for any optional strategy logic
6. Notifies the vault's `RiskManager` of the new deposit
7. Mints `order.requested` shares to `order.recipient`
8. Emits `OrderExecuted` event

### Security Considerations

* **Consensus signatures** are required to prevent unauthorized deposits
* **Oracle validation** ensures price sanity even in trusted setups
* **Replay protection** enforced using per-user nonces
* No deposit can proceed if:
  * Asset or queue mismatch
  * Caller mismatch
  * Nonce is reused
  * Off-chain price is out of oracle bounds
