> For the complete documentation index, see [llms.txt](https://docs.essencefinance.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.essencefinance.io/development/smart-contracts/core/permissions.md).

# Permissions

## Functions

### constructor

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

### createRole

```solidity
function createRole(
    bytes32 role,
    bytes32 adminRole
) external
```

creates a new role to be maintained

can also be used to update admin of existing role

#### Parameters

| Name        | Type    | Description                  |
| ----------- | ------- | ---------------------------- |
| `role`      | bytes32 | the new role id              |
| `adminRole` | bytes32 | the admin role id for `role` |

### grantMinter

```solidity
function grantMinter(
    address minter
) external
```

grants minter role to address

#### Parameters

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

### grantBurner

```solidity
function grantBurner(
    address burner
) external
```

grants burner role to address

#### Parameters

| Name     | Type    | Description |
| -------- | ------- | ----------- |
| `burner` | address | new burner  |

### grantPCVController

```solidity
function grantPCVController(
    address pcvController
) external
```

grants controller role to address

#### Parameters

| Name            | Type    | Description    |
| --------------- | ------- | -------------- |
| `pcvController` | address | new controller |

### grantGovernor

```solidity
function grantGovernor(
    address governor
) external
```

grants governor role to address

#### Parameters

| Name       | Type    | Description  |
| ---------- | ------- | ------------ |
| `governor` | address | new governor |

### grantGuardian

```solidity
function grantGuardian(
    address guardian
) external
```

grants guardian role to address

#### Parameters

| Name       | Type    | Description  |
| ---------- | ------- | ------------ |
| `guardian` | address | new guardian |

### revokeMinter

```solidity
function revokeMinter(
    address minter
) external
```

revokes minter role from address

#### Parameters

| Name     | Type    | Description |
| -------- | ------- | ----------- |
| `minter` | address | ex minter   |

### revokeBurner

```solidity
function revokeBurner(
    address burner
) external
```

revokes burner role from address

#### Parameters

| Name     | Type    | Description |
| -------- | ------- | ----------- |
| `burner` | address | ex burner   |

### revokePCVController

```solidity
function revokePCVController(
    address pcvController
) external
```

revokes pcvController role from address

#### Parameters

| Name            | Type    | Description      |
| --------------- | ------- | ---------------- |
| `pcvController` | address | ex pcvController |

### revokeGovernor

```solidity
function revokeGovernor(
    address governor
) external
```

revokes governor role from address

#### Parameters

| Name       | Type    | Description |
| ---------- | ------- | ----------- |
| `governor` | address | ex governor |

### revokeGuardian

```solidity
function revokeGuardian(
    address guardian
) external
```

revokes guardian role from address

#### Parameters

| Name       | Type    | Description |
| ---------- | ------- | ----------- |
| `guardian` | address | ex guardian |

### revokeOverride

```solidity
function revokeOverride(
    bytes32 role,
    address account
) external
```

revokes a role from address

#### Parameters

| Name      | Type    | Description                         |
| --------- | ------- | ----------------------------------- |
| `role`    | bytes32 | the role to revoke                  |
| `account` | address | the address to revoke the role from |

### isMinter

```solidity
function isMinter(
    address _address
) external returns (bool)
```

checks if address is a minter

#### Parameters

| Name       | Type    | Description      |
| ---------- | ------- | ---------------- |
| `_address` | address | address to check |

#### Return Values

| Name  | Type | Description                |
| ----- | ---- | -------------------------- |
| `[0]` | bool | true \_address is a minter |

### isBurner

```solidity
function isBurner(
    address _address
) external returns (bool)
```

checks if address is a burner

#### Parameters

| Name       | Type    | Description      |
| ---------- | ------- | ---------------- |
| `_address` | address | address to check |

#### Return Values

| Name  | Type | Description                |
| ----- | ---- | -------------------------- |
| `[0]` | bool | true \_address is a burner |

### isPCVController

```solidity
function isPCVController(
    address _address
) external returns (bool)
```

checks if address is a controller

#### Parameters

| Name       | Type    | Description      |
| ---------- | ------- | ---------------- |
| `_address` | address | address to check |

#### Return Values

| Name  | Type | Description                    |
| ----- | ---- | ------------------------------ |
| `[0]` | bool | true \_address is a controller |

### isGovernor

```solidity
function isGovernor(
    address _address
) public returns (bool)
```

checks if address is a governor

#### Parameters

| Name       | Type    | Description      |
| ---------- | ------- | ---------------- |
| `_address` | address | address to check |

#### Return Values

| Name  | Type | Description                  |
| ----- | ---- | ---------------------------- |
| `[0]` | bool | true \_address is a governor |

### isGuardian

```solidity
function isGuardian(
    address _address
) public returns (bool)
```

checks if address is a guardian

#### Parameters

| Name       | Type    | Description      |
| ---------- | ------- | ---------------- |
| `_address` | address | address to check |

#### Return Values

| Name  | Type | Description                  |
| ----- | ---- | ---------------------------- |
| `[0]` | bool | true \_address is a guardian |

### \_setupGovernor

```solidity
function _setupGovernor(
    address governor
) internal
```

#### Parameters

| Name       | Type    | Description |
| ---------- | ------- | ----------- |
| `governor` | address |             |


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## 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, and the optional `goal` query parameter:

```
GET https://docs.essencefinance.io/development/smart-contracts/core/permissions.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

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.
