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

# Positions and legs

> Positions, leg roles, valuation statuses, flags and warnings.

## Ownership: owner\_role

`owner_role` says how the wallet relates to a position:

* `authority`: the wallet owns the obligation, perp or position account.
* `withdraw_authority`: stake the wallet can withdraw.
* `stake_authority`: **staker only**: the wallet can delegate the stake but not withdraw it. Shown with the
  `staker_only` flag and excluded from totals (D-09).
* `token_holder`: the receipt or share token (an LST, an LP token) is in the wallet.
* `beneficiary`: the wallet is entitled through a farm or custody account.
* `delegate`: the wallet acts for the owner under a delegation.
* `unknown`: the relationship could not be classified.

## Positions, legs and roles

A position (`id` = `solana:<adapter>:<container>`, stable across snapshots) has three leg arrays: `assets`, `debts`
(positive amounts you owe) and `rewards`. `net_value_usd` = assets − debts (+ rewards when included). Leg `role` is one
of `supplied`, `collateral`, `borrowed`, `liquidity`, `staked`, `share`, `underlying`, `margin`, `unrealized_pnl`,
`funding`, `fee`, `reward`. `position_type` is one of `lending_supply`, `lending_borrow`, `liquidity_concentrated`,
`liquidity_bins`, `liquidity_fungible`, `vault`, `native_staking`, `liquid_staking`, `perpetual`, `yield_reward`,
`governance_staking` (staked governance tokens such as JUP; `category` is null), `unclassified` (a detected position
whose kind is not supported; shown, never valued); `category` groups them.
`details` holds protocol facts (never summed); `evidence` names the slot, adapter version, method and accounts read.

## Leg valuation statuses

* `priced`: valued from a qualified source; counts toward `total_value_usd`.
* `indicative`: priced from a thin market; included in `known_value_usd`, never in `total_value_usd` (D-07).
* `stale`: the latest price is too old; the value is shown but counted in neither total.
* `unsupported`: no supported price source for this token; `value_usd` is `null`.
* `no_liquidity`: no market deep enough to price it; `value_usd` is `null`.
* `unlicensed`: a price exists but cannot be served; `value_usd` is `null`.
* `error`: pricing failed during the scan; `value_usd` is `null`.
* `not_requested`: valuation was not requested (`include` without `valuation`).

`confidence` is `qualified` or `indicative`. `pricing_source` and `price_as_of` say where and when the price came from.
`market_price_usd` (an LST's market price, D-08) and `protocol_mark_price_usd` (the protocol's own mark, D-10/D-17) are
for reference only and are never summed.

## Exact vs estimated, claimable, informational

* `amount_basis: "estimated"`: an accrual not yet booked on chain (for example farm rewards, D-16). Never counted.
* `claimable`: whether a reward can be claimed now.
* `informational: true`: a reference figure (perp notional, SOL equivalent, NAV after penalty). Never summed.
* `in_totals` and `exclusion_reason` say whether each leg counts, and if not why: `indicative`, `stale`, `unpriced`,
  `estimated`, `staker_only`, `rewards_not_included`, `informational` or `nested` (counted through a parent position).

## Flags and warnings

`flags` are derived for every position: `excluded_from_totals`, `staker_only`, `unsupported_position_kind`,
`interest_stale`, `oracle_stale`, `incomplete_position`, `carried_forward`, `has_estimated_legs`, `has_indicative_legs`,
`has_stale_legs`, `locked`, `out_of_range`. `warnings` are adapter messages (`code` or `code:detail`). Both are open
enums: new values may appear within v1, and clients must ignore values they don't know.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.