// Copyright (c) Barry Dorrans. All rights reserved.
// Licensed under the MIT License.

using System.Text.Json.Serialization;

using idunno.AtProto.Repo;
using idunno.Bluesky.Actor;
using idunno.Bluesky.Bookmarks.Model;
using idunno.Bluesky.Chat.Group;
using idunno.Bluesky.Drafts;
using idunno.Bluesky.Drafts.Model;
using idunno.Bluesky.Embed;
using idunno.Bluesky.Embed.Model;
using idunno.Bluesky.Feed;
using idunno.Bluesky.Feed.Gates;
using idunno.Bluesky.Feed.Model;
using idunno.Bluesky.Graph;
using idunno.Bluesky.Graph.Model;
using idunno.Bluesky.Labeler;
using idunno.Bluesky.Labeler.Model;
using idunno.Bluesky.Notifications;
using idunno.Bluesky.Record;
using idunno.Bluesky.RichText;
using idunno.Bluesky.Unspecced;
using idunno.Bluesky.Unspecced.Model;
using idunno.Bluesky.Video;
using idunno.Bluesky.Video.Model;

namespace idunno.Bluesky;

/// <exclude />
[JsonSourceGenerationOptions(
    AllowOutOfOrderMetadataProperties = true,
    DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull,
    IgnoreReadOnlyProperties = false,
    GenerationMode = JsonSourceGenerationMode.Metadata,
    NumberHandling = JsonNumberHandling.AllowReadingFromString,
    PropertyNameCaseInsensitive = true,
    PropertyNamingPolicy = JsonKnownNamingPolicy.CamelCase,
    WriteIndented = false)]

[JsonSerializable(typeof(BlueskyRecord))]
[JsonSerializable(typeof(BlueskyTimestampedRecord))]
[JsonSerializable(typeof(Profile))]
[JsonSerializable(typeof(AtProtoRepositoryRecord<Profile>))]
[JsonSerializable(typeof(idunno.AtProto.Labels.SelfLabels), TypeInfoPropertyName = "AtProtoLabelsSelfLabels")]
[JsonSerializable(typeof(idunno.AtProto.Labels.SelfLabel), TypeInfoPropertyName = "AtProtoLabelsSelfLabel")]
[JsonSerializable(typeof(StarterPack))]
[JsonSerializable(typeof(AtProtoRepositoryRecord<StarterPack>))]
[JsonSerializable(typeof(Verification))]
[JsonSerializable(typeof(AtProtoRepositoryRecord<Verification>))]
[JsonSerializable(typeof(Block))]
[JsonSerializable(typeof(AtProtoRepositoryRecord<Block>))]
[JsonSerializable(typeof(Follow))]
[JsonSerializable(typeof(AtProtoRepositoryRecord<Follow>))]
[JsonSerializable(typeof(Record.Like))]
[JsonSerializable(typeof(AtProtoRepositoryRecord<Record.Like>))]
[JsonSerializable(typeof(Repost))]
[JsonSerializable(typeof(AtProtoRepositoryRecord<Repost>))]
[JsonSerializable(typeof(Status))]
[JsonSerializable(typeof(AtProtoRepositoryRecord<Status>))]
[JsonSerializable(typeof(LabelerDeclaration))]
[JsonSerializable(typeof(AtProtoRepositoryRecord<LabelerDeclaration>))]
[JsonSerializable(typeof(BlueskyList))]
[JsonSerializable(typeof(AtProtoRepositoryRecord<BlueskyList>))]
[JsonSerializable(typeof(BlueskyListItem))]
[JsonSerializable(typeof(AtProtoRepositoryRecord<BlueskyListItem>))]

[JsonSerializable(typeof(Actor.Model.GetPreferencesResponse), TypeInfoPropertyName = "ActorGetPreferencesResponse")]
[JsonSerializable(typeof(Actor.Model.GetProfilesResponse), TypeInfoPropertyName = "ActorGetProfilesResponse")]
[JsonSerializable(typeof(Actor.Model.GetSuggestionsResponse), TypeInfoPropertyName = "ActorGetSuggestionsResponse")]
[JsonSerializable(typeof(Actor.Model.PutPreferencesRequest), TypeInfoPropertyName = "ActorPutPreferencesRequest")]
[JsonSerializable(typeof(Actor.Model.SearchActorsResponse), TypeInfoPropertyName = "ActorSearchActorsResponse")]
[JsonSerializable(typeof(Actor.Model.SearchActorsTypeAheadResponse), TypeInfoPropertyName = "ActorSearchActorsTypeAheadResponse")]
[JsonSerializable(typeof(ActorViewerState), TypeInfoPropertyName = "ActorViewerState")]
[JsonSerializable(typeof(AdultContentPreference))]
[JsonSerializable(typeof(BlueskyAppStatePreference))]
[JsonSerializable(typeof(ContentLabelPreference))]
[JsonSerializable(typeof(FeedViewPreference))]
[JsonSerializable(typeof(HiddenPostsPreferences))]
[JsonSerializable(typeof(InteractionPreferences))]
[JsonSerializable(typeof(InterestsPreference))]
[JsonSerializable(typeof(KnownFollowers))]
[JsonSerializable(typeof(LabelersPreference))]
[JsonSerializable(typeof(MutedWord))]
[JsonSerializable(typeof(MutedWordPreferences))]
[JsonSerializable(typeof(PersonalDetailsPreference))]
[JsonSerializable(typeof(Preference))]
[JsonSerializable(typeof(Actor.Preferences), TypeInfoPropertyName = "ActorPreferences")]
[JsonSerializable(typeof(ProfileAssociated))]
[JsonSerializable(typeof(ProfileAssociatedChat))]
[JsonSerializable(typeof(ProfileView))]
[JsonSerializable(typeof(ProfileViewBasic), TypeInfoPropertyName = "ProfileViewBasic")]
[JsonSerializable(typeof(ICollection<ProfileViewBasic>), TypeInfoPropertyName = "ProfileViewBasicCollection")]
[JsonSerializable(typeof(IReadOnlyCollection<ProfileViewBasic>), TypeInfoPropertyName = "ProfileViewBasicReadOnlyCollection")]
[JsonSerializable(typeof(ProfileViewDetailed))]
[JsonSerializable(typeof(SavedFeedPreference))]
[JsonSerializable(typeof(SavedFeedPreference2))]
[JsonSerializable(typeof(ThreadViewPreference))]
[JsonSerializable(typeof(VerificationState))]
[JsonSerializable(typeof(VerificationView))]
[JsonSerializable(typeof(StatusView))]

[JsonSerializable(typeof(Chat.BatchedMessage))]
[JsonSerializable(typeof(Chat.ConversationReference))]
[JsonSerializable(typeof(Chat.Conversations))]
[JsonSerializable(typeof(Chat.ConversationView))]
[JsonSerializable(typeof(Chat.DeletedMessageView))]
[JsonSerializable(typeof(Chat.MessageInput))]
[JsonSerializable(typeof(Chat.MessageReference))]
[JsonSerializable(typeof(Chat.Messages))]
[JsonSerializable(typeof(Chat.MessageView))]
[JsonSerializable(typeof(Chat.MessageViewBase))]
[JsonSerializable(typeof(Chat.MessageViewSender))]
[JsonSerializable(typeof(Chat.ReactionView))]
[JsonSerializable(typeof(Chat.ReactionViewSender))]
[JsonSerializable(typeof(Chat.MessageAndReactionView))]
[JsonSerializable(typeof(Chat.UnreadConversationCounts))]
[JsonSerializable(typeof(Chat.ConversationAvailability))]
[JsonSerializable(typeof(Chat.GroupConversation))]
[JsonSerializable(typeof(Chat.MessageBeforeUserJoinedGroupView))]

[JsonSerializable(typeof(Chat.Logs), TypeInfoPropertyName = "ChatBSkyConvoLogs")]
[JsonSerializable(typeof(Chat.LogBase), TypeInfoPropertyName = "ChatBSkyConvoLogBase")]
[JsonSerializable(typeof(Chat.MessageLogBase), TypeInfoPropertyName = "ChatBSkyConvoMessageLogBase")]
[JsonSerializable(typeof(Chat.AcceptConversation), TypeInfoPropertyName = "ChatBSkyConvoAcceptConversation")]
[JsonSerializable(typeof(Chat.AddMember), TypeInfoPropertyName = "ChatBSkyConvoAddMember")]
[JsonSerializable(typeof(Chat.AddReaction), TypeInfoPropertyName = "ChatBSkyConvoAddReaction")]
[JsonSerializable(typeof(Chat.ApproveJoinRequest), TypeInfoPropertyName = "ChatBSkyConvoApproveJoinRequest")]
[JsonSerializable(typeof(Chat.BeginConversation), TypeInfoPropertyName = "ChatBSkyConvoBeginConversation")]
[JsonSerializable(typeof(Chat.CreateJoinLink), TypeInfoPropertyName = "ChatBSkyConvoCreateJoinLink")]
[JsonSerializable(typeof(Chat.CreateMessage), TypeInfoPropertyName = "ChatBSkyConvoCreateMessage")]
[JsonSerializable(typeof(Chat.DeleteMessage), TypeInfoPropertyName = "ChatBSkyConvoDeleteMessage")]
[JsonSerializable(typeof(Chat.DisableJoinLink), TypeInfoPropertyName = "ChatBSkyConvoDisableJoinLink")]
[JsonSerializable(typeof(Chat.EditJoinLink), TypeInfoPropertyName = "ChatBSkyConvoEditJoinLink")]
[JsonSerializable(typeof(Chat.EditGroup), TypeInfoPropertyName = "ChatBSkyConvoEditGroup")]
[JsonSerializable(typeof(Chat.EnableJoinLink), TypeInfoPropertyName = "ChatBSkyConvoEnableJoinLink")]
[JsonSerializable(typeof(Chat.IncomingJoinRequest), TypeInfoPropertyName = "ChatBSkyConvoIncomingJoinRequest")]
[JsonSerializable(typeof(Chat.LeaveConversation), TypeInfoPropertyName = "ChatBSkyConvoLeaveConversation")]
[JsonSerializable(typeof(Chat.LockConversation), TypeInfoPropertyName = "ChatBSkyConvoLockConversation")]
[JsonSerializable(typeof(Chat.LockConversationPermanently), TypeInfoPropertyName = "ChatBSkyConvoLockConversationPermanently")]
[JsonSerializable(typeof(Chat.MemberJoin), TypeInfoPropertyName = "ChatBSkyConvoMemberJoin")]
[JsonSerializable(typeof(Chat.MuteConversation), TypeInfoPropertyName = "ChatBSkyConvoMuteConversation")]
[JsonSerializable(typeof(Chat.OutgoingJoinRequest), TypeInfoPropertyName = "ChatBSkyConvoOutgoingJoinRequest")]
[JsonSerializable(typeof(Chat.ReadConversation), TypeInfoPropertyName = "ChatBSkyConvoReadConversation")]
[JsonSerializable(typeof(Chat.ReadJoinRequests), TypeInfoPropertyName = "ChatBSkyConvoReadJoinRequests")]
#pragma warning disable CS0618
[JsonSerializable(typeof(Chat.ReadMessage), TypeInfoPropertyName = "ChatBSkyConvoReadMessage")]
#pragma warning restore CS0618
[JsonSerializable(typeof(Chat.RejectJoinRequest), TypeInfoPropertyName = "ChatBSkyConvoRejectJoinRequest")]
[JsonSerializable(typeof(Chat.RemoveMember), TypeInfoPropertyName = "ChatBSkyConvoRemoveMember")]
[JsonSerializable(typeof(Chat.RemoveReaction), TypeInfoPropertyName = "ChatBSkyConvoRemoveReaction")]
[JsonSerializable(typeof(Chat.UnlockConversation), TypeInfoPropertyName = "ChatBSkyConvoUnlockConversation")]
[JsonSerializable(typeof(Chat.UnmuteConversation), TypeInfoPropertyName = "ChatBSkyConvoUnmuteConversation")]
[JsonSerializable(typeof(Chat.WithdrawIncomingJoinRequest), TypeInfoPropertyName = "ChatBSkyConvoWithdrawIncomingJoinRequest")]
[JsonSerializable(typeof(Chat.WithdrawOutgoingJoinRequest), TypeInfoPropertyName = "ChatBSkyConvoWithdrawOutgoingJoinRequest")]

[JsonSerializable(typeof(Chat.ConversationViewBase), TypeInfoPropertyName = "ChatBSkyConvoViewBase")]
[JsonSerializable(typeof(Chat.ConversationView), TypeInfoPropertyName = "ChatBSkyConvoView")]
[JsonSerializable(typeof(Chat.Group.JoinRequestConversationView), TypeInfoPropertyName = "ChatBSkyConvoViewWithMessages")]

[JsonSerializable(typeof(Chat.Convo.Model.AcceptConversationRequest))]
[JsonSerializable(typeof(Chat.Convo.Model.AcceptConversationResponse))]
[JsonSerializable(typeof(Chat.Convo.Model.AddReactionRequest))]
[JsonSerializable(typeof(Chat.Convo.Model.AddReactionResponse))]
[JsonSerializable(typeof(Chat.Convo.Model.ConversationIdPostRequest))]
[JsonSerializable(typeof(Chat.Convo.Model.ConversationResponse))]
[JsonSerializable(typeof(Chat.Convo.Model.DeleteMessageForSelfRequest))]
[JsonSerializable(typeof(Chat.Convo.Model.GetConversationMembersResponse))]
[JsonSerializable(typeof(Chat.Convo.Model.GetLogResponse))]
[JsonSerializable(typeof(Chat.Convo.Model.GetMessagesResponse))]
[JsonSerializable(typeof(Chat.Convo.Model.ListConversationsResponse), TypeInfoPropertyName = "ChatConvoModelListConversationsResponse")]
[JsonSerializable(typeof(Chat.Convo.Model.ListConvoRequestsResponse), TypeInfoPropertyName = "ChatConvoModelListConvoRequestsResponse")]
[JsonSerializable(typeof(Chat.Convo.Model.LockConversationRequest), TypeInfoPropertyName = "ChatConvoModelLockConversationRequest")]
[JsonSerializable(typeof(Chat.Convo.Model.LockConversationResponse), TypeInfoPropertyName = "ChatConvoModelLockConversationResponse")]
[JsonSerializable(typeof(Chat.Convo.Model.RemoveReactionRequest), TypeInfoPropertyName = "ChatConvoModelRemoveReactionRequest")]
[JsonSerializable(typeof(Chat.Convo.Model.RemoveReactionResponse), TypeInfoPropertyName = "ChatConvoModelRemoveReactionResponse")]
[JsonSerializable(typeof(Chat.Convo.Model.SendMessageBatchRequest), TypeInfoPropertyName = "ChatConvoModelSendMessageBatchRequest")]
[JsonSerializable(typeof(Chat.Convo.Model.SendMessageBatchResponse), TypeInfoPropertyName = "ChatConvoModelSendMessageBatchResponse")]
[JsonSerializable(typeof(Chat.Convo.Model.SendMessageRequest), TypeInfoPropertyName = "ChatConvoModelSendMessageRequest")]
[JsonSerializable(typeof(Chat.Convo.Model.UnlockConversationRequest), TypeInfoPropertyName = "ChatConvoModelUnlockConversationRequest")]
[JsonSerializable(typeof(Chat.Convo.Model.UnlockConversationResponse), TypeInfoPropertyName = "ChatConvoModelUnlockConversationResponse")]
[JsonSerializable(typeof(Chat.Convo.Model.UpdateAllReadRequest), TypeInfoPropertyName = "ChatConvoModelUpdateAllReadRequest")]
[JsonSerializable(typeof(Chat.Convo.Model.UpdateAllReadResponse), TypeInfoPropertyName = "ChatConvoModelUpdateAllReadResponse")]
[JsonSerializable(typeof(Chat.Convo.Model.UpdateReadRequest), TypeInfoPropertyName = "ChatConvoModelUpdateReadRequest")]


[JsonSerializable(typeof(idunno.Bluesky.Chat.Actor.Declaration), TypeInfoPropertyName = "ChatActorDeclaration")]
[JsonSerializable(typeof(idunno.Bluesky.Chat.Actor.ProfileViewBasic), TypeInfoPropertyName = "ChatActorProfileViewBasic")]
[JsonSerializable(typeof(ICollection<idunno.Bluesky.Chat.Actor.ProfileViewBasic>), TypeInfoPropertyName = "ChatActorProfileViewBasicCollection")]
[JsonSerializable(typeof(IReadOnlyCollection<idunno.Bluesky.Chat.Actor.ProfileViewBasic>), TypeInfoPropertyName = "ChatActorProfileViewBasicReadOnlyCollection")]
[JsonSerializable(typeof(idunno.Bluesky.Chat.Actor.MemberKind))]
[JsonSerializable(typeof(idunno.Bluesky.Chat.Actor.DirectConversationMember))]
[JsonSerializable(typeof(idunno.Bluesky.Chat.Actor.GroupConversationMember))]
[JsonSerializable(typeof(idunno.Bluesky.Chat.Actor.PastGroupConversationMember))]
[JsonSerializable(typeof(idunno.Bluesky.Chat.Actor.ChatStatus))]
[JsonSerializable(typeof(AtProtoRepositoryRecord<idunno.Bluesky.Chat.Actor.Declaration>), TypeInfoPropertyName = "ChatActorDeclarationRecord")]

[JsonSerializable(typeof(idunno.Bluesky.Chat.AddMemberSystemMessage), TypeInfoPropertyName = "ChatBSkyConvoAddMemberSystemMessage")]
[JsonSerializable(typeof(idunno.Bluesky.Chat.CreateJoinLinkSystemMessage), TypeInfoPropertyName = "ChatBSkyConvoCreateJoinLinkSystemMessage")]
[JsonSerializable(typeof(idunno.Bluesky.Chat.DisableJoinLinkSystemMessage), TypeInfoPropertyName = "ChatBSkyConvoDisableJoinLinkSystemMessage")]
[JsonSerializable(typeof(idunno.Bluesky.Chat.EditGroupSystemMessage), TypeInfoPropertyName = "ChatBSkyConvoEditGroupSystemMessage")]
[JsonSerializable(typeof(idunno.Bluesky.Chat.EditJoinLinkSystemMessage), TypeInfoPropertyName = "ChatBSkyConvoEditJoinLinkSystemMessage")]
[JsonSerializable(typeof(idunno.Bluesky.Chat.EnableJoinLinkSystemMessage), TypeInfoPropertyName = "ChatBSkyConvoEnableJoinLinkSystemMessage")]
[JsonSerializable(typeof(idunno.Bluesky.Chat.LockConversationSystemMessage), TypeInfoPropertyName = "ChatBSkyConvoLockConversationSystemMessage")]
[JsonSerializable(typeof(idunno.Bluesky.Chat.LockConversationPermanentlySystemMessage), TypeInfoPropertyName = "ChatBSkyConvoLockConversationPermanentlySystemMessage")]
[JsonSerializable(typeof(idunno.Bluesky.Chat.MemberJoinSystemMessage), TypeInfoPropertyName = "ChatBSkyConvoMemberJoinSystemMessage")]
[JsonSerializable(typeof(idunno.Bluesky.Chat.MemberLeaveSystemMessage), TypeInfoPropertyName = "ChatBSkyConvoMemberLeaveSystemMessage")]
[JsonSerializable(typeof(idunno.Bluesky.Chat.SystemMessageReferredUser), TypeInfoPropertyName = "ChatBSkyConvoReferredUser")]
[JsonSerializable(typeof(idunno.Bluesky.Chat.RemoveMemberSystemMessage), TypeInfoPropertyName = "ChatBSkyConvoRemoveMemberSystemMessage")]
[JsonSerializable(typeof(idunno.Bluesky.Chat.SystemMessageView), TypeInfoPropertyName = "ChatBSkyConvoSystemMessageView")]
[JsonSerializable(typeof(idunno.Bluesky.Chat.SystemMessage), TypeInfoPropertyName = "ChatBSkyConvoSystemMessage")]
[JsonSerializable(typeof(idunno.Bluesky.Chat.UnlockConversationSystemMessage), TypeInfoPropertyName = "ChatBSkyConvoUnlockConversationSystemMessage")]

[JsonSerializable(typeof(JoinLinkView))]

[JsonSerializable(typeof(AspectRatio))]
[JsonSerializable(typeof(EmbeddedBase))]
[JsonSerializable(typeof(EmbeddedExternal))]
[JsonSerializable(typeof(EmbeddedExternalView))]
[JsonSerializable(typeof(EmbeddedImage))]
[JsonSerializable(typeof(EmbeddedImages))]
[JsonSerializable(typeof(EmbeddedImageView))]
[JsonSerializable(typeof(EmbeddedImagesView))]
[JsonSerializable(typeof(EmbeddedMediaBase))]
[JsonSerializable(typeof(EmbeddedRecord))]
[JsonSerializable(typeof(EmbeddedRecordView))]
[JsonSerializable(typeof(EmbeddedRecordWithMedia))]
[JsonSerializable(typeof(EmbeddedRecordWithMediaView))]
[JsonSerializable(typeof(EmbeddedVideo))]
[JsonSerializable(typeof(EmbeddedVideoView))]
[JsonSerializable(typeof(EmbeddedView))]
[JsonSerializable(typeof(Embed.View), TypeInfoPropertyName = "EmbedView")]
[JsonSerializable(typeof(ViewBlocked))]
[JsonSerializable(typeof(ViewDetached))]
[JsonSerializable(typeof(ViewNotFound))]
[JsonSerializable(typeof(ViewRecord))]
[JsonSerializable(typeof(idunno.Bluesky.Embed.EmbeddedGallery))]
[JsonSerializable(typeof(idunno.Bluesky.Embed.Gallery.GalleryImage))]
[JsonSerializable(typeof(idunno.Bluesky.Embed.Gallery.View), TypeInfoPropertyName = "GalleryView")]
[JsonSerializable(typeof(idunno.Bluesky.Embed.Gallery.ViewImage), TypeInfoPropertyName = "GalleryViewImage")]

[JsonSerializable(typeof(DisableEmbeddingRule))]
[JsonSerializable(typeof(FollowerRule))]
[JsonSerializable(typeof(FollowingRule))]
[JsonSerializable(typeof(ListRule))]
[JsonSerializable(typeof(MentionRule))]
[JsonSerializable(typeof(PostGate))]
[JsonSerializable(typeof(PostGateRule))]
[JsonSerializable(typeof(ThreadGate))]
[JsonSerializable(typeof(ThreadGateRule))]
[JsonSerializable(typeof(GetActorFeedsResponse))]
[JsonSerializable(typeof(GetActorLikesResponse))]
[JsonSerializable(typeof(GetAuthorFeedResponse))]
[JsonSerializable(typeof(GetFeedGeneratorsResponse))]
[JsonSerializable(typeof(GetFeedResponse))]
[JsonSerializable(typeof(GetLikesResponse))]
[JsonSerializable(typeof(GetListFeedResponse))]
[JsonSerializable(typeof(GetPostsResponse))]
[JsonSerializable(typeof(GetQuotesResponse))]
[JsonSerializable(typeof(GetRepostedByResponse))]
[JsonSerializable(typeof(GetSuggestedFeedsResponse))]
[JsonSerializable(typeof(GetTimelineResponse))]
[JsonSerializable(typeof(SearchPostsResponse))]
[JsonSerializable(typeof(SearchPostsV2Response))]
[JsonSerializable(typeof(BlockedAuthor))]
[JsonSerializable(typeof(BlockedPost))]
[JsonSerializable(typeof(FeedGenerator))]
[JsonSerializable(typeof(FeedGeneratorDescription))]
[JsonSerializable(typeof(FeedViewerState))]
[JsonSerializable(typeof(FeedViewPost))]
[JsonSerializable(typeof(GeneratorView))]
[JsonSerializable(typeof(GeneratorViewerState))]
[JsonSerializable(typeof(Feed.Like), TypeInfoPropertyName = "FeedLike")]
[JsonSerializable(typeof(Likes))]
[JsonSerializable(typeof(NotFoundPost))]
[JsonSerializable(typeof(PostThread))]
[JsonSerializable(typeof(PostView))]
[JsonSerializable(typeof(PostViewBase))]
[JsonSerializable(typeof(QuotesCollection))]
[JsonSerializable(typeof(ReasonBase))]
[JsonSerializable(typeof(ReasonPin))]
[JsonSerializable(typeof(ReasonRepost))]
[JsonSerializable(typeof(idunno.Bluesky.Feed.ReplyReference), TypeInfoPropertyName = "FeedReplyReference")]
[JsonSerializable(typeof(RepostedBy))]
[JsonSerializable(typeof(RepostedBy))]
[JsonSerializable(typeof(SearchOrder))]
[JsonSerializable(typeof(SearchResults))]
[JsonSerializable(typeof(SuggestedFeeds))]
[JsonSerializable(typeof(ThreadContext))]
[JsonSerializable(typeof(ThreadGateView))]
[JsonSerializable(typeof(ThreadViewPost))]
[JsonSerializable(typeof(Timeline))]

[JsonSerializable(typeof(GetBlocksResponse))]
[JsonSerializable(typeof(GetFollowersResponse))]
[JsonSerializable(typeof(GetFollowsResponse))]
[JsonSerializable(typeof(GetListBlocksResponse))]
[JsonSerializable(typeof(GetListResponse))]
[JsonSerializable(typeof(GetListsResponse))]
[JsonSerializable(typeof(GetListsWithMembershipResponse))]
[JsonSerializable(typeof(GetMutesResponse))]
[JsonSerializable(typeof(GetRelationshipsResponse))]
[JsonSerializable(typeof(GetStarterPackResponse))]
[JsonSerializable(typeof(GetStarterPacksResponse))]
[JsonSerializable(typeof(MuteActorListRequest))]
[JsonSerializable(typeof(MuteActorRequest))]
[JsonSerializable(typeof(MuteThreadRequest))]
[JsonSerializable(typeof(Followers))]
[JsonSerializable(typeof(Follows))]
[JsonSerializable(typeof(ListItemView))]
[JsonSerializable(typeof(ListPurpose))]
[JsonSerializable(typeof(ListView))]
[JsonSerializable(typeof(ListViewBasic))]
[JsonSerializable(typeof(ListViewerState))]
[JsonSerializable(typeof(ListViewWithItems))]
[JsonSerializable(typeof(ListWithMembership))]
[JsonSerializable(typeof(NotFoundActor))]
[JsonSerializable(typeof(Relationship))]
[JsonSerializable(typeof(RelationshipType))]
[JsonSerializable(typeof(StarterPackView))]
[JsonSerializable(typeof(StarterPackViewBasic))]
[JsonSerializable(typeof(StarterPackWithMembership))]
[JsonSerializable(typeof(GetStarterPacksWithMembershipResponse))]
[JsonSerializable(typeof(SuggestedActors))]
[JsonSerializable(typeof(GetActorStarterPacksResponse))]
[JsonSerializable(typeof(Graph.RelationshipMap))]
[JsonSerializable(typeof(Graph.Relationship))]
[JsonSerializable(typeof(ICollection<Graph.Relationship>))]
[JsonSerializable(typeof(Graph.RelationshipType))]
[JsonSerializable(typeof(Graph.NotFoundActor))]
[JsonSerializable(typeof(Graph.Model.SearchStarterPacksResponse), TypeInfoPropertyName = "GraphModelSearchStarterPacksResponse")]
[JsonSerializable(typeof(Graph.Model.SearchStarterPacksV2Response), TypeInfoPropertyName = "GraphModelSearchStarterPacksV2Response")]

[JsonSerializable(typeof(Notifications.Model.GetPreferencesResponse), TypeInfoPropertyName = "NotificationGetPreferencesResponse")]
[JsonSerializable(typeof(Notifications.Model.ListActivitySubscriptionsResponse))]
[JsonSerializable(typeof(Notifications.Model.ListNotificationsResponse))]
[JsonSerializable(typeof(Notifications.Model.NotificationResponse))]
[JsonSerializable(typeof(Notifications.Model.PutPreferencesV2Request))]
[JsonSerializable(typeof(Notifications.Model.UnreadCountResponse))]
[JsonSerializable(typeof(Notifications.Model.UpdateSeenRequest))]
[JsonSerializable(typeof(NotificationCollection))]
[JsonSerializable(typeof(Notifications.Declaration), TypeInfoPropertyName = "NotificationDeclaration")]
[JsonSerializable(typeof(NotificationAllowedFrom))]
[JsonSerializable(typeof(AtProtoRepositoryRecord<Notifications.Declaration>))]
[JsonSerializable(typeof(ActivitySubscription))]
[JsonSerializable(typeof(SubjectActivitySubscription))]
[JsonSerializable(typeof(Notifications.Preferences), TypeInfoPropertyName = "NotificationPreferences")]

[JsonSerializable(typeof(ByteSlice))]
[JsonSerializable(typeof(Facet))]
[JsonSerializable(typeof(FacetFeature))]
[JsonSerializable(typeof(HashTag))]
[JsonSerializable(typeof(Link))]
[JsonSerializable(typeof(LinkFacetFeature))]
[JsonSerializable(typeof(Mention))]
[JsonSerializable(typeof(MentionFacetFeature))]
[JsonSerializable(typeof(TagFacetFeature))]

[JsonSerializable(typeof(JobStatusResponse))]
[JsonSerializable(typeof(JobStatusWireFormat))]
[JsonSerializable(typeof(UploadLimits))]

[JsonSerializable(typeof(Post))]
[JsonSerializable(typeof(AtProtoRepositoryRecord<Post>))]
[JsonSerializable(typeof(Bluesky.View), TypeInfoPropertyName = "BaseView")]

[JsonSerializable(typeof(LabelVisibility))]
[JsonSerializable(typeof(MutedWordTarget))]
[JsonSerializable(typeof(AllowIncomingChat))]
[JsonSerializable(typeof(SavedFeedPreferenceType))]
[JsonSerializable(typeof(ThreadSortingMode))]
[JsonSerializable(typeof(ListPurpose))]

[JsonSerializable(typeof(GetServicesResponse))]
[JsonSerializable(typeof(LabelerView))]
[JsonSerializable(typeof(LabelerViewDetailed))]
[JsonSerializable(typeof(LabelerViewerState))]
[JsonSerializable(typeof(DateTimeOffset))]

[JsonSerializable(typeof(CreateBookmarkRequest))]
[JsonSerializable(typeof(DeleteBookmarkRequest))]
[JsonSerializable(typeof(GetBookmarksResponse))]

[JsonSerializable(typeof(TrendingTopic))]
[JsonSerializable(typeof(GetPopularFeedGeneratorsResponse))]
[JsonSerializable(typeof(GetSuggestedStarterPacksResponse))]
[JsonSerializable(typeof(GetSuggestedUsersResponse))]
[JsonSerializable(typeof(Suggestion))]
[JsonSerializable(typeof(GetTaggedSuggestionsResponse))]
[JsonSerializable(typeof(GetTrendingTopicsResponse))]
[JsonSerializable(typeof(TrendView))]
[JsonSerializable(typeof(GetTrendsResponse))]
[JsonSerializable(typeof(AgeAssuranceStatus))]
[JsonSerializable(typeof(GetAgeAssuranceStateResponse))]

[JsonSerializable(typeof(Draft))]
[JsonSerializable(typeof(DraftEmbedCaption))]
[JsonSerializable(typeof(DraftEmbedExternal))]
[JsonSerializable(typeof(DraftEmbedImage))]
[JsonSerializable(typeof(DraftEmbedLocalRef))]
[JsonSerializable(typeof(DraftEmbedRecord))]
[JsonSerializable(typeof(DraftEmbedVideo))]
[JsonSerializable(typeof(DraftPost))]
[JsonSerializable(typeof(DraftView))]
[JsonSerializable(typeof(DraftWithId))]
[JsonSerializable(typeof(CreateDraftRequest))]
[JsonSerializable(typeof(CreateDraftResponse))]
[JsonSerializable(typeof(GetDraftsResponse))]
[JsonSerializable(typeof(DeleteDraftRequest))]
[JsonSerializable(typeof(UpdateDraftRequest))]

[JsonSerializable(typeof(Embed.External.Properties), TypeInfoPropertyName = "AppBskyEmbedExternalExternal")]
[JsonSerializable(typeof(Embed.External.View), TypeInfoPropertyName = "AppBskyEmbedExternalView")]
[JsonSerializable(typeof(Embed.External.Source.ColorRgb))]
[JsonSerializable(typeof(Embed.External.Source.Theme), TypeInfoPropertyName = "AppBskyEmbedExternalViewExternalSourceTheme")]
[JsonSerializable(typeof(Embed.External.Source.View), TypeInfoPropertyName = "AppBskyEmbedExternalViewExternalSource")]
[JsonSerializable(typeof(GetEmbedExternalResponse))]

[JsonSerializable(typeof(Standard.Site.Graph.Subscription), TypeInfoPropertyName = "StandardSiteGraphSubscription")]
[JsonSerializable(typeof(AtProtoRepositoryRecord<Standard.Site.Graph.Subscription>), TypeInfoPropertyName = "StandardSiteGraphSubscriptionRecord")]
[JsonSerializable(typeof(Standard.Site.BasicTheme), TypeInfoPropertyName = "StandardSiteBasicTheme")]
[JsonSerializable(typeof(Standard.Site.Document), TypeInfoPropertyName = "StandardSiteDocument")]
[JsonSerializable(typeof(AtProtoRepositoryRecord<Standard.Site.Document>), TypeInfoPropertyName = "StandardSiteDocumentRecord")]
[JsonSerializable(typeof(Standard.Site.Preferences), TypeInfoPropertyName = "StandardSitePreferences")]
[JsonSerializable(typeof(Standard.Site.Publication), TypeInfoPropertyName = "StandardSitePublication")]
[JsonSerializable(typeof(AtProtoRepositoryRecord<Standard.Site.Publication>), TypeInfoPropertyName = "StandardSitePublicationRecord")]
[JsonSerializable(typeof(Standard.Site.ThemeColor), TypeInfoPropertyName = "StandardSiteThemeColor")]
[JsonSerializable(typeof(Standard.Site.ThemeColorRgb), TypeInfoPropertyName = "StandardSiteThemeColorRgb")]
[JsonSerializable(typeof(Standard.Site.ThemeColorRgba), TypeInfoPropertyName = "StandardSiteThemeColorRgba")]

[JsonSerializable(typeof(GermNetwork.Com.Declaration), TypeInfoPropertyName = "GermNetworkComDeclaration")]
[JsonSerializable(typeof(AtProtoRepositoryRecord<GermNetwork.Com.Declaration>), TypeInfoPropertyName = "GermNetworkComDeclarationRecord")]
[JsonSerializable(typeof(GermNetwork.Com.MessageMe), TypeInfoPropertyName = "GermNetworkComMessageMe")]

[JsonSerializable(typeof(Chat.Group.DisabledJoinLinkPreviewView))]
[JsonSerializable(typeof(Chat.Group.InvalidJoinLinkPreviewView))]
[JsonSerializable(typeof(Chat.Group.JoinLinkPreviewView))]
[JsonSerializable(typeof(Chat.Group.JoinLinkPreviewViewBase))]
[JsonSerializable(typeof(Chat.Group.JoinLinkView))]
[JsonSerializable(typeof(Chat.Group.JoinLinkViewerState))]
[JsonSerializable(typeof(Chat.Group.JoinRequestConversationView))]
[JsonSerializable(typeof(Chat.Group.JoinRequestView))]
[JsonSerializable(typeof(PagedViewReadOnlyCollection<Chat.Group.JoinRequestConversationView>))]
[JsonSerializable(typeof(PagedViewReadOnlyCollection<Chat.Group.JoinRequestView>))]

[JsonSerializable(typeof(Chat.Group.Model.AddMembersRequest))]
[JsonSerializable(typeof(Chat.Group.Model.AddMembersResponse))]
[JsonSerializable(typeof(Chat.Group.Model.ApproveJoinRequest))]
[JsonSerializable(typeof(Chat.Group.Model.ApproveJoinResponse))]
[JsonSerializable(typeof(Chat.Group.Model.CreateGroupRequest))]
[JsonSerializable(typeof(Chat.Group.Model.CreateGroupResponse))]
[JsonSerializable(typeof(Chat.Group.Model.CreateJoinLinkRequest))]
[JsonSerializable(typeof(Chat.Group.Model.CreateJoinLinkResponse))]
[JsonSerializable(typeof(Chat.Group.Model.DisableJoinLinkRequest))]
[JsonSerializable(typeof(Chat.Group.Model.DisableJoinLinkResponse))]
[JsonSerializable(typeof(Chat.Group.Model.EditGroupRequest))]
[JsonSerializable(typeof(Chat.Group.Model.EditGroupResponse))]
[JsonSerializable(typeof(Chat.Group.Model.EditJoinLinkRequest))]
[JsonSerializable(typeof(Chat.Group.Model.EditJoinLinkResponse))]
[JsonSerializable(typeof(Chat.Group.Model.GetJoinLinkPreviewsResponse))]
[JsonSerializable(typeof(Chat.Group.Model.ListJoinRequestsResponse))]
[JsonSerializable(typeof(Chat.Group.Model.ListMutualGroupsResponse))]
[JsonSerializable(typeof(Chat.Group.Model.RequestJoinRequest))]
[JsonSerializable(typeof(Chat.Group.Model.RequestJoinResponse))]
[JsonSerializable(typeof(Chat.Group.Model.RemoveMembersRequest))]
[JsonSerializable(typeof(Chat.Group.Model.RemoveMembersResponse))]
[JsonSerializable(typeof(Chat.Group.Model.RequestJoinRequest))]
[JsonSerializable(typeof(Chat.Group.Model.RequestJoinResponse))]
[JsonSerializable(typeof(Chat.Group.Model.WithdrawJoinRequestRequest))]

[JsonSerializable(typeof(Chat.Notifications.Preference), TypeInfoPropertyName = "ChatNotificationsPreference")]
[JsonSerializable(typeof(Chat.Notifications.Preferences), TypeInfoPropertyName = "ChatNotificationsPreferences")]
[JsonSerializable(typeof(Chat.Model.GetPreferencesResponse), TypeInfoPropertyName = "ChatNotificationsModelGetPreferenceResponse")]
[JsonSerializable(typeof(Chat.Model.PutPreferencesRequest), TypeInfoPropertyName = "ChatNotificationsModelPutPrefereceRequest")]
[JsonSerializable(typeof(Chat.Model.PutPreferencesResponse), TypeInfoPropertyName = "ChatNotificationsModelPutPreferenceResponse")]
[JsonSerializable(typeof(Chat.ReplyReference), TypeInfoPropertyName = "ChatReplyReference")]

internal partial class SourceGenerationContext : JsonSerializerContext
{
}