jacquard_api/app_bsky/
notification.rs

1// @generated by jacquard-lexicon. DO NOT EDIT.
2//
3// Lexicon: app.bsky.notification.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 declaration;
9pub mod get_preferences;
10pub mod get_unread_count;
11pub mod list_activity_subscriptions;
12pub mod list_notifications;
13pub mod put_activity_subscription;
14pub mod put_preferences;
15pub mod put_preferences_v2;
16pub mod register_push;
17pub mod unregister_push;
18pub mod update_seen;
19
20#[jacquard_derive::lexicon]
21#[derive(
22    serde::Serialize,
23    serde::Deserialize,
24    Debug,
25    Clone,
26    PartialEq,
27    Eq,
28    jacquard_derive::IntoStatic
29)]
30#[serde(rename_all = "camelCase")]
31pub struct ActivitySubscription<'a> {
32    pub post: bool,
33    pub reply: bool,
34}
35
36pub mod activity_subscription_state {
37
38    pub use crate::builder_types::{Set, Unset, IsSet, IsUnset};
39    #[allow(unused)]
40    use ::core::marker::PhantomData;
41    mod sealed {
42        pub trait Sealed {}
43    }
44    /// State trait tracking which required fields have been set
45    pub trait State: sealed::Sealed {
46        type Post;
47        type Reply;
48    }
49    /// Empty state - all required fields are unset
50    pub struct Empty(());
51    impl sealed::Sealed for Empty {}
52    impl State for Empty {
53        type Post = Unset;
54        type Reply = Unset;
55    }
56    ///State transition - sets the `post` field to Set
57    pub struct SetPost<S: State = Empty>(PhantomData<fn() -> S>);
58    impl<S: State> sealed::Sealed for SetPost<S> {}
59    impl<S: State> State for SetPost<S> {
60        type Post = Set<members::post>;
61        type Reply = S::Reply;
62    }
63    ///State transition - sets the `reply` field to Set
64    pub struct SetReply<S: State = Empty>(PhantomData<fn() -> S>);
65    impl<S: State> sealed::Sealed for SetReply<S> {}
66    impl<S: State> State for SetReply<S> {
67        type Post = S::Post;
68        type Reply = Set<members::reply>;
69    }
70    /// Marker types for field names
71    #[allow(non_camel_case_types)]
72    pub mod members {
73        ///Marker type for the `post` field
74        pub struct post(());
75        ///Marker type for the `reply` field
76        pub struct reply(());
77    }
78}
79
80/// Builder for constructing an instance of this type
81pub struct ActivitySubscriptionBuilder<'a, S: activity_subscription_state::State> {
82    _phantom_state: ::core::marker::PhantomData<fn() -> S>,
83    __unsafe_private_named: (::core::option::Option<bool>, ::core::option::Option<bool>),
84    _phantom: ::core::marker::PhantomData<&'a ()>,
85}
86
87impl<'a> ActivitySubscription<'a> {
88    /// Create a new builder for this type
89    pub fn new() -> ActivitySubscriptionBuilder<'a, activity_subscription_state::Empty> {
90        ActivitySubscriptionBuilder::new()
91    }
92}
93
94impl<'a> ActivitySubscriptionBuilder<'a, activity_subscription_state::Empty> {
95    /// Create a new builder with all fields unset
96    pub fn new() -> Self {
97        ActivitySubscriptionBuilder {
98            _phantom_state: ::core::marker::PhantomData,
99            __unsafe_private_named: (None, None),
100            _phantom: ::core::marker::PhantomData,
101        }
102    }
103}
104
105impl<'a, S> ActivitySubscriptionBuilder<'a, S>
106where
107    S: activity_subscription_state::State,
108    S::Post: activity_subscription_state::IsUnset,
109{
110    /// Set the `post` field (required)
111    pub fn post(
112        mut self,
113        value: impl Into<bool>,
114    ) -> ActivitySubscriptionBuilder<'a, activity_subscription_state::SetPost<S>> {
115        self.__unsafe_private_named.0 = ::core::option::Option::Some(value.into());
116        ActivitySubscriptionBuilder {
117            _phantom_state: ::core::marker::PhantomData,
118            __unsafe_private_named: self.__unsafe_private_named,
119            _phantom: ::core::marker::PhantomData,
120        }
121    }
122}
123
124impl<'a, S> ActivitySubscriptionBuilder<'a, S>
125where
126    S: activity_subscription_state::State,
127    S::Reply: activity_subscription_state::IsUnset,
128{
129    /// Set the `reply` field (required)
130    pub fn reply(
131        mut self,
132        value: impl Into<bool>,
133    ) -> ActivitySubscriptionBuilder<'a, activity_subscription_state::SetReply<S>> {
134        self.__unsafe_private_named.1 = ::core::option::Option::Some(value.into());
135        ActivitySubscriptionBuilder {
136            _phantom_state: ::core::marker::PhantomData,
137            __unsafe_private_named: self.__unsafe_private_named,
138            _phantom: ::core::marker::PhantomData,
139        }
140    }
141}
142
143impl<'a, S> ActivitySubscriptionBuilder<'a, S>
144where
145    S: activity_subscription_state::State,
146    S::Post: activity_subscription_state::IsSet,
147    S::Reply: activity_subscription_state::IsSet,
148{
149    /// Build the final struct
150    pub fn build(self) -> ActivitySubscription<'a> {
151        ActivitySubscription {
152            post: self.__unsafe_private_named.0.unwrap(),
153            reply: self.__unsafe_private_named.1.unwrap(),
154            extra_data: Default::default(),
155        }
156    }
157    /// Build the final struct with custom extra_data
158    pub fn build_with_data(
159        self,
160        extra_data: std::collections::BTreeMap<
161            jacquard_common::smol_str::SmolStr,
162            jacquard_common::types::value::Data<'a>,
163        >,
164    ) -> ActivitySubscription<'a> {
165        ActivitySubscription {
166            post: self.__unsafe_private_named.0.unwrap(),
167            reply: self.__unsafe_private_named.1.unwrap(),
168            extra_data: Some(extra_data),
169        }
170    }
171}
172
173fn lexicon_doc_app_bsky_notification_defs() -> ::jacquard_lexicon::lexicon::LexiconDoc<
174    'static,
175> {
176    ::jacquard_lexicon::lexicon::LexiconDoc {
177        lexicon: ::jacquard_lexicon::lexicon::Lexicon::Lexicon1,
178        id: ::jacquard_common::CowStr::new_static("app.bsky.notification.defs"),
179        revision: None,
180        description: None,
181        defs: {
182            let mut map = ::std::collections::BTreeMap::new();
183            map.insert(
184                ::jacquard_common::smol_str::SmolStr::new_static("activitySubscription"),
185                ::jacquard_lexicon::lexicon::LexUserType::Object(::jacquard_lexicon::lexicon::LexObject {
186                    description: None,
187                    required: Some(
188                        vec![
189                            ::jacquard_common::smol_str::SmolStr::new_static("post"),
190                            ::jacquard_common::smol_str::SmolStr::new_static("reply")
191                        ],
192                    ),
193                    nullable: None,
194                    properties: {
195                        #[allow(unused_mut)]
196                        let mut map = ::std::collections::BTreeMap::new();
197                        map.insert(
198                            ::jacquard_common::smol_str::SmolStr::new_static("post"),
199                            ::jacquard_lexicon::lexicon::LexObjectProperty::Boolean(::jacquard_lexicon::lexicon::LexBoolean {
200                                description: None,
201                                default: None,
202                                r#const: None,
203                            }),
204                        );
205                        map.insert(
206                            ::jacquard_common::smol_str::SmolStr::new_static("reply"),
207                            ::jacquard_lexicon::lexicon::LexObjectProperty::Boolean(::jacquard_lexicon::lexicon::LexBoolean {
208                                description: None,
209                                default: None,
210                                r#const: None,
211                            }),
212                        );
213                        map
214                    },
215                }),
216            );
217            map.insert(
218                ::jacquard_common::smol_str::SmolStr::new_static("chatPreference"),
219                ::jacquard_lexicon::lexicon::LexUserType::Object(::jacquard_lexicon::lexicon::LexObject {
220                    description: None,
221                    required: Some(
222                        vec![
223                            ::jacquard_common::smol_str::SmolStr::new_static("include"),
224                            ::jacquard_common::smol_str::SmolStr::new_static("push")
225                        ],
226                    ),
227                    nullable: None,
228                    properties: {
229                        #[allow(unused_mut)]
230                        let mut map = ::std::collections::BTreeMap::new();
231                        map.insert(
232                            ::jacquard_common::smol_str::SmolStr::new_static("include"),
233                            ::jacquard_lexicon::lexicon::LexObjectProperty::String(::jacquard_lexicon::lexicon::LexString {
234                                description: None,
235                                format: None,
236                                default: None,
237                                min_length: None,
238                                max_length: None,
239                                min_graphemes: None,
240                                max_graphemes: None,
241                                r#enum: None,
242                                r#const: None,
243                                known_values: None,
244                            }),
245                        );
246                        map.insert(
247                            ::jacquard_common::smol_str::SmolStr::new_static("push"),
248                            ::jacquard_lexicon::lexicon::LexObjectProperty::Boolean(::jacquard_lexicon::lexicon::LexBoolean {
249                                description: None,
250                                default: None,
251                                r#const: None,
252                            }),
253                        );
254                        map
255                    },
256                }),
257            );
258            map.insert(
259                ::jacquard_common::smol_str::SmolStr::new_static("filterablePreference"),
260                ::jacquard_lexicon::lexicon::LexUserType::Object(::jacquard_lexicon::lexicon::LexObject {
261                    description: None,
262                    required: Some(
263                        vec![
264                            ::jacquard_common::smol_str::SmolStr::new_static("include"),
265                            ::jacquard_common::smol_str::SmolStr::new_static("list"),
266                            ::jacquard_common::smol_str::SmolStr::new_static("push")
267                        ],
268                    ),
269                    nullable: None,
270                    properties: {
271                        #[allow(unused_mut)]
272                        let mut map = ::std::collections::BTreeMap::new();
273                        map.insert(
274                            ::jacquard_common::smol_str::SmolStr::new_static("include"),
275                            ::jacquard_lexicon::lexicon::LexObjectProperty::String(::jacquard_lexicon::lexicon::LexString {
276                                description: None,
277                                format: None,
278                                default: None,
279                                min_length: None,
280                                max_length: None,
281                                min_graphemes: None,
282                                max_graphemes: None,
283                                r#enum: None,
284                                r#const: None,
285                                known_values: None,
286                            }),
287                        );
288                        map.insert(
289                            ::jacquard_common::smol_str::SmolStr::new_static("list"),
290                            ::jacquard_lexicon::lexicon::LexObjectProperty::Boolean(::jacquard_lexicon::lexicon::LexBoolean {
291                                description: None,
292                                default: None,
293                                r#const: None,
294                            }),
295                        );
296                        map.insert(
297                            ::jacquard_common::smol_str::SmolStr::new_static("push"),
298                            ::jacquard_lexicon::lexicon::LexObjectProperty::Boolean(::jacquard_lexicon::lexicon::LexBoolean {
299                                description: None,
300                                default: None,
301                                r#const: None,
302                            }),
303                        );
304                        map
305                    },
306                }),
307            );
308            map.insert(
309                ::jacquard_common::smol_str::SmolStr::new_static("preference"),
310                ::jacquard_lexicon::lexicon::LexUserType::Object(::jacquard_lexicon::lexicon::LexObject {
311                    description: None,
312                    required: Some(
313                        vec![
314                            ::jacquard_common::smol_str::SmolStr::new_static("list"),
315                            ::jacquard_common::smol_str::SmolStr::new_static("push")
316                        ],
317                    ),
318                    nullable: None,
319                    properties: {
320                        #[allow(unused_mut)]
321                        let mut map = ::std::collections::BTreeMap::new();
322                        map.insert(
323                            ::jacquard_common::smol_str::SmolStr::new_static("list"),
324                            ::jacquard_lexicon::lexicon::LexObjectProperty::Boolean(::jacquard_lexicon::lexicon::LexBoolean {
325                                description: None,
326                                default: None,
327                                r#const: None,
328                            }),
329                        );
330                        map.insert(
331                            ::jacquard_common::smol_str::SmolStr::new_static("push"),
332                            ::jacquard_lexicon::lexicon::LexObjectProperty::Boolean(::jacquard_lexicon::lexicon::LexBoolean {
333                                description: None,
334                                default: None,
335                                r#const: None,
336                            }),
337                        );
338                        map
339                    },
340                }),
341            );
342            map.insert(
343                ::jacquard_common::smol_str::SmolStr::new_static("preferences"),
344                ::jacquard_lexicon::lexicon::LexUserType::Object(::jacquard_lexicon::lexicon::LexObject {
345                    description: None,
346                    required: Some(
347                        vec![
348                            ::jacquard_common::smol_str::SmolStr::new_static("chat"),
349                            ::jacquard_common::smol_str::SmolStr::new_static("follow"),
350                            ::jacquard_common::smol_str::SmolStr::new_static("like"),
351                            ::jacquard_common::smol_str::SmolStr::new_static("likeViaRepost"),
352                            ::jacquard_common::smol_str::SmolStr::new_static("mention"),
353                            ::jacquard_common::smol_str::SmolStr::new_static("quote"),
354                            ::jacquard_common::smol_str::SmolStr::new_static("reply"),
355                            ::jacquard_common::smol_str::SmolStr::new_static("repost"),
356                            ::jacquard_common::smol_str::SmolStr::new_static("repostViaRepost"),
357                            ::jacquard_common::smol_str::SmolStr::new_static("starterpackJoined"),
358                            ::jacquard_common::smol_str::SmolStr::new_static("subscribedPost"),
359                            ::jacquard_common::smol_str::SmolStr::new_static("unverified"),
360                            ::jacquard_common::smol_str::SmolStr::new_static("verified")
361                        ],
362                    ),
363                    nullable: None,
364                    properties: {
365                        #[allow(unused_mut)]
366                        let mut map = ::std::collections::BTreeMap::new();
367                        map.insert(
368                            ::jacquard_common::smol_str::SmolStr::new_static("chat"),
369                            ::jacquard_lexicon::lexicon::LexObjectProperty::Ref(::jacquard_lexicon::lexicon::LexRef {
370                                description: None,
371                                r#ref: ::jacquard_common::CowStr::new_static(
372                                    "#chatPreference",
373                                ),
374                            }),
375                        );
376                        map.insert(
377                            ::jacquard_common::smol_str::SmolStr::new_static("follow"),
378                            ::jacquard_lexicon::lexicon::LexObjectProperty::Ref(::jacquard_lexicon::lexicon::LexRef {
379                                description: None,
380                                r#ref: ::jacquard_common::CowStr::new_static(
381                                    "#filterablePreference",
382                                ),
383                            }),
384                        );
385                        map.insert(
386                            ::jacquard_common::smol_str::SmolStr::new_static("like"),
387                            ::jacquard_lexicon::lexicon::LexObjectProperty::Ref(::jacquard_lexicon::lexicon::LexRef {
388                                description: None,
389                                r#ref: ::jacquard_common::CowStr::new_static(
390                                    "#filterablePreference",
391                                ),
392                            }),
393                        );
394                        map.insert(
395                            ::jacquard_common::smol_str::SmolStr::new_static(
396                                "likeViaRepost",
397                            ),
398                            ::jacquard_lexicon::lexicon::LexObjectProperty::Ref(::jacquard_lexicon::lexicon::LexRef {
399                                description: None,
400                                r#ref: ::jacquard_common::CowStr::new_static(
401                                    "#filterablePreference",
402                                ),
403                            }),
404                        );
405                        map.insert(
406                            ::jacquard_common::smol_str::SmolStr::new_static("mention"),
407                            ::jacquard_lexicon::lexicon::LexObjectProperty::Ref(::jacquard_lexicon::lexicon::LexRef {
408                                description: None,
409                                r#ref: ::jacquard_common::CowStr::new_static(
410                                    "#filterablePreference",
411                                ),
412                            }),
413                        );
414                        map.insert(
415                            ::jacquard_common::smol_str::SmolStr::new_static("quote"),
416                            ::jacquard_lexicon::lexicon::LexObjectProperty::Ref(::jacquard_lexicon::lexicon::LexRef {
417                                description: None,
418                                r#ref: ::jacquard_common::CowStr::new_static(
419                                    "#filterablePreference",
420                                ),
421                            }),
422                        );
423                        map.insert(
424                            ::jacquard_common::smol_str::SmolStr::new_static("reply"),
425                            ::jacquard_lexicon::lexicon::LexObjectProperty::Ref(::jacquard_lexicon::lexicon::LexRef {
426                                description: None,
427                                r#ref: ::jacquard_common::CowStr::new_static(
428                                    "#filterablePreference",
429                                ),
430                            }),
431                        );
432                        map.insert(
433                            ::jacquard_common::smol_str::SmolStr::new_static("repost"),
434                            ::jacquard_lexicon::lexicon::LexObjectProperty::Ref(::jacquard_lexicon::lexicon::LexRef {
435                                description: None,
436                                r#ref: ::jacquard_common::CowStr::new_static(
437                                    "#filterablePreference",
438                                ),
439                            }),
440                        );
441                        map.insert(
442                            ::jacquard_common::smol_str::SmolStr::new_static(
443                                "repostViaRepost",
444                            ),
445                            ::jacquard_lexicon::lexicon::LexObjectProperty::Ref(::jacquard_lexicon::lexicon::LexRef {
446                                description: None,
447                                r#ref: ::jacquard_common::CowStr::new_static(
448                                    "#filterablePreference",
449                                ),
450                            }),
451                        );
452                        map.insert(
453                            ::jacquard_common::smol_str::SmolStr::new_static(
454                                "starterpackJoined",
455                            ),
456                            ::jacquard_lexicon::lexicon::LexObjectProperty::Ref(::jacquard_lexicon::lexicon::LexRef {
457                                description: None,
458                                r#ref: ::jacquard_common::CowStr::new_static("#preference"),
459                            }),
460                        );
461                        map.insert(
462                            ::jacquard_common::smol_str::SmolStr::new_static(
463                                "subscribedPost",
464                            ),
465                            ::jacquard_lexicon::lexicon::LexObjectProperty::Ref(::jacquard_lexicon::lexicon::LexRef {
466                                description: None,
467                                r#ref: ::jacquard_common::CowStr::new_static("#preference"),
468                            }),
469                        );
470                        map.insert(
471                            ::jacquard_common::smol_str::SmolStr::new_static(
472                                "unverified",
473                            ),
474                            ::jacquard_lexicon::lexicon::LexObjectProperty::Ref(::jacquard_lexicon::lexicon::LexRef {
475                                description: None,
476                                r#ref: ::jacquard_common::CowStr::new_static("#preference"),
477                            }),
478                        );
479                        map.insert(
480                            ::jacquard_common::smol_str::SmolStr::new_static("verified"),
481                            ::jacquard_lexicon::lexicon::LexObjectProperty::Ref(::jacquard_lexicon::lexicon::LexRef {
482                                description: None,
483                                r#ref: ::jacquard_common::CowStr::new_static("#preference"),
484                            }),
485                        );
486                        map
487                    },
488                }),
489            );
490            map.insert(
491                ::jacquard_common::smol_str::SmolStr::new_static("recordDeleted"),
492                ::jacquard_lexicon::lexicon::LexUserType::Object(::jacquard_lexicon::lexicon::LexObject {
493                    description: None,
494                    required: None,
495                    nullable: None,
496                    properties: {
497                        #[allow(unused_mut)]
498                        let mut map = ::std::collections::BTreeMap::new();
499                        map
500                    },
501                }),
502            );
503            map.insert(
504                ::jacquard_common::smol_str::SmolStr::new_static(
505                    "subjectActivitySubscription",
506                ),
507                ::jacquard_lexicon::lexicon::LexUserType::Object(::jacquard_lexicon::lexicon::LexObject {
508                    description: Some(
509                        ::jacquard_common::CowStr::new_static(
510                            "Object used to store activity subscription data in stash.",
511                        ),
512                    ),
513                    required: Some(
514                        vec![
515                            ::jacquard_common::smol_str::SmolStr::new_static("subject"),
516                            ::jacquard_common::smol_str::SmolStr::new_static("activitySubscription")
517                        ],
518                    ),
519                    nullable: None,
520                    properties: {
521                        #[allow(unused_mut)]
522                        let mut map = ::std::collections::BTreeMap::new();
523                        map.insert(
524                            ::jacquard_common::smol_str::SmolStr::new_static(
525                                "activitySubscription",
526                            ),
527                            ::jacquard_lexicon::lexicon::LexObjectProperty::Ref(::jacquard_lexicon::lexicon::LexRef {
528                                description: None,
529                                r#ref: ::jacquard_common::CowStr::new_static(
530                                    "#activitySubscription",
531                                ),
532                            }),
533                        );
534                        map.insert(
535                            ::jacquard_common::smol_str::SmolStr::new_static("subject"),
536                            ::jacquard_lexicon::lexicon::LexObjectProperty::String(::jacquard_lexicon::lexicon::LexString {
537                                description: None,
538                                format: Some(
539                                    ::jacquard_lexicon::lexicon::LexStringFormat::Did,
540                                ),
541                                default: None,
542                                min_length: None,
543                                max_length: None,
544                                min_graphemes: None,
545                                max_graphemes: None,
546                                r#enum: None,
547                                r#const: None,
548                                known_values: None,
549                            }),
550                        );
551                        map
552                    },
553                }),
554            );
555            map
556        },
557    }
558}
559
560impl<'a> ::jacquard_lexicon::schema::LexiconSchema for ActivitySubscription<'a> {
561    fn nsid() -> &'static str {
562        "app.bsky.notification.defs"
563    }
564    fn def_name() -> &'static str {
565        "activitySubscription"
566    }
567    fn lexicon_doc() -> ::jacquard_lexicon::lexicon::LexiconDoc<'static> {
568        lexicon_doc_app_bsky_notification_defs()
569    }
570    fn validate(
571        &self,
572    ) -> ::std::result::Result<(), ::jacquard_lexicon::validation::ConstraintError> {
573        Ok(())
574    }
575}
576
577#[jacquard_derive::lexicon]
578#[derive(
579    serde::Serialize,
580    serde::Deserialize,
581    Debug,
582    Clone,
583    PartialEq,
584    Eq,
585    jacquard_derive::IntoStatic
586)]
587#[serde(rename_all = "camelCase")]
588pub struct ChatPreference<'a> {
589    #[serde(borrow)]
590    pub include: jacquard_common::CowStr<'a>,
591    pub push: bool,
592}
593
594pub mod chat_preference_state {
595
596    pub use crate::builder_types::{Set, Unset, IsSet, IsUnset};
597    #[allow(unused)]
598    use ::core::marker::PhantomData;
599    mod sealed {
600        pub trait Sealed {}
601    }
602    /// State trait tracking which required fields have been set
603    pub trait State: sealed::Sealed {
604        type Include;
605        type Push;
606    }
607    /// Empty state - all required fields are unset
608    pub struct Empty(());
609    impl sealed::Sealed for Empty {}
610    impl State for Empty {
611        type Include = Unset;
612        type Push = Unset;
613    }
614    ///State transition - sets the `include` field to Set
615    pub struct SetInclude<S: State = Empty>(PhantomData<fn() -> S>);
616    impl<S: State> sealed::Sealed for SetInclude<S> {}
617    impl<S: State> State for SetInclude<S> {
618        type Include = Set<members::include>;
619        type Push = S::Push;
620    }
621    ///State transition - sets the `push` field to Set
622    pub struct SetPush<S: State = Empty>(PhantomData<fn() -> S>);
623    impl<S: State> sealed::Sealed for SetPush<S> {}
624    impl<S: State> State for SetPush<S> {
625        type Include = S::Include;
626        type Push = Set<members::push>;
627    }
628    /// Marker types for field names
629    #[allow(non_camel_case_types)]
630    pub mod members {
631        ///Marker type for the `include` field
632        pub struct include(());
633        ///Marker type for the `push` field
634        pub struct push(());
635    }
636}
637
638/// Builder for constructing an instance of this type
639pub struct ChatPreferenceBuilder<'a, S: chat_preference_state::State> {
640    _phantom_state: ::core::marker::PhantomData<fn() -> S>,
641    __unsafe_private_named: (
642        ::core::option::Option<jacquard_common::CowStr<'a>>,
643        ::core::option::Option<bool>,
644    ),
645    _phantom: ::core::marker::PhantomData<&'a ()>,
646}
647
648impl<'a> ChatPreference<'a> {
649    /// Create a new builder for this type
650    pub fn new() -> ChatPreferenceBuilder<'a, chat_preference_state::Empty> {
651        ChatPreferenceBuilder::new()
652    }
653}
654
655impl<'a> ChatPreferenceBuilder<'a, chat_preference_state::Empty> {
656    /// Create a new builder with all fields unset
657    pub fn new() -> Self {
658        ChatPreferenceBuilder {
659            _phantom_state: ::core::marker::PhantomData,
660            __unsafe_private_named: (None, None),
661            _phantom: ::core::marker::PhantomData,
662        }
663    }
664}
665
666impl<'a, S> ChatPreferenceBuilder<'a, S>
667where
668    S: chat_preference_state::State,
669    S::Include: chat_preference_state::IsUnset,
670{
671    /// Set the `include` field (required)
672    pub fn include(
673        mut self,
674        value: impl Into<jacquard_common::CowStr<'a>>,
675    ) -> ChatPreferenceBuilder<'a, chat_preference_state::SetInclude<S>> {
676        self.__unsafe_private_named.0 = ::core::option::Option::Some(value.into());
677        ChatPreferenceBuilder {
678            _phantom_state: ::core::marker::PhantomData,
679            __unsafe_private_named: self.__unsafe_private_named,
680            _phantom: ::core::marker::PhantomData,
681        }
682    }
683}
684
685impl<'a, S> ChatPreferenceBuilder<'a, S>
686where
687    S: chat_preference_state::State,
688    S::Push: chat_preference_state::IsUnset,
689{
690    /// Set the `push` field (required)
691    pub fn push(
692        mut self,
693        value: impl Into<bool>,
694    ) -> ChatPreferenceBuilder<'a, chat_preference_state::SetPush<S>> {
695        self.__unsafe_private_named.1 = ::core::option::Option::Some(value.into());
696        ChatPreferenceBuilder {
697            _phantom_state: ::core::marker::PhantomData,
698            __unsafe_private_named: self.__unsafe_private_named,
699            _phantom: ::core::marker::PhantomData,
700        }
701    }
702}
703
704impl<'a, S> ChatPreferenceBuilder<'a, S>
705where
706    S: chat_preference_state::State,
707    S::Include: chat_preference_state::IsSet,
708    S::Push: chat_preference_state::IsSet,
709{
710    /// Build the final struct
711    pub fn build(self) -> ChatPreference<'a> {
712        ChatPreference {
713            include: self.__unsafe_private_named.0.unwrap(),
714            push: self.__unsafe_private_named.1.unwrap(),
715            extra_data: Default::default(),
716        }
717    }
718    /// Build the final struct with custom extra_data
719    pub fn build_with_data(
720        self,
721        extra_data: std::collections::BTreeMap<
722            jacquard_common::smol_str::SmolStr,
723            jacquard_common::types::value::Data<'a>,
724        >,
725    ) -> ChatPreference<'a> {
726        ChatPreference {
727            include: self.__unsafe_private_named.0.unwrap(),
728            push: self.__unsafe_private_named.1.unwrap(),
729            extra_data: Some(extra_data),
730        }
731    }
732}
733
734impl<'a> ::jacquard_lexicon::schema::LexiconSchema for ChatPreference<'a> {
735    fn nsid() -> &'static str {
736        "app.bsky.notification.defs"
737    }
738    fn def_name() -> &'static str {
739        "chatPreference"
740    }
741    fn lexicon_doc() -> ::jacquard_lexicon::lexicon::LexiconDoc<'static> {
742        lexicon_doc_app_bsky_notification_defs()
743    }
744    fn validate(
745        &self,
746    ) -> ::std::result::Result<(), ::jacquard_lexicon::validation::ConstraintError> {
747        Ok(())
748    }
749}
750
751#[jacquard_derive::lexicon]
752#[derive(
753    serde::Serialize,
754    serde::Deserialize,
755    Debug,
756    Clone,
757    PartialEq,
758    Eq,
759    jacquard_derive::IntoStatic
760)]
761#[serde(rename_all = "camelCase")]
762pub struct FilterablePreference<'a> {
763    #[serde(borrow)]
764    pub include: jacquard_common::CowStr<'a>,
765    pub list: bool,
766    pub push: bool,
767}
768
769pub mod filterable_preference_state {
770
771    pub use crate::builder_types::{Set, Unset, IsSet, IsUnset};
772    #[allow(unused)]
773    use ::core::marker::PhantomData;
774    mod sealed {
775        pub trait Sealed {}
776    }
777    /// State trait tracking which required fields have been set
778    pub trait State: sealed::Sealed {
779        type List;
780        type Push;
781        type Include;
782    }
783    /// Empty state - all required fields are unset
784    pub struct Empty(());
785    impl sealed::Sealed for Empty {}
786    impl State for Empty {
787        type List = Unset;
788        type Push = Unset;
789        type Include = Unset;
790    }
791    ///State transition - sets the `list` field to Set
792    pub struct SetList<S: State = Empty>(PhantomData<fn() -> S>);
793    impl<S: State> sealed::Sealed for SetList<S> {}
794    impl<S: State> State for SetList<S> {
795        type List = Set<members::list>;
796        type Push = S::Push;
797        type Include = S::Include;
798    }
799    ///State transition - sets the `push` field to Set
800    pub struct SetPush<S: State = Empty>(PhantomData<fn() -> S>);
801    impl<S: State> sealed::Sealed for SetPush<S> {}
802    impl<S: State> State for SetPush<S> {
803        type List = S::List;
804        type Push = Set<members::push>;
805        type Include = S::Include;
806    }
807    ///State transition - sets the `include` field to Set
808    pub struct SetInclude<S: State = Empty>(PhantomData<fn() -> S>);
809    impl<S: State> sealed::Sealed for SetInclude<S> {}
810    impl<S: State> State for SetInclude<S> {
811        type List = S::List;
812        type Push = S::Push;
813        type Include = Set<members::include>;
814    }
815    /// Marker types for field names
816    #[allow(non_camel_case_types)]
817    pub mod members {
818        ///Marker type for the `list` field
819        pub struct list(());
820        ///Marker type for the `push` field
821        pub struct push(());
822        ///Marker type for the `include` field
823        pub struct include(());
824    }
825}
826
827/// Builder for constructing an instance of this type
828pub struct FilterablePreferenceBuilder<'a, S: filterable_preference_state::State> {
829    _phantom_state: ::core::marker::PhantomData<fn() -> S>,
830    __unsafe_private_named: (
831        ::core::option::Option<jacquard_common::CowStr<'a>>,
832        ::core::option::Option<bool>,
833        ::core::option::Option<bool>,
834    ),
835    _phantom: ::core::marker::PhantomData<&'a ()>,
836}
837
838impl<'a> FilterablePreference<'a> {
839    /// Create a new builder for this type
840    pub fn new() -> FilterablePreferenceBuilder<'a, filterable_preference_state::Empty> {
841        FilterablePreferenceBuilder::new()
842    }
843}
844
845impl<'a> FilterablePreferenceBuilder<'a, filterable_preference_state::Empty> {
846    /// Create a new builder with all fields unset
847    pub fn new() -> Self {
848        FilterablePreferenceBuilder {
849            _phantom_state: ::core::marker::PhantomData,
850            __unsafe_private_named: (None, None, None),
851            _phantom: ::core::marker::PhantomData,
852        }
853    }
854}
855
856impl<'a, S> FilterablePreferenceBuilder<'a, S>
857where
858    S: filterable_preference_state::State,
859    S::Include: filterable_preference_state::IsUnset,
860{
861    /// Set the `include` field (required)
862    pub fn include(
863        mut self,
864        value: impl Into<jacquard_common::CowStr<'a>>,
865    ) -> FilterablePreferenceBuilder<'a, filterable_preference_state::SetInclude<S>> {
866        self.__unsafe_private_named.0 = ::core::option::Option::Some(value.into());
867        FilterablePreferenceBuilder {
868            _phantom_state: ::core::marker::PhantomData,
869            __unsafe_private_named: self.__unsafe_private_named,
870            _phantom: ::core::marker::PhantomData,
871        }
872    }
873}
874
875impl<'a, S> FilterablePreferenceBuilder<'a, S>
876where
877    S: filterable_preference_state::State,
878    S::List: filterable_preference_state::IsUnset,
879{
880    /// Set the `list` field (required)
881    pub fn list(
882        mut self,
883        value: impl Into<bool>,
884    ) -> FilterablePreferenceBuilder<'a, filterable_preference_state::SetList<S>> {
885        self.__unsafe_private_named.1 = ::core::option::Option::Some(value.into());
886        FilterablePreferenceBuilder {
887            _phantom_state: ::core::marker::PhantomData,
888            __unsafe_private_named: self.__unsafe_private_named,
889            _phantom: ::core::marker::PhantomData,
890        }
891    }
892}
893
894impl<'a, S> FilterablePreferenceBuilder<'a, S>
895where
896    S: filterable_preference_state::State,
897    S::Push: filterable_preference_state::IsUnset,
898{
899    /// Set the `push` field (required)
900    pub fn push(
901        mut self,
902        value: impl Into<bool>,
903    ) -> FilterablePreferenceBuilder<'a, filterable_preference_state::SetPush<S>> {
904        self.__unsafe_private_named.2 = ::core::option::Option::Some(value.into());
905        FilterablePreferenceBuilder {
906            _phantom_state: ::core::marker::PhantomData,
907            __unsafe_private_named: self.__unsafe_private_named,
908            _phantom: ::core::marker::PhantomData,
909        }
910    }
911}
912
913impl<'a, S> FilterablePreferenceBuilder<'a, S>
914where
915    S: filterable_preference_state::State,
916    S::List: filterable_preference_state::IsSet,
917    S::Push: filterable_preference_state::IsSet,
918    S::Include: filterable_preference_state::IsSet,
919{
920    /// Build the final struct
921    pub fn build(self) -> FilterablePreference<'a> {
922        FilterablePreference {
923            include: self.__unsafe_private_named.0.unwrap(),
924            list: self.__unsafe_private_named.1.unwrap(),
925            push: self.__unsafe_private_named.2.unwrap(),
926            extra_data: Default::default(),
927        }
928    }
929    /// Build the final struct with custom extra_data
930    pub fn build_with_data(
931        self,
932        extra_data: std::collections::BTreeMap<
933            jacquard_common::smol_str::SmolStr,
934            jacquard_common::types::value::Data<'a>,
935        >,
936    ) -> FilterablePreference<'a> {
937        FilterablePreference {
938            include: self.__unsafe_private_named.0.unwrap(),
939            list: self.__unsafe_private_named.1.unwrap(),
940            push: self.__unsafe_private_named.2.unwrap(),
941            extra_data: Some(extra_data),
942        }
943    }
944}
945
946impl<'a> ::jacquard_lexicon::schema::LexiconSchema for FilterablePreference<'a> {
947    fn nsid() -> &'static str {
948        "app.bsky.notification.defs"
949    }
950    fn def_name() -> &'static str {
951        "filterablePreference"
952    }
953    fn lexicon_doc() -> ::jacquard_lexicon::lexicon::LexiconDoc<'static> {
954        lexicon_doc_app_bsky_notification_defs()
955    }
956    fn validate(
957        &self,
958    ) -> ::std::result::Result<(), ::jacquard_lexicon::validation::ConstraintError> {
959        Ok(())
960    }
961}
962
963#[jacquard_derive::lexicon]
964#[derive(
965    serde::Serialize,
966    serde::Deserialize,
967    Debug,
968    Clone,
969    PartialEq,
970    Eq,
971    jacquard_derive::IntoStatic
972)]
973#[serde(rename_all = "camelCase")]
974pub struct Preference<'a> {
975    pub list: bool,
976    pub push: bool,
977}
978
979pub mod preference_state {
980
981    pub use crate::builder_types::{Set, Unset, IsSet, IsUnset};
982    #[allow(unused)]
983    use ::core::marker::PhantomData;
984    mod sealed {
985        pub trait Sealed {}
986    }
987    /// State trait tracking which required fields have been set
988    pub trait State: sealed::Sealed {
989        type Push;
990        type List;
991    }
992    /// Empty state - all required fields are unset
993    pub struct Empty(());
994    impl sealed::Sealed for Empty {}
995    impl State for Empty {
996        type Push = Unset;
997        type List = Unset;
998    }
999    ///State transition - sets the `push` field to Set
1000    pub struct SetPush<S: State = Empty>(PhantomData<fn() -> S>);
1001    impl<S: State> sealed::Sealed for SetPush<S> {}
1002    impl<S: State> State for SetPush<S> {
1003        type Push = Set<members::push>;
1004        type List = S::List;
1005    }
1006    ///State transition - sets the `list` field to Set
1007    pub struct SetList<S: State = Empty>(PhantomData<fn() -> S>);
1008    impl<S: State> sealed::Sealed for SetList<S> {}
1009    impl<S: State> State for SetList<S> {
1010        type Push = S::Push;
1011        type List = Set<members::list>;
1012    }
1013    /// Marker types for field names
1014    #[allow(non_camel_case_types)]
1015    pub mod members {
1016        ///Marker type for the `push` field
1017        pub struct push(());
1018        ///Marker type for the `list` field
1019        pub struct list(());
1020    }
1021}
1022
1023/// Builder for constructing an instance of this type
1024pub struct PreferenceBuilder<'a, S: preference_state::State> {
1025    _phantom_state: ::core::marker::PhantomData<fn() -> S>,
1026    __unsafe_private_named: (::core::option::Option<bool>, ::core::option::Option<bool>),
1027    _phantom: ::core::marker::PhantomData<&'a ()>,
1028}
1029
1030impl<'a> Preference<'a> {
1031    /// Create a new builder for this type
1032    pub fn new() -> PreferenceBuilder<'a, preference_state::Empty> {
1033        PreferenceBuilder::new()
1034    }
1035}
1036
1037impl<'a> PreferenceBuilder<'a, preference_state::Empty> {
1038    /// Create a new builder with all fields unset
1039    pub fn new() -> Self {
1040        PreferenceBuilder {
1041            _phantom_state: ::core::marker::PhantomData,
1042            __unsafe_private_named: (None, None),
1043            _phantom: ::core::marker::PhantomData,
1044        }
1045    }
1046}
1047
1048impl<'a, S> PreferenceBuilder<'a, S>
1049where
1050    S: preference_state::State,
1051    S::List: preference_state::IsUnset,
1052{
1053    /// Set the `list` field (required)
1054    pub fn list(
1055        mut self,
1056        value: impl Into<bool>,
1057    ) -> PreferenceBuilder<'a, preference_state::SetList<S>> {
1058        self.__unsafe_private_named.0 = ::core::option::Option::Some(value.into());
1059        PreferenceBuilder {
1060            _phantom_state: ::core::marker::PhantomData,
1061            __unsafe_private_named: self.__unsafe_private_named,
1062            _phantom: ::core::marker::PhantomData,
1063        }
1064    }
1065}
1066
1067impl<'a, S> PreferenceBuilder<'a, S>
1068where
1069    S: preference_state::State,
1070    S::Push: preference_state::IsUnset,
1071{
1072    /// Set the `push` field (required)
1073    pub fn push(
1074        mut self,
1075        value: impl Into<bool>,
1076    ) -> PreferenceBuilder<'a, preference_state::SetPush<S>> {
1077        self.__unsafe_private_named.1 = ::core::option::Option::Some(value.into());
1078        PreferenceBuilder {
1079            _phantom_state: ::core::marker::PhantomData,
1080            __unsafe_private_named: self.__unsafe_private_named,
1081            _phantom: ::core::marker::PhantomData,
1082        }
1083    }
1084}
1085
1086impl<'a, S> PreferenceBuilder<'a, S>
1087where
1088    S: preference_state::State,
1089    S::Push: preference_state::IsSet,
1090    S::List: preference_state::IsSet,
1091{
1092    /// Build the final struct
1093    pub fn build(self) -> Preference<'a> {
1094        Preference {
1095            list: self.__unsafe_private_named.0.unwrap(),
1096            push: self.__unsafe_private_named.1.unwrap(),
1097            extra_data: Default::default(),
1098        }
1099    }
1100    /// Build the final struct with custom extra_data
1101    pub fn build_with_data(
1102        self,
1103        extra_data: std::collections::BTreeMap<
1104            jacquard_common::smol_str::SmolStr,
1105            jacquard_common::types::value::Data<'a>,
1106        >,
1107    ) -> Preference<'a> {
1108        Preference {
1109            list: self.__unsafe_private_named.0.unwrap(),
1110            push: self.__unsafe_private_named.1.unwrap(),
1111            extra_data: Some(extra_data),
1112        }
1113    }
1114}
1115
1116impl<'a> ::jacquard_lexicon::schema::LexiconSchema for Preference<'a> {
1117    fn nsid() -> &'static str {
1118        "app.bsky.notification.defs"
1119    }
1120    fn def_name() -> &'static str {
1121        "preference"
1122    }
1123    fn lexicon_doc() -> ::jacquard_lexicon::lexicon::LexiconDoc<'static> {
1124        lexicon_doc_app_bsky_notification_defs()
1125    }
1126    fn validate(
1127        &self,
1128    ) -> ::std::result::Result<(), ::jacquard_lexicon::validation::ConstraintError> {
1129        Ok(())
1130    }
1131}
1132
1133#[jacquard_derive::lexicon]
1134#[derive(
1135    serde::Serialize,
1136    serde::Deserialize,
1137    Debug,
1138    Clone,
1139    PartialEq,
1140    Eq,
1141    jacquard_derive::IntoStatic
1142)]
1143#[serde(rename_all = "camelCase")]
1144pub struct Preferences<'a> {
1145    #[serde(borrow)]
1146    pub chat: crate::app_bsky::notification::ChatPreference<'a>,
1147    #[serde(borrow)]
1148    pub follow: crate::app_bsky::notification::FilterablePreference<'a>,
1149    #[serde(borrow)]
1150    pub like: crate::app_bsky::notification::FilterablePreference<'a>,
1151    #[serde(borrow)]
1152    pub like_via_repost: crate::app_bsky::notification::FilterablePreference<'a>,
1153    #[serde(borrow)]
1154    pub mention: crate::app_bsky::notification::FilterablePreference<'a>,
1155    #[serde(borrow)]
1156    pub quote: crate::app_bsky::notification::FilterablePreference<'a>,
1157    #[serde(borrow)]
1158    pub reply: crate::app_bsky::notification::FilterablePreference<'a>,
1159    #[serde(borrow)]
1160    pub repost: crate::app_bsky::notification::FilterablePreference<'a>,
1161    #[serde(borrow)]
1162    pub repost_via_repost: crate::app_bsky::notification::FilterablePreference<'a>,
1163    #[serde(borrow)]
1164    pub starterpack_joined: crate::app_bsky::notification::Preference<'a>,
1165    #[serde(borrow)]
1166    pub subscribed_post: crate::app_bsky::notification::Preference<'a>,
1167    #[serde(borrow)]
1168    pub unverified: crate::app_bsky::notification::Preference<'a>,
1169    #[serde(borrow)]
1170    pub verified: crate::app_bsky::notification::Preference<'a>,
1171}
1172
1173pub mod preferences_state {
1174
1175    pub use crate::builder_types::{Set, Unset, IsSet, IsUnset};
1176    #[allow(unused)]
1177    use ::core::marker::PhantomData;
1178    mod sealed {
1179        pub trait Sealed {}
1180    }
1181    /// State trait tracking which required fields have been set
1182    pub trait State: sealed::Sealed {
1183        type Like;
1184        type Repost;
1185        type Follow;
1186        type Verified;
1187        type Quote;
1188        type Reply;
1189        type StarterpackJoined;
1190        type Unverified;
1191        type Mention;
1192        type RepostViaRepost;
1193        type SubscribedPost;
1194        type Chat;
1195        type LikeViaRepost;
1196    }
1197    /// Empty state - all required fields are unset
1198    pub struct Empty(());
1199    impl sealed::Sealed for Empty {}
1200    impl State for Empty {
1201        type Like = Unset;
1202        type Repost = Unset;
1203        type Follow = Unset;
1204        type Verified = Unset;
1205        type Quote = Unset;
1206        type Reply = Unset;
1207        type StarterpackJoined = Unset;
1208        type Unverified = Unset;
1209        type Mention = Unset;
1210        type RepostViaRepost = Unset;
1211        type SubscribedPost = Unset;
1212        type Chat = Unset;
1213        type LikeViaRepost = Unset;
1214    }
1215    ///State transition - sets the `like` field to Set
1216    pub struct SetLike<S: State = Empty>(PhantomData<fn() -> S>);
1217    impl<S: State> sealed::Sealed for SetLike<S> {}
1218    impl<S: State> State for SetLike<S> {
1219        type Like = Set<members::like>;
1220        type Repost = S::Repost;
1221        type Follow = S::Follow;
1222        type Verified = S::Verified;
1223        type Quote = S::Quote;
1224        type Reply = S::Reply;
1225        type StarterpackJoined = S::StarterpackJoined;
1226        type Unverified = S::Unverified;
1227        type Mention = S::Mention;
1228        type RepostViaRepost = S::RepostViaRepost;
1229        type SubscribedPost = S::SubscribedPost;
1230        type Chat = S::Chat;
1231        type LikeViaRepost = S::LikeViaRepost;
1232    }
1233    ///State transition - sets the `repost` field to Set
1234    pub struct SetRepost<S: State = Empty>(PhantomData<fn() -> S>);
1235    impl<S: State> sealed::Sealed for SetRepost<S> {}
1236    impl<S: State> State for SetRepost<S> {
1237        type Like = S::Like;
1238        type Repost = Set<members::repost>;
1239        type Follow = S::Follow;
1240        type Verified = S::Verified;
1241        type Quote = S::Quote;
1242        type Reply = S::Reply;
1243        type StarterpackJoined = S::StarterpackJoined;
1244        type Unverified = S::Unverified;
1245        type Mention = S::Mention;
1246        type RepostViaRepost = S::RepostViaRepost;
1247        type SubscribedPost = S::SubscribedPost;
1248        type Chat = S::Chat;
1249        type LikeViaRepost = S::LikeViaRepost;
1250    }
1251    ///State transition - sets the `follow` field to Set
1252    pub struct SetFollow<S: State = Empty>(PhantomData<fn() -> S>);
1253    impl<S: State> sealed::Sealed for SetFollow<S> {}
1254    impl<S: State> State for SetFollow<S> {
1255        type Like = S::Like;
1256        type Repost = S::Repost;
1257        type Follow = Set<members::follow>;
1258        type Verified = S::Verified;
1259        type Quote = S::Quote;
1260        type Reply = S::Reply;
1261        type StarterpackJoined = S::StarterpackJoined;
1262        type Unverified = S::Unverified;
1263        type Mention = S::Mention;
1264        type RepostViaRepost = S::RepostViaRepost;
1265        type SubscribedPost = S::SubscribedPost;
1266        type Chat = S::Chat;
1267        type LikeViaRepost = S::LikeViaRepost;
1268    }
1269    ///State transition - sets the `verified` field to Set
1270    pub struct SetVerified<S: State = Empty>(PhantomData<fn() -> S>);
1271    impl<S: State> sealed::Sealed for SetVerified<S> {}
1272    impl<S: State> State for SetVerified<S> {
1273        type Like = S::Like;
1274        type Repost = S::Repost;
1275        type Follow = S::Follow;
1276        type Verified = Set<members::verified>;
1277        type Quote = S::Quote;
1278        type Reply = S::Reply;
1279        type StarterpackJoined = S::StarterpackJoined;
1280        type Unverified = S::Unverified;
1281        type Mention = S::Mention;
1282        type RepostViaRepost = S::RepostViaRepost;
1283        type SubscribedPost = S::SubscribedPost;
1284        type Chat = S::Chat;
1285        type LikeViaRepost = S::LikeViaRepost;
1286    }
1287    ///State transition - sets the `quote` field to Set
1288    pub struct SetQuote<S: State = Empty>(PhantomData<fn() -> S>);
1289    impl<S: State> sealed::Sealed for SetQuote<S> {}
1290    impl<S: State> State for SetQuote<S> {
1291        type Like = S::Like;
1292        type Repost = S::Repost;
1293        type Follow = S::Follow;
1294        type Verified = S::Verified;
1295        type Quote = Set<members::quote>;
1296        type Reply = S::Reply;
1297        type StarterpackJoined = S::StarterpackJoined;
1298        type Unverified = S::Unverified;
1299        type Mention = S::Mention;
1300        type RepostViaRepost = S::RepostViaRepost;
1301        type SubscribedPost = S::SubscribedPost;
1302        type Chat = S::Chat;
1303        type LikeViaRepost = S::LikeViaRepost;
1304    }
1305    ///State transition - sets the `reply` field to Set
1306    pub struct SetReply<S: State = Empty>(PhantomData<fn() -> S>);
1307    impl<S: State> sealed::Sealed for SetReply<S> {}
1308    impl<S: State> State for SetReply<S> {
1309        type Like = S::Like;
1310        type Repost = S::Repost;
1311        type Follow = S::Follow;
1312        type Verified = S::Verified;
1313        type Quote = S::Quote;
1314        type Reply = Set<members::reply>;
1315        type StarterpackJoined = S::StarterpackJoined;
1316        type Unverified = S::Unverified;
1317        type Mention = S::Mention;
1318        type RepostViaRepost = S::RepostViaRepost;
1319        type SubscribedPost = S::SubscribedPost;
1320        type Chat = S::Chat;
1321        type LikeViaRepost = S::LikeViaRepost;
1322    }
1323    ///State transition - sets the `starterpack_joined` field to Set
1324    pub struct SetStarterpackJoined<S: State = Empty>(PhantomData<fn() -> S>);
1325    impl<S: State> sealed::Sealed for SetStarterpackJoined<S> {}
1326    impl<S: State> State for SetStarterpackJoined<S> {
1327        type Like = S::Like;
1328        type Repost = S::Repost;
1329        type Follow = S::Follow;
1330        type Verified = S::Verified;
1331        type Quote = S::Quote;
1332        type Reply = S::Reply;
1333        type StarterpackJoined = Set<members::starterpack_joined>;
1334        type Unverified = S::Unverified;
1335        type Mention = S::Mention;
1336        type RepostViaRepost = S::RepostViaRepost;
1337        type SubscribedPost = S::SubscribedPost;
1338        type Chat = S::Chat;
1339        type LikeViaRepost = S::LikeViaRepost;
1340    }
1341    ///State transition - sets the `unverified` field to Set
1342    pub struct SetUnverified<S: State = Empty>(PhantomData<fn() -> S>);
1343    impl<S: State> sealed::Sealed for SetUnverified<S> {}
1344    impl<S: State> State for SetUnverified<S> {
1345        type Like = S::Like;
1346        type Repost = S::Repost;
1347        type Follow = S::Follow;
1348        type Verified = S::Verified;
1349        type Quote = S::Quote;
1350        type Reply = S::Reply;
1351        type StarterpackJoined = S::StarterpackJoined;
1352        type Unverified = Set<members::unverified>;
1353        type Mention = S::Mention;
1354        type RepostViaRepost = S::RepostViaRepost;
1355        type SubscribedPost = S::SubscribedPost;
1356        type Chat = S::Chat;
1357        type LikeViaRepost = S::LikeViaRepost;
1358    }
1359    ///State transition - sets the `mention` field to Set
1360    pub struct SetMention<S: State = Empty>(PhantomData<fn() -> S>);
1361    impl<S: State> sealed::Sealed for SetMention<S> {}
1362    impl<S: State> State for SetMention<S> {
1363        type Like = S::Like;
1364        type Repost = S::Repost;
1365        type Follow = S::Follow;
1366        type Verified = S::Verified;
1367        type Quote = S::Quote;
1368        type Reply = S::Reply;
1369        type StarterpackJoined = S::StarterpackJoined;
1370        type Unverified = S::Unverified;
1371        type Mention = Set<members::mention>;
1372        type RepostViaRepost = S::RepostViaRepost;
1373        type SubscribedPost = S::SubscribedPost;
1374        type Chat = S::Chat;
1375        type LikeViaRepost = S::LikeViaRepost;
1376    }
1377    ///State transition - sets the `repost_via_repost` field to Set
1378    pub struct SetRepostViaRepost<S: State = Empty>(PhantomData<fn() -> S>);
1379    impl<S: State> sealed::Sealed for SetRepostViaRepost<S> {}
1380    impl<S: State> State for SetRepostViaRepost<S> {
1381        type Like = S::Like;
1382        type Repost = S::Repost;
1383        type Follow = S::Follow;
1384        type Verified = S::Verified;
1385        type Quote = S::Quote;
1386        type Reply = S::Reply;
1387        type StarterpackJoined = S::StarterpackJoined;
1388        type Unverified = S::Unverified;
1389        type Mention = S::Mention;
1390        type RepostViaRepost = Set<members::repost_via_repost>;
1391        type SubscribedPost = S::SubscribedPost;
1392        type Chat = S::Chat;
1393        type LikeViaRepost = S::LikeViaRepost;
1394    }
1395    ///State transition - sets the `subscribed_post` field to Set
1396    pub struct SetSubscribedPost<S: State = Empty>(PhantomData<fn() -> S>);
1397    impl<S: State> sealed::Sealed for SetSubscribedPost<S> {}
1398    impl<S: State> State for SetSubscribedPost<S> {
1399        type Like = S::Like;
1400        type Repost = S::Repost;
1401        type Follow = S::Follow;
1402        type Verified = S::Verified;
1403        type Quote = S::Quote;
1404        type Reply = S::Reply;
1405        type StarterpackJoined = S::StarterpackJoined;
1406        type Unverified = S::Unverified;
1407        type Mention = S::Mention;
1408        type RepostViaRepost = S::RepostViaRepost;
1409        type SubscribedPost = Set<members::subscribed_post>;
1410        type Chat = S::Chat;
1411        type LikeViaRepost = S::LikeViaRepost;
1412    }
1413    ///State transition - sets the `chat` field to Set
1414    pub struct SetChat<S: State = Empty>(PhantomData<fn() -> S>);
1415    impl<S: State> sealed::Sealed for SetChat<S> {}
1416    impl<S: State> State for SetChat<S> {
1417        type Like = S::Like;
1418        type Repost = S::Repost;
1419        type Follow = S::Follow;
1420        type Verified = S::Verified;
1421        type Quote = S::Quote;
1422        type Reply = S::Reply;
1423        type StarterpackJoined = S::StarterpackJoined;
1424        type Unverified = S::Unverified;
1425        type Mention = S::Mention;
1426        type RepostViaRepost = S::RepostViaRepost;
1427        type SubscribedPost = S::SubscribedPost;
1428        type Chat = Set<members::chat>;
1429        type LikeViaRepost = S::LikeViaRepost;
1430    }
1431    ///State transition - sets the `like_via_repost` field to Set
1432    pub struct SetLikeViaRepost<S: State = Empty>(PhantomData<fn() -> S>);
1433    impl<S: State> sealed::Sealed for SetLikeViaRepost<S> {}
1434    impl<S: State> State for SetLikeViaRepost<S> {
1435        type Like = S::Like;
1436        type Repost = S::Repost;
1437        type Follow = S::Follow;
1438        type Verified = S::Verified;
1439        type Quote = S::Quote;
1440        type Reply = S::Reply;
1441        type StarterpackJoined = S::StarterpackJoined;
1442        type Unverified = S::Unverified;
1443        type Mention = S::Mention;
1444        type RepostViaRepost = S::RepostViaRepost;
1445        type SubscribedPost = S::SubscribedPost;
1446        type Chat = S::Chat;
1447        type LikeViaRepost = Set<members::like_via_repost>;
1448    }
1449    /// Marker types for field names
1450    #[allow(non_camel_case_types)]
1451    pub mod members {
1452        ///Marker type for the `like` field
1453        pub struct like(());
1454        ///Marker type for the `repost` field
1455        pub struct repost(());
1456        ///Marker type for the `follow` field
1457        pub struct follow(());
1458        ///Marker type for the `verified` field
1459        pub struct verified(());
1460        ///Marker type for the `quote` field
1461        pub struct quote(());
1462        ///Marker type for the `reply` field
1463        pub struct reply(());
1464        ///Marker type for the `starterpack_joined` field
1465        pub struct starterpack_joined(());
1466        ///Marker type for the `unverified` field
1467        pub struct unverified(());
1468        ///Marker type for the `mention` field
1469        pub struct mention(());
1470        ///Marker type for the `repost_via_repost` field
1471        pub struct repost_via_repost(());
1472        ///Marker type for the `subscribed_post` field
1473        pub struct subscribed_post(());
1474        ///Marker type for the `chat` field
1475        pub struct chat(());
1476        ///Marker type for the `like_via_repost` field
1477        pub struct like_via_repost(());
1478    }
1479}
1480
1481/// Builder for constructing an instance of this type
1482pub struct PreferencesBuilder<'a, S: preferences_state::State> {
1483    _phantom_state: ::core::marker::PhantomData<fn() -> S>,
1484    __unsafe_private_named: (
1485        ::core::option::Option<crate::app_bsky::notification::ChatPreference<'a>>,
1486        ::core::option::Option<crate::app_bsky::notification::FilterablePreference<'a>>,
1487        ::core::option::Option<crate::app_bsky::notification::FilterablePreference<'a>>,
1488        ::core::option::Option<crate::app_bsky::notification::FilterablePreference<'a>>,
1489        ::core::option::Option<crate::app_bsky::notification::FilterablePreference<'a>>,
1490        ::core::option::Option<crate::app_bsky::notification::FilterablePreference<'a>>,
1491        ::core::option::Option<crate::app_bsky::notification::FilterablePreference<'a>>,
1492        ::core::option::Option<crate::app_bsky::notification::FilterablePreference<'a>>,
1493        ::core::option::Option<crate::app_bsky::notification::FilterablePreference<'a>>,
1494        ::core::option::Option<crate::app_bsky::notification::Preference<'a>>,
1495        ::core::option::Option<crate::app_bsky::notification::Preference<'a>>,
1496        ::core::option::Option<crate::app_bsky::notification::Preference<'a>>,
1497        ::core::option::Option<crate::app_bsky::notification::Preference<'a>>,
1498    ),
1499    _phantom: ::core::marker::PhantomData<&'a ()>,
1500}
1501
1502impl<'a> Preferences<'a> {
1503    /// Create a new builder for this type
1504    pub fn new() -> PreferencesBuilder<'a, preferences_state::Empty> {
1505        PreferencesBuilder::new()
1506    }
1507}
1508
1509impl<'a> PreferencesBuilder<'a, preferences_state::Empty> {
1510    /// Create a new builder with all fields unset
1511    pub fn new() -> Self {
1512        PreferencesBuilder {
1513            _phantom_state: ::core::marker::PhantomData,
1514            __unsafe_private_named: (
1515                None,
1516                None,
1517                None,
1518                None,
1519                None,
1520                None,
1521                None,
1522                None,
1523                None,
1524                None,
1525                None,
1526                None,
1527                None,
1528            ),
1529            _phantom: ::core::marker::PhantomData,
1530        }
1531    }
1532}
1533
1534impl<'a, S> PreferencesBuilder<'a, S>
1535where
1536    S: preferences_state::State,
1537    S::Chat: preferences_state::IsUnset,
1538{
1539    /// Set the `chat` field (required)
1540    pub fn chat(
1541        mut self,
1542        value: impl Into<crate::app_bsky::notification::ChatPreference<'a>>,
1543    ) -> PreferencesBuilder<'a, preferences_state::SetChat<S>> {
1544        self.__unsafe_private_named.0 = ::core::option::Option::Some(value.into());
1545        PreferencesBuilder {
1546            _phantom_state: ::core::marker::PhantomData,
1547            __unsafe_private_named: self.__unsafe_private_named,
1548            _phantom: ::core::marker::PhantomData,
1549        }
1550    }
1551}
1552
1553impl<'a, S> PreferencesBuilder<'a, S>
1554where
1555    S: preferences_state::State,
1556    S::Follow: preferences_state::IsUnset,
1557{
1558    /// Set the `follow` field (required)
1559    pub fn follow(
1560        mut self,
1561        value: impl Into<crate::app_bsky::notification::FilterablePreference<'a>>,
1562    ) -> PreferencesBuilder<'a, preferences_state::SetFollow<S>> {
1563        self.__unsafe_private_named.1 = ::core::option::Option::Some(value.into());
1564        PreferencesBuilder {
1565            _phantom_state: ::core::marker::PhantomData,
1566            __unsafe_private_named: self.__unsafe_private_named,
1567            _phantom: ::core::marker::PhantomData,
1568        }
1569    }
1570}
1571
1572impl<'a, S> PreferencesBuilder<'a, S>
1573where
1574    S: preferences_state::State,
1575    S::Like: preferences_state::IsUnset,
1576{
1577    /// Set the `like` field (required)
1578    pub fn like(
1579        mut self,
1580        value: impl Into<crate::app_bsky::notification::FilterablePreference<'a>>,
1581    ) -> PreferencesBuilder<'a, preferences_state::SetLike<S>> {
1582        self.__unsafe_private_named.2 = ::core::option::Option::Some(value.into());
1583        PreferencesBuilder {
1584            _phantom_state: ::core::marker::PhantomData,
1585            __unsafe_private_named: self.__unsafe_private_named,
1586            _phantom: ::core::marker::PhantomData,
1587        }
1588    }
1589}
1590
1591impl<'a, S> PreferencesBuilder<'a, S>
1592where
1593    S: preferences_state::State,
1594    S::LikeViaRepost: preferences_state::IsUnset,
1595{
1596    /// Set the `likeViaRepost` field (required)
1597    pub fn like_via_repost(
1598        mut self,
1599        value: impl Into<crate::app_bsky::notification::FilterablePreference<'a>>,
1600    ) -> PreferencesBuilder<'a, preferences_state::SetLikeViaRepost<S>> {
1601        self.__unsafe_private_named.3 = ::core::option::Option::Some(value.into());
1602        PreferencesBuilder {
1603            _phantom_state: ::core::marker::PhantomData,
1604            __unsafe_private_named: self.__unsafe_private_named,
1605            _phantom: ::core::marker::PhantomData,
1606        }
1607    }
1608}
1609
1610impl<'a, S> PreferencesBuilder<'a, S>
1611where
1612    S: preferences_state::State,
1613    S::Mention: preferences_state::IsUnset,
1614{
1615    /// Set the `mention` field (required)
1616    pub fn mention(
1617        mut self,
1618        value: impl Into<crate::app_bsky::notification::FilterablePreference<'a>>,
1619    ) -> PreferencesBuilder<'a, preferences_state::SetMention<S>> {
1620        self.__unsafe_private_named.4 = ::core::option::Option::Some(value.into());
1621        PreferencesBuilder {
1622            _phantom_state: ::core::marker::PhantomData,
1623            __unsafe_private_named: self.__unsafe_private_named,
1624            _phantom: ::core::marker::PhantomData,
1625        }
1626    }
1627}
1628
1629impl<'a, S> PreferencesBuilder<'a, S>
1630where
1631    S: preferences_state::State,
1632    S::Quote: preferences_state::IsUnset,
1633{
1634    /// Set the `quote` field (required)
1635    pub fn quote(
1636        mut self,
1637        value: impl Into<crate::app_bsky::notification::FilterablePreference<'a>>,
1638    ) -> PreferencesBuilder<'a, preferences_state::SetQuote<S>> {
1639        self.__unsafe_private_named.5 = ::core::option::Option::Some(value.into());
1640        PreferencesBuilder {
1641            _phantom_state: ::core::marker::PhantomData,
1642            __unsafe_private_named: self.__unsafe_private_named,
1643            _phantom: ::core::marker::PhantomData,
1644        }
1645    }
1646}
1647
1648impl<'a, S> PreferencesBuilder<'a, S>
1649where
1650    S: preferences_state::State,
1651    S::Reply: preferences_state::IsUnset,
1652{
1653    /// Set the `reply` field (required)
1654    pub fn reply(
1655        mut self,
1656        value: impl Into<crate::app_bsky::notification::FilterablePreference<'a>>,
1657    ) -> PreferencesBuilder<'a, preferences_state::SetReply<S>> {
1658        self.__unsafe_private_named.6 = ::core::option::Option::Some(value.into());
1659        PreferencesBuilder {
1660            _phantom_state: ::core::marker::PhantomData,
1661            __unsafe_private_named: self.__unsafe_private_named,
1662            _phantom: ::core::marker::PhantomData,
1663        }
1664    }
1665}
1666
1667impl<'a, S> PreferencesBuilder<'a, S>
1668where
1669    S: preferences_state::State,
1670    S::Repost: preferences_state::IsUnset,
1671{
1672    /// Set the `repost` field (required)
1673    pub fn repost(
1674        mut self,
1675        value: impl Into<crate::app_bsky::notification::FilterablePreference<'a>>,
1676    ) -> PreferencesBuilder<'a, preferences_state::SetRepost<S>> {
1677        self.__unsafe_private_named.7 = ::core::option::Option::Some(value.into());
1678        PreferencesBuilder {
1679            _phantom_state: ::core::marker::PhantomData,
1680            __unsafe_private_named: self.__unsafe_private_named,
1681            _phantom: ::core::marker::PhantomData,
1682        }
1683    }
1684}
1685
1686impl<'a, S> PreferencesBuilder<'a, S>
1687where
1688    S: preferences_state::State,
1689    S::RepostViaRepost: preferences_state::IsUnset,
1690{
1691    /// Set the `repostViaRepost` field (required)
1692    pub fn repost_via_repost(
1693        mut self,
1694        value: impl Into<crate::app_bsky::notification::FilterablePreference<'a>>,
1695    ) -> PreferencesBuilder<'a, preferences_state::SetRepostViaRepost<S>> {
1696        self.__unsafe_private_named.8 = ::core::option::Option::Some(value.into());
1697        PreferencesBuilder {
1698            _phantom_state: ::core::marker::PhantomData,
1699            __unsafe_private_named: self.__unsafe_private_named,
1700            _phantom: ::core::marker::PhantomData,
1701        }
1702    }
1703}
1704
1705impl<'a, S> PreferencesBuilder<'a, S>
1706where
1707    S: preferences_state::State,
1708    S::StarterpackJoined: preferences_state::IsUnset,
1709{
1710    /// Set the `starterpackJoined` field (required)
1711    pub fn starterpack_joined(
1712        mut self,
1713        value: impl Into<crate::app_bsky::notification::Preference<'a>>,
1714    ) -> PreferencesBuilder<'a, preferences_state::SetStarterpackJoined<S>> {
1715        self.__unsafe_private_named.9 = ::core::option::Option::Some(value.into());
1716        PreferencesBuilder {
1717            _phantom_state: ::core::marker::PhantomData,
1718            __unsafe_private_named: self.__unsafe_private_named,
1719            _phantom: ::core::marker::PhantomData,
1720        }
1721    }
1722}
1723
1724impl<'a, S> PreferencesBuilder<'a, S>
1725where
1726    S: preferences_state::State,
1727    S::SubscribedPost: preferences_state::IsUnset,
1728{
1729    /// Set the `subscribedPost` field (required)
1730    pub fn subscribed_post(
1731        mut self,
1732        value: impl Into<crate::app_bsky::notification::Preference<'a>>,
1733    ) -> PreferencesBuilder<'a, preferences_state::SetSubscribedPost<S>> {
1734        self.__unsafe_private_named.10 = ::core::option::Option::Some(value.into());
1735        PreferencesBuilder {
1736            _phantom_state: ::core::marker::PhantomData,
1737            __unsafe_private_named: self.__unsafe_private_named,
1738            _phantom: ::core::marker::PhantomData,
1739        }
1740    }
1741}
1742
1743impl<'a, S> PreferencesBuilder<'a, S>
1744where
1745    S: preferences_state::State,
1746    S::Unverified: preferences_state::IsUnset,
1747{
1748    /// Set the `unverified` field (required)
1749    pub fn unverified(
1750        mut self,
1751        value: impl Into<crate::app_bsky::notification::Preference<'a>>,
1752    ) -> PreferencesBuilder<'a, preferences_state::SetUnverified<S>> {
1753        self.__unsafe_private_named.11 = ::core::option::Option::Some(value.into());
1754        PreferencesBuilder {
1755            _phantom_state: ::core::marker::PhantomData,
1756            __unsafe_private_named: self.__unsafe_private_named,
1757            _phantom: ::core::marker::PhantomData,
1758        }
1759    }
1760}
1761
1762impl<'a, S> PreferencesBuilder<'a, S>
1763where
1764    S: preferences_state::State,
1765    S::Verified: preferences_state::IsUnset,
1766{
1767    /// Set the `verified` field (required)
1768    pub fn verified(
1769        mut self,
1770        value: impl Into<crate::app_bsky::notification::Preference<'a>>,
1771    ) -> PreferencesBuilder<'a, preferences_state::SetVerified<S>> {
1772        self.__unsafe_private_named.12 = ::core::option::Option::Some(value.into());
1773        PreferencesBuilder {
1774            _phantom_state: ::core::marker::PhantomData,
1775            __unsafe_private_named: self.__unsafe_private_named,
1776            _phantom: ::core::marker::PhantomData,
1777        }
1778    }
1779}
1780
1781impl<'a, S> PreferencesBuilder<'a, S>
1782where
1783    S: preferences_state::State,
1784    S::Like: preferences_state::IsSet,
1785    S::Repost: preferences_state::IsSet,
1786    S::Follow: preferences_state::IsSet,
1787    S::Verified: preferences_state::IsSet,
1788    S::Quote: preferences_state::IsSet,
1789    S::Reply: preferences_state::IsSet,
1790    S::StarterpackJoined: preferences_state::IsSet,
1791    S::Unverified: preferences_state::IsSet,
1792    S::Mention: preferences_state::IsSet,
1793    S::RepostViaRepost: preferences_state::IsSet,
1794    S::SubscribedPost: preferences_state::IsSet,
1795    S::Chat: preferences_state::IsSet,
1796    S::LikeViaRepost: preferences_state::IsSet,
1797{
1798    /// Build the final struct
1799    pub fn build(self) -> Preferences<'a> {
1800        Preferences {
1801            chat: self.__unsafe_private_named.0.unwrap(),
1802            follow: self.__unsafe_private_named.1.unwrap(),
1803            like: self.__unsafe_private_named.2.unwrap(),
1804            like_via_repost: self.__unsafe_private_named.3.unwrap(),
1805            mention: self.__unsafe_private_named.4.unwrap(),
1806            quote: self.__unsafe_private_named.5.unwrap(),
1807            reply: self.__unsafe_private_named.6.unwrap(),
1808            repost: self.__unsafe_private_named.7.unwrap(),
1809            repost_via_repost: self.__unsafe_private_named.8.unwrap(),
1810            starterpack_joined: self.__unsafe_private_named.9.unwrap(),
1811            subscribed_post: self.__unsafe_private_named.10.unwrap(),
1812            unverified: self.__unsafe_private_named.11.unwrap(),
1813            verified: self.__unsafe_private_named.12.unwrap(),
1814            extra_data: Default::default(),
1815        }
1816    }
1817    /// Build the final struct with custom extra_data
1818    pub fn build_with_data(
1819        self,
1820        extra_data: std::collections::BTreeMap<
1821            jacquard_common::smol_str::SmolStr,
1822            jacquard_common::types::value::Data<'a>,
1823        >,
1824    ) -> Preferences<'a> {
1825        Preferences {
1826            chat: self.__unsafe_private_named.0.unwrap(),
1827            follow: self.__unsafe_private_named.1.unwrap(),
1828            like: self.__unsafe_private_named.2.unwrap(),
1829            like_via_repost: self.__unsafe_private_named.3.unwrap(),
1830            mention: self.__unsafe_private_named.4.unwrap(),
1831            quote: self.__unsafe_private_named.5.unwrap(),
1832            reply: self.__unsafe_private_named.6.unwrap(),
1833            repost: self.__unsafe_private_named.7.unwrap(),
1834            repost_via_repost: self.__unsafe_private_named.8.unwrap(),
1835            starterpack_joined: self.__unsafe_private_named.9.unwrap(),
1836            subscribed_post: self.__unsafe_private_named.10.unwrap(),
1837            unverified: self.__unsafe_private_named.11.unwrap(),
1838            verified: self.__unsafe_private_named.12.unwrap(),
1839            extra_data: Some(extra_data),
1840        }
1841    }
1842}
1843
1844impl<'a> ::jacquard_lexicon::schema::LexiconSchema for Preferences<'a> {
1845    fn nsid() -> &'static str {
1846        "app.bsky.notification.defs"
1847    }
1848    fn def_name() -> &'static str {
1849        "preferences"
1850    }
1851    fn lexicon_doc() -> ::jacquard_lexicon::lexicon::LexiconDoc<'static> {
1852        lexicon_doc_app_bsky_notification_defs()
1853    }
1854    fn validate(
1855        &self,
1856    ) -> ::std::result::Result<(), ::jacquard_lexicon::validation::ConstraintError> {
1857        Ok(())
1858    }
1859}
1860
1861#[jacquard_derive::lexicon]
1862#[derive(
1863    serde::Serialize,
1864    serde::Deserialize,
1865    Debug,
1866    Clone,
1867    PartialEq,
1868    Eq,
1869    jacquard_derive::IntoStatic,
1870    Default
1871)]
1872#[serde(rename_all = "camelCase")]
1873pub struct RecordDeleted<'a> {}
1874impl<'a> ::jacquard_lexicon::schema::LexiconSchema for RecordDeleted<'a> {
1875    fn nsid() -> &'static str {
1876        "app.bsky.notification.defs"
1877    }
1878    fn def_name() -> &'static str {
1879        "recordDeleted"
1880    }
1881    fn lexicon_doc() -> ::jacquard_lexicon::lexicon::LexiconDoc<'static> {
1882        lexicon_doc_app_bsky_notification_defs()
1883    }
1884    fn validate(
1885        &self,
1886    ) -> ::std::result::Result<(), ::jacquard_lexicon::validation::ConstraintError> {
1887        Ok(())
1888    }
1889}
1890
1891/// Object used to store activity subscription data in stash.
1892#[jacquard_derive::lexicon]
1893#[derive(
1894    serde::Serialize,
1895    serde::Deserialize,
1896    Debug,
1897    Clone,
1898    PartialEq,
1899    Eq,
1900    jacquard_derive::IntoStatic
1901)]
1902#[serde(rename_all = "camelCase")]
1903pub struct SubjectActivitySubscription<'a> {
1904    #[serde(borrow)]
1905    pub activity_subscription: crate::app_bsky::notification::ActivitySubscription<'a>,
1906    #[serde(borrow)]
1907    pub subject: jacquard_common::types::string::Did<'a>,
1908}
1909
1910pub mod subject_activity_subscription_state {
1911
1912    pub use crate::builder_types::{Set, Unset, IsSet, IsUnset};
1913    #[allow(unused)]
1914    use ::core::marker::PhantomData;
1915    mod sealed {
1916        pub trait Sealed {}
1917    }
1918    /// State trait tracking which required fields have been set
1919    pub trait State: sealed::Sealed {
1920        type ActivitySubscription;
1921        type Subject;
1922    }
1923    /// Empty state - all required fields are unset
1924    pub struct Empty(());
1925    impl sealed::Sealed for Empty {}
1926    impl State for Empty {
1927        type ActivitySubscription = Unset;
1928        type Subject = Unset;
1929    }
1930    ///State transition - sets the `activity_subscription` field to Set
1931    pub struct SetActivitySubscription<S: State = Empty>(PhantomData<fn() -> S>);
1932    impl<S: State> sealed::Sealed for SetActivitySubscription<S> {}
1933    impl<S: State> State for SetActivitySubscription<S> {
1934        type ActivitySubscription = Set<members::activity_subscription>;
1935        type Subject = S::Subject;
1936    }
1937    ///State transition - sets the `subject` field to Set
1938    pub struct SetSubject<S: State = Empty>(PhantomData<fn() -> S>);
1939    impl<S: State> sealed::Sealed for SetSubject<S> {}
1940    impl<S: State> State for SetSubject<S> {
1941        type ActivitySubscription = S::ActivitySubscription;
1942        type Subject = Set<members::subject>;
1943    }
1944    /// Marker types for field names
1945    #[allow(non_camel_case_types)]
1946    pub mod members {
1947        ///Marker type for the `activity_subscription` field
1948        pub struct activity_subscription(());
1949        ///Marker type for the `subject` field
1950        pub struct subject(());
1951    }
1952}
1953
1954/// Builder for constructing an instance of this type
1955pub struct SubjectActivitySubscriptionBuilder<
1956    'a,
1957    S: subject_activity_subscription_state::State,
1958> {
1959    _phantom_state: ::core::marker::PhantomData<fn() -> S>,
1960    __unsafe_private_named: (
1961        ::core::option::Option<crate::app_bsky::notification::ActivitySubscription<'a>>,
1962        ::core::option::Option<jacquard_common::types::string::Did<'a>>,
1963    ),
1964    _phantom: ::core::marker::PhantomData<&'a ()>,
1965}
1966
1967impl<'a> SubjectActivitySubscription<'a> {
1968    /// Create a new builder for this type
1969    pub fn new() -> SubjectActivitySubscriptionBuilder<
1970        'a,
1971        subject_activity_subscription_state::Empty,
1972    > {
1973        SubjectActivitySubscriptionBuilder::new()
1974    }
1975}
1976
1977impl<
1978    'a,
1979> SubjectActivitySubscriptionBuilder<'a, subject_activity_subscription_state::Empty> {
1980    /// Create a new builder with all fields unset
1981    pub fn new() -> Self {
1982        SubjectActivitySubscriptionBuilder {
1983            _phantom_state: ::core::marker::PhantomData,
1984            __unsafe_private_named: (None, None),
1985            _phantom: ::core::marker::PhantomData,
1986        }
1987    }
1988}
1989
1990impl<'a, S> SubjectActivitySubscriptionBuilder<'a, S>
1991where
1992    S: subject_activity_subscription_state::State,
1993    S::ActivitySubscription: subject_activity_subscription_state::IsUnset,
1994{
1995    /// Set the `activitySubscription` field (required)
1996    pub fn activity_subscription(
1997        mut self,
1998        value: impl Into<crate::app_bsky::notification::ActivitySubscription<'a>>,
1999    ) -> SubjectActivitySubscriptionBuilder<
2000        'a,
2001        subject_activity_subscription_state::SetActivitySubscription<S>,
2002    > {
2003        self.__unsafe_private_named.0 = ::core::option::Option::Some(value.into());
2004        SubjectActivitySubscriptionBuilder {
2005            _phantom_state: ::core::marker::PhantomData,
2006            __unsafe_private_named: self.__unsafe_private_named,
2007            _phantom: ::core::marker::PhantomData,
2008        }
2009    }
2010}
2011
2012impl<'a, S> SubjectActivitySubscriptionBuilder<'a, S>
2013where
2014    S: subject_activity_subscription_state::State,
2015    S::Subject: subject_activity_subscription_state::IsUnset,
2016{
2017    /// Set the `subject` field (required)
2018    pub fn subject(
2019        mut self,
2020        value: impl Into<jacquard_common::types::string::Did<'a>>,
2021    ) -> SubjectActivitySubscriptionBuilder<
2022        'a,
2023        subject_activity_subscription_state::SetSubject<S>,
2024    > {
2025        self.__unsafe_private_named.1 = ::core::option::Option::Some(value.into());
2026        SubjectActivitySubscriptionBuilder {
2027            _phantom_state: ::core::marker::PhantomData,
2028            __unsafe_private_named: self.__unsafe_private_named,
2029            _phantom: ::core::marker::PhantomData,
2030        }
2031    }
2032}
2033
2034impl<'a, S> SubjectActivitySubscriptionBuilder<'a, S>
2035where
2036    S: subject_activity_subscription_state::State,
2037    S::ActivitySubscription: subject_activity_subscription_state::IsSet,
2038    S::Subject: subject_activity_subscription_state::IsSet,
2039{
2040    /// Build the final struct
2041    pub fn build(self) -> SubjectActivitySubscription<'a> {
2042        SubjectActivitySubscription {
2043            activity_subscription: self.__unsafe_private_named.0.unwrap(),
2044            subject: self.__unsafe_private_named.1.unwrap(),
2045            extra_data: Default::default(),
2046        }
2047    }
2048    /// Build the final struct with custom extra_data
2049    pub fn build_with_data(
2050        self,
2051        extra_data: std::collections::BTreeMap<
2052            jacquard_common::smol_str::SmolStr,
2053            jacquard_common::types::value::Data<'a>,
2054        >,
2055    ) -> SubjectActivitySubscription<'a> {
2056        SubjectActivitySubscription {
2057            activity_subscription: self.__unsafe_private_named.0.unwrap(),
2058            subject: self.__unsafe_private_named.1.unwrap(),
2059            extra_data: Some(extra_data),
2060        }
2061    }
2062}
2063
2064impl<'a> ::jacquard_lexicon::schema::LexiconSchema for SubjectActivitySubscription<'a> {
2065    fn nsid() -> &'static str {
2066        "app.bsky.notification.defs"
2067    }
2068    fn def_name() -> &'static str {
2069        "subjectActivitySubscription"
2070    }
2071    fn lexicon_doc() -> ::jacquard_lexicon::lexicon::LexiconDoc<'static> {
2072        lexicon_doc_app_bsky_notification_defs()
2073    }
2074    fn validate(
2075        &self,
2076    ) -> ::std::result::Result<(), ::jacquard_lexicon::validation::ConstraintError> {
2077        Ok(())
2078    }
2079}