> ## Documentation Index
> Fetch the complete documentation index at: https://docs.krokoswap.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Positions

> NFT-based liquidity positions in V3

# Positions

In V3, each liquidity position is represented by a **non-fungible token (ERC-721 NFT)**. Unlike V2's fungible LP tokens, each V3 position is unique because it encodes a specific price range and liquidity amount.

## Position Properties

Each position NFT stores:

| Property    | Description                              |
| ----------- | ---------------------------------------- |
| `token0`    | Address of the lower-sorted token        |
| `token1`    | Address of the higher-sorted token       |
| `fee`       | Pool fee tier (100, 500, 3000, or 10000) |
| `tickLower` | Lower bound of the price range           |
| `tickUpper` | Upper bound of the price range           |
| `liquidity` | Amount of liquidity provided             |

## Position Lifecycle

### 1. Mint (Create)

Create a new position by calling the Position Manager with:

* Token pair and fee tier (identifies the pool)
* Tick range (`tickLower`, `tickUpper`)
* Desired token amounts

The Position Manager mints an NFT and returns the `tokenId`.

### 2. Increase Liquidity

Add more liquidity to an existing position without changing the range. The additional tokens must match the current price ratio within your range.

### 3. Decrease Liquidity

Remove some or all liquidity from a position. This converts liquidity back to tokens, which are held by the Position Manager until collected.

### 4. Collect Fees

Claim accumulated trading fees. Fees accrue in the exact tokens of the pool and must be explicitly collected — they do not auto-compound like V2.

### 5. Burn

After removing all liquidity and collecting all fees, the NFT can be burned. This is optional — an empty position NFT has no economic value.

## Position States

A position can be in one of three states depending on the current pool price:

| State       | Condition                             | Composition              | Earning Fees? |
| ----------- | ------------------------------------- | ------------------------ | ------------- |
| In range    | `tickLower < currentTick < tickUpper` | Mix of token0 and token1 | Yes           |
| Above range | `currentTick ≥ tickUpper`             | 100% token0              | No            |
| Below range | `currentTick ≤ tickLower`             | 100% token1              | No            |

## Fee Calculation

Fees earned by a position are proportional to:

1. **Liquidity share** — The position's liquidity relative to the total active liquidity at each tick
2. **Time in range** — Fees only accrue when the position is in range
3. **Trading volume** — More trades through the position's range means more fees

$$
\text{Fees earned} \propto \frac{L_{\text{position}}}{L_{\text{total at tick}}} \times \text{Volume through ticks}
$$

## Key Differences from V2

|                | V2 LP Token                   | V3 Position NFT           |
| -------------- | ----------------------------- | ------------------------- |
| Token standard | ERC-20                        | ERC-721                   |
| Fungible       | Yes                           | No                        |
| Price range    | Full range (implicit)         | Custom range (explicit)   |
| Fee collection | Auto-compounded               | Manual claim              |
| Composability  | Easy (fungible, transferable) | Possible but more complex |
