# ZenMinter

## Functions

### constructor

```solidity
function constructor(
    address _core,
    uint256 _annualMaxInflationBasisPoints,
    address _owner,
    address _zenTreasury,
    address _zenRewardsDripper
) public
```

Zen Reserve Stabilizer constructor

#### Parameters

| Name                             | Type    | Description                                                                    |
| -------------------------------- | ------- | ------------------------------------------------------------------------------ |
| `_core`                          | address | Chi Core to reference                                                          |
| `_annualMaxInflationBasisPoints` | uint256 | the max inflation in ZEN circulating supply per year in basis points (1/10000) |
| `_owner`                         | address | the owner, capable of changing the zen minter address.                         |
| `_zenTreasury`                   | address | the zen treasury address used to exclude from circulating supply               |
| `_zenRewardsDripper`             | address | the zen rewards dripper address used to exclude from circulating supply        |

### poke

```solidity
function poke() public
```

update the rate limit per second and buffer cap

### setRateLimitPerSecond

```solidity
function setRateLimitPerSecond(
    uint256 
) external
```

no-op, reverts. Prevent admin or governor from overwriting ideal rate limit

#### Parameters

| Name | Type    | Description |
| ---- | ------- | ----------- |
| \`\` | uint256 |             |

### setBufferCap

```solidity
function setBufferCap(
    uint256 
) external
```

no-op, reverts. Prevent admin or governor from overwriting ideal buffer cap

#### Parameters

| Name | Type    | Description |
| ---- | ------- | ----------- |
| \`\` | uint256 |             |

### mint

```solidity
function mint(
    address to,
    uint256 amount
) external
```

mints ZEN to the target address, subject to rate limit

#### Parameters

| Name     | Type    | Description                |
| -------- | ------- | -------------------------- |
| `to`     | address | the address to send ZEN to |
| `amount` | uint256 | the amount of ZEN to send  |

### setZenTreasury

```solidity
function setZenTreasury(
    address newZenTreasury
) external
```

sets the new ZEN treasury address

#### Parameters

| Name             | Type    | Description |
| ---------------- | ------- | ----------- |
| `newZenTreasury` | address |             |

### setZenRewardsDripper

```solidity
function setZenRewardsDripper(
    address newZenRewardsDripper
) external
```

sets the new ZEN treasury rewards dripper

#### Parameters

| Name                   | Type    | Description |
| ---------------------- | ------- | ----------- |
| `newZenRewardsDripper` | address |             |

### setMinter

```solidity
function setMinter(
    address newMinter
) external
```

changes the ZEN minter address

#### Parameters

| Name        | Type    | Description            |
| ----------- | ------- | ---------------------- |
| `newMinter` | address | the new minter address |

### setAnnualMaxInflationBasisPoints

```solidity
function setAnnualMaxInflationBasisPoints(
    uint256 newAnnualMaxInflationBasisPoints
) external
```

sets the max annual inflation relative to current supply

#### Parameters

| Name                               | Type    | Description                                                   |
| ---------------------------------- | ------- | ------------------------------------------------------------- |
| `newAnnualMaxInflationBasisPoints` | uint256 | the new max inflation % denominated in basis points (1/10000) |

### idealBufferCap

```solidity
function idealBufferCap() public returns (uint256)
```

return the ideal buffer cap based on ZEN circulating supply

### zenCirculatingSupply

```solidity
function zenCirculatingSupply() public returns (uint256)
```

return the ZEN supply, subtracting locked ZEN

### totalSupply

```solidity
function totalSupply() public returns (uint256)
```

alias for zenCirculatingSupply

for compatibility with ERC-20 standard for off-chain 3rd party sites

### isPokeNeeded

```solidity
function isPokeNeeded() external returns (bool)
```

return whether a poke is needed or not i.e. is buffer cap != ideal cap

### \_mint

```solidity
function _mint(
    address to,
    uint256 amount
) internal
```

#### Parameters

| Name     | Type    | Description |
| -------- | ------- | ----------- |
| `to`     | address |             |
| `amount` | uint256 |             |

### \_setAnnualMaxInflationBasisPoints

```solidity
function _setAnnualMaxInflationBasisPoints(
    uint256 newAnnualMaxInflationBasisPoints
) internal
```

#### Parameters

| Name                               | Type    | Description |
| ---------------------------------- | ------- | ----------- |
| `newAnnualMaxInflationBasisPoints` | uint256 |             |
