# ITriggerRewardsUtils

*Interface for GNSTriggerRewards facet (inherits types and also contains functions, events, and custom errors)*

## initializeTriggerRewards

```solidity
function initializeTriggerRewards(uint16 _timeoutBlocks) external
```

*Initializes parameters for trigger rewards facet*

### Parameters

| Name            | Type   | Description                            |
| --------------- | ------ | -------------------------------------- |
| \_timeoutBlocks | uint16 | blocks after which a trigger times out |

## updateTriggerTimeoutBlocks

```solidity
function updateTriggerTimeoutBlocks(uint16 _timeoutBlocks) external
```

*Updates the blocks after which a trigger times out*

### Parameters

| Name            | Type   | Description                            |
| --------------- | ------ | -------------------------------------- |
| \_timeoutBlocks | uint16 | blocks after which a trigger times out |

## distributeTriggerReward

```solidity
function distributeTriggerReward(uint256 _rewardGns) external
```

*Distributes GNS rewards to oracles for a specific trigger*

### Parameters

| Name        | Type    | Description                                      |
| ----------- | ------- | ------------------------------------------------ |
| \_rewardGns | uint256 | total GNS reward to be distributed among oracles |

## claimPendingTriggerRewards

```solidity
function claimPendingTriggerRewards(address _oracle) external
```

*Claims pending GNS trigger rewards for the caller*

### Parameters

| Name     | Type    | Description           |
| -------- | ------- | --------------------- |
| \_oracle | address | address of the oracle |

## getTriggerTimeoutBlocks

```solidity
function getTriggerTimeoutBlocks() external view returns (uint16)
```

*Returns current triggerTimeoutBlocks value*

## hasActiveOrder

```solidity
function hasActiveOrder(uint256 _orderBlock) external view returns (bool)
```

*Checks if an order is active (exists and has not timed out)*

### Parameters

| Name         | Type    | Description               |
| ------------ | ------- | ------------------------- |
| \_orderBlock | uint256 | block number of the order |

## getTriggerPendingRewardsGns

```solidity
function getTriggerPendingRewardsGns(address _oracle) external view returns (uint256)
```

*Returns the pending GNS trigger rewards for an oracle*

### Parameters

| Name     | Type    | Description           |
| -------- | ------- | --------------------- |
| \_oracle | address | address of the oracle |

## TriggerTimeoutBlocksUpdated

```solidity
event TriggerTimeoutBlocksUpdated(uint16 timeoutBlocks)
```

*Emitted when timeoutBlocks is updated*

### Parameters

| Name          | Type   | Description                            |
| ------------- | ------ | -------------------------------------- |
| timeoutBlocks | uint16 | blocks after which a trigger times out |

## TriggerRewarded

```solidity
event TriggerRewarded(uint256 rewardsPerOracleGns, uint256 oraclesCount)
```

*Emitted when trigger rewards are distributed for a specific order*

### Parameters

| Name                | Type    | Description                          |
| ------------------- | ------- | ------------------------------------ |
| rewardsPerOracleGns | uint256 | reward in GNS distributed per oracle |
| oraclesCount        | uint256 | number of oracles rewarded           |

## TriggerRewardsClaimed

```solidity
event TriggerRewardsClaimed(address oracle, uint256 rewardsGns)
```

*Emitted when pending GNS trigger rewards are claimed by an oracle*

### Parameters

| Name       | Type    | Description           |
| ---------- | ------- | --------------------- |
| oracle     | address | address of the oracle |
| rewardsGns | uint256 | GNS rewards claimed   |

## TimeoutBlocksZero

```solidity
error TimeoutBlocksZero()
```

## NoPendingTriggerRewards

```solidity
error NoPendingTriggerRewards()
```
