# 1️⃣ CLAMM LPs (e.g. Uniswap V3)

Fuul enables projects to reward Liquidity Providers (LPs) on concentrated liquidity AMMs such as Uniswap V3, Quickswap, Camelot, and others.

In concentrated liquidity pools, LPs allocate capital to specific price ranges instead of the full price curve. Fuul's engine fetches all positions from a pool's subgraph and calculates each position's contribution to determine reward shares.

### How Rewards Are Distributed

The recommended approach is **Active Liquidity**: each in-range position earns rewards proportional to the **USD value of its liquidity** relative to the pool's total in-range liquidity.

| Step                       | What happens                                                                                    |
| -------------------------- | ----------------------------------------------------------------------------------------------- |
| **1. Fetch positions**     | Fuul pulls all positions from the pool's subgraph                                               |
| **2. Filter in-range**     | Only positions whose price range includes the current price are considered                      |
| **3. Calculate USD value** | Each position's liquidity is valued in USD based on the current token prices                    |
| **4. Distribute rewards**  | Rewards are split proportionally — your share of in-range USD liquidity = your share of rewards |

Out-of-range positions receive zero rewards, ensuring incentives go to liquidity that is actively contributing to the pool.

### Alternative: Distribution Formula

For projects that want more granular control, Fuul also supports a **weighted distribution formula** that breaks rewards into three components:

* **Liquidity Share** — the position's share of the pool's total in-range liquidity
* **Token A Share** — the position's Token A amount divided by the pool's total Token A TVL
* **Token B Share** — the position's Token B amount divided by the pool's total Token B TVL

The incentive provider assigns a weight to each component. The formula is:

<figure><img src="/files/XCMoNP190AoX29APfBt8" alt=""><figcaption></figcaption></figure>

**Example:** With weights of `liquidity = 40%, Token A = 30%, Token B = 30%`:

* A position holding 50% of active liquidity earns **20%** (40% x 50%) of total rewards
* A position holding 30% of Token A earns **9%** (30% x 30%) of total rewards
* A position holding 20% of Token B earns **6%** (30% x 20%) of total rewards

This approach also allows rewarding **out-of-range positions** — their token amounts are calculated using the V3 math formula so they still receive a share based on their potential contribution.

{% hint style="info" %}
We recommend **Active Liquidity** for most campaigns. The Distribution Formula is best suited for projects with specific requirements around token composition or out-of-range incentives.
{% endhint %}

### Key Differences from Constant Product (V2)

|                           | Concentrated Liquidity (V3)                           | Constant Product (V2)                  |
| ------------------------- | ----------------------------------------------------- | -------------------------------------- |
| **Liquidity range**       | Custom price bands                                    | Full price range (0 to ∞)              |
| **Reward calculation**    | USD value of in-range liquidity (or weighted formula) | Simple share of LP token supply        |
| **Out-of-range handling** | Configurable — exclude or include                     | N/A — all liquidity is always in range |


---

# 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.fuul.xyz/core-concepts/trigger-integrations/clamm-lps-e.g.-uniswap-v3.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.
