# TermPriceConsumerV3.sol

## TermPriceConsumerV3

This contract is a centralized price oracle contract that feeds pricing data to all Term Repos

*This contract operates at the protocol level and governs all instances of a Term Repo*

### DEVOPS\_ROLE

```solidity
bytes32 DEVOPS_ROLE
```

### priceFeeds

```solidity
mapping(address => contract AggregatorV3Interface) priceFeeds
```

### constructor

```solidity
constructor() public
```

### initialize

```solidity
function initialize(address devopsWallet_) external
```

Intializes with an array of token addresses, followed with an array of Chainlink aggregator addresses <https://docs.chain.link/docs/ethereum-addresses/>

### addNewTokenPriceFeed

```solidity
function addNewTokenPriceFeed(address token, address tokenPriceAggregator) external
```

#### Parameters

| Name                 | Type    | Description                                              |
| -------------------- | ------- | -------------------------------------------------------- |
| token                | address | The address of the token to add a price feed for         |
| tokenPriceAggregator | address | The proxy price aggregator address for token to be added |

### removeTokenPriceFeed

```solidity
function removeTokenPriceFeed(address token) external
```

#### Parameters

| Name  | Type    | Description                                                   |
| ----- | ------- | ------------------------------------------------------------- |
| token | address | The address of the token whose price feed needs to be removed |

### usdValueOfTokens

```solidity
function usdValueOfTokens(address token, uint256 amount) external view returns (struct ExponentialNoError.Exp)
```

A function to return current market value given a token address and an amount

#### Parameters

| Name   | Type    | Description                       |
| ------ | ------- | --------------------------------- |
| token  | address | The address of the token to query |
| amount | uint256 | The amount tokens to value        |

#### Return Values

| Name | Type                          | Description                                                        |
| ---- | ----------------------------- | ------------------------------------------------------------------ |
| \[0] | struct ExponentialNoError.Exp | The current market value of tokens at the specified amount, in USD |

### \_getLatestPrice

```solidity
function _getLatestPrice(address token) internal view returns (int256)
```

#### Return Values

| Name | Type   | Description                            |
| ---- | ------ | -------------------------------------- |
| \[0] | int256 | The latest price from price aggregator |

### \_getDecimals

```solidity
function _getDecimals(address token) internal view returns (uint8)
```

#### Return Values

| Name | Type  | Description                      |
| ---- | ----- | -------------------------------- |
| \[0] | uint8 | The decimal places in price feed |

### \_authorizeUpgrade

```solidity
function _authorizeUpgrade(address) internal view
```

*required override by the OpenZeppelin UUPS module*


---

# 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://developers.term.finance/0.6.0/protocol-class/termpriceconsumerv3.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.
