> For the complete documentation index, see [llms.txt](https://elektro.gitbook.io/elektro-protocol/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://elektro.gitbook.io/elektro-protocol/smart-contracts/natspec-technical-documentation/role-management/roles.md).

# Roles

View Source: @nomisma/elektro-protocol-aux/contracts/backward-compatibility/Roles.sol

**Roles**

Library for managing addresses assigned to a Role. Contract defines struct `Role` that keeps mapping for which address has requested Role

## Structs

### Role

```js
struct Role {
 mapping(address => bool) bearer
}
```

## Functions

* add(struct Roles.Role role, address account)
* remove(struct Roles.Role role, address account)
* has(struct Roles.Role role, address account)

### add

Function to grant role to account. New address is added to `role` mapping

```js
function add(struct Roles.Role role, address account) internal nonpayable
```

**Arguments**

| Name    | Type              | Description                                |
| ------- | ----------------- | ------------------------------------------ |
| role    | struct Roles.Role | Role mapping of current roles to addresses |
| account | address           | to grant role to                           |

### remove

Function to grant role to account. Address is removed from `role` mapping

```js
function remove(struct Roles.Role role, address account) internal nonpayable
```

**Arguments**

| Name    | Type              | Description                                |
| ------- | ----------------- | ------------------------------------------ |
| role    | struct Roles.Role | Role mapping of current roles to addresses |
| account | address           | to remove from the mapping                 |

### has

Function to check if address is present in `roleMapping`

```js
function has(struct Roles.Role role, address account) internal view
returns(bool)
```

**Arguments**

| Name    | Type              | Description                                |
| ------- | ----------------- | ------------------------------------------ |
| role    | struct Roles.Role | Role mapping of current roles to addresses |
| account | address           | to check if its present in the mapping     |
