# Technical Documents

## Launch Vault

This contract is an ERC4626-compatible vault that allows users to deposit an underlying asset and receive proportional shares which are ERC20 tokens. The vault also keeps track of balances and total supply over time, supports delayed withdrawals, and provides mechanisms to rescue shares from blocklisted accounts.

### Main Features

* ERC20 Compliance with Enhanced Controls
* Standard ERC20 functionality (<mark style="color:purple;">`transfer`</mark>, <mark style="color:purple;">`transferFrom`</mark>, <mark style="color:purple;">`balanceOf`</mark>, etc.).
* Additional checks for pause and blocklisted addresses.

### ERC4626 Vault Functions

* Implements standard ERC4626 methods: <mark style="color:purple;">`deposit`</mark>, <mark style="color:purple;">`mint`</mark>, <mark style="color:purple;">`redeem`</mark>, and <mark style="color:purple;">`withdraw`</mark>.
* Enables predictable and standardized vault interactions.

### Deposit and Mint

* Users can deposit assets to receive shares (<mark style="color:purple;">`deposit`</mark>) or mint a specified number of shares by depositing the required amount (<mark style="color:purple;">`mint`</mark>).
* Supports deposit limits and ensures proper share-to-asset conversion with rounding.

### Withdrawal and Redemption

* Withdrawals and redemptions are scheduled for future periods to allow for controlled asset disbursement.
* Includes claiming functionality to finalize withdrawals after the period ends.

### Rescue Mechanisms

* Allows administrators with <mark style="color:purple;">`RESCUER_ROLE`</mark> to recover shares or pending withdrawals from blocklisted addresses.
* Prevents blocklisted accounts from executing any vault operations.

### Period-Based Logic

* The vault operates in configurable periods, allowing withdrawals to be processed at the end of a period.
* Periods can be configured to control duration, start times, and transitions.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.firelight.finance/technical-documents.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
