# VaultFundraiseStorage

Library defining the storage layout for VaultFundraise submodule.

## State Variables

### \_FUNDRAISE\_STORAGE\_LOCATION

**Note:** storage-location: erc7201:aria-protocol.AriaIPRWAVault.Fundraise

```solidity
bytes32 internal constant _FUNDRAISE_STORAGE_LOCATION =
    0xe36dd38548499b58d3fbf36ee168c9d1aec283faddba88cc1ca409b4aad71e00;
```

## Functions

### load

*Returns the storage struct of VaultFundraise.*

```solidity
function load() internal pure returns (FundraiseLayout storage $);
```

## Structs

### Setup

*Storage struct for the setup of the fundraise*

```solidity
struct Setup {
    uint256 expirationTime;
    address fundReceiver;
    address usdcContractAddress;
}
```

**Properties**

| Name                  | Type      | Description                                                |
| --------------------- | --------- | ---------------------------------------------------------- |
| `expirationTime`      | `uint256` | The expiration time of the vault (0 if no expiration)      |
| `fundReceiver`        | `address` | The address of the fund receiver (a safe/multisig address) |
| `usdcContractAddress` | `address` | The address of the USDC contract                           |

### FundraiseLayout

*Storage structure for the VaultFundraise submodule*

```solidity
struct FundraiseLayout {
    Setup setup;
    FundraiseState state;
    EnumerableSet.AddressSet usdcInVault;
    mapping(address token => uint256 totalDeposited) totalDeposits;
    mapping(address user => mapping(address token => uint128 amount)) deposits;
}
```

**Properties**

| Name            | Type                                                                | Description                                                      |
| --------------- | ------------------------------------------------------------------- | ---------------------------------------------------------------- |
| `setup`         | `Setup`                                                             | The setup of the fundraise                                       |
| `state`         | `FundraiseState`                                                    | The state of the vault either Open, Closed, or Canceled          |
| `usdcInVault`   | `EnumerableSet.AddressSet`                                          | The set of tokens in the vault (should only be USDC)             |
| `totalDeposits` | `mapping(address token => uint256 totalDeposited)`                  | The total deposits received for each token (should only be USDC) |
| `deposits`      | `mapping(address user => mapping(address token => uint128 amount))` | The deposit token address and amount information of the users    |


---

# 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.ariaprotocol.xyz/technical-docs/contract-docs/iprwa/vault/fundraise/vaultfundraisestorage.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.
