# I Price Provider Aggregator

## Methods

### MODERATOR\_ROLE

```solidity
function MODERATOR_ROLE() external view returns (bytes32)
```

#### Returns

| Name | Type    | Description |
| ---- | ------- | ----------- |
| \_0  | bytes32 | undefined   |

### changeActive

```solidity
function changeActive(address priceProvider, address token, bool active) external nonpayable
```

#### Parameters

| Name          | Type    | Description |
| ------------- | ------- | ----------- |
| priceProvider | address | undefined   |
| token         | address | undefined   |
| active        | bool    | undefined   |

### getEvaluation

```solidity
function getEvaluation(address token, uint256 tokenAmount) external view returns (uint256 evaluation)
```

*returns the USD evaluation of token by its `tokenAmount`*

#### Parameters

| Name        | Type    | Description                      |
| ----------- | ------- | -------------------------------- |
| token       | address | the address of token to evaluate |
| tokenAmount | uint256 | the amount of token to evaluate  |

#### Returns

| Name       | Type    | Description |
| ---------- | ------- | ----------- |
| evaluation | uint256 | undefined   |

### getEvaluationSigned

```solidity
function getEvaluationSigned(address token, uint256 tokenAmount, uint256 priceMantissa, uint8 priceDecimals, uint256 validTo, bytes signature) external view returns (uint256 evaluation)
```

*returns the USD evaluation of token by its `tokenAmount`*

#### Parameters

| Name          | Type    | Description                                                  |
| ------------- | ------- | ------------------------------------------------------------ |
| token         | address | the address of token                                         |
| tokenAmount   | uint256 | the amount of token including decimals                       |
| priceMantissa | uint256 | - the price of token (used in verifying the signature)       |
| priceDecimals | uint8   | - the price decimals (used in verifying the signature)       |
| validTo       | uint256 | - the timestamp in seconds (used in verifying the signature) |
| signature     | bytes   | - the backend signature of secp256k1. length is 65 bytes     |

#### Returns

| Name       | Type    | Description |
| ---------- | ------- | ----------- |
| evaluation | uint256 | undefined   |

### getPrice

```solidity
function getPrice(address token) external view returns (uint256 priceMantissa, uint8 priceDecimals)
```

price = priceMantissa / (10 \*\* priceDecimals)

*returns tuple (priceMantissa, priceDecimals)*

#### Parameters

| Name  | Type    | Description                                  |
| ----- | ------- | -------------------------------------------- |
| token | address | the address of token wich price is to return |

#### Returns

| Name          | Type    | Description |
| ------------- | ------- | ----------- |
| priceMantissa | uint256 | undefined   |
| priceDecimals | uint8   | undefined   |

### getPriceSigned

```solidity
function getPriceSigned(address token, uint256 _priceMantissa, uint8 _priceDecimals, uint256 validTo, bytes signature) external view returns (uint256 priceMantissa, uint8 priceDecimals)
```

*returns the price of token multiplied by 10 \*\* priceDecimals given by price provider. price can be calculated as priceMantissa / (10 \*\* priceDecimals) i.e. price = priceMantissa / (10 \*\* priceDecimals)*

#### Parameters

| Name            | Type    | Description                                                  |
| --------------- | ------- | ------------------------------------------------------------ |
| token           | address | the address of token                                         |
| \_priceMantissa | uint256 | - the price of token (used in verifying the signature)       |
| \_priceDecimals | uint8   | - the price decimals (used in verifying the signature)       |
| validTo         | uint256 | - the timestamp in seconds (used in verifying the signature) |
| signature       | bytes   | - the backend signature of secp256k1. length is 65 bytes     |

#### Returns

| Name          | Type    | Description |
| ------------- | ------- | ----------- |
| priceMantissa | uint256 | undefined   |
| priceDecimals | uint8   | undefined   |

### grandModerator

```solidity
function grandModerator(address newModerator) external nonpayable
```

#### Parameters

| Name         | Type    | Description |
| ------------ | ------- | ----------- |
| newModerator | address | undefined   |

### initialize

```solidity
function initialize() external nonpayable
```

### revokeModerator

```solidity
function revokeModerator(address moderator) external nonpayable
```

#### Parameters

| Name      | Type    | Description |
| --------- | ------- | ----------- |
| moderator | address | undefined   |

### setTokenAndPriceProvider

```solidity
function setTokenAndPriceProvider(address token, address priceProvider, bool hasFunctionWithSign) external nonpayable
```

#### Parameters

| Name                | Type    | Description |
| ------------------- | ------- | ----------- |
| token               | address | undefined   |
| priceProvider       | address | undefined   |
| hasFunctionWithSign | bool    | undefined   |

### tokenPriceProvider

```solidity
function tokenPriceProvider(address projectToken) external view returns (address priceProvider, bool hasSignedFunction)
```

#### Parameters

| Name         | Type    | Description |
| ------------ | ------- | ----------- |
| projectToken | address | undefined   |

#### Returns

| Name              | Type    | Description |
| ----------------- | ------- | ----------- |
| priceProvider     | address | undefined   |
| hasSignedFunction | bool    | undefined   |

### usdDecimals

```solidity
function usdDecimals() external view returns (uint8)
```

#### Returns

| Name | Type  | Description |
| ---- | ----- | ----------- |
| \_0  | uint8 | undefined   |

## Events

### ChangeActive

```solidity
event ChangeActive(address indexed who, address indexed priceProvider, address indexed token, bool active)
```

#### Parameters

| Name                    | Type    | Description |
| ----------------------- | ------- | ----------- |
| who `indexed`           | address | undefined   |
| priceProvider `indexed` | address | undefined   |
| token `indexed`         | address | undefined   |
| active                  | bool    | undefined   |

### GrandModeratorRole

```solidity
event GrandModeratorRole(address indexed who, address indexed newModerator)
```

#### Parameters

| Name                   | Type    | Description |
| ---------------------- | ------- | ----------- |
| who `indexed`          | address | undefined   |
| newModerator `indexed` | address | undefined   |

### RevokeModeratorRole

```solidity
event RevokeModeratorRole(address indexed who, address indexed moderator)
```

#### Parameters

| Name                | Type    | Description |
| ------------------- | ------- | ----------- |
| who `indexed`       | address | undefined   |
| moderator `indexed` | address | undefined   |

### SetTokenAndPriceProvider

```solidity
event SetTokenAndPriceProvider(address indexed who, address indexed token, address indexed priceProvider)
```

#### Parameters

| Name                    | Type    | Description |
| ----------------------- | ------- | ----------- |
| who `indexed`           | address | undefined   |
| token `indexed`         | address | undefined   |
| priceProvider `indexed` | address | undefined   |


---

# 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://docs.fringe.fi/smart-contract-documentation/interfaces/ipriceprovideraggregator.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.
