Namespace id.entity.ext.e1@0.1.0

Compatible with Concerto versions ^3.0.0. Has 11 declarations.

Built on this namespace - the text published at templates.entity.id that these types drive:

Concerto JSON AST PlantUML XML Schema Typescript C# OData JSON Schema GraphQL Java Go Avro Markdown OpenAPI Protobuf Mermaid

Declared Types

      
      import id.entity.ext.e1@0.1.0.StakeModelType from /ext-e1@0.1.0.cto
      import id.entity.ext.e1@0.1.0.StakeRepresents from /ext-e1@0.1.0.cto
      import id.entity.ext.e1@0.1.0.TokenStandard from /ext-e1@0.1.0.cto
      import id.entity.ext.e1@0.1.0.StakeModel from /ext-e1@0.1.0.cto
      import id.entity.ext.e1@0.1.0.UnitClass from /ext-e1@0.1.0.cto
      import id.entity.ext.e1@0.1.0.Holding from /ext-e1@0.1.0.cto
      import id.entity.ext.e1@0.1.0.DistributionBasis from /ext-e1@0.1.0.cto
      import id.entity.ext.e1@0.1.0.DistributionPolicy from /ext-e1@0.1.0.cto
      import id.entity.ext.e1@0.1.0.TransferRestriction from /ext-e1@0.1.0.cto
      import id.entity.ext.e1@0.1.0.TransferPolicy from /ext-e1@0.1.0.cto
      import id.entity.ext.e1@0.1.0.EconomicInterestExtension from /ext-e1@0.1.0.cto
      
      

Dependencies

Source

    /*
 * 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
}