# Static Wrapper Vaults

### Overview

Static KTokens are ERC-4626 compliant vault wrappers built on top of Kona Lending. They convert rebasing kTokens (e.g., kWETH, kUSDC) into non-rebasing, composable vault shares with a fixed token balance. Instead of your balance increasing over time (as with standard kTokens), interest accrues through an increasing exchange rate.

This makes Static KTokens fully compatible with DeFi protocols that expect standard ERC-20 behavior — including farms, liquidity pools, and other yield strategies.

### How It Works

1. **Deposit** an underlying asset (e.g., WETH) or a kToken (e.g., kWETH) into the Static KToken vault.
2. **Receive** vault shares (e.g., stataKonWETH) representing your position.
3. **Interest accrues** via an increasing exchange rate — your share balance stays fixed, but each share is worth more underlying over time.
4. **Withdraw** at any time by redeeming your vault shares back to either the underlying asset or the kToken.

### Deployed Vaults

| Vault             | Symbol        | Underlying | Address                                      |
| ----------------- | ------------- | ---------- | -------------------------------------------- |
| Static Kona WETH  | stataKonWETH  | WETH       | `0xb2Bce227EeE640d442a12C224C0B7e6AB23652FB` |
| Static Kona USDC  | stataKonUSDC  | USDC.e     | `0xb34e1dFF53791AeAd3F6C795305963b1E82321A1` |
| Static Kona USDT  | stataKonUSDT  | USDT       | `0xd9c0AbeFD0c38A7bE0f8D6eB8Cf321EB8c23A6E7` |
| Static Kona PENGU | stataKonPENGU | PENGU      | `0xc29D50197ee9107B0BEdcfEd7aEb09297078DBA2` |

**Factory:** `0xCE5B317e078Fb4982bD8f88B228bd3DBd919A384`

**Network:** Abstract (Chain ID: 2741)

### Key Properties

* **ERC-4626 Compliant** — Standard vault interface supported by virtually all DeFi protocols.
* **Fixed Balance** — Your token balance does not rebase. Interest is reflected in the exchange rate.
* **Composable** — Use vault shares in farms, liquidity pools, and other integrations.
* **No Lock-Up** — Deposit and withdraw at any time without restrictions.

### Exchange Rate

Each vault exposes a `rate()` function that returns the current exchange rate in 27-decimal precision (1e27 = 1:1). For example, a rate of `1.05e27` means 1 vault share is redeemable for 1.05 of the underlying asset.

The exchange rate only increases over time as lending interest accrues in the underlying Kona Lending market.

### Depositing

You can deposit into a Static KToken vault in two ways:

#### Option 1: Deposit Underlying Asset (e.g., WETH)

The vault supplies your tokens to Kona Lending and wraps them into vault shares in a single transaction.

```solidity
function deposit(
    uint256 assets,
    address receiver,
    uint16 referralCode,
    bool depositToAave    // set to true
) external returns (uint256 shares);
```

#### Option 2: Deposit kToken (e.g., kWETH)

If you already have a kToken lending position, you can wrap it directly into vault shares.

```solidity
function deposit(
    uint256 assets,
    address receiver,
    uint16 referralCode,
    bool depositToAave    // set to false
) external returns (uint256 shares);
```

> **Health Factor Warning:** Depositing kTokens into a vault removes them from your Kona Lending collateral. If you have active borrows, this will lower your health factor and may put your position at risk of liquidation. Always check your health factor on the lending dashboard before depositing kTokens.

### Withdrawing

You can withdraw from a Static KToken vault in two ways:

#### Option 1: Withdraw to Underlying Asset (e.g., WETH)

Redeems your vault shares and returns the underlying asset directly.

```solidity
function redeem(
    uint256 shares,
    address receiver,
    address owner,
    bool withdrawFromAave    // set to true
) external returns (uint256 assets, uint256 aTokens);
```

#### Option 2: Withdraw to kToken (e.g., kWETH)

Redeems your vault shares and returns the kToken, keeping your lending position active and continuing to earn interest.

```solidity
function redeem(
    uint256 shares,
    address receiver,
    address owner,
    bool withdrawFromAave    // set to false
) external returns (uint256 assets, uint256 aTokens);
```

### Kona Points

Static KToken vaults **do not earn Kona Points directly**. However, the vault receipt tokens you receive (e.g., stataKonWETH) can be used in farms and other integrations that do earn Kona Points.

### Additional Functions

| Function                  | Description                                                            |
| ------------------------- | ---------------------------------------------------------------------- |
| `rate()`                  | Returns the current exchange rate (1e27 precision)                     |
| `convertToAssets(shares)` | Preview how many underlying assets a given number of shares is worth   |
| `convertToShares(assets)` | Preview how many shares a given amount of underlying assets would mint |
| `previewDeposit(assets)`  | Preview shares received for a deposit                                  |
| `previewRedeem(shares)`   | Preview assets received for a redemption                               |
| `maxDeposit(address)`     | Maximum deposit allowed                                                |
| `maxRedeem(address)`      | Maximum redeem allowed for an owner                                    |
| `totalAssets()`           | Total underlying assets held by the vault                              |

### Reward Claiming

Static KToken vaults support reward token distribution from the underlying Kona Lending incentives controller. Users can claim accrued rewards using:

```solidity
function claimRewardsToSelf(address[] calldata rewards) external;
function claimRewards(address receiver, address[] calldata rewards) external;
```

Use `rewardTokens()` to get the list of registered reward token addresses.

### Security Considerations

* Vault shares are standard ERC-20 tokens and can be transferred freely.
* The `permit` function supports gasless approvals via EIP-2612 signatures.
* Meta-transactions are supported for both deposits (`metaDeposit`) and withdrawals (`metaWithdraw`).
* Always verify the exchange rate before large withdrawals to understand your expected output.


---

# 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://kittypunch.gitbook.io/kittypunch-docs/protocols-and-products-abstract/kona-lend/static-wrapper-vaults.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.
