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