{
  "states": [
    "PENDING",
    "MEMBER",
    "BLOCKED"
  ],
  "traits": [
    "owner(0)",
    "admin(1)",
    "muted(2)",
    "dataview(3)"
  ],
  "readers": [
    {
      "type": "MEMBER",
      "reads": "*",
      "retention": "snapshot"
    }
  ],
  "moves": [
    {
      "event": "Move",
      "from": "OUTSIDER",
      "to": "PENDING",
      "operator": "Self",
      "ops": [
        "C"
      ],
      "alias": "applications",
      "gate": {
        "operator": [
          "owner",
          "admin"
        ]
      }
    },
    {
      "event": "Move",
      "from": "OUTSIDER",
      "to": "MEMBER",
      "operator": "Self",
      "ops": [
        "C"
      ],
      "alias": "auto_join",
      "gate": {
        "operator": [
          "owner"
        ]
      }
    },
    {
      "event": "Move",
      "from": "OUTSIDER",
      "to": "MEMBER",
      "operator": "admin",
      "ops": [
        "C"
      ]
    },
    {
      "event": "Move",
      "from": "OUTSIDER",
      "to": "BLOCKED",
      "operator": "admin",
      "ops": [
        "C"
      ]
    },
    {
      "event": "Move",
      "from": "PENDING",
      "to": "MEMBER",
      "operator": "admin",
      "ops": [
        "C"
      ]
    },
    {
      "event": "Move",
      "from": "PENDING",
      "to": "OUTSIDER",
      "operator": "admin",
      "ops": [
        "C"
      ]
    },
    {
      "event": "Move",
      "from": "MEMBER",
      "to": "OUTSIDER",
      "operator": "Self",
      "ops": [
        "C"
      ]
    },
    {
      "event": "Move",
      "from": "MEMBER",
      "to": "OUTSIDER",
      "operator": "admin",
      "ops": [
        "C"
      ]
    },
    {
      "event": "Move",
      "from": "MEMBER",
      "to": "BLOCKED",
      "operator": "admin",
      "ops": [
        "C"
      ]
    },
    {
      "event": "Move",
      "from": "BLOCKED",
      "to": "OUTSIDER",
      "operator": "admin",
      "ops": [
        "C"
      ]
    }
  ],
  "grants": [
    {
      "event": "Grant",
      "operator": [
        "admin"
      ],
      "scope": [
        "MEMBER"
      ],
      "trait": [
        "muted"
      ]
    },
    {
      "event": "Grant",
      "operator": [
        "owner"
      ],
      "scope": [
        "MEMBER"
      ],
      "trait": [
        "admin"
      ]
    },
    {
      "event": "Grant",
      "operator": [
        "owner"
      ],
      "scope": [
        "OUTSIDER",
        "MEMBER"
      ],
      "trait": [
        "dataview"
      ]
    },
    {
      "event": "Revoke",
      "operator": [
        "admin"
      ],
      "scope": [
        "MEMBER"
      ],
      "trait": [
        "muted"
      ]
    },
    {
      "event": "Revoke",
      "operator": [
        "owner"
      ],
      "scope": [
        "MEMBER"
      ],
      "trait": [
        "admin"
      ]
    },
    {
      "event": "Revoke",
      "operator": [
        "owner"
      ],
      "scope": [
        "OUTSIDER",
        "MEMBER"
      ],
      "trait": [
        "dataview"
      ]
    },
    {
      "event": "Revoke",
      "operator": [
        "Self"
      ],
      "scope": [
        "MEMBER"
      ],
      "trait": [
        "admin"
      ]
    }
  ],
  "transfers": [
    {
      "trait": "owner",
      "scope": [
        "MEMBER"
      ]
    }
  ],
  "slots": [
    {
      "event": "Shared",
      "operator": "admin",
      "ops": [
        "C",
        "U"
      ],
      "key": "topic"
    },
    {
      "event": "Shared",
      "operator": "dataview",
      "ops": [
        "P"
      ],
      "key": "topic"
    },
    {
      "event": "Own",
      "operator": "MEMBER",
      "ops": [
        "C"
      ],
      "key": "profile"
    },
    {
      "event": "Own",
      "operator": "Sender",
      "ops": [
        "U"
      ],
      "key": "profile"
    }
  ],
  "lifecycle": [
    {
      "event": "Pause",
      "operator": "owner",
      "ops": [
        "C"
      ]
    },
    {
      "event": "Resume",
      "operator": "owner",
      "ops": [
        "C"
      ]
    },
    {
      "event": "Migrate",
      "operator": "owner",
      "ops": [
        "C"
      ]
    },
    {
      "event": "Terminate",
      "operator": "owner",
      "ops": [
        "C"
      ]
    }
  ],
  "customs": [
    {
      "event": "cert_revoke",
      "operator": "MEMBER",
      "ops": [
        "C"
      ]
    },
    {
      "event": "message",
      "operator": "MEMBER",
      "ops": [
        "C"
      ]
    },
    {
      "event": "message",
      "operator": "admin",
      "ops": [
        "D"
      ]
    },
    {
      "event": "message",
      "operator": "muted",
      "ops": [
        "_C",
        "_U"
      ]
    },
    {
      "event": "message",
      "operator": "dataview",
      "ops": [
        "P"
      ]
    },
    {
      "event": "message",
      "operator": "Sender",
      "ops": [
        "U",
        "D"
      ]
    },
    {
      "event": "message",
      "operator": "BLOCKED",
      "ops": [
        "_U",
        "_D"
      ]
    },
    {
      "event": "reaction",
      "operator": "MEMBER",
      "ops": [
        "C"
      ]
    },
    {
      "event": "reaction",
      "operator": "Sender",
      "ops": [
        "D"
      ]
    },
    {
      "event": "reaction",
      "operator": "muted",
      "ops": [
        "_C"
      ]
    },
    {
      "event": "reaction",
      "operator": "BLOCKED",
      "ops": [
        "_D"
      ]
    },
    {
      "event": "notice",
      "operator": "admin",
      "ops": [
        "C",
        "D"
      ]
    },
    {
      "event": "rotate",
      "operator": "admin",
      "ops": [
        "C"
      ]
    }
  ],
  "init": [
    {
      "identity": "<owner_pub>",
      "state": "MEMBER",
      "traits": [
        "owner",
        "admin"
      ]
    }
  ]
}
