// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. // See LICENSE.txt for license information. type PostType = | '' | 'system_add_remove' | 'system_add_to_channel' | 'system_add_to_team' | 'system_channel_deleted' | 'system_channel_restored' | 'system_displayname_change' | 'system_convert_channel' | 'system_ephemeral' | 'system_header_change' | 'system_join_channel' | 'system_join_leave' | 'system_leave_channel' | 'system_purpose_change' | 'system_remove_from_channel' | 'system_ephemeral_add_to_channel' | 'system_guest_join_channel' | 'system_add_guest_to_chan' | 'system_join_team' | 'system_leave_team' | 'system_remove_from_team' | 'system_combined_user_activity' | 'add_bot_teams_channels' | 'system_auto_responder' | 'custom_calls' | 'custom_calls_recording' | 'custom_run_update' | 'custom_llmbot' | 'custom_llm_postback' | 'burn_on_read'; type PostEmbedType = 'image' | 'message_attachment' | 'opengraph' | 'permalink'; type PostAcknowledgement = { post_id: string; user_id: string; acknowledged_at: number; } type PostPriority = { priority: '' | 'urgent' | 'important'; requested_ack?: boolean; persistent_notifications?: boolean; }; type PermalinkEmbedData = { post_id: string; post: Post; team_name: string; channel_display_name: string; channel_type: string; channel_id: string; }; type PostEmbed = { type: PostEmbedType; url: string; data: Record; }; type PostImage = { height: number; width: number; format?: string; frame_count?: number; }; type PostMetadata = { acknowledgements?: PostAcknowledgement[]; embeds?: PostEmbed[]; emojis?: CustomEmoji[]; files?: FileInfo[]; images?: Dictionary; reactions?: Reaction[]; priority?: PostPriority; expire_at?: number; }; type Post = { id: string; create_at: number; update_at: number; edit_at: number; delete_at: number; is_following?: boolean; is_pinned: boolean; user_id: string; channel_id: string; root_id: string; original_id: string; message: string; message_source?: string; type: PostType; participants?: null | UserProfile[]|string[]; props: Record | undefined; hashtags: string; pending_post_id: string; reply_count: number; file_ids?: any[]; metadata: PostMetadata; last_reply_at?: number; user_activity_posts?: Post[]; state?: 'DELETED'; prev_post_id?: string; }; type PostProps = { disable_group_highlight?: boolean; mentionHighlightDisabled: boolean; }; type PostResponse = { order: string[]; posts: IDMappedObjects; prev_post_id?: string; }; type SearchMatches = {[key: $ID]: string[]}; type SearchPostResponse = PostResponse & { matches?: SearchMatches; } type ProcessedPosts = { order: string[]; posts: Post[]; previousPostId?: string; } type MessageAttachment = { id?: number; fallback?: string; color?: string; pretext?: string; author_name?: string; author_link?: string; author_icon?: string; title?: string; title_link?: string; text?: string; fields?: MessageAttachmentField[]; image_url?: string; thumb_url?: string; footer?: string; footer_icon?: string; timestamp?: number | string; actions?: PostAction[]; }; type MessageAttachmentField = { title?: string; value?: any; short?: boolean; } type PostSearchParams = { terms: string; is_or_search: boolean; include_deleted_channels?: boolean; time_zone_offset?: number; page?: number; per_page?: number; }; type FetchPaginatedThreadOptions = { fetchThreads?: boolean; collapsedThreads?: boolean; collapsedThreadsExtended?: boolean; direction?: 'up'|'down'; fetchAll?: boolean; perPage?: number; fromCreateAt?: number; fromPost?: string; }