> For the complete documentation index, see [llms.txt](https://docs.mezzanine.xyz/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.mezzanine.xyz/smart-contracts/source-code/core/base/teamcontrolled.md).

# TeamControlled

[Git Source](https://github.com/EntreDevelopers-Lab-Inc/Mezz-Companies/blob/f7a3e84e3dd5bb33c4bd7f77283983f9e8ba20b2/src/core/base/TeamControlled.sol)

**Inherits:** Initializable, ContextUpgradeable, ITeamControlled

**Author:** Daniel Yamagata & Jerry Qi & Naveen Ailawadi

A base contract whose inheritors can enforce ownership-like access control. This access control is non-transferrable and cannot be renounced.

## State Variables

### TeamControlledStorageLocation

```solidity
bytes32 private constant TeamControlledStorageLocation =
    0xb816793abbf480753098fb767c6f1dcec3044cd562367c4739d88482505d6d00;
```

## Functions

### \_getTeamControlledStorage

```solidity
function _getTeamControlledStorage() internal pure returns (TeamControlledStorage storage $);
```

### onlyTeam

*Reverts if the caller is not the 'team'*

```solidity
modifier onlyTeam();
```

### onlyTeamOrAncestor

*Reverts if the caller is not the 'team' or its ancestor*

```solidity
modifier onlyTeamOrAncestor();
```

### \_\_TeamControlled\_init

*Sets the '\_team' variable and validate that it supports the ITeam interface*

```solidity
function __TeamControlled_init(address initTeam) internal virtual onlyInitializing;
```

### team

Returns the address of the team, which act similar to an 'owner' of the contract

```solidity
function team() public view virtual returns (address);
```

### \_isCallerTeam

```solidity
function _isCallerTeam() internal view returns (bool);
```

### \_validateCallerIsTeam

*Reverts if the caller is not the 'team'*

```solidity
function _validateCallerIsTeam() internal view;
```

### \_validateCallerIsTeamOrAncestor

*Reverts if the caller is not the 'team' or an ancestor of the 'team'*

```solidity
function _validateCallerIsTeamOrAncestor() internal view;
```

## Structs

### TeamControlledStorage

```solidity
struct TeamControlledStorage {
    address _team;
}
```


---

# 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.mezzanine.xyz/smart-contracts/source-code/core/base/teamcontrolled.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.
