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

# IFirewall

*Figment*

> Firewall

This interface exposes methods to accept calls to admin-level functions of an underlying contract.

## Methods

### allowExecutor

```solidity
function allowExecutor(bytes4 _functionSelector, bool _executorCanCall) external nonpayable
```

Sets the permission for a function selector

#### Parameters

| Name               | Type   | Description                                         |
| ------------------ | ------ | --------------------------------------------------- |
| \_functionSelector | bytes4 | Method signature on which the permission is changed |
| \_executorCanCall  | bool   | True if selector is callable by the executor        |

### destination

```solidity
function destination() external view returns (address)
```

Retrieve the destination address

#### Returns

| Name | Type    | Description             |
| ---- | ------- | ----------------------- |
| \_0  | address | The destination address |

### executor

```solidity
function executor() external view returns (address)
```

Retrieve the executor address

#### Returns

| Name | Type    | Description          |
| ---- | ------- | -------------------- |
| \_0  | address | The executor address |

### executorCanCall

```solidity
function executorCanCall(bytes4 _selector) external view returns (bool)
```

Returns true if the executor is allowed to perform a call on the given selector

#### Parameters

| Name       | Type   | Description            |
| ---------- | ------ | ---------------------- |
| \_selector | bytes4 | The selector to verify |

#### Returns

| Name | Type | Description                         |
| ---- | ---- | ----------------------------------- |
| \_0  | bool | True if executor is allowed to call |

### setExecutor

```solidity
function setExecutor(address _newExecutor) external nonpayable
```

Sets the executor address

#### Parameters

| Name          | Type    | Description                  |
| ------------- | ------- | ---------------------------- |
| \_newExecutor | address | New address for the executor |

## Events

### SetDestination

```solidity
event SetDestination(address indexed destination)
```

The stored destination address has been changed

#### Parameters

| Name                  | Type    | Description                 |
| --------------------- | ------- | --------------------------- |
| destination `indexed` | address | The new destination address |

### SetExecutor

```solidity
event SetExecutor(address indexed executor)
```

The stored executor address has been changed

#### Parameters

| Name               | Type    | Description              |
| ------------------ | ------- | ------------------------ |
| executor `indexed` | address | The new executor address |

### SetExecutorPermissions

```solidity
event SetExecutorPermissions(bytes4 selector, bool status)
```

The storage permission for a selector has been changed

#### Parameters

| Name     | Type   | Description                 |
| -------- | ------ | --------------------------- |
| selector | bytes4 | The 4 bytes method selector |
| status   | bool   | True if executor is allowed |


---

# 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.liquidcollective.io/eth/technical-reference/smart-contracts/interfaces/ifirewall.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.
