> For the complete documentation index, see [llms.txt](https://docs.ariaprotocol.xyz/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.ariaprotocol.xyz/technical-docs/contract-docs/iprwa/vault/admin/interfaces/ivaultfundraiseadmin.md).

# IVaultFundraiseAdmin

Interface for the VaultFundraise Admin functions.

## Functions

### cancelRaise

Cancels the fundraise vault, only when the vault is Open

*Only the admin can cancel the vault*

```solidity
function cancelRaise() external;
```

### closeRaise

Closes the fundraise vault, only when the vault is Open

*Only the admin can close the vault*

```solidity
function closeRaise() external;
```

### withdraw

Transfers all funds to the fund receiver, only when the vault is Closed

*Only the admin can withdraw funds*

```solidity
function withdraw() external returns (address[] memory tokens, uint256[] memory withdrawnAmounts);
```

**Returns**

| Name               | Type        | Description                           |
| ------------------ | ----------- | ------------------------------------- |
| `tokens`           | `address[]` | The addresses of the tokens withdrawn |
| `withdrawnAmounts` | `uint256[]` | The amounts of the tokens withdrawn   |

### withdraw

Transfers all funds to the fund receiver, only when the vault is Closed

*Only the admin can withdraw funds*

```solidity
function withdraw(address token) external;
```

**Parameters**

| Name    | Type      | Description                          |
| ------- | --------- | ------------------------------------ |
| `token` | `address` | The address of the token to withdraw |

### updateUsdcContractAddress

Admin updates the USDC contract address

```solidity
function updateUsdcContractAddress(address newUsdcContractAddress) external;
```

**Parameters**

| Name                     | Type      | Description                          |
| ------------------------ | --------- | ------------------------------------ |
| `newUsdcContractAddress` | `address` | The address of the new USDC contract |

## Events

### FundraiseInitialized

Emitted when the fundraise is initialized

```solidity
event FundraiseInitialized(VaultFundraiseStorage.Setup setup);
```

**Parameters**

| Name    | Type                          | Description                        |
| ------- | ----------------------------- | ---------------------------------- |
| `setup` | `VaultFundraiseStorage.Setup` | The initial setup of the fundraise |

### TokensWithdrawn

Emitted when tokens are withdrawn from the vault by the fund receiver

```solidity
event TokensWithdrawn(address indexed receiver, address[] indexed tokens, uint256[] amounts);
```

**Parameters**

| Name       | Type        | Description                           |
| ---------- | ----------- | ------------------------------------- |
| `receiver` | `address`   | The address of the fund receiver      |
| `tokens`   | `address[]` | The addresses of the tokens withdrawn |
| `amounts`  | `uint256[]` | The amounts of the tokens withdrawn   |

### UsdcContractAddressUpdated

Emitted when the USDC contract address is updated

```solidity
event UsdcContractAddressUpdated(address indexed prevUSDC, address indexed newUSDC);
```

**Parameters**

| Name       | Type      | Description                               |
| ---------- | --------- | ----------------------------------------- |
| `prevUSDC` | `address` | The address of the previous USDC contract |
| `newUSDC`  | `address` | The address of the new USDC contract      |

### VaultCanceled

Emitted when the vault is canceled

```solidity
event VaultCanceled();
```

### VaultClosed

Emitted when the vault is closed

```solidity
event VaultClosed();
```
