# ITeeCommonErrors

> Shared custom errors for FlareTeeManager facet interfaces.

> 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/ITeeCommonErrors

Shared custom errors used across multiple [`FlareTeeManager`](/fcc/reference/IFlareTeeManager) facet interfaces.

The interface has no functions. It exists so the same error selectors can be declared once and inherited by many facets without "Identifier already declared" when those interfaces are combined into `IFlareTeeManager`.

Facet-specific errors stay on the facet pages ([`IExtensionManager`](/fcc/reference/IExtensionManager), [`IMachineManager`](/fcc/reference/IMachineManager), [`IVerification`](/fcc/reference/IVerification), [`IOperationFees`](/fcc/reference/IOperationFees), [`IOwnerAllowlist`](/fcc/reference/IOwnerAllowlist)).

## Access control[​](#access-control "Direct link to Access control")

### `OnlyOwner`[​](#onlyowner "Direct link to onlyowner")

The caller is not the owner of the resource the function acts on (TEE machine, wallet, or wallet project).

```
error OnlyOwner()
```

### `OnlyExtensionOwner`[​](#onlyextensionowner "Direct link to onlyextensionowner")

The caller is not the owner of the extension.

```
error OnlyExtensionOwner()
```

### `OnlyExtensionOwnerOrOperator`[​](#onlyextensionowneroroperator "Direct link to onlyextensionowneroroperator")

The caller is neither the extension owner nor the optional extension operator. Used for prep steps such as machine-path-list lifecycle, where the real security gate is a later governance threshold.

```
error OnlyExtensionOwnerOrOperator()
```

### `OnlyProposedOwner`[​](#onlyproposedowner "Direct link to onlyproposedowner")

The caller is not the address proposed in a two-step ownership transfer (`proposeNewOwner` / `confirmOwnership`).

```
error OnlyProposedOwner()
```

### `OnlyOwnerOrBackupManager`[​](#onlyownerorbackupmanager "Direct link to onlyownerorbackupmanager")

The caller is neither the wallet project owner nor that project's backup manager.

```
error OnlyOwnerOrBackupManager()
```

### `OnlyProductionOrPausedStatus`[​](#onlyproductionorpausedstatus "Direct link to onlyproductionorpausedstatus")

The wallet is not in `PRODUCTION` or `PAUSED` status. Thrown by Protocol Managed Wallet payment flows that require the wallet to be usable or paused, not uninitialized or banned.

```
error OnlyProductionOrPausedStatus()
```

### `OwnerNotAllowed`[​](#ownernotallowed "Direct link to ownernotallowed")

The address is not on the relevant [`IOwnerAllowlist`](/fcc/reference/IOwnerAllowlist) (extension owner, TEE machine owner, or wallet project owner).

```
error OwnerNotAllowed()
```

### `NotOwnerOrPauser`[​](#notownerorpauser "Direct link to notownerorpauser")

The caller cannot pause: they are not the owner and not a listed pauser for that extension or wallet project.

```
error NotOwnerOrPauser(address caller)
```

**Parameters**

-   `caller`: The address that attempted the pause.

### `NotOwnerOrUnpauser`[​](#notownerorunpauser "Direct link to notownerorunpauser")

The caller cannot unpause: they are not the owner and not a listed unpauser for that extension or wallet project.

```
error NotOwnerOrUnpauser(address caller)
```

**Parameters**

-   `caller`: The address that attempted the unpause.

## Validation[​](#validation "Direct link to Validation")

### `ExtensionIdMismatch`[​](#extensionidmismatch "Direct link to extensionidmismatch")

The TEE machines, wallets, or backups in the call do not all belong to the same extension.

```
error ExtensionIdMismatch()
```

### `TeeMachineNotAvailable`[​](#teemachinenotavailable "Direct link to teemachinenotavailable")

The TEE machine is not in `PRODUCTION`. Thrown when sending non-system instructions or when confirming availability for a machine that is not live.

```
error TeeMachineNotAvailable()
```

### `InvalidKeyType`[​](#invalidkeytype "Direct link to invalidkeytype")

The key type on the proof or backup does not match the wallet project's configured key type.

```
error InvalidKeyType()
```

### `InvalidSigningAlgo`[​](#invalidsigningalgo "Direct link to invalidsigningalgo")

The signing algorithm on the proof or backup does not match the wallet project's configured algorithm.

```
error InvalidSigningAlgo()
```

### `InvalidPublicKey`[​](#invalidpublickey "Direct link to invalidpublickey")

The public key is empty or does not match the key already stored for that wallet.

```
error InvalidPublicKey()
```

### `InvalidDuration`[​](#invalidduration "Direct link to invalidduration")

A governance duration is outside the allowed range. Availability-check validity must be between 1 hour and 365 days, signing-policy validity between 1 and 100 reward epochs, and challenge validity between 1 minute and 1 hour.

```
error InvalidDuration()
```

### `InvalidResponseData`[​](#invalidresponsedata "Direct link to invalidresponsedata")

An availability-check proof's response body failed verification (code hash, platform, signing policy, or state). See [`IVerification.confirmAvailability`](/fcc/reference/IVerification).

```
error InvalidResponseData()
```

### `InvalidThreshold`[​](#invalidthreshold "Direct link to invalidthreshold")

A threshold is zero, larger than the signer or cosigner set, or does not match the stored configuration.

```
error InvalidThreshold()
```

### `InvalidCosigner`[​](#invalidcosigner "Direct link to invalidcosigner")

A cosigner address is zero, or the caller is not a registered wallet cosigner.

```
error InvalidCosigner(address cosigner)
```

**Parameters**

-   `cosigner`: The invalid or unauthorized address.

### `DuplicatedCosigner`[​](#duplicatedcosigner "Direct link to duplicatedcosigner")

The same cosigner address appears more than once in the list.

```
error DuplicatedCosigner(address cosigner)
```

**Parameters**

-   `cosigner`: The duplicated address.

### `InvalidAvailabilityCheckStatus`[​](#invalidavailabilitycheckstatus "Direct link to invalidavailabilitycheckstatus")

The availability-check proof status is not `OK`.

```
error InvalidAvailabilityCheckStatus()
```

### `InvalidWalletStatus`[​](#invalidwalletstatus "Direct link to invalidwalletstatus")

The wallet is not in the status the function requires (for example, not `PRODUCTION` when generating keys).

```
error InvalidWalletStatus()
```

### `LengthsMismatch`[​](#lengthsmismatch "Direct link to lengthsmismatch")

Parallel arrays in the call (for example operation types, commands, and fees) do not have the same length.

```
error LengthsMismatch()
```

### `VersionNotSupported`[​](#versionnotsupported "Direct link to versionnotsupported")

The `(codeHash, platform)` pair is not supported for the extension.

```
error VersionNotSupported()
```

### `AvailabilityCheckTimestampInvalid`[​](#availabilitychecktimestampinvalid "Direct link to availabilitychecktimestampinvalid")

The proof header timestamp is not strictly before `block.timestamp`, is earlier than the stored challenge time, or is before the machine's last status change.

```
error AvailabilityCheckTimestampInvalid()
```

### `KeyTypeNotSupported`[​](#keytypenotsupported "Direct link to keytypenotsupported")

The key type is not on the extension's supported list (or the system-supported list when adding types).

```
error KeyTypeNotSupported(bytes32 keyType)
```

**Parameters**

-   `keyType`: The unsupported key type.

### `InvalidNonce`[​](#invalidnonce "Direct link to invalidnonce")

The nonce is zero, out of range, or does not match the stored nonce for that TEE (machine-path lists and key confirmation).

```
error InvalidNonce()
```

### `InvalidGovernanceHash`[​](#invalidgovernancehash "Direct link to invalidgovernancehash")

The governance hash is unknown, has a zero threshold, or is not the extension's latest hash at machine registration.

```
error InvalidGovernanceHash()
```

### `InvalidAddress`[​](#invalidaddress "Direct link to invalidaddress")

An address in the list is zero, or a stored address does not match the value in the call.

```
error InvalidAddress()
```

### `AddressAlreadyInSet`[​](#addressalreadyinset "Direct link to addressalreadyinset")

The address is already in the allowlist or pauser set.

```
error AddressAlreadyInSet(address addr)
```

**Parameters**

-   `addr`: The address that is already present.

### `AddressNotInSet`[​](#addressnotinset "Direct link to addressnotinset")

The address is not in the allowlist or pauser set, so it cannot be removed.

```
error AddressNotInSet(address addr)
```

**Parameters**

-   `addr`: The address that was not found.

### `NoAddresses`[​](#noaddresses "Direct link to noaddresses")

The call passed an empty address list.

```
error NoAddresses()
```
