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

# PreferredShares

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

**Inherits:** MezzShares, IPreferredShares

**Author:** Daniel Yamagata & Naveen Ailawadi

Preferred shares are similar to Common Shares but keep track of a liquidation preference value and have a bespoke voting weight. They take preference over common shares during liquidation. Given there is a sufficient balance held by a company's treasury, Preferred Shares will receive a fixed amount of the denomination asset per share before any of the company's denomination asset is distributed pro-rata to equity holders.

*This contract is intended to be deployed by a Treasury instance via the Mezz Deployer*

## State Variables

### PreferredSharesStorageLocation

```solidity
bytes32 private constant PreferredSharesStorageLocation =
    0x4c4d55bf5bf083c0390e26954b0513b7e3733262a658373aa44cfed72f244700;
```

## Functions

### \_getPreferredSharesStorage

```solidity
function _getPreferredSharesStorage() internal pure returns (PreferredSharesStorage storage $);
```

### 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(IAsset, Asset) initializer;
```

**Parameters**

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

### \_\_PreferredShares\_init

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

### liquidationPreferenceValue

Returns the liquidation preference value per share. The value corresponds to how much of the denomination asset per share will be distributed during a company's liquidation

```solidity
function liquidationPreferenceValue() public view virtual returns (uint256);
```

**Returns**

| Name     | Type      | Description                                |
| -------- | --------- | ------------------------------------------ |
| `<none>` | `uint256` | The liquidation preference value per share |

### 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);
```

## Structs

### PreferredSharesStorage

```solidity
struct PreferredSharesStorage {
    uint256 _liquidationPreferenceValue;
}
```


---

# 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/preferredshares.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.
