> 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/mezzshares/commonshares.md).

# CommonShares

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

**Inherits:** MezzShares, ICommonShares

**Author:** Daniel Yamagata & Naveen Ailawadi

Common shares are the most basic type of shares in the Mezzanine Protocol. Common shares will always have a votign weight of one and can be initialized with a number of authorized shares

*This contract is intended to be deployed by the Mezz Deployer. Each company in Mezzanine can only have one class of common shares*

## Functions

### constructor

```solidity
constructor(address _mezzHub) MezzShares(_mezzHub);
```

### init

Initializes the asset state in a bespoke manner.

```solidity
function init(address initTreasury, bytes memory params) external virtual override(Asset, IAsset) initializer;
```

**Parameters**

| Name           | Type      | Description                                      |
| -------------- | --------- | ------------------------------------------------ |
| `initTreasury` | `address` |                                                  |
| `params`       | `bytes`   | The bespoke abi-encoded initialization arguments |

### \_\_CommonShares\_init

*Validates and sets the initial authorized shares*

```solidity
function __CommonShares_init(address initTreasury, bytes memory params) internal virtual onlyInitializing;
```

### assetClass

Returns the 'AssetClass' of the asset as a uint8, defined by the DataTypes.AssetClass enum

```solidity
function assetClass() public pure virtual override(Asset, IAsset) returns (uint8);
```

### name

Returns the name of the asset as a string

```solidity
function name() public view override(MezzShares, IAsset) returns (string memory);
```

### symbol

Returns the symbol of the asset as a string

```solidity
function symbol() public view override(MezzShares, IAsset) returns (string memory);
```

### coreId

Returns the coreId of the implementation as a bytes32

*The core ID is the keccak256 hash of the contract name followed by a version under the following syntax: "mezzanine.coreId.ContractName.vX" For example, the core ID of the 2nd version of the Treasury would be the following: keccak256(abi.encodePacked("mezzanine.coreId.Treasury.v2"))*

```solidity
function coreId() public pure virtual override(MezzShares, ICredentialed) returns (bytes32);
```

### version

Returns the version of the implementation as a uint256

```solidity
function version() public pure virtual override(MezzShares, ICredentialed) returns (uint256);
```

### supportsInterface

*ERC165 support*

```solidity
function supportsInterface(bytes4 interfaceId) public view virtual override(MezzShares, IERC165) returns (bool);
```


---

# 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/mezzshares/commonshares.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.
