jacquard_api/app_bsky/
feed.rs

1// @generated by jacquard-lexicon. DO NOT EDIT.
2//
3// Lexicon: app.bsky.feed.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 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///User clicked through to the author of the feed item
72#[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///User clicked through to the embedded content of the feed item
90#[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///User clicked through to the feed item
108#[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///User clicked through to the reposter of the feed item
126#[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///Declares the feed generator returns any types of posts.
144#[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///Declares the feed generator returns posts containing app.bsky.embed.video embeds.
162#[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    ///Context provided by feed generator that may be passed back alongside interactions.
192    #[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    ///Unique identifier per request that may be passed back alongside interactions.
204    #[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    ///Context on a feed item that was originally supplied by the feed generator on getFeedSkeleton.
304    #[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    ///Unique identifier per request that may be passed back alongside interactions.
311    #[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///User liked the feed item
317#[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///User quoted the feed item
335#[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///User replied to the feed item
353#[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///User reposted the feed item
371#[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///Feed item was seen by user
389#[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///User shared the feed item
407#[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    ///When parent is a reply to another post, this is the author of that post.
559    #[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///Request that less content like the given feed item be shown in the feed
597#[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///Request that more content like the given feed item be shown in the feed
615#[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    ///Context that will be passed through to client and may be passed to feed generator back alongside interactions.
645    #[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///Metadata about this post within the context of the thread it is in.
697#[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///Metadata about the requesting account's relationship with the subject content. Only has meaningful content for authed requests.
779#[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}