/* * E1 - Economic Interest * * Units, stake models, holdings, distributions and transfers. Full-depth * per the MVP cut (E1 is the Phase 2 composition proof for the company * form). Stake model shape absorbed from RegistrarChain-ZodSchema * (StakeModelSchema, StakeModelTypeSchema, StakeRepresentsSchema, * TokenStandardSchema). * * provenance: * source: universal-constitution v2-minimal-core-study.md (Extensions register) * licence: Apache-2.0 */ concerto version "^3.0.0" namespace id.entity.ext.e1@0.1.0 import id.entity.core@2.2.0.{Extension, DecisionRule, EthAddress} from https://models.entity.id/core@2.2.0.cto /** Absorbed from ZodSchema StakeModelTypeSchema. */ enum StakeModelType { o SHARES o TOKENS o MEMBERSHIP_UNITS o QUOTAS o LOOT o REPUTATION o NONE } /** Absorbed from ZodSchema StakeRepresentsSchema. */ enum StakeRepresents { o OWNERSHIP o VOTING o ECONOMIC o GOVERNANCE o MEMBERSHIP } /** Absorbed from ZodSchema TokenStandardSchema. */ enum TokenStandard { o ERC_20 o ERC_721 o ERC_1155 o ERC_4626 o CUSTOM } /** * How economic interest is denominated and what it represents. * Absorbed from ZodSchema StakeModelSchema. Transferability is NOT * repeated here - TransferPolicy.restriction is the single source of * truth for whether units move. */ concept StakeModel { o StakeModelType type o Boolean fungible optional o StakeRepresents[] represents o TokenStandard tokenStandard optional o EthAddress tokenAddress optional } /** A class of units (common, preferred, class A quotas, ...). */ concept UnitClass { o String name o Long authorized range=[0,] optional o Boolean voting default=true o Double parValue optional o String currency optional } /** Units of a class held by a named Constituent. */ concept Holding { o String constituentName o String unitClassName o Long units range=[0,] } enum DistributionBasis { o PRO_RATA_UNITS o EQUAL_PER_CONSTITUENT o AS_DECLARED } /** How distributions are decided and shared. */ concept DistributionPolicy { o DistributionBasis basis o DecisionRule declaredBy optional } enum TransferRestriction { o NONE o CONSENT_REQUIRED o RIGHT_OF_FIRST_REFUSAL o PROHIBITED } /** * Whether and how units move between persons. Transferability is derived: * units are transferable unless restriction is PROHIBITED. */ concept TransferPolicy { o TransferRestriction restriction default="NONE" o DecisionRule consentRule optional } /** * E1 Economic Interest - attached to a Constitution via clause 6.2. */ concept EconomicInterestExtension extends Extension { o StakeModel stakeModel o UnitClass[] unitClasses o Holding[] holdings o DistributionPolicy distributions o TransferPolicy transfers }