#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
#[serde(rename_all = "camelCase")]
pub struct DirectConvoMemberData {}
pub type DirectConvoMember = crate::types::Object<DirectConvoMemberData>;
#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
#[serde(rename_all = "camelCase")]
pub struct GroupConvoMemberData {
#[serde(skip_serializing_if = "core::option::Option::is_none")]
pub added_by: core::option::Option<ProfileViewBasic>,
pub role: MemberRole,
}
pub type GroupConvoMember = crate::types::Object<GroupConvoMemberData>;
pub type MemberRole = String;
#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
#[serde(rename_all = "camelCase")]
pub struct PastGroupConvoMemberData {}
pub type PastGroupConvoMember = crate::types::Object<PastGroupConvoMemberData>;
#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
#[serde(rename_all = "camelCase")]
pub struct ProfileViewBasicData {
#[serde(skip_serializing_if = "core::option::Option::is_none")]
pub associated: core::option::Option<
crate::app::bsky::actor::defs::ProfileAssociated,
>,
#[serde(skip_serializing_if = "core::option::Option::is_none")]
pub avatar: core::option::Option<String>,
#[serde(skip_serializing_if = "core::option::Option::is_none")]
pub chat_disabled: core::option::Option<bool>,
#[serde(skip_serializing_if = "core::option::Option::is_none")]
pub created_at: core::option::Option<crate::types::string::Datetime>,
pub did: crate::types::string::Did,
#[serde(skip_serializing_if = "core::option::Option::is_none")]
pub display_name: core::option::Option<String>,
pub handle: crate::types::string::Handle,
#[serde(skip_serializing_if = "core::option::Option::is_none")]
pub kind: core::option::Option<crate::types::Union<ProfileViewBasicKindRefs>>,
#[serde(skip_serializing_if = "core::option::Option::is_none")]
pub labels: core::option::Option<Vec<crate::com::atproto::label::defs::Label>>,
#[serde(skip_serializing_if = "core::option::Option::is_none")]
pub verification: core::option::Option<
crate::app::bsky::actor::defs::VerificationState,
>,
#[serde(skip_serializing_if = "core::option::Option::is_none")]
pub viewer: core::option::Option<crate::app::bsky::actor::defs::ViewerState>,
}
pub type ProfileViewBasic = crate::types::Object<ProfileViewBasicData>;
#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
#[serde(tag = "$type")]
pub enum ProfileViewBasicKindRefs {
#[serde(rename = "chat.bsky.actor.defs#directConvoMember")]
DirectConvoMember(Box<DirectConvoMember>),
#[serde(rename = "chat.bsky.actor.defs#groupConvoMember")]
GroupConvoMember(Box<GroupConvoMember>),
#[serde(rename = "chat.bsky.actor.defs#pastGroupConvoMember")]
PastGroupConvoMember(Box<PastGroupConvoMember>),
}