# ValidatorRewardPool

## Contents

## Globals

| Var       | Type                        |
| --------- | --------------------------- |
| balanceOf | mapping(address => uint256) |

## Functions

### constructor

No description

**Declaration:**

```solidity
  function constructor(
  ) public Only
```

**Modifiers:**

| Modifier |
| -------- |
| Only     |

### claim

Claim validator reward.

**Declaration:**

```solidity
  function claim(
    address validator,
    uint256 amount
  ) external nonReentrant onlyStakeManager
```

**Modifiers:**

| Modifier         |
| ---------------- |
| nonReentrant     |
| onlyStakeManager |

**Args:**

| Arg         | Type    | Description        |
| ----------- | ------- | ------------------ |
| `validator` | address | Validator address. |
| `amount`    | uint256 | Claim amount.      |

### reward

Reward validator.

**Declaration:**

```solidity
  function reward(
    address validator
  ) external nonReentrant onlyStakeManager
```

**Modifiers:**

| Modifier         |
| ---------------- |
| nonReentrant     |
| onlyStakeManager |

**Args:**

| Arg         | Type    | Description        |
| ----------- | ------- | ------------------ |
| `validator` | address | Validator address. |

### slash

Slash validator and transfer the slashed amount to `address(0)`.

**Declaration:**

```solidity
  function slash(
    address validator,
    uint8 factor
  ) external nonReentrant onlyStakeManager returns (uint256 amount)
```

**Modifiers:**

| Modifier         |
| ---------------- |
| nonReentrant     |
| onlyStakeManager |

**Args:**

| Arg         | Type    | Description        |
| ----------- | ------- | ------------------ |
| `validator` | address | Validator address. |
| `factor`    | uint8   | Slash factor.      |
