# 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 |             |


---

# 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.essencefinance.io/development/smart-contracts/zen/zenminter.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.
