atproto blogging
at main 2259 lines 84 kB view raw
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 Reply; 47 type Post; 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 Reply = Unset; 54 type Post = Unset; 55 } 56 ///State transition - sets the `reply` field to Set 57 pub struct SetReply<S: State = Empty>(PhantomData<fn() -> S>); 58 impl<S: State> sealed::Sealed for SetReply<S> {} 59 impl<S: State> State for SetReply<S> { 60 type Reply = Set<members::reply>; 61 type Post = S::Post; 62 } 63 ///State transition - sets the `post` field to Set 64 pub struct SetPost<S: State = Empty>(PhantomData<fn() -> S>); 65 impl<S: State> sealed::Sealed for SetPost<S> {} 66 impl<S: State> State for SetPost<S> { 67 type Reply = S::Reply; 68 type Post = Set<members::post>; 69 } 70 /// Marker types for field names 71 #[allow(non_camel_case_types)] 72 pub mod members { 73 ///Marker type for the `reply` field 74 pub struct reply(()); 75 ///Marker type for the `post` field 76 pub struct post(()); 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::Reply: activity_subscription_state::IsSet, 147 S::Post: 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 = ::alloc::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 = ::alloc::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 = ::alloc::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 = ::alloc::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 = ::alloc::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 = ::alloc::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 = ::alloc::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 = ::alloc::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 ) -> ::core::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: ChatPreferenceInclude<'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<ChatPreferenceInclude<'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<ChatPreferenceInclude<'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 734#[derive(Debug, Clone, PartialEq, Eq, Hash)] 735pub enum ChatPreferenceInclude<'a> { 736 All, 737 Accepted, 738 Other(jacquard_common::CowStr<'a>), 739} 740 741impl<'a> ChatPreferenceInclude<'a> { 742 pub fn as_str(&self) -> &str { 743 match self { 744 Self::All => "all", 745 Self::Accepted => "accepted", 746 Self::Other(s) => s.as_ref(), 747 } 748 } 749} 750 751impl<'a> From<&'a str> for ChatPreferenceInclude<'a> { 752 fn from(s: &'a str) -> Self { 753 match s { 754 "all" => Self::All, 755 "accepted" => Self::Accepted, 756 _ => Self::Other(jacquard_common::CowStr::from(s)), 757 } 758 } 759} 760 761impl<'a> From<String> for ChatPreferenceInclude<'a> { 762 fn from(s: String) -> Self { 763 match s.as_str() { 764 "all" => Self::All, 765 "accepted" => Self::Accepted, 766 _ => Self::Other(jacquard_common::CowStr::from(s)), 767 } 768 } 769} 770 771impl<'a> core::fmt::Display for ChatPreferenceInclude<'a> { 772 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { 773 write!(f, "{}", self.as_str()) 774 } 775} 776 777impl<'a> AsRef<str> for ChatPreferenceInclude<'a> { 778 fn as_ref(&self) -> &str { 779 self.as_str() 780 } 781} 782 783impl<'a> serde::Serialize for ChatPreferenceInclude<'a> { 784 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error> 785 where 786 S: serde::Serializer, 787 { 788 serializer.serialize_str(self.as_str()) 789 } 790} 791 792impl<'de, 'a> serde::Deserialize<'de> for ChatPreferenceInclude<'a> 793where 794 'de: 'a, 795{ 796 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error> 797 where 798 D: serde::Deserializer<'de>, 799 { 800 let s = <&'de str>::deserialize(deserializer)?; 801 Ok(Self::from(s)) 802 } 803} 804 805impl<'a> Default for ChatPreferenceInclude<'a> { 806 fn default() -> Self { 807 Self::Other(Default::default()) 808 } 809} 810 811impl jacquard_common::IntoStatic for ChatPreferenceInclude<'_> { 812 type Output = ChatPreferenceInclude<'static>; 813 fn into_static(self) -> Self::Output { 814 match self { 815 ChatPreferenceInclude::All => ChatPreferenceInclude::All, 816 ChatPreferenceInclude::Accepted => ChatPreferenceInclude::Accepted, 817 ChatPreferenceInclude::Other(v) => { 818 ChatPreferenceInclude::Other(v.into_static()) 819 } 820 } 821 } 822} 823 824impl<'a> ::jacquard_lexicon::schema::LexiconSchema for ChatPreference<'a> { 825 fn nsid() -> &'static str { 826 "app.bsky.notification.defs" 827 } 828 fn def_name() -> &'static str { 829 "chatPreference" 830 } 831 fn lexicon_doc() -> ::jacquard_lexicon::lexicon::LexiconDoc<'static> { 832 lexicon_doc_app_bsky_notification_defs() 833 } 834 fn validate( 835 &self, 836 ) -> ::core::result::Result<(), ::jacquard_lexicon::validation::ConstraintError> { 837 Ok(()) 838 } 839} 840 841#[jacquard_derive::lexicon] 842#[derive( 843 serde::Serialize, 844 serde::Deserialize, 845 Debug, 846 Clone, 847 PartialEq, 848 Eq, 849 jacquard_derive::IntoStatic 850)] 851#[serde(rename_all = "camelCase")] 852pub struct FilterablePreference<'a> { 853 #[serde(borrow)] 854 pub include: FilterablePreferenceInclude<'a>, 855 pub list: bool, 856 pub push: bool, 857} 858 859pub mod filterable_preference_state { 860 861 pub use crate::builder_types::{Set, Unset, IsSet, IsUnset}; 862 #[allow(unused)] 863 use ::core::marker::PhantomData; 864 mod sealed { 865 pub trait Sealed {} 866 } 867 /// State trait tracking which required fields have been set 868 pub trait State: sealed::Sealed { 869 type List; 870 type Include; 871 type Push; 872 } 873 /// Empty state - all required fields are unset 874 pub struct Empty(()); 875 impl sealed::Sealed for Empty {} 876 impl State for Empty { 877 type List = Unset; 878 type Include = Unset; 879 type Push = Unset; 880 } 881 ///State transition - sets the `list` field to Set 882 pub struct SetList<S: State = Empty>(PhantomData<fn() -> S>); 883 impl<S: State> sealed::Sealed for SetList<S> {} 884 impl<S: State> State for SetList<S> { 885 type List = Set<members::list>; 886 type Include = S::Include; 887 type Push = S::Push; 888 } 889 ///State transition - sets the `include` field to Set 890 pub struct SetInclude<S: State = Empty>(PhantomData<fn() -> S>); 891 impl<S: State> sealed::Sealed for SetInclude<S> {} 892 impl<S: State> State for SetInclude<S> { 893 type List = S::List; 894 type Include = Set<members::include>; 895 type Push = S::Push; 896 } 897 ///State transition - sets the `push` field to Set 898 pub struct SetPush<S: State = Empty>(PhantomData<fn() -> S>); 899 impl<S: State> sealed::Sealed for SetPush<S> {} 900 impl<S: State> State for SetPush<S> { 901 type List = S::List; 902 type Include = S::Include; 903 type Push = Set<members::push>; 904 } 905 /// Marker types for field names 906 #[allow(non_camel_case_types)] 907 pub mod members { 908 ///Marker type for the `list` field 909 pub struct list(()); 910 ///Marker type for the `include` field 911 pub struct include(()); 912 ///Marker type for the `push` field 913 pub struct push(()); 914 } 915} 916 917/// Builder for constructing an instance of this type 918pub struct FilterablePreferenceBuilder<'a, S: filterable_preference_state::State> { 919 _phantom_state: ::core::marker::PhantomData<fn() -> S>, 920 __unsafe_private_named: ( 921 ::core::option::Option<FilterablePreferenceInclude<'a>>, 922 ::core::option::Option<bool>, 923 ::core::option::Option<bool>, 924 ), 925 _phantom: ::core::marker::PhantomData<&'a ()>, 926} 927 928impl<'a> FilterablePreference<'a> { 929 /// Create a new builder for this type 930 pub fn new() -> FilterablePreferenceBuilder<'a, filterable_preference_state::Empty> { 931 FilterablePreferenceBuilder::new() 932 } 933} 934 935impl<'a> FilterablePreferenceBuilder<'a, filterable_preference_state::Empty> { 936 /// Create a new builder with all fields unset 937 pub fn new() -> Self { 938 FilterablePreferenceBuilder { 939 _phantom_state: ::core::marker::PhantomData, 940 __unsafe_private_named: (None, None, None), 941 _phantom: ::core::marker::PhantomData, 942 } 943 } 944} 945 946impl<'a, S> FilterablePreferenceBuilder<'a, S> 947where 948 S: filterable_preference_state::State, 949 S::Include: filterable_preference_state::IsUnset, 950{ 951 /// Set the `include` field (required) 952 pub fn include( 953 mut self, 954 value: impl Into<FilterablePreferenceInclude<'a>>, 955 ) -> FilterablePreferenceBuilder<'a, filterable_preference_state::SetInclude<S>> { 956 self.__unsafe_private_named.0 = ::core::option::Option::Some(value.into()); 957 FilterablePreferenceBuilder { 958 _phantom_state: ::core::marker::PhantomData, 959 __unsafe_private_named: self.__unsafe_private_named, 960 _phantom: ::core::marker::PhantomData, 961 } 962 } 963} 964 965impl<'a, S> FilterablePreferenceBuilder<'a, S> 966where 967 S: filterable_preference_state::State, 968 S::List: filterable_preference_state::IsUnset, 969{ 970 /// Set the `list` field (required) 971 pub fn list( 972 mut self, 973 value: impl Into<bool>, 974 ) -> FilterablePreferenceBuilder<'a, filterable_preference_state::SetList<S>> { 975 self.__unsafe_private_named.1 = ::core::option::Option::Some(value.into()); 976 FilterablePreferenceBuilder { 977 _phantom_state: ::core::marker::PhantomData, 978 __unsafe_private_named: self.__unsafe_private_named, 979 _phantom: ::core::marker::PhantomData, 980 } 981 } 982} 983 984impl<'a, S> FilterablePreferenceBuilder<'a, S> 985where 986 S: filterable_preference_state::State, 987 S::Push: filterable_preference_state::IsUnset, 988{ 989 /// Set the `push` field (required) 990 pub fn push( 991 mut self, 992 value: impl Into<bool>, 993 ) -> FilterablePreferenceBuilder<'a, filterable_preference_state::SetPush<S>> { 994 self.__unsafe_private_named.2 = ::core::option::Option::Some(value.into()); 995 FilterablePreferenceBuilder { 996 _phantom_state: ::core::marker::PhantomData, 997 __unsafe_private_named: self.__unsafe_private_named, 998 _phantom: ::core::marker::PhantomData, 999 } 1000 } 1001} 1002 1003impl<'a, S> FilterablePreferenceBuilder<'a, S> 1004where 1005 S: filterable_preference_state::State, 1006 S::List: filterable_preference_state::IsSet, 1007 S::Include: filterable_preference_state::IsSet, 1008 S::Push: filterable_preference_state::IsSet, 1009{ 1010 /// Build the final struct 1011 pub fn build(self) -> FilterablePreference<'a> { 1012 FilterablePreference { 1013 include: self.__unsafe_private_named.0.unwrap(), 1014 list: self.__unsafe_private_named.1.unwrap(), 1015 push: self.__unsafe_private_named.2.unwrap(), 1016 extra_data: Default::default(), 1017 } 1018 } 1019 /// Build the final struct with custom extra_data 1020 pub fn build_with_data( 1021 self, 1022 extra_data: std::collections::BTreeMap< 1023 jacquard_common::smol_str::SmolStr, 1024 jacquard_common::types::value::Data<'a>, 1025 >, 1026 ) -> FilterablePreference<'a> { 1027 FilterablePreference { 1028 include: self.__unsafe_private_named.0.unwrap(), 1029 list: self.__unsafe_private_named.1.unwrap(), 1030 push: self.__unsafe_private_named.2.unwrap(), 1031 extra_data: Some(extra_data), 1032 } 1033 } 1034} 1035 1036#[derive(Debug, Clone, PartialEq, Eq, Hash)] 1037pub enum FilterablePreferenceInclude<'a> { 1038 All, 1039 Follows, 1040 Other(jacquard_common::CowStr<'a>), 1041} 1042 1043impl<'a> FilterablePreferenceInclude<'a> { 1044 pub fn as_str(&self) -> &str { 1045 match self { 1046 Self::All => "all", 1047 Self::Follows => "follows", 1048 Self::Other(s) => s.as_ref(), 1049 } 1050 } 1051} 1052 1053impl<'a> From<&'a str> for FilterablePreferenceInclude<'a> { 1054 fn from(s: &'a str) -> Self { 1055 match s { 1056 "all" => Self::All, 1057 "follows" => Self::Follows, 1058 _ => Self::Other(jacquard_common::CowStr::from(s)), 1059 } 1060 } 1061} 1062 1063impl<'a> From<String> for FilterablePreferenceInclude<'a> { 1064 fn from(s: String) -> Self { 1065 match s.as_str() { 1066 "all" => Self::All, 1067 "follows" => Self::Follows, 1068 _ => Self::Other(jacquard_common::CowStr::from(s)), 1069 } 1070 } 1071} 1072 1073impl<'a> core::fmt::Display for FilterablePreferenceInclude<'a> { 1074 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { 1075 write!(f, "{}", self.as_str()) 1076 } 1077} 1078 1079impl<'a> AsRef<str> for FilterablePreferenceInclude<'a> { 1080 fn as_ref(&self) -> &str { 1081 self.as_str() 1082 } 1083} 1084 1085impl<'a> serde::Serialize for FilterablePreferenceInclude<'a> { 1086 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error> 1087 where 1088 S: serde::Serializer, 1089 { 1090 serializer.serialize_str(self.as_str()) 1091 } 1092} 1093 1094impl<'de, 'a> serde::Deserialize<'de> for FilterablePreferenceInclude<'a> 1095where 1096 'de: 'a, 1097{ 1098 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error> 1099 where 1100 D: serde::Deserializer<'de>, 1101 { 1102 let s = <&'de str>::deserialize(deserializer)?; 1103 Ok(Self::from(s)) 1104 } 1105} 1106 1107impl<'a> Default for FilterablePreferenceInclude<'a> { 1108 fn default() -> Self { 1109 Self::Other(Default::default()) 1110 } 1111} 1112 1113impl jacquard_common::IntoStatic for FilterablePreferenceInclude<'_> { 1114 type Output = FilterablePreferenceInclude<'static>; 1115 fn into_static(self) -> Self::Output { 1116 match self { 1117 FilterablePreferenceInclude::All => FilterablePreferenceInclude::All, 1118 FilterablePreferenceInclude::Follows => FilterablePreferenceInclude::Follows, 1119 FilterablePreferenceInclude::Other(v) => { 1120 FilterablePreferenceInclude::Other(v.into_static()) 1121 } 1122 } 1123 } 1124} 1125 1126impl<'a> ::jacquard_lexicon::schema::LexiconSchema for FilterablePreference<'a> { 1127 fn nsid() -> &'static str { 1128 "app.bsky.notification.defs" 1129 } 1130 fn def_name() -> &'static str { 1131 "filterablePreference" 1132 } 1133 fn lexicon_doc() -> ::jacquard_lexicon::lexicon::LexiconDoc<'static> { 1134 lexicon_doc_app_bsky_notification_defs() 1135 } 1136 fn validate( 1137 &self, 1138 ) -> ::core::result::Result<(), ::jacquard_lexicon::validation::ConstraintError> { 1139 Ok(()) 1140 } 1141} 1142 1143#[jacquard_derive::lexicon] 1144#[derive( 1145 serde::Serialize, 1146 serde::Deserialize, 1147 Debug, 1148 Clone, 1149 PartialEq, 1150 Eq, 1151 jacquard_derive::IntoStatic 1152)] 1153#[serde(rename_all = "camelCase")] 1154pub struct Preference<'a> { 1155 pub list: bool, 1156 pub push: bool, 1157} 1158 1159pub mod preference_state { 1160 1161 pub use crate::builder_types::{Set, Unset, IsSet, IsUnset}; 1162 #[allow(unused)] 1163 use ::core::marker::PhantomData; 1164 mod sealed { 1165 pub trait Sealed {} 1166 } 1167 /// State trait tracking which required fields have been set 1168 pub trait State: sealed::Sealed { 1169 type Push; 1170 type List; 1171 } 1172 /// Empty state - all required fields are unset 1173 pub struct Empty(()); 1174 impl sealed::Sealed for Empty {} 1175 impl State for Empty { 1176 type Push = Unset; 1177 type List = Unset; 1178 } 1179 ///State transition - sets the `push` field to Set 1180 pub struct SetPush<S: State = Empty>(PhantomData<fn() -> S>); 1181 impl<S: State> sealed::Sealed for SetPush<S> {} 1182 impl<S: State> State for SetPush<S> { 1183 type Push = Set<members::push>; 1184 type List = S::List; 1185 } 1186 ///State transition - sets the `list` field to Set 1187 pub struct SetList<S: State = Empty>(PhantomData<fn() -> S>); 1188 impl<S: State> sealed::Sealed for SetList<S> {} 1189 impl<S: State> State for SetList<S> { 1190 type Push = S::Push; 1191 type List = Set<members::list>; 1192 } 1193 /// Marker types for field names 1194 #[allow(non_camel_case_types)] 1195 pub mod members { 1196 ///Marker type for the `push` field 1197 pub struct push(()); 1198 ///Marker type for the `list` field 1199 pub struct list(()); 1200 } 1201} 1202 1203/// Builder for constructing an instance of this type 1204pub struct PreferenceBuilder<'a, S: preference_state::State> { 1205 _phantom_state: ::core::marker::PhantomData<fn() -> S>, 1206 __unsafe_private_named: (::core::option::Option<bool>, ::core::option::Option<bool>), 1207 _phantom: ::core::marker::PhantomData<&'a ()>, 1208} 1209 1210impl<'a> Preference<'a> { 1211 /// Create a new builder for this type 1212 pub fn new() -> PreferenceBuilder<'a, preference_state::Empty> { 1213 PreferenceBuilder::new() 1214 } 1215} 1216 1217impl<'a> PreferenceBuilder<'a, preference_state::Empty> { 1218 /// Create a new builder with all fields unset 1219 pub fn new() -> Self { 1220 PreferenceBuilder { 1221 _phantom_state: ::core::marker::PhantomData, 1222 __unsafe_private_named: (None, None), 1223 _phantom: ::core::marker::PhantomData, 1224 } 1225 } 1226} 1227 1228impl<'a, S> PreferenceBuilder<'a, S> 1229where 1230 S: preference_state::State, 1231 S::List: preference_state::IsUnset, 1232{ 1233 /// Set the `list` field (required) 1234 pub fn list( 1235 mut self, 1236 value: impl Into<bool>, 1237 ) -> PreferenceBuilder<'a, preference_state::SetList<S>> { 1238 self.__unsafe_private_named.0 = ::core::option::Option::Some(value.into()); 1239 PreferenceBuilder { 1240 _phantom_state: ::core::marker::PhantomData, 1241 __unsafe_private_named: self.__unsafe_private_named, 1242 _phantom: ::core::marker::PhantomData, 1243 } 1244 } 1245} 1246 1247impl<'a, S> PreferenceBuilder<'a, S> 1248where 1249 S: preference_state::State, 1250 S::Push: preference_state::IsUnset, 1251{ 1252 /// Set the `push` field (required) 1253 pub fn push( 1254 mut self, 1255 value: impl Into<bool>, 1256 ) -> PreferenceBuilder<'a, preference_state::SetPush<S>> { 1257 self.__unsafe_private_named.1 = ::core::option::Option::Some(value.into()); 1258 PreferenceBuilder { 1259 _phantom_state: ::core::marker::PhantomData, 1260 __unsafe_private_named: self.__unsafe_private_named, 1261 _phantom: ::core::marker::PhantomData, 1262 } 1263 } 1264} 1265 1266impl<'a, S> PreferenceBuilder<'a, S> 1267where 1268 S: preference_state::State, 1269 S::Push: preference_state::IsSet, 1270 S::List: preference_state::IsSet, 1271{ 1272 /// Build the final struct 1273 pub fn build(self) -> Preference<'a> { 1274 Preference { 1275 list: self.__unsafe_private_named.0.unwrap(), 1276 push: self.__unsafe_private_named.1.unwrap(), 1277 extra_data: Default::default(), 1278 } 1279 } 1280 /// Build the final struct with custom extra_data 1281 pub fn build_with_data( 1282 self, 1283 extra_data: std::collections::BTreeMap< 1284 jacquard_common::smol_str::SmolStr, 1285 jacquard_common::types::value::Data<'a>, 1286 >, 1287 ) -> Preference<'a> { 1288 Preference { 1289 list: self.__unsafe_private_named.0.unwrap(), 1290 push: self.__unsafe_private_named.1.unwrap(), 1291 extra_data: Some(extra_data), 1292 } 1293 } 1294} 1295 1296impl<'a> ::jacquard_lexicon::schema::LexiconSchema for Preference<'a> { 1297 fn nsid() -> &'static str { 1298 "app.bsky.notification.defs" 1299 } 1300 fn def_name() -> &'static str { 1301 "preference" 1302 } 1303 fn lexicon_doc() -> ::jacquard_lexicon::lexicon::LexiconDoc<'static> { 1304 lexicon_doc_app_bsky_notification_defs() 1305 } 1306 fn validate( 1307 &self, 1308 ) -> ::core::result::Result<(), ::jacquard_lexicon::validation::ConstraintError> { 1309 Ok(()) 1310 } 1311} 1312 1313#[jacquard_derive::lexicon] 1314#[derive( 1315 serde::Serialize, 1316 serde::Deserialize, 1317 Debug, 1318 Clone, 1319 PartialEq, 1320 Eq, 1321 jacquard_derive::IntoStatic 1322)] 1323#[serde(rename_all = "camelCase")] 1324pub struct Preferences<'a> { 1325 #[serde(borrow)] 1326 pub chat: crate::app_bsky::notification::ChatPreference<'a>, 1327 #[serde(borrow)] 1328 pub follow: crate::app_bsky::notification::FilterablePreference<'a>, 1329 #[serde(borrow)] 1330 pub like: crate::app_bsky::notification::FilterablePreference<'a>, 1331 #[serde(borrow)] 1332 pub like_via_repost: crate::app_bsky::notification::FilterablePreference<'a>, 1333 #[serde(borrow)] 1334 pub mention: crate::app_bsky::notification::FilterablePreference<'a>, 1335 #[serde(borrow)] 1336 pub quote: crate::app_bsky::notification::FilterablePreference<'a>, 1337 #[serde(borrow)] 1338 pub reply: crate::app_bsky::notification::FilterablePreference<'a>, 1339 #[serde(borrow)] 1340 pub repost: crate::app_bsky::notification::FilterablePreference<'a>, 1341 #[serde(borrow)] 1342 pub repost_via_repost: crate::app_bsky::notification::FilterablePreference<'a>, 1343 #[serde(borrow)] 1344 pub starterpack_joined: crate::app_bsky::notification::Preference<'a>, 1345 #[serde(borrow)] 1346 pub subscribed_post: crate::app_bsky::notification::Preference<'a>, 1347 #[serde(borrow)] 1348 pub unverified: crate::app_bsky::notification::Preference<'a>, 1349 #[serde(borrow)] 1350 pub verified: crate::app_bsky::notification::Preference<'a>, 1351} 1352 1353pub mod preferences_state { 1354 1355 pub use crate::builder_types::{Set, Unset, IsSet, IsUnset}; 1356 #[allow(unused)] 1357 use ::core::marker::PhantomData; 1358 mod sealed { 1359 pub trait Sealed {} 1360 } 1361 /// State trait tracking which required fields have been set 1362 pub trait State: sealed::Sealed { 1363 type LikeViaRepost; 1364 type Quote; 1365 type Verified; 1366 type Chat; 1367 type Reply; 1368 type Repost; 1369 type Follow; 1370 type Like; 1371 type StarterpackJoined; 1372 type Unverified; 1373 type Mention; 1374 type RepostViaRepost; 1375 type SubscribedPost; 1376 } 1377 /// Empty state - all required fields are unset 1378 pub struct Empty(()); 1379 impl sealed::Sealed for Empty {} 1380 impl State for Empty { 1381 type LikeViaRepost = Unset; 1382 type Quote = Unset; 1383 type Verified = Unset; 1384 type Chat = Unset; 1385 type Reply = Unset; 1386 type Repost = Unset; 1387 type Follow = Unset; 1388 type Like = Unset; 1389 type StarterpackJoined = Unset; 1390 type Unverified = Unset; 1391 type Mention = Unset; 1392 type RepostViaRepost = Unset; 1393 type SubscribedPost = Unset; 1394 } 1395 ///State transition - sets the `like_via_repost` field to Set 1396 pub struct SetLikeViaRepost<S: State = Empty>(PhantomData<fn() -> S>); 1397 impl<S: State> sealed::Sealed for SetLikeViaRepost<S> {} 1398 impl<S: State> State for SetLikeViaRepost<S> { 1399 type LikeViaRepost = Set<members::like_via_repost>; 1400 type Quote = S::Quote; 1401 type Verified = S::Verified; 1402 type Chat = S::Chat; 1403 type Reply = S::Reply; 1404 type Repost = S::Repost; 1405 type Follow = S::Follow; 1406 type Like = S::Like; 1407 type StarterpackJoined = S::StarterpackJoined; 1408 type Unverified = S::Unverified; 1409 type Mention = S::Mention; 1410 type RepostViaRepost = S::RepostViaRepost; 1411 type SubscribedPost = S::SubscribedPost; 1412 } 1413 ///State transition - sets the `quote` field to Set 1414 pub struct SetQuote<S: State = Empty>(PhantomData<fn() -> S>); 1415 impl<S: State> sealed::Sealed for SetQuote<S> {} 1416 impl<S: State> State for SetQuote<S> { 1417 type LikeViaRepost = S::LikeViaRepost; 1418 type Quote = Set<members::quote>; 1419 type Verified = S::Verified; 1420 type Chat = S::Chat; 1421 type Reply = S::Reply; 1422 type Repost = S::Repost; 1423 type Follow = S::Follow; 1424 type Like = S::Like; 1425 type StarterpackJoined = S::StarterpackJoined; 1426 type Unverified = S::Unverified; 1427 type Mention = S::Mention; 1428 type RepostViaRepost = S::RepostViaRepost; 1429 type SubscribedPost = S::SubscribedPost; 1430 } 1431 ///State transition - sets the `verified` field to Set 1432 pub struct SetVerified<S: State = Empty>(PhantomData<fn() -> S>); 1433 impl<S: State> sealed::Sealed for SetVerified<S> {} 1434 impl<S: State> State for SetVerified<S> { 1435 type LikeViaRepost = S::LikeViaRepost; 1436 type Quote = S::Quote; 1437 type Verified = Set<members::verified>; 1438 type Chat = S::Chat; 1439 type Reply = S::Reply; 1440 type Repost = S::Repost; 1441 type Follow = S::Follow; 1442 type Like = S::Like; 1443 type StarterpackJoined = S::StarterpackJoined; 1444 type Unverified = S::Unverified; 1445 type Mention = S::Mention; 1446 type RepostViaRepost = S::RepostViaRepost; 1447 type SubscribedPost = S::SubscribedPost; 1448 } 1449 ///State transition - sets the `chat` field to Set 1450 pub struct SetChat<S: State = Empty>(PhantomData<fn() -> S>); 1451 impl<S: State> sealed::Sealed for SetChat<S> {} 1452 impl<S: State> State for SetChat<S> { 1453 type LikeViaRepost = S::LikeViaRepost; 1454 type Quote = S::Quote; 1455 type Verified = S::Verified; 1456 type Chat = Set<members::chat>; 1457 type Reply = S::Reply; 1458 type Repost = S::Repost; 1459 type Follow = S::Follow; 1460 type Like = S::Like; 1461 type StarterpackJoined = S::StarterpackJoined; 1462 type Unverified = S::Unverified; 1463 type Mention = S::Mention; 1464 type RepostViaRepost = S::RepostViaRepost; 1465 type SubscribedPost = S::SubscribedPost; 1466 } 1467 ///State transition - sets the `reply` field to Set 1468 pub struct SetReply<S: State = Empty>(PhantomData<fn() -> S>); 1469 impl<S: State> sealed::Sealed for SetReply<S> {} 1470 impl<S: State> State for SetReply<S> { 1471 type LikeViaRepost = S::LikeViaRepost; 1472 type Quote = S::Quote; 1473 type Verified = S::Verified; 1474 type Chat = S::Chat; 1475 type Reply = Set<members::reply>; 1476 type Repost = S::Repost; 1477 type Follow = S::Follow; 1478 type Like = S::Like; 1479 type StarterpackJoined = S::StarterpackJoined; 1480 type Unverified = S::Unverified; 1481 type Mention = S::Mention; 1482 type RepostViaRepost = S::RepostViaRepost; 1483 type SubscribedPost = S::SubscribedPost; 1484 } 1485 ///State transition - sets the `repost` field to Set 1486 pub struct SetRepost<S: State = Empty>(PhantomData<fn() -> S>); 1487 impl<S: State> sealed::Sealed for SetRepost<S> {} 1488 impl<S: State> State for SetRepost<S> { 1489 type LikeViaRepost = S::LikeViaRepost; 1490 type Quote = S::Quote; 1491 type Verified = S::Verified; 1492 type Chat = S::Chat; 1493 type Reply = S::Reply; 1494 type Repost = Set<members::repost>; 1495 type Follow = S::Follow; 1496 type Like = S::Like; 1497 type StarterpackJoined = S::StarterpackJoined; 1498 type Unverified = S::Unverified; 1499 type Mention = S::Mention; 1500 type RepostViaRepost = S::RepostViaRepost; 1501 type SubscribedPost = S::SubscribedPost; 1502 } 1503 ///State transition - sets the `follow` field to Set 1504 pub struct SetFollow<S: State = Empty>(PhantomData<fn() -> S>); 1505 impl<S: State> sealed::Sealed for SetFollow<S> {} 1506 impl<S: State> State for SetFollow<S> { 1507 type LikeViaRepost = S::LikeViaRepost; 1508 type Quote = S::Quote; 1509 type Verified = S::Verified; 1510 type Chat = S::Chat; 1511 type Reply = S::Reply; 1512 type Repost = S::Repost; 1513 type Follow = Set<members::follow>; 1514 type Like = S::Like; 1515 type StarterpackJoined = S::StarterpackJoined; 1516 type Unverified = S::Unverified; 1517 type Mention = S::Mention; 1518 type RepostViaRepost = S::RepostViaRepost; 1519 type SubscribedPost = S::SubscribedPost; 1520 } 1521 ///State transition - sets the `like` field to Set 1522 pub struct SetLike<S: State = Empty>(PhantomData<fn() -> S>); 1523 impl<S: State> sealed::Sealed for SetLike<S> {} 1524 impl<S: State> State for SetLike<S> { 1525 type LikeViaRepost = S::LikeViaRepost; 1526 type Quote = S::Quote; 1527 type Verified = S::Verified; 1528 type Chat = S::Chat; 1529 type Reply = S::Reply; 1530 type Repost = S::Repost; 1531 type Follow = S::Follow; 1532 type Like = Set<members::like>; 1533 type StarterpackJoined = S::StarterpackJoined; 1534 type Unverified = S::Unverified; 1535 type Mention = S::Mention; 1536 type RepostViaRepost = S::RepostViaRepost; 1537 type SubscribedPost = S::SubscribedPost; 1538 } 1539 ///State transition - sets the `starterpack_joined` field to Set 1540 pub struct SetStarterpackJoined<S: State = Empty>(PhantomData<fn() -> S>); 1541 impl<S: State> sealed::Sealed for SetStarterpackJoined<S> {} 1542 impl<S: State> State for SetStarterpackJoined<S> { 1543 type LikeViaRepost = S::LikeViaRepost; 1544 type Quote = S::Quote; 1545 type Verified = S::Verified; 1546 type Chat = S::Chat; 1547 type Reply = S::Reply; 1548 type Repost = S::Repost; 1549 type Follow = S::Follow; 1550 type Like = S::Like; 1551 type StarterpackJoined = Set<members::starterpack_joined>; 1552 type Unverified = S::Unverified; 1553 type Mention = S::Mention; 1554 type RepostViaRepost = S::RepostViaRepost; 1555 type SubscribedPost = S::SubscribedPost; 1556 } 1557 ///State transition - sets the `unverified` field to Set 1558 pub struct SetUnverified<S: State = Empty>(PhantomData<fn() -> S>); 1559 impl<S: State> sealed::Sealed for SetUnverified<S> {} 1560 impl<S: State> State for SetUnverified<S> { 1561 type LikeViaRepost = S::LikeViaRepost; 1562 type Quote = S::Quote; 1563 type Verified = S::Verified; 1564 type Chat = S::Chat; 1565 type Reply = S::Reply; 1566 type Repost = S::Repost; 1567 type Follow = S::Follow; 1568 type Like = S::Like; 1569 type StarterpackJoined = S::StarterpackJoined; 1570 type Unverified = Set<members::unverified>; 1571 type Mention = S::Mention; 1572 type RepostViaRepost = S::RepostViaRepost; 1573 type SubscribedPost = S::SubscribedPost; 1574 } 1575 ///State transition - sets the `mention` field to Set 1576 pub struct SetMention<S: State = Empty>(PhantomData<fn() -> S>); 1577 impl<S: State> sealed::Sealed for SetMention<S> {} 1578 impl<S: State> State for SetMention<S> { 1579 type LikeViaRepost = S::LikeViaRepost; 1580 type Quote = S::Quote; 1581 type Verified = S::Verified; 1582 type Chat = S::Chat; 1583 type Reply = S::Reply; 1584 type Repost = S::Repost; 1585 type Follow = S::Follow; 1586 type Like = S::Like; 1587 type StarterpackJoined = S::StarterpackJoined; 1588 type Unverified = S::Unverified; 1589 type Mention = Set<members::mention>; 1590 type RepostViaRepost = S::RepostViaRepost; 1591 type SubscribedPost = S::SubscribedPost; 1592 } 1593 ///State transition - sets the `repost_via_repost` field to Set 1594 pub struct SetRepostViaRepost<S: State = Empty>(PhantomData<fn() -> S>); 1595 impl<S: State> sealed::Sealed for SetRepostViaRepost<S> {} 1596 impl<S: State> State for SetRepostViaRepost<S> { 1597 type LikeViaRepost = S::LikeViaRepost; 1598 type Quote = S::Quote; 1599 type Verified = S::Verified; 1600 type Chat = S::Chat; 1601 type Reply = S::Reply; 1602 type Repost = S::Repost; 1603 type Follow = S::Follow; 1604 type Like = S::Like; 1605 type StarterpackJoined = S::StarterpackJoined; 1606 type Unverified = S::Unverified; 1607 type Mention = S::Mention; 1608 type RepostViaRepost = Set<members::repost_via_repost>; 1609 type SubscribedPost = S::SubscribedPost; 1610 } 1611 ///State transition - sets the `subscribed_post` field to Set 1612 pub struct SetSubscribedPost<S: State = Empty>(PhantomData<fn() -> S>); 1613 impl<S: State> sealed::Sealed for SetSubscribedPost<S> {} 1614 impl<S: State> State for SetSubscribedPost<S> { 1615 type LikeViaRepost = S::LikeViaRepost; 1616 type Quote = S::Quote; 1617 type Verified = S::Verified; 1618 type Chat = S::Chat; 1619 type Reply = S::Reply; 1620 type Repost = S::Repost; 1621 type Follow = S::Follow; 1622 type Like = S::Like; 1623 type StarterpackJoined = S::StarterpackJoined; 1624 type Unverified = S::Unverified; 1625 type Mention = S::Mention; 1626 type RepostViaRepost = S::RepostViaRepost; 1627 type SubscribedPost = Set<members::subscribed_post>; 1628 } 1629 /// Marker types for field names 1630 #[allow(non_camel_case_types)] 1631 pub mod members { 1632 ///Marker type for the `like_via_repost` field 1633 pub struct like_via_repost(()); 1634 ///Marker type for the `quote` field 1635 pub struct quote(()); 1636 ///Marker type for the `verified` field 1637 pub struct verified(()); 1638 ///Marker type for the `chat` field 1639 pub struct chat(()); 1640 ///Marker type for the `reply` field 1641 pub struct reply(()); 1642 ///Marker type for the `repost` field 1643 pub struct repost(()); 1644 ///Marker type for the `follow` field 1645 pub struct follow(()); 1646 ///Marker type for the `like` field 1647 pub struct like(()); 1648 ///Marker type for the `starterpack_joined` field 1649 pub struct starterpack_joined(()); 1650 ///Marker type for the `unverified` field 1651 pub struct unverified(()); 1652 ///Marker type for the `mention` field 1653 pub struct mention(()); 1654 ///Marker type for the `repost_via_repost` field 1655 pub struct repost_via_repost(()); 1656 ///Marker type for the `subscribed_post` field 1657 pub struct subscribed_post(()); 1658 } 1659} 1660 1661/// Builder for constructing an instance of this type 1662pub struct PreferencesBuilder<'a, S: preferences_state::State> { 1663 _phantom_state: ::core::marker::PhantomData<fn() -> S>, 1664 __unsafe_private_named: ( 1665 ::core::option::Option<crate::app_bsky::notification::ChatPreference<'a>>, 1666 ::core::option::Option<crate::app_bsky::notification::FilterablePreference<'a>>, 1667 ::core::option::Option<crate::app_bsky::notification::FilterablePreference<'a>>, 1668 ::core::option::Option<crate::app_bsky::notification::FilterablePreference<'a>>, 1669 ::core::option::Option<crate::app_bsky::notification::FilterablePreference<'a>>, 1670 ::core::option::Option<crate::app_bsky::notification::FilterablePreference<'a>>, 1671 ::core::option::Option<crate::app_bsky::notification::FilterablePreference<'a>>, 1672 ::core::option::Option<crate::app_bsky::notification::FilterablePreference<'a>>, 1673 ::core::option::Option<crate::app_bsky::notification::FilterablePreference<'a>>, 1674 ::core::option::Option<crate::app_bsky::notification::Preference<'a>>, 1675 ::core::option::Option<crate::app_bsky::notification::Preference<'a>>, 1676 ::core::option::Option<crate::app_bsky::notification::Preference<'a>>, 1677 ::core::option::Option<crate::app_bsky::notification::Preference<'a>>, 1678 ), 1679 _phantom: ::core::marker::PhantomData<&'a ()>, 1680} 1681 1682impl<'a> Preferences<'a> { 1683 /// Create a new builder for this type 1684 pub fn new() -> PreferencesBuilder<'a, preferences_state::Empty> { 1685 PreferencesBuilder::new() 1686 } 1687} 1688 1689impl<'a> PreferencesBuilder<'a, preferences_state::Empty> { 1690 /// Create a new builder with all fields unset 1691 pub fn new() -> Self { 1692 PreferencesBuilder { 1693 _phantom_state: ::core::marker::PhantomData, 1694 __unsafe_private_named: ( 1695 None, 1696 None, 1697 None, 1698 None, 1699 None, 1700 None, 1701 None, 1702 None, 1703 None, 1704 None, 1705 None, 1706 None, 1707 None, 1708 ), 1709 _phantom: ::core::marker::PhantomData, 1710 } 1711 } 1712} 1713 1714impl<'a, S> PreferencesBuilder<'a, S> 1715where 1716 S: preferences_state::State, 1717 S::Chat: preferences_state::IsUnset, 1718{ 1719 /// Set the `chat` field (required) 1720 pub fn chat( 1721 mut self, 1722 value: impl Into<crate::app_bsky::notification::ChatPreference<'a>>, 1723 ) -> PreferencesBuilder<'a, preferences_state::SetChat<S>> { 1724 self.__unsafe_private_named.0 = ::core::option::Option::Some(value.into()); 1725 PreferencesBuilder { 1726 _phantom_state: ::core::marker::PhantomData, 1727 __unsafe_private_named: self.__unsafe_private_named, 1728 _phantom: ::core::marker::PhantomData, 1729 } 1730 } 1731} 1732 1733impl<'a, S> PreferencesBuilder<'a, S> 1734where 1735 S: preferences_state::State, 1736 S::Follow: preferences_state::IsUnset, 1737{ 1738 /// Set the `follow` field (required) 1739 pub fn follow( 1740 mut self, 1741 value: impl Into<crate::app_bsky::notification::FilterablePreference<'a>>, 1742 ) -> PreferencesBuilder<'a, preferences_state::SetFollow<S>> { 1743 self.__unsafe_private_named.1 = ::core::option::Option::Some(value.into()); 1744 PreferencesBuilder { 1745 _phantom_state: ::core::marker::PhantomData, 1746 __unsafe_private_named: self.__unsafe_private_named, 1747 _phantom: ::core::marker::PhantomData, 1748 } 1749 } 1750} 1751 1752impl<'a, S> PreferencesBuilder<'a, S> 1753where 1754 S: preferences_state::State, 1755 S::Like: preferences_state::IsUnset, 1756{ 1757 /// Set the `like` field (required) 1758 pub fn like( 1759 mut self, 1760 value: impl Into<crate::app_bsky::notification::FilterablePreference<'a>>, 1761 ) -> PreferencesBuilder<'a, preferences_state::SetLike<S>> { 1762 self.__unsafe_private_named.2 = ::core::option::Option::Some(value.into()); 1763 PreferencesBuilder { 1764 _phantom_state: ::core::marker::PhantomData, 1765 __unsafe_private_named: self.__unsafe_private_named, 1766 _phantom: ::core::marker::PhantomData, 1767 } 1768 } 1769} 1770 1771impl<'a, S> PreferencesBuilder<'a, S> 1772where 1773 S: preferences_state::State, 1774 S::LikeViaRepost: preferences_state::IsUnset, 1775{ 1776 /// Set the `likeViaRepost` field (required) 1777 pub fn like_via_repost( 1778 mut self, 1779 value: impl Into<crate::app_bsky::notification::FilterablePreference<'a>>, 1780 ) -> PreferencesBuilder<'a, preferences_state::SetLikeViaRepost<S>> { 1781 self.__unsafe_private_named.3 = ::core::option::Option::Some(value.into()); 1782 PreferencesBuilder { 1783 _phantom_state: ::core::marker::PhantomData, 1784 __unsafe_private_named: self.__unsafe_private_named, 1785 _phantom: ::core::marker::PhantomData, 1786 } 1787 } 1788} 1789 1790impl<'a, S> PreferencesBuilder<'a, S> 1791where 1792 S: preferences_state::State, 1793 S::Mention: preferences_state::IsUnset, 1794{ 1795 /// Set the `mention` field (required) 1796 pub fn mention( 1797 mut self, 1798 value: impl Into<crate::app_bsky::notification::FilterablePreference<'a>>, 1799 ) -> PreferencesBuilder<'a, preferences_state::SetMention<S>> { 1800 self.__unsafe_private_named.4 = ::core::option::Option::Some(value.into()); 1801 PreferencesBuilder { 1802 _phantom_state: ::core::marker::PhantomData, 1803 __unsafe_private_named: self.__unsafe_private_named, 1804 _phantom: ::core::marker::PhantomData, 1805 } 1806 } 1807} 1808 1809impl<'a, S> PreferencesBuilder<'a, S> 1810where 1811 S: preferences_state::State, 1812 S::Quote: preferences_state::IsUnset, 1813{ 1814 /// Set the `quote` field (required) 1815 pub fn quote( 1816 mut self, 1817 value: impl Into<crate::app_bsky::notification::FilterablePreference<'a>>, 1818 ) -> PreferencesBuilder<'a, preferences_state::SetQuote<S>> { 1819 self.__unsafe_private_named.5 = ::core::option::Option::Some(value.into()); 1820 PreferencesBuilder { 1821 _phantom_state: ::core::marker::PhantomData, 1822 __unsafe_private_named: self.__unsafe_private_named, 1823 _phantom: ::core::marker::PhantomData, 1824 } 1825 } 1826} 1827 1828impl<'a, S> PreferencesBuilder<'a, S> 1829where 1830 S: preferences_state::State, 1831 S::Reply: preferences_state::IsUnset, 1832{ 1833 /// Set the `reply` field (required) 1834 pub fn reply( 1835 mut self, 1836 value: impl Into<crate::app_bsky::notification::FilterablePreference<'a>>, 1837 ) -> PreferencesBuilder<'a, preferences_state::SetReply<S>> { 1838 self.__unsafe_private_named.6 = ::core::option::Option::Some(value.into()); 1839 PreferencesBuilder { 1840 _phantom_state: ::core::marker::PhantomData, 1841 __unsafe_private_named: self.__unsafe_private_named, 1842 _phantom: ::core::marker::PhantomData, 1843 } 1844 } 1845} 1846 1847impl<'a, S> PreferencesBuilder<'a, S> 1848where 1849 S: preferences_state::State, 1850 S::Repost: preferences_state::IsUnset, 1851{ 1852 /// Set the `repost` field (required) 1853 pub fn repost( 1854 mut self, 1855 value: impl Into<crate::app_bsky::notification::FilterablePreference<'a>>, 1856 ) -> PreferencesBuilder<'a, preferences_state::SetRepost<S>> { 1857 self.__unsafe_private_named.7 = ::core::option::Option::Some(value.into()); 1858 PreferencesBuilder { 1859 _phantom_state: ::core::marker::PhantomData, 1860 __unsafe_private_named: self.__unsafe_private_named, 1861 _phantom: ::core::marker::PhantomData, 1862 } 1863 } 1864} 1865 1866impl<'a, S> PreferencesBuilder<'a, S> 1867where 1868 S: preferences_state::State, 1869 S::RepostViaRepost: preferences_state::IsUnset, 1870{ 1871 /// Set the `repostViaRepost` field (required) 1872 pub fn repost_via_repost( 1873 mut self, 1874 value: impl Into<crate::app_bsky::notification::FilterablePreference<'a>>, 1875 ) -> PreferencesBuilder<'a, preferences_state::SetRepostViaRepost<S>> { 1876 self.__unsafe_private_named.8 = ::core::option::Option::Some(value.into()); 1877 PreferencesBuilder { 1878 _phantom_state: ::core::marker::PhantomData, 1879 __unsafe_private_named: self.__unsafe_private_named, 1880 _phantom: ::core::marker::PhantomData, 1881 } 1882 } 1883} 1884 1885impl<'a, S> PreferencesBuilder<'a, S> 1886where 1887 S: preferences_state::State, 1888 S::StarterpackJoined: preferences_state::IsUnset, 1889{ 1890 /// Set the `starterpackJoined` field (required) 1891 pub fn starterpack_joined( 1892 mut self, 1893 value: impl Into<crate::app_bsky::notification::Preference<'a>>, 1894 ) -> PreferencesBuilder<'a, preferences_state::SetStarterpackJoined<S>> { 1895 self.__unsafe_private_named.9 = ::core::option::Option::Some(value.into()); 1896 PreferencesBuilder { 1897 _phantom_state: ::core::marker::PhantomData, 1898 __unsafe_private_named: self.__unsafe_private_named, 1899 _phantom: ::core::marker::PhantomData, 1900 } 1901 } 1902} 1903 1904impl<'a, S> PreferencesBuilder<'a, S> 1905where 1906 S: preferences_state::State, 1907 S::SubscribedPost: preferences_state::IsUnset, 1908{ 1909 /// Set the `subscribedPost` field (required) 1910 pub fn subscribed_post( 1911 mut self, 1912 value: impl Into<crate::app_bsky::notification::Preference<'a>>, 1913 ) -> PreferencesBuilder<'a, preferences_state::SetSubscribedPost<S>> { 1914 self.__unsafe_private_named.10 = ::core::option::Option::Some(value.into()); 1915 PreferencesBuilder { 1916 _phantom_state: ::core::marker::PhantomData, 1917 __unsafe_private_named: self.__unsafe_private_named, 1918 _phantom: ::core::marker::PhantomData, 1919 } 1920 } 1921} 1922 1923impl<'a, S> PreferencesBuilder<'a, S> 1924where 1925 S: preferences_state::State, 1926 S::Unverified: preferences_state::IsUnset, 1927{ 1928 /// Set the `unverified` field (required) 1929 pub fn unverified( 1930 mut self, 1931 value: impl Into<crate::app_bsky::notification::Preference<'a>>, 1932 ) -> PreferencesBuilder<'a, preferences_state::SetUnverified<S>> { 1933 self.__unsafe_private_named.11 = ::core::option::Option::Some(value.into()); 1934 PreferencesBuilder { 1935 _phantom_state: ::core::marker::PhantomData, 1936 __unsafe_private_named: self.__unsafe_private_named, 1937 _phantom: ::core::marker::PhantomData, 1938 } 1939 } 1940} 1941 1942impl<'a, S> PreferencesBuilder<'a, S> 1943where 1944 S: preferences_state::State, 1945 S::Verified: preferences_state::IsUnset, 1946{ 1947 /// Set the `verified` field (required) 1948 pub fn verified( 1949 mut self, 1950 value: impl Into<crate::app_bsky::notification::Preference<'a>>, 1951 ) -> PreferencesBuilder<'a, preferences_state::SetVerified<S>> { 1952 self.__unsafe_private_named.12 = ::core::option::Option::Some(value.into()); 1953 PreferencesBuilder { 1954 _phantom_state: ::core::marker::PhantomData, 1955 __unsafe_private_named: self.__unsafe_private_named, 1956 _phantom: ::core::marker::PhantomData, 1957 } 1958 } 1959} 1960 1961impl<'a, S> PreferencesBuilder<'a, S> 1962where 1963 S: preferences_state::State, 1964 S::LikeViaRepost: preferences_state::IsSet, 1965 S::Quote: preferences_state::IsSet, 1966 S::Verified: preferences_state::IsSet, 1967 S::Chat: preferences_state::IsSet, 1968 S::Reply: preferences_state::IsSet, 1969 S::Repost: preferences_state::IsSet, 1970 S::Follow: preferences_state::IsSet, 1971 S::Like: preferences_state::IsSet, 1972 S::StarterpackJoined: preferences_state::IsSet, 1973 S::Unverified: preferences_state::IsSet, 1974 S::Mention: preferences_state::IsSet, 1975 S::RepostViaRepost: preferences_state::IsSet, 1976 S::SubscribedPost: preferences_state::IsSet, 1977{ 1978 /// Build the final struct 1979 pub fn build(self) -> Preferences<'a> { 1980 Preferences { 1981 chat: self.__unsafe_private_named.0.unwrap(), 1982 follow: self.__unsafe_private_named.1.unwrap(), 1983 like: self.__unsafe_private_named.2.unwrap(), 1984 like_via_repost: self.__unsafe_private_named.3.unwrap(), 1985 mention: self.__unsafe_private_named.4.unwrap(), 1986 quote: self.__unsafe_private_named.5.unwrap(), 1987 reply: self.__unsafe_private_named.6.unwrap(), 1988 repost: self.__unsafe_private_named.7.unwrap(), 1989 repost_via_repost: self.__unsafe_private_named.8.unwrap(), 1990 starterpack_joined: self.__unsafe_private_named.9.unwrap(), 1991 subscribed_post: self.__unsafe_private_named.10.unwrap(), 1992 unverified: self.__unsafe_private_named.11.unwrap(), 1993 verified: self.__unsafe_private_named.12.unwrap(), 1994 extra_data: Default::default(), 1995 } 1996 } 1997 /// Build the final struct with custom extra_data 1998 pub fn build_with_data( 1999 self, 2000 extra_data: std::collections::BTreeMap< 2001 jacquard_common::smol_str::SmolStr, 2002 jacquard_common::types::value::Data<'a>, 2003 >, 2004 ) -> Preferences<'a> { 2005 Preferences { 2006 chat: self.__unsafe_private_named.0.unwrap(), 2007 follow: self.__unsafe_private_named.1.unwrap(), 2008 like: self.__unsafe_private_named.2.unwrap(), 2009 like_via_repost: self.__unsafe_private_named.3.unwrap(), 2010 mention: self.__unsafe_private_named.4.unwrap(), 2011 quote: self.__unsafe_private_named.5.unwrap(), 2012 reply: self.__unsafe_private_named.6.unwrap(), 2013 repost: self.__unsafe_private_named.7.unwrap(), 2014 repost_via_repost: self.__unsafe_private_named.8.unwrap(), 2015 starterpack_joined: self.__unsafe_private_named.9.unwrap(), 2016 subscribed_post: self.__unsafe_private_named.10.unwrap(), 2017 unverified: self.__unsafe_private_named.11.unwrap(), 2018 verified: self.__unsafe_private_named.12.unwrap(), 2019 extra_data: Some(extra_data), 2020 } 2021 } 2022} 2023 2024impl<'a> ::jacquard_lexicon::schema::LexiconSchema for Preferences<'a> { 2025 fn nsid() -> &'static str { 2026 "app.bsky.notification.defs" 2027 } 2028 fn def_name() -> &'static str { 2029 "preferences" 2030 } 2031 fn lexicon_doc() -> ::jacquard_lexicon::lexicon::LexiconDoc<'static> { 2032 lexicon_doc_app_bsky_notification_defs() 2033 } 2034 fn validate( 2035 &self, 2036 ) -> ::core::result::Result<(), ::jacquard_lexicon::validation::ConstraintError> { 2037 Ok(()) 2038 } 2039} 2040 2041#[jacquard_derive::lexicon] 2042#[derive( 2043 serde::Serialize, 2044 serde::Deserialize, 2045 Debug, 2046 Clone, 2047 PartialEq, 2048 Eq, 2049 jacquard_derive::IntoStatic, 2050 Default 2051)] 2052#[serde(rename_all = "camelCase")] 2053pub struct RecordDeleted<'a> {} 2054impl<'a> ::jacquard_lexicon::schema::LexiconSchema for RecordDeleted<'a> { 2055 fn nsid() -> &'static str { 2056 "app.bsky.notification.defs" 2057 } 2058 fn def_name() -> &'static str { 2059 "recordDeleted" 2060 } 2061 fn lexicon_doc() -> ::jacquard_lexicon::lexicon::LexiconDoc<'static> { 2062 lexicon_doc_app_bsky_notification_defs() 2063 } 2064 fn validate( 2065 &self, 2066 ) -> ::core::result::Result<(), ::jacquard_lexicon::validation::ConstraintError> { 2067 Ok(()) 2068 } 2069} 2070 2071/// Object used to store activity subscription data in stash. 2072#[jacquard_derive::lexicon] 2073#[derive( 2074 serde::Serialize, 2075 serde::Deserialize, 2076 Debug, 2077 Clone, 2078 PartialEq, 2079 Eq, 2080 jacquard_derive::IntoStatic 2081)] 2082#[serde(rename_all = "camelCase")] 2083pub struct SubjectActivitySubscription<'a> { 2084 #[serde(borrow)] 2085 pub activity_subscription: crate::app_bsky::notification::ActivitySubscription<'a>, 2086 #[serde(borrow)] 2087 pub subject: jacquard_common::types::string::Did<'a>, 2088} 2089 2090pub mod subject_activity_subscription_state { 2091 2092 pub use crate::builder_types::{Set, Unset, IsSet, IsUnset}; 2093 #[allow(unused)] 2094 use ::core::marker::PhantomData; 2095 mod sealed { 2096 pub trait Sealed {} 2097 } 2098 /// State trait tracking which required fields have been set 2099 pub trait State: sealed::Sealed { 2100 type ActivitySubscription; 2101 type Subject; 2102 } 2103 /// Empty state - all required fields are unset 2104 pub struct Empty(()); 2105 impl sealed::Sealed for Empty {} 2106 impl State for Empty { 2107 type ActivitySubscription = Unset; 2108 type Subject = Unset; 2109 } 2110 ///State transition - sets the `activity_subscription` field to Set 2111 pub struct SetActivitySubscription<S: State = Empty>(PhantomData<fn() -> S>); 2112 impl<S: State> sealed::Sealed for SetActivitySubscription<S> {} 2113 impl<S: State> State for SetActivitySubscription<S> { 2114 type ActivitySubscription = Set<members::activity_subscription>; 2115 type Subject = S::Subject; 2116 } 2117 ///State transition - sets the `subject` field to Set 2118 pub struct SetSubject<S: State = Empty>(PhantomData<fn() -> S>); 2119 impl<S: State> sealed::Sealed for SetSubject<S> {} 2120 impl<S: State> State for SetSubject<S> { 2121 type ActivitySubscription = S::ActivitySubscription; 2122 type Subject = Set<members::subject>; 2123 } 2124 /// Marker types for field names 2125 #[allow(non_camel_case_types)] 2126 pub mod members { 2127 ///Marker type for the `activity_subscription` field 2128 pub struct activity_subscription(()); 2129 ///Marker type for the `subject` field 2130 pub struct subject(()); 2131 } 2132} 2133 2134/// Builder for constructing an instance of this type 2135pub struct SubjectActivitySubscriptionBuilder< 2136 'a, 2137 S: subject_activity_subscription_state::State, 2138> { 2139 _phantom_state: ::core::marker::PhantomData<fn() -> S>, 2140 __unsafe_private_named: ( 2141 ::core::option::Option<crate::app_bsky::notification::ActivitySubscription<'a>>, 2142 ::core::option::Option<jacquard_common::types::string::Did<'a>>, 2143 ), 2144 _phantom: ::core::marker::PhantomData<&'a ()>, 2145} 2146 2147impl<'a> SubjectActivitySubscription<'a> { 2148 /// Create a new builder for this type 2149 pub fn new() -> SubjectActivitySubscriptionBuilder< 2150 'a, 2151 subject_activity_subscription_state::Empty, 2152 > { 2153 SubjectActivitySubscriptionBuilder::new() 2154 } 2155} 2156 2157impl< 2158 'a, 2159> SubjectActivitySubscriptionBuilder<'a, subject_activity_subscription_state::Empty> { 2160 /// Create a new builder with all fields unset 2161 pub fn new() -> Self { 2162 SubjectActivitySubscriptionBuilder { 2163 _phantom_state: ::core::marker::PhantomData, 2164 __unsafe_private_named: (None, None), 2165 _phantom: ::core::marker::PhantomData, 2166 } 2167 } 2168} 2169 2170impl<'a, S> SubjectActivitySubscriptionBuilder<'a, S> 2171where 2172 S: subject_activity_subscription_state::State, 2173 S::ActivitySubscription: subject_activity_subscription_state::IsUnset, 2174{ 2175 /// Set the `activitySubscription` field (required) 2176 pub fn activity_subscription( 2177 mut self, 2178 value: impl Into<crate::app_bsky::notification::ActivitySubscription<'a>>, 2179 ) -> SubjectActivitySubscriptionBuilder< 2180 'a, 2181 subject_activity_subscription_state::SetActivitySubscription<S>, 2182 > { 2183 self.__unsafe_private_named.0 = ::core::option::Option::Some(value.into()); 2184 SubjectActivitySubscriptionBuilder { 2185 _phantom_state: ::core::marker::PhantomData, 2186 __unsafe_private_named: self.__unsafe_private_named, 2187 _phantom: ::core::marker::PhantomData, 2188 } 2189 } 2190} 2191 2192impl<'a, S> SubjectActivitySubscriptionBuilder<'a, S> 2193where 2194 S: subject_activity_subscription_state::State, 2195 S::Subject: subject_activity_subscription_state::IsUnset, 2196{ 2197 /// Set the `subject` field (required) 2198 pub fn subject( 2199 mut self, 2200 value: impl Into<jacquard_common::types::string::Did<'a>>, 2201 ) -> SubjectActivitySubscriptionBuilder< 2202 'a, 2203 subject_activity_subscription_state::SetSubject<S>, 2204 > { 2205 self.__unsafe_private_named.1 = ::core::option::Option::Some(value.into()); 2206 SubjectActivitySubscriptionBuilder { 2207 _phantom_state: ::core::marker::PhantomData, 2208 __unsafe_private_named: self.__unsafe_private_named, 2209 _phantom: ::core::marker::PhantomData, 2210 } 2211 } 2212} 2213 2214impl<'a, S> SubjectActivitySubscriptionBuilder<'a, S> 2215where 2216 S: subject_activity_subscription_state::State, 2217 S::ActivitySubscription: subject_activity_subscription_state::IsSet, 2218 S::Subject: subject_activity_subscription_state::IsSet, 2219{ 2220 /// Build the final struct 2221 pub fn build(self) -> SubjectActivitySubscription<'a> { 2222 SubjectActivitySubscription { 2223 activity_subscription: self.__unsafe_private_named.0.unwrap(), 2224 subject: self.__unsafe_private_named.1.unwrap(), 2225 extra_data: Default::default(), 2226 } 2227 } 2228 /// Build the final struct with custom extra_data 2229 pub fn build_with_data( 2230 self, 2231 extra_data: std::collections::BTreeMap< 2232 jacquard_common::smol_str::SmolStr, 2233 jacquard_common::types::value::Data<'a>, 2234 >, 2235 ) -> SubjectActivitySubscription<'a> { 2236 SubjectActivitySubscription { 2237 activity_subscription: self.__unsafe_private_named.0.unwrap(), 2238 subject: self.__unsafe_private_named.1.unwrap(), 2239 extra_data: Some(extra_data), 2240 } 2241 } 2242} 2243 2244impl<'a> ::jacquard_lexicon::schema::LexiconSchema for SubjectActivitySubscription<'a> { 2245 fn nsid() -> &'static str { 2246 "app.bsky.notification.defs" 2247 } 2248 fn def_name() -> &'static str { 2249 "subjectActivitySubscription" 2250 } 2251 fn lexicon_doc() -> ::jacquard_lexicon::lexicon::LexiconDoc<'static> { 2252 lexicon_doc_app_bsky_notification_defs() 2253 } 2254 fn validate( 2255 &self, 2256 ) -> ::core::result::Result<(), ::jacquard_lexicon::validation::ConstraintError> { 2257 Ok(()) 2258 } 2259}