# IOwnerAllowlist

> Allowlists for extension, TEE machine, and wallet project owners.

> For the complete documentation index, see [llms.txt](/llms.txt). Markdown versions of documentation pages are available by appending `.md` to the page URL.

Source: https://dev.flare.network/fcc/reference/IOwnerAllowlist

Public interface for `OwnerAllowlistFacet` on the [`FlareTeeManager`](/fcc/reference/IFlareTeeManager) diamond.

Three separate allowlists gate who may own FCC resources. None of them update automatically: Flare governance or the extension owner must do it manually.

Allowlist

Who updates it

What it gates

Global extension owners

Flare governance

[`IExtensionManager.register`](/fcc/reference/IExtensionManager) and public extension ownership transfer

Per-extension TEE machine owners

Extension owner

[`IMachineManager.register`](/fcc/reference/IMachineManager) and machine ownership transfer

Per-extension wallet project owners

Extension owner

Wallet project creation and ownership transfer

Each allowlist also has an **allow-all** flag. While that flag is true, the address list is bypassed and any caller is treated as allowed. The `disallowAll*` turns the list back on; it does not wipe the stored addresses.

Inherits shared [`ITeeCommonErrors`](/fcc/reference/ITeeCommonErrors).

## Functions[​](#functions "Direct link to Functions")

### `addAllowedExtensionOwners`[​](#addallowedextensionowners "Direct link to addallowedextensionowners")

Adds a list of allowed extension owners to the global allowlist. Addresses on this list (or any address when allExtensionOwnersAllowed is true) may call IExtensionManager.register() and become the proposed/new owner of a public extension. Emits AllowedExtensionOwnersAdded event.

```
function addAllowedExtensionOwners(        address[] calldata _owners    )        external
```

**Parameters**

-   `_owners`: The list of addresses to add to the allowlist. Can only be called by the Flare governance address.

### `removeAllowedExtensionOwners`[​](#removeallowedextensionowners "Direct link to removeallowedextensionowners")

Removes a list of allowed extension owners from the global allowlist. Emits AllowedExtensionOwnersRemoved event.

```
function removeAllowedExtensionOwners(        address[] calldata _owners    )        external
```

**Parameters**

-   `_owners`: The list of addresses to remove from the allowlist. Can only be called by the Flare governance address.

### `allowAllExtensionOwners`[​](#allowallextensionowners "Direct link to allowallextensionowners")

Opens public extension creation to any caller (the allowlist is bypassed while this flag is true). Emits AllExtensionOwnersAllowed event. Can only be called by the Flare governance address.

```
function allowAllExtensionOwners()        external
```

### `disallowAllExtensionOwners`[​](#disallowallextensionowners "Direct link to disallowallextensionowners")

Re-enables the global extension-owner allowlist (the allowlist is no longer bypassed). Emits AllExtensionOwnersDisallowed event. Can only be called by the Flare governance address.

```
function disallowAllExtensionOwners()        external
```

### `addAllowedTeeMachineOwners`[​](#addallowedteemachineowners "Direct link to addallowedteemachineowners")

Adds a list of allowed TEE machine owners on the specified extension. Emits AllowedTeeMachineOwnersAdded event.

```
function addAllowedTeeMachineOwners(        uint256 _extensionId,        address[] calldata _owners    )        external
```

**Parameters**

-   `_extensionId`: The id of the extension.
-   `_owners`: The list of addresses to add to the allowlist. Can only be called by the extension owner.

### `removeAllowedTeeMachineOwners`[​](#removeallowedteemachineowners "Direct link to removeallowedteemachineowners")

Removes a list of allowed TEE machine owners on the specified extension. Emits AllowedTeeMachineOwnersRemoved event.

```
function removeAllowedTeeMachineOwners(        uint256 _extensionId,        address[] calldata _owners    )        external
```

**Parameters**

-   `_extensionId`: The id of the extension.
-   `_owners`: The list of addresses to remove from the allowlist. Can only be called by the extension owner.

### `addAllowedTeeWalletProjectOwners`[​](#addallowedteewalletprojectowners "Direct link to addallowedteewalletprojectowners")

Adds a list of allowed TEE wallet project owners on the specified extension. Emits AllowedTeeWalletProjectOwnersAdded event.

```
function addAllowedTeeWalletProjectOwners(        uint256 _extensionId,        address[] calldata _owners    )        external
```

**Parameters**

-   `_extensionId`: The id of the extension.
-   `_owners`: The list of addresses to add to the allowlist. Can only be called by the extension owner.

### `removeAllowedTeeWalletProjectOwners`[​](#removeallowedteewalletprojectowners "Direct link to removeallowedteewalletprojectowners")

Removes a list of allowed TEE wallet project owners on the specified extension. Emits AllowedTeeWalletProjectOwnersRemoved event.

```
function removeAllowedTeeWalletProjectOwners(        uint256 _extensionId,        address[] calldata _owners    )        external
```

**Parameters**

-   `_extensionId`: The id of the extension.
-   `_owners`: The list of addresses to remove from the allowlist. Can only be called by the extension owner.

### `allowAllTeeMachineOwners`[​](#allowallteemachineowners "Direct link to allowallteemachineowners")

Allows all addresses to be TEE machine owners on the specified extension. Emits AllTeeMachineOwnersAllowed event.

```
function allowAllTeeMachineOwners(        uint256 _extensionId    )        external
```

**Parameters**

-   `_extensionId`: The id of the extension. Can only be called by the extension owner.

### `disallowAllTeeMachineOwners`[​](#disallowallteemachineowners "Direct link to disallowallteemachineowners")

Disallows all addresses to be TEE machine owners on the specified extension. Emits AllTeeMachineOwnersDisallowed event.

```
function disallowAllTeeMachineOwners(        uint256 _extensionId    )        external
```

**Parameters**

-   `_extensionId`: The id of the extension. Can only be called by the extension owner.

### `allowAllTeeWalletProjectOwners`[​](#allowallteewalletprojectowners "Direct link to allowallteewalletprojectowners")

Allows all addresses to be TEE wallet project owners on the specified extension. Emits AllTeeWalletProjectOwnersAllowed event.

```
function allowAllTeeWalletProjectOwners(        uint256 _extensionId    )        external
```

**Parameters**

-   `_extensionId`: The id of the extension. Can only be called by the extension owner.

### `disallowAllTeeWalletProjectOwners`[​](#disallowallteewalletprojectowners "Direct link to disallowallteewalletprojectowners")

Disallows all addresses to be TEE wallet project owners on the specified extension. Emits AllTeeWalletProjectOwnersDisallowed event.

```
function disallowAllTeeWalletProjectOwners(        uint256 _extensionId    )        external
```

**Parameters**

-   `_extensionId`: The id of the extension. Can only be called by the extension owner.

### `getAllowedExtensionOwners`[​](#getallowedextensionowners "Direct link to getallowedextensionowners")

Returns the list of allowed extension owners (global allowlist).

```
function getAllowedExtensionOwners()        external view        returns (address[] memory _allowedOwners)
```

**Returns**

-   `_allowedOwners`: The list of allowed extension owners.

### `isAllowedExtensionOwner`[​](#isallowedextensionowner "Direct link to isallowedextensionowner")

Returns true if `_owner` is allowed to become a public extension owner.

```
function isAllowedExtensionOwner(        address _owner    )        external view        returns (bool _isAllowed)
```

**Parameters**

-   `_owner`: The address to check.

**Returns**

-   `_isAllowed`: True if `_owner` is on the allowlist or allExtensionOwnersAllowed is true.

### `allExtensionOwnersAllowed`[​](#allextensionownersallowed "Direct link to allextensionownersallowed")

Returns true if the global extension-owner allowlist is bypassed (any address can become a public extension owner).

```
function allExtensionOwnersAllowed()        external view        returns (bool _allAllowed)
```

**Returns**

-   `_allAllowed`: True if the allowlist is bypassed.

### `getAllowedTeeMachineOwners`[​](#getallowedteemachineowners "Direct link to getallowedteemachineowners")

Returns the list of allowed TEE machine owners on the specified extension.

```
function getAllowedTeeMachineOwners(        uint256 _extensionId    )        external view        returns (address[] memory _allowedOwners)
```

**Parameters**

-   `_extensionId`: The id of the extension.

**Returns**

-   `_allowedOwners`: The list of allowed TEE machine owners.

### `getAllowedTeeWalletProjectOwners`[​](#getallowedteewalletprojectowners "Direct link to getallowedteewalletprojectowners")

Returns the list of allowed TEE wallet project owners on the specified extension.

```
function getAllowedTeeWalletProjectOwners(        uint256 _extensionId    )        external view        returns (address[] memory _allowedOwners)
```

**Parameters**

-   `_extensionId`: The id of the extension.

**Returns**

-   `_allowedOwners`: The list of allowed TEE wallet project owners.

### `isAllowedTeeMachineOwner`[​](#isallowedteemachineowner "Direct link to isallowedteemachineowner")

Returns true if the owner is allowed to own a TEE machine on the specified extension.

```
function isAllowedTeeMachineOwner(        uint256 _extensionId,        address _owner    )        external view        returns (bool _isAllowed)
```

**Parameters**

-   `_extensionId`: The id of the extension.
-   `_owner`: The address of the owner.

**Returns**

-   `_isAllowed`: True if the owner is allowed, false otherwise.

### `isAllowedTeeWalletProjectOwner`[​](#isallowedteewalletprojectowner "Direct link to isallowedteewalletprojectowner")

Returns true if the owner is allowed to own a TEE wallet project on the specified extension.

```
function isAllowedTeeWalletProjectOwner(        uint256 _extensionId,        address _owner    )        external view        returns (bool _isAllowed)
```

**Parameters**

-   `_extensionId`: The id of the extension.
-   `_owner`: The address of the owner.

**Returns**

-   `_isAllowed`: True if the owner is allowed, false otherwise.

### `allTeeMachineOwnersAllowed`[​](#allteemachineownersallowed "Direct link to allteemachineownersallowed")

Returns true if all addresses are allowed to own a TEE machine on the specified extension.

```
function allTeeMachineOwnersAllowed(        uint256 _extensionId    )        external view        returns (bool _allAllowed)
```

**Parameters**

-   `_extensionId`: The id of the extension.

**Returns**

-   `_allAllowed`: True if all addresses are allowed, false otherwise.

### `allTeeWalletProjectOwnersAllowed`[​](#allteewalletprojectownersallowed "Direct link to allteewalletprojectownersallowed")

Returns true if all addresses are allowed to own a TEE wallet project on the specified extension.

```
function allTeeWalletProjectOwnersAllowed(        uint256 _extensionId    )        external view        returns (bool _allAllowed)
```

**Parameters**

-   `_extensionId`: The id of the extension.

**Returns**

-   `_allAllowed`: True if all addresses are allowed, false otherwise.

## Events[​](#events "Direct link to Events")

### `AllowedExtensionOwnersAdded`[​](#allowedextensionownersadded "Direct link to allowedextensionownersadded")

```
event AllowedExtensionOwnersAdded(address[] owners)
```

**Parameters**

-   `owners` (`address[] owners`)

### `AllowedExtensionOwnersRemoved`[​](#allowedextensionownersremoved "Direct link to allowedextensionownersremoved")

```
event AllowedExtensionOwnersRemoved(address[] owners)
```

**Parameters**

-   `owners` (`address[] owners`)

### `AllExtensionOwnersAllowed`[​](#allextensionownersallowed-1 "Direct link to allextensionownersallowed-1")

```
event AllExtensionOwnersAllowed()
```

### `AllExtensionOwnersDisallowed`[​](#allextensionownersdisallowed "Direct link to allextensionownersdisallowed")

```
event AllExtensionOwnersDisallowed()
```

### `AllowedTeeMachineOwnersAdded`[​](#allowedteemachineownersadded "Direct link to allowedteemachineownersadded")

```
event AllowedTeeMachineOwnersAdded(uint256 indexed extensionId, address[] owners)
```

**Parameters**

-   `extensionId` (`uint256 indexed extensionId`)
-   `owners` (`address[] owners`)

### `AllowedTeeMachineOwnersRemoved`[​](#allowedteemachineownersremoved "Direct link to allowedteemachineownersremoved")

```
event AllowedTeeMachineOwnersRemoved(uint256 indexed extensionId, address[] owners)
```

**Parameters**

-   `extensionId` (`uint256 indexed extensionId`)
-   `owners` (`address[] owners`)

### `AllowedTeeWalletProjectOwnersAdded`[​](#allowedteewalletprojectownersadded "Direct link to allowedteewalletprojectownersadded")

```
event AllowedTeeWalletProjectOwnersAdded(uint256 indexed extensionId, address[] owners)
```

**Parameters**

-   `extensionId` (`uint256 indexed extensionId`)
-   `owners` (`address[] owners`)

### `AllowedTeeWalletProjectOwnersRemoved`[​](#allowedteewalletprojectownersremoved "Direct link to allowedteewalletprojectownersremoved")

```
event AllowedTeeWalletProjectOwnersRemoved(uint256 indexed extensionId, address[] owners)
```

**Parameters**

-   `extensionId` (`uint256 indexed extensionId`)
-   `owners` (`address[] owners`)

### `AllTeeMachineOwnersAllowed`[​](#allteemachineownersallowed-1 "Direct link to allteemachineownersallowed-1")

```
event AllTeeMachineOwnersAllowed(uint256 indexed extensionId)
```

**Parameters**

-   `extensionId` (`uint256 indexed extensionId`)

### `AllTeeMachineOwnersDisallowed`[​](#allteemachineownersdisallowed "Direct link to allteemachineownersdisallowed")

```
event AllTeeMachineOwnersDisallowed(uint256 indexed extensionId)
```

**Parameters**

-   `extensionId` (`uint256 indexed extensionId`)

### `AllTeeWalletProjectOwnersAllowed`[​](#allteewalletprojectownersallowed-1 "Direct link to allteewalletprojectownersallowed-1")

```
event AllTeeWalletProjectOwnersAllowed(uint256 indexed extensionId)
```

**Parameters**

-   `extensionId` (`uint256 indexed extensionId`)

### `AllTeeWalletProjectOwnersDisallowed`[​](#allteewalletprojectownersdisallowed "Direct link to allteewalletprojectownersdisallowed")

```
event AllTeeWalletProjectOwnersDisallowed(uint256 indexed extensionId)
```

**Parameters**

-   `extensionId` (`uint256 indexed extensionId`)
