Skip to main content

jacquard_api/app_bsky/
actor.rs

1// @generated by jacquard-lexicon. DO NOT EDIT.
2//
3// Lexicon: app.bsky.actor.defs
4//
5// This file was automatically generated from Lexicon schemas.
6// Any manual changes will be overwritten on the next regeneration.
7
8pub mod get_preferences;
9pub mod get_profile;
10pub mod get_profiles;
11pub mod get_suggestions;
12pub mod profile;
13pub mod put_preferences;
14pub mod search_actors;
15pub mod search_actors_typeahead;
16pub mod status;
17
18
19#[allow(unused_imports)]
20use alloc::collections::BTreeMap;
21
22#[allow(unused_imports)]
23use core::marker::PhantomData;
24use jacquard_common::CowStr;
25
26#[allow(unused_imports)]
27use jacquard_common::deps::codegen::unicode_segmentation::UnicodeSegmentation;
28use jacquard_common::types::string::{Did, Handle, AtUri, Cid, Datetime, UriValue};
29use jacquard_common::types::value::Data;
30use jacquard_derive::{IntoStatic, lexicon, open_union};
31use jacquard_lexicon::lexicon::LexiconDoc;
32use jacquard_lexicon::schema::LexiconSchema;
33
34#[allow(unused_imports)]
35use jacquard_lexicon::validation::{ConstraintError, ValidationPath};
36use serde::{Serialize, Deserialize};
37use crate::app_bsky::embed::external::View;
38use crate::app_bsky::feed::postgate::DisableRule;
39use crate::app_bsky::feed::threadgate::FollowerRule;
40use crate::app_bsky::feed::threadgate::FollowingRule;
41use crate::app_bsky::feed::threadgate::ListRule;
42use crate::app_bsky::feed::threadgate::MentionRule;
43use crate::app_bsky::graph::ListViewBasic;
44use crate::app_bsky::graph::StarterPackViewBasic;
45use crate::app_bsky::notification::ActivitySubscription;
46use crate::com_atproto::label::Label;
47use crate::com_atproto::repo::strong_ref::StrongRef;
48use crate::app_bsky::actor;
49
50#[lexicon]
51#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq, IntoStatic)]
52#[serde(rename_all = "camelCase")]
53pub struct AdultContentPref<'a> {
54    /// Defaults to `false`.
55    #[serde(default = "_default_adult_content_pref_enabled")]
56    pub enabled: bool,
57}
58
59/// If set, an active progress guide. Once completed, can be set to undefined. Should have unspecced fields tracking progress.
60
61#[lexicon]
62#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq, IntoStatic, Default)]
63#[serde(rename_all = "camelCase")]
64pub struct BskyAppProgressGuide<'a> {
65    #[serde(borrow)]
66    pub guide: CowStr<'a>,
67}
68
69/// A grab bag of state that's specific to the bsky.app program. Third-party apps shouldn't use this.
70
71#[lexicon]
72#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq, IntoStatic, Default)]
73#[serde(rename_all = "camelCase")]
74pub struct BskyAppStatePref<'a> {
75    #[serde(skip_serializing_if = "Option::is_none")]
76    #[serde(borrow)]
77    pub active_progress_guide: Option<actor::BskyAppProgressGuide<'a>>,
78    ///Storage for NUXs the user has encountered.
79    #[serde(skip_serializing_if = "Option::is_none")]
80    #[serde(borrow)]
81    pub nuxs: Option<Vec<actor::Nux<'a>>>,
82    ///An array of tokens which identify nudges (modals, popups, tours, highlight dots) that should be shown to the user.
83    #[serde(skip_serializing_if = "Option::is_none")]
84    #[serde(borrow)]
85    pub queued_nudges: Option<Vec<CowStr<'a>>>,
86}
87
88
89#[lexicon]
90#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq, IntoStatic, Default)]
91#[serde(rename_all = "camelCase")]
92pub struct ContentLabelPref<'a> {
93    #[serde(borrow)]
94    pub label: CowStr<'a>,
95    ///Which labeler does this preference apply to? If undefined, applies globally.
96    #[serde(skip_serializing_if = "Option::is_none")]
97    #[serde(borrow)]
98    pub labeler_did: Option<Did<'a>>,
99    #[serde(borrow)]
100    pub visibility: ContentLabelPrefVisibility<'a>,
101}
102
103
104#[derive(Debug, Clone, PartialEq, Eq, Hash)]
105pub enum ContentLabelPrefVisibility<'a> {
106    Ignore,
107    Show,
108    Warn,
109    Hide,
110    Other(CowStr<'a>),
111}
112
113impl<'a> ContentLabelPrefVisibility<'a> {
114    pub fn as_str(&self) -> &str {
115        match self {
116            Self::Ignore => "ignore",
117            Self::Show => "show",
118            Self::Warn => "warn",
119            Self::Hide => "hide",
120            Self::Other(s) => s.as_ref(),
121        }
122    }
123}
124
125impl<'a> From<&'a str> for ContentLabelPrefVisibility<'a> {
126    fn from(s: &'a str) -> Self {
127        match s {
128            "ignore" => Self::Ignore,
129            "show" => Self::Show,
130            "warn" => Self::Warn,
131            "hide" => Self::Hide,
132            _ => Self::Other(CowStr::from(s)),
133        }
134    }
135}
136
137impl<'a> From<String> for ContentLabelPrefVisibility<'a> {
138    fn from(s: String) -> Self {
139        match s.as_str() {
140            "ignore" => Self::Ignore,
141            "show" => Self::Show,
142            "warn" => Self::Warn,
143            "hide" => Self::Hide,
144            _ => Self::Other(CowStr::from(s)),
145        }
146    }
147}
148
149impl<'a> core::fmt::Display for ContentLabelPrefVisibility<'a> {
150    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
151        write!(f, "{}", self.as_str())
152    }
153}
154
155impl<'a> AsRef<str> for ContentLabelPrefVisibility<'a> {
156    fn as_ref(&self) -> &str {
157        self.as_str()
158    }
159}
160
161impl<'a> serde::Serialize for ContentLabelPrefVisibility<'a> {
162    fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
163    where
164        S: serde::Serializer,
165    {
166        serializer.serialize_str(self.as_str())
167    }
168}
169
170impl<'de, 'a> serde::Deserialize<'de> for ContentLabelPrefVisibility<'a>
171where
172    'de: 'a,
173{
174    fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
175    where
176        D: serde::Deserializer<'de>,
177    {
178        let s = <&'de str>::deserialize(deserializer)?;
179        Ok(Self::from(s))
180    }
181}
182
183impl<'a> Default for ContentLabelPrefVisibility<'a> {
184    fn default() -> Self {
185        Self::Other(Default::default())
186    }
187}
188
189impl jacquard_common::IntoStatic for ContentLabelPrefVisibility<'_> {
190    type Output = ContentLabelPrefVisibility<'static>;
191    fn into_static(self) -> Self::Output {
192        match self {
193            ContentLabelPrefVisibility::Ignore => ContentLabelPrefVisibility::Ignore,
194            ContentLabelPrefVisibility::Show => ContentLabelPrefVisibility::Show,
195            ContentLabelPrefVisibility::Warn => ContentLabelPrefVisibility::Warn,
196            ContentLabelPrefVisibility::Hide => ContentLabelPrefVisibility::Hide,
197            ContentLabelPrefVisibility::Other(v) => {
198                ContentLabelPrefVisibility::Other(v.into_static())
199            }
200        }
201    }
202}
203
204/// Read-only preference containing value(s) inferred from the user's declared birthdate. Absence of this preference object in the response indicates that the user has not made a declaration.
205
206#[lexicon]
207#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq, IntoStatic, Default)]
208#[serde(rename_all = "camelCase")]
209pub struct DeclaredAgePref<'a> {
210    ///Indicates if the user has declared that they are over 13 years of age.
211    #[serde(skip_serializing_if = "Option::is_none")]
212    pub is_over_age13: Option<bool>,
213    ///Indicates if the user has declared that they are over 16 years of age.
214    #[serde(skip_serializing_if = "Option::is_none")]
215    pub is_over_age16: Option<bool>,
216    ///Indicates if the user has declared that they are over 18 years of age.
217    #[serde(skip_serializing_if = "Option::is_none")]
218    pub is_over_age18: Option<bool>,
219}
220
221
222#[lexicon]
223#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq, IntoStatic, Default)]
224#[serde(rename_all = "camelCase")]
225pub struct FeedViewPref<'a> {
226    ///The URI of the feed, or an identifier which describes the feed.
227    #[serde(borrow)]
228    pub feed: CowStr<'a>,
229    ///Hide quote posts in the feed.
230    #[serde(skip_serializing_if = "Option::is_none")]
231    pub hide_quote_posts: Option<bool>,
232    ///Hide replies in the feed.
233    #[serde(skip_serializing_if = "Option::is_none")]
234    pub hide_replies: Option<bool>,
235    ///Hide replies in the feed if they do not have this number of likes.
236    #[serde(skip_serializing_if = "Option::is_none")]
237    pub hide_replies_by_like_count: Option<i64>,
238    ///Hide replies in the feed if they are not by followed users.  Defaults to `true`.
239    #[serde(skip_serializing_if = "Option::is_none")]
240    #[serde(default = "_default_feed_view_pref_hide_replies_by_unfollowed")]
241    pub hide_replies_by_unfollowed: Option<bool>,
242    ///Hide reposts in the feed.
243    #[serde(skip_serializing_if = "Option::is_none")]
244    pub hide_reposts: Option<bool>,
245}
246
247
248#[lexicon]
249#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq, IntoStatic)]
250#[serde(rename_all = "camelCase")]
251pub struct HiddenPostsPref<'a> {
252    ///A list of URIs of posts the account owner has hidden.
253    #[serde(borrow)]
254    pub items: Vec<AtUri<'a>>,
255}
256
257
258#[lexicon]
259#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq, IntoStatic)]
260#[serde(rename_all = "camelCase")]
261pub struct InterestsPref<'a> {
262    ///A list of tags which describe the account owner's interests gathered during onboarding.
263    #[serde(borrow)]
264    pub tags: Vec<CowStr<'a>>,
265}
266
267/// The subject's followers whom you also follow
268
269#[lexicon]
270#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq, IntoStatic)]
271#[serde(rename_all = "camelCase")]
272pub struct KnownFollowers<'a> {
273    pub count: i64,
274    #[serde(borrow)]
275    pub followers: Vec<actor::ProfileViewBasic<'a>>,
276}
277
278
279#[lexicon]
280#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq, IntoStatic)]
281#[serde(rename_all = "camelCase")]
282pub struct LabelerPrefItem<'a> {
283    #[serde(borrow)]
284    pub did: Did<'a>,
285}
286
287
288#[lexicon]
289#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq, IntoStatic)]
290#[serde(rename_all = "camelCase")]
291pub struct LabelersPref<'a> {
292    #[serde(borrow)]
293    pub labelers: Vec<actor::LabelerPrefItem<'a>>,
294}
295
296/// Preferences for live events.
297
298#[lexicon]
299#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq, IntoStatic)]
300#[serde(rename_all = "camelCase")]
301pub struct LiveEventPreferences<'a> {
302    ///A list of feed IDs that the user has hidden from live events.
303    #[serde(skip_serializing_if = "Option::is_none")]
304    #[serde(borrow)]
305    pub hidden_feed_ids: Option<Vec<CowStr<'a>>>,
306    ///Whether to hide all feeds from live events.  Defaults to `false`.
307    #[serde(skip_serializing_if = "Option::is_none")]
308    #[serde(default = "_default_live_event_preferences_hide_all_feeds")]
309    pub hide_all_feeds: Option<bool>,
310}
311
312/// A word that the account owner has muted.
313
314#[lexicon]
315#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq, IntoStatic)]
316#[serde(rename_all = "camelCase")]
317pub struct MutedWord<'a> {
318    ///Groups of users to apply the muted word to. If undefined, applies to all users.
319    #[serde(skip_serializing_if = "Option::is_none")]
320    #[serde(borrow)]
321    pub actor_target: Option<MutedWordActorTarget<'a>>,
322    ///The date and time at which the muted word will expire and no longer be applied.
323    #[serde(skip_serializing_if = "Option::is_none")]
324    pub expires_at: Option<Datetime>,
325    #[serde(skip_serializing_if = "Option::is_none")]
326    #[serde(borrow)]
327    pub id: Option<CowStr<'a>>,
328    ///The intended targets of the muted word.
329    #[serde(borrow)]
330    pub targets: Vec<actor::MutedWordTarget<'a>>,
331    ///The muted word itself.
332    #[serde(borrow)]
333    pub value: CowStr<'a>,
334}
335
336/// Groups of users to apply the muted word to. If undefined, applies to all users.
337
338#[derive(Debug, Clone, PartialEq, Eq, Hash)]
339pub enum MutedWordActorTarget<'a> {
340    All,
341    ExcludeFollowing,
342    Other(CowStr<'a>),
343}
344
345impl<'a> MutedWordActorTarget<'a> {
346    pub fn as_str(&self) -> &str {
347        match self {
348            Self::All => "all",
349            Self::ExcludeFollowing => "exclude-following",
350            Self::Other(s) => s.as_ref(),
351        }
352    }
353}
354
355impl<'a> From<&'a str> for MutedWordActorTarget<'a> {
356    fn from(s: &'a str) -> Self {
357        match s {
358            "all" => Self::All,
359            "exclude-following" => Self::ExcludeFollowing,
360            _ => Self::Other(CowStr::from(s)),
361        }
362    }
363}
364
365impl<'a> From<String> for MutedWordActorTarget<'a> {
366    fn from(s: String) -> Self {
367        match s.as_str() {
368            "all" => Self::All,
369            "exclude-following" => Self::ExcludeFollowing,
370            _ => Self::Other(CowStr::from(s)),
371        }
372    }
373}
374
375impl<'a> core::fmt::Display for MutedWordActorTarget<'a> {
376    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
377        write!(f, "{}", self.as_str())
378    }
379}
380
381impl<'a> AsRef<str> for MutedWordActorTarget<'a> {
382    fn as_ref(&self) -> &str {
383        self.as_str()
384    }
385}
386
387impl<'a> serde::Serialize for MutedWordActorTarget<'a> {
388    fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
389    where
390        S: serde::Serializer,
391    {
392        serializer.serialize_str(self.as_str())
393    }
394}
395
396impl<'de, 'a> serde::Deserialize<'de> for MutedWordActorTarget<'a>
397where
398    'de: 'a,
399{
400    fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
401    where
402        D: serde::Deserializer<'de>,
403    {
404        let s = <&'de str>::deserialize(deserializer)?;
405        Ok(Self::from(s))
406    }
407}
408
409impl<'a> Default for MutedWordActorTarget<'a> {
410    fn default() -> Self {
411        Self::Other(Default::default())
412    }
413}
414
415impl jacquard_common::IntoStatic for MutedWordActorTarget<'_> {
416    type Output = MutedWordActorTarget<'static>;
417    fn into_static(self) -> Self::Output {
418        match self {
419            MutedWordActorTarget::All => MutedWordActorTarget::All,
420            MutedWordActorTarget::ExcludeFollowing => {
421                MutedWordActorTarget::ExcludeFollowing
422            }
423            MutedWordActorTarget::Other(v) => {
424                MutedWordActorTarget::Other(v.into_static())
425            }
426        }
427    }
428}
429
430
431#[derive(Debug, Clone, PartialEq, Eq, Hash)]
432pub enum MutedWordTarget<'a> {
433    Content,
434    Tag,
435    Other(CowStr<'a>),
436}
437
438impl<'a> MutedWordTarget<'a> {
439    pub fn as_str(&self) -> &str {
440        match self {
441            Self::Content => "content",
442            Self::Tag => "tag",
443            Self::Other(s) => s.as_ref(),
444        }
445    }
446}
447
448impl<'a> From<&'a str> for MutedWordTarget<'a> {
449    fn from(s: &'a str) -> Self {
450        match s {
451            "content" => Self::Content,
452            "tag" => Self::Tag,
453            _ => Self::Other(CowStr::from(s)),
454        }
455    }
456}
457
458impl<'a> From<String> for MutedWordTarget<'a> {
459    fn from(s: String) -> Self {
460        match s.as_str() {
461            "content" => Self::Content,
462            "tag" => Self::Tag,
463            _ => Self::Other(CowStr::from(s)),
464        }
465    }
466}
467
468impl<'a> AsRef<str> for MutedWordTarget<'a> {
469    fn as_ref(&self) -> &str {
470        self.as_str()
471    }
472}
473
474impl<'a> core::fmt::Display for MutedWordTarget<'a> {
475    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
476        write!(f, "{}", self.as_str())
477    }
478}
479
480impl<'a> serde::Serialize for MutedWordTarget<'a> {
481    fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
482    where
483        S: serde::Serializer,
484    {
485        serializer.serialize_str(self.as_str())
486    }
487}
488
489impl<'de, 'a> serde::Deserialize<'de> for MutedWordTarget<'a>
490where
491    'de: 'a,
492{
493    fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
494    where
495        D: serde::Deserializer<'de>,
496    {
497        let s = <&'de str>::deserialize(deserializer)?;
498        Ok(Self::from(s))
499    }
500}
501
502impl jacquard_common::IntoStatic for MutedWordTarget<'_> {
503    type Output = MutedWordTarget<'static>;
504    fn into_static(self) -> Self::Output {
505        match self {
506            MutedWordTarget::Content => MutedWordTarget::Content,
507            MutedWordTarget::Tag => MutedWordTarget::Tag,
508            MutedWordTarget::Other(v) => MutedWordTarget::Other(v.into_static()),
509        }
510    }
511}
512
513
514#[lexicon]
515#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq, IntoStatic)]
516#[serde(rename_all = "camelCase")]
517pub struct MutedWordsPref<'a> {
518    ///A list of words the account owner has muted.
519    #[serde(borrow)]
520    pub items: Vec<actor::MutedWord<'a>>,
521}
522
523/// A new user experiences (NUX) storage object
524
525#[lexicon]
526#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq, IntoStatic)]
527#[serde(rename_all = "camelCase")]
528pub struct Nux<'a> {
529    /// Defaults to `false`.
530    #[serde(default = "_default_nux_completed")]
531    pub completed: bool,
532    ///Arbitrary data for the NUX. The structure is defined by the NUX itself. Limited to 300 characters.
533    #[serde(skip_serializing_if = "Option::is_none")]
534    #[serde(borrow)]
535    pub data: Option<CowStr<'a>>,
536    ///The date and time at which the NUX will expire and should be considered completed.
537    #[serde(skip_serializing_if = "Option::is_none")]
538    pub expires_at: Option<Datetime>,
539    #[serde(borrow)]
540    pub id: CowStr<'a>,
541}
542
543
544#[lexicon]
545#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq, IntoStatic, Default)]
546#[serde(rename_all = "camelCase")]
547pub struct PersonalDetailsPref<'a> {
548    ///The birth date of account owner.
549    #[serde(skip_serializing_if = "Option::is_none")]
550    pub birth_date: Option<Datetime>,
551}
552
553/// 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.
554
555#[lexicon]
556#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq, IntoStatic, Default)]
557#[serde(rename_all = "camelCase")]
558pub struct PostInteractionSettingsPref<'a> {
559    ///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.
560    #[serde(skip_serializing_if = "Option::is_none")]
561    #[serde(borrow)]
562    pub postgate_embedding_rules: Option<Vec<DisableRule<'a>>>,
563    ///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.
564    #[serde(skip_serializing_if = "Option::is_none")]
565    #[serde(borrow)]
566    pub threadgate_allow_rules: Option<
567        Vec<PostInteractionSettingsPrefThreadgateAllowRulesItem<'a>>,
568    >,
569}
570
571
572#[open_union]
573#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq, IntoStatic)]
574#[serde(tag = "$type", bound(deserialize = "'de: 'a"))]
575pub enum PostInteractionSettingsPrefThreadgateAllowRulesItem<'a> {
576    #[serde(rename = "app.bsky.feed.threadgate#mentionRule")]
577    ThreadgateMentionRule(Box<MentionRule<'a>>),
578    #[serde(rename = "app.bsky.feed.threadgate#followerRule")]
579    ThreadgateFollowerRule(Box<FollowerRule<'a>>),
580    #[serde(rename = "app.bsky.feed.threadgate#followingRule")]
581    ThreadgateFollowingRule(Box<FollowingRule<'a>>),
582    #[serde(rename = "app.bsky.feed.threadgate#listRule")]
583    ThreadgateListRule(Box<ListRule<'a>>),
584}
585
586
587#[open_union]
588#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq, IntoStatic)]
589#[serde(tag = "$type", bound(deserialize = "'de: 'a"))]
590pub enum PreferencesItem<'a> {
591    #[serde(rename = "app.bsky.actor.defs#adultContentPref")]
592    AdultContentPref(Box<actor::AdultContentPref<'a>>),
593    #[serde(rename = "app.bsky.actor.defs#contentLabelPref")]
594    ContentLabelPref(Box<actor::ContentLabelPref<'a>>),
595    #[serde(rename = "app.bsky.actor.defs#savedFeedsPref")]
596    SavedFeedsPref(Box<actor::SavedFeedsPref<'a>>),
597    #[serde(rename = "app.bsky.actor.defs#savedFeedsPrefV2")]
598    SavedFeedsPrefV2(Box<actor::SavedFeedsPrefV2<'a>>),
599    #[serde(rename = "app.bsky.actor.defs#personalDetailsPref")]
600    PersonalDetailsPref(Box<actor::PersonalDetailsPref<'a>>),
601    #[serde(rename = "app.bsky.actor.defs#declaredAgePref")]
602    DeclaredAgePref(Box<actor::DeclaredAgePref<'a>>),
603    #[serde(rename = "app.bsky.actor.defs#feedViewPref")]
604    FeedViewPref(Box<actor::FeedViewPref<'a>>),
605    #[serde(rename = "app.bsky.actor.defs#threadViewPref")]
606    ThreadViewPref(Box<actor::ThreadViewPref<'a>>),
607    #[serde(rename = "app.bsky.actor.defs#interestsPref")]
608    InterestsPref(Box<actor::InterestsPref<'a>>),
609    #[serde(rename = "app.bsky.actor.defs#mutedWordsPref")]
610    MutedWordsPref(Box<actor::MutedWordsPref<'a>>),
611    #[serde(rename = "app.bsky.actor.defs#hiddenPostsPref")]
612    HiddenPostsPref(Box<actor::HiddenPostsPref<'a>>),
613    #[serde(rename = "app.bsky.actor.defs#bskyAppStatePref")]
614    BskyAppStatePref(Box<actor::BskyAppStatePref<'a>>),
615    #[serde(rename = "app.bsky.actor.defs#labelersPref")]
616    LabelersPref(Box<actor::LabelersPref<'a>>),
617    #[serde(rename = "app.bsky.actor.defs#postInteractionSettingsPref")]
618    PostInteractionSettingsPref(Box<actor::PostInteractionSettingsPref<'a>>),
619    #[serde(rename = "app.bsky.actor.defs#verificationPrefs")]
620    VerificationPrefs(Box<actor::VerificationPrefs<'a>>),
621    #[serde(rename = "app.bsky.actor.defs#liveEventPreferences")]
622    LiveEventPreferences(Box<actor::LiveEventPreferences<'a>>),
623}
624
625pub type Preferences<'a> = Vec<PreferencesItem<'a>>;
626
627#[lexicon]
628#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq, IntoStatic, Default)]
629#[serde(rename_all = "camelCase")]
630pub struct ProfileAssociated<'a> {
631    #[serde(skip_serializing_if = "Option::is_none")]
632    #[serde(borrow)]
633    pub activity_subscription: Option<actor::ProfileAssociatedActivitySubscription<'a>>,
634    #[serde(skip_serializing_if = "Option::is_none")]
635    #[serde(borrow)]
636    pub chat: Option<actor::ProfileAssociatedChat<'a>>,
637    #[serde(skip_serializing_if = "Option::is_none")]
638    pub feedgens: Option<i64>,
639    #[serde(skip_serializing_if = "Option::is_none")]
640    #[serde(borrow)]
641    pub germ: Option<actor::ProfileAssociatedGerm<'a>>,
642    #[serde(skip_serializing_if = "Option::is_none")]
643    pub labeler: Option<bool>,
644    #[serde(skip_serializing_if = "Option::is_none")]
645    pub lists: Option<i64>,
646    #[serde(skip_serializing_if = "Option::is_none")]
647    pub starter_packs: Option<i64>,
648}
649
650
651#[lexicon]
652#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq, IntoStatic, Default)]
653#[serde(rename_all = "camelCase")]
654pub struct ProfileAssociatedActivitySubscription<'a> {
655    #[serde(borrow)]
656    pub allow_subscriptions: ProfileAssociatedActivitySubscriptionAllowSubscriptions<'a>,
657}
658
659
660#[derive(Debug, Clone, PartialEq, Eq, Hash)]
661pub enum ProfileAssociatedActivitySubscriptionAllowSubscriptions<'a> {
662    Followers,
663    Mutuals,
664    None,
665    Other(CowStr<'a>),
666}
667
668impl<'a> ProfileAssociatedActivitySubscriptionAllowSubscriptions<'a> {
669    pub fn as_str(&self) -> &str {
670        match self {
671            Self::Followers => "followers",
672            Self::Mutuals => "mutuals",
673            Self::None => "none",
674            Self::Other(s) => s.as_ref(),
675        }
676    }
677}
678
679impl<'a> From<&'a str> for ProfileAssociatedActivitySubscriptionAllowSubscriptions<'a> {
680    fn from(s: &'a str) -> Self {
681        match s {
682            "followers" => Self::Followers,
683            "mutuals" => Self::Mutuals,
684            "none" => Self::None,
685            _ => Self::Other(CowStr::from(s)),
686        }
687    }
688}
689
690impl<'a> From<String> for ProfileAssociatedActivitySubscriptionAllowSubscriptions<'a> {
691    fn from(s: String) -> Self {
692        match s.as_str() {
693            "followers" => Self::Followers,
694            "mutuals" => Self::Mutuals,
695            "none" => Self::None,
696            _ => Self::Other(CowStr::from(s)),
697        }
698    }
699}
700
701impl<'a> core::fmt::Display
702for ProfileAssociatedActivitySubscriptionAllowSubscriptions<'a> {
703    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
704        write!(f, "{}", self.as_str())
705    }
706}
707
708impl<'a> AsRef<str> for ProfileAssociatedActivitySubscriptionAllowSubscriptions<'a> {
709    fn as_ref(&self) -> &str {
710        self.as_str()
711    }
712}
713
714impl<'a> serde::Serialize
715for ProfileAssociatedActivitySubscriptionAllowSubscriptions<'a> {
716    fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
717    where
718        S: serde::Serializer,
719    {
720        serializer.serialize_str(self.as_str())
721    }
722}
723
724impl<'de, 'a> serde::Deserialize<'de>
725for ProfileAssociatedActivitySubscriptionAllowSubscriptions<'a>
726where
727    'de: 'a,
728{
729    fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
730    where
731        D: serde::Deserializer<'de>,
732    {
733        let s = <&'de str>::deserialize(deserializer)?;
734        Ok(Self::from(s))
735    }
736}
737
738impl<'a> Default for ProfileAssociatedActivitySubscriptionAllowSubscriptions<'a> {
739    fn default() -> Self {
740        Self::Other(Default::default())
741    }
742}
743
744impl jacquard_common::IntoStatic
745for ProfileAssociatedActivitySubscriptionAllowSubscriptions<'_> {
746    type Output = ProfileAssociatedActivitySubscriptionAllowSubscriptions<'static>;
747    fn into_static(self) -> Self::Output {
748        match self {
749            ProfileAssociatedActivitySubscriptionAllowSubscriptions::Followers => {
750                ProfileAssociatedActivitySubscriptionAllowSubscriptions::Followers
751            }
752            ProfileAssociatedActivitySubscriptionAllowSubscriptions::Mutuals => {
753                ProfileAssociatedActivitySubscriptionAllowSubscriptions::Mutuals
754            }
755            ProfileAssociatedActivitySubscriptionAllowSubscriptions::None => {
756                ProfileAssociatedActivitySubscriptionAllowSubscriptions::None
757            }
758            ProfileAssociatedActivitySubscriptionAllowSubscriptions::Other(v) => {
759                ProfileAssociatedActivitySubscriptionAllowSubscriptions::Other(
760                    v.into_static(),
761                )
762            }
763        }
764    }
765}
766
767
768#[lexicon]
769#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq, IntoStatic, Default)]
770#[serde(rename_all = "camelCase")]
771pub struct ProfileAssociatedChat<'a> {
772    #[serde(borrow)]
773    pub allow_incoming: ProfileAssociatedChatAllowIncoming<'a>,
774}
775
776
777#[derive(Debug, Clone, PartialEq, Eq, Hash)]
778pub enum ProfileAssociatedChatAllowIncoming<'a> {
779    All,
780    None,
781    Following,
782    Other(CowStr<'a>),
783}
784
785impl<'a> ProfileAssociatedChatAllowIncoming<'a> {
786    pub fn as_str(&self) -> &str {
787        match self {
788            Self::All => "all",
789            Self::None => "none",
790            Self::Following => "following",
791            Self::Other(s) => s.as_ref(),
792        }
793    }
794}
795
796impl<'a> From<&'a str> for ProfileAssociatedChatAllowIncoming<'a> {
797    fn from(s: &'a str) -> Self {
798        match s {
799            "all" => Self::All,
800            "none" => Self::None,
801            "following" => Self::Following,
802            _ => Self::Other(CowStr::from(s)),
803        }
804    }
805}
806
807impl<'a> From<String> for ProfileAssociatedChatAllowIncoming<'a> {
808    fn from(s: String) -> Self {
809        match s.as_str() {
810            "all" => Self::All,
811            "none" => Self::None,
812            "following" => Self::Following,
813            _ => Self::Other(CowStr::from(s)),
814        }
815    }
816}
817
818impl<'a> core::fmt::Display for ProfileAssociatedChatAllowIncoming<'a> {
819    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
820        write!(f, "{}", self.as_str())
821    }
822}
823
824impl<'a> AsRef<str> for ProfileAssociatedChatAllowIncoming<'a> {
825    fn as_ref(&self) -> &str {
826        self.as_str()
827    }
828}
829
830impl<'a> serde::Serialize for ProfileAssociatedChatAllowIncoming<'a> {
831    fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
832    where
833        S: serde::Serializer,
834    {
835        serializer.serialize_str(self.as_str())
836    }
837}
838
839impl<'de, 'a> serde::Deserialize<'de> for ProfileAssociatedChatAllowIncoming<'a>
840where
841    'de: 'a,
842{
843    fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
844    where
845        D: serde::Deserializer<'de>,
846    {
847        let s = <&'de str>::deserialize(deserializer)?;
848        Ok(Self::from(s))
849    }
850}
851
852impl<'a> Default for ProfileAssociatedChatAllowIncoming<'a> {
853    fn default() -> Self {
854        Self::Other(Default::default())
855    }
856}
857
858impl jacquard_common::IntoStatic for ProfileAssociatedChatAllowIncoming<'_> {
859    type Output = ProfileAssociatedChatAllowIncoming<'static>;
860    fn into_static(self) -> Self::Output {
861        match self {
862            ProfileAssociatedChatAllowIncoming::All => {
863                ProfileAssociatedChatAllowIncoming::All
864            }
865            ProfileAssociatedChatAllowIncoming::None => {
866                ProfileAssociatedChatAllowIncoming::None
867            }
868            ProfileAssociatedChatAllowIncoming::Following => {
869                ProfileAssociatedChatAllowIncoming::Following
870            }
871            ProfileAssociatedChatAllowIncoming::Other(v) => {
872                ProfileAssociatedChatAllowIncoming::Other(v.into_static())
873            }
874        }
875    }
876}
877
878
879#[lexicon]
880#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq, IntoStatic)]
881#[serde(rename_all = "camelCase")]
882pub struct ProfileAssociatedGerm<'a> {
883    #[serde(borrow)]
884    pub message_me_url: UriValue<'a>,
885    #[serde(borrow)]
886    pub show_button_to: ProfileAssociatedGermShowButtonTo<'a>,
887}
888
889
890#[derive(Debug, Clone, PartialEq, Eq, Hash)]
891pub enum ProfileAssociatedGermShowButtonTo<'a> {
892    UsersIFollow,
893    Everyone,
894    Other(CowStr<'a>),
895}
896
897impl<'a> ProfileAssociatedGermShowButtonTo<'a> {
898    pub fn as_str(&self) -> &str {
899        match self {
900            Self::UsersIFollow => "usersIFollow",
901            Self::Everyone => "everyone",
902            Self::Other(s) => s.as_ref(),
903        }
904    }
905}
906
907impl<'a> From<&'a str> for ProfileAssociatedGermShowButtonTo<'a> {
908    fn from(s: &'a str) -> Self {
909        match s {
910            "usersIFollow" => Self::UsersIFollow,
911            "everyone" => Self::Everyone,
912            _ => Self::Other(CowStr::from(s)),
913        }
914    }
915}
916
917impl<'a> From<String> for ProfileAssociatedGermShowButtonTo<'a> {
918    fn from(s: String) -> Self {
919        match s.as_str() {
920            "usersIFollow" => Self::UsersIFollow,
921            "everyone" => Self::Everyone,
922            _ => Self::Other(CowStr::from(s)),
923        }
924    }
925}
926
927impl<'a> core::fmt::Display for ProfileAssociatedGermShowButtonTo<'a> {
928    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
929        write!(f, "{}", self.as_str())
930    }
931}
932
933impl<'a> AsRef<str> for ProfileAssociatedGermShowButtonTo<'a> {
934    fn as_ref(&self) -> &str {
935        self.as_str()
936    }
937}
938
939impl<'a> serde::Serialize for ProfileAssociatedGermShowButtonTo<'a> {
940    fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
941    where
942        S: serde::Serializer,
943    {
944        serializer.serialize_str(self.as_str())
945    }
946}
947
948impl<'de, 'a> serde::Deserialize<'de> for ProfileAssociatedGermShowButtonTo<'a>
949where
950    'de: 'a,
951{
952    fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
953    where
954        D: serde::Deserializer<'de>,
955    {
956        let s = <&'de str>::deserialize(deserializer)?;
957        Ok(Self::from(s))
958    }
959}
960
961impl<'a> Default for ProfileAssociatedGermShowButtonTo<'a> {
962    fn default() -> Self {
963        Self::Other(Default::default())
964    }
965}
966
967impl jacquard_common::IntoStatic for ProfileAssociatedGermShowButtonTo<'_> {
968    type Output = ProfileAssociatedGermShowButtonTo<'static>;
969    fn into_static(self) -> Self::Output {
970        match self {
971            ProfileAssociatedGermShowButtonTo::UsersIFollow => {
972                ProfileAssociatedGermShowButtonTo::UsersIFollow
973            }
974            ProfileAssociatedGermShowButtonTo::Everyone => {
975                ProfileAssociatedGermShowButtonTo::Everyone
976            }
977            ProfileAssociatedGermShowButtonTo::Other(v) => {
978                ProfileAssociatedGermShowButtonTo::Other(v.into_static())
979            }
980        }
981    }
982}
983
984
985#[lexicon]
986#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq, IntoStatic)]
987#[serde(rename_all = "camelCase")]
988pub struct ProfileView<'a> {
989    #[serde(skip_serializing_if = "Option::is_none")]
990    #[serde(borrow)]
991    pub associated: Option<actor::ProfileAssociated<'a>>,
992    #[serde(skip_serializing_if = "Option::is_none")]
993    #[serde(borrow)]
994    pub avatar: Option<UriValue<'a>>,
995    #[serde(skip_serializing_if = "Option::is_none")]
996    pub created_at: Option<Datetime>,
997    ///Debug information for internal development
998    #[serde(skip_serializing_if = "Option::is_none")]
999    #[serde(borrow)]
1000    pub debug: Option<Data<'a>>,
1001    #[serde(skip_serializing_if = "Option::is_none")]
1002    #[serde(borrow)]
1003    pub description: Option<CowStr<'a>>,
1004    #[serde(borrow)]
1005    pub did: Did<'a>,
1006    #[serde(skip_serializing_if = "Option::is_none")]
1007    #[serde(borrow)]
1008    pub display_name: Option<CowStr<'a>>,
1009    #[serde(borrow)]
1010    pub handle: Handle<'a>,
1011    #[serde(skip_serializing_if = "Option::is_none")]
1012    pub indexed_at: Option<Datetime>,
1013    #[serde(skip_serializing_if = "Option::is_none")]
1014    #[serde(borrow)]
1015    pub labels: Option<Vec<Label<'a>>>,
1016    #[serde(skip_serializing_if = "Option::is_none")]
1017    #[serde(borrow)]
1018    pub pronouns: Option<CowStr<'a>>,
1019    #[serde(skip_serializing_if = "Option::is_none")]
1020    #[serde(borrow)]
1021    pub status: Option<actor::StatusView<'a>>,
1022    #[serde(skip_serializing_if = "Option::is_none")]
1023    #[serde(borrow)]
1024    pub verification: Option<actor::VerificationState<'a>>,
1025    #[serde(skip_serializing_if = "Option::is_none")]
1026    #[serde(borrow)]
1027    pub viewer: Option<actor::ViewerState<'a>>,
1028}
1029
1030
1031#[lexicon]
1032#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq, IntoStatic)]
1033#[serde(rename_all = "camelCase")]
1034pub struct ProfileViewBasic<'a> {
1035    #[serde(skip_serializing_if = "Option::is_none")]
1036    #[serde(borrow)]
1037    pub associated: Option<actor::ProfileAssociated<'a>>,
1038    #[serde(skip_serializing_if = "Option::is_none")]
1039    #[serde(borrow)]
1040    pub avatar: Option<UriValue<'a>>,
1041    #[serde(skip_serializing_if = "Option::is_none")]
1042    pub created_at: Option<Datetime>,
1043    ///Debug information for internal development
1044    #[serde(skip_serializing_if = "Option::is_none")]
1045    #[serde(borrow)]
1046    pub debug: Option<Data<'a>>,
1047    #[serde(borrow)]
1048    pub did: Did<'a>,
1049    #[serde(skip_serializing_if = "Option::is_none")]
1050    #[serde(borrow)]
1051    pub display_name: Option<CowStr<'a>>,
1052    #[serde(borrow)]
1053    pub handle: Handle<'a>,
1054    #[serde(skip_serializing_if = "Option::is_none")]
1055    #[serde(borrow)]
1056    pub labels: Option<Vec<Label<'a>>>,
1057    #[serde(skip_serializing_if = "Option::is_none")]
1058    #[serde(borrow)]
1059    pub pronouns: Option<CowStr<'a>>,
1060    #[serde(skip_serializing_if = "Option::is_none")]
1061    #[serde(borrow)]
1062    pub status: Option<actor::StatusView<'a>>,
1063    #[serde(skip_serializing_if = "Option::is_none")]
1064    #[serde(borrow)]
1065    pub verification: Option<actor::VerificationState<'a>>,
1066    #[serde(skip_serializing_if = "Option::is_none")]
1067    #[serde(borrow)]
1068    pub viewer: Option<actor::ViewerState<'a>>,
1069}
1070
1071
1072#[lexicon]
1073#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq, IntoStatic)]
1074#[serde(rename_all = "camelCase")]
1075pub struct ProfileViewDetailed<'a> {
1076    #[serde(skip_serializing_if = "Option::is_none")]
1077    #[serde(borrow)]
1078    pub associated: Option<actor::ProfileAssociated<'a>>,
1079    #[serde(skip_serializing_if = "Option::is_none")]
1080    #[serde(borrow)]
1081    pub avatar: Option<UriValue<'a>>,
1082    #[serde(skip_serializing_if = "Option::is_none")]
1083    #[serde(borrow)]
1084    pub banner: Option<UriValue<'a>>,
1085    #[serde(skip_serializing_if = "Option::is_none")]
1086    pub created_at: Option<Datetime>,
1087    ///Debug information for internal development
1088    #[serde(skip_serializing_if = "Option::is_none")]
1089    #[serde(borrow)]
1090    pub debug: Option<Data<'a>>,
1091    #[serde(skip_serializing_if = "Option::is_none")]
1092    #[serde(borrow)]
1093    pub description: Option<CowStr<'a>>,
1094    #[serde(borrow)]
1095    pub did: Did<'a>,
1096    #[serde(skip_serializing_if = "Option::is_none")]
1097    #[serde(borrow)]
1098    pub display_name: Option<CowStr<'a>>,
1099    #[serde(skip_serializing_if = "Option::is_none")]
1100    pub followers_count: Option<i64>,
1101    #[serde(skip_serializing_if = "Option::is_none")]
1102    pub follows_count: Option<i64>,
1103    #[serde(borrow)]
1104    pub handle: Handle<'a>,
1105    #[serde(skip_serializing_if = "Option::is_none")]
1106    pub indexed_at: Option<Datetime>,
1107    #[serde(skip_serializing_if = "Option::is_none")]
1108    #[serde(borrow)]
1109    pub joined_via_starter_pack: Option<StarterPackViewBasic<'a>>,
1110    #[serde(skip_serializing_if = "Option::is_none")]
1111    #[serde(borrow)]
1112    pub labels: Option<Vec<Label<'a>>>,
1113    #[serde(skip_serializing_if = "Option::is_none")]
1114    #[serde(borrow)]
1115    pub pinned_post: Option<StrongRef<'a>>,
1116    #[serde(skip_serializing_if = "Option::is_none")]
1117    pub posts_count: Option<i64>,
1118    #[serde(skip_serializing_if = "Option::is_none")]
1119    #[serde(borrow)]
1120    pub pronouns: Option<CowStr<'a>>,
1121    #[serde(skip_serializing_if = "Option::is_none")]
1122    #[serde(borrow)]
1123    pub status: Option<actor::StatusView<'a>>,
1124    #[serde(skip_serializing_if = "Option::is_none")]
1125    #[serde(borrow)]
1126    pub verification: Option<actor::VerificationState<'a>>,
1127    #[serde(skip_serializing_if = "Option::is_none")]
1128    #[serde(borrow)]
1129    pub viewer: Option<actor::ViewerState<'a>>,
1130    #[serde(skip_serializing_if = "Option::is_none")]
1131    #[serde(borrow)]
1132    pub website: Option<UriValue<'a>>,
1133}
1134
1135
1136#[lexicon]
1137#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq, IntoStatic)]
1138#[serde(rename_all = "camelCase")]
1139pub struct SavedFeed<'a> {
1140    #[serde(borrow)]
1141    pub id: CowStr<'a>,
1142    pub pinned: bool,
1143    #[serde(borrow)]
1144    pub r#type: SavedFeedType<'a>,
1145    #[serde(borrow)]
1146    pub value: CowStr<'a>,
1147}
1148
1149
1150#[derive(Debug, Clone, PartialEq, Eq, Hash)]
1151pub enum SavedFeedType<'a> {
1152    Feed,
1153    List,
1154    Timeline,
1155    Other(CowStr<'a>),
1156}
1157
1158impl<'a> SavedFeedType<'a> {
1159    pub fn as_str(&self) -> &str {
1160        match self {
1161            Self::Feed => "feed",
1162            Self::List => "list",
1163            Self::Timeline => "timeline",
1164            Self::Other(s) => s.as_ref(),
1165        }
1166    }
1167}
1168
1169impl<'a> From<&'a str> for SavedFeedType<'a> {
1170    fn from(s: &'a str) -> Self {
1171        match s {
1172            "feed" => Self::Feed,
1173            "list" => Self::List,
1174            "timeline" => Self::Timeline,
1175            _ => Self::Other(CowStr::from(s)),
1176        }
1177    }
1178}
1179
1180impl<'a> From<String> for SavedFeedType<'a> {
1181    fn from(s: String) -> Self {
1182        match s.as_str() {
1183            "feed" => Self::Feed,
1184            "list" => Self::List,
1185            "timeline" => Self::Timeline,
1186            _ => Self::Other(CowStr::from(s)),
1187        }
1188    }
1189}
1190
1191impl<'a> core::fmt::Display for SavedFeedType<'a> {
1192    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
1193        write!(f, "{}", self.as_str())
1194    }
1195}
1196
1197impl<'a> AsRef<str> for SavedFeedType<'a> {
1198    fn as_ref(&self) -> &str {
1199        self.as_str()
1200    }
1201}
1202
1203impl<'a> serde::Serialize for SavedFeedType<'a> {
1204    fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
1205    where
1206        S: serde::Serializer,
1207    {
1208        serializer.serialize_str(self.as_str())
1209    }
1210}
1211
1212impl<'de, 'a> serde::Deserialize<'de> for SavedFeedType<'a>
1213where
1214    'de: 'a,
1215{
1216    fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1217    where
1218        D: serde::Deserializer<'de>,
1219    {
1220        let s = <&'de str>::deserialize(deserializer)?;
1221        Ok(Self::from(s))
1222    }
1223}
1224
1225impl<'a> Default for SavedFeedType<'a> {
1226    fn default() -> Self {
1227        Self::Other(Default::default())
1228    }
1229}
1230
1231impl jacquard_common::IntoStatic for SavedFeedType<'_> {
1232    type Output = SavedFeedType<'static>;
1233    fn into_static(self) -> Self::Output {
1234        match self {
1235            SavedFeedType::Feed => SavedFeedType::Feed,
1236            SavedFeedType::List => SavedFeedType::List,
1237            SavedFeedType::Timeline => SavedFeedType::Timeline,
1238            SavedFeedType::Other(v) => SavedFeedType::Other(v.into_static()),
1239        }
1240    }
1241}
1242
1243
1244#[lexicon]
1245#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq, IntoStatic)]
1246#[serde(rename_all = "camelCase")]
1247pub struct SavedFeedsPref<'a> {
1248    #[serde(borrow)]
1249    pub pinned: Vec<AtUri<'a>>,
1250    #[serde(borrow)]
1251    pub saved: Vec<AtUri<'a>>,
1252    #[serde(skip_serializing_if = "Option::is_none")]
1253    pub timeline_index: Option<i64>,
1254}
1255
1256
1257#[lexicon]
1258#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq, IntoStatic)]
1259#[serde(rename_all = "camelCase")]
1260pub struct SavedFeedsPrefV2<'a> {
1261    #[serde(borrow)]
1262    pub items: Vec<actor::SavedFeed<'a>>,
1263}
1264
1265
1266#[lexicon]
1267#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq, IntoStatic)]
1268#[serde(rename_all = "camelCase")]
1269pub struct StatusView<'a> {
1270    #[serde(skip_serializing_if = "Option::is_none")]
1271    #[serde(borrow)]
1272    pub cid: Option<Cid<'a>>,
1273    ///An optional embed associated with the status.
1274    #[serde(skip_serializing_if = "Option::is_none")]
1275    #[serde(borrow)]
1276    pub embed: Option<View<'a>>,
1277    ///The date when this status will expire. The application might choose to no longer return the status after expiration.
1278    #[serde(skip_serializing_if = "Option::is_none")]
1279    pub expires_at: Option<Datetime>,
1280    ///True if the status is not expired, false if it is expired. Only present if expiration was set.
1281    #[serde(skip_serializing_if = "Option::is_none")]
1282    pub is_active: Option<bool>,
1283    ///True if the user's go-live access has been disabled by a moderator, false otherwise.
1284    #[serde(skip_serializing_if = "Option::is_none")]
1285    pub is_disabled: Option<bool>,
1286    #[serde(borrow)]
1287    pub record: Data<'a>,
1288    ///The status for the account.
1289    #[serde(borrow)]
1290    pub status: StatusViewStatus<'a>,
1291    #[serde(skip_serializing_if = "Option::is_none")]
1292    #[serde(borrow)]
1293    pub uri: Option<AtUri<'a>>,
1294}
1295
1296/// The status for the account.
1297
1298#[derive(Debug, Clone, PartialEq, Eq, Hash)]
1299pub enum StatusViewStatus<'a> {
1300    Live,
1301    Other(CowStr<'a>),
1302}
1303
1304impl<'a> StatusViewStatus<'a> {
1305    pub fn as_str(&self) -> &str {
1306        match self {
1307            Self::Live => "app.bsky.actor.status#live",
1308            Self::Other(s) => s.as_ref(),
1309        }
1310    }
1311}
1312
1313impl<'a> From<&'a str> for StatusViewStatus<'a> {
1314    fn from(s: &'a str) -> Self {
1315        match s {
1316            "app.bsky.actor.status#live" => Self::Live,
1317            _ => Self::Other(CowStr::from(s)),
1318        }
1319    }
1320}
1321
1322impl<'a> From<String> for StatusViewStatus<'a> {
1323    fn from(s: String) -> Self {
1324        match s.as_str() {
1325            "app.bsky.actor.status#live" => Self::Live,
1326            _ => Self::Other(CowStr::from(s)),
1327        }
1328    }
1329}
1330
1331impl<'a> core::fmt::Display for StatusViewStatus<'a> {
1332    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
1333        write!(f, "{}", self.as_str())
1334    }
1335}
1336
1337impl<'a> AsRef<str> for StatusViewStatus<'a> {
1338    fn as_ref(&self) -> &str {
1339        self.as_str()
1340    }
1341}
1342
1343impl<'a> serde::Serialize for StatusViewStatus<'a> {
1344    fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
1345    where
1346        S: serde::Serializer,
1347    {
1348        serializer.serialize_str(self.as_str())
1349    }
1350}
1351
1352impl<'de, 'a> serde::Deserialize<'de> for StatusViewStatus<'a>
1353where
1354    'de: 'a,
1355{
1356    fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1357    where
1358        D: serde::Deserializer<'de>,
1359    {
1360        let s = <&'de str>::deserialize(deserializer)?;
1361        Ok(Self::from(s))
1362    }
1363}
1364
1365impl<'a> Default for StatusViewStatus<'a> {
1366    fn default() -> Self {
1367        Self::Other(Default::default())
1368    }
1369}
1370
1371impl jacquard_common::IntoStatic for StatusViewStatus<'_> {
1372    type Output = StatusViewStatus<'static>;
1373    fn into_static(self) -> Self::Output {
1374        match self {
1375            StatusViewStatus::Live => StatusViewStatus::Live,
1376            StatusViewStatus::Other(v) => StatusViewStatus::Other(v.into_static()),
1377        }
1378    }
1379}
1380
1381
1382#[lexicon]
1383#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq, IntoStatic, Default)]
1384#[serde(rename_all = "camelCase")]
1385pub struct ThreadViewPref<'a> {
1386    ///Sorting mode for threads.
1387    #[serde(skip_serializing_if = "Option::is_none")]
1388    #[serde(borrow)]
1389    pub sort: Option<ThreadViewPrefSort<'a>>,
1390}
1391
1392/// Sorting mode for threads.
1393
1394#[derive(Debug, Clone, PartialEq, Eq, Hash)]
1395pub enum ThreadViewPrefSort<'a> {
1396    Oldest,
1397    Newest,
1398    MostLikes,
1399    Random,
1400    Hotness,
1401    Other(CowStr<'a>),
1402}
1403
1404impl<'a> ThreadViewPrefSort<'a> {
1405    pub fn as_str(&self) -> &str {
1406        match self {
1407            Self::Oldest => "oldest",
1408            Self::Newest => "newest",
1409            Self::MostLikes => "most-likes",
1410            Self::Random => "random",
1411            Self::Hotness => "hotness",
1412            Self::Other(s) => s.as_ref(),
1413        }
1414    }
1415}
1416
1417impl<'a> From<&'a str> for ThreadViewPrefSort<'a> {
1418    fn from(s: &'a str) -> Self {
1419        match s {
1420            "oldest" => Self::Oldest,
1421            "newest" => Self::Newest,
1422            "most-likes" => Self::MostLikes,
1423            "random" => Self::Random,
1424            "hotness" => Self::Hotness,
1425            _ => Self::Other(CowStr::from(s)),
1426        }
1427    }
1428}
1429
1430impl<'a> From<String> for ThreadViewPrefSort<'a> {
1431    fn from(s: String) -> Self {
1432        match s.as_str() {
1433            "oldest" => Self::Oldest,
1434            "newest" => Self::Newest,
1435            "most-likes" => Self::MostLikes,
1436            "random" => Self::Random,
1437            "hotness" => Self::Hotness,
1438            _ => Self::Other(CowStr::from(s)),
1439        }
1440    }
1441}
1442
1443impl<'a> core::fmt::Display for ThreadViewPrefSort<'a> {
1444    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
1445        write!(f, "{}", self.as_str())
1446    }
1447}
1448
1449impl<'a> AsRef<str> for ThreadViewPrefSort<'a> {
1450    fn as_ref(&self) -> &str {
1451        self.as_str()
1452    }
1453}
1454
1455impl<'a> serde::Serialize for ThreadViewPrefSort<'a> {
1456    fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
1457    where
1458        S: serde::Serializer,
1459    {
1460        serializer.serialize_str(self.as_str())
1461    }
1462}
1463
1464impl<'de, 'a> serde::Deserialize<'de> for ThreadViewPrefSort<'a>
1465where
1466    'de: 'a,
1467{
1468    fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1469    where
1470        D: serde::Deserializer<'de>,
1471    {
1472        let s = <&'de str>::deserialize(deserializer)?;
1473        Ok(Self::from(s))
1474    }
1475}
1476
1477impl<'a> Default for ThreadViewPrefSort<'a> {
1478    fn default() -> Self {
1479        Self::Other(Default::default())
1480    }
1481}
1482
1483impl jacquard_common::IntoStatic for ThreadViewPrefSort<'_> {
1484    type Output = ThreadViewPrefSort<'static>;
1485    fn into_static(self) -> Self::Output {
1486        match self {
1487            ThreadViewPrefSort::Oldest => ThreadViewPrefSort::Oldest,
1488            ThreadViewPrefSort::Newest => ThreadViewPrefSort::Newest,
1489            ThreadViewPrefSort::MostLikes => ThreadViewPrefSort::MostLikes,
1490            ThreadViewPrefSort::Random => ThreadViewPrefSort::Random,
1491            ThreadViewPrefSort::Hotness => ThreadViewPrefSort::Hotness,
1492            ThreadViewPrefSort::Other(v) => ThreadViewPrefSort::Other(v.into_static()),
1493        }
1494    }
1495}
1496
1497/// Preferences for how verified accounts appear in the app.
1498
1499#[lexicon]
1500#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq, IntoStatic)]
1501#[serde(rename_all = "camelCase")]
1502pub struct VerificationPrefs<'a> {
1503    ///Hide the blue check badges for verified accounts and trusted verifiers.  Defaults to `false`.
1504    #[serde(skip_serializing_if = "Option::is_none")]
1505    #[serde(default = "_default_verification_prefs_hide_badges")]
1506    pub hide_badges: Option<bool>,
1507}
1508
1509/// Represents the verification information about the user this object is attached to.
1510
1511#[lexicon]
1512#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq, IntoStatic)]
1513#[serde(rename_all = "camelCase")]
1514pub struct VerificationState<'a> {
1515    ///The user's status as a trusted verifier.
1516    #[serde(borrow)]
1517    pub trusted_verifier_status: VerificationStateTrustedVerifierStatus<'a>,
1518    ///All verifications issued by trusted verifiers on behalf of this user. Verifications by untrusted verifiers are not included.
1519    #[serde(borrow)]
1520    pub verifications: Vec<actor::VerificationView<'a>>,
1521    ///The user's status as a verified account.
1522    #[serde(borrow)]
1523    pub verified_status: VerificationStateVerifiedStatus<'a>,
1524}
1525
1526/// The user's status as a trusted verifier.
1527
1528#[derive(Debug, Clone, PartialEq, Eq, Hash)]
1529pub enum VerificationStateTrustedVerifierStatus<'a> {
1530    Valid,
1531    Invalid,
1532    None,
1533    Other(CowStr<'a>),
1534}
1535
1536impl<'a> VerificationStateTrustedVerifierStatus<'a> {
1537    pub fn as_str(&self) -> &str {
1538        match self {
1539            Self::Valid => "valid",
1540            Self::Invalid => "invalid",
1541            Self::None => "none",
1542            Self::Other(s) => s.as_ref(),
1543        }
1544    }
1545}
1546
1547impl<'a> From<&'a str> for VerificationStateTrustedVerifierStatus<'a> {
1548    fn from(s: &'a str) -> Self {
1549        match s {
1550            "valid" => Self::Valid,
1551            "invalid" => Self::Invalid,
1552            "none" => Self::None,
1553            _ => Self::Other(CowStr::from(s)),
1554        }
1555    }
1556}
1557
1558impl<'a> From<String> for VerificationStateTrustedVerifierStatus<'a> {
1559    fn from(s: String) -> Self {
1560        match s.as_str() {
1561            "valid" => Self::Valid,
1562            "invalid" => Self::Invalid,
1563            "none" => Self::None,
1564            _ => Self::Other(CowStr::from(s)),
1565        }
1566    }
1567}
1568
1569impl<'a> core::fmt::Display for VerificationStateTrustedVerifierStatus<'a> {
1570    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
1571        write!(f, "{}", self.as_str())
1572    }
1573}
1574
1575impl<'a> AsRef<str> for VerificationStateTrustedVerifierStatus<'a> {
1576    fn as_ref(&self) -> &str {
1577        self.as_str()
1578    }
1579}
1580
1581impl<'a> serde::Serialize for VerificationStateTrustedVerifierStatus<'a> {
1582    fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
1583    where
1584        S: serde::Serializer,
1585    {
1586        serializer.serialize_str(self.as_str())
1587    }
1588}
1589
1590impl<'de, 'a> serde::Deserialize<'de> for VerificationStateTrustedVerifierStatus<'a>
1591where
1592    'de: 'a,
1593{
1594    fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1595    where
1596        D: serde::Deserializer<'de>,
1597    {
1598        let s = <&'de str>::deserialize(deserializer)?;
1599        Ok(Self::from(s))
1600    }
1601}
1602
1603impl<'a> Default for VerificationStateTrustedVerifierStatus<'a> {
1604    fn default() -> Self {
1605        Self::Other(Default::default())
1606    }
1607}
1608
1609impl jacquard_common::IntoStatic for VerificationStateTrustedVerifierStatus<'_> {
1610    type Output = VerificationStateTrustedVerifierStatus<'static>;
1611    fn into_static(self) -> Self::Output {
1612        match self {
1613            VerificationStateTrustedVerifierStatus::Valid => {
1614                VerificationStateTrustedVerifierStatus::Valid
1615            }
1616            VerificationStateTrustedVerifierStatus::Invalid => {
1617                VerificationStateTrustedVerifierStatus::Invalid
1618            }
1619            VerificationStateTrustedVerifierStatus::None => {
1620                VerificationStateTrustedVerifierStatus::None
1621            }
1622            VerificationStateTrustedVerifierStatus::Other(v) => {
1623                VerificationStateTrustedVerifierStatus::Other(v.into_static())
1624            }
1625        }
1626    }
1627}
1628
1629/// The user's status as a verified account.
1630
1631#[derive(Debug, Clone, PartialEq, Eq, Hash)]
1632pub enum VerificationStateVerifiedStatus<'a> {
1633    Valid,
1634    Invalid,
1635    None,
1636    Other(CowStr<'a>),
1637}
1638
1639impl<'a> VerificationStateVerifiedStatus<'a> {
1640    pub fn as_str(&self) -> &str {
1641        match self {
1642            Self::Valid => "valid",
1643            Self::Invalid => "invalid",
1644            Self::None => "none",
1645            Self::Other(s) => s.as_ref(),
1646        }
1647    }
1648}
1649
1650impl<'a> From<&'a str> for VerificationStateVerifiedStatus<'a> {
1651    fn from(s: &'a str) -> Self {
1652        match s {
1653            "valid" => Self::Valid,
1654            "invalid" => Self::Invalid,
1655            "none" => Self::None,
1656            _ => Self::Other(CowStr::from(s)),
1657        }
1658    }
1659}
1660
1661impl<'a> From<String> for VerificationStateVerifiedStatus<'a> {
1662    fn from(s: String) -> Self {
1663        match s.as_str() {
1664            "valid" => Self::Valid,
1665            "invalid" => Self::Invalid,
1666            "none" => Self::None,
1667            _ => Self::Other(CowStr::from(s)),
1668        }
1669    }
1670}
1671
1672impl<'a> core::fmt::Display for VerificationStateVerifiedStatus<'a> {
1673    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
1674        write!(f, "{}", self.as_str())
1675    }
1676}
1677
1678impl<'a> AsRef<str> for VerificationStateVerifiedStatus<'a> {
1679    fn as_ref(&self) -> &str {
1680        self.as_str()
1681    }
1682}
1683
1684impl<'a> serde::Serialize for VerificationStateVerifiedStatus<'a> {
1685    fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
1686    where
1687        S: serde::Serializer,
1688    {
1689        serializer.serialize_str(self.as_str())
1690    }
1691}
1692
1693impl<'de, 'a> serde::Deserialize<'de> for VerificationStateVerifiedStatus<'a>
1694where
1695    'de: 'a,
1696{
1697    fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1698    where
1699        D: serde::Deserializer<'de>,
1700    {
1701        let s = <&'de str>::deserialize(deserializer)?;
1702        Ok(Self::from(s))
1703    }
1704}
1705
1706impl<'a> Default for VerificationStateVerifiedStatus<'a> {
1707    fn default() -> Self {
1708        Self::Other(Default::default())
1709    }
1710}
1711
1712impl jacquard_common::IntoStatic for VerificationStateVerifiedStatus<'_> {
1713    type Output = VerificationStateVerifiedStatus<'static>;
1714    fn into_static(self) -> Self::Output {
1715        match self {
1716            VerificationStateVerifiedStatus::Valid => {
1717                VerificationStateVerifiedStatus::Valid
1718            }
1719            VerificationStateVerifiedStatus::Invalid => {
1720                VerificationStateVerifiedStatus::Invalid
1721            }
1722            VerificationStateVerifiedStatus::None => {
1723                VerificationStateVerifiedStatus::None
1724            }
1725            VerificationStateVerifiedStatus::Other(v) => {
1726                VerificationStateVerifiedStatus::Other(v.into_static())
1727            }
1728        }
1729    }
1730}
1731
1732/// An individual verification for an associated subject.
1733
1734#[lexicon]
1735#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq, IntoStatic)]
1736#[serde(rename_all = "camelCase")]
1737pub struct VerificationView<'a> {
1738    ///Timestamp when the verification was created.
1739    pub created_at: Datetime,
1740    ///True if the verification passes validation, otherwise false.
1741    pub is_valid: bool,
1742    ///The user who issued this verification.
1743    #[serde(borrow)]
1744    pub issuer: Did<'a>,
1745    ///The AT-URI of the verification record.
1746    #[serde(borrow)]
1747    pub uri: AtUri<'a>,
1748}
1749
1750/// Metadata about the requesting account's relationship with the subject account. Only has meaningful content for authed requests.
1751
1752#[lexicon]
1753#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq, IntoStatic, Default)]
1754#[serde(rename_all = "camelCase")]
1755pub struct ViewerState<'a> {
1756    ///This property is present only in selected cases, as an optimization.
1757    #[serde(skip_serializing_if = "Option::is_none")]
1758    #[serde(borrow)]
1759    pub activity_subscription: Option<ActivitySubscription<'a>>,
1760    #[serde(skip_serializing_if = "Option::is_none")]
1761    pub blocked_by: Option<bool>,
1762    #[serde(skip_serializing_if = "Option::is_none")]
1763    #[serde(borrow)]
1764    pub blocking: Option<AtUri<'a>>,
1765    #[serde(skip_serializing_if = "Option::is_none")]
1766    #[serde(borrow)]
1767    pub blocking_by_list: Option<ListViewBasic<'a>>,
1768    #[serde(skip_serializing_if = "Option::is_none")]
1769    #[serde(borrow)]
1770    pub followed_by: Option<AtUri<'a>>,
1771    #[serde(skip_serializing_if = "Option::is_none")]
1772    #[serde(borrow)]
1773    pub following: Option<AtUri<'a>>,
1774    ///This property is present only in selected cases, as an optimization.
1775    #[serde(skip_serializing_if = "Option::is_none")]
1776    #[serde(borrow)]
1777    pub known_followers: Option<actor::KnownFollowers<'a>>,
1778    #[serde(skip_serializing_if = "Option::is_none")]
1779    pub muted: Option<bool>,
1780    #[serde(skip_serializing_if = "Option::is_none")]
1781    #[serde(borrow)]
1782    pub muted_by_list: Option<ListViewBasic<'a>>,
1783}
1784
1785impl<'a> LexiconSchema for AdultContentPref<'a> {
1786    fn nsid() -> &'static str {
1787        "app.bsky.actor.defs"
1788    }
1789    fn def_name() -> &'static str {
1790        "adultContentPref"
1791    }
1792    fn lexicon_doc() -> LexiconDoc<'static> {
1793        lexicon_doc_app_bsky_actor_defs()
1794    }
1795    fn validate(&self) -> Result<(), ConstraintError> {
1796        Ok(())
1797    }
1798}
1799
1800impl<'a> LexiconSchema for BskyAppProgressGuide<'a> {
1801    fn nsid() -> &'static str {
1802        "app.bsky.actor.defs"
1803    }
1804    fn def_name() -> &'static str {
1805        "bskyAppProgressGuide"
1806    }
1807    fn lexicon_doc() -> LexiconDoc<'static> {
1808        lexicon_doc_app_bsky_actor_defs()
1809    }
1810    fn validate(&self) -> Result<(), ConstraintError> {
1811        {
1812            let value = &self.guide;
1813            #[allow(unused_comparisons)]
1814            if <str>::len(value.as_ref()) > 100usize {
1815                return Err(ConstraintError::MaxLength {
1816                    path: ValidationPath::from_field("guide"),
1817                    max: 100usize,
1818                    actual: <str>::len(value.as_ref()),
1819                });
1820            }
1821        }
1822        Ok(())
1823    }
1824}
1825
1826impl<'a> LexiconSchema for BskyAppStatePref<'a> {
1827    fn nsid() -> &'static str {
1828        "app.bsky.actor.defs"
1829    }
1830    fn def_name() -> &'static str {
1831        "bskyAppStatePref"
1832    }
1833    fn lexicon_doc() -> LexiconDoc<'static> {
1834        lexicon_doc_app_bsky_actor_defs()
1835    }
1836    fn validate(&self) -> Result<(), ConstraintError> {
1837        if let Some(ref value) = self.nuxs {
1838            #[allow(unused_comparisons)]
1839            if value.len() > 100usize {
1840                return Err(ConstraintError::MaxLength {
1841                    path: ValidationPath::from_field("nuxs"),
1842                    max: 100usize,
1843                    actual: value.len(),
1844                });
1845            }
1846        }
1847        if let Some(ref value) = self.queued_nudges {
1848            #[allow(unused_comparisons)]
1849            if value.len() > 1000usize {
1850                return Err(ConstraintError::MaxLength {
1851                    path: ValidationPath::from_field("queued_nudges"),
1852                    max: 1000usize,
1853                    actual: value.len(),
1854                });
1855            }
1856        }
1857        Ok(())
1858    }
1859}
1860
1861impl<'a> LexiconSchema for ContentLabelPref<'a> {
1862    fn nsid() -> &'static str {
1863        "app.bsky.actor.defs"
1864    }
1865    fn def_name() -> &'static str {
1866        "contentLabelPref"
1867    }
1868    fn lexicon_doc() -> LexiconDoc<'static> {
1869        lexicon_doc_app_bsky_actor_defs()
1870    }
1871    fn validate(&self) -> Result<(), ConstraintError> {
1872        Ok(())
1873    }
1874}
1875
1876impl<'a> LexiconSchema for DeclaredAgePref<'a> {
1877    fn nsid() -> &'static str {
1878        "app.bsky.actor.defs"
1879    }
1880    fn def_name() -> &'static str {
1881        "declaredAgePref"
1882    }
1883    fn lexicon_doc() -> LexiconDoc<'static> {
1884        lexicon_doc_app_bsky_actor_defs()
1885    }
1886    fn validate(&self) -> Result<(), ConstraintError> {
1887        Ok(())
1888    }
1889}
1890
1891impl<'a> LexiconSchema for FeedViewPref<'a> {
1892    fn nsid() -> &'static str {
1893        "app.bsky.actor.defs"
1894    }
1895    fn def_name() -> &'static str {
1896        "feedViewPref"
1897    }
1898    fn lexicon_doc() -> LexiconDoc<'static> {
1899        lexicon_doc_app_bsky_actor_defs()
1900    }
1901    fn validate(&self) -> Result<(), ConstraintError> {
1902        Ok(())
1903    }
1904}
1905
1906impl<'a> LexiconSchema for HiddenPostsPref<'a> {
1907    fn nsid() -> &'static str {
1908        "app.bsky.actor.defs"
1909    }
1910    fn def_name() -> &'static str {
1911        "hiddenPostsPref"
1912    }
1913    fn lexicon_doc() -> LexiconDoc<'static> {
1914        lexicon_doc_app_bsky_actor_defs()
1915    }
1916    fn validate(&self) -> Result<(), ConstraintError> {
1917        Ok(())
1918    }
1919}
1920
1921impl<'a> LexiconSchema for InterestsPref<'a> {
1922    fn nsid() -> &'static str {
1923        "app.bsky.actor.defs"
1924    }
1925    fn def_name() -> &'static str {
1926        "interestsPref"
1927    }
1928    fn lexicon_doc() -> LexiconDoc<'static> {
1929        lexicon_doc_app_bsky_actor_defs()
1930    }
1931    fn validate(&self) -> Result<(), ConstraintError> {
1932        {
1933            let value = &self.tags;
1934            #[allow(unused_comparisons)]
1935            if value.len() > 100usize {
1936                return Err(ConstraintError::MaxLength {
1937                    path: ValidationPath::from_field("tags"),
1938                    max: 100usize,
1939                    actual: value.len(),
1940                });
1941            }
1942        }
1943        Ok(())
1944    }
1945}
1946
1947impl<'a> LexiconSchema for KnownFollowers<'a> {
1948    fn nsid() -> &'static str {
1949        "app.bsky.actor.defs"
1950    }
1951    fn def_name() -> &'static str {
1952        "knownFollowers"
1953    }
1954    fn lexicon_doc() -> LexiconDoc<'static> {
1955        lexicon_doc_app_bsky_actor_defs()
1956    }
1957    fn validate(&self) -> Result<(), ConstraintError> {
1958        {
1959            let value = &self.followers;
1960            #[allow(unused_comparisons)]
1961            if value.len() > 5usize {
1962                return Err(ConstraintError::MaxLength {
1963                    path: ValidationPath::from_field("followers"),
1964                    max: 5usize,
1965                    actual: value.len(),
1966                });
1967            }
1968        }
1969        {
1970            let value = &self.followers;
1971            #[allow(unused_comparisons)]
1972            if value.len() < 0usize {
1973                return Err(ConstraintError::MinLength {
1974                    path: ValidationPath::from_field("followers"),
1975                    min: 0usize,
1976                    actual: value.len(),
1977                });
1978            }
1979        }
1980        Ok(())
1981    }
1982}
1983
1984impl<'a> LexiconSchema for LabelerPrefItem<'a> {
1985    fn nsid() -> &'static str {
1986        "app.bsky.actor.defs"
1987    }
1988    fn def_name() -> &'static str {
1989        "labelerPrefItem"
1990    }
1991    fn lexicon_doc() -> LexiconDoc<'static> {
1992        lexicon_doc_app_bsky_actor_defs()
1993    }
1994    fn validate(&self) -> Result<(), ConstraintError> {
1995        Ok(())
1996    }
1997}
1998
1999impl<'a> LexiconSchema for LabelersPref<'a> {
2000    fn nsid() -> &'static str {
2001        "app.bsky.actor.defs"
2002    }
2003    fn def_name() -> &'static str {
2004        "labelersPref"
2005    }
2006    fn lexicon_doc() -> LexiconDoc<'static> {
2007        lexicon_doc_app_bsky_actor_defs()
2008    }
2009    fn validate(&self) -> Result<(), ConstraintError> {
2010        Ok(())
2011    }
2012}
2013
2014impl<'a> LexiconSchema for LiveEventPreferences<'a> {
2015    fn nsid() -> &'static str {
2016        "app.bsky.actor.defs"
2017    }
2018    fn def_name() -> &'static str {
2019        "liveEventPreferences"
2020    }
2021    fn lexicon_doc() -> LexiconDoc<'static> {
2022        lexicon_doc_app_bsky_actor_defs()
2023    }
2024    fn validate(&self) -> Result<(), ConstraintError> {
2025        Ok(())
2026    }
2027}
2028
2029impl<'a> LexiconSchema for MutedWord<'a> {
2030    fn nsid() -> &'static str {
2031        "app.bsky.actor.defs"
2032    }
2033    fn def_name() -> &'static str {
2034        "mutedWord"
2035    }
2036    fn lexicon_doc() -> LexiconDoc<'static> {
2037        lexicon_doc_app_bsky_actor_defs()
2038    }
2039    fn validate(&self) -> Result<(), ConstraintError> {
2040        {
2041            let value = &self.value;
2042            #[allow(unused_comparisons)]
2043            if <str>::len(value.as_ref()) > 10000usize {
2044                return Err(ConstraintError::MaxLength {
2045                    path: ValidationPath::from_field("value"),
2046                    max: 10000usize,
2047                    actual: <str>::len(value.as_ref()),
2048                });
2049            }
2050        }
2051        {
2052            let value = &self.value;
2053            {
2054                let count = UnicodeSegmentation::graphemes(value.as_ref(), true).count();
2055                if count > 1000usize {
2056                    return Err(ConstraintError::MaxGraphemes {
2057                        path: ValidationPath::from_field("value"),
2058                        max: 1000usize,
2059                        actual: count,
2060                    });
2061                }
2062            }
2063        }
2064        Ok(())
2065    }
2066}
2067
2068impl<'a> LexiconSchema for MutedWordsPref<'a> {
2069    fn nsid() -> &'static str {
2070        "app.bsky.actor.defs"
2071    }
2072    fn def_name() -> &'static str {
2073        "mutedWordsPref"
2074    }
2075    fn lexicon_doc() -> LexiconDoc<'static> {
2076        lexicon_doc_app_bsky_actor_defs()
2077    }
2078    fn validate(&self) -> Result<(), ConstraintError> {
2079        Ok(())
2080    }
2081}
2082
2083impl<'a> LexiconSchema for Nux<'a> {
2084    fn nsid() -> &'static str {
2085        "app.bsky.actor.defs"
2086    }
2087    fn def_name() -> &'static str {
2088        "nux"
2089    }
2090    fn lexicon_doc() -> LexiconDoc<'static> {
2091        lexicon_doc_app_bsky_actor_defs()
2092    }
2093    fn validate(&self) -> Result<(), ConstraintError> {
2094        if let Some(ref value) = self.data {
2095            #[allow(unused_comparisons)]
2096            if <str>::len(value.as_ref()) > 3000usize {
2097                return Err(ConstraintError::MaxLength {
2098                    path: ValidationPath::from_field("data"),
2099                    max: 3000usize,
2100                    actual: <str>::len(value.as_ref()),
2101                });
2102            }
2103        }
2104        if let Some(ref value) = self.data {
2105            {
2106                let count = UnicodeSegmentation::graphemes(value.as_ref(), true).count();
2107                if count > 300usize {
2108                    return Err(ConstraintError::MaxGraphemes {
2109                        path: ValidationPath::from_field("data"),
2110                        max: 300usize,
2111                        actual: count,
2112                    });
2113                }
2114            }
2115        }
2116        {
2117            let value = &self.id;
2118            #[allow(unused_comparisons)]
2119            if <str>::len(value.as_ref()) > 100usize {
2120                return Err(ConstraintError::MaxLength {
2121                    path: ValidationPath::from_field("id"),
2122                    max: 100usize,
2123                    actual: <str>::len(value.as_ref()),
2124                });
2125            }
2126        }
2127        Ok(())
2128    }
2129}
2130
2131impl<'a> LexiconSchema for PersonalDetailsPref<'a> {
2132    fn nsid() -> &'static str {
2133        "app.bsky.actor.defs"
2134    }
2135    fn def_name() -> &'static str {
2136        "personalDetailsPref"
2137    }
2138    fn lexicon_doc() -> LexiconDoc<'static> {
2139        lexicon_doc_app_bsky_actor_defs()
2140    }
2141    fn validate(&self) -> Result<(), ConstraintError> {
2142        Ok(())
2143    }
2144}
2145
2146impl<'a> LexiconSchema for PostInteractionSettingsPref<'a> {
2147    fn nsid() -> &'static str {
2148        "app.bsky.actor.defs"
2149    }
2150    fn def_name() -> &'static str {
2151        "postInteractionSettingsPref"
2152    }
2153    fn lexicon_doc() -> LexiconDoc<'static> {
2154        lexicon_doc_app_bsky_actor_defs()
2155    }
2156    fn validate(&self) -> Result<(), ConstraintError> {
2157        if let Some(ref value) = self.postgate_embedding_rules {
2158            #[allow(unused_comparisons)]
2159            if value.len() > 5usize {
2160                return Err(ConstraintError::MaxLength {
2161                    path: ValidationPath::from_field("postgate_embedding_rules"),
2162                    max: 5usize,
2163                    actual: value.len(),
2164                });
2165            }
2166        }
2167        if let Some(ref value) = self.threadgate_allow_rules {
2168            #[allow(unused_comparisons)]
2169            if value.len() > 5usize {
2170                return Err(ConstraintError::MaxLength {
2171                    path: ValidationPath::from_field("threadgate_allow_rules"),
2172                    max: 5usize,
2173                    actual: value.len(),
2174                });
2175            }
2176        }
2177        Ok(())
2178    }
2179}
2180
2181impl<'a> LexiconSchema for ProfileAssociated<'a> {
2182    fn nsid() -> &'static str {
2183        "app.bsky.actor.defs"
2184    }
2185    fn def_name() -> &'static str {
2186        "profileAssociated"
2187    }
2188    fn lexicon_doc() -> LexiconDoc<'static> {
2189        lexicon_doc_app_bsky_actor_defs()
2190    }
2191    fn validate(&self) -> Result<(), ConstraintError> {
2192        Ok(())
2193    }
2194}
2195
2196impl<'a> LexiconSchema for ProfileAssociatedActivitySubscription<'a> {
2197    fn nsid() -> &'static str {
2198        "app.bsky.actor.defs"
2199    }
2200    fn def_name() -> &'static str {
2201        "profileAssociatedActivitySubscription"
2202    }
2203    fn lexicon_doc() -> LexiconDoc<'static> {
2204        lexicon_doc_app_bsky_actor_defs()
2205    }
2206    fn validate(&self) -> Result<(), ConstraintError> {
2207        Ok(())
2208    }
2209}
2210
2211impl<'a> LexiconSchema for ProfileAssociatedChat<'a> {
2212    fn nsid() -> &'static str {
2213        "app.bsky.actor.defs"
2214    }
2215    fn def_name() -> &'static str {
2216        "profileAssociatedChat"
2217    }
2218    fn lexicon_doc() -> LexiconDoc<'static> {
2219        lexicon_doc_app_bsky_actor_defs()
2220    }
2221    fn validate(&self) -> Result<(), ConstraintError> {
2222        Ok(())
2223    }
2224}
2225
2226impl<'a> LexiconSchema for ProfileAssociatedGerm<'a> {
2227    fn nsid() -> &'static str {
2228        "app.bsky.actor.defs"
2229    }
2230    fn def_name() -> &'static str {
2231        "profileAssociatedGerm"
2232    }
2233    fn lexicon_doc() -> LexiconDoc<'static> {
2234        lexicon_doc_app_bsky_actor_defs()
2235    }
2236    fn validate(&self) -> Result<(), ConstraintError> {
2237        Ok(())
2238    }
2239}
2240
2241impl<'a> LexiconSchema for ProfileView<'a> {
2242    fn nsid() -> &'static str {
2243        "app.bsky.actor.defs"
2244    }
2245    fn def_name() -> &'static str {
2246        "profileView"
2247    }
2248    fn lexicon_doc() -> LexiconDoc<'static> {
2249        lexicon_doc_app_bsky_actor_defs()
2250    }
2251    fn validate(&self) -> Result<(), ConstraintError> {
2252        if let Some(ref value) = self.description {
2253            #[allow(unused_comparisons)]
2254            if <str>::len(value.as_ref()) > 2560usize {
2255                return Err(ConstraintError::MaxLength {
2256                    path: ValidationPath::from_field("description"),
2257                    max: 2560usize,
2258                    actual: <str>::len(value.as_ref()),
2259                });
2260            }
2261        }
2262        if let Some(ref value) = self.description {
2263            {
2264                let count = UnicodeSegmentation::graphemes(value.as_ref(), true).count();
2265                if count > 256usize {
2266                    return Err(ConstraintError::MaxGraphemes {
2267                        path: ValidationPath::from_field("description"),
2268                        max: 256usize,
2269                        actual: count,
2270                    });
2271                }
2272            }
2273        }
2274        if let Some(ref value) = self.display_name {
2275            #[allow(unused_comparisons)]
2276            if <str>::len(value.as_ref()) > 640usize {
2277                return Err(ConstraintError::MaxLength {
2278                    path: ValidationPath::from_field("display_name"),
2279                    max: 640usize,
2280                    actual: <str>::len(value.as_ref()),
2281                });
2282            }
2283        }
2284        if let Some(ref value) = self.display_name {
2285            {
2286                let count = UnicodeSegmentation::graphemes(value.as_ref(), true).count();
2287                if count > 64usize {
2288                    return Err(ConstraintError::MaxGraphemes {
2289                        path: ValidationPath::from_field("display_name"),
2290                        max: 64usize,
2291                        actual: count,
2292                    });
2293                }
2294            }
2295        }
2296        Ok(())
2297    }
2298}
2299
2300impl<'a> LexiconSchema for ProfileViewBasic<'a> {
2301    fn nsid() -> &'static str {
2302        "app.bsky.actor.defs"
2303    }
2304    fn def_name() -> &'static str {
2305        "profileViewBasic"
2306    }
2307    fn lexicon_doc() -> LexiconDoc<'static> {
2308        lexicon_doc_app_bsky_actor_defs()
2309    }
2310    fn validate(&self) -> Result<(), ConstraintError> {
2311        if let Some(ref value) = self.display_name {
2312            #[allow(unused_comparisons)]
2313            if <str>::len(value.as_ref()) > 640usize {
2314                return Err(ConstraintError::MaxLength {
2315                    path: ValidationPath::from_field("display_name"),
2316                    max: 640usize,
2317                    actual: <str>::len(value.as_ref()),
2318                });
2319            }
2320        }
2321        if let Some(ref value) = self.display_name {
2322            {
2323                let count = UnicodeSegmentation::graphemes(value.as_ref(), true).count();
2324                if count > 64usize {
2325                    return Err(ConstraintError::MaxGraphemes {
2326                        path: ValidationPath::from_field("display_name"),
2327                        max: 64usize,
2328                        actual: count,
2329                    });
2330                }
2331            }
2332        }
2333        Ok(())
2334    }
2335}
2336
2337impl<'a> LexiconSchema for ProfileViewDetailed<'a> {
2338    fn nsid() -> &'static str {
2339        "app.bsky.actor.defs"
2340    }
2341    fn def_name() -> &'static str {
2342        "profileViewDetailed"
2343    }
2344    fn lexicon_doc() -> LexiconDoc<'static> {
2345        lexicon_doc_app_bsky_actor_defs()
2346    }
2347    fn validate(&self) -> Result<(), ConstraintError> {
2348        if let Some(ref value) = self.description {
2349            #[allow(unused_comparisons)]
2350            if <str>::len(value.as_ref()) > 2560usize {
2351                return Err(ConstraintError::MaxLength {
2352                    path: ValidationPath::from_field("description"),
2353                    max: 2560usize,
2354                    actual: <str>::len(value.as_ref()),
2355                });
2356            }
2357        }
2358        if let Some(ref value) = self.description {
2359            {
2360                let count = UnicodeSegmentation::graphemes(value.as_ref(), true).count();
2361                if count > 256usize {
2362                    return Err(ConstraintError::MaxGraphemes {
2363                        path: ValidationPath::from_field("description"),
2364                        max: 256usize,
2365                        actual: count,
2366                    });
2367                }
2368            }
2369        }
2370        if let Some(ref value) = self.display_name {
2371            #[allow(unused_comparisons)]
2372            if <str>::len(value.as_ref()) > 640usize {
2373                return Err(ConstraintError::MaxLength {
2374                    path: ValidationPath::from_field("display_name"),
2375                    max: 640usize,
2376                    actual: <str>::len(value.as_ref()),
2377                });
2378            }
2379        }
2380        if let Some(ref value) = self.display_name {
2381            {
2382                let count = UnicodeSegmentation::graphemes(value.as_ref(), true).count();
2383                if count > 64usize {
2384                    return Err(ConstraintError::MaxGraphemes {
2385                        path: ValidationPath::from_field("display_name"),
2386                        max: 64usize,
2387                        actual: count,
2388                    });
2389                }
2390            }
2391        }
2392        Ok(())
2393    }
2394}
2395
2396impl<'a> LexiconSchema for SavedFeed<'a> {
2397    fn nsid() -> &'static str {
2398        "app.bsky.actor.defs"
2399    }
2400    fn def_name() -> &'static str {
2401        "savedFeed"
2402    }
2403    fn lexicon_doc() -> LexiconDoc<'static> {
2404        lexicon_doc_app_bsky_actor_defs()
2405    }
2406    fn validate(&self) -> Result<(), ConstraintError> {
2407        Ok(())
2408    }
2409}
2410
2411impl<'a> LexiconSchema for SavedFeedsPref<'a> {
2412    fn nsid() -> &'static str {
2413        "app.bsky.actor.defs"
2414    }
2415    fn def_name() -> &'static str {
2416        "savedFeedsPref"
2417    }
2418    fn lexicon_doc() -> LexiconDoc<'static> {
2419        lexicon_doc_app_bsky_actor_defs()
2420    }
2421    fn validate(&self) -> Result<(), ConstraintError> {
2422        Ok(())
2423    }
2424}
2425
2426impl<'a> LexiconSchema for SavedFeedsPrefV2<'a> {
2427    fn nsid() -> &'static str {
2428        "app.bsky.actor.defs"
2429    }
2430    fn def_name() -> &'static str {
2431        "savedFeedsPrefV2"
2432    }
2433    fn lexicon_doc() -> LexiconDoc<'static> {
2434        lexicon_doc_app_bsky_actor_defs()
2435    }
2436    fn validate(&self) -> Result<(), ConstraintError> {
2437        Ok(())
2438    }
2439}
2440
2441impl<'a> LexiconSchema for StatusView<'a> {
2442    fn nsid() -> &'static str {
2443        "app.bsky.actor.defs"
2444    }
2445    fn def_name() -> &'static str {
2446        "statusView"
2447    }
2448    fn lexicon_doc() -> LexiconDoc<'static> {
2449        lexicon_doc_app_bsky_actor_defs()
2450    }
2451    fn validate(&self) -> Result<(), ConstraintError> {
2452        Ok(())
2453    }
2454}
2455
2456impl<'a> LexiconSchema for ThreadViewPref<'a> {
2457    fn nsid() -> &'static str {
2458        "app.bsky.actor.defs"
2459    }
2460    fn def_name() -> &'static str {
2461        "threadViewPref"
2462    }
2463    fn lexicon_doc() -> LexiconDoc<'static> {
2464        lexicon_doc_app_bsky_actor_defs()
2465    }
2466    fn validate(&self) -> Result<(), ConstraintError> {
2467        Ok(())
2468    }
2469}
2470
2471impl<'a> LexiconSchema for VerificationPrefs<'a> {
2472    fn nsid() -> &'static str {
2473        "app.bsky.actor.defs"
2474    }
2475    fn def_name() -> &'static str {
2476        "verificationPrefs"
2477    }
2478    fn lexicon_doc() -> LexiconDoc<'static> {
2479        lexicon_doc_app_bsky_actor_defs()
2480    }
2481    fn validate(&self) -> Result<(), ConstraintError> {
2482        Ok(())
2483    }
2484}
2485
2486impl<'a> LexiconSchema for VerificationState<'a> {
2487    fn nsid() -> &'static str {
2488        "app.bsky.actor.defs"
2489    }
2490    fn def_name() -> &'static str {
2491        "verificationState"
2492    }
2493    fn lexicon_doc() -> LexiconDoc<'static> {
2494        lexicon_doc_app_bsky_actor_defs()
2495    }
2496    fn validate(&self) -> Result<(), ConstraintError> {
2497        Ok(())
2498    }
2499}
2500
2501impl<'a> LexiconSchema for VerificationView<'a> {
2502    fn nsid() -> &'static str {
2503        "app.bsky.actor.defs"
2504    }
2505    fn def_name() -> &'static str {
2506        "verificationView"
2507    }
2508    fn lexicon_doc() -> LexiconDoc<'static> {
2509        lexicon_doc_app_bsky_actor_defs()
2510    }
2511    fn validate(&self) -> Result<(), ConstraintError> {
2512        Ok(())
2513    }
2514}
2515
2516impl<'a> LexiconSchema for ViewerState<'a> {
2517    fn nsid() -> &'static str {
2518        "app.bsky.actor.defs"
2519    }
2520    fn def_name() -> &'static str {
2521        "viewerState"
2522    }
2523    fn lexicon_doc() -> LexiconDoc<'static> {
2524        lexicon_doc_app_bsky_actor_defs()
2525    }
2526    fn validate(&self) -> Result<(), ConstraintError> {
2527        Ok(())
2528    }
2529}
2530
2531fn _default_adult_content_pref_enabled() -> bool {
2532    false
2533}
2534
2535impl Default for AdultContentPref<'_> {
2536    fn default() -> Self {
2537        Self {
2538            enabled: false,
2539            extra_data: Default::default(),
2540        }
2541    }
2542}
2543
2544pub mod adult_content_pref_state {
2545
2546    pub use crate::builder_types::{Set, Unset, IsSet, IsUnset};
2547    #[allow(unused)]
2548    use ::core::marker::PhantomData;
2549    mod sealed {
2550        pub trait Sealed {}
2551    }
2552    /// State trait tracking which required fields have been set
2553    pub trait State: sealed::Sealed {
2554        type Enabled;
2555    }
2556    /// Empty state - all required fields are unset
2557    pub struct Empty(());
2558    impl sealed::Sealed for Empty {}
2559    impl State for Empty {
2560        type Enabled = Unset;
2561    }
2562    ///State transition - sets the `enabled` field to Set
2563    pub struct SetEnabled<S: State = Empty>(PhantomData<fn() -> S>);
2564    impl<S: State> sealed::Sealed for SetEnabled<S> {}
2565    impl<S: State> State for SetEnabled<S> {
2566        type Enabled = Set<members::enabled>;
2567    }
2568    /// Marker types for field names
2569    #[allow(non_camel_case_types)]
2570    pub mod members {
2571        ///Marker type for the `enabled` field
2572        pub struct enabled(());
2573    }
2574}
2575
2576/// Builder for constructing an instance of this type
2577pub struct AdultContentPrefBuilder<'a, S: adult_content_pref_state::State> {
2578    _state: PhantomData<fn() -> S>,
2579    _fields: (Option<bool>,),
2580    _lifetime: PhantomData<&'a ()>,
2581}
2582
2583impl<'a> AdultContentPref<'a> {
2584    /// Create a new builder for this type
2585    pub fn new() -> AdultContentPrefBuilder<'a, adult_content_pref_state::Empty> {
2586        AdultContentPrefBuilder::new()
2587    }
2588}
2589
2590impl<'a> AdultContentPrefBuilder<'a, adult_content_pref_state::Empty> {
2591    /// Create a new builder with all fields unset
2592    pub fn new() -> Self {
2593        AdultContentPrefBuilder {
2594            _state: PhantomData,
2595            _fields: (None,),
2596            _lifetime: PhantomData,
2597        }
2598    }
2599}
2600
2601impl<'a, S> AdultContentPrefBuilder<'a, S>
2602where
2603    S: adult_content_pref_state::State,
2604    S::Enabled: adult_content_pref_state::IsUnset,
2605{
2606    /// Set the `enabled` field (required)
2607    pub fn enabled(
2608        mut self,
2609        value: impl Into<bool>,
2610    ) -> AdultContentPrefBuilder<'a, adult_content_pref_state::SetEnabled<S>> {
2611        self._fields.0 = Option::Some(value.into());
2612        AdultContentPrefBuilder {
2613            _state: PhantomData,
2614            _fields: self._fields,
2615            _lifetime: PhantomData,
2616        }
2617    }
2618}
2619
2620impl<'a, S> AdultContentPrefBuilder<'a, S>
2621where
2622    S: adult_content_pref_state::State,
2623    S::Enabled: adult_content_pref_state::IsSet,
2624{
2625    /// Build the final struct
2626    pub fn build(self) -> AdultContentPref<'a> {
2627        AdultContentPref {
2628            enabled: self._fields.0.unwrap(),
2629            extra_data: Default::default(),
2630        }
2631    }
2632    /// Build the final struct with custom extra_data
2633    pub fn build_with_data(
2634        self,
2635        extra_data: BTreeMap<jacquard_common::deps::smol_str::SmolStr, Data<'a>>,
2636    ) -> AdultContentPref<'a> {
2637        AdultContentPref {
2638            enabled: self._fields.0.unwrap(),
2639            extra_data: Some(extra_data),
2640        }
2641    }
2642}
2643
2644fn lexicon_doc_app_bsky_actor_defs() -> LexiconDoc<'static> {
2645    #[allow(unused_imports)]
2646    use jacquard_common::{CowStr, deps::smol_str::SmolStr, types::blob::MimeType};
2647    use jacquard_lexicon::lexicon::*;
2648    use alloc::collections::BTreeMap;
2649    LexiconDoc {
2650        lexicon: Lexicon::Lexicon1,
2651        id: CowStr::new_static("app.bsky.actor.defs"),
2652        defs: {
2653            let mut map = BTreeMap::new();
2654            map.insert(
2655                SmolStr::new_static("adultContentPref"),
2656                LexUserType::Object(LexObject {
2657                    required: Some(vec![SmolStr::new_static("enabled")]),
2658                    properties: {
2659                        #[allow(unused_mut)]
2660                        let mut map = BTreeMap::new();
2661                        map.insert(
2662                            SmolStr::new_static("enabled"),
2663                            LexObjectProperty::Boolean(LexBoolean {
2664                                ..Default::default()
2665                            }),
2666                        );
2667                        map
2668                    },
2669                    ..Default::default()
2670                }),
2671            );
2672            map.insert(
2673                SmolStr::new_static("bskyAppProgressGuide"),
2674                LexUserType::Object(LexObject {
2675                    description: Some(
2676                        CowStr::new_static(
2677                            "If set, an active progress guide. Once completed, can be set to undefined. Should have unspecced fields tracking progress.",
2678                        ),
2679                    ),
2680                    required: Some(vec![SmolStr::new_static("guide")]),
2681                    properties: {
2682                        #[allow(unused_mut)]
2683                        let mut map = BTreeMap::new();
2684                        map.insert(
2685                            SmolStr::new_static("guide"),
2686                            LexObjectProperty::String(LexString {
2687                                max_length: Some(100usize),
2688                                ..Default::default()
2689                            }),
2690                        );
2691                        map
2692                    },
2693                    ..Default::default()
2694                }),
2695            );
2696            map.insert(
2697                SmolStr::new_static("bskyAppStatePref"),
2698                LexUserType::Object(LexObject {
2699                    description: Some(
2700                        CowStr::new_static(
2701                            "A grab bag of state that's specific to the bsky.app program. Third-party apps shouldn't use this.",
2702                        ),
2703                    ),
2704                    properties: {
2705                        #[allow(unused_mut)]
2706                        let mut map = BTreeMap::new();
2707                        map.insert(
2708                            SmolStr::new_static("activeProgressGuide"),
2709                            LexObjectProperty::Ref(LexRef {
2710                                r#ref: CowStr::new_static("#bskyAppProgressGuide"),
2711                                ..Default::default()
2712                            }),
2713                        );
2714                        map.insert(
2715                            SmolStr::new_static("nuxs"),
2716                            LexObjectProperty::Array(LexArray {
2717                                description: Some(
2718                                    CowStr::new_static(
2719                                        "Storage for NUXs the user has encountered.",
2720                                    ),
2721                                ),
2722                                items: LexArrayItem::Ref(LexRef {
2723                                    r#ref: CowStr::new_static("app.bsky.actor.defs#nux"),
2724                                    ..Default::default()
2725                                }),
2726                                max_length: Some(100usize),
2727                                ..Default::default()
2728                            }),
2729                        );
2730                        map.insert(
2731                            SmolStr::new_static("queuedNudges"),
2732                            LexObjectProperty::Array(LexArray {
2733                                description: Some(
2734                                    CowStr::new_static(
2735                                        "An array of tokens which identify nudges (modals, popups, tours, highlight dots) that should be shown to the user.",
2736                                    ),
2737                                ),
2738                                items: LexArrayItem::String(LexString {
2739                                    max_length: Some(100usize),
2740                                    ..Default::default()
2741                                }),
2742                                max_length: Some(1000usize),
2743                                ..Default::default()
2744                            }),
2745                        );
2746                        map
2747                    },
2748                    ..Default::default()
2749                }),
2750            );
2751            map.insert(
2752                SmolStr::new_static("contentLabelPref"),
2753                LexUserType::Object(LexObject {
2754                    required: Some(
2755                        vec![
2756                            SmolStr::new_static("label"),
2757                            SmolStr::new_static("visibility")
2758                        ],
2759                    ),
2760                    properties: {
2761                        #[allow(unused_mut)]
2762                        let mut map = BTreeMap::new();
2763                        map.insert(
2764                            SmolStr::new_static("label"),
2765                            LexObjectProperty::String(LexString { ..Default::default() }),
2766                        );
2767                        map.insert(
2768                            SmolStr::new_static("labelerDid"),
2769                            LexObjectProperty::String(LexString {
2770                                description: Some(
2771                                    CowStr::new_static(
2772                                        "Which labeler does this preference apply to? If undefined, applies globally.",
2773                                    ),
2774                                ),
2775                                format: Some(LexStringFormat::Did),
2776                                ..Default::default()
2777                            }),
2778                        );
2779                        map.insert(
2780                            SmolStr::new_static("visibility"),
2781                            LexObjectProperty::String(LexString { ..Default::default() }),
2782                        );
2783                        map
2784                    },
2785                    ..Default::default()
2786                }),
2787            );
2788            map.insert(
2789                SmolStr::new_static("declaredAgePref"),
2790                LexUserType::Object(LexObject {
2791                    description: Some(
2792                        CowStr::new_static(
2793                            "Read-only preference containing value(s) inferred from the user's declared birthdate. Absence of this preference object in the response indicates that the user has not made a declaration.",
2794                        ),
2795                    ),
2796                    properties: {
2797                        #[allow(unused_mut)]
2798                        let mut map = BTreeMap::new();
2799                        map.insert(
2800                            SmolStr::new_static("isOverAge13"),
2801                            LexObjectProperty::Boolean(LexBoolean {
2802                                ..Default::default()
2803                            }),
2804                        );
2805                        map.insert(
2806                            SmolStr::new_static("isOverAge16"),
2807                            LexObjectProperty::Boolean(LexBoolean {
2808                                ..Default::default()
2809                            }),
2810                        );
2811                        map.insert(
2812                            SmolStr::new_static("isOverAge18"),
2813                            LexObjectProperty::Boolean(LexBoolean {
2814                                ..Default::default()
2815                            }),
2816                        );
2817                        map
2818                    },
2819                    ..Default::default()
2820                }),
2821            );
2822            map.insert(
2823                SmolStr::new_static("feedViewPref"),
2824                LexUserType::Object(LexObject {
2825                    required: Some(vec![SmolStr::new_static("feed")]),
2826                    properties: {
2827                        #[allow(unused_mut)]
2828                        let mut map = BTreeMap::new();
2829                        map.insert(
2830                            SmolStr::new_static("feed"),
2831                            LexObjectProperty::String(LexString {
2832                                description: Some(
2833                                    CowStr::new_static(
2834                                        "The URI of the feed, or an identifier which describes the feed.",
2835                                    ),
2836                                ),
2837                                ..Default::default()
2838                            }),
2839                        );
2840                        map.insert(
2841                            SmolStr::new_static("hideQuotePosts"),
2842                            LexObjectProperty::Boolean(LexBoolean {
2843                                ..Default::default()
2844                            }),
2845                        );
2846                        map.insert(
2847                            SmolStr::new_static("hideReplies"),
2848                            LexObjectProperty::Boolean(LexBoolean {
2849                                ..Default::default()
2850                            }),
2851                        );
2852                        map.insert(
2853                            SmolStr::new_static("hideRepliesByLikeCount"),
2854                            LexObjectProperty::Integer(LexInteger {
2855                                ..Default::default()
2856                            }),
2857                        );
2858                        map.insert(
2859                            SmolStr::new_static("hideRepliesByUnfollowed"),
2860                            LexObjectProperty::Boolean(LexBoolean {
2861                                ..Default::default()
2862                            }),
2863                        );
2864                        map.insert(
2865                            SmolStr::new_static("hideReposts"),
2866                            LexObjectProperty::Boolean(LexBoolean {
2867                                ..Default::default()
2868                            }),
2869                        );
2870                        map
2871                    },
2872                    ..Default::default()
2873                }),
2874            );
2875            map.insert(
2876                SmolStr::new_static("hiddenPostsPref"),
2877                LexUserType::Object(LexObject {
2878                    required: Some(vec![SmolStr::new_static("items")]),
2879                    properties: {
2880                        #[allow(unused_mut)]
2881                        let mut map = BTreeMap::new();
2882                        map.insert(
2883                            SmolStr::new_static("items"),
2884                            LexObjectProperty::Array(LexArray {
2885                                description: Some(
2886                                    CowStr::new_static(
2887                                        "A list of URIs of posts the account owner has hidden.",
2888                                    ),
2889                                ),
2890                                items: LexArrayItem::String(LexString {
2891                                    format: Some(LexStringFormat::AtUri),
2892                                    ..Default::default()
2893                                }),
2894                                ..Default::default()
2895                            }),
2896                        );
2897                        map
2898                    },
2899                    ..Default::default()
2900                }),
2901            );
2902            map.insert(
2903                SmolStr::new_static("interestsPref"),
2904                LexUserType::Object(LexObject {
2905                    required: Some(vec![SmolStr::new_static("tags")]),
2906                    properties: {
2907                        #[allow(unused_mut)]
2908                        let mut map = BTreeMap::new();
2909                        map.insert(
2910                            SmolStr::new_static("tags"),
2911                            LexObjectProperty::Array(LexArray {
2912                                description: Some(
2913                                    CowStr::new_static(
2914                                        "A list of tags which describe the account owner's interests gathered during onboarding.",
2915                                    ),
2916                                ),
2917                                items: LexArrayItem::String(LexString {
2918                                    max_length: Some(640usize),
2919                                    max_graphemes: Some(64usize),
2920                                    ..Default::default()
2921                                }),
2922                                max_length: Some(100usize),
2923                                ..Default::default()
2924                            }),
2925                        );
2926                        map
2927                    },
2928                    ..Default::default()
2929                }),
2930            );
2931            map.insert(
2932                SmolStr::new_static("knownFollowers"),
2933                LexUserType::Object(LexObject {
2934                    description: Some(
2935                        CowStr::new_static(
2936                            "The subject's followers whom you also follow",
2937                        ),
2938                    ),
2939                    required: Some(
2940                        vec![
2941                            SmolStr::new_static("count"),
2942                            SmolStr::new_static("followers")
2943                        ],
2944                    ),
2945                    properties: {
2946                        #[allow(unused_mut)]
2947                        let mut map = BTreeMap::new();
2948                        map.insert(
2949                            SmolStr::new_static("count"),
2950                            LexObjectProperty::Integer(LexInteger {
2951                                ..Default::default()
2952                            }),
2953                        );
2954                        map.insert(
2955                            SmolStr::new_static("followers"),
2956                            LexObjectProperty::Array(LexArray {
2957                                items: LexArrayItem::Ref(LexRef {
2958                                    r#ref: CowStr::new_static("#profileViewBasic"),
2959                                    ..Default::default()
2960                                }),
2961                                min_length: Some(0usize),
2962                                max_length: Some(5usize),
2963                                ..Default::default()
2964                            }),
2965                        );
2966                        map
2967                    },
2968                    ..Default::default()
2969                }),
2970            );
2971            map.insert(
2972                SmolStr::new_static("labelerPrefItem"),
2973                LexUserType::Object(LexObject {
2974                    required: Some(vec![SmolStr::new_static("did")]),
2975                    properties: {
2976                        #[allow(unused_mut)]
2977                        let mut map = BTreeMap::new();
2978                        map.insert(
2979                            SmolStr::new_static("did"),
2980                            LexObjectProperty::String(LexString {
2981                                format: Some(LexStringFormat::Did),
2982                                ..Default::default()
2983                            }),
2984                        );
2985                        map
2986                    },
2987                    ..Default::default()
2988                }),
2989            );
2990            map.insert(
2991                SmolStr::new_static("labelersPref"),
2992                LexUserType::Object(LexObject {
2993                    required: Some(vec![SmolStr::new_static("labelers")]),
2994                    properties: {
2995                        #[allow(unused_mut)]
2996                        let mut map = BTreeMap::new();
2997                        map.insert(
2998                            SmolStr::new_static("labelers"),
2999                            LexObjectProperty::Array(LexArray {
3000                                items: LexArrayItem::Ref(LexRef {
3001                                    r#ref: CowStr::new_static("#labelerPrefItem"),
3002                                    ..Default::default()
3003                                }),
3004                                ..Default::default()
3005                            }),
3006                        );
3007                        map
3008                    },
3009                    ..Default::default()
3010                }),
3011            );
3012            map.insert(
3013                SmolStr::new_static("liveEventPreferences"),
3014                LexUserType::Object(LexObject {
3015                    description: Some(
3016                        CowStr::new_static("Preferences for live events."),
3017                    ),
3018                    properties: {
3019                        #[allow(unused_mut)]
3020                        let mut map = BTreeMap::new();
3021                        map.insert(
3022                            SmolStr::new_static("hiddenFeedIds"),
3023                            LexObjectProperty::Array(LexArray {
3024                                description: Some(
3025                                    CowStr::new_static(
3026                                        "A list of feed IDs that the user has hidden from live events.",
3027                                    ),
3028                                ),
3029                                items: LexArrayItem::String(LexString {
3030                                    ..Default::default()
3031                                }),
3032                                ..Default::default()
3033                            }),
3034                        );
3035                        map.insert(
3036                            SmolStr::new_static("hideAllFeeds"),
3037                            LexObjectProperty::Boolean(LexBoolean {
3038                                ..Default::default()
3039                            }),
3040                        );
3041                        map
3042                    },
3043                    ..Default::default()
3044                }),
3045            );
3046            map.insert(
3047                SmolStr::new_static("mutedWord"),
3048                LexUserType::Object(LexObject {
3049                    description: Some(
3050                        CowStr::new_static("A word that the account owner has muted."),
3051                    ),
3052                    required: Some(
3053                        vec![
3054                            SmolStr::new_static("value"), SmolStr::new_static("targets")
3055                        ],
3056                    ),
3057                    properties: {
3058                        #[allow(unused_mut)]
3059                        let mut map = BTreeMap::new();
3060                        map.insert(
3061                            SmolStr::new_static("actorTarget"),
3062                            LexObjectProperty::String(LexString {
3063                                description: Some(
3064                                    CowStr::new_static(
3065                                        "Groups of users to apply the muted word to. If undefined, applies to all users.",
3066                                    ),
3067                                ),
3068                                ..Default::default()
3069                            }),
3070                        );
3071                        map.insert(
3072                            SmolStr::new_static("expiresAt"),
3073                            LexObjectProperty::String(LexString {
3074                                description: Some(
3075                                    CowStr::new_static(
3076                                        "The date and time at which the muted word will expire and no longer be applied.",
3077                                    ),
3078                                ),
3079                                format: Some(LexStringFormat::Datetime),
3080                                ..Default::default()
3081                            }),
3082                        );
3083                        map.insert(
3084                            SmolStr::new_static("id"),
3085                            LexObjectProperty::String(LexString { ..Default::default() }),
3086                        );
3087                        map.insert(
3088                            SmolStr::new_static("targets"),
3089                            LexObjectProperty::Array(LexArray {
3090                                description: Some(
3091                                    CowStr::new_static(
3092                                        "The intended targets of the muted word.",
3093                                    ),
3094                                ),
3095                                items: LexArrayItem::Ref(LexRef {
3096                                    r#ref: CowStr::new_static(
3097                                        "app.bsky.actor.defs#mutedWordTarget",
3098                                    ),
3099                                    ..Default::default()
3100                                }),
3101                                ..Default::default()
3102                            }),
3103                        );
3104                        map.insert(
3105                            SmolStr::new_static("value"),
3106                            LexObjectProperty::String(LexString {
3107                                description: Some(
3108                                    CowStr::new_static("The muted word itself."),
3109                                ),
3110                                max_length: Some(10000usize),
3111                                max_graphemes: Some(1000usize),
3112                                ..Default::default()
3113                            }),
3114                        );
3115                        map
3116                    },
3117                    ..Default::default()
3118                }),
3119            );
3120            map.insert(
3121                SmolStr::new_static("mutedWordTarget"),
3122                LexUserType::String(LexString {
3123                    max_length: Some(640usize),
3124                    max_graphemes: Some(64usize),
3125                    ..Default::default()
3126                }),
3127            );
3128            map.insert(
3129                SmolStr::new_static("mutedWordsPref"),
3130                LexUserType::Object(LexObject {
3131                    required: Some(vec![SmolStr::new_static("items")]),
3132                    properties: {
3133                        #[allow(unused_mut)]
3134                        let mut map = BTreeMap::new();
3135                        map.insert(
3136                            SmolStr::new_static("items"),
3137                            LexObjectProperty::Array(LexArray {
3138                                description: Some(
3139                                    CowStr::new_static(
3140                                        "A list of words the account owner has muted.",
3141                                    ),
3142                                ),
3143                                items: LexArrayItem::Ref(LexRef {
3144                                    r#ref: CowStr::new_static("app.bsky.actor.defs#mutedWord"),
3145                                    ..Default::default()
3146                                }),
3147                                ..Default::default()
3148                            }),
3149                        );
3150                        map
3151                    },
3152                    ..Default::default()
3153                }),
3154            );
3155            map.insert(
3156                SmolStr::new_static("nux"),
3157                LexUserType::Object(LexObject {
3158                    description: Some(
3159                        CowStr::new_static("A new user experiences (NUX) storage object"),
3160                    ),
3161                    required: Some(
3162                        vec![SmolStr::new_static("id"), SmolStr::new_static("completed")],
3163                    ),
3164                    properties: {
3165                        #[allow(unused_mut)]
3166                        let mut map = BTreeMap::new();
3167                        map.insert(
3168                            SmolStr::new_static("completed"),
3169                            LexObjectProperty::Boolean(LexBoolean {
3170                                ..Default::default()
3171                            }),
3172                        );
3173                        map.insert(
3174                            SmolStr::new_static("data"),
3175                            LexObjectProperty::String(LexString {
3176                                description: Some(
3177                                    CowStr::new_static(
3178                                        "Arbitrary data for the NUX. The structure is defined by the NUX itself. Limited to 300 characters.",
3179                                    ),
3180                                ),
3181                                max_length: Some(3000usize),
3182                                max_graphemes: Some(300usize),
3183                                ..Default::default()
3184                            }),
3185                        );
3186                        map.insert(
3187                            SmolStr::new_static("expiresAt"),
3188                            LexObjectProperty::String(LexString {
3189                                description: Some(
3190                                    CowStr::new_static(
3191                                        "The date and time at which the NUX will expire and should be considered completed.",
3192                                    ),
3193                                ),
3194                                format: Some(LexStringFormat::Datetime),
3195                                ..Default::default()
3196                            }),
3197                        );
3198                        map.insert(
3199                            SmolStr::new_static("id"),
3200                            LexObjectProperty::String(LexString {
3201                                max_length: Some(100usize),
3202                                ..Default::default()
3203                            }),
3204                        );
3205                        map
3206                    },
3207                    ..Default::default()
3208                }),
3209            );
3210            map.insert(
3211                SmolStr::new_static("personalDetailsPref"),
3212                LexUserType::Object(LexObject {
3213                    properties: {
3214                        #[allow(unused_mut)]
3215                        let mut map = BTreeMap::new();
3216                        map.insert(
3217                            SmolStr::new_static("birthDate"),
3218                            LexObjectProperty::String(LexString {
3219                                description: Some(
3220                                    CowStr::new_static("The birth date of account owner."),
3221                                ),
3222                                format: Some(LexStringFormat::Datetime),
3223                                ..Default::default()
3224                            }),
3225                        );
3226                        map
3227                    },
3228                    ..Default::default()
3229                }),
3230            );
3231            map.insert(
3232                SmolStr::new_static("postInteractionSettingsPref"),
3233                LexUserType::Object(LexObject {
3234                    description: Some(
3235                        CowStr::new_static(
3236                            "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.",
3237                        ),
3238                    ),
3239                    required: Some(vec![]),
3240                    properties: {
3241                        #[allow(unused_mut)]
3242                        let mut map = BTreeMap::new();
3243                        map.insert(
3244                            SmolStr::new_static("postgateEmbeddingRules"),
3245                            LexObjectProperty::Array(LexArray {
3246                                description: Some(
3247                                    CowStr::new_static(
3248                                        "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.",
3249                                    ),
3250                                ),
3251                                items: LexArrayItem::Union(LexRefUnion {
3252                                    refs: vec![
3253                                        CowStr::new_static("app.bsky.feed.postgate#disableRule")
3254                                    ],
3255                                    ..Default::default()
3256                                }),
3257                                max_length: Some(5usize),
3258                                ..Default::default()
3259                            }),
3260                        );
3261                        map.insert(
3262                            SmolStr::new_static("threadgateAllowRules"),
3263                            LexObjectProperty::Array(LexArray {
3264                                description: Some(
3265                                    CowStr::new_static(
3266                                        "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.",
3267                                    ),
3268                                ),
3269                                items: LexArrayItem::Union(LexRefUnion {
3270                                    refs: vec![
3271                                        CowStr::new_static("app.bsky.feed.threadgate#mentionRule"),
3272                                        CowStr::new_static("app.bsky.feed.threadgate#followerRule"),
3273                                        CowStr::new_static("app.bsky.feed.threadgate#followingRule"),
3274                                        CowStr::new_static("app.bsky.feed.threadgate#listRule")
3275                                    ],
3276                                    ..Default::default()
3277                                }),
3278                                max_length: Some(5usize),
3279                                ..Default::default()
3280                            }),
3281                        );
3282                        map
3283                    },
3284                    ..Default::default()
3285                }),
3286            );
3287            map.insert(
3288                SmolStr::new_static("preferences"),
3289                LexUserType::Array(LexArray {
3290                    items: LexArrayItem::Union(LexRefUnion {
3291                        refs: vec![
3292                            CowStr::new_static("#adultContentPref"),
3293                            CowStr::new_static("#contentLabelPref"),
3294                            CowStr::new_static("#savedFeedsPref"),
3295                            CowStr::new_static("#savedFeedsPrefV2"),
3296                            CowStr::new_static("#personalDetailsPref"),
3297                            CowStr::new_static("#declaredAgePref"),
3298                            CowStr::new_static("#feedViewPref"),
3299                            CowStr::new_static("#threadViewPref"),
3300                            CowStr::new_static("#interestsPref"),
3301                            CowStr::new_static("#mutedWordsPref"),
3302                            CowStr::new_static("#hiddenPostsPref"),
3303                            CowStr::new_static("#bskyAppStatePref"),
3304                            CowStr::new_static("#labelersPref"),
3305                            CowStr::new_static("#postInteractionSettingsPref"),
3306                            CowStr::new_static("#verificationPrefs"),
3307                            CowStr::new_static("#liveEventPreferences")
3308                        ],
3309                        ..Default::default()
3310                    }),
3311                    ..Default::default()
3312                }),
3313            );
3314            map.insert(
3315                SmolStr::new_static("profileAssociated"),
3316                LexUserType::Object(LexObject {
3317                    properties: {
3318                        #[allow(unused_mut)]
3319                        let mut map = BTreeMap::new();
3320                        map.insert(
3321                            SmolStr::new_static("activitySubscription"),
3322                            LexObjectProperty::Ref(LexRef {
3323                                r#ref: CowStr::new_static(
3324                                    "#profileAssociatedActivitySubscription",
3325                                ),
3326                                ..Default::default()
3327                            }),
3328                        );
3329                        map.insert(
3330                            SmolStr::new_static("chat"),
3331                            LexObjectProperty::Ref(LexRef {
3332                                r#ref: CowStr::new_static("#profileAssociatedChat"),
3333                                ..Default::default()
3334                            }),
3335                        );
3336                        map.insert(
3337                            SmolStr::new_static("feedgens"),
3338                            LexObjectProperty::Integer(LexInteger {
3339                                ..Default::default()
3340                            }),
3341                        );
3342                        map.insert(
3343                            SmolStr::new_static("germ"),
3344                            LexObjectProperty::Ref(LexRef {
3345                                r#ref: CowStr::new_static("#profileAssociatedGerm"),
3346                                ..Default::default()
3347                            }),
3348                        );
3349                        map.insert(
3350                            SmolStr::new_static("labeler"),
3351                            LexObjectProperty::Boolean(LexBoolean {
3352                                ..Default::default()
3353                            }),
3354                        );
3355                        map.insert(
3356                            SmolStr::new_static("lists"),
3357                            LexObjectProperty::Integer(LexInteger {
3358                                ..Default::default()
3359                            }),
3360                        );
3361                        map.insert(
3362                            SmolStr::new_static("starterPacks"),
3363                            LexObjectProperty::Integer(LexInteger {
3364                                ..Default::default()
3365                            }),
3366                        );
3367                        map
3368                    },
3369                    ..Default::default()
3370                }),
3371            );
3372            map.insert(
3373                SmolStr::new_static("profileAssociatedActivitySubscription"),
3374                LexUserType::Object(LexObject {
3375                    required: Some(vec![SmolStr::new_static("allowSubscriptions")]),
3376                    properties: {
3377                        #[allow(unused_mut)]
3378                        let mut map = BTreeMap::new();
3379                        map.insert(
3380                            SmolStr::new_static("allowSubscriptions"),
3381                            LexObjectProperty::String(LexString { ..Default::default() }),
3382                        );
3383                        map
3384                    },
3385                    ..Default::default()
3386                }),
3387            );
3388            map.insert(
3389                SmolStr::new_static("profileAssociatedChat"),
3390                LexUserType::Object(LexObject {
3391                    required: Some(vec![SmolStr::new_static("allowIncoming")]),
3392                    properties: {
3393                        #[allow(unused_mut)]
3394                        let mut map = BTreeMap::new();
3395                        map.insert(
3396                            SmolStr::new_static("allowIncoming"),
3397                            LexObjectProperty::String(LexString { ..Default::default() }),
3398                        );
3399                        map
3400                    },
3401                    ..Default::default()
3402                }),
3403            );
3404            map.insert(
3405                SmolStr::new_static("profileAssociatedGerm"),
3406                LexUserType::Object(LexObject {
3407                    required: Some(
3408                        vec![
3409                            SmolStr::new_static("showButtonTo"),
3410                            SmolStr::new_static("messageMeUrl")
3411                        ],
3412                    ),
3413                    properties: {
3414                        #[allow(unused_mut)]
3415                        let mut map = BTreeMap::new();
3416                        map.insert(
3417                            SmolStr::new_static("messageMeUrl"),
3418                            LexObjectProperty::String(LexString {
3419                                format: Some(LexStringFormat::Uri),
3420                                ..Default::default()
3421                            }),
3422                        );
3423                        map.insert(
3424                            SmolStr::new_static("showButtonTo"),
3425                            LexObjectProperty::String(LexString { ..Default::default() }),
3426                        );
3427                        map
3428                    },
3429                    ..Default::default()
3430                }),
3431            );
3432            map.insert(
3433                SmolStr::new_static("profileView"),
3434                LexUserType::Object(LexObject {
3435                    required: Some(
3436                        vec![SmolStr::new_static("did"), SmolStr::new_static("handle")],
3437                    ),
3438                    properties: {
3439                        #[allow(unused_mut)]
3440                        let mut map = BTreeMap::new();
3441                        map.insert(
3442                            SmolStr::new_static("associated"),
3443                            LexObjectProperty::Ref(LexRef {
3444                                r#ref: CowStr::new_static("#profileAssociated"),
3445                                ..Default::default()
3446                            }),
3447                        );
3448                        map.insert(
3449                            SmolStr::new_static("avatar"),
3450                            LexObjectProperty::String(LexString {
3451                                format: Some(LexStringFormat::Uri),
3452                                ..Default::default()
3453                            }),
3454                        );
3455                        map.insert(
3456                            SmolStr::new_static("createdAt"),
3457                            LexObjectProperty::String(LexString {
3458                                format: Some(LexStringFormat::Datetime),
3459                                ..Default::default()
3460                            }),
3461                        );
3462                        map.insert(
3463                            SmolStr::new_static("debug"),
3464                            LexObjectProperty::Unknown(LexUnknown {
3465                                ..Default::default()
3466                            }),
3467                        );
3468                        map.insert(
3469                            SmolStr::new_static("description"),
3470                            LexObjectProperty::String(LexString {
3471                                max_length: Some(2560usize),
3472                                max_graphemes: Some(256usize),
3473                                ..Default::default()
3474                            }),
3475                        );
3476                        map.insert(
3477                            SmolStr::new_static("did"),
3478                            LexObjectProperty::String(LexString {
3479                                format: Some(LexStringFormat::Did),
3480                                ..Default::default()
3481                            }),
3482                        );
3483                        map.insert(
3484                            SmolStr::new_static("displayName"),
3485                            LexObjectProperty::String(LexString {
3486                                max_length: Some(640usize),
3487                                max_graphemes: Some(64usize),
3488                                ..Default::default()
3489                            }),
3490                        );
3491                        map.insert(
3492                            SmolStr::new_static("handle"),
3493                            LexObjectProperty::String(LexString {
3494                                format: Some(LexStringFormat::Handle),
3495                                ..Default::default()
3496                            }),
3497                        );
3498                        map.insert(
3499                            SmolStr::new_static("indexedAt"),
3500                            LexObjectProperty::String(LexString {
3501                                format: Some(LexStringFormat::Datetime),
3502                                ..Default::default()
3503                            }),
3504                        );
3505                        map.insert(
3506                            SmolStr::new_static("labels"),
3507                            LexObjectProperty::Array(LexArray {
3508                                items: LexArrayItem::Ref(LexRef {
3509                                    r#ref: CowStr::new_static("com.atproto.label.defs#label"),
3510                                    ..Default::default()
3511                                }),
3512                                ..Default::default()
3513                            }),
3514                        );
3515                        map.insert(
3516                            SmolStr::new_static("pronouns"),
3517                            LexObjectProperty::String(LexString { ..Default::default() }),
3518                        );
3519                        map.insert(
3520                            SmolStr::new_static("status"),
3521                            LexObjectProperty::Ref(LexRef {
3522                                r#ref: CowStr::new_static("#statusView"),
3523                                ..Default::default()
3524                            }),
3525                        );
3526                        map.insert(
3527                            SmolStr::new_static("verification"),
3528                            LexObjectProperty::Ref(LexRef {
3529                                r#ref: CowStr::new_static("#verificationState"),
3530                                ..Default::default()
3531                            }),
3532                        );
3533                        map.insert(
3534                            SmolStr::new_static("viewer"),
3535                            LexObjectProperty::Ref(LexRef {
3536                                r#ref: CowStr::new_static("#viewerState"),
3537                                ..Default::default()
3538                            }),
3539                        );
3540                        map
3541                    },
3542                    ..Default::default()
3543                }),
3544            );
3545            map.insert(
3546                SmolStr::new_static("profileViewBasic"),
3547                LexUserType::Object(LexObject {
3548                    required: Some(
3549                        vec![SmolStr::new_static("did"), SmolStr::new_static("handle")],
3550                    ),
3551                    properties: {
3552                        #[allow(unused_mut)]
3553                        let mut map = BTreeMap::new();
3554                        map.insert(
3555                            SmolStr::new_static("associated"),
3556                            LexObjectProperty::Ref(LexRef {
3557                                r#ref: CowStr::new_static("#profileAssociated"),
3558                                ..Default::default()
3559                            }),
3560                        );
3561                        map.insert(
3562                            SmolStr::new_static("avatar"),
3563                            LexObjectProperty::String(LexString {
3564                                format: Some(LexStringFormat::Uri),
3565                                ..Default::default()
3566                            }),
3567                        );
3568                        map.insert(
3569                            SmolStr::new_static("createdAt"),
3570                            LexObjectProperty::String(LexString {
3571                                format: Some(LexStringFormat::Datetime),
3572                                ..Default::default()
3573                            }),
3574                        );
3575                        map.insert(
3576                            SmolStr::new_static("debug"),
3577                            LexObjectProperty::Unknown(LexUnknown {
3578                                ..Default::default()
3579                            }),
3580                        );
3581                        map.insert(
3582                            SmolStr::new_static("did"),
3583                            LexObjectProperty::String(LexString {
3584                                format: Some(LexStringFormat::Did),
3585                                ..Default::default()
3586                            }),
3587                        );
3588                        map.insert(
3589                            SmolStr::new_static("displayName"),
3590                            LexObjectProperty::String(LexString {
3591                                max_length: Some(640usize),
3592                                max_graphemes: Some(64usize),
3593                                ..Default::default()
3594                            }),
3595                        );
3596                        map.insert(
3597                            SmolStr::new_static("handle"),
3598                            LexObjectProperty::String(LexString {
3599                                format: Some(LexStringFormat::Handle),
3600                                ..Default::default()
3601                            }),
3602                        );
3603                        map.insert(
3604                            SmolStr::new_static("labels"),
3605                            LexObjectProperty::Array(LexArray {
3606                                items: LexArrayItem::Ref(LexRef {
3607                                    r#ref: CowStr::new_static("com.atproto.label.defs#label"),
3608                                    ..Default::default()
3609                                }),
3610                                ..Default::default()
3611                            }),
3612                        );
3613                        map.insert(
3614                            SmolStr::new_static("pronouns"),
3615                            LexObjectProperty::String(LexString { ..Default::default() }),
3616                        );
3617                        map.insert(
3618                            SmolStr::new_static("status"),
3619                            LexObjectProperty::Ref(LexRef {
3620                                r#ref: CowStr::new_static("#statusView"),
3621                                ..Default::default()
3622                            }),
3623                        );
3624                        map.insert(
3625                            SmolStr::new_static("verification"),
3626                            LexObjectProperty::Ref(LexRef {
3627                                r#ref: CowStr::new_static("#verificationState"),
3628                                ..Default::default()
3629                            }),
3630                        );
3631                        map.insert(
3632                            SmolStr::new_static("viewer"),
3633                            LexObjectProperty::Ref(LexRef {
3634                                r#ref: CowStr::new_static("#viewerState"),
3635                                ..Default::default()
3636                            }),
3637                        );
3638                        map
3639                    },
3640                    ..Default::default()
3641                }),
3642            );
3643            map.insert(
3644                SmolStr::new_static("profileViewDetailed"),
3645                LexUserType::Object(LexObject {
3646                    required: Some(
3647                        vec![SmolStr::new_static("did"), SmolStr::new_static("handle")],
3648                    ),
3649                    properties: {
3650                        #[allow(unused_mut)]
3651                        let mut map = BTreeMap::new();
3652                        map.insert(
3653                            SmolStr::new_static("associated"),
3654                            LexObjectProperty::Ref(LexRef {
3655                                r#ref: CowStr::new_static("#profileAssociated"),
3656                                ..Default::default()
3657                            }),
3658                        );
3659                        map.insert(
3660                            SmolStr::new_static("avatar"),
3661                            LexObjectProperty::String(LexString {
3662                                format: Some(LexStringFormat::Uri),
3663                                ..Default::default()
3664                            }),
3665                        );
3666                        map.insert(
3667                            SmolStr::new_static("banner"),
3668                            LexObjectProperty::String(LexString {
3669                                format: Some(LexStringFormat::Uri),
3670                                ..Default::default()
3671                            }),
3672                        );
3673                        map.insert(
3674                            SmolStr::new_static("createdAt"),
3675                            LexObjectProperty::String(LexString {
3676                                format: Some(LexStringFormat::Datetime),
3677                                ..Default::default()
3678                            }),
3679                        );
3680                        map.insert(
3681                            SmolStr::new_static("debug"),
3682                            LexObjectProperty::Unknown(LexUnknown {
3683                                ..Default::default()
3684                            }),
3685                        );
3686                        map.insert(
3687                            SmolStr::new_static("description"),
3688                            LexObjectProperty::String(LexString {
3689                                max_length: Some(2560usize),
3690                                max_graphemes: Some(256usize),
3691                                ..Default::default()
3692                            }),
3693                        );
3694                        map.insert(
3695                            SmolStr::new_static("did"),
3696                            LexObjectProperty::String(LexString {
3697                                format: Some(LexStringFormat::Did),
3698                                ..Default::default()
3699                            }),
3700                        );
3701                        map.insert(
3702                            SmolStr::new_static("displayName"),
3703                            LexObjectProperty::String(LexString {
3704                                max_length: Some(640usize),
3705                                max_graphemes: Some(64usize),
3706                                ..Default::default()
3707                            }),
3708                        );
3709                        map.insert(
3710                            SmolStr::new_static("followersCount"),
3711                            LexObjectProperty::Integer(LexInteger {
3712                                ..Default::default()
3713                            }),
3714                        );
3715                        map.insert(
3716                            SmolStr::new_static("followsCount"),
3717                            LexObjectProperty::Integer(LexInteger {
3718                                ..Default::default()
3719                            }),
3720                        );
3721                        map.insert(
3722                            SmolStr::new_static("handle"),
3723                            LexObjectProperty::String(LexString {
3724                                format: Some(LexStringFormat::Handle),
3725                                ..Default::default()
3726                            }),
3727                        );
3728                        map.insert(
3729                            SmolStr::new_static("indexedAt"),
3730                            LexObjectProperty::String(LexString {
3731                                format: Some(LexStringFormat::Datetime),
3732                                ..Default::default()
3733                            }),
3734                        );
3735                        map.insert(
3736                            SmolStr::new_static("joinedViaStarterPack"),
3737                            LexObjectProperty::Ref(LexRef {
3738                                r#ref: CowStr::new_static(
3739                                    "app.bsky.graph.defs#starterPackViewBasic",
3740                                ),
3741                                ..Default::default()
3742                            }),
3743                        );
3744                        map.insert(
3745                            SmolStr::new_static("labels"),
3746                            LexObjectProperty::Array(LexArray {
3747                                items: LexArrayItem::Ref(LexRef {
3748                                    r#ref: CowStr::new_static("com.atproto.label.defs#label"),
3749                                    ..Default::default()
3750                                }),
3751                                ..Default::default()
3752                            }),
3753                        );
3754                        map.insert(
3755                            SmolStr::new_static("pinnedPost"),
3756                            LexObjectProperty::Ref(LexRef {
3757                                r#ref: CowStr::new_static("com.atproto.repo.strongRef"),
3758                                ..Default::default()
3759                            }),
3760                        );
3761                        map.insert(
3762                            SmolStr::new_static("postsCount"),
3763                            LexObjectProperty::Integer(LexInteger {
3764                                ..Default::default()
3765                            }),
3766                        );
3767                        map.insert(
3768                            SmolStr::new_static("pronouns"),
3769                            LexObjectProperty::String(LexString { ..Default::default() }),
3770                        );
3771                        map.insert(
3772                            SmolStr::new_static("status"),
3773                            LexObjectProperty::Ref(LexRef {
3774                                r#ref: CowStr::new_static("#statusView"),
3775                                ..Default::default()
3776                            }),
3777                        );
3778                        map.insert(
3779                            SmolStr::new_static("verification"),
3780                            LexObjectProperty::Ref(LexRef {
3781                                r#ref: CowStr::new_static("#verificationState"),
3782                                ..Default::default()
3783                            }),
3784                        );
3785                        map.insert(
3786                            SmolStr::new_static("viewer"),
3787                            LexObjectProperty::Ref(LexRef {
3788                                r#ref: CowStr::new_static("#viewerState"),
3789                                ..Default::default()
3790                            }),
3791                        );
3792                        map.insert(
3793                            SmolStr::new_static("website"),
3794                            LexObjectProperty::String(LexString {
3795                                format: Some(LexStringFormat::Uri),
3796                                ..Default::default()
3797                            }),
3798                        );
3799                        map
3800                    },
3801                    ..Default::default()
3802                }),
3803            );
3804            map.insert(
3805                SmolStr::new_static("savedFeed"),
3806                LexUserType::Object(LexObject {
3807                    required: Some(
3808                        vec![
3809                            SmolStr::new_static("id"), SmolStr::new_static("type"),
3810                            SmolStr::new_static("value"), SmolStr::new_static("pinned")
3811                        ],
3812                    ),
3813                    properties: {
3814                        #[allow(unused_mut)]
3815                        let mut map = BTreeMap::new();
3816                        map.insert(
3817                            SmolStr::new_static("id"),
3818                            LexObjectProperty::String(LexString { ..Default::default() }),
3819                        );
3820                        map.insert(
3821                            SmolStr::new_static("pinned"),
3822                            LexObjectProperty::Boolean(LexBoolean {
3823                                ..Default::default()
3824                            }),
3825                        );
3826                        map.insert(
3827                            SmolStr::new_static("type"),
3828                            LexObjectProperty::String(LexString { ..Default::default() }),
3829                        );
3830                        map.insert(
3831                            SmolStr::new_static("value"),
3832                            LexObjectProperty::String(LexString { ..Default::default() }),
3833                        );
3834                        map
3835                    },
3836                    ..Default::default()
3837                }),
3838            );
3839            map.insert(
3840                SmolStr::new_static("savedFeedsPref"),
3841                LexUserType::Object(LexObject {
3842                    required: Some(
3843                        vec![SmolStr::new_static("pinned"), SmolStr::new_static("saved")],
3844                    ),
3845                    properties: {
3846                        #[allow(unused_mut)]
3847                        let mut map = BTreeMap::new();
3848                        map.insert(
3849                            SmolStr::new_static("pinned"),
3850                            LexObjectProperty::Array(LexArray {
3851                                items: LexArrayItem::String(LexString {
3852                                    format: Some(LexStringFormat::AtUri),
3853                                    ..Default::default()
3854                                }),
3855                                ..Default::default()
3856                            }),
3857                        );
3858                        map.insert(
3859                            SmolStr::new_static("saved"),
3860                            LexObjectProperty::Array(LexArray {
3861                                items: LexArrayItem::String(LexString {
3862                                    format: Some(LexStringFormat::AtUri),
3863                                    ..Default::default()
3864                                }),
3865                                ..Default::default()
3866                            }),
3867                        );
3868                        map.insert(
3869                            SmolStr::new_static("timelineIndex"),
3870                            LexObjectProperty::Integer(LexInteger {
3871                                ..Default::default()
3872                            }),
3873                        );
3874                        map
3875                    },
3876                    ..Default::default()
3877                }),
3878            );
3879            map.insert(
3880                SmolStr::new_static("savedFeedsPrefV2"),
3881                LexUserType::Object(LexObject {
3882                    required: Some(vec![SmolStr::new_static("items")]),
3883                    properties: {
3884                        #[allow(unused_mut)]
3885                        let mut map = BTreeMap::new();
3886                        map.insert(
3887                            SmolStr::new_static("items"),
3888                            LexObjectProperty::Array(LexArray {
3889                                items: LexArrayItem::Ref(LexRef {
3890                                    r#ref: CowStr::new_static("app.bsky.actor.defs#savedFeed"),
3891                                    ..Default::default()
3892                                }),
3893                                ..Default::default()
3894                            }),
3895                        );
3896                        map
3897                    },
3898                    ..Default::default()
3899                }),
3900            );
3901            map.insert(
3902                SmolStr::new_static("statusView"),
3903                LexUserType::Object(LexObject {
3904                    required: Some(
3905                        vec![
3906                            SmolStr::new_static("status"), SmolStr::new_static("record")
3907                        ],
3908                    ),
3909                    properties: {
3910                        #[allow(unused_mut)]
3911                        let mut map = BTreeMap::new();
3912                        map.insert(
3913                            SmolStr::new_static("cid"),
3914                            LexObjectProperty::String(LexString {
3915                                format: Some(LexStringFormat::Cid),
3916                                ..Default::default()
3917                            }),
3918                        );
3919                        map.insert(
3920                            SmolStr::new_static("embed"),
3921                            LexObjectProperty::Union(LexRefUnion {
3922                                description: Some(
3923                                    CowStr::new_static(
3924                                        "An optional embed associated with the status.",
3925                                    ),
3926                                ),
3927                                refs: vec![
3928                                    CowStr::new_static("app.bsky.embed.external#view")
3929                                ],
3930                                ..Default::default()
3931                            }),
3932                        );
3933                        map.insert(
3934                            SmolStr::new_static("expiresAt"),
3935                            LexObjectProperty::String(LexString {
3936                                description: Some(
3937                                    CowStr::new_static(
3938                                        "The date when this status will expire. The application might choose to no longer return the status after expiration.",
3939                                    ),
3940                                ),
3941                                format: Some(LexStringFormat::Datetime),
3942                                ..Default::default()
3943                            }),
3944                        );
3945                        map.insert(
3946                            SmolStr::new_static("isActive"),
3947                            LexObjectProperty::Boolean(LexBoolean {
3948                                ..Default::default()
3949                            }),
3950                        );
3951                        map.insert(
3952                            SmolStr::new_static("isDisabled"),
3953                            LexObjectProperty::Boolean(LexBoolean {
3954                                ..Default::default()
3955                            }),
3956                        );
3957                        map.insert(
3958                            SmolStr::new_static("record"),
3959                            LexObjectProperty::Unknown(LexUnknown {
3960                                ..Default::default()
3961                            }),
3962                        );
3963                        map.insert(
3964                            SmolStr::new_static("status"),
3965                            LexObjectProperty::String(LexString {
3966                                description: Some(
3967                                    CowStr::new_static("The status for the account."),
3968                                ),
3969                                ..Default::default()
3970                            }),
3971                        );
3972                        map.insert(
3973                            SmolStr::new_static("uri"),
3974                            LexObjectProperty::String(LexString {
3975                                format: Some(LexStringFormat::AtUri),
3976                                ..Default::default()
3977                            }),
3978                        );
3979                        map
3980                    },
3981                    ..Default::default()
3982                }),
3983            );
3984            map.insert(
3985                SmolStr::new_static("threadViewPref"),
3986                LexUserType::Object(LexObject {
3987                    properties: {
3988                        #[allow(unused_mut)]
3989                        let mut map = BTreeMap::new();
3990                        map.insert(
3991                            SmolStr::new_static("sort"),
3992                            LexObjectProperty::String(LexString {
3993                                description: Some(
3994                                    CowStr::new_static("Sorting mode for threads."),
3995                                ),
3996                                ..Default::default()
3997                            }),
3998                        );
3999                        map
4000                    },
4001                    ..Default::default()
4002                }),
4003            );
4004            map.insert(
4005                SmolStr::new_static("verificationPrefs"),
4006                LexUserType::Object(LexObject {
4007                    description: Some(
4008                        CowStr::new_static(
4009                            "Preferences for how verified accounts appear in the app.",
4010                        ),
4011                    ),
4012                    required: Some(vec![]),
4013                    properties: {
4014                        #[allow(unused_mut)]
4015                        let mut map = BTreeMap::new();
4016                        map.insert(
4017                            SmolStr::new_static("hideBadges"),
4018                            LexObjectProperty::Boolean(LexBoolean {
4019                                ..Default::default()
4020                            }),
4021                        );
4022                        map
4023                    },
4024                    ..Default::default()
4025                }),
4026            );
4027            map.insert(
4028                SmolStr::new_static("verificationState"),
4029                LexUserType::Object(LexObject {
4030                    description: Some(
4031                        CowStr::new_static(
4032                            "Represents the verification information about the user this object is attached to.",
4033                        ),
4034                    ),
4035                    required: Some(
4036                        vec![
4037                            SmolStr::new_static("verifications"),
4038                            SmolStr::new_static("verifiedStatus"),
4039                            SmolStr::new_static("trustedVerifierStatus")
4040                        ],
4041                    ),
4042                    properties: {
4043                        #[allow(unused_mut)]
4044                        let mut map = BTreeMap::new();
4045                        map.insert(
4046                            SmolStr::new_static("trustedVerifierStatus"),
4047                            LexObjectProperty::String(LexString {
4048                                description: Some(
4049                                    CowStr::new_static(
4050                                        "The user's status as a trusted verifier.",
4051                                    ),
4052                                ),
4053                                ..Default::default()
4054                            }),
4055                        );
4056                        map.insert(
4057                            SmolStr::new_static("verifications"),
4058                            LexObjectProperty::Array(LexArray {
4059                                description: Some(
4060                                    CowStr::new_static(
4061                                        "All verifications issued by trusted verifiers on behalf of this user. Verifications by untrusted verifiers are not included.",
4062                                    ),
4063                                ),
4064                                items: LexArrayItem::Ref(LexRef {
4065                                    r#ref: CowStr::new_static("#verificationView"),
4066                                    ..Default::default()
4067                                }),
4068                                ..Default::default()
4069                            }),
4070                        );
4071                        map.insert(
4072                            SmolStr::new_static("verifiedStatus"),
4073                            LexObjectProperty::String(LexString {
4074                                description: Some(
4075                                    CowStr::new_static(
4076                                        "The user's status as a verified account.",
4077                                    ),
4078                                ),
4079                                ..Default::default()
4080                            }),
4081                        );
4082                        map
4083                    },
4084                    ..Default::default()
4085                }),
4086            );
4087            map.insert(
4088                SmolStr::new_static("verificationView"),
4089                LexUserType::Object(LexObject {
4090                    description: Some(
4091                        CowStr::new_static(
4092                            "An individual verification for an associated subject.",
4093                        ),
4094                    ),
4095                    required: Some(
4096                        vec![
4097                            SmolStr::new_static("issuer"), SmolStr::new_static("uri"),
4098                            SmolStr::new_static("isValid"),
4099                            SmolStr::new_static("createdAt")
4100                        ],
4101                    ),
4102                    properties: {
4103                        #[allow(unused_mut)]
4104                        let mut map = BTreeMap::new();
4105                        map.insert(
4106                            SmolStr::new_static("createdAt"),
4107                            LexObjectProperty::String(LexString {
4108                                description: Some(
4109                                    CowStr::new_static(
4110                                        "Timestamp when the verification was created.",
4111                                    ),
4112                                ),
4113                                format: Some(LexStringFormat::Datetime),
4114                                ..Default::default()
4115                            }),
4116                        );
4117                        map.insert(
4118                            SmolStr::new_static("isValid"),
4119                            LexObjectProperty::Boolean(LexBoolean {
4120                                ..Default::default()
4121                            }),
4122                        );
4123                        map.insert(
4124                            SmolStr::new_static("issuer"),
4125                            LexObjectProperty::String(LexString {
4126                                description: Some(
4127                                    CowStr::new_static("The user who issued this verification."),
4128                                ),
4129                                format: Some(LexStringFormat::Did),
4130                                ..Default::default()
4131                            }),
4132                        );
4133                        map.insert(
4134                            SmolStr::new_static("uri"),
4135                            LexObjectProperty::String(LexString {
4136                                description: Some(
4137                                    CowStr::new_static("The AT-URI of the verification record."),
4138                                ),
4139                                format: Some(LexStringFormat::AtUri),
4140                                ..Default::default()
4141                            }),
4142                        );
4143                        map
4144                    },
4145                    ..Default::default()
4146                }),
4147            );
4148            map.insert(
4149                SmolStr::new_static("viewerState"),
4150                LexUserType::Object(LexObject {
4151                    description: Some(
4152                        CowStr::new_static(
4153                            "Metadata about the requesting account's relationship with the subject account. Only has meaningful content for authed requests.",
4154                        ),
4155                    ),
4156                    properties: {
4157                        #[allow(unused_mut)]
4158                        let mut map = BTreeMap::new();
4159                        map.insert(
4160                            SmolStr::new_static("activitySubscription"),
4161                            LexObjectProperty::Ref(LexRef {
4162                                r#ref: CowStr::new_static(
4163                                    "app.bsky.notification.defs#activitySubscription",
4164                                ),
4165                                ..Default::default()
4166                            }),
4167                        );
4168                        map.insert(
4169                            SmolStr::new_static("blockedBy"),
4170                            LexObjectProperty::Boolean(LexBoolean {
4171                                ..Default::default()
4172                            }),
4173                        );
4174                        map.insert(
4175                            SmolStr::new_static("blocking"),
4176                            LexObjectProperty::String(LexString {
4177                                format: Some(LexStringFormat::AtUri),
4178                                ..Default::default()
4179                            }),
4180                        );
4181                        map.insert(
4182                            SmolStr::new_static("blockingByList"),
4183                            LexObjectProperty::Ref(LexRef {
4184                                r#ref: CowStr::new_static(
4185                                    "app.bsky.graph.defs#listViewBasic",
4186                                ),
4187                                ..Default::default()
4188                            }),
4189                        );
4190                        map.insert(
4191                            SmolStr::new_static("followedBy"),
4192                            LexObjectProperty::String(LexString {
4193                                format: Some(LexStringFormat::AtUri),
4194                                ..Default::default()
4195                            }),
4196                        );
4197                        map.insert(
4198                            SmolStr::new_static("following"),
4199                            LexObjectProperty::String(LexString {
4200                                format: Some(LexStringFormat::AtUri),
4201                                ..Default::default()
4202                            }),
4203                        );
4204                        map.insert(
4205                            SmolStr::new_static("knownFollowers"),
4206                            LexObjectProperty::Ref(LexRef {
4207                                r#ref: CowStr::new_static("#knownFollowers"),
4208                                ..Default::default()
4209                            }),
4210                        );
4211                        map.insert(
4212                            SmolStr::new_static("muted"),
4213                            LexObjectProperty::Boolean(LexBoolean {
4214                                ..Default::default()
4215                            }),
4216                        );
4217                        map.insert(
4218                            SmolStr::new_static("mutedByList"),
4219                            LexObjectProperty::Ref(LexRef {
4220                                r#ref: CowStr::new_static(
4221                                    "app.bsky.graph.defs#listViewBasic",
4222                                ),
4223                                ..Default::default()
4224                            }),
4225                        );
4226                        map
4227                    },
4228                    ..Default::default()
4229                }),
4230            );
4231            map
4232        },
4233        ..Default::default()
4234    }
4235}
4236
4237fn _default_feed_view_pref_hide_replies_by_unfollowed() -> Option<bool> {
4238    Some(true)
4239}
4240
4241pub mod hidden_posts_pref_state {
4242
4243    pub use crate::builder_types::{Set, Unset, IsSet, IsUnset};
4244    #[allow(unused)]
4245    use ::core::marker::PhantomData;
4246    mod sealed {
4247        pub trait Sealed {}
4248    }
4249    /// State trait tracking which required fields have been set
4250    pub trait State: sealed::Sealed {
4251        type Items;
4252    }
4253    /// Empty state - all required fields are unset
4254    pub struct Empty(());
4255    impl sealed::Sealed for Empty {}
4256    impl State for Empty {
4257        type Items = Unset;
4258    }
4259    ///State transition - sets the `items` field to Set
4260    pub struct SetItems<S: State = Empty>(PhantomData<fn() -> S>);
4261    impl<S: State> sealed::Sealed for SetItems<S> {}
4262    impl<S: State> State for SetItems<S> {
4263        type Items = Set<members::items>;
4264    }
4265    /// Marker types for field names
4266    #[allow(non_camel_case_types)]
4267    pub mod members {
4268        ///Marker type for the `items` field
4269        pub struct items(());
4270    }
4271}
4272
4273/// Builder for constructing an instance of this type
4274pub struct HiddenPostsPrefBuilder<'a, S: hidden_posts_pref_state::State> {
4275    _state: PhantomData<fn() -> S>,
4276    _fields: (Option<Vec<AtUri<'a>>>,),
4277    _lifetime: PhantomData<&'a ()>,
4278}
4279
4280impl<'a> HiddenPostsPref<'a> {
4281    /// Create a new builder for this type
4282    pub fn new() -> HiddenPostsPrefBuilder<'a, hidden_posts_pref_state::Empty> {
4283        HiddenPostsPrefBuilder::new()
4284    }
4285}
4286
4287impl<'a> HiddenPostsPrefBuilder<'a, hidden_posts_pref_state::Empty> {
4288    /// Create a new builder with all fields unset
4289    pub fn new() -> Self {
4290        HiddenPostsPrefBuilder {
4291            _state: PhantomData,
4292            _fields: (None,),
4293            _lifetime: PhantomData,
4294        }
4295    }
4296}
4297
4298impl<'a, S> HiddenPostsPrefBuilder<'a, S>
4299where
4300    S: hidden_posts_pref_state::State,
4301    S::Items: hidden_posts_pref_state::IsUnset,
4302{
4303    /// Set the `items` field (required)
4304    pub fn items(
4305        mut self,
4306        value: impl Into<Vec<AtUri<'a>>>,
4307    ) -> HiddenPostsPrefBuilder<'a, hidden_posts_pref_state::SetItems<S>> {
4308        self._fields.0 = Option::Some(value.into());
4309        HiddenPostsPrefBuilder {
4310            _state: PhantomData,
4311            _fields: self._fields,
4312            _lifetime: PhantomData,
4313        }
4314    }
4315}
4316
4317impl<'a, S> HiddenPostsPrefBuilder<'a, S>
4318where
4319    S: hidden_posts_pref_state::State,
4320    S::Items: hidden_posts_pref_state::IsSet,
4321{
4322    /// Build the final struct
4323    pub fn build(self) -> HiddenPostsPref<'a> {
4324        HiddenPostsPref {
4325            items: self._fields.0.unwrap(),
4326            extra_data: Default::default(),
4327        }
4328    }
4329    /// Build the final struct with custom extra_data
4330    pub fn build_with_data(
4331        self,
4332        extra_data: BTreeMap<jacquard_common::deps::smol_str::SmolStr, Data<'a>>,
4333    ) -> HiddenPostsPref<'a> {
4334        HiddenPostsPref {
4335            items: self._fields.0.unwrap(),
4336            extra_data: Some(extra_data),
4337        }
4338    }
4339}
4340
4341pub mod interests_pref_state {
4342
4343    pub use crate::builder_types::{Set, Unset, IsSet, IsUnset};
4344    #[allow(unused)]
4345    use ::core::marker::PhantomData;
4346    mod sealed {
4347        pub trait Sealed {}
4348    }
4349    /// State trait tracking which required fields have been set
4350    pub trait State: sealed::Sealed {
4351        type Tags;
4352    }
4353    /// Empty state - all required fields are unset
4354    pub struct Empty(());
4355    impl sealed::Sealed for Empty {}
4356    impl State for Empty {
4357        type Tags = Unset;
4358    }
4359    ///State transition - sets the `tags` field to Set
4360    pub struct SetTags<S: State = Empty>(PhantomData<fn() -> S>);
4361    impl<S: State> sealed::Sealed for SetTags<S> {}
4362    impl<S: State> State for SetTags<S> {
4363        type Tags = Set<members::tags>;
4364    }
4365    /// Marker types for field names
4366    #[allow(non_camel_case_types)]
4367    pub mod members {
4368        ///Marker type for the `tags` field
4369        pub struct tags(());
4370    }
4371}
4372
4373/// Builder for constructing an instance of this type
4374pub struct InterestsPrefBuilder<'a, S: interests_pref_state::State> {
4375    _state: PhantomData<fn() -> S>,
4376    _fields: (Option<Vec<CowStr<'a>>>,),
4377    _lifetime: PhantomData<&'a ()>,
4378}
4379
4380impl<'a> InterestsPref<'a> {
4381    /// Create a new builder for this type
4382    pub fn new() -> InterestsPrefBuilder<'a, interests_pref_state::Empty> {
4383        InterestsPrefBuilder::new()
4384    }
4385}
4386
4387impl<'a> InterestsPrefBuilder<'a, interests_pref_state::Empty> {
4388    /// Create a new builder with all fields unset
4389    pub fn new() -> Self {
4390        InterestsPrefBuilder {
4391            _state: PhantomData,
4392            _fields: (None,),
4393            _lifetime: PhantomData,
4394        }
4395    }
4396}
4397
4398impl<'a, S> InterestsPrefBuilder<'a, S>
4399where
4400    S: interests_pref_state::State,
4401    S::Tags: interests_pref_state::IsUnset,
4402{
4403    /// Set the `tags` field (required)
4404    pub fn tags(
4405        mut self,
4406        value: impl Into<Vec<CowStr<'a>>>,
4407    ) -> InterestsPrefBuilder<'a, interests_pref_state::SetTags<S>> {
4408        self._fields.0 = Option::Some(value.into());
4409        InterestsPrefBuilder {
4410            _state: PhantomData,
4411            _fields: self._fields,
4412            _lifetime: PhantomData,
4413        }
4414    }
4415}
4416
4417impl<'a, S> InterestsPrefBuilder<'a, S>
4418where
4419    S: interests_pref_state::State,
4420    S::Tags: interests_pref_state::IsSet,
4421{
4422    /// Build the final struct
4423    pub fn build(self) -> InterestsPref<'a> {
4424        InterestsPref {
4425            tags: self._fields.0.unwrap(),
4426            extra_data: Default::default(),
4427        }
4428    }
4429    /// Build the final struct with custom extra_data
4430    pub fn build_with_data(
4431        self,
4432        extra_data: BTreeMap<jacquard_common::deps::smol_str::SmolStr, Data<'a>>,
4433    ) -> InterestsPref<'a> {
4434        InterestsPref {
4435            tags: self._fields.0.unwrap(),
4436            extra_data: Some(extra_data),
4437        }
4438    }
4439}
4440
4441pub mod known_followers_state {
4442
4443    pub use crate::builder_types::{Set, Unset, IsSet, IsUnset};
4444    #[allow(unused)]
4445    use ::core::marker::PhantomData;
4446    mod sealed {
4447        pub trait Sealed {}
4448    }
4449    /// State trait tracking which required fields have been set
4450    pub trait State: sealed::Sealed {
4451        type Count;
4452        type Followers;
4453    }
4454    /// Empty state - all required fields are unset
4455    pub struct Empty(());
4456    impl sealed::Sealed for Empty {}
4457    impl State for Empty {
4458        type Count = Unset;
4459        type Followers = Unset;
4460    }
4461    ///State transition - sets the `count` field to Set
4462    pub struct SetCount<S: State = Empty>(PhantomData<fn() -> S>);
4463    impl<S: State> sealed::Sealed for SetCount<S> {}
4464    impl<S: State> State for SetCount<S> {
4465        type Count = Set<members::count>;
4466        type Followers = S::Followers;
4467    }
4468    ///State transition - sets the `followers` field to Set
4469    pub struct SetFollowers<S: State = Empty>(PhantomData<fn() -> S>);
4470    impl<S: State> sealed::Sealed for SetFollowers<S> {}
4471    impl<S: State> State for SetFollowers<S> {
4472        type Count = S::Count;
4473        type Followers = Set<members::followers>;
4474    }
4475    /// Marker types for field names
4476    #[allow(non_camel_case_types)]
4477    pub mod members {
4478        ///Marker type for the `count` field
4479        pub struct count(());
4480        ///Marker type for the `followers` field
4481        pub struct followers(());
4482    }
4483}
4484
4485/// Builder for constructing an instance of this type
4486pub struct KnownFollowersBuilder<'a, S: known_followers_state::State> {
4487    _state: PhantomData<fn() -> S>,
4488    _fields: (Option<i64>, Option<Vec<actor::ProfileViewBasic<'a>>>),
4489    _lifetime: PhantomData<&'a ()>,
4490}
4491
4492impl<'a> KnownFollowers<'a> {
4493    /// Create a new builder for this type
4494    pub fn new() -> KnownFollowersBuilder<'a, known_followers_state::Empty> {
4495        KnownFollowersBuilder::new()
4496    }
4497}
4498
4499impl<'a> KnownFollowersBuilder<'a, known_followers_state::Empty> {
4500    /// Create a new builder with all fields unset
4501    pub fn new() -> Self {
4502        KnownFollowersBuilder {
4503            _state: PhantomData,
4504            _fields: (None, None),
4505            _lifetime: PhantomData,
4506        }
4507    }
4508}
4509
4510impl<'a, S> KnownFollowersBuilder<'a, S>
4511where
4512    S: known_followers_state::State,
4513    S::Count: known_followers_state::IsUnset,
4514{
4515    /// Set the `count` field (required)
4516    pub fn count(
4517        mut self,
4518        value: impl Into<i64>,
4519    ) -> KnownFollowersBuilder<'a, known_followers_state::SetCount<S>> {
4520        self._fields.0 = Option::Some(value.into());
4521        KnownFollowersBuilder {
4522            _state: PhantomData,
4523            _fields: self._fields,
4524            _lifetime: PhantomData,
4525        }
4526    }
4527}
4528
4529impl<'a, S> KnownFollowersBuilder<'a, S>
4530where
4531    S: known_followers_state::State,
4532    S::Followers: known_followers_state::IsUnset,
4533{
4534    /// Set the `followers` field (required)
4535    pub fn followers(
4536        mut self,
4537        value: impl Into<Vec<actor::ProfileViewBasic<'a>>>,
4538    ) -> KnownFollowersBuilder<'a, known_followers_state::SetFollowers<S>> {
4539        self._fields.1 = Option::Some(value.into());
4540        KnownFollowersBuilder {
4541            _state: PhantomData,
4542            _fields: self._fields,
4543            _lifetime: PhantomData,
4544        }
4545    }
4546}
4547
4548impl<'a, S> KnownFollowersBuilder<'a, S>
4549where
4550    S: known_followers_state::State,
4551    S::Count: known_followers_state::IsSet,
4552    S::Followers: known_followers_state::IsSet,
4553{
4554    /// Build the final struct
4555    pub fn build(self) -> KnownFollowers<'a> {
4556        KnownFollowers {
4557            count: self._fields.0.unwrap(),
4558            followers: self._fields.1.unwrap(),
4559            extra_data: Default::default(),
4560        }
4561    }
4562    /// Build the final struct with custom extra_data
4563    pub fn build_with_data(
4564        self,
4565        extra_data: BTreeMap<jacquard_common::deps::smol_str::SmolStr, Data<'a>>,
4566    ) -> KnownFollowers<'a> {
4567        KnownFollowers {
4568            count: self._fields.0.unwrap(),
4569            followers: self._fields.1.unwrap(),
4570            extra_data: Some(extra_data),
4571        }
4572    }
4573}
4574
4575pub mod labeler_pref_item_state {
4576
4577    pub use crate::builder_types::{Set, Unset, IsSet, IsUnset};
4578    #[allow(unused)]
4579    use ::core::marker::PhantomData;
4580    mod sealed {
4581        pub trait Sealed {}
4582    }
4583    /// State trait tracking which required fields have been set
4584    pub trait State: sealed::Sealed {
4585        type Did;
4586    }
4587    /// Empty state - all required fields are unset
4588    pub struct Empty(());
4589    impl sealed::Sealed for Empty {}
4590    impl State for Empty {
4591        type Did = Unset;
4592    }
4593    ///State transition - sets the `did` field to Set
4594    pub struct SetDid<S: State = Empty>(PhantomData<fn() -> S>);
4595    impl<S: State> sealed::Sealed for SetDid<S> {}
4596    impl<S: State> State for SetDid<S> {
4597        type Did = Set<members::did>;
4598    }
4599    /// Marker types for field names
4600    #[allow(non_camel_case_types)]
4601    pub mod members {
4602        ///Marker type for the `did` field
4603        pub struct did(());
4604    }
4605}
4606
4607/// Builder for constructing an instance of this type
4608pub struct LabelerPrefItemBuilder<'a, S: labeler_pref_item_state::State> {
4609    _state: PhantomData<fn() -> S>,
4610    _fields: (Option<Did<'a>>,),
4611    _lifetime: PhantomData<&'a ()>,
4612}
4613
4614impl<'a> LabelerPrefItem<'a> {
4615    /// Create a new builder for this type
4616    pub fn new() -> LabelerPrefItemBuilder<'a, labeler_pref_item_state::Empty> {
4617        LabelerPrefItemBuilder::new()
4618    }
4619}
4620
4621impl<'a> LabelerPrefItemBuilder<'a, labeler_pref_item_state::Empty> {
4622    /// Create a new builder with all fields unset
4623    pub fn new() -> Self {
4624        LabelerPrefItemBuilder {
4625            _state: PhantomData,
4626            _fields: (None,),
4627            _lifetime: PhantomData,
4628        }
4629    }
4630}
4631
4632impl<'a, S> LabelerPrefItemBuilder<'a, S>
4633where
4634    S: labeler_pref_item_state::State,
4635    S::Did: labeler_pref_item_state::IsUnset,
4636{
4637    /// Set the `did` field (required)
4638    pub fn did(
4639        mut self,
4640        value: impl Into<Did<'a>>,
4641    ) -> LabelerPrefItemBuilder<'a, labeler_pref_item_state::SetDid<S>> {
4642        self._fields.0 = Option::Some(value.into());
4643        LabelerPrefItemBuilder {
4644            _state: PhantomData,
4645            _fields: self._fields,
4646            _lifetime: PhantomData,
4647        }
4648    }
4649}
4650
4651impl<'a, S> LabelerPrefItemBuilder<'a, S>
4652where
4653    S: labeler_pref_item_state::State,
4654    S::Did: labeler_pref_item_state::IsSet,
4655{
4656    /// Build the final struct
4657    pub fn build(self) -> LabelerPrefItem<'a> {
4658        LabelerPrefItem {
4659            did: self._fields.0.unwrap(),
4660            extra_data: Default::default(),
4661        }
4662    }
4663    /// Build the final struct with custom extra_data
4664    pub fn build_with_data(
4665        self,
4666        extra_data: BTreeMap<jacquard_common::deps::smol_str::SmolStr, Data<'a>>,
4667    ) -> LabelerPrefItem<'a> {
4668        LabelerPrefItem {
4669            did: self._fields.0.unwrap(),
4670            extra_data: Some(extra_data),
4671        }
4672    }
4673}
4674
4675pub mod labelers_pref_state {
4676
4677    pub use crate::builder_types::{Set, Unset, IsSet, IsUnset};
4678    #[allow(unused)]
4679    use ::core::marker::PhantomData;
4680    mod sealed {
4681        pub trait Sealed {}
4682    }
4683    /// State trait tracking which required fields have been set
4684    pub trait State: sealed::Sealed {
4685        type Labelers;
4686    }
4687    /// Empty state - all required fields are unset
4688    pub struct Empty(());
4689    impl sealed::Sealed for Empty {}
4690    impl State for Empty {
4691        type Labelers = Unset;
4692    }
4693    ///State transition - sets the `labelers` field to Set
4694    pub struct SetLabelers<S: State = Empty>(PhantomData<fn() -> S>);
4695    impl<S: State> sealed::Sealed for SetLabelers<S> {}
4696    impl<S: State> State for SetLabelers<S> {
4697        type Labelers = Set<members::labelers>;
4698    }
4699    /// Marker types for field names
4700    #[allow(non_camel_case_types)]
4701    pub mod members {
4702        ///Marker type for the `labelers` field
4703        pub struct labelers(());
4704    }
4705}
4706
4707/// Builder for constructing an instance of this type
4708pub struct LabelersPrefBuilder<'a, S: labelers_pref_state::State> {
4709    _state: PhantomData<fn() -> S>,
4710    _fields: (Option<Vec<actor::LabelerPrefItem<'a>>>,),
4711    _lifetime: PhantomData<&'a ()>,
4712}
4713
4714impl<'a> LabelersPref<'a> {
4715    /// Create a new builder for this type
4716    pub fn new() -> LabelersPrefBuilder<'a, labelers_pref_state::Empty> {
4717        LabelersPrefBuilder::new()
4718    }
4719}
4720
4721impl<'a> LabelersPrefBuilder<'a, labelers_pref_state::Empty> {
4722    /// Create a new builder with all fields unset
4723    pub fn new() -> Self {
4724        LabelersPrefBuilder {
4725            _state: PhantomData,
4726            _fields: (None,),
4727            _lifetime: PhantomData,
4728        }
4729    }
4730}
4731
4732impl<'a, S> LabelersPrefBuilder<'a, S>
4733where
4734    S: labelers_pref_state::State,
4735    S::Labelers: labelers_pref_state::IsUnset,
4736{
4737    /// Set the `labelers` field (required)
4738    pub fn labelers(
4739        mut self,
4740        value: impl Into<Vec<actor::LabelerPrefItem<'a>>>,
4741    ) -> LabelersPrefBuilder<'a, labelers_pref_state::SetLabelers<S>> {
4742        self._fields.0 = Option::Some(value.into());
4743        LabelersPrefBuilder {
4744            _state: PhantomData,
4745            _fields: self._fields,
4746            _lifetime: PhantomData,
4747        }
4748    }
4749}
4750
4751impl<'a, S> LabelersPrefBuilder<'a, S>
4752where
4753    S: labelers_pref_state::State,
4754    S::Labelers: labelers_pref_state::IsSet,
4755{
4756    /// Build the final struct
4757    pub fn build(self) -> LabelersPref<'a> {
4758        LabelersPref {
4759            labelers: self._fields.0.unwrap(),
4760            extra_data: Default::default(),
4761        }
4762    }
4763    /// Build the final struct with custom extra_data
4764    pub fn build_with_data(
4765        self,
4766        extra_data: BTreeMap<jacquard_common::deps::smol_str::SmolStr, Data<'a>>,
4767    ) -> LabelersPref<'a> {
4768        LabelersPref {
4769            labelers: self._fields.0.unwrap(),
4770            extra_data: Some(extra_data),
4771        }
4772    }
4773}
4774
4775fn _default_live_event_preferences_hide_all_feeds() -> Option<bool> {
4776    Some(false)
4777}
4778
4779impl Default for LiveEventPreferences<'_> {
4780    fn default() -> Self {
4781        Self {
4782            hidden_feed_ids: None,
4783            hide_all_feeds: Some(false),
4784            extra_data: Default::default(),
4785        }
4786    }
4787}
4788
4789pub mod muted_word_state {
4790
4791    pub use crate::builder_types::{Set, Unset, IsSet, IsUnset};
4792    #[allow(unused)]
4793    use ::core::marker::PhantomData;
4794    mod sealed {
4795        pub trait Sealed {}
4796    }
4797    /// State trait tracking which required fields have been set
4798    pub trait State: sealed::Sealed {
4799        type Targets;
4800        type Value;
4801    }
4802    /// Empty state - all required fields are unset
4803    pub struct Empty(());
4804    impl sealed::Sealed for Empty {}
4805    impl State for Empty {
4806        type Targets = Unset;
4807        type Value = Unset;
4808    }
4809    ///State transition - sets the `targets` field to Set
4810    pub struct SetTargets<S: State = Empty>(PhantomData<fn() -> S>);
4811    impl<S: State> sealed::Sealed for SetTargets<S> {}
4812    impl<S: State> State for SetTargets<S> {
4813        type Targets = Set<members::targets>;
4814        type Value = S::Value;
4815    }
4816    ///State transition - sets the `value` field to Set
4817    pub struct SetValue<S: State = Empty>(PhantomData<fn() -> S>);
4818    impl<S: State> sealed::Sealed for SetValue<S> {}
4819    impl<S: State> State for SetValue<S> {
4820        type Targets = S::Targets;
4821        type Value = Set<members::value>;
4822    }
4823    /// Marker types for field names
4824    #[allow(non_camel_case_types)]
4825    pub mod members {
4826        ///Marker type for the `targets` field
4827        pub struct targets(());
4828        ///Marker type for the `value` field
4829        pub struct value(());
4830    }
4831}
4832
4833/// Builder for constructing an instance of this type
4834pub struct MutedWordBuilder<'a, S: muted_word_state::State> {
4835    _state: PhantomData<fn() -> S>,
4836    _fields: (
4837        Option<MutedWordActorTarget<'a>>,
4838        Option<Datetime>,
4839        Option<CowStr<'a>>,
4840        Option<Vec<actor::MutedWordTarget<'a>>>,
4841        Option<CowStr<'a>>,
4842    ),
4843    _lifetime: PhantomData<&'a ()>,
4844}
4845
4846impl<'a> MutedWord<'a> {
4847    /// Create a new builder for this type
4848    pub fn new() -> MutedWordBuilder<'a, muted_word_state::Empty> {
4849        MutedWordBuilder::new()
4850    }
4851}
4852
4853impl<'a> MutedWordBuilder<'a, muted_word_state::Empty> {
4854    /// Create a new builder with all fields unset
4855    pub fn new() -> Self {
4856        MutedWordBuilder {
4857            _state: PhantomData,
4858            _fields: (None, None, None, None, None),
4859            _lifetime: PhantomData,
4860        }
4861    }
4862}
4863
4864impl<'a, S: muted_word_state::State> MutedWordBuilder<'a, S> {
4865    /// Set the `actorTarget` field (optional)
4866    pub fn actor_target(
4867        mut self,
4868        value: impl Into<Option<MutedWordActorTarget<'a>>>,
4869    ) -> Self {
4870        self._fields.0 = value.into();
4871        self
4872    }
4873    /// Set the `actorTarget` field to an Option value (optional)
4874    pub fn maybe_actor_target(
4875        mut self,
4876        value: Option<MutedWordActorTarget<'a>>,
4877    ) -> Self {
4878        self._fields.0 = value;
4879        self
4880    }
4881}
4882
4883impl<'a, S: muted_word_state::State> MutedWordBuilder<'a, S> {
4884    /// Set the `expiresAt` field (optional)
4885    pub fn expires_at(mut self, value: impl Into<Option<Datetime>>) -> Self {
4886        self._fields.1 = value.into();
4887        self
4888    }
4889    /// Set the `expiresAt` field to an Option value (optional)
4890    pub fn maybe_expires_at(mut self, value: Option<Datetime>) -> Self {
4891        self._fields.1 = value;
4892        self
4893    }
4894}
4895
4896impl<'a, S: muted_word_state::State> MutedWordBuilder<'a, S> {
4897    /// Set the `id` field (optional)
4898    pub fn id(mut self, value: impl Into<Option<CowStr<'a>>>) -> Self {
4899        self._fields.2 = value.into();
4900        self
4901    }
4902    /// Set the `id` field to an Option value (optional)
4903    pub fn maybe_id(mut self, value: Option<CowStr<'a>>) -> Self {
4904        self._fields.2 = value;
4905        self
4906    }
4907}
4908
4909impl<'a, S> MutedWordBuilder<'a, S>
4910where
4911    S: muted_word_state::State,
4912    S::Targets: muted_word_state::IsUnset,
4913{
4914    /// Set the `targets` field (required)
4915    pub fn targets(
4916        mut self,
4917        value: impl Into<Vec<actor::MutedWordTarget<'a>>>,
4918    ) -> MutedWordBuilder<'a, muted_word_state::SetTargets<S>> {
4919        self._fields.3 = Option::Some(value.into());
4920        MutedWordBuilder {
4921            _state: PhantomData,
4922            _fields: self._fields,
4923            _lifetime: PhantomData,
4924        }
4925    }
4926}
4927
4928impl<'a, S> MutedWordBuilder<'a, S>
4929where
4930    S: muted_word_state::State,
4931    S::Value: muted_word_state::IsUnset,
4932{
4933    /// Set the `value` field (required)
4934    pub fn value(
4935        mut self,
4936        value: impl Into<CowStr<'a>>,
4937    ) -> MutedWordBuilder<'a, muted_word_state::SetValue<S>> {
4938        self._fields.4 = Option::Some(value.into());
4939        MutedWordBuilder {
4940            _state: PhantomData,
4941            _fields: self._fields,
4942            _lifetime: PhantomData,
4943        }
4944    }
4945}
4946
4947impl<'a, S> MutedWordBuilder<'a, S>
4948where
4949    S: muted_word_state::State,
4950    S::Targets: muted_word_state::IsSet,
4951    S::Value: muted_word_state::IsSet,
4952{
4953    /// Build the final struct
4954    pub fn build(self) -> MutedWord<'a> {
4955        MutedWord {
4956            actor_target: self._fields.0,
4957            expires_at: self._fields.1,
4958            id: self._fields.2,
4959            targets: self._fields.3.unwrap(),
4960            value: self._fields.4.unwrap(),
4961            extra_data: Default::default(),
4962        }
4963    }
4964    /// Build the final struct with custom extra_data
4965    pub fn build_with_data(
4966        self,
4967        extra_data: BTreeMap<jacquard_common::deps::smol_str::SmolStr, Data<'a>>,
4968    ) -> MutedWord<'a> {
4969        MutedWord {
4970            actor_target: self._fields.0,
4971            expires_at: self._fields.1,
4972            id: self._fields.2,
4973            targets: self._fields.3.unwrap(),
4974            value: self._fields.4.unwrap(),
4975            extra_data: Some(extra_data),
4976        }
4977    }
4978}
4979
4980pub mod muted_words_pref_state {
4981
4982    pub use crate::builder_types::{Set, Unset, IsSet, IsUnset};
4983    #[allow(unused)]
4984    use ::core::marker::PhantomData;
4985    mod sealed {
4986        pub trait Sealed {}
4987    }
4988    /// State trait tracking which required fields have been set
4989    pub trait State: sealed::Sealed {
4990        type Items;
4991    }
4992    /// Empty state - all required fields are unset
4993    pub struct Empty(());
4994    impl sealed::Sealed for Empty {}
4995    impl State for Empty {
4996        type Items = Unset;
4997    }
4998    ///State transition - sets the `items` field to Set
4999    pub struct SetItems<S: State = Empty>(PhantomData<fn() -> S>);
5000    impl<S: State> sealed::Sealed for SetItems<S> {}
5001    impl<S: State> State for SetItems<S> {
5002        type Items = Set<members::items>;
5003    }
5004    /// Marker types for field names
5005    #[allow(non_camel_case_types)]
5006    pub mod members {
5007        ///Marker type for the `items` field
5008        pub struct items(());
5009    }
5010}
5011
5012/// Builder for constructing an instance of this type
5013pub struct MutedWordsPrefBuilder<'a, S: muted_words_pref_state::State> {
5014    _state: PhantomData<fn() -> S>,
5015    _fields: (Option<Vec<actor::MutedWord<'a>>>,),
5016    _lifetime: PhantomData<&'a ()>,
5017}
5018
5019impl<'a> MutedWordsPref<'a> {
5020    /// Create a new builder for this type
5021    pub fn new() -> MutedWordsPrefBuilder<'a, muted_words_pref_state::Empty> {
5022        MutedWordsPrefBuilder::new()
5023    }
5024}
5025
5026impl<'a> MutedWordsPrefBuilder<'a, muted_words_pref_state::Empty> {
5027    /// Create a new builder with all fields unset
5028    pub fn new() -> Self {
5029        MutedWordsPrefBuilder {
5030            _state: PhantomData,
5031            _fields: (None,),
5032            _lifetime: PhantomData,
5033        }
5034    }
5035}
5036
5037impl<'a, S> MutedWordsPrefBuilder<'a, S>
5038where
5039    S: muted_words_pref_state::State,
5040    S::Items: muted_words_pref_state::IsUnset,
5041{
5042    /// Set the `items` field (required)
5043    pub fn items(
5044        mut self,
5045        value: impl Into<Vec<actor::MutedWord<'a>>>,
5046    ) -> MutedWordsPrefBuilder<'a, muted_words_pref_state::SetItems<S>> {
5047        self._fields.0 = Option::Some(value.into());
5048        MutedWordsPrefBuilder {
5049            _state: PhantomData,
5050            _fields: self._fields,
5051            _lifetime: PhantomData,
5052        }
5053    }
5054}
5055
5056impl<'a, S> MutedWordsPrefBuilder<'a, S>
5057where
5058    S: muted_words_pref_state::State,
5059    S::Items: muted_words_pref_state::IsSet,
5060{
5061    /// Build the final struct
5062    pub fn build(self) -> MutedWordsPref<'a> {
5063        MutedWordsPref {
5064            items: self._fields.0.unwrap(),
5065            extra_data: Default::default(),
5066        }
5067    }
5068    /// Build the final struct with custom extra_data
5069    pub fn build_with_data(
5070        self,
5071        extra_data: BTreeMap<jacquard_common::deps::smol_str::SmolStr, Data<'a>>,
5072    ) -> MutedWordsPref<'a> {
5073        MutedWordsPref {
5074            items: self._fields.0.unwrap(),
5075            extra_data: Some(extra_data),
5076        }
5077    }
5078}
5079
5080fn _default_nux_completed() -> bool {
5081    false
5082}
5083
5084pub mod nux_state {
5085
5086    pub use crate::builder_types::{Set, Unset, IsSet, IsUnset};
5087    #[allow(unused)]
5088    use ::core::marker::PhantomData;
5089    mod sealed {
5090        pub trait Sealed {}
5091    }
5092    /// State trait tracking which required fields have been set
5093    pub trait State: sealed::Sealed {
5094        type Id;
5095        type Completed;
5096    }
5097    /// Empty state - all required fields are unset
5098    pub struct Empty(());
5099    impl sealed::Sealed for Empty {}
5100    impl State for Empty {
5101        type Id = Unset;
5102        type Completed = Unset;
5103    }
5104    ///State transition - sets the `id` field to Set
5105    pub struct SetId<S: State = Empty>(PhantomData<fn() -> S>);
5106    impl<S: State> sealed::Sealed for SetId<S> {}
5107    impl<S: State> State for SetId<S> {
5108        type Id = Set<members::id>;
5109        type Completed = S::Completed;
5110    }
5111    ///State transition - sets the `completed` field to Set
5112    pub struct SetCompleted<S: State = Empty>(PhantomData<fn() -> S>);
5113    impl<S: State> sealed::Sealed for SetCompleted<S> {}
5114    impl<S: State> State for SetCompleted<S> {
5115        type Id = S::Id;
5116        type Completed = Set<members::completed>;
5117    }
5118    /// Marker types for field names
5119    #[allow(non_camel_case_types)]
5120    pub mod members {
5121        ///Marker type for the `id` field
5122        pub struct id(());
5123        ///Marker type for the `completed` field
5124        pub struct completed(());
5125    }
5126}
5127
5128/// Builder for constructing an instance of this type
5129pub struct NuxBuilder<'a, S: nux_state::State> {
5130    _state: PhantomData<fn() -> S>,
5131    _fields: (Option<bool>, Option<CowStr<'a>>, Option<Datetime>, Option<CowStr<'a>>),
5132    _lifetime: PhantomData<&'a ()>,
5133}
5134
5135impl<'a> Nux<'a> {
5136    /// Create a new builder for this type
5137    pub fn new() -> NuxBuilder<'a, nux_state::Empty> {
5138        NuxBuilder::new()
5139    }
5140}
5141
5142impl<'a> NuxBuilder<'a, nux_state::Empty> {
5143    /// Create a new builder with all fields unset
5144    pub fn new() -> Self {
5145        NuxBuilder {
5146            _state: PhantomData,
5147            _fields: (None, None, None, None),
5148            _lifetime: PhantomData,
5149        }
5150    }
5151}
5152
5153impl<'a, S> NuxBuilder<'a, S>
5154where
5155    S: nux_state::State,
5156    S::Completed: nux_state::IsUnset,
5157{
5158    /// Set the `completed` field (required)
5159    pub fn completed(
5160        mut self,
5161        value: impl Into<bool>,
5162    ) -> NuxBuilder<'a, nux_state::SetCompleted<S>> {
5163        self._fields.0 = Option::Some(value.into());
5164        NuxBuilder {
5165            _state: PhantomData,
5166            _fields: self._fields,
5167            _lifetime: PhantomData,
5168        }
5169    }
5170}
5171
5172impl<'a, S: nux_state::State> NuxBuilder<'a, S> {
5173    /// Set the `data` field (optional)
5174    pub fn data(mut self, value: impl Into<Option<CowStr<'a>>>) -> Self {
5175        self._fields.1 = value.into();
5176        self
5177    }
5178    /// Set the `data` field to an Option value (optional)
5179    pub fn maybe_data(mut self, value: Option<CowStr<'a>>) -> Self {
5180        self._fields.1 = value;
5181        self
5182    }
5183}
5184
5185impl<'a, S: nux_state::State> NuxBuilder<'a, S> {
5186    /// Set the `expiresAt` field (optional)
5187    pub fn expires_at(mut self, value: impl Into<Option<Datetime>>) -> Self {
5188        self._fields.2 = value.into();
5189        self
5190    }
5191    /// Set the `expiresAt` field to an Option value (optional)
5192    pub fn maybe_expires_at(mut self, value: Option<Datetime>) -> Self {
5193        self._fields.2 = value;
5194        self
5195    }
5196}
5197
5198impl<'a, S> NuxBuilder<'a, S>
5199where
5200    S: nux_state::State,
5201    S::Id: nux_state::IsUnset,
5202{
5203    /// Set the `id` field (required)
5204    pub fn id(
5205        mut self,
5206        value: impl Into<CowStr<'a>>,
5207    ) -> NuxBuilder<'a, nux_state::SetId<S>> {
5208        self._fields.3 = Option::Some(value.into());
5209        NuxBuilder {
5210            _state: PhantomData,
5211            _fields: self._fields,
5212            _lifetime: PhantomData,
5213        }
5214    }
5215}
5216
5217impl<'a, S> NuxBuilder<'a, S>
5218where
5219    S: nux_state::State,
5220    S::Id: nux_state::IsSet,
5221    S::Completed: nux_state::IsSet,
5222{
5223    /// Build the final struct
5224    pub fn build(self) -> Nux<'a> {
5225        Nux {
5226            completed: self._fields.0.unwrap(),
5227            data: self._fields.1,
5228            expires_at: self._fields.2,
5229            id: self._fields.3.unwrap(),
5230            extra_data: Default::default(),
5231        }
5232    }
5233    /// Build the final struct with custom extra_data
5234    pub fn build_with_data(
5235        self,
5236        extra_data: BTreeMap<jacquard_common::deps::smol_str::SmolStr, Data<'a>>,
5237    ) -> Nux<'a> {
5238        Nux {
5239            completed: self._fields.0.unwrap(),
5240            data: self._fields.1,
5241            expires_at: self._fields.2,
5242            id: self._fields.3.unwrap(),
5243            extra_data: Some(extra_data),
5244        }
5245    }
5246}
5247
5248pub mod profile_associated_germ_state {
5249
5250    pub use crate::builder_types::{Set, Unset, IsSet, IsUnset};
5251    #[allow(unused)]
5252    use ::core::marker::PhantomData;
5253    mod sealed {
5254        pub trait Sealed {}
5255    }
5256    /// State trait tracking which required fields have been set
5257    pub trait State: sealed::Sealed {
5258        type ShowButtonTo;
5259        type MessageMeUrl;
5260    }
5261    /// Empty state - all required fields are unset
5262    pub struct Empty(());
5263    impl sealed::Sealed for Empty {}
5264    impl State for Empty {
5265        type ShowButtonTo = Unset;
5266        type MessageMeUrl = Unset;
5267    }
5268    ///State transition - sets the `show_button_to` field to Set
5269    pub struct SetShowButtonTo<S: State = Empty>(PhantomData<fn() -> S>);
5270    impl<S: State> sealed::Sealed for SetShowButtonTo<S> {}
5271    impl<S: State> State for SetShowButtonTo<S> {
5272        type ShowButtonTo = Set<members::show_button_to>;
5273        type MessageMeUrl = S::MessageMeUrl;
5274    }
5275    ///State transition - sets the `message_me_url` field to Set
5276    pub struct SetMessageMeUrl<S: State = Empty>(PhantomData<fn() -> S>);
5277    impl<S: State> sealed::Sealed for SetMessageMeUrl<S> {}
5278    impl<S: State> State for SetMessageMeUrl<S> {
5279        type ShowButtonTo = S::ShowButtonTo;
5280        type MessageMeUrl = Set<members::message_me_url>;
5281    }
5282    /// Marker types for field names
5283    #[allow(non_camel_case_types)]
5284    pub mod members {
5285        ///Marker type for the `show_button_to` field
5286        pub struct show_button_to(());
5287        ///Marker type for the `message_me_url` field
5288        pub struct message_me_url(());
5289    }
5290}
5291
5292/// Builder for constructing an instance of this type
5293pub struct ProfileAssociatedGermBuilder<'a, S: profile_associated_germ_state::State> {
5294    _state: PhantomData<fn() -> S>,
5295    _fields: (Option<UriValue<'a>>, Option<ProfileAssociatedGermShowButtonTo<'a>>),
5296    _lifetime: PhantomData<&'a ()>,
5297}
5298
5299impl<'a> ProfileAssociatedGerm<'a> {
5300    /// Create a new builder for this type
5301    pub fn new() -> ProfileAssociatedGermBuilder<
5302        'a,
5303        profile_associated_germ_state::Empty,
5304    > {
5305        ProfileAssociatedGermBuilder::new()
5306    }
5307}
5308
5309impl<'a> ProfileAssociatedGermBuilder<'a, profile_associated_germ_state::Empty> {
5310    /// Create a new builder with all fields unset
5311    pub fn new() -> Self {
5312        ProfileAssociatedGermBuilder {
5313            _state: PhantomData,
5314            _fields: (None, None),
5315            _lifetime: PhantomData,
5316        }
5317    }
5318}
5319
5320impl<'a, S> ProfileAssociatedGermBuilder<'a, S>
5321where
5322    S: profile_associated_germ_state::State,
5323    S::MessageMeUrl: profile_associated_germ_state::IsUnset,
5324{
5325    /// Set the `messageMeUrl` field (required)
5326    pub fn message_me_url(
5327        mut self,
5328        value: impl Into<UriValue<'a>>,
5329    ) -> ProfileAssociatedGermBuilder<
5330        'a,
5331        profile_associated_germ_state::SetMessageMeUrl<S>,
5332    > {
5333        self._fields.0 = Option::Some(value.into());
5334        ProfileAssociatedGermBuilder {
5335            _state: PhantomData,
5336            _fields: self._fields,
5337            _lifetime: PhantomData,
5338        }
5339    }
5340}
5341
5342impl<'a, S> ProfileAssociatedGermBuilder<'a, S>
5343where
5344    S: profile_associated_germ_state::State,
5345    S::ShowButtonTo: profile_associated_germ_state::IsUnset,
5346{
5347    /// Set the `showButtonTo` field (required)
5348    pub fn show_button_to(
5349        mut self,
5350        value: impl Into<ProfileAssociatedGermShowButtonTo<'a>>,
5351    ) -> ProfileAssociatedGermBuilder<
5352        'a,
5353        profile_associated_germ_state::SetShowButtonTo<S>,
5354    > {
5355        self._fields.1 = Option::Some(value.into());
5356        ProfileAssociatedGermBuilder {
5357            _state: PhantomData,
5358            _fields: self._fields,
5359            _lifetime: PhantomData,
5360        }
5361    }
5362}
5363
5364impl<'a, S> ProfileAssociatedGermBuilder<'a, S>
5365where
5366    S: profile_associated_germ_state::State,
5367    S::ShowButtonTo: profile_associated_germ_state::IsSet,
5368    S::MessageMeUrl: profile_associated_germ_state::IsSet,
5369{
5370    /// Build the final struct
5371    pub fn build(self) -> ProfileAssociatedGerm<'a> {
5372        ProfileAssociatedGerm {
5373            message_me_url: self._fields.0.unwrap(),
5374            show_button_to: self._fields.1.unwrap(),
5375            extra_data: Default::default(),
5376        }
5377    }
5378    /// Build the final struct with custom extra_data
5379    pub fn build_with_data(
5380        self,
5381        extra_data: BTreeMap<jacquard_common::deps::smol_str::SmolStr, Data<'a>>,
5382    ) -> ProfileAssociatedGerm<'a> {
5383        ProfileAssociatedGerm {
5384            message_me_url: self._fields.0.unwrap(),
5385            show_button_to: self._fields.1.unwrap(),
5386            extra_data: Some(extra_data),
5387        }
5388    }
5389}
5390
5391pub mod profile_view_state {
5392
5393    pub use crate::builder_types::{Set, Unset, IsSet, IsUnset};
5394    #[allow(unused)]
5395    use ::core::marker::PhantomData;
5396    mod sealed {
5397        pub trait Sealed {}
5398    }
5399    /// State trait tracking which required fields have been set
5400    pub trait State: sealed::Sealed {
5401        type Did;
5402        type Handle;
5403    }
5404    /// Empty state - all required fields are unset
5405    pub struct Empty(());
5406    impl sealed::Sealed for Empty {}
5407    impl State for Empty {
5408        type Did = Unset;
5409        type Handle = Unset;
5410    }
5411    ///State transition - sets the `did` field to Set
5412    pub struct SetDid<S: State = Empty>(PhantomData<fn() -> S>);
5413    impl<S: State> sealed::Sealed for SetDid<S> {}
5414    impl<S: State> State for SetDid<S> {
5415        type Did = Set<members::did>;
5416        type Handle = S::Handle;
5417    }
5418    ///State transition - sets the `handle` field to Set
5419    pub struct SetHandle<S: State = Empty>(PhantomData<fn() -> S>);
5420    impl<S: State> sealed::Sealed for SetHandle<S> {}
5421    impl<S: State> State for SetHandle<S> {
5422        type Did = S::Did;
5423        type Handle = Set<members::handle>;
5424    }
5425    /// Marker types for field names
5426    #[allow(non_camel_case_types)]
5427    pub mod members {
5428        ///Marker type for the `did` field
5429        pub struct did(());
5430        ///Marker type for the `handle` field
5431        pub struct handle(());
5432    }
5433}
5434
5435/// Builder for constructing an instance of this type
5436pub struct ProfileViewBuilder<'a, S: profile_view_state::State> {
5437    _state: PhantomData<fn() -> S>,
5438    _fields: (
5439        Option<actor::ProfileAssociated<'a>>,
5440        Option<UriValue<'a>>,
5441        Option<Datetime>,
5442        Option<Data<'a>>,
5443        Option<CowStr<'a>>,
5444        Option<Did<'a>>,
5445        Option<CowStr<'a>>,
5446        Option<Handle<'a>>,
5447        Option<Datetime>,
5448        Option<Vec<Label<'a>>>,
5449        Option<CowStr<'a>>,
5450        Option<actor::StatusView<'a>>,
5451        Option<actor::VerificationState<'a>>,
5452        Option<actor::ViewerState<'a>>,
5453    ),
5454    _lifetime: PhantomData<&'a ()>,
5455}
5456
5457impl<'a> ProfileView<'a> {
5458    /// Create a new builder for this type
5459    pub fn new() -> ProfileViewBuilder<'a, profile_view_state::Empty> {
5460        ProfileViewBuilder::new()
5461    }
5462}
5463
5464impl<'a> ProfileViewBuilder<'a, profile_view_state::Empty> {
5465    /// Create a new builder with all fields unset
5466    pub fn new() -> Self {
5467        ProfileViewBuilder {
5468            _state: PhantomData,
5469            _fields: (
5470                None,
5471                None,
5472                None,
5473                None,
5474                None,
5475                None,
5476                None,
5477                None,
5478                None,
5479                None,
5480                None,
5481                None,
5482                None,
5483                None,
5484            ),
5485            _lifetime: PhantomData,
5486        }
5487    }
5488}
5489
5490impl<'a, S: profile_view_state::State> ProfileViewBuilder<'a, S> {
5491    /// Set the `associated` field (optional)
5492    pub fn associated(
5493        mut self,
5494        value: impl Into<Option<actor::ProfileAssociated<'a>>>,
5495    ) -> Self {
5496        self._fields.0 = value.into();
5497        self
5498    }
5499    /// Set the `associated` field to an Option value (optional)
5500    pub fn maybe_associated(
5501        mut self,
5502        value: Option<actor::ProfileAssociated<'a>>,
5503    ) -> Self {
5504        self._fields.0 = value;
5505        self
5506    }
5507}
5508
5509impl<'a, S: profile_view_state::State> ProfileViewBuilder<'a, S> {
5510    /// Set the `avatar` field (optional)
5511    pub fn avatar(mut self, value: impl Into<Option<UriValue<'a>>>) -> Self {
5512        self._fields.1 = value.into();
5513        self
5514    }
5515    /// Set the `avatar` field to an Option value (optional)
5516    pub fn maybe_avatar(mut self, value: Option<UriValue<'a>>) -> Self {
5517        self._fields.1 = value;
5518        self
5519    }
5520}
5521
5522impl<'a, S: profile_view_state::State> ProfileViewBuilder<'a, S> {
5523    /// Set the `createdAt` field (optional)
5524    pub fn created_at(mut self, value: impl Into<Option<Datetime>>) -> Self {
5525        self._fields.2 = value.into();
5526        self
5527    }
5528    /// Set the `createdAt` field to an Option value (optional)
5529    pub fn maybe_created_at(mut self, value: Option<Datetime>) -> Self {
5530        self._fields.2 = value;
5531        self
5532    }
5533}
5534
5535impl<'a, S: profile_view_state::State> ProfileViewBuilder<'a, S> {
5536    /// Set the `debug` field (optional)
5537    pub fn debug(mut self, value: impl Into<Option<Data<'a>>>) -> Self {
5538        self._fields.3 = value.into();
5539        self
5540    }
5541    /// Set the `debug` field to an Option value (optional)
5542    pub fn maybe_debug(mut self, value: Option<Data<'a>>) -> Self {
5543        self._fields.3 = value;
5544        self
5545    }
5546}
5547
5548impl<'a, S: profile_view_state::State> ProfileViewBuilder<'a, S> {
5549    /// Set the `description` field (optional)
5550    pub fn description(mut self, value: impl Into<Option<CowStr<'a>>>) -> Self {
5551        self._fields.4 = value.into();
5552        self
5553    }
5554    /// Set the `description` field to an Option value (optional)
5555    pub fn maybe_description(mut self, value: Option<CowStr<'a>>) -> Self {
5556        self._fields.4 = value;
5557        self
5558    }
5559}
5560
5561impl<'a, S> ProfileViewBuilder<'a, S>
5562where
5563    S: profile_view_state::State,
5564    S::Did: profile_view_state::IsUnset,
5565{
5566    /// Set the `did` field (required)
5567    pub fn did(
5568        mut self,
5569        value: impl Into<Did<'a>>,
5570    ) -> ProfileViewBuilder<'a, profile_view_state::SetDid<S>> {
5571        self._fields.5 = Option::Some(value.into());
5572        ProfileViewBuilder {
5573            _state: PhantomData,
5574            _fields: self._fields,
5575            _lifetime: PhantomData,
5576        }
5577    }
5578}
5579
5580impl<'a, S: profile_view_state::State> ProfileViewBuilder<'a, S> {
5581    /// Set the `displayName` field (optional)
5582    pub fn display_name(mut self, value: impl Into<Option<CowStr<'a>>>) -> Self {
5583        self._fields.6 = value.into();
5584        self
5585    }
5586    /// Set the `displayName` field to an Option value (optional)
5587    pub fn maybe_display_name(mut self, value: Option<CowStr<'a>>) -> Self {
5588        self._fields.6 = value;
5589        self
5590    }
5591}
5592
5593impl<'a, S> ProfileViewBuilder<'a, S>
5594where
5595    S: profile_view_state::State,
5596    S::Handle: profile_view_state::IsUnset,
5597{
5598    /// Set the `handle` field (required)
5599    pub fn handle(
5600        mut self,
5601        value: impl Into<Handle<'a>>,
5602    ) -> ProfileViewBuilder<'a, profile_view_state::SetHandle<S>> {
5603        self._fields.7 = Option::Some(value.into());
5604        ProfileViewBuilder {
5605            _state: PhantomData,
5606            _fields: self._fields,
5607            _lifetime: PhantomData,
5608        }
5609    }
5610}
5611
5612impl<'a, S: profile_view_state::State> ProfileViewBuilder<'a, S> {
5613    /// Set the `indexedAt` field (optional)
5614    pub fn indexed_at(mut self, value: impl Into<Option<Datetime>>) -> Self {
5615        self._fields.8 = value.into();
5616        self
5617    }
5618    /// Set the `indexedAt` field to an Option value (optional)
5619    pub fn maybe_indexed_at(mut self, value: Option<Datetime>) -> Self {
5620        self._fields.8 = value;
5621        self
5622    }
5623}
5624
5625impl<'a, S: profile_view_state::State> ProfileViewBuilder<'a, S> {
5626    /// Set the `labels` field (optional)
5627    pub fn labels(mut self, value: impl Into<Option<Vec<Label<'a>>>>) -> Self {
5628        self._fields.9 = value.into();
5629        self
5630    }
5631    /// Set the `labels` field to an Option value (optional)
5632    pub fn maybe_labels(mut self, value: Option<Vec<Label<'a>>>) -> Self {
5633        self._fields.9 = value;
5634        self
5635    }
5636}
5637
5638impl<'a, S: profile_view_state::State> ProfileViewBuilder<'a, S> {
5639    /// Set the `pronouns` field (optional)
5640    pub fn pronouns(mut self, value: impl Into<Option<CowStr<'a>>>) -> Self {
5641        self._fields.10 = value.into();
5642        self
5643    }
5644    /// Set the `pronouns` field to an Option value (optional)
5645    pub fn maybe_pronouns(mut self, value: Option<CowStr<'a>>) -> Self {
5646        self._fields.10 = value;
5647        self
5648    }
5649}
5650
5651impl<'a, S: profile_view_state::State> ProfileViewBuilder<'a, S> {
5652    /// Set the `status` field (optional)
5653    pub fn status(mut self, value: impl Into<Option<actor::StatusView<'a>>>) -> Self {
5654        self._fields.11 = value.into();
5655        self
5656    }
5657    /// Set the `status` field to an Option value (optional)
5658    pub fn maybe_status(mut self, value: Option<actor::StatusView<'a>>) -> Self {
5659        self._fields.11 = value;
5660        self
5661    }
5662}
5663
5664impl<'a, S: profile_view_state::State> ProfileViewBuilder<'a, S> {
5665    /// Set the `verification` field (optional)
5666    pub fn verification(
5667        mut self,
5668        value: impl Into<Option<actor::VerificationState<'a>>>,
5669    ) -> Self {
5670        self._fields.12 = value.into();
5671        self
5672    }
5673    /// Set the `verification` field to an Option value (optional)
5674    pub fn maybe_verification(
5675        mut self,
5676        value: Option<actor::VerificationState<'a>>,
5677    ) -> Self {
5678        self._fields.12 = value;
5679        self
5680    }
5681}
5682
5683impl<'a, S: profile_view_state::State> ProfileViewBuilder<'a, S> {
5684    /// Set the `viewer` field (optional)
5685    pub fn viewer(mut self, value: impl Into<Option<actor::ViewerState<'a>>>) -> Self {
5686        self._fields.13 = value.into();
5687        self
5688    }
5689    /// Set the `viewer` field to an Option value (optional)
5690    pub fn maybe_viewer(mut self, value: Option<actor::ViewerState<'a>>) -> Self {
5691        self._fields.13 = value;
5692        self
5693    }
5694}
5695
5696impl<'a, S> ProfileViewBuilder<'a, S>
5697where
5698    S: profile_view_state::State,
5699    S::Did: profile_view_state::IsSet,
5700    S::Handle: profile_view_state::IsSet,
5701{
5702    /// Build the final struct
5703    pub fn build(self) -> ProfileView<'a> {
5704        ProfileView {
5705            associated: self._fields.0,
5706            avatar: self._fields.1,
5707            created_at: self._fields.2,
5708            debug: self._fields.3,
5709            description: self._fields.4,
5710            did: self._fields.5.unwrap(),
5711            display_name: self._fields.6,
5712            handle: self._fields.7.unwrap(),
5713            indexed_at: self._fields.8,
5714            labels: self._fields.9,
5715            pronouns: self._fields.10,
5716            status: self._fields.11,
5717            verification: self._fields.12,
5718            viewer: self._fields.13,
5719            extra_data: Default::default(),
5720        }
5721    }
5722    /// Build the final struct with custom extra_data
5723    pub fn build_with_data(
5724        self,
5725        extra_data: BTreeMap<jacquard_common::deps::smol_str::SmolStr, Data<'a>>,
5726    ) -> ProfileView<'a> {
5727        ProfileView {
5728            associated: self._fields.0,
5729            avatar: self._fields.1,
5730            created_at: self._fields.2,
5731            debug: self._fields.3,
5732            description: self._fields.4,
5733            did: self._fields.5.unwrap(),
5734            display_name: self._fields.6,
5735            handle: self._fields.7.unwrap(),
5736            indexed_at: self._fields.8,
5737            labels: self._fields.9,
5738            pronouns: self._fields.10,
5739            status: self._fields.11,
5740            verification: self._fields.12,
5741            viewer: self._fields.13,
5742            extra_data: Some(extra_data),
5743        }
5744    }
5745}
5746
5747pub mod profile_view_basic_state {
5748
5749    pub use crate::builder_types::{Set, Unset, IsSet, IsUnset};
5750    #[allow(unused)]
5751    use ::core::marker::PhantomData;
5752    mod sealed {
5753        pub trait Sealed {}
5754    }
5755    /// State trait tracking which required fields have been set
5756    pub trait State: sealed::Sealed {
5757        type Handle;
5758        type Did;
5759    }
5760    /// Empty state - all required fields are unset
5761    pub struct Empty(());
5762    impl sealed::Sealed for Empty {}
5763    impl State for Empty {
5764        type Handle = Unset;
5765        type Did = Unset;
5766    }
5767    ///State transition - sets the `handle` field to Set
5768    pub struct SetHandle<S: State = Empty>(PhantomData<fn() -> S>);
5769    impl<S: State> sealed::Sealed for SetHandle<S> {}
5770    impl<S: State> State for SetHandle<S> {
5771        type Handle = Set<members::handle>;
5772        type Did = S::Did;
5773    }
5774    ///State transition - sets the `did` field to Set
5775    pub struct SetDid<S: State = Empty>(PhantomData<fn() -> S>);
5776    impl<S: State> sealed::Sealed for SetDid<S> {}
5777    impl<S: State> State for SetDid<S> {
5778        type Handle = S::Handle;
5779        type Did = Set<members::did>;
5780    }
5781    /// Marker types for field names
5782    #[allow(non_camel_case_types)]
5783    pub mod members {
5784        ///Marker type for the `handle` field
5785        pub struct handle(());
5786        ///Marker type for the `did` field
5787        pub struct did(());
5788    }
5789}
5790
5791/// Builder for constructing an instance of this type
5792pub struct ProfileViewBasicBuilder<'a, S: profile_view_basic_state::State> {
5793    _state: PhantomData<fn() -> S>,
5794    _fields: (
5795        Option<actor::ProfileAssociated<'a>>,
5796        Option<UriValue<'a>>,
5797        Option<Datetime>,
5798        Option<Data<'a>>,
5799        Option<Did<'a>>,
5800        Option<CowStr<'a>>,
5801        Option<Handle<'a>>,
5802        Option<Vec<Label<'a>>>,
5803        Option<CowStr<'a>>,
5804        Option<actor::StatusView<'a>>,
5805        Option<actor::VerificationState<'a>>,
5806        Option<actor::ViewerState<'a>>,
5807    ),
5808    _lifetime: PhantomData<&'a ()>,
5809}
5810
5811impl<'a> ProfileViewBasic<'a> {
5812    /// Create a new builder for this type
5813    pub fn new() -> ProfileViewBasicBuilder<'a, profile_view_basic_state::Empty> {
5814        ProfileViewBasicBuilder::new()
5815    }
5816}
5817
5818impl<'a> ProfileViewBasicBuilder<'a, profile_view_basic_state::Empty> {
5819    /// Create a new builder with all fields unset
5820    pub fn new() -> Self {
5821        ProfileViewBasicBuilder {
5822            _state: PhantomData,
5823            _fields: (
5824                None,
5825                None,
5826                None,
5827                None,
5828                None,
5829                None,
5830                None,
5831                None,
5832                None,
5833                None,
5834                None,
5835                None,
5836            ),
5837            _lifetime: PhantomData,
5838        }
5839    }
5840}
5841
5842impl<'a, S: profile_view_basic_state::State> ProfileViewBasicBuilder<'a, S> {
5843    /// Set the `associated` field (optional)
5844    pub fn associated(
5845        mut self,
5846        value: impl Into<Option<actor::ProfileAssociated<'a>>>,
5847    ) -> Self {
5848        self._fields.0 = value.into();
5849        self
5850    }
5851    /// Set the `associated` field to an Option value (optional)
5852    pub fn maybe_associated(
5853        mut self,
5854        value: Option<actor::ProfileAssociated<'a>>,
5855    ) -> Self {
5856        self._fields.0 = value;
5857        self
5858    }
5859}
5860
5861impl<'a, S: profile_view_basic_state::State> ProfileViewBasicBuilder<'a, S> {
5862    /// Set the `avatar` field (optional)
5863    pub fn avatar(mut self, value: impl Into<Option<UriValue<'a>>>) -> Self {
5864        self._fields.1 = value.into();
5865        self
5866    }
5867    /// Set the `avatar` field to an Option value (optional)
5868    pub fn maybe_avatar(mut self, value: Option<UriValue<'a>>) -> Self {
5869        self._fields.1 = value;
5870        self
5871    }
5872}
5873
5874impl<'a, S: profile_view_basic_state::State> ProfileViewBasicBuilder<'a, S> {
5875    /// Set the `createdAt` field (optional)
5876    pub fn created_at(mut self, value: impl Into<Option<Datetime>>) -> Self {
5877        self._fields.2 = value.into();
5878        self
5879    }
5880    /// Set the `createdAt` field to an Option value (optional)
5881    pub fn maybe_created_at(mut self, value: Option<Datetime>) -> Self {
5882        self._fields.2 = value;
5883        self
5884    }
5885}
5886
5887impl<'a, S: profile_view_basic_state::State> ProfileViewBasicBuilder<'a, S> {
5888    /// Set the `debug` field (optional)
5889    pub fn debug(mut self, value: impl Into<Option<Data<'a>>>) -> Self {
5890        self._fields.3 = value.into();
5891        self
5892    }
5893    /// Set the `debug` field to an Option value (optional)
5894    pub fn maybe_debug(mut self, value: Option<Data<'a>>) -> Self {
5895        self._fields.3 = value;
5896        self
5897    }
5898}
5899
5900impl<'a, S> ProfileViewBasicBuilder<'a, S>
5901where
5902    S: profile_view_basic_state::State,
5903    S::Did: profile_view_basic_state::IsUnset,
5904{
5905    /// Set the `did` field (required)
5906    pub fn did(
5907        mut self,
5908        value: impl Into<Did<'a>>,
5909    ) -> ProfileViewBasicBuilder<'a, profile_view_basic_state::SetDid<S>> {
5910        self._fields.4 = Option::Some(value.into());
5911        ProfileViewBasicBuilder {
5912            _state: PhantomData,
5913            _fields: self._fields,
5914            _lifetime: PhantomData,
5915        }
5916    }
5917}
5918
5919impl<'a, S: profile_view_basic_state::State> ProfileViewBasicBuilder<'a, S> {
5920    /// Set the `displayName` field (optional)
5921    pub fn display_name(mut self, value: impl Into<Option<CowStr<'a>>>) -> Self {
5922        self._fields.5 = value.into();
5923        self
5924    }
5925    /// Set the `displayName` field to an Option value (optional)
5926    pub fn maybe_display_name(mut self, value: Option<CowStr<'a>>) -> Self {
5927        self._fields.5 = value;
5928        self
5929    }
5930}
5931
5932impl<'a, S> ProfileViewBasicBuilder<'a, S>
5933where
5934    S: profile_view_basic_state::State,
5935    S::Handle: profile_view_basic_state::IsUnset,
5936{
5937    /// Set the `handle` field (required)
5938    pub fn handle(
5939        mut self,
5940        value: impl Into<Handle<'a>>,
5941    ) -> ProfileViewBasicBuilder<'a, profile_view_basic_state::SetHandle<S>> {
5942        self._fields.6 = Option::Some(value.into());
5943        ProfileViewBasicBuilder {
5944            _state: PhantomData,
5945            _fields: self._fields,
5946            _lifetime: PhantomData,
5947        }
5948    }
5949}
5950
5951impl<'a, S: profile_view_basic_state::State> ProfileViewBasicBuilder<'a, S> {
5952    /// Set the `labels` field (optional)
5953    pub fn labels(mut self, value: impl Into<Option<Vec<Label<'a>>>>) -> Self {
5954        self._fields.7 = value.into();
5955        self
5956    }
5957    /// Set the `labels` field to an Option value (optional)
5958    pub fn maybe_labels(mut self, value: Option<Vec<Label<'a>>>) -> Self {
5959        self._fields.7 = value;
5960        self
5961    }
5962}
5963
5964impl<'a, S: profile_view_basic_state::State> ProfileViewBasicBuilder<'a, S> {
5965    /// Set the `pronouns` field (optional)
5966    pub fn pronouns(mut self, value: impl Into<Option<CowStr<'a>>>) -> Self {
5967        self._fields.8 = value.into();
5968        self
5969    }
5970    /// Set the `pronouns` field to an Option value (optional)
5971    pub fn maybe_pronouns(mut self, value: Option<CowStr<'a>>) -> Self {
5972        self._fields.8 = value;
5973        self
5974    }
5975}
5976
5977impl<'a, S: profile_view_basic_state::State> ProfileViewBasicBuilder<'a, S> {
5978    /// Set the `status` field (optional)
5979    pub fn status(mut self, value: impl Into<Option<actor::StatusView<'a>>>) -> Self {
5980        self._fields.9 = value.into();
5981        self
5982    }
5983    /// Set the `status` field to an Option value (optional)
5984    pub fn maybe_status(mut self, value: Option<actor::StatusView<'a>>) -> Self {
5985        self._fields.9 = value;
5986        self
5987    }
5988}
5989
5990impl<'a, S: profile_view_basic_state::State> ProfileViewBasicBuilder<'a, S> {
5991    /// Set the `verification` field (optional)
5992    pub fn verification(
5993        mut self,
5994        value: impl Into<Option<actor::VerificationState<'a>>>,
5995    ) -> Self {
5996        self._fields.10 = value.into();
5997        self
5998    }
5999    /// Set the `verification` field to an Option value (optional)
6000    pub fn maybe_verification(
6001        mut self,
6002        value: Option<actor::VerificationState<'a>>,
6003    ) -> Self {
6004        self._fields.10 = value;
6005        self
6006    }
6007}
6008
6009impl<'a, S: profile_view_basic_state::State> ProfileViewBasicBuilder<'a, S> {
6010    /// Set the `viewer` field (optional)
6011    pub fn viewer(mut self, value: impl Into<Option<actor::ViewerState<'a>>>) -> Self {
6012        self._fields.11 = value.into();
6013        self
6014    }
6015    /// Set the `viewer` field to an Option value (optional)
6016    pub fn maybe_viewer(mut self, value: Option<actor::ViewerState<'a>>) -> Self {
6017        self._fields.11 = value;
6018        self
6019    }
6020}
6021
6022impl<'a, S> ProfileViewBasicBuilder<'a, S>
6023where
6024    S: profile_view_basic_state::State,
6025    S::Handle: profile_view_basic_state::IsSet,
6026    S::Did: profile_view_basic_state::IsSet,
6027{
6028    /// Build the final struct
6029    pub fn build(self) -> ProfileViewBasic<'a> {
6030        ProfileViewBasic {
6031            associated: self._fields.0,
6032            avatar: self._fields.1,
6033            created_at: self._fields.2,
6034            debug: self._fields.3,
6035            did: self._fields.4.unwrap(),
6036            display_name: self._fields.5,
6037            handle: self._fields.6.unwrap(),
6038            labels: self._fields.7,
6039            pronouns: self._fields.8,
6040            status: self._fields.9,
6041            verification: self._fields.10,
6042            viewer: self._fields.11,
6043            extra_data: Default::default(),
6044        }
6045    }
6046    /// Build the final struct with custom extra_data
6047    pub fn build_with_data(
6048        self,
6049        extra_data: BTreeMap<jacquard_common::deps::smol_str::SmolStr, Data<'a>>,
6050    ) -> ProfileViewBasic<'a> {
6051        ProfileViewBasic {
6052            associated: self._fields.0,
6053            avatar: self._fields.1,
6054            created_at: self._fields.2,
6055            debug: self._fields.3,
6056            did: self._fields.4.unwrap(),
6057            display_name: self._fields.5,
6058            handle: self._fields.6.unwrap(),
6059            labels: self._fields.7,
6060            pronouns: self._fields.8,
6061            status: self._fields.9,
6062            verification: self._fields.10,
6063            viewer: self._fields.11,
6064            extra_data: Some(extra_data),
6065        }
6066    }
6067}
6068
6069pub mod profile_view_detailed_state {
6070
6071    pub use crate::builder_types::{Set, Unset, IsSet, IsUnset};
6072    #[allow(unused)]
6073    use ::core::marker::PhantomData;
6074    mod sealed {
6075        pub trait Sealed {}
6076    }
6077    /// State trait tracking which required fields have been set
6078    pub trait State: sealed::Sealed {
6079        type Did;
6080        type Handle;
6081    }
6082    /// Empty state - all required fields are unset
6083    pub struct Empty(());
6084    impl sealed::Sealed for Empty {}
6085    impl State for Empty {
6086        type Did = Unset;
6087        type Handle = Unset;
6088    }
6089    ///State transition - sets the `did` field to Set
6090    pub struct SetDid<S: State = Empty>(PhantomData<fn() -> S>);
6091    impl<S: State> sealed::Sealed for SetDid<S> {}
6092    impl<S: State> State for SetDid<S> {
6093        type Did = Set<members::did>;
6094        type Handle = S::Handle;
6095    }
6096    ///State transition - sets the `handle` field to Set
6097    pub struct SetHandle<S: State = Empty>(PhantomData<fn() -> S>);
6098    impl<S: State> sealed::Sealed for SetHandle<S> {}
6099    impl<S: State> State for SetHandle<S> {
6100        type Did = S::Did;
6101        type Handle = Set<members::handle>;
6102    }
6103    /// Marker types for field names
6104    #[allow(non_camel_case_types)]
6105    pub mod members {
6106        ///Marker type for the `did` field
6107        pub struct did(());
6108        ///Marker type for the `handle` field
6109        pub struct handle(());
6110    }
6111}
6112
6113/// Builder for constructing an instance of this type
6114pub struct ProfileViewDetailedBuilder<'a, S: profile_view_detailed_state::State> {
6115    _state: PhantomData<fn() -> S>,
6116    _fields: (
6117        Option<actor::ProfileAssociated<'a>>,
6118        Option<UriValue<'a>>,
6119        Option<UriValue<'a>>,
6120        Option<Datetime>,
6121        Option<Data<'a>>,
6122        Option<CowStr<'a>>,
6123        Option<Did<'a>>,
6124        Option<CowStr<'a>>,
6125        Option<i64>,
6126        Option<i64>,
6127        Option<Handle<'a>>,
6128        Option<Datetime>,
6129        Option<StarterPackViewBasic<'a>>,
6130        Option<Vec<Label<'a>>>,
6131        Option<StrongRef<'a>>,
6132        Option<i64>,
6133        Option<CowStr<'a>>,
6134        Option<actor::StatusView<'a>>,
6135        Option<actor::VerificationState<'a>>,
6136        Option<actor::ViewerState<'a>>,
6137        Option<UriValue<'a>>,
6138    ),
6139    _lifetime: PhantomData<&'a ()>,
6140}
6141
6142impl<'a> ProfileViewDetailed<'a> {
6143    /// Create a new builder for this type
6144    pub fn new() -> ProfileViewDetailedBuilder<'a, profile_view_detailed_state::Empty> {
6145        ProfileViewDetailedBuilder::new()
6146    }
6147}
6148
6149impl<'a> ProfileViewDetailedBuilder<'a, profile_view_detailed_state::Empty> {
6150    /// Create a new builder with all fields unset
6151    pub fn new() -> Self {
6152        ProfileViewDetailedBuilder {
6153            _state: PhantomData,
6154            _fields: (
6155                None,
6156                None,
6157                None,
6158                None,
6159                None,
6160                None,
6161                None,
6162                None,
6163                None,
6164                None,
6165                None,
6166                None,
6167                None,
6168                None,
6169                None,
6170                None,
6171                None,
6172                None,
6173                None,
6174                None,
6175                None,
6176            ),
6177            _lifetime: PhantomData,
6178        }
6179    }
6180}
6181
6182impl<'a, S: profile_view_detailed_state::State> ProfileViewDetailedBuilder<'a, S> {
6183    /// Set the `associated` field (optional)
6184    pub fn associated(
6185        mut self,
6186        value: impl Into<Option<actor::ProfileAssociated<'a>>>,
6187    ) -> Self {
6188        self._fields.0 = value.into();
6189        self
6190    }
6191    /// Set the `associated` field to an Option value (optional)
6192    pub fn maybe_associated(
6193        mut self,
6194        value: Option<actor::ProfileAssociated<'a>>,
6195    ) -> Self {
6196        self._fields.0 = value;
6197        self
6198    }
6199}
6200
6201impl<'a, S: profile_view_detailed_state::State> ProfileViewDetailedBuilder<'a, S> {
6202    /// Set the `avatar` field (optional)
6203    pub fn avatar(mut self, value: impl Into<Option<UriValue<'a>>>) -> Self {
6204        self._fields.1 = value.into();
6205        self
6206    }
6207    /// Set the `avatar` field to an Option value (optional)
6208    pub fn maybe_avatar(mut self, value: Option<UriValue<'a>>) -> Self {
6209        self._fields.1 = value;
6210        self
6211    }
6212}
6213
6214impl<'a, S: profile_view_detailed_state::State> ProfileViewDetailedBuilder<'a, S> {
6215    /// Set the `banner` field (optional)
6216    pub fn banner(mut self, value: impl Into<Option<UriValue<'a>>>) -> Self {
6217        self._fields.2 = value.into();
6218        self
6219    }
6220    /// Set the `banner` field to an Option value (optional)
6221    pub fn maybe_banner(mut self, value: Option<UriValue<'a>>) -> Self {
6222        self._fields.2 = value;
6223        self
6224    }
6225}
6226
6227impl<'a, S: profile_view_detailed_state::State> ProfileViewDetailedBuilder<'a, S> {
6228    /// Set the `createdAt` field (optional)
6229    pub fn created_at(mut self, value: impl Into<Option<Datetime>>) -> Self {
6230        self._fields.3 = value.into();
6231        self
6232    }
6233    /// Set the `createdAt` field to an Option value (optional)
6234    pub fn maybe_created_at(mut self, value: Option<Datetime>) -> Self {
6235        self._fields.3 = value;
6236        self
6237    }
6238}
6239
6240impl<'a, S: profile_view_detailed_state::State> ProfileViewDetailedBuilder<'a, S> {
6241    /// Set the `debug` field (optional)
6242    pub fn debug(mut self, value: impl Into<Option<Data<'a>>>) -> Self {
6243        self._fields.4 = value.into();
6244        self
6245    }
6246    /// Set the `debug` field to an Option value (optional)
6247    pub fn maybe_debug(mut self, value: Option<Data<'a>>) -> Self {
6248        self._fields.4 = value;
6249        self
6250    }
6251}
6252
6253impl<'a, S: profile_view_detailed_state::State> ProfileViewDetailedBuilder<'a, S> {
6254    /// Set the `description` field (optional)
6255    pub fn description(mut self, value: impl Into<Option<CowStr<'a>>>) -> Self {
6256        self._fields.5 = value.into();
6257        self
6258    }
6259    /// Set the `description` field to an Option value (optional)
6260    pub fn maybe_description(mut self, value: Option<CowStr<'a>>) -> Self {
6261        self._fields.5 = value;
6262        self
6263    }
6264}
6265
6266impl<'a, S> ProfileViewDetailedBuilder<'a, S>
6267where
6268    S: profile_view_detailed_state::State,
6269    S::Did: profile_view_detailed_state::IsUnset,
6270{
6271    /// Set the `did` field (required)
6272    pub fn did(
6273        mut self,
6274        value: impl Into<Did<'a>>,
6275    ) -> ProfileViewDetailedBuilder<'a, profile_view_detailed_state::SetDid<S>> {
6276        self._fields.6 = Option::Some(value.into());
6277        ProfileViewDetailedBuilder {
6278            _state: PhantomData,
6279            _fields: self._fields,
6280            _lifetime: PhantomData,
6281        }
6282    }
6283}
6284
6285impl<'a, S: profile_view_detailed_state::State> ProfileViewDetailedBuilder<'a, S> {
6286    /// Set the `displayName` field (optional)
6287    pub fn display_name(mut self, value: impl Into<Option<CowStr<'a>>>) -> Self {
6288        self._fields.7 = value.into();
6289        self
6290    }
6291    /// Set the `displayName` field to an Option value (optional)
6292    pub fn maybe_display_name(mut self, value: Option<CowStr<'a>>) -> Self {
6293        self._fields.7 = value;
6294        self
6295    }
6296}
6297
6298impl<'a, S: profile_view_detailed_state::State> ProfileViewDetailedBuilder<'a, S> {
6299    /// Set the `followersCount` field (optional)
6300    pub fn followers_count(mut self, value: impl Into<Option<i64>>) -> Self {
6301        self._fields.8 = value.into();
6302        self
6303    }
6304    /// Set the `followersCount` field to an Option value (optional)
6305    pub fn maybe_followers_count(mut self, value: Option<i64>) -> Self {
6306        self._fields.8 = value;
6307        self
6308    }
6309}
6310
6311impl<'a, S: profile_view_detailed_state::State> ProfileViewDetailedBuilder<'a, S> {
6312    /// Set the `followsCount` field (optional)
6313    pub fn follows_count(mut self, value: impl Into<Option<i64>>) -> Self {
6314        self._fields.9 = value.into();
6315        self
6316    }
6317    /// Set the `followsCount` field to an Option value (optional)
6318    pub fn maybe_follows_count(mut self, value: Option<i64>) -> Self {
6319        self._fields.9 = value;
6320        self
6321    }
6322}
6323
6324impl<'a, S> ProfileViewDetailedBuilder<'a, S>
6325where
6326    S: profile_view_detailed_state::State,
6327    S::Handle: profile_view_detailed_state::IsUnset,
6328{
6329    /// Set the `handle` field (required)
6330    pub fn handle(
6331        mut self,
6332        value: impl Into<Handle<'a>>,
6333    ) -> ProfileViewDetailedBuilder<'a, profile_view_detailed_state::SetHandle<S>> {
6334        self._fields.10 = Option::Some(value.into());
6335        ProfileViewDetailedBuilder {
6336            _state: PhantomData,
6337            _fields: self._fields,
6338            _lifetime: PhantomData,
6339        }
6340    }
6341}
6342
6343impl<'a, S: profile_view_detailed_state::State> ProfileViewDetailedBuilder<'a, S> {
6344    /// Set the `indexedAt` field (optional)
6345    pub fn indexed_at(mut self, value: impl Into<Option<Datetime>>) -> Self {
6346        self._fields.11 = value.into();
6347        self
6348    }
6349    /// Set the `indexedAt` field to an Option value (optional)
6350    pub fn maybe_indexed_at(mut self, value: Option<Datetime>) -> Self {
6351        self._fields.11 = value;
6352        self
6353    }
6354}
6355
6356impl<'a, S: profile_view_detailed_state::State> ProfileViewDetailedBuilder<'a, S> {
6357    /// Set the `joinedViaStarterPack` field (optional)
6358    pub fn joined_via_starter_pack(
6359        mut self,
6360        value: impl Into<Option<StarterPackViewBasic<'a>>>,
6361    ) -> Self {
6362        self._fields.12 = value.into();
6363        self
6364    }
6365    /// Set the `joinedViaStarterPack` field to an Option value (optional)
6366    pub fn maybe_joined_via_starter_pack(
6367        mut self,
6368        value: Option<StarterPackViewBasic<'a>>,
6369    ) -> Self {
6370        self._fields.12 = value;
6371        self
6372    }
6373}
6374
6375impl<'a, S: profile_view_detailed_state::State> ProfileViewDetailedBuilder<'a, S> {
6376    /// Set the `labels` field (optional)
6377    pub fn labels(mut self, value: impl Into<Option<Vec<Label<'a>>>>) -> Self {
6378        self._fields.13 = value.into();
6379        self
6380    }
6381    /// Set the `labels` field to an Option value (optional)
6382    pub fn maybe_labels(mut self, value: Option<Vec<Label<'a>>>) -> Self {
6383        self._fields.13 = value;
6384        self
6385    }
6386}
6387
6388impl<'a, S: profile_view_detailed_state::State> ProfileViewDetailedBuilder<'a, S> {
6389    /// Set the `pinnedPost` field (optional)
6390    pub fn pinned_post(mut self, value: impl Into<Option<StrongRef<'a>>>) -> Self {
6391        self._fields.14 = value.into();
6392        self
6393    }
6394    /// Set the `pinnedPost` field to an Option value (optional)
6395    pub fn maybe_pinned_post(mut self, value: Option<StrongRef<'a>>) -> Self {
6396        self._fields.14 = value;
6397        self
6398    }
6399}
6400
6401impl<'a, S: profile_view_detailed_state::State> ProfileViewDetailedBuilder<'a, S> {
6402    /// Set the `postsCount` field (optional)
6403    pub fn posts_count(mut self, value: impl Into<Option<i64>>) -> Self {
6404        self._fields.15 = value.into();
6405        self
6406    }
6407    /// Set the `postsCount` field to an Option value (optional)
6408    pub fn maybe_posts_count(mut self, value: Option<i64>) -> Self {
6409        self._fields.15 = value;
6410        self
6411    }
6412}
6413
6414impl<'a, S: profile_view_detailed_state::State> ProfileViewDetailedBuilder<'a, S> {
6415    /// Set the `pronouns` field (optional)
6416    pub fn pronouns(mut self, value: impl Into<Option<CowStr<'a>>>) -> Self {
6417        self._fields.16 = value.into();
6418        self
6419    }
6420    /// Set the `pronouns` field to an Option value (optional)
6421    pub fn maybe_pronouns(mut self, value: Option<CowStr<'a>>) -> Self {
6422        self._fields.16 = value;
6423        self
6424    }
6425}
6426
6427impl<'a, S: profile_view_detailed_state::State> ProfileViewDetailedBuilder<'a, S> {
6428    /// Set the `status` field (optional)
6429    pub fn status(mut self, value: impl Into<Option<actor::StatusView<'a>>>) -> Self {
6430        self._fields.17 = value.into();
6431        self
6432    }
6433    /// Set the `status` field to an Option value (optional)
6434    pub fn maybe_status(mut self, value: Option<actor::StatusView<'a>>) -> Self {
6435        self._fields.17 = value;
6436        self
6437    }
6438}
6439
6440impl<'a, S: profile_view_detailed_state::State> ProfileViewDetailedBuilder<'a, S> {
6441    /// Set the `verification` field (optional)
6442    pub fn verification(
6443        mut self,
6444        value: impl Into<Option<actor::VerificationState<'a>>>,
6445    ) -> Self {
6446        self._fields.18 = value.into();
6447        self
6448    }
6449    /// Set the `verification` field to an Option value (optional)
6450    pub fn maybe_verification(
6451        mut self,
6452        value: Option<actor::VerificationState<'a>>,
6453    ) -> Self {
6454        self._fields.18 = value;
6455        self
6456    }
6457}
6458
6459impl<'a, S: profile_view_detailed_state::State> ProfileViewDetailedBuilder<'a, S> {
6460    /// Set the `viewer` field (optional)
6461    pub fn viewer(mut self, value: impl Into<Option<actor::ViewerState<'a>>>) -> Self {
6462        self._fields.19 = value.into();
6463        self
6464    }
6465    /// Set the `viewer` field to an Option value (optional)
6466    pub fn maybe_viewer(mut self, value: Option<actor::ViewerState<'a>>) -> Self {
6467        self._fields.19 = value;
6468        self
6469    }
6470}
6471
6472impl<'a, S: profile_view_detailed_state::State> ProfileViewDetailedBuilder<'a, S> {
6473    /// Set the `website` field (optional)
6474    pub fn website(mut self, value: impl Into<Option<UriValue<'a>>>) -> Self {
6475        self._fields.20 = value.into();
6476        self
6477    }
6478    /// Set the `website` field to an Option value (optional)
6479    pub fn maybe_website(mut self, value: Option<UriValue<'a>>) -> Self {
6480        self._fields.20 = value;
6481        self
6482    }
6483}
6484
6485impl<'a, S> ProfileViewDetailedBuilder<'a, S>
6486where
6487    S: profile_view_detailed_state::State,
6488    S::Did: profile_view_detailed_state::IsSet,
6489    S::Handle: profile_view_detailed_state::IsSet,
6490{
6491    /// Build the final struct
6492    pub fn build(self) -> ProfileViewDetailed<'a> {
6493        ProfileViewDetailed {
6494            associated: self._fields.0,
6495            avatar: self._fields.1,
6496            banner: self._fields.2,
6497            created_at: self._fields.3,
6498            debug: self._fields.4,
6499            description: self._fields.5,
6500            did: self._fields.6.unwrap(),
6501            display_name: self._fields.7,
6502            followers_count: self._fields.8,
6503            follows_count: self._fields.9,
6504            handle: self._fields.10.unwrap(),
6505            indexed_at: self._fields.11,
6506            joined_via_starter_pack: self._fields.12,
6507            labels: self._fields.13,
6508            pinned_post: self._fields.14,
6509            posts_count: self._fields.15,
6510            pronouns: self._fields.16,
6511            status: self._fields.17,
6512            verification: self._fields.18,
6513            viewer: self._fields.19,
6514            website: self._fields.20,
6515            extra_data: Default::default(),
6516        }
6517    }
6518    /// Build the final struct with custom extra_data
6519    pub fn build_with_data(
6520        self,
6521        extra_data: BTreeMap<jacquard_common::deps::smol_str::SmolStr, Data<'a>>,
6522    ) -> ProfileViewDetailed<'a> {
6523        ProfileViewDetailed {
6524            associated: self._fields.0,
6525            avatar: self._fields.1,
6526            banner: self._fields.2,
6527            created_at: self._fields.3,
6528            debug: self._fields.4,
6529            description: self._fields.5,
6530            did: self._fields.6.unwrap(),
6531            display_name: self._fields.7,
6532            followers_count: self._fields.8,
6533            follows_count: self._fields.9,
6534            handle: self._fields.10.unwrap(),
6535            indexed_at: self._fields.11,
6536            joined_via_starter_pack: self._fields.12,
6537            labels: self._fields.13,
6538            pinned_post: self._fields.14,
6539            posts_count: self._fields.15,
6540            pronouns: self._fields.16,
6541            status: self._fields.17,
6542            verification: self._fields.18,
6543            viewer: self._fields.19,
6544            website: self._fields.20,
6545            extra_data: Some(extra_data),
6546        }
6547    }
6548}
6549
6550pub mod saved_feed_state {
6551
6552    pub use crate::builder_types::{Set, Unset, IsSet, IsUnset};
6553    #[allow(unused)]
6554    use ::core::marker::PhantomData;
6555    mod sealed {
6556        pub trait Sealed {}
6557    }
6558    /// State trait tracking which required fields have been set
6559    pub trait State: sealed::Sealed {
6560        type Pinned;
6561        type Type;
6562        type Id;
6563        type Value;
6564    }
6565    /// Empty state - all required fields are unset
6566    pub struct Empty(());
6567    impl sealed::Sealed for Empty {}
6568    impl State for Empty {
6569        type Pinned = Unset;
6570        type Type = Unset;
6571        type Id = Unset;
6572        type Value = Unset;
6573    }
6574    ///State transition - sets the `pinned` field to Set
6575    pub struct SetPinned<S: State = Empty>(PhantomData<fn() -> S>);
6576    impl<S: State> sealed::Sealed for SetPinned<S> {}
6577    impl<S: State> State for SetPinned<S> {
6578        type Pinned = Set<members::pinned>;
6579        type Type = S::Type;
6580        type Id = S::Id;
6581        type Value = S::Value;
6582    }
6583    ///State transition - sets the `type` field to Set
6584    pub struct SetType<S: State = Empty>(PhantomData<fn() -> S>);
6585    impl<S: State> sealed::Sealed for SetType<S> {}
6586    impl<S: State> State for SetType<S> {
6587        type Pinned = S::Pinned;
6588        type Type = Set<members::r#type>;
6589        type Id = S::Id;
6590        type Value = S::Value;
6591    }
6592    ///State transition - sets the `id` field to Set
6593    pub struct SetId<S: State = Empty>(PhantomData<fn() -> S>);
6594    impl<S: State> sealed::Sealed for SetId<S> {}
6595    impl<S: State> State for SetId<S> {
6596        type Pinned = S::Pinned;
6597        type Type = S::Type;
6598        type Id = Set<members::id>;
6599        type Value = S::Value;
6600    }
6601    ///State transition - sets the `value` field to Set
6602    pub struct SetValue<S: State = Empty>(PhantomData<fn() -> S>);
6603    impl<S: State> sealed::Sealed for SetValue<S> {}
6604    impl<S: State> State for SetValue<S> {
6605        type Pinned = S::Pinned;
6606        type Type = S::Type;
6607        type Id = S::Id;
6608        type Value = Set<members::value>;
6609    }
6610    /// Marker types for field names
6611    #[allow(non_camel_case_types)]
6612    pub mod members {
6613        ///Marker type for the `pinned` field
6614        pub struct pinned(());
6615        ///Marker type for the `type` field
6616        pub struct r#type(());
6617        ///Marker type for the `id` field
6618        pub struct id(());
6619        ///Marker type for the `value` field
6620        pub struct value(());
6621    }
6622}
6623
6624/// Builder for constructing an instance of this type
6625pub struct SavedFeedBuilder<'a, S: saved_feed_state::State> {
6626    _state: PhantomData<fn() -> S>,
6627    _fields: (
6628        Option<CowStr<'a>>,
6629        Option<bool>,
6630        Option<SavedFeedType<'a>>,
6631        Option<CowStr<'a>>,
6632    ),
6633    _lifetime: PhantomData<&'a ()>,
6634}
6635
6636impl<'a> SavedFeed<'a> {
6637    /// Create a new builder for this type
6638    pub fn new() -> SavedFeedBuilder<'a, saved_feed_state::Empty> {
6639        SavedFeedBuilder::new()
6640    }
6641}
6642
6643impl<'a> SavedFeedBuilder<'a, saved_feed_state::Empty> {
6644    /// Create a new builder with all fields unset
6645    pub fn new() -> Self {
6646        SavedFeedBuilder {
6647            _state: PhantomData,
6648            _fields: (None, None, None, None),
6649            _lifetime: PhantomData,
6650        }
6651    }
6652}
6653
6654impl<'a, S> SavedFeedBuilder<'a, S>
6655where
6656    S: saved_feed_state::State,
6657    S::Id: saved_feed_state::IsUnset,
6658{
6659    /// Set the `id` field (required)
6660    pub fn id(
6661        mut self,
6662        value: impl Into<CowStr<'a>>,
6663    ) -> SavedFeedBuilder<'a, saved_feed_state::SetId<S>> {
6664        self._fields.0 = Option::Some(value.into());
6665        SavedFeedBuilder {
6666            _state: PhantomData,
6667            _fields: self._fields,
6668            _lifetime: PhantomData,
6669        }
6670    }
6671}
6672
6673impl<'a, S> SavedFeedBuilder<'a, S>
6674where
6675    S: saved_feed_state::State,
6676    S::Pinned: saved_feed_state::IsUnset,
6677{
6678    /// Set the `pinned` field (required)
6679    pub fn pinned(
6680        mut self,
6681        value: impl Into<bool>,
6682    ) -> SavedFeedBuilder<'a, saved_feed_state::SetPinned<S>> {
6683        self._fields.1 = Option::Some(value.into());
6684        SavedFeedBuilder {
6685            _state: PhantomData,
6686            _fields: self._fields,
6687            _lifetime: PhantomData,
6688        }
6689    }
6690}
6691
6692impl<'a, S> SavedFeedBuilder<'a, S>
6693where
6694    S: saved_feed_state::State,
6695    S::Type: saved_feed_state::IsUnset,
6696{
6697    /// Set the `type` field (required)
6698    pub fn r#type(
6699        mut self,
6700        value: impl Into<SavedFeedType<'a>>,
6701    ) -> SavedFeedBuilder<'a, saved_feed_state::SetType<S>> {
6702        self._fields.2 = Option::Some(value.into());
6703        SavedFeedBuilder {
6704            _state: PhantomData,
6705            _fields: self._fields,
6706            _lifetime: PhantomData,
6707        }
6708    }
6709}
6710
6711impl<'a, S> SavedFeedBuilder<'a, S>
6712where
6713    S: saved_feed_state::State,
6714    S::Value: saved_feed_state::IsUnset,
6715{
6716    /// Set the `value` field (required)
6717    pub fn value(
6718        mut self,
6719        value: impl Into<CowStr<'a>>,
6720    ) -> SavedFeedBuilder<'a, saved_feed_state::SetValue<S>> {
6721        self._fields.3 = Option::Some(value.into());
6722        SavedFeedBuilder {
6723            _state: PhantomData,
6724            _fields: self._fields,
6725            _lifetime: PhantomData,
6726        }
6727    }
6728}
6729
6730impl<'a, S> SavedFeedBuilder<'a, S>
6731where
6732    S: saved_feed_state::State,
6733    S::Pinned: saved_feed_state::IsSet,
6734    S::Type: saved_feed_state::IsSet,
6735    S::Id: saved_feed_state::IsSet,
6736    S::Value: saved_feed_state::IsSet,
6737{
6738    /// Build the final struct
6739    pub fn build(self) -> SavedFeed<'a> {
6740        SavedFeed {
6741            id: self._fields.0.unwrap(),
6742            pinned: self._fields.1.unwrap(),
6743            r#type: self._fields.2.unwrap(),
6744            value: self._fields.3.unwrap(),
6745            extra_data: Default::default(),
6746        }
6747    }
6748    /// Build the final struct with custom extra_data
6749    pub fn build_with_data(
6750        self,
6751        extra_data: BTreeMap<jacquard_common::deps::smol_str::SmolStr, Data<'a>>,
6752    ) -> SavedFeed<'a> {
6753        SavedFeed {
6754            id: self._fields.0.unwrap(),
6755            pinned: self._fields.1.unwrap(),
6756            r#type: self._fields.2.unwrap(),
6757            value: self._fields.3.unwrap(),
6758            extra_data: Some(extra_data),
6759        }
6760    }
6761}
6762
6763pub mod saved_feeds_pref_state {
6764
6765    pub use crate::builder_types::{Set, Unset, IsSet, IsUnset};
6766    #[allow(unused)]
6767    use ::core::marker::PhantomData;
6768    mod sealed {
6769        pub trait Sealed {}
6770    }
6771    /// State trait tracking which required fields have been set
6772    pub trait State: sealed::Sealed {
6773        type Saved;
6774        type Pinned;
6775    }
6776    /// Empty state - all required fields are unset
6777    pub struct Empty(());
6778    impl sealed::Sealed for Empty {}
6779    impl State for Empty {
6780        type Saved = Unset;
6781        type Pinned = Unset;
6782    }
6783    ///State transition - sets the `saved` field to Set
6784    pub struct SetSaved<S: State = Empty>(PhantomData<fn() -> S>);
6785    impl<S: State> sealed::Sealed for SetSaved<S> {}
6786    impl<S: State> State for SetSaved<S> {
6787        type Saved = Set<members::saved>;
6788        type Pinned = S::Pinned;
6789    }
6790    ///State transition - sets the `pinned` field to Set
6791    pub struct SetPinned<S: State = Empty>(PhantomData<fn() -> S>);
6792    impl<S: State> sealed::Sealed for SetPinned<S> {}
6793    impl<S: State> State for SetPinned<S> {
6794        type Saved = S::Saved;
6795        type Pinned = Set<members::pinned>;
6796    }
6797    /// Marker types for field names
6798    #[allow(non_camel_case_types)]
6799    pub mod members {
6800        ///Marker type for the `saved` field
6801        pub struct saved(());
6802        ///Marker type for the `pinned` field
6803        pub struct pinned(());
6804    }
6805}
6806
6807/// Builder for constructing an instance of this type
6808pub struct SavedFeedsPrefBuilder<'a, S: saved_feeds_pref_state::State> {
6809    _state: PhantomData<fn() -> S>,
6810    _fields: (Option<Vec<AtUri<'a>>>, Option<Vec<AtUri<'a>>>, Option<i64>),
6811    _lifetime: PhantomData<&'a ()>,
6812}
6813
6814impl<'a> SavedFeedsPref<'a> {
6815    /// Create a new builder for this type
6816    pub fn new() -> SavedFeedsPrefBuilder<'a, saved_feeds_pref_state::Empty> {
6817        SavedFeedsPrefBuilder::new()
6818    }
6819}
6820
6821impl<'a> SavedFeedsPrefBuilder<'a, saved_feeds_pref_state::Empty> {
6822    /// Create a new builder with all fields unset
6823    pub fn new() -> Self {
6824        SavedFeedsPrefBuilder {
6825            _state: PhantomData,
6826            _fields: (None, None, None),
6827            _lifetime: PhantomData,
6828        }
6829    }
6830}
6831
6832impl<'a, S> SavedFeedsPrefBuilder<'a, S>
6833where
6834    S: saved_feeds_pref_state::State,
6835    S::Pinned: saved_feeds_pref_state::IsUnset,
6836{
6837    /// Set the `pinned` field (required)
6838    pub fn pinned(
6839        mut self,
6840        value: impl Into<Vec<AtUri<'a>>>,
6841    ) -> SavedFeedsPrefBuilder<'a, saved_feeds_pref_state::SetPinned<S>> {
6842        self._fields.0 = Option::Some(value.into());
6843        SavedFeedsPrefBuilder {
6844            _state: PhantomData,
6845            _fields: self._fields,
6846            _lifetime: PhantomData,
6847        }
6848    }
6849}
6850
6851impl<'a, S> SavedFeedsPrefBuilder<'a, S>
6852where
6853    S: saved_feeds_pref_state::State,
6854    S::Saved: saved_feeds_pref_state::IsUnset,
6855{
6856    /// Set the `saved` field (required)
6857    pub fn saved(
6858        mut self,
6859        value: impl Into<Vec<AtUri<'a>>>,
6860    ) -> SavedFeedsPrefBuilder<'a, saved_feeds_pref_state::SetSaved<S>> {
6861        self._fields.1 = Option::Some(value.into());
6862        SavedFeedsPrefBuilder {
6863            _state: PhantomData,
6864            _fields: self._fields,
6865            _lifetime: PhantomData,
6866        }
6867    }
6868}
6869
6870impl<'a, S: saved_feeds_pref_state::State> SavedFeedsPrefBuilder<'a, S> {
6871    /// Set the `timelineIndex` field (optional)
6872    pub fn timeline_index(mut self, value: impl Into<Option<i64>>) -> Self {
6873        self._fields.2 = value.into();
6874        self
6875    }
6876    /// Set the `timelineIndex` field to an Option value (optional)
6877    pub fn maybe_timeline_index(mut self, value: Option<i64>) -> Self {
6878        self._fields.2 = value;
6879        self
6880    }
6881}
6882
6883impl<'a, S> SavedFeedsPrefBuilder<'a, S>
6884where
6885    S: saved_feeds_pref_state::State,
6886    S::Saved: saved_feeds_pref_state::IsSet,
6887    S::Pinned: saved_feeds_pref_state::IsSet,
6888{
6889    /// Build the final struct
6890    pub fn build(self) -> SavedFeedsPref<'a> {
6891        SavedFeedsPref {
6892            pinned: self._fields.0.unwrap(),
6893            saved: self._fields.1.unwrap(),
6894            timeline_index: self._fields.2,
6895            extra_data: Default::default(),
6896        }
6897    }
6898    /// Build the final struct with custom extra_data
6899    pub fn build_with_data(
6900        self,
6901        extra_data: BTreeMap<jacquard_common::deps::smol_str::SmolStr, Data<'a>>,
6902    ) -> SavedFeedsPref<'a> {
6903        SavedFeedsPref {
6904            pinned: self._fields.0.unwrap(),
6905            saved: self._fields.1.unwrap(),
6906            timeline_index: self._fields.2,
6907            extra_data: Some(extra_data),
6908        }
6909    }
6910}
6911
6912pub mod saved_feeds_pref_v2_state {
6913
6914    pub use crate::builder_types::{Set, Unset, IsSet, IsUnset};
6915    #[allow(unused)]
6916    use ::core::marker::PhantomData;
6917    mod sealed {
6918        pub trait Sealed {}
6919    }
6920    /// State trait tracking which required fields have been set
6921    pub trait State: sealed::Sealed {
6922        type Items;
6923    }
6924    /// Empty state - all required fields are unset
6925    pub struct Empty(());
6926    impl sealed::Sealed for Empty {}
6927    impl State for Empty {
6928        type Items = Unset;
6929    }
6930    ///State transition - sets the `items` field to Set
6931    pub struct SetItems<S: State = Empty>(PhantomData<fn() -> S>);
6932    impl<S: State> sealed::Sealed for SetItems<S> {}
6933    impl<S: State> State for SetItems<S> {
6934        type Items = Set<members::items>;
6935    }
6936    /// Marker types for field names
6937    #[allow(non_camel_case_types)]
6938    pub mod members {
6939        ///Marker type for the `items` field
6940        pub struct items(());
6941    }
6942}
6943
6944/// Builder for constructing an instance of this type
6945pub struct SavedFeedsPrefV2Builder<'a, S: saved_feeds_pref_v2_state::State> {
6946    _state: PhantomData<fn() -> S>,
6947    _fields: (Option<Vec<actor::SavedFeed<'a>>>,),
6948    _lifetime: PhantomData<&'a ()>,
6949}
6950
6951impl<'a> SavedFeedsPrefV2<'a> {
6952    /// Create a new builder for this type
6953    pub fn new() -> SavedFeedsPrefV2Builder<'a, saved_feeds_pref_v2_state::Empty> {
6954        SavedFeedsPrefV2Builder::new()
6955    }
6956}
6957
6958impl<'a> SavedFeedsPrefV2Builder<'a, saved_feeds_pref_v2_state::Empty> {
6959    /// Create a new builder with all fields unset
6960    pub fn new() -> Self {
6961        SavedFeedsPrefV2Builder {
6962            _state: PhantomData,
6963            _fields: (None,),
6964            _lifetime: PhantomData,
6965        }
6966    }
6967}
6968
6969impl<'a, S> SavedFeedsPrefV2Builder<'a, S>
6970where
6971    S: saved_feeds_pref_v2_state::State,
6972    S::Items: saved_feeds_pref_v2_state::IsUnset,
6973{
6974    /// Set the `items` field (required)
6975    pub fn items(
6976        mut self,
6977        value: impl Into<Vec<actor::SavedFeed<'a>>>,
6978    ) -> SavedFeedsPrefV2Builder<'a, saved_feeds_pref_v2_state::SetItems<S>> {
6979        self._fields.0 = Option::Some(value.into());
6980        SavedFeedsPrefV2Builder {
6981            _state: PhantomData,
6982            _fields: self._fields,
6983            _lifetime: PhantomData,
6984        }
6985    }
6986}
6987
6988impl<'a, S> SavedFeedsPrefV2Builder<'a, S>
6989where
6990    S: saved_feeds_pref_v2_state::State,
6991    S::Items: saved_feeds_pref_v2_state::IsSet,
6992{
6993    /// Build the final struct
6994    pub fn build(self) -> SavedFeedsPrefV2<'a> {
6995        SavedFeedsPrefV2 {
6996            items: self._fields.0.unwrap(),
6997            extra_data: Default::default(),
6998        }
6999    }
7000    /// Build the final struct with custom extra_data
7001    pub fn build_with_data(
7002        self,
7003        extra_data: BTreeMap<jacquard_common::deps::smol_str::SmolStr, Data<'a>>,
7004    ) -> SavedFeedsPrefV2<'a> {
7005        SavedFeedsPrefV2 {
7006            items: self._fields.0.unwrap(),
7007            extra_data: Some(extra_data),
7008        }
7009    }
7010}
7011
7012pub mod status_view_state {
7013
7014    pub use crate::builder_types::{Set, Unset, IsSet, IsUnset};
7015    #[allow(unused)]
7016    use ::core::marker::PhantomData;
7017    mod sealed {
7018        pub trait Sealed {}
7019    }
7020    /// State trait tracking which required fields have been set
7021    pub trait State: sealed::Sealed {
7022        type Status;
7023        type Record;
7024    }
7025    /// Empty state - all required fields are unset
7026    pub struct Empty(());
7027    impl sealed::Sealed for Empty {}
7028    impl State for Empty {
7029        type Status = Unset;
7030        type Record = Unset;
7031    }
7032    ///State transition - sets the `status` field to Set
7033    pub struct SetStatus<S: State = Empty>(PhantomData<fn() -> S>);
7034    impl<S: State> sealed::Sealed for SetStatus<S> {}
7035    impl<S: State> State for SetStatus<S> {
7036        type Status = Set<members::status>;
7037        type Record = S::Record;
7038    }
7039    ///State transition - sets the `record` field to Set
7040    pub struct SetRecord<S: State = Empty>(PhantomData<fn() -> S>);
7041    impl<S: State> sealed::Sealed for SetRecord<S> {}
7042    impl<S: State> State for SetRecord<S> {
7043        type Status = S::Status;
7044        type Record = Set<members::record>;
7045    }
7046    /// Marker types for field names
7047    #[allow(non_camel_case_types)]
7048    pub mod members {
7049        ///Marker type for the `status` field
7050        pub struct status(());
7051        ///Marker type for the `record` field
7052        pub struct record(());
7053    }
7054}
7055
7056/// Builder for constructing an instance of this type
7057pub struct StatusViewBuilder<'a, S: status_view_state::State> {
7058    _state: PhantomData<fn() -> S>,
7059    _fields: (
7060        Option<Cid<'a>>,
7061        Option<View<'a>>,
7062        Option<Datetime>,
7063        Option<bool>,
7064        Option<bool>,
7065        Option<Data<'a>>,
7066        Option<StatusViewStatus<'a>>,
7067        Option<AtUri<'a>>,
7068    ),
7069    _lifetime: PhantomData<&'a ()>,
7070}
7071
7072impl<'a> StatusView<'a> {
7073    /// Create a new builder for this type
7074    pub fn new() -> StatusViewBuilder<'a, status_view_state::Empty> {
7075        StatusViewBuilder::new()
7076    }
7077}
7078
7079impl<'a> StatusViewBuilder<'a, status_view_state::Empty> {
7080    /// Create a new builder with all fields unset
7081    pub fn new() -> Self {
7082        StatusViewBuilder {
7083            _state: PhantomData,
7084            _fields: (None, None, None, None, None, None, None, None),
7085            _lifetime: PhantomData,
7086        }
7087    }
7088}
7089
7090impl<'a, S: status_view_state::State> StatusViewBuilder<'a, S> {
7091    /// Set the `cid` field (optional)
7092    pub fn cid(mut self, value: impl Into<Option<Cid<'a>>>) -> Self {
7093        self._fields.0 = value.into();
7094        self
7095    }
7096    /// Set the `cid` field to an Option value (optional)
7097    pub fn maybe_cid(mut self, value: Option<Cid<'a>>) -> Self {
7098        self._fields.0 = value;
7099        self
7100    }
7101}
7102
7103impl<'a, S: status_view_state::State> StatusViewBuilder<'a, S> {
7104    /// Set the `embed` field (optional)
7105    pub fn embed(mut self, value: impl Into<Option<View<'a>>>) -> Self {
7106        self._fields.1 = value.into();
7107        self
7108    }
7109    /// Set the `embed` field to an Option value (optional)
7110    pub fn maybe_embed(mut self, value: Option<View<'a>>) -> Self {
7111        self._fields.1 = value;
7112        self
7113    }
7114}
7115
7116impl<'a, S: status_view_state::State> StatusViewBuilder<'a, S> {
7117    /// Set the `expiresAt` field (optional)
7118    pub fn expires_at(mut self, value: impl Into<Option<Datetime>>) -> Self {
7119        self._fields.2 = value.into();
7120        self
7121    }
7122    /// Set the `expiresAt` field to an Option value (optional)
7123    pub fn maybe_expires_at(mut self, value: Option<Datetime>) -> Self {
7124        self._fields.2 = value;
7125        self
7126    }
7127}
7128
7129impl<'a, S: status_view_state::State> StatusViewBuilder<'a, S> {
7130    /// Set the `isActive` field (optional)
7131    pub fn is_active(mut self, value: impl Into<Option<bool>>) -> Self {
7132        self._fields.3 = value.into();
7133        self
7134    }
7135    /// Set the `isActive` field to an Option value (optional)
7136    pub fn maybe_is_active(mut self, value: Option<bool>) -> Self {
7137        self._fields.3 = value;
7138        self
7139    }
7140}
7141
7142impl<'a, S: status_view_state::State> StatusViewBuilder<'a, S> {
7143    /// Set the `isDisabled` field (optional)
7144    pub fn is_disabled(mut self, value: impl Into<Option<bool>>) -> Self {
7145        self._fields.4 = value.into();
7146        self
7147    }
7148    /// Set the `isDisabled` field to an Option value (optional)
7149    pub fn maybe_is_disabled(mut self, value: Option<bool>) -> Self {
7150        self._fields.4 = value;
7151        self
7152    }
7153}
7154
7155impl<'a, S> StatusViewBuilder<'a, S>
7156where
7157    S: status_view_state::State,
7158    S::Record: status_view_state::IsUnset,
7159{
7160    /// Set the `record` field (required)
7161    pub fn record(
7162        mut self,
7163        value: impl Into<Data<'a>>,
7164    ) -> StatusViewBuilder<'a, status_view_state::SetRecord<S>> {
7165        self._fields.5 = Option::Some(value.into());
7166        StatusViewBuilder {
7167            _state: PhantomData,
7168            _fields: self._fields,
7169            _lifetime: PhantomData,
7170        }
7171    }
7172}
7173
7174impl<'a, S> StatusViewBuilder<'a, S>
7175where
7176    S: status_view_state::State,
7177    S::Status: status_view_state::IsUnset,
7178{
7179    /// Set the `status` field (required)
7180    pub fn status(
7181        mut self,
7182        value: impl Into<StatusViewStatus<'a>>,
7183    ) -> StatusViewBuilder<'a, status_view_state::SetStatus<S>> {
7184        self._fields.6 = Option::Some(value.into());
7185        StatusViewBuilder {
7186            _state: PhantomData,
7187            _fields: self._fields,
7188            _lifetime: PhantomData,
7189        }
7190    }
7191}
7192
7193impl<'a, S: status_view_state::State> StatusViewBuilder<'a, S> {
7194    /// Set the `uri` field (optional)
7195    pub fn uri(mut self, value: impl Into<Option<AtUri<'a>>>) -> Self {
7196        self._fields.7 = value.into();
7197        self
7198    }
7199    /// Set the `uri` field to an Option value (optional)
7200    pub fn maybe_uri(mut self, value: Option<AtUri<'a>>) -> Self {
7201        self._fields.7 = value;
7202        self
7203    }
7204}
7205
7206impl<'a, S> StatusViewBuilder<'a, S>
7207where
7208    S: status_view_state::State,
7209    S::Status: status_view_state::IsSet,
7210    S::Record: status_view_state::IsSet,
7211{
7212    /// Build the final struct
7213    pub fn build(self) -> StatusView<'a> {
7214        StatusView {
7215            cid: self._fields.0,
7216            embed: self._fields.1,
7217            expires_at: self._fields.2,
7218            is_active: self._fields.3,
7219            is_disabled: self._fields.4,
7220            record: self._fields.5.unwrap(),
7221            status: self._fields.6.unwrap(),
7222            uri: self._fields.7,
7223            extra_data: Default::default(),
7224        }
7225    }
7226    /// Build the final struct with custom extra_data
7227    pub fn build_with_data(
7228        self,
7229        extra_data: BTreeMap<jacquard_common::deps::smol_str::SmolStr, Data<'a>>,
7230    ) -> StatusView<'a> {
7231        StatusView {
7232            cid: self._fields.0,
7233            embed: self._fields.1,
7234            expires_at: self._fields.2,
7235            is_active: self._fields.3,
7236            is_disabled: self._fields.4,
7237            record: self._fields.5.unwrap(),
7238            status: self._fields.6.unwrap(),
7239            uri: self._fields.7,
7240            extra_data: Some(extra_data),
7241        }
7242    }
7243}
7244
7245fn _default_verification_prefs_hide_badges() -> Option<bool> {
7246    Some(false)
7247}
7248
7249impl Default for VerificationPrefs<'_> {
7250    fn default() -> Self {
7251        Self {
7252            hide_badges: Some(false),
7253            extra_data: Default::default(),
7254        }
7255    }
7256}
7257
7258pub mod verification_state_state {
7259
7260    pub use crate::builder_types::{Set, Unset, IsSet, IsUnset};
7261    #[allow(unused)]
7262    use ::core::marker::PhantomData;
7263    mod sealed {
7264        pub trait Sealed {}
7265    }
7266    /// State trait tracking which required fields have been set
7267    pub trait State: sealed::Sealed {
7268        type TrustedVerifierStatus;
7269        type VerifiedStatus;
7270        type Verifications;
7271    }
7272    /// Empty state - all required fields are unset
7273    pub struct Empty(());
7274    impl sealed::Sealed for Empty {}
7275    impl State for Empty {
7276        type TrustedVerifierStatus = Unset;
7277        type VerifiedStatus = Unset;
7278        type Verifications = Unset;
7279    }
7280    ///State transition - sets the `trusted_verifier_status` field to Set
7281    pub struct SetTrustedVerifierStatus<S: State = Empty>(PhantomData<fn() -> S>);
7282    impl<S: State> sealed::Sealed for SetTrustedVerifierStatus<S> {}
7283    impl<S: State> State for SetTrustedVerifierStatus<S> {
7284        type TrustedVerifierStatus = Set<members::trusted_verifier_status>;
7285        type VerifiedStatus = S::VerifiedStatus;
7286        type Verifications = S::Verifications;
7287    }
7288    ///State transition - sets the `verified_status` field to Set
7289    pub struct SetVerifiedStatus<S: State = Empty>(PhantomData<fn() -> S>);
7290    impl<S: State> sealed::Sealed for SetVerifiedStatus<S> {}
7291    impl<S: State> State for SetVerifiedStatus<S> {
7292        type TrustedVerifierStatus = S::TrustedVerifierStatus;
7293        type VerifiedStatus = Set<members::verified_status>;
7294        type Verifications = S::Verifications;
7295    }
7296    ///State transition - sets the `verifications` field to Set
7297    pub struct SetVerifications<S: State = Empty>(PhantomData<fn() -> S>);
7298    impl<S: State> sealed::Sealed for SetVerifications<S> {}
7299    impl<S: State> State for SetVerifications<S> {
7300        type TrustedVerifierStatus = S::TrustedVerifierStatus;
7301        type VerifiedStatus = S::VerifiedStatus;
7302        type Verifications = Set<members::verifications>;
7303    }
7304    /// Marker types for field names
7305    #[allow(non_camel_case_types)]
7306    pub mod members {
7307        ///Marker type for the `trusted_verifier_status` field
7308        pub struct trusted_verifier_status(());
7309        ///Marker type for the `verified_status` field
7310        pub struct verified_status(());
7311        ///Marker type for the `verifications` field
7312        pub struct verifications(());
7313    }
7314}
7315
7316/// Builder for constructing an instance of this type
7317pub struct VerificationStateBuilder<'a, S: verification_state_state::State> {
7318    _state: PhantomData<fn() -> S>,
7319    _fields: (
7320        Option<VerificationStateTrustedVerifierStatus<'a>>,
7321        Option<Vec<actor::VerificationView<'a>>>,
7322        Option<VerificationStateVerifiedStatus<'a>>,
7323    ),
7324    _lifetime: PhantomData<&'a ()>,
7325}
7326
7327impl<'a> VerificationState<'a> {
7328    /// Create a new builder for this type
7329    pub fn new() -> VerificationStateBuilder<'a, verification_state_state::Empty> {
7330        VerificationStateBuilder::new()
7331    }
7332}
7333
7334impl<'a> VerificationStateBuilder<'a, verification_state_state::Empty> {
7335    /// Create a new builder with all fields unset
7336    pub fn new() -> Self {
7337        VerificationStateBuilder {
7338            _state: PhantomData,
7339            _fields: (None, None, None),
7340            _lifetime: PhantomData,
7341        }
7342    }
7343}
7344
7345impl<'a, S> VerificationStateBuilder<'a, S>
7346where
7347    S: verification_state_state::State,
7348    S::TrustedVerifierStatus: verification_state_state::IsUnset,
7349{
7350    /// Set the `trustedVerifierStatus` field (required)
7351    pub fn trusted_verifier_status(
7352        mut self,
7353        value: impl Into<VerificationStateTrustedVerifierStatus<'a>>,
7354    ) -> VerificationStateBuilder<
7355        'a,
7356        verification_state_state::SetTrustedVerifierStatus<S>,
7357    > {
7358        self._fields.0 = Option::Some(value.into());
7359        VerificationStateBuilder {
7360            _state: PhantomData,
7361            _fields: self._fields,
7362            _lifetime: PhantomData,
7363        }
7364    }
7365}
7366
7367impl<'a, S> VerificationStateBuilder<'a, S>
7368where
7369    S: verification_state_state::State,
7370    S::Verifications: verification_state_state::IsUnset,
7371{
7372    /// Set the `verifications` field (required)
7373    pub fn verifications(
7374        mut self,
7375        value: impl Into<Vec<actor::VerificationView<'a>>>,
7376    ) -> VerificationStateBuilder<'a, verification_state_state::SetVerifications<S>> {
7377        self._fields.1 = Option::Some(value.into());
7378        VerificationStateBuilder {
7379            _state: PhantomData,
7380            _fields: self._fields,
7381            _lifetime: PhantomData,
7382        }
7383    }
7384}
7385
7386impl<'a, S> VerificationStateBuilder<'a, S>
7387where
7388    S: verification_state_state::State,
7389    S::VerifiedStatus: verification_state_state::IsUnset,
7390{
7391    /// Set the `verifiedStatus` field (required)
7392    pub fn verified_status(
7393        mut self,
7394        value: impl Into<VerificationStateVerifiedStatus<'a>>,
7395    ) -> VerificationStateBuilder<'a, verification_state_state::SetVerifiedStatus<S>> {
7396        self._fields.2 = Option::Some(value.into());
7397        VerificationStateBuilder {
7398            _state: PhantomData,
7399            _fields: self._fields,
7400            _lifetime: PhantomData,
7401        }
7402    }
7403}
7404
7405impl<'a, S> VerificationStateBuilder<'a, S>
7406where
7407    S: verification_state_state::State,
7408    S::TrustedVerifierStatus: verification_state_state::IsSet,
7409    S::VerifiedStatus: verification_state_state::IsSet,
7410    S::Verifications: verification_state_state::IsSet,
7411{
7412    /// Build the final struct
7413    pub fn build(self) -> VerificationState<'a> {
7414        VerificationState {
7415            trusted_verifier_status: self._fields.0.unwrap(),
7416            verifications: self._fields.1.unwrap(),
7417            verified_status: self._fields.2.unwrap(),
7418            extra_data: Default::default(),
7419        }
7420    }
7421    /// Build the final struct with custom extra_data
7422    pub fn build_with_data(
7423        self,
7424        extra_data: BTreeMap<jacquard_common::deps::smol_str::SmolStr, Data<'a>>,
7425    ) -> VerificationState<'a> {
7426        VerificationState {
7427            trusted_verifier_status: self._fields.0.unwrap(),
7428            verifications: self._fields.1.unwrap(),
7429            verified_status: self._fields.2.unwrap(),
7430            extra_data: Some(extra_data),
7431        }
7432    }
7433}
7434
7435pub mod verification_view_state {
7436
7437    pub use crate::builder_types::{Set, Unset, IsSet, IsUnset};
7438    #[allow(unused)]
7439    use ::core::marker::PhantomData;
7440    mod sealed {
7441        pub trait Sealed {}
7442    }
7443    /// State trait tracking which required fields have been set
7444    pub trait State: sealed::Sealed {
7445        type IsValid;
7446        type Issuer;
7447        type CreatedAt;
7448        type Uri;
7449    }
7450    /// Empty state - all required fields are unset
7451    pub struct Empty(());
7452    impl sealed::Sealed for Empty {}
7453    impl State for Empty {
7454        type IsValid = Unset;
7455        type Issuer = Unset;
7456        type CreatedAt = Unset;
7457        type Uri = Unset;
7458    }
7459    ///State transition - sets the `is_valid` field to Set
7460    pub struct SetIsValid<S: State = Empty>(PhantomData<fn() -> S>);
7461    impl<S: State> sealed::Sealed for SetIsValid<S> {}
7462    impl<S: State> State for SetIsValid<S> {
7463        type IsValid = Set<members::is_valid>;
7464        type Issuer = S::Issuer;
7465        type CreatedAt = S::CreatedAt;
7466        type Uri = S::Uri;
7467    }
7468    ///State transition - sets the `issuer` field to Set
7469    pub struct SetIssuer<S: State = Empty>(PhantomData<fn() -> S>);
7470    impl<S: State> sealed::Sealed for SetIssuer<S> {}
7471    impl<S: State> State for SetIssuer<S> {
7472        type IsValid = S::IsValid;
7473        type Issuer = Set<members::issuer>;
7474        type CreatedAt = S::CreatedAt;
7475        type Uri = S::Uri;
7476    }
7477    ///State transition - sets the `created_at` field to Set
7478    pub struct SetCreatedAt<S: State = Empty>(PhantomData<fn() -> S>);
7479    impl<S: State> sealed::Sealed for SetCreatedAt<S> {}
7480    impl<S: State> State for SetCreatedAt<S> {
7481        type IsValid = S::IsValid;
7482        type Issuer = S::Issuer;
7483        type CreatedAt = Set<members::created_at>;
7484        type Uri = S::Uri;
7485    }
7486    ///State transition - sets the `uri` field to Set
7487    pub struct SetUri<S: State = Empty>(PhantomData<fn() -> S>);
7488    impl<S: State> sealed::Sealed for SetUri<S> {}
7489    impl<S: State> State for SetUri<S> {
7490        type IsValid = S::IsValid;
7491        type Issuer = S::Issuer;
7492        type CreatedAt = S::CreatedAt;
7493        type Uri = Set<members::uri>;
7494    }
7495    /// Marker types for field names
7496    #[allow(non_camel_case_types)]
7497    pub mod members {
7498        ///Marker type for the `is_valid` field
7499        pub struct is_valid(());
7500        ///Marker type for the `issuer` field
7501        pub struct issuer(());
7502        ///Marker type for the `created_at` field
7503        pub struct created_at(());
7504        ///Marker type for the `uri` field
7505        pub struct uri(());
7506    }
7507}
7508
7509/// Builder for constructing an instance of this type
7510pub struct VerificationViewBuilder<'a, S: verification_view_state::State> {
7511    _state: PhantomData<fn() -> S>,
7512    _fields: (Option<Datetime>, Option<bool>, Option<Did<'a>>, Option<AtUri<'a>>),
7513    _lifetime: PhantomData<&'a ()>,
7514}
7515
7516impl<'a> VerificationView<'a> {
7517    /// Create a new builder for this type
7518    pub fn new() -> VerificationViewBuilder<'a, verification_view_state::Empty> {
7519        VerificationViewBuilder::new()
7520    }
7521}
7522
7523impl<'a> VerificationViewBuilder<'a, verification_view_state::Empty> {
7524    /// Create a new builder with all fields unset
7525    pub fn new() -> Self {
7526        VerificationViewBuilder {
7527            _state: PhantomData,
7528            _fields: (None, None, None, None),
7529            _lifetime: PhantomData,
7530        }
7531    }
7532}
7533
7534impl<'a, S> VerificationViewBuilder<'a, S>
7535where
7536    S: verification_view_state::State,
7537    S::CreatedAt: verification_view_state::IsUnset,
7538{
7539    /// Set the `createdAt` field (required)
7540    pub fn created_at(
7541        mut self,
7542        value: impl Into<Datetime>,
7543    ) -> VerificationViewBuilder<'a, verification_view_state::SetCreatedAt<S>> {
7544        self._fields.0 = Option::Some(value.into());
7545        VerificationViewBuilder {
7546            _state: PhantomData,
7547            _fields: self._fields,
7548            _lifetime: PhantomData,
7549        }
7550    }
7551}
7552
7553impl<'a, S> VerificationViewBuilder<'a, S>
7554where
7555    S: verification_view_state::State,
7556    S::IsValid: verification_view_state::IsUnset,
7557{
7558    /// Set the `isValid` field (required)
7559    pub fn is_valid(
7560        mut self,
7561        value: impl Into<bool>,
7562    ) -> VerificationViewBuilder<'a, verification_view_state::SetIsValid<S>> {
7563        self._fields.1 = Option::Some(value.into());
7564        VerificationViewBuilder {
7565            _state: PhantomData,
7566            _fields: self._fields,
7567            _lifetime: PhantomData,
7568        }
7569    }
7570}
7571
7572impl<'a, S> VerificationViewBuilder<'a, S>
7573where
7574    S: verification_view_state::State,
7575    S::Issuer: verification_view_state::IsUnset,
7576{
7577    /// Set the `issuer` field (required)
7578    pub fn issuer(
7579        mut self,
7580        value: impl Into<Did<'a>>,
7581    ) -> VerificationViewBuilder<'a, verification_view_state::SetIssuer<S>> {
7582        self._fields.2 = Option::Some(value.into());
7583        VerificationViewBuilder {
7584            _state: PhantomData,
7585            _fields: self._fields,
7586            _lifetime: PhantomData,
7587        }
7588    }
7589}
7590
7591impl<'a, S> VerificationViewBuilder<'a, S>
7592where
7593    S: verification_view_state::State,
7594    S::Uri: verification_view_state::IsUnset,
7595{
7596    /// Set the `uri` field (required)
7597    pub fn uri(
7598        mut self,
7599        value: impl Into<AtUri<'a>>,
7600    ) -> VerificationViewBuilder<'a, verification_view_state::SetUri<S>> {
7601        self._fields.3 = Option::Some(value.into());
7602        VerificationViewBuilder {
7603            _state: PhantomData,
7604            _fields: self._fields,
7605            _lifetime: PhantomData,
7606        }
7607    }
7608}
7609
7610impl<'a, S> VerificationViewBuilder<'a, S>
7611where
7612    S: verification_view_state::State,
7613    S::IsValid: verification_view_state::IsSet,
7614    S::Issuer: verification_view_state::IsSet,
7615    S::CreatedAt: verification_view_state::IsSet,
7616    S::Uri: verification_view_state::IsSet,
7617{
7618    /// Build the final struct
7619    pub fn build(self) -> VerificationView<'a> {
7620        VerificationView {
7621            created_at: self._fields.0.unwrap(),
7622            is_valid: self._fields.1.unwrap(),
7623            issuer: self._fields.2.unwrap(),
7624            uri: self._fields.3.unwrap(),
7625            extra_data: Default::default(),
7626        }
7627    }
7628    /// Build the final struct with custom extra_data
7629    pub fn build_with_data(
7630        self,
7631        extra_data: BTreeMap<jacquard_common::deps::smol_str::SmolStr, Data<'a>>,
7632    ) -> VerificationView<'a> {
7633        VerificationView {
7634            created_at: self._fields.0.unwrap(),
7635            is_valid: self._fields.1.unwrap(),
7636            issuer: self._fields.2.unwrap(),
7637            uri: self._fields.3.unwrap(),
7638            extra_data: Some(extra_data),
7639        }
7640    }
7641}