syntax = "proto3";

message ChatRestored {
}

message GroupMemberChanged {
  // IDs that were added to the group (including the user).
  repeated string added = 1;
  // IDs that were removed from the group (including the user).
  repeated string removed = 2;
}

message GroupNameChanged {
  // The old name of the group.
  string old_name = 1;
  // The new name of the group.
  string new_name = 2;
}

message GroupUserStateChange {

  // The states a user can have within a group.
  //
  // Note: Must be compatible with the `GroupUserState` enum.
  enum GroupUserState {
    // The user is a member (or creator) of the group.
    MEMBER = 0;
    // The user has been kicked from the group. Implies that the group has been
    // marked as _left_.
    KICKED = 1;
    // The user left the group. Implies that the group has been marked as
    // _left_.
    LEFT = 2;
  }
  // The user's state within the group
  GroupUserState new_user_state = 1;
  

}

message GroupCallStarted {
  // Group Call ID identifying the group call, as defined by the Group Call
  // protocol.
  bytes call_id = 1;
  // Group member (including the creator and the user) who started the group
  // call.
  string started_by = 2;
}

message GroupCallEnded {
  // Group Call ID identifying the group call, as defined by the Group Call
  // protocol.
  bytes call_id = 1;
  // Group member (including the creator and the user) who started the group
  // call.
  string started_by = 2;
}
