# Hyperbeat USDC

### General Vault Information

* **Vault Name:** Hyperbeat USDC
* **Vault Token Symbol:** hbUSDC
* **Chain:** hyperevm
* **Chain ID:** 999
* **Vault Token (hbUSDC):** `0x057ced81348D57Aad579A672d521d7b4396E8a61`
* **Decimals:** 18
* **Custom Feed:** `0xc82CAd78983436BddfcAf0F21316207D87b87462`
* **Data Feed:** `0xb013A5956f8b838B7E668DFbdf1efA978Ccc7a23`
* **Insurance Contract (for Deposits):** `0xd202CF41a607627cd1A31f650D13599b588eBd1c`
* **Redemption Contract (for Withdrawals):** `0xBb820D0c85C0B5D1B0dC8C6D3541fbb1AB4C7a60`

### Token Information

**Accepted Tokens:**

* **USDC:**
  * Address: `0xb88339CB7199b77E23DB6E890353E22632Ba630f`&#x20;
  * Decimals: 6

### Useful Links

* **Vault Token on Explorer:** [View on hyperscan](https://hyperevmscan.io/address/0x057ced81348d57aad579a672d521d7b4396e8a61)
* **Insurance Contract on Explorer:** [View on hyperscan](https://hyperevmscan.io/address/0xd202CF41a607627cd1A31f650D13599b588eBd1c)
* **Redemption Contract on Explorer:** [View on hyperscan](https://hyperevmscan.io/address/0xBb820D0c85C0B5D1B0dC8C6D3541fbb1AB4C7a60)
* **Vault Logo:** [Brand kit](https://www.hyperbeat.org/brand)

## Actions

### Depositing Tokens

To deposit tokens (e.g., USDC) into the hbUSDC vault, you must interact with the **Insurance Contract**.

**Steps:**

1. **Approve Spending**
   * Approve the Insurance Contract (`0xd202CF41a607627cd1A31f650D13599b588eBd1c`) to spend the deposit token (e.g., USDC).
   * Call `approve(address spender, uint256 value)` on the deposit token contract.
   * Parameters:
     * `spender`: Insurance Contract address.
     * `value`: Amount to approve, in the token’s native decimals (e.g., 6 for USDC).
2. **Perform Deposit**
   * Once approved, call `depositInstant` on the Insurance Contract.
   * `depositInstant(address tokenIn, uint256 amountToken, uint256 minReceiveAmount, bytes32 referrerId)`
   * **`tokenIn`:** Address of the token being deposited.
   * **`amountToken`:** Expressed in **18 decimals**, regardless of the input token’s decimals.
     * For USDC (6 decimals): `amountIn18Decimals = amountIn6Decimals * 10**12`.
   * **minReceiveAmount:** Minimum hbUSDC to receive. Can be 0.
   * **referrerId:** Bytes32 referrer ID. Use `0x0...0` if none.

***

## Withdrawing Tokens

Withdrawals are done through the **Redemption Contract** (`0xBb820D0c85C0B5D1B0dC8C6D3541fbb1AB4C7a60`). Two methods exist: **Instant** and **Classic**.

**Step 1 (Required for both methods): Approve**

* Approve the Redemption Contract to spend your hbUSDC.
* Call `approve(address spender, uint256 value)` on the hbUSDC Vault Token contract (`0x057ced81348D57Aad579A672d521d7b4396E8a61`).
* `spender`: Redemption Contract.
* `value`: Amount in 18 decimals.

**Step 2 (Option A): Instant Redeem**

* Immediate withdrawal, subject to a **0.5% fee**.
* **Call** `redeemInstant(address tokenOut, uint256 amountMTokenIn, uint256 minReceiveAmount)`
  * **tokenOut:** Address of the token to receive (e.g., USDC).
  * **amountMTokenIn:** Amount of hbUSDC to withdraw, in 18 decimals.
  * **minReceiveAmount:** Minimum amount to receive. Can be set to `0`.

**Step 2 (Option B): Classic Redeem**

* Withdrawals processed within **48 hours**, **no fee**.
* Call: `redeemRequest(address tokenOut, uint256 amountMTokenIn)`
  * **tokenOut:** Address of the token to receive (e.g., USDC).
  * **amountMTokenIn:** Amount of hbUSDC to withdraw, in 18 decimals.

## Additional Information

* **Token Balance (balanceOf):**
  * For deposit tokens, call `balanceOf(address)` on that token’s contract.
  * For hbUSDC balance, call `balanceOf(address)` on the hbUSDC vault token.
* **Withdrawal Processing (Classic):**
  * Classic withdrawals are processed in **\~48 hours**.
  * Assets are automatically sent upon processing.
* **Checking Withdrawal Status (Classic):**
  * Off-chain API via Midas (same format as hbUSDT).
  * Endpoint: `GET https://api-prod.midas.app/api/data/requests/pending?address=<USER_ADDRESS>&networkId=999`
  * Replace `<USER_ADDRESS>` with the wallet address.
  * The API will return a JSON object containing a `redemptions` array. Each object in this array represents a pending withdrawal request and includes details like the amount, creation date, and status (`pending`, `ready`, or `expired`).


---

# 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.hyperbeat.org/hyperbeat-builder-codes/vaults/hyperbeat-usdc.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.
