atrium_api/app/bsky/actor/
defs.rs

1// @generated - This file is generated by atrium-codegen. DO NOT EDIT.
2//!Definitions for the `app.bsky.actor.defs` namespace.
3#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
4#[serde(rename_all = "camelCase")]
5pub struct AdultContentPrefData {
6    pub enabled: bool,
7}
8pub type AdultContentPref = crate::types::Object<AdultContentPrefData>;
9///If set, an active progress guide. Once completed, can be set to undefined. Should have unspecced fields tracking progress.
10#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
11#[serde(rename_all = "camelCase")]
12pub struct BskyAppProgressGuideData {
13    pub guide: String,
14}
15pub type BskyAppProgressGuide = crate::types::Object<BskyAppProgressGuideData>;
16///A grab bag of state that's specific to the bsky.app program. Third-party apps shouldn't use this.
17#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
18#[serde(rename_all = "camelCase")]
19pub struct BskyAppStatePrefData {
20    #[serde(skip_serializing_if = "core::option::Option::is_none")]
21    pub active_progress_guide: core::option::Option<BskyAppProgressGuide>,
22    ///Storage for NUXs the user has encountered.
23    #[serde(skip_serializing_if = "core::option::Option::is_none")]
24    pub nuxs: core::option::Option<Vec<crate::app::bsky::actor::defs::Nux>>,
25    ///An array of tokens which identify nudges (modals, popups, tours, highlight dots) that should be shown to the user.
26    #[serde(skip_serializing_if = "core::option::Option::is_none")]
27    pub queued_nudges: core::option::Option<Vec<String>>,
28}
29pub type BskyAppStatePref = crate::types::Object<BskyAppStatePrefData>;
30#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
31#[serde(rename_all = "camelCase")]
32pub struct ContentLabelPrefData {
33    pub label: String,
34    ///Which labeler does this preference apply to? If undefined, applies globally.
35    #[serde(skip_serializing_if = "core::option::Option::is_none")]
36    pub labeler_did: core::option::Option<crate::types::string::Did>,
37    pub visibility: String,
38}
39pub type ContentLabelPref = crate::types::Object<ContentLabelPrefData>;
40#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
41#[serde(rename_all = "camelCase")]
42pub struct FeedViewPrefData {
43    ///The URI of the feed, or an identifier which describes the feed.
44    pub feed: String,
45    ///Hide quote posts in the feed.
46    #[serde(skip_serializing_if = "core::option::Option::is_none")]
47    pub hide_quote_posts: core::option::Option<bool>,
48    ///Hide replies in the feed.
49    #[serde(skip_serializing_if = "core::option::Option::is_none")]
50    pub hide_replies: core::option::Option<bool>,
51    ///Hide replies in the feed if they do not have this number of likes.
52    #[serde(skip_serializing_if = "core::option::Option::is_none")]
53    pub hide_replies_by_like_count: core::option::Option<i64>,
54    ///Hide replies in the feed if they are not by followed users.
55    #[serde(skip_serializing_if = "core::option::Option::is_none")]
56    pub hide_replies_by_unfollowed: core::option::Option<bool>,
57    ///Hide reposts in the feed.
58    #[serde(skip_serializing_if = "core::option::Option::is_none")]
59    pub hide_reposts: core::option::Option<bool>,
60}
61pub type FeedViewPref = crate::types::Object<FeedViewPrefData>;
62#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
63#[serde(rename_all = "camelCase")]
64pub struct HiddenPostsPrefData {
65    ///A list of URIs of posts the account owner has hidden.
66    pub items: Vec<String>,
67}
68pub type HiddenPostsPref = crate::types::Object<HiddenPostsPrefData>;
69#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
70#[serde(rename_all = "camelCase")]
71pub struct InterestsPrefData {
72    ///A list of tags which describe the account owner's interests gathered during onboarding.
73    pub tags: Vec<String>,
74}
75pub type InterestsPref = crate::types::Object<InterestsPrefData>;
76///The subject's followers whom you also follow
77#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
78#[serde(rename_all = "camelCase")]
79pub struct KnownFollowersData {
80    pub count: i64,
81    pub followers: Vec<ProfileViewBasic>,
82}
83pub type KnownFollowers = crate::types::Object<KnownFollowersData>;
84#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
85#[serde(rename_all = "camelCase")]
86pub struct LabelerPrefItemData {
87    pub did: crate::types::string::Did,
88}
89pub type LabelerPrefItem = crate::types::Object<LabelerPrefItemData>;
90#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
91#[serde(rename_all = "camelCase")]
92pub struct LabelersPrefData {
93    pub labelers: Vec<LabelerPrefItem>,
94}
95pub type LabelersPref = crate::types::Object<LabelersPrefData>;
96///A word that the account owner has muted.
97#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
98#[serde(rename_all = "camelCase")]
99pub struct MutedWordData {
100    ///Groups of users to apply the muted word to. If undefined, applies to all users.
101    #[serde(skip_serializing_if = "core::option::Option::is_none")]
102    pub actor_target: core::option::Option<String>,
103    ///The date and time at which the muted word will expire and no longer be applied.
104    #[serde(skip_serializing_if = "core::option::Option::is_none")]
105    pub expires_at: core::option::Option<crate::types::string::Datetime>,
106    #[serde(skip_serializing_if = "core::option::Option::is_none")]
107    pub id: core::option::Option<String>,
108    ///The intended targets of the muted word.
109    pub targets: Vec<crate::app::bsky::actor::defs::MutedWordTarget>,
110    ///The muted word itself.
111    pub value: String,
112}
113pub type MutedWord = crate::types::Object<MutedWordData>;
114pub type MutedWordTarget = String;
115#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
116#[serde(rename_all = "camelCase")]
117pub struct MutedWordsPrefData {
118    ///A list of words the account owner has muted.
119    pub items: Vec<crate::app::bsky::actor::defs::MutedWord>,
120}
121pub type MutedWordsPref = crate::types::Object<MutedWordsPrefData>;
122///A new user experiences (NUX) storage object
123#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
124#[serde(rename_all = "camelCase")]
125pub struct NuxData {
126    pub completed: bool,
127    ///Arbitrary data for the NUX. The structure is defined by the NUX itself. Limited to 300 characters.
128    #[serde(skip_serializing_if = "core::option::Option::is_none")]
129    pub data: core::option::Option<String>,
130    ///The date and time at which the NUX will expire and should be considered completed.
131    #[serde(skip_serializing_if = "core::option::Option::is_none")]
132    pub expires_at: core::option::Option<crate::types::string::Datetime>,
133    pub id: String,
134}
135pub type Nux = crate::types::Object<NuxData>;
136#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
137#[serde(rename_all = "camelCase")]
138pub struct PersonalDetailsPrefData {
139    ///The birth date of account owner.
140    #[serde(skip_serializing_if = "core::option::Option::is_none")]
141    pub birth_date: core::option::Option<crate::types::string::Datetime>,
142}
143pub type PersonalDetailsPref = crate::types::Object<PersonalDetailsPrefData>;
144///Default post interaction settings for the account. These values should be applied as default values when creating new posts. These refs should mirror the threadgate and postgate records exactly.
145#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
146#[serde(rename_all = "camelCase")]
147pub struct PostInteractionSettingsPrefData {
148    ///Matches postgate record. List of rules defining who can embed this users posts. If value is an empty array or is undefined, no particular rules apply and anyone can embed.
149    #[serde(skip_serializing_if = "core::option::Option::is_none")]
150    pub postgate_embedding_rules: core::option::Option<
151        Vec<crate::types::Union<PostInteractionSettingsPrefPostgateEmbeddingRulesItem>>,
152    >,
153    ///Matches threadgate record. List of rules defining who can reply to this users posts. If value is an empty array, no one can reply. If value is undefined, anyone can reply.
154    #[serde(skip_serializing_if = "core::option::Option::is_none")]
155    pub threadgate_allow_rules: core::option::Option<
156        Vec<crate::types::Union<PostInteractionSettingsPrefThreadgateAllowRulesItem>>,
157    >,
158}
159pub type PostInteractionSettingsPref = crate::types::Object<PostInteractionSettingsPrefData>;
160pub type Preferences = Vec<crate::types::Union<PreferencesItem>>;
161#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
162#[serde(rename_all = "camelCase")]
163pub struct ProfileAssociatedData {
164    #[serde(skip_serializing_if = "core::option::Option::is_none")]
165    pub activity_subscription: core::option::Option<ProfileAssociatedActivitySubscription>,
166    #[serde(skip_serializing_if = "core::option::Option::is_none")]
167    pub chat: core::option::Option<ProfileAssociatedChat>,
168    #[serde(skip_serializing_if = "core::option::Option::is_none")]
169    pub feedgens: core::option::Option<i64>,
170    #[serde(skip_serializing_if = "core::option::Option::is_none")]
171    pub labeler: core::option::Option<bool>,
172    #[serde(skip_serializing_if = "core::option::Option::is_none")]
173    pub lists: core::option::Option<i64>,
174    #[serde(skip_serializing_if = "core::option::Option::is_none")]
175    pub starter_packs: core::option::Option<i64>,
176}
177pub type ProfileAssociated = crate::types::Object<ProfileAssociatedData>;
178#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
179#[serde(rename_all = "camelCase")]
180pub struct ProfileAssociatedActivitySubscriptionData {
181    pub allow_subscriptions: String,
182}
183pub type ProfileAssociatedActivitySubscription =
184    crate::types::Object<ProfileAssociatedActivitySubscriptionData>;
185#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
186#[serde(rename_all = "camelCase")]
187pub struct ProfileAssociatedChatData {
188    pub allow_incoming: String,
189}
190pub type ProfileAssociatedChat = crate::types::Object<ProfileAssociatedChatData>;
191#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
192#[serde(rename_all = "camelCase")]
193pub struct ProfileViewData {
194    #[serde(skip_serializing_if = "core::option::Option::is_none")]
195    pub associated: core::option::Option<ProfileAssociated>,
196    #[serde(skip_serializing_if = "core::option::Option::is_none")]
197    pub avatar: core::option::Option<String>,
198    #[serde(skip_serializing_if = "core::option::Option::is_none")]
199    pub created_at: core::option::Option<crate::types::string::Datetime>,
200    #[serde(skip_serializing_if = "core::option::Option::is_none")]
201    pub description: core::option::Option<String>,
202    pub did: crate::types::string::Did,
203    #[serde(skip_serializing_if = "core::option::Option::is_none")]
204    pub display_name: core::option::Option<String>,
205    pub handle: crate::types::string::Handle,
206    #[serde(skip_serializing_if = "core::option::Option::is_none")]
207    pub indexed_at: core::option::Option<crate::types::string::Datetime>,
208    #[serde(skip_serializing_if = "core::option::Option::is_none")]
209    pub labels: core::option::Option<Vec<crate::com::atproto::label::defs::Label>>,
210    #[serde(skip_serializing_if = "core::option::Option::is_none")]
211    pub pronouns: core::option::Option<String>,
212    #[serde(skip_serializing_if = "core::option::Option::is_none")]
213    pub status: core::option::Option<StatusView>,
214    #[serde(skip_serializing_if = "core::option::Option::is_none")]
215    pub verification: core::option::Option<VerificationState>,
216    #[serde(skip_serializing_if = "core::option::Option::is_none")]
217    pub viewer: core::option::Option<ViewerState>,
218}
219pub type ProfileView = crate::types::Object<ProfileViewData>;
220#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
221#[serde(rename_all = "camelCase")]
222pub struct ProfileViewBasicData {
223    #[serde(skip_serializing_if = "core::option::Option::is_none")]
224    pub associated: core::option::Option<ProfileAssociated>,
225    #[serde(skip_serializing_if = "core::option::Option::is_none")]
226    pub avatar: core::option::Option<String>,
227    #[serde(skip_serializing_if = "core::option::Option::is_none")]
228    pub created_at: core::option::Option<crate::types::string::Datetime>,
229    pub did: crate::types::string::Did,
230    #[serde(skip_serializing_if = "core::option::Option::is_none")]
231    pub display_name: core::option::Option<String>,
232    pub handle: crate::types::string::Handle,
233    #[serde(skip_serializing_if = "core::option::Option::is_none")]
234    pub labels: core::option::Option<Vec<crate::com::atproto::label::defs::Label>>,
235    #[serde(skip_serializing_if = "core::option::Option::is_none")]
236    pub pronouns: core::option::Option<String>,
237    #[serde(skip_serializing_if = "core::option::Option::is_none")]
238    pub status: core::option::Option<StatusView>,
239    #[serde(skip_serializing_if = "core::option::Option::is_none")]
240    pub verification: core::option::Option<VerificationState>,
241    #[serde(skip_serializing_if = "core::option::Option::is_none")]
242    pub viewer: core::option::Option<ViewerState>,
243}
244pub type ProfileViewBasic = crate::types::Object<ProfileViewBasicData>;
245#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
246#[serde(rename_all = "camelCase")]
247pub struct ProfileViewDetailedData {
248    #[serde(skip_serializing_if = "core::option::Option::is_none")]
249    pub associated: core::option::Option<ProfileAssociated>,
250    #[serde(skip_serializing_if = "core::option::Option::is_none")]
251    pub avatar: core::option::Option<String>,
252    #[serde(skip_serializing_if = "core::option::Option::is_none")]
253    pub banner: core::option::Option<String>,
254    #[serde(skip_serializing_if = "core::option::Option::is_none")]
255    pub created_at: core::option::Option<crate::types::string::Datetime>,
256    #[serde(skip_serializing_if = "core::option::Option::is_none")]
257    pub description: core::option::Option<String>,
258    pub did: crate::types::string::Did,
259    #[serde(skip_serializing_if = "core::option::Option::is_none")]
260    pub display_name: core::option::Option<String>,
261    #[serde(skip_serializing_if = "core::option::Option::is_none")]
262    pub followers_count: core::option::Option<i64>,
263    #[serde(skip_serializing_if = "core::option::Option::is_none")]
264    pub follows_count: core::option::Option<i64>,
265    pub handle: crate::types::string::Handle,
266    #[serde(skip_serializing_if = "core::option::Option::is_none")]
267    pub indexed_at: core::option::Option<crate::types::string::Datetime>,
268    #[serde(skip_serializing_if = "core::option::Option::is_none")]
269    pub joined_via_starter_pack:
270        core::option::Option<crate::app::bsky::graph::defs::StarterPackViewBasic>,
271    #[serde(skip_serializing_if = "core::option::Option::is_none")]
272    pub labels: core::option::Option<Vec<crate::com::atproto::label::defs::Label>>,
273    #[serde(skip_serializing_if = "core::option::Option::is_none")]
274    pub pinned_post: core::option::Option<crate::com::atproto::repo::strong_ref::Main>,
275    #[serde(skip_serializing_if = "core::option::Option::is_none")]
276    pub posts_count: core::option::Option<i64>,
277    #[serde(skip_serializing_if = "core::option::Option::is_none")]
278    pub pronouns: core::option::Option<String>,
279    #[serde(skip_serializing_if = "core::option::Option::is_none")]
280    pub status: core::option::Option<StatusView>,
281    #[serde(skip_serializing_if = "core::option::Option::is_none")]
282    pub verification: core::option::Option<VerificationState>,
283    #[serde(skip_serializing_if = "core::option::Option::is_none")]
284    pub viewer: core::option::Option<ViewerState>,
285    #[serde(skip_serializing_if = "core::option::Option::is_none")]
286    pub website: core::option::Option<String>,
287}
288pub type ProfileViewDetailed = crate::types::Object<ProfileViewDetailedData>;
289#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
290#[serde(rename_all = "camelCase")]
291pub struct SavedFeedData {
292    pub id: String,
293    pub pinned: bool,
294    pub r#type: String,
295    pub value: String,
296}
297pub type SavedFeed = crate::types::Object<SavedFeedData>;
298#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
299#[serde(rename_all = "camelCase")]
300pub struct SavedFeedsPrefData {
301    pub pinned: Vec<String>,
302    pub saved: Vec<String>,
303    #[serde(skip_serializing_if = "core::option::Option::is_none")]
304    pub timeline_index: core::option::Option<i64>,
305}
306pub type SavedFeedsPref = crate::types::Object<SavedFeedsPrefData>;
307#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
308#[serde(rename_all = "camelCase")]
309pub struct SavedFeedsPrefV2Data {
310    pub items: Vec<crate::app::bsky::actor::defs::SavedFeed>,
311}
312pub type SavedFeedsPrefV2 = crate::types::Object<SavedFeedsPrefV2Data>;
313#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
314#[serde(rename_all = "camelCase")]
315pub struct StatusViewData {
316    ///An optional embed associated with the status.
317    #[serde(skip_serializing_if = "core::option::Option::is_none")]
318    pub embed: core::option::Option<crate::types::Union<StatusViewEmbedRefs>>,
319    ///The date when this status will expire. The application might choose to no longer return the status after expiration.
320    #[serde(skip_serializing_if = "core::option::Option::is_none")]
321    pub expires_at: core::option::Option<crate::types::string::Datetime>,
322    ///True if the status is not expired, false if it is expired. Only present if expiration was set.
323    #[serde(skip_serializing_if = "core::option::Option::is_none")]
324    pub is_active: core::option::Option<bool>,
325    pub record: crate::types::Unknown,
326    ///The status for the account.
327    pub status: String,
328}
329pub type StatusView = crate::types::Object<StatusViewData>;
330#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
331#[serde(rename_all = "camelCase")]
332pub struct ThreadViewPrefData {
333    ///Show followed users at the top of all replies.
334    #[serde(skip_serializing_if = "core::option::Option::is_none")]
335    pub prioritize_followed_users: core::option::Option<bool>,
336    ///Sorting mode for threads.
337    #[serde(skip_serializing_if = "core::option::Option::is_none")]
338    pub sort: core::option::Option<String>,
339}
340pub type ThreadViewPref = crate::types::Object<ThreadViewPrefData>;
341///Preferences for how verified accounts appear in the app.
342#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
343#[serde(rename_all = "camelCase")]
344pub struct VerificationPrefsData {
345    ///Hide the blue check badges for verified accounts and trusted verifiers.
346    #[serde(skip_serializing_if = "core::option::Option::is_none")]
347    pub hide_badges: core::option::Option<bool>,
348}
349pub type VerificationPrefs = crate::types::Object<VerificationPrefsData>;
350///Represents the verification information about the user this object is attached to.
351#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
352#[serde(rename_all = "camelCase")]
353pub struct VerificationStateData {
354    ///The user's status as a trusted verifier.
355    pub trusted_verifier_status: String,
356    ///All verifications issued by trusted verifiers on behalf of this user. Verifications by untrusted verifiers are not included.
357    pub verifications: Vec<VerificationView>,
358    ///The user's status as a verified account.
359    pub verified_status: String,
360}
361pub type VerificationState = crate::types::Object<VerificationStateData>;
362///An individual verification for an associated subject.
363#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
364#[serde(rename_all = "camelCase")]
365pub struct VerificationViewData {
366    ///Timestamp when the verification was created.
367    pub created_at: crate::types::string::Datetime,
368    ///True if the verification passes validation, otherwise false.
369    pub is_valid: bool,
370    ///The user who issued this verification.
371    pub issuer: crate::types::string::Did,
372    ///The AT-URI of the verification record.
373    pub uri: String,
374}
375pub type VerificationView = crate::types::Object<VerificationViewData>;
376///Metadata about the requesting account's relationship with the subject account. Only has meaningful content for authed requests.
377#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
378#[serde(rename_all = "camelCase")]
379pub struct ViewerStateData {
380    ///This property is present only in selected cases, as an optimization.
381    #[serde(skip_serializing_if = "core::option::Option::is_none")]
382    pub activity_subscription:
383        core::option::Option<crate::app::bsky::notification::defs::ActivitySubscription>,
384    #[serde(skip_serializing_if = "core::option::Option::is_none")]
385    pub blocked_by: core::option::Option<bool>,
386    #[serde(skip_serializing_if = "core::option::Option::is_none")]
387    pub blocking: core::option::Option<String>,
388    #[serde(skip_serializing_if = "core::option::Option::is_none")]
389    pub blocking_by_list: core::option::Option<crate::app::bsky::graph::defs::ListViewBasic>,
390    #[serde(skip_serializing_if = "core::option::Option::is_none")]
391    pub followed_by: core::option::Option<String>,
392    #[serde(skip_serializing_if = "core::option::Option::is_none")]
393    pub following: core::option::Option<String>,
394    ///This property is present only in selected cases, as an optimization.
395    #[serde(skip_serializing_if = "core::option::Option::is_none")]
396    pub known_followers: core::option::Option<KnownFollowers>,
397    #[serde(skip_serializing_if = "core::option::Option::is_none")]
398    pub muted: core::option::Option<bool>,
399    #[serde(skip_serializing_if = "core::option::Option::is_none")]
400    pub muted_by_list: core::option::Option<crate::app::bsky::graph::defs::ListViewBasic>,
401}
402pub type ViewerState = crate::types::Object<ViewerStateData>;
403#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
404#[serde(tag = "$type")]
405pub enum PostInteractionSettingsPrefPostgateEmbeddingRulesItem {
406    #[serde(rename = "app.bsky.feed.postgate#disableRule")]
407    AppBskyFeedPostgateDisableRule(Box<crate::app::bsky::feed::postgate::DisableRule>),
408}
409#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
410#[serde(tag = "$type")]
411pub enum PostInteractionSettingsPrefThreadgateAllowRulesItem {
412    #[serde(rename = "app.bsky.feed.threadgate#mentionRule")]
413    AppBskyFeedThreadgateMentionRule(Box<crate::app::bsky::feed::threadgate::MentionRule>),
414    #[serde(rename = "app.bsky.feed.threadgate#followerRule")]
415    AppBskyFeedThreadgateFollowerRule(Box<crate::app::bsky::feed::threadgate::FollowerRule>),
416    #[serde(rename = "app.bsky.feed.threadgate#followingRule")]
417    AppBskyFeedThreadgateFollowingRule(Box<crate::app::bsky::feed::threadgate::FollowingRule>),
418    #[serde(rename = "app.bsky.feed.threadgate#listRule")]
419    AppBskyFeedThreadgateListRule(Box<crate::app::bsky::feed::threadgate::ListRule>),
420}
421#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
422#[serde(tag = "$type")]
423pub enum PreferencesItem {
424    #[serde(rename = "app.bsky.actor.defs#adultContentPref")]
425    AdultContentPref(Box<AdultContentPref>),
426    #[serde(rename = "app.bsky.actor.defs#contentLabelPref")]
427    ContentLabelPref(Box<ContentLabelPref>),
428    #[serde(rename = "app.bsky.actor.defs#savedFeedsPref")]
429    SavedFeedsPref(Box<SavedFeedsPref>),
430    #[serde(rename = "app.bsky.actor.defs#savedFeedsPrefV2")]
431    SavedFeedsPrefV2(Box<SavedFeedsPrefV2>),
432    #[serde(rename = "app.bsky.actor.defs#personalDetailsPref")]
433    PersonalDetailsPref(Box<PersonalDetailsPref>),
434    #[serde(rename = "app.bsky.actor.defs#feedViewPref")]
435    FeedViewPref(Box<FeedViewPref>),
436    #[serde(rename = "app.bsky.actor.defs#threadViewPref")]
437    ThreadViewPref(Box<ThreadViewPref>),
438    #[serde(rename = "app.bsky.actor.defs#interestsPref")]
439    InterestsPref(Box<InterestsPref>),
440    #[serde(rename = "app.bsky.actor.defs#mutedWordsPref")]
441    MutedWordsPref(Box<MutedWordsPref>),
442    #[serde(rename = "app.bsky.actor.defs#hiddenPostsPref")]
443    HiddenPostsPref(Box<HiddenPostsPref>),
444    #[serde(rename = "app.bsky.actor.defs#bskyAppStatePref")]
445    BskyAppStatePref(Box<BskyAppStatePref>),
446    #[serde(rename = "app.bsky.actor.defs#labelersPref")]
447    LabelersPref(Box<LabelersPref>),
448    #[serde(rename = "app.bsky.actor.defs#postInteractionSettingsPref")]
449    PostInteractionSettingsPref(Box<PostInteractionSettingsPref>),
450    #[serde(rename = "app.bsky.actor.defs#verificationPrefs")]
451    VerificationPrefs(Box<VerificationPrefs>),
452}
453#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
454#[serde(tag = "$type")]
455pub enum StatusViewEmbedRefs {
456    #[serde(rename = "app.bsky.embed.external#view")]
457    AppBskyEmbedExternalView(Box<crate::app::bsky::embed::external::View>),
458}