> For the complete documentation index, see [llms.txt](https://docs.selcier.xyz/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.selcier.xyz/fundamentals/valuation-publishing.md).

# How a valuation gets on-chain

Each share class on Selcier gets a dated, sourced valuation through the ValuationOracle. This page covers its sources, its read interfaces and how it gets published.

A private company's shares trade without a continuous market price, so Selcier gives each share class a **Reference Valuation**: a per-share price accompanied by its source, its date and the document that supports it. Portfolio values, collateral calculations and price discovery can all lean on this reference, but it is never offered as a live market price.

## Three possible sources

| Source                  | Basis                                                                                                    | Who publishes                                                        |
| ----------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------- |
| `PRICED_ROUND`          | The per-share price of the company's latest priced financing, offerings through `OfferingVault` included | The company, or an automatic publication at the close of an offering |
| `INDEPENDENT_VALUATION` | The per-share result of valuing the company independently                                                | The company                                                          |
| `WINDOW_CLEARING`       | The price at which a [Liquidity Window](/markets-and-capital/scheduled-windows.md) cleared               | Nobody by hand: it happens as the window clears                      |

Reads return the latest valuation regardless of source. For the whole history across sources, use on-chain events or `GET /v1/valuations`.

## Reading the `ValuationOracle`

There is one `ValuationOracle` per share class, and two ways to read it.

### Through the Chainlink interface

Support for the Chainlink `AggregatorV3Interface` means existing contracts and tools built for Chainlink feeds can consume a Selcier valuation with no changes.

```solidity
function decimals() external view returns (uint8); // 8
function latestRoundData() external view returns (
    uint80 roundId,
    int256 answer,      // USD per share, 8 decimals
    uint256 startedAt,
    uint256 updatedAt,  // equals asOf of the valuation
    uint80 answeredInRound
);
```

### Through `latestValuation()`

```solidity
function latestValuation() external view returns (
    int256 price,         // USD per share, 8 decimals
    uint8 source,         // 0 PRICED_ROUND, 1 INDEPENDENT_VALUATION, 2 WINDOW_CLEARING
    uint64 asOf,          // timestamp the valuation refers to
    bytes32 documentHash  // anchored supporting document
);
```

Prefer `latestValuation()` when you have the choice, as the number means little without the source and date it returns.

`ValuationPublished(price, source, asOf, documentHash)` accompanies every new valuation.

## Working in shares, not tokens

Prices here are quoted **per share**, so a token balance has to be turned into shares with the token's multiplier before you value a position.

```
shares = balance × uiMultiplier / 1e18
value  = shares × price / 1e8
```

Splits leave values steady as a result. Take a 2-for-1 split: a doubled multiplier meets a halved per-share price from the oracle, and position values hold still. [Shareholder events](/fundamentals/shareholder-events.md) gives the sequence.

## Behavior during a pause

A paused share token leaves its oracle holding the last published value. To keep feeds steady across a split, a company can pause the token around the multiplier change. `latestRoundData()` meanwhile goes on returning that last valuation with its original `updatedAt`, which shows consumers that nothing is being refreshed.

## Where people see it

A source and date always travel with a Reference Valuation in Selcier's products. Where a bare number might otherwise appear, Portfolio could read "Reference Valuation $42.10 per share, Liquidity Window clearing, 14 September 2026". A company about to publish a valuation older than its latest Liquidity Window clearing price gets a warning from the Console first.

| Surface   | Display                                                                                         |
| --------- | ----------------------------------------------------------------------------------------------- |
| Portfolio | Each holding priced from the newest Reference Valuation, whose source and date appear beside it |
| Console   | Complete history split by source, along with the gap between sources                            |
| Explorer  | Each share class's valuation history, open to the public                                        |
| API       | Document hash, date and source from `GET /v1/valuations`                                        |

{% hint style="warning" %}
No one is required to trade at a Reference Valuation, since it is a point of reference tied to a date and never a quote. Integrations relying on it, such as collateral valuation, should inspect `asOf` and enforce a staleness limit of their own.
{% endhint %}

## Who publishes, and how

| Source                                    | Route                                                                                          | Timing                                      |
| ----------------------------------------- | ---------------------------------------------------------------------------------------------- | ------------------------------------------- |
| `PRICED_ROUND` or `INDEPENDENT_VALUATION` | The company, from the Console or with `POST /v1/valuations`, attaching the supporting document | When the company chooses                    |
| `WINDOW_CLEARING`                         | The `LiquidityWindow` contract                                                                 | Automatic, when a window clears with volume |
| `PRICED_ROUND` from an offering           | Automatic, using the offering's price                                                          | When the offering closes                    |

For a company publication, the document's hash goes into the `DisclosureRegistry` first, and the valuation then references that hash. Publishing needs the `PUBLISHER` role, held by the company's `ISSUER_ADMIN`, the `OfferingVault` and the `LiquidityWindow`. A paused share token blocks publication.


---

# 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 by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.selcier.xyz/fundamentals/valuation-publishing.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

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.
