1pub mod describe_feed_generator;
9pub mod generator;
10pub mod get_actor_feeds;
11pub mod get_actor_likes;
12pub mod get_author_feed;
13pub mod get_feed;
14pub mod get_feed_generator;
15pub mod get_feed_generators;
16pub mod get_feed_skeleton;
17pub mod get_likes;
18pub mod get_list_feed;
19pub mod get_post_thread;
20pub mod get_posts;
21pub mod get_quotes;
22pub mod get_reposted_by;
23pub mod get_suggested_feeds;
24pub mod get_timeline;
25pub mod like;
26pub mod post;
27pub mod postgate;
28pub mod repost;
29pub mod search_posts;
30pub mod send_interactions;
31pub mod threadgate;
32
33#[jacquard_derive::lexicon]
34#[derive(
35 serde::Serialize,
36 serde::Deserialize,
37 Debug,
38 Clone,
39 PartialEq,
40 Eq,
41 jacquard_derive::IntoStatic
42)]
43#[serde(rename_all = "camelCase")]
44pub struct BlockedAuthor<'a> {
45 #[serde(borrow)]
46 pub did: jacquard_common::types::string::Did<'a>,
47 #[serde(skip_serializing_if = "std::option::Option::is_none")]
48 #[serde(borrow)]
49 pub viewer: std::option::Option<crate::app_bsky::actor::ViewerState<'a>>,
50}
51
52#[jacquard_derive::lexicon]
53#[derive(
54 serde::Serialize,
55 serde::Deserialize,
56 Debug,
57 Clone,
58 PartialEq,
59 Eq,
60 jacquard_derive::IntoStatic
61)]
62#[serde(rename_all = "camelCase")]
63pub struct BlockedPost<'a> {
64 #[serde(borrow)]
65 pub author: crate::app_bsky::feed::BlockedAuthor<'a>,
66 pub blocked: bool,
67 #[serde(borrow)]
68 pub uri: jacquard_common::types::string::AtUri<'a>,
69}
70
71#[derive(
73 serde::Serialize,
74 serde::Deserialize,
75 Debug,
76 Clone,
77 PartialEq,
78 Eq,
79 Hash,
80 jacquard_derive::IntoStatic
81)]
82pub struct ClickthroughAuthor;
83impl std::fmt::Display for ClickthroughAuthor {
84 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
85 write!(f, "clickthroughAuthor")
86 }
87}
88
89#[derive(
91 serde::Serialize,
92 serde::Deserialize,
93 Debug,
94 Clone,
95 PartialEq,
96 Eq,
97 Hash,
98 jacquard_derive::IntoStatic
99)]
100pub struct ClickthroughEmbed;
101impl std::fmt::Display for ClickthroughEmbed {
102 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
103 write!(f, "clickthroughEmbed")
104 }
105}
106
107#[derive(
109 serde::Serialize,
110 serde::Deserialize,
111 Debug,
112 Clone,
113 PartialEq,
114 Eq,
115 Hash,
116 jacquard_derive::IntoStatic
117)]
118pub struct ClickthroughItem;
119impl std::fmt::Display for ClickthroughItem {
120 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
121 write!(f, "clickthroughItem")
122 }
123}
124
125#[derive(
127 serde::Serialize,
128 serde::Deserialize,
129 Debug,
130 Clone,
131 PartialEq,
132 Eq,
133 Hash,
134 jacquard_derive::IntoStatic
135)]
136pub struct ClickthroughReposter;
137impl std::fmt::Display for ClickthroughReposter {
138 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
139 write!(f, "clickthroughReposter")
140 }
141}
142
143#[derive(
145 serde::Serialize,
146 serde::Deserialize,
147 Debug,
148 Clone,
149 PartialEq,
150 Eq,
151 Hash,
152 jacquard_derive::IntoStatic
153)]
154pub struct ContentModeUnspecified;
155impl std::fmt::Display for ContentModeUnspecified {
156 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
157 write!(f, "contentModeUnspecified")
158 }
159}
160
161#[derive(
163 serde::Serialize,
164 serde::Deserialize,
165 Debug,
166 Clone,
167 PartialEq,
168 Eq,
169 Hash,
170 jacquard_derive::IntoStatic
171)]
172pub struct ContentModeVideo;
173impl std::fmt::Display for ContentModeVideo {
174 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
175 write!(f, "contentModeVideo")
176 }
177}
178
179#[jacquard_derive::lexicon]
180#[derive(
181 serde::Serialize,
182 serde::Deserialize,
183 Debug,
184 Clone,
185 PartialEq,
186 Eq,
187 jacquard_derive::IntoStatic
188)]
189#[serde(rename_all = "camelCase")]
190pub struct FeedViewPost<'a> {
191 #[serde(skip_serializing_if = "std::option::Option::is_none")]
193 #[serde(borrow)]
194 pub feed_context: std::option::Option<jacquard_common::CowStr<'a>>,
195 #[serde(borrow)]
196 pub post: crate::app_bsky::feed::PostView<'a>,
197 #[serde(skip_serializing_if = "std::option::Option::is_none")]
198 #[serde(borrow)]
199 pub reason: std::option::Option<FeedViewPostRecordReason<'a>>,
200 #[serde(skip_serializing_if = "std::option::Option::is_none")]
201 #[serde(borrow)]
202 pub reply: std::option::Option<crate::app_bsky::feed::ReplyRef<'a>>,
203 #[serde(skip_serializing_if = "std::option::Option::is_none")]
205 #[serde(borrow)]
206 pub req_id: std::option::Option<jacquard_common::CowStr<'a>>,
207}
208
209#[jacquard_derive::open_union]
210#[derive(
211 serde::Serialize,
212 serde::Deserialize,
213 Debug,
214 Clone,
215 PartialEq,
216 Eq,
217 jacquard_derive::IntoStatic
218)]
219#[serde(tag = "$type")]
220#[serde(bound(deserialize = "'de: 'a"))]
221pub enum FeedViewPostRecordReason<'a> {}
222#[jacquard_derive::lexicon]
223#[derive(
224 serde::Serialize,
225 serde::Deserialize,
226 Debug,
227 Clone,
228 PartialEq,
229 Eq,
230 jacquard_derive::IntoStatic
231)]
232#[serde(rename_all = "camelCase")]
233pub struct GeneratorView<'a> {
234 #[serde(skip_serializing_if = "std::option::Option::is_none")]
235 pub accepts_interactions: std::option::Option<bool>,
236 #[serde(skip_serializing_if = "std::option::Option::is_none")]
237 #[serde(borrow)]
238 pub avatar: std::option::Option<jacquard_common::types::string::Uri<'a>>,
239 #[serde(borrow)]
240 pub cid: jacquard_common::types::string::Cid<'a>,
241 #[serde(skip_serializing_if = "std::option::Option::is_none")]
242 #[serde(borrow)]
243 pub content_mode: std::option::Option<jacquard_common::CowStr<'a>>,
244 #[serde(borrow)]
245 pub creator: crate::app_bsky::actor::ProfileView<'a>,
246 #[serde(skip_serializing_if = "std::option::Option::is_none")]
247 #[serde(borrow)]
248 pub description: std::option::Option<jacquard_common::CowStr<'a>>,
249 #[serde(skip_serializing_if = "std::option::Option::is_none")]
250 #[serde(borrow)]
251 pub description_facets: std::option::Option<
252 Vec<crate::app_bsky::richtext::facet::Facet<'a>>,
253 >,
254 #[serde(borrow)]
255 pub did: jacquard_common::types::string::Did<'a>,
256 #[serde(borrow)]
257 pub display_name: jacquard_common::CowStr<'a>,
258 pub indexed_at: jacquard_common::types::string::Datetime,
259 #[serde(skip_serializing_if = "std::option::Option::is_none")]
260 #[serde(borrow)]
261 pub labels: std::option::Option<Vec<crate::com_atproto::label::Label<'a>>>,
262 #[serde(skip_serializing_if = "std::option::Option::is_none")]
263 pub like_count: std::option::Option<i64>,
264 #[serde(borrow)]
265 pub uri: jacquard_common::types::string::AtUri<'a>,
266 #[serde(skip_serializing_if = "std::option::Option::is_none")]
267 #[serde(borrow)]
268 pub viewer: std::option::Option<crate::app_bsky::feed::GeneratorViewerState<'a>>,
269}
270
271#[jacquard_derive::lexicon]
272#[derive(
273 serde::Serialize,
274 serde::Deserialize,
275 Debug,
276 Clone,
277 PartialEq,
278 Eq,
279 jacquard_derive::IntoStatic
280)]
281#[serde(rename_all = "camelCase")]
282pub struct GeneratorViewerState<'a> {
283 #[serde(skip_serializing_if = "std::option::Option::is_none")]
284 #[serde(borrow)]
285 pub like: std::option::Option<jacquard_common::types::string::AtUri<'a>>,
286}
287
288#[jacquard_derive::lexicon]
289#[derive(
290 serde::Serialize,
291 serde::Deserialize,
292 Debug,
293 Clone,
294 PartialEq,
295 Eq,
296 jacquard_derive::IntoStatic
297)]
298#[serde(rename_all = "camelCase")]
299pub struct Interaction<'a> {
300 #[serde(skip_serializing_if = "std::option::Option::is_none")]
301 #[serde(borrow)]
302 pub event: std::option::Option<jacquard_common::CowStr<'a>>,
303 #[serde(skip_serializing_if = "std::option::Option::is_none")]
305 #[serde(borrow)]
306 pub feed_context: std::option::Option<jacquard_common::CowStr<'a>>,
307 #[serde(skip_serializing_if = "std::option::Option::is_none")]
308 #[serde(borrow)]
309 pub item: std::option::Option<jacquard_common::types::string::AtUri<'a>>,
310 #[serde(skip_serializing_if = "std::option::Option::is_none")]
312 #[serde(borrow)]
313 pub req_id: std::option::Option<jacquard_common::CowStr<'a>>,
314}
315
316#[derive(
318 serde::Serialize,
319 serde::Deserialize,
320 Debug,
321 Clone,
322 PartialEq,
323 Eq,
324 Hash,
325 jacquard_derive::IntoStatic
326)]
327pub struct InteractionLike;
328impl std::fmt::Display for InteractionLike {
329 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
330 write!(f, "interactionLike")
331 }
332}
333
334#[derive(
336 serde::Serialize,
337 serde::Deserialize,
338 Debug,
339 Clone,
340 PartialEq,
341 Eq,
342 Hash,
343 jacquard_derive::IntoStatic
344)]
345pub struct InteractionQuote;
346impl std::fmt::Display for InteractionQuote {
347 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
348 write!(f, "interactionQuote")
349 }
350}
351
352#[derive(
354 serde::Serialize,
355 serde::Deserialize,
356 Debug,
357 Clone,
358 PartialEq,
359 Eq,
360 Hash,
361 jacquard_derive::IntoStatic
362)]
363pub struct InteractionReply;
364impl std::fmt::Display for InteractionReply {
365 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
366 write!(f, "interactionReply")
367 }
368}
369
370#[derive(
372 serde::Serialize,
373 serde::Deserialize,
374 Debug,
375 Clone,
376 PartialEq,
377 Eq,
378 Hash,
379 jacquard_derive::IntoStatic
380)]
381pub struct InteractionRepost;
382impl std::fmt::Display for InteractionRepost {
383 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
384 write!(f, "interactionRepost")
385 }
386}
387
388#[derive(
390 serde::Serialize,
391 serde::Deserialize,
392 Debug,
393 Clone,
394 PartialEq,
395 Eq,
396 Hash,
397 jacquard_derive::IntoStatic
398)]
399pub struct InteractionSeen;
400impl std::fmt::Display for InteractionSeen {
401 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
402 write!(f, "interactionSeen")
403 }
404}
405
406#[derive(
408 serde::Serialize,
409 serde::Deserialize,
410 Debug,
411 Clone,
412 PartialEq,
413 Eq,
414 Hash,
415 jacquard_derive::IntoStatic
416)]
417pub struct InteractionShare;
418impl std::fmt::Display for InteractionShare {
419 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
420 write!(f, "interactionShare")
421 }
422}
423
424#[jacquard_derive::lexicon]
425#[derive(
426 serde::Serialize,
427 serde::Deserialize,
428 Debug,
429 Clone,
430 PartialEq,
431 Eq,
432 jacquard_derive::IntoStatic
433)]
434#[serde(rename_all = "camelCase")]
435pub struct NotFoundPost<'a> {
436 pub not_found: bool,
437 #[serde(borrow)]
438 pub uri: jacquard_common::types::string::AtUri<'a>,
439}
440
441#[jacquard_derive::lexicon]
442#[derive(
443 serde::Serialize,
444 serde::Deserialize,
445 Debug,
446 Clone,
447 PartialEq,
448 Eq,
449 jacquard_derive::IntoStatic
450)]
451#[serde(rename_all = "camelCase")]
452pub struct PostView<'a> {
453 #[serde(borrow)]
454 pub author: crate::app_bsky::actor::ProfileViewBasic<'a>,
455 #[serde(skip_serializing_if = "std::option::Option::is_none")]
456 pub bookmark_count: std::option::Option<i64>,
457 #[serde(borrow)]
458 pub cid: jacquard_common::types::string::Cid<'a>,
459 #[serde(skip_serializing_if = "std::option::Option::is_none")]
460 #[serde(borrow)]
461 pub embed: std::option::Option<PostViewRecordEmbed<'a>>,
462 pub indexed_at: jacquard_common::types::string::Datetime,
463 #[serde(skip_serializing_if = "std::option::Option::is_none")]
464 #[serde(borrow)]
465 pub labels: std::option::Option<Vec<crate::com_atproto::label::Label<'a>>>,
466 #[serde(skip_serializing_if = "std::option::Option::is_none")]
467 pub like_count: std::option::Option<i64>,
468 #[serde(skip_serializing_if = "std::option::Option::is_none")]
469 pub quote_count: std::option::Option<i64>,
470 #[serde(borrow)]
471 pub record: jacquard_common::types::value::Data<'a>,
472 #[serde(skip_serializing_if = "std::option::Option::is_none")]
473 pub reply_count: std::option::Option<i64>,
474 #[serde(skip_serializing_if = "std::option::Option::is_none")]
475 pub repost_count: std::option::Option<i64>,
476 #[serde(skip_serializing_if = "std::option::Option::is_none")]
477 #[serde(borrow)]
478 pub threadgate: std::option::Option<crate::app_bsky::feed::ThreadgateView<'a>>,
479 #[serde(borrow)]
480 pub uri: jacquard_common::types::string::AtUri<'a>,
481 #[serde(skip_serializing_if = "std::option::Option::is_none")]
482 #[serde(borrow)]
483 pub viewer: std::option::Option<crate::app_bsky::feed::ViewerState<'a>>,
484}
485
486#[jacquard_derive::open_union]
487#[derive(
488 serde::Serialize,
489 serde::Deserialize,
490 Debug,
491 Clone,
492 PartialEq,
493 Eq,
494 jacquard_derive::IntoStatic
495)]
496#[serde(tag = "$type")]
497#[serde(bound(deserialize = "'de: 'a"))]
498pub enum PostViewRecordEmbed<'a> {
499 #[serde(rename = "app.bsky.embed.images#view")]
500 ImagesView(Box<crate::app_bsky::embed::images::View<'a>>),
501 #[serde(rename = "app.bsky.embed.video#view")]
502 VideoView(Box<crate::app_bsky::embed::video::View<'a>>),
503 #[serde(rename = "app.bsky.embed.external#view")]
504 ExternalView(Box<crate::app_bsky::embed::external::View<'a>>),
505 #[serde(rename = "app.bsky.embed.record#view")]
506 RecordView(Box<crate::app_bsky::embed::record::View<'a>>),
507 #[serde(rename = "app.bsky.embed.recordWithMedia#view")]
508 RecordWithMediaView(Box<crate::app_bsky::embed::record_with_media::View<'a>>),
509}
510
511#[jacquard_derive::lexicon]
512#[derive(
513 serde::Serialize,
514 serde::Deserialize,
515 Debug,
516 Clone,
517 PartialEq,
518 Eq,
519 jacquard_derive::IntoStatic
520)]
521#[serde(rename_all = "camelCase")]
522pub struct ReasonPin<'a> {}
523#[jacquard_derive::lexicon]
524#[derive(
525 serde::Serialize,
526 serde::Deserialize,
527 Debug,
528 Clone,
529 PartialEq,
530 Eq,
531 jacquard_derive::IntoStatic
532)]
533#[serde(rename_all = "camelCase")]
534pub struct ReasonRepost<'a> {
535 #[serde(borrow)]
536 pub by: crate::app_bsky::actor::ProfileViewBasic<'a>,
537 #[serde(skip_serializing_if = "std::option::Option::is_none")]
538 #[serde(borrow)]
539 pub cid: std::option::Option<jacquard_common::types::string::Cid<'a>>,
540 pub indexed_at: jacquard_common::types::string::Datetime,
541 #[serde(skip_serializing_if = "std::option::Option::is_none")]
542 #[serde(borrow)]
543 pub uri: std::option::Option<jacquard_common::types::string::AtUri<'a>>,
544}
545
546#[jacquard_derive::lexicon]
547#[derive(
548 serde::Serialize,
549 serde::Deserialize,
550 Debug,
551 Clone,
552 PartialEq,
553 Eq,
554 jacquard_derive::IntoStatic
555)]
556#[serde(rename_all = "camelCase")]
557pub struct ReplyRef<'a> {
558 #[serde(skip_serializing_if = "std::option::Option::is_none")]
560 #[serde(borrow)]
561 pub grandparent_author: std::option::Option<
562 crate::app_bsky::actor::ProfileViewBasic<'a>,
563 >,
564 #[serde(borrow)]
565 pub parent: ReplyRefRecordParent<'a>,
566 #[serde(borrow)]
567 pub root: ReplyRefRecordRoot<'a>,
568}
569
570#[jacquard_derive::open_union]
571#[derive(
572 serde::Serialize,
573 serde::Deserialize,
574 Debug,
575 Clone,
576 PartialEq,
577 Eq,
578 jacquard_derive::IntoStatic
579)]
580#[serde(tag = "$type")]
581#[serde(bound(deserialize = "'de: 'a"))]
582pub enum ReplyRefRecordParent<'a> {}
583#[jacquard_derive::open_union]
584#[derive(
585 serde::Serialize,
586 serde::Deserialize,
587 Debug,
588 Clone,
589 PartialEq,
590 Eq,
591 jacquard_derive::IntoStatic
592)]
593#[serde(tag = "$type")]
594#[serde(bound(deserialize = "'de: 'a"))]
595pub enum ReplyRefRecordRoot<'a> {}
596#[derive(
598 serde::Serialize,
599 serde::Deserialize,
600 Debug,
601 Clone,
602 PartialEq,
603 Eq,
604 Hash,
605 jacquard_derive::IntoStatic
606)]
607pub struct RequestLess;
608impl std::fmt::Display for RequestLess {
609 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
610 write!(f, "requestLess")
611 }
612}
613
614#[derive(
616 serde::Serialize,
617 serde::Deserialize,
618 Debug,
619 Clone,
620 PartialEq,
621 Eq,
622 Hash,
623 jacquard_derive::IntoStatic
624)]
625pub struct RequestMore;
626impl std::fmt::Display for RequestMore {
627 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
628 write!(f, "requestMore")
629 }
630}
631
632#[jacquard_derive::lexicon]
633#[derive(
634 serde::Serialize,
635 serde::Deserialize,
636 Debug,
637 Clone,
638 PartialEq,
639 Eq,
640 jacquard_derive::IntoStatic
641)]
642#[serde(rename_all = "camelCase")]
643pub struct SkeletonFeedPost<'a> {
644 #[serde(skip_serializing_if = "std::option::Option::is_none")]
646 #[serde(borrow)]
647 pub feed_context: std::option::Option<jacquard_common::CowStr<'a>>,
648 #[serde(borrow)]
649 pub post: jacquard_common::types::string::AtUri<'a>,
650 #[serde(skip_serializing_if = "std::option::Option::is_none")]
651 #[serde(borrow)]
652 pub reason: std::option::Option<SkeletonFeedPostRecordReason<'a>>,
653}
654
655#[jacquard_derive::open_union]
656#[derive(
657 serde::Serialize,
658 serde::Deserialize,
659 Debug,
660 Clone,
661 PartialEq,
662 Eq,
663 jacquard_derive::IntoStatic
664)]
665#[serde(tag = "$type")]
666#[serde(bound(deserialize = "'de: 'a"))]
667pub enum SkeletonFeedPostRecordReason<'a> {}
668#[jacquard_derive::lexicon]
669#[derive(
670 serde::Serialize,
671 serde::Deserialize,
672 Debug,
673 Clone,
674 PartialEq,
675 Eq,
676 jacquard_derive::IntoStatic
677)]
678#[serde(rename_all = "camelCase")]
679pub struct SkeletonReasonPin<'a> {}
680#[jacquard_derive::lexicon]
681#[derive(
682 serde::Serialize,
683 serde::Deserialize,
684 Debug,
685 Clone,
686 PartialEq,
687 Eq,
688 jacquard_derive::IntoStatic
689)]
690#[serde(rename_all = "camelCase")]
691pub struct SkeletonReasonRepost<'a> {
692 #[serde(borrow)]
693 pub repost: jacquard_common::types::string::AtUri<'a>,
694}
695
696#[jacquard_derive::lexicon]
698#[derive(
699 serde::Serialize,
700 serde::Deserialize,
701 Debug,
702 Clone,
703 PartialEq,
704 Eq,
705 jacquard_derive::IntoStatic
706)]
707#[serde(rename_all = "camelCase")]
708pub struct ThreadContext<'a> {
709 #[serde(skip_serializing_if = "std::option::Option::is_none")]
710 #[serde(borrow)]
711 pub root_author_like: std::option::Option<jacquard_common::types::string::AtUri<'a>>,
712}
713
714#[jacquard_derive::lexicon]
715#[derive(
716 serde::Serialize,
717 serde::Deserialize,
718 Debug,
719 Clone,
720 PartialEq,
721 Eq,
722 jacquard_derive::IntoStatic
723)]
724#[serde(rename_all = "camelCase")]
725pub struct ThreadViewPost<'a> {
726 #[serde(skip_serializing_if = "std::option::Option::is_none")]
727 #[serde(borrow)]
728 pub parent: std::option::Option<ThreadViewPostRecordParent<'a>>,
729 #[serde(borrow)]
730 pub post: crate::app_bsky::feed::PostView<'a>,
731 #[serde(skip_serializing_if = "std::option::Option::is_none")]
732 #[serde(borrow)]
733 pub replies: std::option::Option<Vec<jacquard_common::types::value::Data<'a>>>,
734 #[serde(skip_serializing_if = "std::option::Option::is_none")]
735 #[serde(borrow)]
736 pub thread_context: std::option::Option<crate::app_bsky::feed::ThreadContext<'a>>,
737}
738
739#[jacquard_derive::open_union]
740#[derive(
741 serde::Serialize,
742 serde::Deserialize,
743 Debug,
744 Clone,
745 PartialEq,
746 Eq,
747 jacquard_derive::IntoStatic
748)]
749#[serde(tag = "$type")]
750#[serde(bound(deserialize = "'de: 'a"))]
751pub enum ThreadViewPostRecordParent<'a> {}
752#[jacquard_derive::lexicon]
753#[derive(
754 serde::Serialize,
755 serde::Deserialize,
756 Debug,
757 Clone,
758 PartialEq,
759 Eq,
760 jacquard_derive::IntoStatic
761)]
762#[serde(rename_all = "camelCase")]
763pub struct ThreadgateView<'a> {
764 #[serde(skip_serializing_if = "std::option::Option::is_none")]
765 #[serde(borrow)]
766 pub cid: std::option::Option<jacquard_common::types::string::Cid<'a>>,
767 #[serde(skip_serializing_if = "std::option::Option::is_none")]
768 #[serde(borrow)]
769 pub lists: std::option::Option<Vec<crate::app_bsky::graph::ListViewBasic<'a>>>,
770 #[serde(skip_serializing_if = "std::option::Option::is_none")]
771 #[serde(borrow)]
772 pub record: std::option::Option<jacquard_common::types::value::Data<'a>>,
773 #[serde(skip_serializing_if = "std::option::Option::is_none")]
774 #[serde(borrow)]
775 pub uri: std::option::Option<jacquard_common::types::string::AtUri<'a>>,
776}
777
778#[jacquard_derive::lexicon]
780#[derive(
781 serde::Serialize,
782 serde::Deserialize,
783 Debug,
784 Clone,
785 PartialEq,
786 Eq,
787 jacquard_derive::IntoStatic
788)]
789#[serde(rename_all = "camelCase")]
790pub struct ViewerState<'a> {
791 #[serde(skip_serializing_if = "std::option::Option::is_none")]
792 pub bookmarked: std::option::Option<bool>,
793 #[serde(skip_serializing_if = "std::option::Option::is_none")]
794 pub embedding_disabled: std::option::Option<bool>,
795 #[serde(skip_serializing_if = "std::option::Option::is_none")]
796 #[serde(borrow)]
797 pub like: std::option::Option<jacquard_common::types::string::AtUri<'a>>,
798 #[serde(skip_serializing_if = "std::option::Option::is_none")]
799 pub pinned: std::option::Option<bool>,
800 #[serde(skip_serializing_if = "std::option::Option::is_none")]
801 pub reply_disabled: std::option::Option<bool>,
802 #[serde(skip_serializing_if = "std::option::Option::is_none")]
803 #[serde(borrow)]
804 pub repost: std::option::Option<jacquard_common::types::string::AtUri<'a>>,
805 #[serde(skip_serializing_if = "std::option::Option::is_none")]
806 pub thread_muted: std::option::Option<bool>,
807}