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(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
35#[serde(rename_all = "camelCase")]
36pub struct BlockedAuthor<'a> {
37    #[serde(borrow)]
38    pub did: jacquard_common::types::string::Did<'a>,
39    #[serde(skip_serializing_if = "std::option::Option::is_none")]
40    #[serde(borrow)]
41    pub viewer: std::option::Option<crate::app_bsky::actor::ViewerState<'a>>,
42}
43
44impl jacquard_common::IntoStatic for BlockedAuthor<'_> {
45    type Output = BlockedAuthor<'static>;
46    fn into_static(self) -> Self::Output {
47        BlockedAuthor {
48            did: self.did.into_static(),
49            viewer: self.viewer.into_static(),
50            extra_data: self.extra_data.into_static(),
51        }
52    }
53}
54
55#[jacquard_derive::lexicon]
56#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
57#[serde(rename_all = "camelCase")]
58pub struct BlockedPost<'a> {
59    #[serde(borrow)]
60    pub author: crate::app_bsky::feed::BlockedAuthor<'a>,
61    pub blocked: bool,
62    #[serde(borrow)]
63    pub uri: jacquard_common::types::string::AtUri<'a>,
64}
65
66impl jacquard_common::IntoStatic for BlockedPost<'_> {
67    type Output = BlockedPost<'static>;
68    fn into_static(self) -> Self::Output {
69        BlockedPost {
70            author: self.author.into_static(),
71            blocked: self.blocked.into_static(),
72            uri: self.uri.into_static(),
73            extra_data: self.extra_data.into_static(),
74        }
75    }
76}
77
78#[jacquard_derive::lexicon]
79#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
80#[serde(rename_all = "camelCase")]
81pub struct FeedViewPost<'a> {
82    ///Context provided by feed generator that may be passed back alongside interactions.
83    #[serde(skip_serializing_if = "std::option::Option::is_none")]
84    #[serde(borrow)]
85    pub feed_context: std::option::Option<jacquard_common::CowStr<'a>>,
86    #[serde(borrow)]
87    pub post: crate::app_bsky::feed::PostView<'a>,
88    #[serde(skip_serializing_if = "std::option::Option::is_none")]
89    #[serde(borrow)]
90    pub reason: std::option::Option<FeedViewPostRecordReason<'a>>,
91    #[serde(skip_serializing_if = "std::option::Option::is_none")]
92    #[serde(borrow)]
93    pub reply: std::option::Option<crate::app_bsky::feed::ReplyRef<'a>>,
94    ///Unique identifier per request that may be passed back alongside interactions.
95    #[serde(skip_serializing_if = "std::option::Option::is_none")]
96    #[serde(borrow)]
97    pub req_id: std::option::Option<jacquard_common::CowStr<'a>>,
98}
99
100#[jacquard_derive::open_union]
101#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
102#[serde(tag = "$type")]
103#[serde(bound(deserialize = "'de: 'a"))]
104pub enum FeedViewPostRecordReason<'a> {}
105impl jacquard_common::IntoStatic for FeedViewPostRecordReason<'_> {
106    type Output = FeedViewPostRecordReason<'static>;
107    fn into_static(self) -> Self::Output {
108        match self {
109            FeedViewPostRecordReason::Unknown(v) => {
110                FeedViewPostRecordReason::Unknown(v.into_static())
111            }
112        }
113    }
114}
115
116impl jacquard_common::IntoStatic for FeedViewPost<'_> {
117    type Output = FeedViewPost<'static>;
118    fn into_static(self) -> Self::Output {
119        FeedViewPost {
120            feed_context: self.feed_context.into_static(),
121            post: self.post.into_static(),
122            reason: self.reason.into_static(),
123            reply: self.reply.into_static(),
124            req_id: self.req_id.into_static(),
125            extra_data: self.extra_data.into_static(),
126        }
127    }
128}
129
130#[jacquard_derive::lexicon]
131#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
132#[serde(rename_all = "camelCase")]
133pub struct GeneratorView<'a> {
134    #[serde(skip_serializing_if = "std::option::Option::is_none")]
135    pub accepts_interactions: std::option::Option<bool>,
136    #[serde(skip_serializing_if = "std::option::Option::is_none")]
137    #[serde(borrow)]
138    pub avatar: std::option::Option<jacquard_common::types::string::Uri<'a>>,
139    #[serde(borrow)]
140    pub cid: jacquard_common::types::string::Cid<'a>,
141    #[serde(skip_serializing_if = "std::option::Option::is_none")]
142    #[serde(borrow)]
143    pub content_mode: std::option::Option<jacquard_common::CowStr<'a>>,
144    #[serde(borrow)]
145    pub creator: crate::app_bsky::actor::ProfileView<'a>,
146    #[serde(skip_serializing_if = "std::option::Option::is_none")]
147    #[serde(borrow)]
148    pub description: std::option::Option<jacquard_common::CowStr<'a>>,
149    #[serde(skip_serializing_if = "std::option::Option::is_none")]
150    #[serde(borrow)]
151    pub description_facets: std::option::Option<
152        Vec<crate::app_bsky::richtext::facet::Facet<'a>>,
153    >,
154    #[serde(borrow)]
155    pub did: jacquard_common::types::string::Did<'a>,
156    #[serde(borrow)]
157    pub display_name: jacquard_common::CowStr<'a>,
158    pub indexed_at: jacquard_common::types::string::Datetime,
159    #[serde(skip_serializing_if = "std::option::Option::is_none")]
160    #[serde(borrow)]
161    pub labels: std::option::Option<Vec<crate::com_atproto::label::Label<'a>>>,
162    #[serde(skip_serializing_if = "std::option::Option::is_none")]
163    pub like_count: std::option::Option<i64>,
164    #[serde(borrow)]
165    pub uri: jacquard_common::types::string::AtUri<'a>,
166    #[serde(skip_serializing_if = "std::option::Option::is_none")]
167    #[serde(borrow)]
168    pub viewer: std::option::Option<crate::app_bsky::feed::GeneratorViewerState<'a>>,
169}
170
171impl jacquard_common::IntoStatic for GeneratorView<'_> {
172    type Output = GeneratorView<'static>;
173    fn into_static(self) -> Self::Output {
174        GeneratorView {
175            accepts_interactions: self.accepts_interactions.into_static(),
176            avatar: self.avatar.into_static(),
177            cid: self.cid.into_static(),
178            content_mode: self.content_mode.into_static(),
179            creator: self.creator.into_static(),
180            description: self.description.into_static(),
181            description_facets: self.description_facets.into_static(),
182            did: self.did.into_static(),
183            display_name: self.display_name.into_static(),
184            indexed_at: self.indexed_at.into_static(),
185            labels: self.labels.into_static(),
186            like_count: self.like_count.into_static(),
187            uri: self.uri.into_static(),
188            viewer: self.viewer.into_static(),
189            extra_data: self.extra_data.into_static(),
190        }
191    }
192}
193
194#[jacquard_derive::lexicon]
195#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
196#[serde(rename_all = "camelCase")]
197pub struct GeneratorViewerState<'a> {
198    #[serde(skip_serializing_if = "std::option::Option::is_none")]
199    #[serde(borrow)]
200    pub like: std::option::Option<jacquard_common::types::string::AtUri<'a>>,
201}
202
203impl jacquard_common::IntoStatic for GeneratorViewerState<'_> {
204    type Output = GeneratorViewerState<'static>;
205    fn into_static(self) -> Self::Output {
206        GeneratorViewerState {
207            like: self.like.into_static(),
208            extra_data: self.extra_data.into_static(),
209        }
210    }
211}
212
213#[jacquard_derive::lexicon]
214#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
215#[serde(rename_all = "camelCase")]
216pub struct Interaction<'a> {
217    #[serde(skip_serializing_if = "std::option::Option::is_none")]
218    #[serde(borrow)]
219    pub event: std::option::Option<jacquard_common::CowStr<'a>>,
220    ///Context on a feed item that was originally supplied by the feed generator on getFeedSkeleton.
221    #[serde(skip_serializing_if = "std::option::Option::is_none")]
222    #[serde(borrow)]
223    pub feed_context: std::option::Option<jacquard_common::CowStr<'a>>,
224    #[serde(skip_serializing_if = "std::option::Option::is_none")]
225    #[serde(borrow)]
226    pub item: std::option::Option<jacquard_common::types::string::AtUri<'a>>,
227    ///Unique identifier per request that may be passed back alongside interactions.
228    #[serde(skip_serializing_if = "std::option::Option::is_none")]
229    #[serde(borrow)]
230    pub req_id: std::option::Option<jacquard_common::CowStr<'a>>,
231}
232
233impl jacquard_common::IntoStatic for Interaction<'_> {
234    type Output = Interaction<'static>;
235    fn into_static(self) -> Self::Output {
236        Interaction {
237            event: self.event.into_static(),
238            feed_context: self.feed_context.into_static(),
239            item: self.item.into_static(),
240            req_id: self.req_id.into_static(),
241            extra_data: self.extra_data.into_static(),
242        }
243    }
244}
245
246#[jacquard_derive::lexicon]
247#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
248#[serde(rename_all = "camelCase")]
249pub struct NotFoundPost<'a> {
250    pub not_found: bool,
251    #[serde(borrow)]
252    pub uri: jacquard_common::types::string::AtUri<'a>,
253}
254
255impl jacquard_common::IntoStatic for NotFoundPost<'_> {
256    type Output = NotFoundPost<'static>;
257    fn into_static(self) -> Self::Output {
258        NotFoundPost {
259            not_found: self.not_found.into_static(),
260            uri: self.uri.into_static(),
261            extra_data: self.extra_data.into_static(),
262        }
263    }
264}
265
266#[jacquard_derive::lexicon]
267#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
268#[serde(rename_all = "camelCase")]
269pub struct PostView<'a> {
270    #[serde(borrow)]
271    pub author: crate::app_bsky::actor::ProfileViewBasic<'a>,
272    #[serde(skip_serializing_if = "std::option::Option::is_none")]
273    pub bookmark_count: std::option::Option<i64>,
274    #[serde(borrow)]
275    pub cid: jacquard_common::types::string::Cid<'a>,
276    #[serde(skip_serializing_if = "std::option::Option::is_none")]
277    #[serde(borrow)]
278    pub embed: std::option::Option<PostViewRecordEmbed<'a>>,
279    pub indexed_at: jacquard_common::types::string::Datetime,
280    #[serde(skip_serializing_if = "std::option::Option::is_none")]
281    #[serde(borrow)]
282    pub labels: std::option::Option<Vec<crate::com_atproto::label::Label<'a>>>,
283    #[serde(skip_serializing_if = "std::option::Option::is_none")]
284    pub like_count: std::option::Option<i64>,
285    #[serde(skip_serializing_if = "std::option::Option::is_none")]
286    pub quote_count: std::option::Option<i64>,
287    #[serde(borrow)]
288    pub record: jacquard_common::types::value::Data<'a>,
289    #[serde(skip_serializing_if = "std::option::Option::is_none")]
290    pub reply_count: std::option::Option<i64>,
291    #[serde(skip_serializing_if = "std::option::Option::is_none")]
292    pub repost_count: std::option::Option<i64>,
293    #[serde(skip_serializing_if = "std::option::Option::is_none")]
294    #[serde(borrow)]
295    pub threadgate: std::option::Option<crate::app_bsky::feed::ThreadgateView<'a>>,
296    #[serde(borrow)]
297    pub uri: jacquard_common::types::string::AtUri<'a>,
298    #[serde(skip_serializing_if = "std::option::Option::is_none")]
299    #[serde(borrow)]
300    pub viewer: std::option::Option<crate::app_bsky::feed::ViewerState<'a>>,
301}
302
303#[jacquard_derive::open_union]
304#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
305#[serde(tag = "$type")]
306#[serde(bound(deserialize = "'de: 'a"))]
307pub enum PostViewRecordEmbed<'a> {
308    #[serde(rename = "app.bsky.embed.images#view")]
309    ImagesView(Box<crate::app_bsky::embed::images::View<'a>>),
310    #[serde(rename = "app.bsky.embed.video#view")]
311    VideoView(Box<crate::app_bsky::embed::video::View<'a>>),
312    #[serde(rename = "app.bsky.embed.external#view")]
313    ExternalView(Box<crate::app_bsky::embed::external::View<'a>>),
314    #[serde(rename = "app.bsky.embed.record#view")]
315    RecordView(Box<crate::app_bsky::embed::record::View<'a>>),
316    #[serde(rename = "app.bsky.embed.recordWithMedia#view")]
317    RecordWithMediaView(Box<crate::app_bsky::embed::record_with_media::View<'a>>),
318}
319
320impl jacquard_common::IntoStatic for PostViewRecordEmbed<'_> {
321    type Output = PostViewRecordEmbed<'static>;
322    fn into_static(self) -> Self::Output {
323        match self {
324            PostViewRecordEmbed::ImagesView(v) => {
325                PostViewRecordEmbed::ImagesView(v.into_static())
326            }
327            PostViewRecordEmbed::VideoView(v) => {
328                PostViewRecordEmbed::VideoView(v.into_static())
329            }
330            PostViewRecordEmbed::ExternalView(v) => {
331                PostViewRecordEmbed::ExternalView(v.into_static())
332            }
333            PostViewRecordEmbed::RecordView(v) => {
334                PostViewRecordEmbed::RecordView(v.into_static())
335            }
336            PostViewRecordEmbed::RecordWithMediaView(v) => {
337                PostViewRecordEmbed::RecordWithMediaView(v.into_static())
338            }
339            PostViewRecordEmbed::Unknown(v) => {
340                PostViewRecordEmbed::Unknown(v.into_static())
341            }
342        }
343    }
344}
345
346impl jacquard_common::IntoStatic for PostView<'_> {
347    type Output = PostView<'static>;
348    fn into_static(self) -> Self::Output {
349        PostView {
350            author: self.author.into_static(),
351            bookmark_count: self.bookmark_count.into_static(),
352            cid: self.cid.into_static(),
353            embed: self.embed.into_static(),
354            indexed_at: self.indexed_at.into_static(),
355            labels: self.labels.into_static(),
356            like_count: self.like_count.into_static(),
357            quote_count: self.quote_count.into_static(),
358            record: self.record.into_static(),
359            reply_count: self.reply_count.into_static(),
360            repost_count: self.repost_count.into_static(),
361            threadgate: self.threadgate.into_static(),
362            uri: self.uri.into_static(),
363            viewer: self.viewer.into_static(),
364            extra_data: self.extra_data.into_static(),
365        }
366    }
367}
368
369#[jacquard_derive::lexicon]
370#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
371#[serde(rename_all = "camelCase")]
372pub struct ReasonPin<'a> {}
373impl jacquard_common::IntoStatic for ReasonPin<'_> {
374    type Output = ReasonPin<'static>;
375    fn into_static(self) -> Self::Output {
376        ReasonPin {
377            extra_data: self.extra_data.into_static(),
378        }
379    }
380}
381
382#[jacquard_derive::lexicon]
383#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
384#[serde(rename_all = "camelCase")]
385pub struct ReasonRepost<'a> {
386    #[serde(borrow)]
387    pub by: crate::app_bsky::actor::ProfileViewBasic<'a>,
388    #[serde(skip_serializing_if = "std::option::Option::is_none")]
389    #[serde(borrow)]
390    pub cid: std::option::Option<jacquard_common::types::string::Cid<'a>>,
391    pub indexed_at: jacquard_common::types::string::Datetime,
392    #[serde(skip_serializing_if = "std::option::Option::is_none")]
393    #[serde(borrow)]
394    pub uri: std::option::Option<jacquard_common::types::string::AtUri<'a>>,
395}
396
397impl jacquard_common::IntoStatic for ReasonRepost<'_> {
398    type Output = ReasonRepost<'static>;
399    fn into_static(self) -> Self::Output {
400        ReasonRepost {
401            by: self.by.into_static(),
402            cid: self.cid.into_static(),
403            indexed_at: self.indexed_at.into_static(),
404            uri: self.uri.into_static(),
405            extra_data: self.extra_data.into_static(),
406        }
407    }
408}
409
410#[jacquard_derive::lexicon]
411#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
412#[serde(rename_all = "camelCase")]
413pub struct ReplyRef<'a> {
414    ///When parent is a reply to another post, this is the author of that post.
415    #[serde(skip_serializing_if = "std::option::Option::is_none")]
416    #[serde(borrow)]
417    pub grandparent_author: std::option::Option<
418        crate::app_bsky::actor::ProfileViewBasic<'a>,
419    >,
420    #[serde(borrow)]
421    pub parent: ReplyRefRecordParent<'a>,
422    #[serde(borrow)]
423    pub root: ReplyRefRecordRoot<'a>,
424}
425
426#[jacquard_derive::open_union]
427#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
428#[serde(tag = "$type")]
429#[serde(bound(deserialize = "'de: 'a"))]
430pub enum ReplyRefRecordParent<'a> {}
431impl jacquard_common::IntoStatic for ReplyRefRecordParent<'_> {
432    type Output = ReplyRefRecordParent<'static>;
433    fn into_static(self) -> Self::Output {
434        match self {
435            ReplyRefRecordParent::Unknown(v) => {
436                ReplyRefRecordParent::Unknown(v.into_static())
437            }
438        }
439    }
440}
441
442#[jacquard_derive::open_union]
443#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
444#[serde(tag = "$type")]
445#[serde(bound(deserialize = "'de: 'a"))]
446pub enum ReplyRefRecordRoot<'a> {}
447impl jacquard_common::IntoStatic for ReplyRefRecordRoot<'_> {
448    type Output = ReplyRefRecordRoot<'static>;
449    fn into_static(self) -> Self::Output {
450        match self {
451            ReplyRefRecordRoot::Unknown(v) => {
452                ReplyRefRecordRoot::Unknown(v.into_static())
453            }
454        }
455    }
456}
457
458impl jacquard_common::IntoStatic for ReplyRef<'_> {
459    type Output = ReplyRef<'static>;
460    fn into_static(self) -> Self::Output {
461        ReplyRef {
462            grandparent_author: self.grandparent_author.into_static(),
463            parent: self.parent.into_static(),
464            root: self.root.into_static(),
465            extra_data: self.extra_data.into_static(),
466        }
467    }
468}
469
470#[jacquard_derive::lexicon]
471#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
472#[serde(rename_all = "camelCase")]
473pub struct SkeletonFeedPost<'a> {
474    ///Context that will be passed through to client and may be passed to feed generator back alongside interactions.
475    #[serde(skip_serializing_if = "std::option::Option::is_none")]
476    #[serde(borrow)]
477    pub feed_context: std::option::Option<jacquard_common::CowStr<'a>>,
478    #[serde(borrow)]
479    pub post: jacquard_common::types::string::AtUri<'a>,
480    #[serde(skip_serializing_if = "std::option::Option::is_none")]
481    #[serde(borrow)]
482    pub reason: std::option::Option<SkeletonFeedPostRecordReason<'a>>,
483}
484
485#[jacquard_derive::open_union]
486#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
487#[serde(tag = "$type")]
488#[serde(bound(deserialize = "'de: 'a"))]
489pub enum SkeletonFeedPostRecordReason<'a> {}
490impl jacquard_common::IntoStatic for SkeletonFeedPostRecordReason<'_> {
491    type Output = SkeletonFeedPostRecordReason<'static>;
492    fn into_static(self) -> Self::Output {
493        match self {
494            SkeletonFeedPostRecordReason::Unknown(v) => {
495                SkeletonFeedPostRecordReason::Unknown(v.into_static())
496            }
497        }
498    }
499}
500
501impl jacquard_common::IntoStatic for SkeletonFeedPost<'_> {
502    type Output = SkeletonFeedPost<'static>;
503    fn into_static(self) -> Self::Output {
504        SkeletonFeedPost {
505            feed_context: self.feed_context.into_static(),
506            post: self.post.into_static(),
507            reason: self.reason.into_static(),
508            extra_data: self.extra_data.into_static(),
509        }
510    }
511}
512
513#[jacquard_derive::lexicon]
514#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
515#[serde(rename_all = "camelCase")]
516pub struct SkeletonReasonPin<'a> {}
517impl jacquard_common::IntoStatic for SkeletonReasonPin<'_> {
518    type Output = SkeletonReasonPin<'static>;
519    fn into_static(self) -> Self::Output {
520        SkeletonReasonPin {
521            extra_data: self.extra_data.into_static(),
522        }
523    }
524}
525
526#[jacquard_derive::lexicon]
527#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
528#[serde(rename_all = "camelCase")]
529pub struct SkeletonReasonRepost<'a> {
530    #[serde(borrow)]
531    pub repost: jacquard_common::types::string::AtUri<'a>,
532}
533
534impl jacquard_common::IntoStatic for SkeletonReasonRepost<'_> {
535    type Output = SkeletonReasonRepost<'static>;
536    fn into_static(self) -> Self::Output {
537        SkeletonReasonRepost {
538            repost: self.repost.into_static(),
539            extra_data: self.extra_data.into_static(),
540        }
541    }
542}
543
544///Metadata about this post within the context of the thread it is in.
545#[jacquard_derive::lexicon]
546#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
547#[serde(rename_all = "camelCase")]
548pub struct ThreadContext<'a> {
549    #[serde(skip_serializing_if = "std::option::Option::is_none")]
550    #[serde(borrow)]
551    pub root_author_like: std::option::Option<jacquard_common::types::string::AtUri<'a>>,
552}
553
554impl jacquard_common::IntoStatic for ThreadContext<'_> {
555    type Output = ThreadContext<'static>;
556    fn into_static(self) -> Self::Output {
557        ThreadContext {
558            root_author_like: self.root_author_like.into_static(),
559            extra_data: self.extra_data.into_static(),
560        }
561    }
562}
563
564#[jacquard_derive::lexicon]
565#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
566#[serde(rename_all = "camelCase")]
567pub struct ThreadViewPost<'a> {
568    #[serde(skip_serializing_if = "std::option::Option::is_none")]
569    #[serde(borrow)]
570    pub parent: std::option::Option<ThreadViewPostRecordParent<'a>>,
571    #[serde(borrow)]
572    pub post: crate::app_bsky::feed::PostView<'a>,
573    #[serde(skip_serializing_if = "std::option::Option::is_none")]
574    #[serde(borrow)]
575    pub replies: std::option::Option<Vec<jacquard_common::types::value::Data<'a>>>,
576    #[serde(skip_serializing_if = "std::option::Option::is_none")]
577    #[serde(borrow)]
578    pub thread_context: std::option::Option<crate::app_bsky::feed::ThreadContext<'a>>,
579}
580
581#[jacquard_derive::open_union]
582#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
583#[serde(tag = "$type")]
584#[serde(bound(deserialize = "'de: 'a"))]
585pub enum ThreadViewPostRecordParent<'a> {}
586impl jacquard_common::IntoStatic for ThreadViewPostRecordParent<'_> {
587    type Output = ThreadViewPostRecordParent<'static>;
588    fn into_static(self) -> Self::Output {
589        match self {
590            ThreadViewPostRecordParent::Unknown(v) => {
591                ThreadViewPostRecordParent::Unknown(v.into_static())
592            }
593        }
594    }
595}
596
597impl jacquard_common::IntoStatic for ThreadViewPost<'_> {
598    type Output = ThreadViewPost<'static>;
599    fn into_static(self) -> Self::Output {
600        ThreadViewPost {
601            parent: self.parent.into_static(),
602            post: self.post.into_static(),
603            replies: self.replies.into_static(),
604            thread_context: self.thread_context.into_static(),
605            extra_data: self.extra_data.into_static(),
606        }
607    }
608}
609
610#[jacquard_derive::lexicon]
611#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
612#[serde(rename_all = "camelCase")]
613pub struct ThreadgateView<'a> {
614    #[serde(skip_serializing_if = "std::option::Option::is_none")]
615    #[serde(borrow)]
616    pub cid: std::option::Option<jacquard_common::types::string::Cid<'a>>,
617    #[serde(skip_serializing_if = "std::option::Option::is_none")]
618    #[serde(borrow)]
619    pub lists: std::option::Option<Vec<crate::app_bsky::graph::ListViewBasic<'a>>>,
620    #[serde(skip_serializing_if = "std::option::Option::is_none")]
621    #[serde(borrow)]
622    pub record: std::option::Option<jacquard_common::types::value::Data<'a>>,
623    #[serde(skip_serializing_if = "std::option::Option::is_none")]
624    #[serde(borrow)]
625    pub uri: std::option::Option<jacquard_common::types::string::AtUri<'a>>,
626}
627
628impl jacquard_common::IntoStatic for ThreadgateView<'_> {
629    type Output = ThreadgateView<'static>;
630    fn into_static(self) -> Self::Output {
631        ThreadgateView {
632            cid: self.cid.into_static(),
633            lists: self.lists.into_static(),
634            record: self.record.into_static(),
635            uri: self.uri.into_static(),
636            extra_data: self.extra_data.into_static(),
637        }
638    }
639}
640
641///Metadata about the requesting account's relationship with the subject content. Only has meaningful content for authed requests.
642#[jacquard_derive::lexicon]
643#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
644#[serde(rename_all = "camelCase")]
645pub struct ViewerState<'a> {
646    #[serde(skip_serializing_if = "std::option::Option::is_none")]
647    pub bookmarked: std::option::Option<bool>,
648    #[serde(skip_serializing_if = "std::option::Option::is_none")]
649    pub embedding_disabled: std::option::Option<bool>,
650    #[serde(skip_serializing_if = "std::option::Option::is_none")]
651    #[serde(borrow)]
652    pub like: std::option::Option<jacquard_common::types::string::AtUri<'a>>,
653    #[serde(skip_serializing_if = "std::option::Option::is_none")]
654    pub pinned: std::option::Option<bool>,
655    #[serde(skip_serializing_if = "std::option::Option::is_none")]
656    pub reply_disabled: std::option::Option<bool>,
657    #[serde(skip_serializing_if = "std::option::Option::is_none")]
658    #[serde(borrow)]
659    pub repost: std::option::Option<jacquard_common::types::string::AtUri<'a>>,
660    #[serde(skip_serializing_if = "std::option::Option::is_none")]
661    pub thread_muted: std::option::Option<bool>,
662}
663
664impl jacquard_common::IntoStatic for ViewerState<'_> {
665    type Output = ViewerState<'static>;
666    fn into_static(self) -> Self::Output {
667        ViewerState {
668            bookmarked: self.bookmarked.into_static(),
669            embedding_disabled: self.embedding_disabled.into_static(),
670            like: self.like.into_static(),
671            pinned: self.pinned.into_static(),
672            reply_disabled: self.reply_disabled.into_static(),
673            repost: self.repost.into_static(),
674            thread_muted: self.thread_muted.into_static(),
675            extra_data: self.extra_data.into_static(),
676        }
677    }
678}