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