# Entities ## Project - Initialized by project Create - event CheckInSummonComplete( address indexed baal, address indexed summoner, address indexed shamanAddress, address teamLead, bool sharesOrLoot, uint256 tokenPerSecond, uint256 checkInInterval, uint32[5] valueScalePercs, string projectMetadata ); - ``projectMetadata`` is parsed into - name - clientName - clientUrl - description - imgUrl - links [{label, url}] (keep as string if need be) - Updated by poster call - if tag === project.metadata - parse and replace metadata fields - Model { - name: string - clientName: string - ClientAddress: string (address) - description: string - imgUrl: string - links [{label, url}] (keep as string if need be) - daoAddress: string - summoner: string - shamanAddress: string } ## Shaman - Initialized by project Create - event CheckInSummonComplete( address indexed baal, address indexed summoner, address indexed shamanAddress, address teamLead, bool sharesOrLoot, uint256 tokenPerSecond, uint256 checkInInterval, uint32[5] valueScalePercs, string projectMetadata ); - Updated by updater events - event Mutiny(address from, address to); - event UpdateInterval(uint256 from, uint256 to); - event UpdateTokenPerSecond(uint256 from, uint256 to); - event UpdatePercs(uint32[5] from, uint32[5] to); - Lock is updated by - event Lock(bool isLocked); - Model { - teamLead: string (address) - sharesOrLoot: boolean - tokenPerSecond: string (number) - checkInInterval: string (number) - valueScalePercs: [5]string (numbers) - isLocked: boolean } ## Timeline Event ``` BaseModel: { type: string, userAddress: string (address), createdAt: string (number), ...ClaimEvent | MutinyEvent | UpdateTPS | UpdateInterval | UpdatePercs | AdjustmentEvent | UpdateTPSProposal | UpdateIntervalProposal | UpdatePercsProposal | AdjustmentEventProposal | FlagEvent | ProjectUpdateEvent } ``` Prioritize: Everything that does not require a proposal (ie. Claim, Flag, Update) event Claim( address indexed account, uint256 timestamp, uint256 tokenAmountClaimed, uint64 totalSecondsWorked, uint64[] sessionsTime, uint8[] sessionsValue, string metadata ); ClaimEvent ``` type: "Claim" userAddress: string (address), createdAt: string (number), memberAddress: string, totalSecondsWorked: numbers (number) totalAmountClaimed: string (bigInt) sessionsTime: []numbers sessionsValue: []numbers metadata: string ``` FlagEvent ``` - type: derived from poster tag or Event name - userAddress: derived from sender - createdAt: derived from timestamp - metadata: string, from event, conditional. - Sub-enity specific data