> For the complete documentation index, see [llms.txt](https://docs.indexcoop.com/index-coop-community-handbook/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.indexcoop.com/index-coop-community-handbook/protocol/index-protocol/core-contracts/set-valuer.md).

# Set Valuer

The Set Valuer is a contract that returns the valuation of SetTokens using [Price Oracle](/index-coop-community-handbook/protocol/index-protocol/core-contracts/price-oracle.md) data used in contracts that are external to the system.

## Select View Methods

### calculateSetTokenValuation()

`function calculateSetTokenValuation(ISetToken _setToken, address _quoteAsset) external view returns (uint256)`

Gets the valuation of a SetToken using data from the price oracle. Reverts if no price exists for a component in the SetToken.&#x20;

**Note**: this works for external positions and negative (debt) positions. There is a risk that the valuation is off if airdrops aren't retrieved or debt builds up via interest and its not reflected in the position

| Parameter Name | Type      | Description                            |
| -------------- | --------- | -------------------------------------- |
| \_setToken     | ISetToken | SetToken instance to get valuation     |
| \_quoteAsset   | address   | Address of token to quote valuation in |

| Return Name | Type    | Description                                                      |
| ----------- | ------- | ---------------------------------------------------------------- |
| valuation   | uint256 | SetToken valuation in terms of quote asset in precise units 1e18 |
