pub struct GroupMember {
pub agent_id: String,
pub user_id: Option<String>,
pub role: GroupRole,
pub state: GroupMemberState,
pub display_name: Option<String>,
pub joined_at: u64,
pub updated_at: u64,
pub added_by: Option<String>,
pub removed_by: Option<String>,
pub kem_public_key_b64: Option<String>,
pub treekem_key_package_b64: Option<String>,
}Expand description
A single member entry in a group roster.
Fields§
§agent_id: StringAgent ID as lowercase hex.
user_id: Option<String>Optional linked user ID (hex).
role: GroupRole§state: GroupMemberState§display_name: Option<String>§joined_at: u64Unix milliseconds when this member was first added.
updated_at: u64Unix milliseconds of the last state/role change.
added_by: Option<String>Agent hex that added this member (None for the owner seed).
removed_by: Option<String>Agent hex that removed/banned this member.
kem_public_key_b64: Option<String>Base64 of the member’s ML-KEM-768 public key, published by them in
GET /agent and in JoinRequestCreated. Required to seal
SecureShareDelivered envelopes to this member. None indicates
we haven’t learned the key yet (e.g. a legacy v2 roster from before
Phase D.2).
treekem_key_package_b64: Option<String>Base64 TreeKEM KeyPackage used to bind this roster entry to its ratchet tree leaf. Required for verified TreeKEM removals; absent for legacy GSS members and old pre-Phase-3 rosters.
Implementations§
Source§impl GroupMember
impl GroupMember
Sourcepub fn new_owner(
agent_id_hex: String,
display_name: Option<String>,
now_ms: u64,
) -> Self
pub fn new_owner( agent_id_hex: String, display_name: Option<String>, now_ms: u64, ) -> Self
Create the initial Owner record for a new group.
Sourcepub fn new_member(
agent_id_hex: String,
display_name: Option<String>,
added_by: Option<String>,
now_ms: u64,
) -> Self
pub fn new_member( agent_id_hex: String, display_name: Option<String>, added_by: Option<String>, now_ms: u64, ) -> Self
Create a regular Member record.
pub fn is_active(&self) -> bool
pub fn is_banned(&self) -> bool
pub fn is_removed(&self) -> bool
Trait Implementations§
Source§impl Clone for GroupMember
impl Clone for GroupMember
Source§fn clone(&self) -> GroupMember
fn clone(&self) -> GroupMember
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for GroupMember
impl Debug for GroupMember
Source§impl<'de> Deserialize<'de> for GroupMember
impl<'de> Deserialize<'de> for GroupMember
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
impl Eq for GroupMember
Source§impl PartialEq for GroupMember
impl PartialEq for GroupMember
Source§fn eq(&self, other: &GroupMember) -> bool
fn eq(&self, other: &GroupMember) -> bool
self and other values to be equal, and is used by ==.Source§impl Serialize for GroupMember
impl Serialize for GroupMember
impl StructuralPartialEq for GroupMember
Auto Trait Implementations§
impl Freeze for GroupMember
impl RefUnwindSafe for GroupMember
impl Send for GroupMember
impl Sync for GroupMember
impl Unpin for GroupMember
impl UnsafeUnpin for GroupMember
impl UnwindSafe for GroupMember
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more