> For the complete documentation index, see [llms.txt](https://docs.maple.finance/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.maple.finance/technical-resources/interfaces/pool-permission-manager.md).

# PoolPermissionManager

## Functions

### `admin`

Returns the proxy's admin address.

```solidity
    function admin()
        view
        returns (
            address admin_
        );
```

#### Return Values:

| Index |   Name   |    Type   | Internal Type | Description               |
| :---: | :------: | :-------: | :-----------: | ------------------------- |
|   0   | `admin_` | `address` |   `address`   | The address of the admin. |

### `configurePool`

Configures the permissions of a pool.

```solidity
    function configurePool(
        address poolManager_,
        uint256 permissionLevel_,
        bytes32[] functionIds_,
        uint256[] poolBitmaps_
    )
        nonpayable;
```

#### Parameters:

| Index |        Name        |     Type    | Internal Type | Description |
| :---: | :----------------: | :---------: | :-----------: | ----------- |
|   0   |   `poolManager_`   |  `address`  |   `address`   |             |
|   1   | `permissionLevel_` |  `uint256`  |   `uint256`   |             |
|   2   |   `functionIds_`   | `bytes32[]` |  `bytes32[]`  |             |
|   3   |   `poolBitmaps_`   | `uint256[]` |  `uint256[]`  |             |

### `globals`

Returns the address of the \`MapleGlobals\` contract.

```solidity
    function globals()
        view
        returns (
            address
        );
```

#### Return Values:

| Index | Name |    Type   | Internal Type | Description |
| :---: | :--: | :-------: | :-----------: | ----------- |
|   0   |      | `address` |   `address`   |             |

### `hasPermission`

Checks if the lender has permission to interact with a pool. The function identifier defines the function to check the permission for.

```solidity
    function hasPermission(
        address poolManager_,
        address[] lenders_,
        bytes32 functionId_
    )
        view
        returns (
            bool hasPermission_
        );
```

#### Parameters:

| Index |      Name      |     Type    | Internal Type | Description |
| :---: | :------------: | :---------: | :-----------: | ----------- |
|   0   | `poolManager_` |  `address`  |   `address`   |             |
|   1   |   `lenders_`   | `address[]` |  `address[]`  |             |
|   2   |  `functionId_` |  `bytes32`  |   `bytes32`   |             |

#### Return Values:

| Index |       Name       |  Type  | Internal Type | Description |
| :---: | :--------------: | :----: | :-----------: | ----------- |
|   0   | `hasPermission_` | `bool` |     `bool`    |             |

### `hasPermission`

Checks if the lender has permission to interact with a pool. The function identifier defines the function to check the permission for.

```solidity
    function hasPermission(
        address poolManager_,
        address lender_,
        bytes32 functionId_
    )
        view
        returns (
            bool hasPermission_
        );
```

#### Parameters:

| Index |      Name      |    Type   | Internal Type | Description |
| :---: | :------------: | :-------: | :-----------: | ----------- |
|   0   | `poolManager_` | `address` |   `address`   |             |
|   1   |    `lender_`   | `address` |   `address`   |             |
|   2   |  `functionId_` | `bytes32` |   `bytes32`   |             |

#### Return Values:

| Index |       Name       |  Type  | Internal Type | Description |
| :---: | :--------------: | :----: | :-----------: | ----------- |
|   0   | `hasPermission_` | `bool` |     `bool`    |             |

### `implementation`

Returns the proxy's implementation address.

```solidity
    function implementation()
        view
        returns (
            address implementation_
        );
```

#### Return Values:

| Index |        Name       |    Type   | Internal Type | Description                        |
| :---: | :---------------: | :-------: | :-----------: | ---------------------------------- |
|   0   | `implementation_` | `address` |   `address`   | The address of the implementation. |

### `lenderAllowlist`

Checks if a pool has allowlisted a lender.

```solidity
    function lenderAllowlist(
        address,
        address
    )
        view
        returns (
            bool
        );
```

#### Parameters:

| Index | Name |    Type   | Internal Type | Description |
| :---: | :--: | :-------: | :-----------: | ----------- |
|   0   | \`\` | `address` |   `address`   |             |
|   1   | \`\` | `address` |   `address`   |             |

#### Return Values:

| Index | Name |  Type  | Internal Type | Description |
| :---: | :--: | :----: | :-----------: | ----------- |
|   0   |      | `bool` |     `bool`    |             |

### `lenderBitmaps`

Returns the permission bitmap of a lender.

```solidity
    function lenderBitmaps(
        address
    )
        view
        returns (
            uint256
        );
```

#### Parameters:

| Index | Name |    Type   | Internal Type | Description |
| :---: | :--: | :-------: | :-----------: | ----------- |
|   0   | \`\` | `address` |   `address`   |             |

#### Return Values:

| Index | Name |    Type   | Internal Type | Description |
| :---: | :--: | :-------: | :-----------: | ----------- |
|   0   |      | `uint256` |   `uint256`   |             |

### `permissionAdmins`

Checks if the account is a permission admin.

```solidity
    function permissionAdmins(
        address
    )
        view
        returns (
            bool
        );
```

#### Parameters:

| Index | Name |    Type   | Internal Type | Description |
| :---: | :--: | :-------: | :-----------: | ----------- |
|   0   | \`\` | `address` |   `address`   |             |

#### Return Values:

| Index | Name |  Type  | Internal Type | Description |
| :---: | :--: | :----: | :-----------: | ----------- |
|   0   |      | `bool` |     `bool`    |             |

### `permissionLevels`

Returns the permission level of a pool. Permission levels: private (0), function-level (1), pool-level (2), public (3)

```solidity
    function permissionLevels(
        address
    )
        view
        returns (
            uint256
        );
```

#### Parameters:

| Index | Name |    Type   | Internal Type | Description |
| :---: | :--: | :-------: | :-----------: | ----------- |
|   0   | \`\` | `address` |   `address`   |             |

#### Return Values:

| Index | Name |    Type   | Internal Type | Description |
| :---: | :--: | :-------: | :-----------: | ----------- |
|   0   |      | `uint256` |   `uint256`   |             |

### `poolBitmaps`

Returns a function-specific pool permission bitmap. Return the pool-level permission bitmap if the function identifier is zero.

```solidity
    function poolBitmaps(
        address,
        bytes32
    )
        view
        returns (
            uint256
        );
```

#### Parameters:

| Index | Name |    Type   | Internal Type | Description |
| :---: | :--: | :-------: | :-----------: | ----------- |
|   0   | \`\` | `address` |   `address`   |             |
|   1   | \`\` | `bytes32` |   `bytes32`   |             |

#### Return Values:

| Index | Name |    Type   | Internal Type | Description |
| :---: | :--: | :-------: | :-----------: | ----------- |
|   0   |      | `uint256` |   `uint256`   |             |

### `setLenderAllowlist`

Sets the allowlist status of one or more lenders.

```solidity
    function setLenderAllowlist(
        address poolManager_,
        address[] lenders_,
        bool[] booleans_
    )
        nonpayable;
```

#### Parameters:

| Index |      Name      |     Type    | Internal Type | Description |
| :---: | :------------: | :---------: | :-----------: | ----------- |
|   0   | `poolManager_` |  `address`  |   `address`   |             |
|   1   |   `lenders_`   | `address[]` |  `address[]`  |             |
|   2   |   `booleans_`  |   `bool[]`  |    `bool[]`   |             |

### `setLenderBitmaps`

Sets the permission bitmaps of one or more lenders.

```solidity
    function setLenderBitmaps(
        address[] lenders_,
        uint256[] bitmaps_
    )
        nonpayable;
```

#### Parameters:

| Index |    Name    |     Type    | Internal Type | Description |
| :---: | :--------: | :---------: | :-----------: | ----------- |
|   0   | `lenders_` | `address[]` |  `address[]`  |             |
|   1   | `bitmaps_` | `uint256[]` |  `uint256[]`  |             |

### `setPermissionAdmin`

Sets the permission admin status of an account.

```solidity
    function setPermissionAdmin(
        address permissionAdmin_,
        bool isPermissionAdmin_
    )
        nonpayable;
```

#### Parameters:

| Index |         Name         |    Type   | Internal Type | Description |
| :---: | :------------------: | :-------: | :-----------: | ----------- |
|   0   |  `permissionAdmin_`  | `address` |   `address`   |             |
|   1   | `isPermissionAdmin_` |   `bool`  |     `bool`    |             |

### `setPoolBitmaps`

Sets the permission bitmaps of a pool.

```solidity
    function setPoolBitmaps(
        address poolManager_,
        bytes32[] functionIds_,
        uint256[] bitmaps_
    )
        nonpayable;
```

#### Parameters:

| Index |      Name      |     Type    | Internal Type | Description |
| :---: | :------------: | :---------: | :-----------: | ----------- |
|   0   | `poolManager_` |  `address`  |   `address`   |             |
|   1   | `functionIds_` | `bytes32[]` |  `bytes32[]`  |             |
|   2   |   `bitmaps_`   | `uint256[]` |  `uint256[]`  |             |

### `setPoolPermissionLevel`

Sets the permission level of a pool. Permission levels: private (0), function-level (1), pool-level (2), public (3) NOTE: Bitmaps must be set before setting the permission level to function-level (1) or pool-level (2). Otherwise, the pool will be permissionless by default to un-set lenders.

```solidity
    function setPoolPermissionLevel(
        address poolManager_,
        uint256 permissionLevel_
    )
        nonpayable;
```

#### Parameters:

| Index |        Name        |    Type   | Internal Type | Description |
| :---: | :----------------: | :-------: | :-----------: | ----------- |
|   0   |   `poolManager_`   | `address` |   `address`   |             |
|   1   | `permissionLevel_` | `uint256` |   `uint256`   |             |

## Events

### `LenderAllowlistSet`

Emitted when the lender allowlist is updated.

```solidity
    event LenderAllowlistSet(
        address poolManager,
        address[] lenders,
        bool[] booleans
    );
```

#### Parameters:

| Index |      Name     |     Type    | Internal Type | Description                                        |
| :---: | :-----------: | :---------: | :-----------: | -------------------------------------------------- |
|   0   | `poolManager` |  `address`  |   `address`   | Address of the pool manager.                       |
|   1   |   `lenders`   | `address[]` |  `address[]`  | List of lender addresses to set the allowlist for. |
|   2   |   `booleans`  |   `bool[]`  |    `bool[]`   | List of boolean values.                            |

### `LenderBitmapsSet`

Emitted when lender bitmaps are updated.

```solidity
    event LenderBitmapsSet(
        address[] lenders,
        uint256[] bitmaps
    );
```

#### Parameters:

| Index |    Name   |     Type    | Internal Type | Description                                      |
| :---: | :-------: | :---------: | :-----------: | ------------------------------------------------ |
|   0   | `lenders` | `address[]` |  `address[]`  | List of lender addresses to set the bitmaps for. |
|   1   | `bitmaps` | `uint256[]` |  `uint256[]`  | List of permission bitmaps.                      |

### `PermissionAdminSet`

Emitted when a permission admin has been updated.

```solidity
    event PermissionAdminSet(
        address account,
        bool isAdmin
    );
```

#### Parameters:

| Index |    Name   |    Type   | Internal Type | Description                                                      |
| :---: | :-------: | :-------: | :-----------: | ---------------------------------------------------------------- |
|   0   | `account` | `address` |   `address`   | Address of the updated account.                                  |
|   1   | `isAdmin` |   `bool`  |     `bool`    | \`true\` if the account is a permission admin, \`false\` if not. |

### `PoolBitmapsSet`

Emitted when pool bitmaps are updated.

```solidity
    event PoolBitmapsSet(
        address poolManager,
        bytes32[] functionIds,
        uint256[] bitmaps
    );
```

#### Parameters:

| Index |      Name     |     Type    | Internal Type | Description                                          |
| :---: | :-----------: | :---------: | :-----------: | ---------------------------------------------------- |
|   0   | `poolManager` |  `address`  |   `address`   | Address of the pool manager.                         |
|   1   | `functionIds` | `bytes32[]` |  `bytes32[]`  | List of function identifiers to set the bitmaps for. |
|   2   |   `bitmaps`   | `uint256[]` |  `uint256[]`  | List of permission bitmaps.                          |

### `PoolPermissionLevelSet`

Emitted when the permission level of a pool is updated.

```solidity
    event PoolPermissionLevelSet(
        address poolManager,
        uint256 permissionLevel
    );
```

#### Parameters:

| Index |        Name       |    Type   | Internal Type | Description                  |
| :---: | :---------------: | :-------: | :-----------: | ---------------------------- |
|   0   |   `poolManager`   | `address` |   `address`   | Address of the pool manager. |
|   1   | `permissionLevel` | `uint256` |   `uint256`   | Pool permission level.       |


---

# 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.maple.finance/technical-resources/interfaces/pool-permission-manager.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.
