1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
//! Types for the *m.room.power_levels* event.

use std::collections::HashMap;

use ruma_identifiers::UserId;

use EventType;

state_event! {
    /// Defines the power levels (privileges) of users in the room.
    pub struct PowerLevelsEvent(PowerLevelsEventContent) {}
}

/// The payload of a `PowerLevelsEvent`.
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct PowerLevelsEventContent {
    /// The level required to ban a user.
    pub ban: u64,

    /// The level required to send specific event types.
    ///
    /// This is a mapping from event type to power level required.
    pub events: HashMap<EventType, u64>,

    /// The default level required to send message events.
    pub events_default: u64,

    /// The level required to invite a user.
    pub invite: u64,

    /// The level required to kick a user.
    pub kick: u64,

    /// The level required to redact an event.
    pub redact: u64,

    /// The default level required to send state events.
    pub state_default: u64,

    /// The power levels for specific users.
    ///
    /// This is a mapping from `user_id` to power level for that user.
    pub users: HashMap<UserId, u64>,

    /// The default power level for every user in the room.
    pub users_default: u64,
}