PreferredShares

Git Source

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

bytes32 private constant PreferredSharesStorageLocation =
    0x4c4d55bf5bf083c0390e26954b0513b7e3733262a658373aa44cfed72f244700;

Functions

_getPreferredSharesStorage

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

constructor

constructor(address _mezzHub) MezzShares(_mezzHub);

init

Initializes the asset state in a bespoke manner.

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

Parameters

NameTypeDescription

initTreasury

address

params

bytes

The bespoke abi-encoded initialization arguments

__PreferredShares_init

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

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

Returns

NameTypeDescription

<none>

uint256

The liquidation preference value per share

assetClass

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

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

name

Returns the name of the asset as a string

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

symbol

Returns the symbol of the asset as a string

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"))

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

version

Returns the version of the implementation as a uint256

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

supportsInterface

ERC165 support

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

Structs

PreferredSharesStorage

struct PreferredSharesStorage {
    uint256 _liquidationPreferenceValue;
}

Last updated