> For the complete documentation index, see [llms.txt](https://docs.kpk.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.kpk.io/funds/infrastructure/onchain-accounting/meta-balance-adapters/balancer-v3-gauges.md).

# Balancer V3 Gauges

Reports an account's **gauge-staked** Balancer V3 LP plus claimable rewards across any gauge. The staked LP is decomposed pro-rata into the pool's underlying tokens (valued via the gauge's `lp_token` pool), and BAL plus the gauge's extra reward tokens are reported as accrued rewards. Wallet-held (unstaked) LP is the separate [Balancer V3 Pools](/funds/infrastructure/onchain-accounting/meta-balance-adapters/balancer-v3-pools.md) adapter.

* **Type:** Meta-adapter
* **protocolSubId:** `keccak256("balancer-v3-gauges")`
* **Instance key:** the gauge address, widened to bytes32.
* **Source:** [`BalancerV3GaugesMetaBalanceAdapter.sol`](https://github.com/karpatkey/onchain-accounting/blob/main/src/balances/MetaBalanceAdapters/balancer/BalancerV3GaugesMetaBalanceAdapter.sol)

***

## Positions returned

| Leg             | PositionKind | isDebt  | Description                                                                     |
| --------------- | ------------ | ------- | ------------------------------------------------------------------------------- |
| Staking         | `Staking`    | `false` | Pro-rata share of one underlying pool token, from the account's gauge-staked LP |
| Rewards (BAL)   | `Rewards`    | `false` | Claimable BAL, minted via the Balancer Minter                                   |
| Rewards (extra) | `Rewards`    | `false` | Claimable amount of each extra gauge reward token                               |

Tokens not registered in NAVCalculator are skipped, as are zero amounts and asset-filtered tokens.

***

## Balance calculation

<figure><img src="/files/gvyxjMVXuFgeXVliBvFw" alt="Flowchart of the Balancer V3 Gauges balance adapter: read calls derive position legs into PositionBalance entries."><figcaption><p>Balancer V3 Gauges adapter — how the underlying balances reported to the NAV Calculator are derived.</p></figcaption></figure>

**Staking legs** use `staked = gauge.balanceOf(account)` and the same `BalancerV3PoolLib.poolBalanceOfIndexed` decomposition as the Pools adapter (live-scaled-18 share → raw units, ERC4626 unwrap via `previewRedeem`), applied to the gauge `lp_token` pool. As in the Pools adapter, the tokens are iterated in index order and each leg is keyed on the pool-token index, so a pool holding the same underlying at two indices is decomposed correctly; a transiently-zero scaling factor or token rate yields a `0` leg.

**BAL rewards** (`claimableBal`) emulate the gauge inflation checkpoint off-chain:

```
claimable = max(integrateFraction(account) - minter.minted(account, gauge), 0)
```

`integrateFraction` is recomputed by walking weekly boundaries (`WEEK = 7 * 86400`) from the last period to `block.timestamp`, accumulating `integrate_inv_supply` from the inflation rate, capped relative weight, and `working_supply`. It tries the mainnet model (`calculateIntegrateFraction`, up to 500 weeks, with a future-epoch rate switch via the token admin) and falls back to the L2 model (`calculateIntegrateFractionL2`, up to 256 weeks, per-week `inflation_rate(week)`). A killed gauge zeroes the rate. Any revert yields 0.

**Extra rewards** come from `gauge.claimable_reward(account, token)` for each `reward_tokens(i)` (BAL excluded here, since it is handled via the minter).

***

## Identity

* **positionId:** `abi.encode(address gauge)`
* **positionKind:** `Staking` · `Rewards`

There is no `labels` field on the position. The adapter implements `positionLabels(positionId)`, which returns `["Staking Gauge", "<sym0>/<sym1>/…"]` from the staked pool's underlying token symbols — surfaced only by the verbose reads (`getAccountPositionsVerbose` / `getAccountNavVerbose`); the full breadcrumb is `[protocolName, ...labels]`.

***

## Constructor

```solidity
constructor(address balancerMinter_, address navCalculator_)
```

| Parameter         | Description                                                                                            |
| ----------------- | ------------------------------------------------------------------------------------------------------ |
| `balancerMinter_` | Balancer Minter contract (must be a contract); resolves the BAL token, token admin, and minted amounts |
| `navCalculator_`  | NAVCalculator address (must be a contract); source of the asset registry and the instance set          |

***

## Registration

Registered as a meta-adapter via `addMetaBalanceAdapter(adapter)`, then per-gauge instances are added with `addMetaInstances`. Each instance coordinate is the gauge address widened to bytes32.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## 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, and the optional `goal` query parameter:

```
GET https://docs.kpk.io/funds/infrastructure/onchain-accounting/meta-balance-adapters/balancer-v3-gauges.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

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.
