Case Lifecycle

  1. Draft - Content (text, evidence, witnesses, etc’)

  2. Filed / Open (Confirmation Stage) - valid case open for discussion (allow participant sot add more evidence, witnesses, q&a, etc’)

  1. Decision/Verdict - Decision has been made [action(s) verified / not verified]
  2. Remedy / reaction (reward / punishment / compensation)
  3. Appeal - Reject decision & re-open discussion
  4. Enforcement - verify that the remedy has been applied
  5. Closed
  6. Cancelled (Denied)

Functions

/// Initialize
function initialize(address hub, string memory name_, string calldata uri_, DataTypes.RuleRef[] memory addRules, DataTypes.InputRoleToken[] memory assignRoles, address container) external ;

/// Set Contract URI
function setContractURI(string calldata contract_uri) external;

/// Contract URI
function contractURI() external view returns (string memory);

/// Apply to join a jurisdiction
function applyTojoin(string memory uri) external;

/// Assign Someone to a Role
function roleAssign(address account, string calldata role) external;

/// Unique Members Addresses
function uniqueMembers(string memory role) external view returns (address[] memory);

/// Unique Members Count (w/Token)
function uniqueMembersCount(string memory role) external view returns (uint256);

/// File the Case (Validate & Open Discussion)  --> Open
function stageFile() external;

/// Case Wait For Verdict  --> Pending
function stageWaitForVerdict() external;

/// Case Stage: Place Verdict  --> Closed
function stageVerdict(DataTypes.InputDecision[] calldata verdict, string calldata uri) external;

/// Case Stage: Reject Case --> Cancelled
function stageCancel(string calldata uri) external;

/// Add Post 
function post(string calldata entRole, string calldata uri) external;

/// Set Metadata URI For Role
function setRoleURI(string memory role, string memory _tokenURI) external;

Events

/// Case Stage Change
event Stage(DataTypes.CaseStage stage);

/// Post Verdict
event Verdict(string uri, address account);

/// Case Cancelation Data
event Cancelled(string uri, address account);

/// Rule Reference Added
event RuleAdded(address jurisdiction, uint256 ruleId);

//Rule Confirmed
event RuleConfirmed(uint256 ruleId);

/// Applied to Join the Case
event Application(uint256 indexed id, address account, string uri);

/// General Post / Evidence, etc'
event Post(address indexed account, string entRole, string uri);