@stream-io/feeds-client 1.5.0 → 1.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../src/gen/models/index.ts","../../src/common/search/SearchController.ts","../../src/common/search/BaseSearchSource.ts","../../src/common/search/ActivitySearchSource.ts","../../src/common/search/FeedSearchSource.ts","../../src/common/search/UserSearchSource.ts"],"sourcesContent":["export interface AIImageConfig {\n enabled: boolean;\n\n ocr_rules: OCRRule[];\n\n rules: AWSRekognitionRule[];\n\n async?: boolean;\n}\n\nexport interface AIImageLabelDefinition {\n description: string;\n\n group: string;\n\n key: string;\n\n label: string;\n}\n\nexport interface AITextConfig {\n enabled: boolean;\n\n profile: string;\n\n rules: BodyguardRule[];\n\n severity_rules: BodyguardSeverityRule[];\n\n async?: boolean;\n}\n\nexport interface AIVideoConfig {\n enabled: boolean;\n\n rules: AWSRekognitionRule[];\n\n async?: boolean;\n}\n\nexport interface APIError {\n code: number;\n\n duration: string;\n\n message: string;\n\n more_info: string;\n\n status_code: number;\n\n details: number[];\n\n unrecoverable?: boolean;\n\n exception_fields?: Record<string, string>;\n}\n\nexport interface AWSRekognitionRule {\n action:\n | 'flag'\n | 'shadow'\n | 'remove'\n | 'bounce'\n | 'bounce_flag'\n | 'bounce_remove';\n\n label: string;\n\n min_confidence: number;\n\n subclassifications?: Record<string, any>;\n}\n\nexport interface AcceptFeedMemberInviteRequest {}\n\nexport interface AcceptFeedMemberInviteResponse {\n duration: string;\n\n member: FeedMemberResponse;\n}\n\nexport interface AcceptFollowRequest {\n source: string;\n\n target: string;\n\n follower_role?: string;\n}\n\nexport interface AcceptFollowResponse {\n duration: string;\n\n follow: FollowResponse;\n}\n\nexport interface Action {\n name: string;\n\n text: string;\n\n type: string;\n\n style?: string;\n\n value?: string;\n}\n\nexport interface ActionLogResponse {\n created_at: Date;\n\n id: string;\n\n reason: string;\n\n target_user_id: string;\n\n type: string;\n\n user_id: string;\n\n ai_providers: string[];\n\n custom: Record<string, any>;\n\n review_queue_item?: ReviewQueueItemResponse;\n\n target_user?: UserResponse;\n\n user?: UserResponse;\n}\n\nexport interface ActionSequence {\n action: string;\n\n blur: boolean;\n\n cooldown_period: number;\n\n threshold: number;\n\n time_window: number;\n\n warning: boolean;\n\n warning_text: string;\n}\n\nexport interface ActivityAddedEvent {\n created_at: Date;\n\n fid: string;\n\n activity: ActivityResponse;\n\n custom: Record<string, any>;\n\n type: string;\n\n feed_visibility?: string;\n\n received_at?: Date;\n\n user?: UserResponseCommonFields;\n}\n\nexport interface ActivityDeletedEvent {\n created_at: Date;\n\n fid: string;\n\n activity: ActivityResponse;\n\n custom: Record<string, any>;\n\n type: string;\n\n feed_visibility?: string;\n\n received_at?: Date;\n\n user?: UserResponseCommonFields;\n}\n\nexport interface ActivityFeedbackEvent {\n created_at: Date;\n\n activity_feedback: ActivityFeedbackEventPayload;\n\n custom: Record<string, any>;\n\n type: string;\n\n received_at?: Date;\n\n user?: UserResponseCommonFields;\n}\n\nexport interface ActivityFeedbackEventPayload {\n action: 'hide' | 'show_more' | 'show_less';\n\n activity_id: string;\n\n created_at: Date;\n\n updated_at: Date;\n\n value: string;\n\n user: UserResponse;\n}\n\nexport interface ActivityFeedbackRequest {\n hide?: boolean;\n\n show_less?: boolean;\n\n show_more?: boolean;\n}\n\nexport interface ActivityFeedbackResponse {\n activity_id: string;\n\n duration: string;\n}\n\nexport interface ActivityLocation {\n lat: number;\n\n lng: number;\n}\n\nexport interface ActivityMarkEvent {\n created_at: Date;\n\n fid: string;\n\n custom: Record<string, any>;\n\n type: string;\n\n feed_visibility?: string;\n\n mark_all_read?: boolean;\n\n mark_all_seen?: boolean;\n\n received_at?: Date;\n\n mark_read?: string[];\n\n mark_seen?: string[];\n\n mark_watched?: string[];\n\n user?: UserResponseCommonFields;\n}\n\nexport interface ActivityPinResponse {\n created_at: Date;\n\n feed: string;\n\n updated_at: Date;\n\n activity: ActivityResponse;\n\n user: UserResponse;\n}\n\nexport interface ActivityPinnedEvent {\n created_at: Date;\n\n fid: string;\n\n custom: Record<string, any>;\n\n pinned_activity: PinActivityResponse;\n\n type: string;\n\n feed_visibility?: string;\n\n received_at?: Date;\n\n user?: UserResponseCommonFields;\n}\n\nexport interface ActivityProcessorConfig {\n type: string;\n\n openai_key?: string;\n\n config?: Record<string, any>;\n}\n\nexport interface ActivityReactionAddedEvent {\n created_at: Date;\n\n fid: string;\n\n activity: ActivityResponse;\n\n custom: Record<string, any>;\n\n reaction: FeedsReactionResponse;\n\n type: string;\n\n feed_visibility?: string;\n\n received_at?: Date;\n\n user?: UserResponseCommonFields;\n}\n\nexport interface ActivityReactionDeletedEvent {\n created_at: Date;\n\n fid: string;\n\n activity: ActivityResponse;\n\n custom: Record<string, any>;\n\n reaction: FeedsReactionResponse;\n\n type: string;\n\n feed_visibility?: string;\n\n received_at?: Date;\n\n user?: UserResponseCommonFields;\n}\n\nexport interface ActivityReactionUpdatedEvent {\n created_at: Date;\n\n fid: string;\n\n activity: ActivityResponse;\n\n custom: Record<string, any>;\n\n reaction: FeedsReactionResponse;\n\n type: string;\n\n feed_visibility?: string;\n\n received_at?: Date;\n\n user?: UserResponseCommonFields;\n}\n\nexport interface ActivityRemovedFromFeedEvent {\n created_at: Date;\n\n fid: string;\n\n activity: ActivityResponse;\n\n custom: Record<string, any>;\n\n type: string;\n\n feed_visibility?: string;\n\n received_at?: Date;\n\n user?: UserResponseCommonFields;\n}\n\nexport interface ActivityRequest {\n type: string;\n\n feeds: string[];\n\n copy_custom_to_notification?: boolean;\n\n create_notification_activity?: boolean;\n\n expires_at?: string;\n\n id?: string;\n\n parent_id?: string;\n\n poll_id?: string;\n\n restrict_replies?: 'everyone' | 'people_i_follow' | 'nobody';\n\n skip_enrich_url?: boolean;\n\n skip_push?: boolean;\n\n text?: string;\n\n visibility?: 'public' | 'private' | 'tag';\n\n visibility_tag?: string;\n\n attachments?: Attachment[];\n\n collection_refs?: string[];\n\n filter_tags?: string[];\n\n interest_tags?: string[];\n\n mentioned_user_ids?: string[];\n\n custom?: Record<string, any>;\n\n location?: ActivityLocation;\n\n search_data?: Record<string, any>;\n}\n\nexport interface ActivityResponse {\n bookmark_count: number;\n\n comment_count: number;\n\n created_at: Date;\n\n hidden: boolean;\n\n id: string;\n\n popularity: number;\n\n preview: boolean;\n\n reaction_count: number;\n\n restrict_replies: 'everyone' | 'people_i_follow' | 'nobody';\n\n score: number;\n\n share_count: number;\n\n type: string;\n\n updated_at: Date;\n\n visibility: 'public' | 'private' | 'tag';\n\n attachments: Attachment[];\n\n comments: CommentResponse[];\n\n feeds: string[];\n\n filter_tags: string[];\n\n interest_tags: string[];\n\n latest_reactions: FeedsReactionResponse[];\n\n mentioned_users: UserResponse[];\n\n own_bookmarks: BookmarkResponse[];\n\n own_reactions: FeedsReactionResponse[];\n\n collections: Record<string, EnrichedCollectionResponse>;\n\n custom: Record<string, any>;\n\n reaction_groups: Record<string, FeedsReactionGroupResponse>;\n\n search_data: Record<string, any>;\n\n user: UserResponse;\n\n deleted_at?: Date;\n\n edited_at?: Date;\n\n expires_at?: Date;\n\n friend_reaction_count?: number;\n\n is_read?: boolean;\n\n is_seen?: boolean;\n\n is_watched?: boolean;\n\n moderation_action?: string;\n\n selector_source?: string;\n\n text?: string;\n\n visibility_tag?: string;\n\n friend_reactions?: FeedsReactionResponse[];\n\n current_feed?: FeedResponse;\n\n location?: ActivityLocation;\n\n metrics?: Record<string, number>;\n\n moderation?: ModerationV2Response;\n\n notification_context?: NotificationContext;\n\n parent?: ActivityResponse;\n\n poll?: PollResponseData;\n\n score_vars?: Record<string, any>;\n}\n\nexport interface ActivityRestoredEvent {\n created_at: Date;\n\n fid: string;\n\n activity: ActivityResponse;\n\n custom: Record<string, any>;\n\n type: string;\n\n feed_visibility?: string;\n\n received_at?: Date;\n\n user?: UserResponseCommonFields;\n}\n\nexport interface ActivitySelectorConfig {\n cutoff_time: Date;\n\n cutoff_window?: string;\n\n min_popularity?: number;\n\n type?: string;\n\n sort?: SortParam[];\n\n filter?: Record<string, any>;\n\n params?: Record<string, any>;\n}\n\nexport interface ActivityUnpinnedEvent {\n created_at: Date;\n\n fid: string;\n\n custom: Record<string, any>;\n\n pinned_activity: PinActivityResponse;\n\n type: string;\n\n feed_visibility?: string;\n\n received_at?: Date;\n\n user?: UserResponseCommonFields;\n}\n\nexport interface ActivityUpdatedEvent {\n created_at: Date;\n\n fid: string;\n\n activity: ActivityResponse;\n\n custom: Record<string, any>;\n\n type: string;\n\n feed_visibility?: string;\n\n received_at?: Date;\n\n user?: UserResponseCommonFields;\n}\n\nexport interface AddActivityRequest {\n type: string;\n\n feeds: string[];\n\n copy_custom_to_notification?: boolean;\n\n create_notification_activity?: boolean;\n\n enrich_own_fields?: boolean;\n\n expires_at?: string;\n\n id?: string;\n\n parent_id?: string;\n\n poll_id?: string;\n\n restrict_replies?: 'everyone' | 'people_i_follow' | 'nobody';\n\n skip_enrich_url?: boolean;\n\n skip_push?: boolean;\n\n text?: string;\n\n visibility?: 'public' | 'private' | 'tag';\n\n visibility_tag?: string;\n\n attachments?: Attachment[];\n\n collection_refs?: string[];\n\n filter_tags?: string[];\n\n interest_tags?: string[];\n\n mentioned_user_ids?: string[];\n\n custom?: Record<string, any>;\n\n location?: ActivityLocation;\n\n search_data?: Record<string, any>;\n}\n\nexport interface AddActivityResponse {\n duration: string;\n\n activity: ActivityResponse;\n\n mention_notifications_created?: number;\n}\n\nexport interface AddBookmarkRequest {\n folder_id?: string;\n\n custom?: Record<string, any>;\n\n new_folder?: AddFolderRequest;\n}\n\nexport interface AddBookmarkResponse {\n duration: string;\n\n bookmark: BookmarkResponse;\n}\n\nexport interface AddCommentReactionRequest {\n type: string;\n\n copy_custom_to_notification?: boolean;\n\n create_notification_activity?: boolean;\n\n enforce_unique?: boolean;\n\n skip_push?: boolean;\n\n custom?: Record<string, any>;\n}\n\nexport interface AddCommentReactionResponse {\n duration: string;\n\n comment: CommentResponse;\n\n reaction: FeedsReactionResponse;\n\n notification_created?: boolean;\n}\n\nexport interface AddCommentRequest {\n comment?: string;\n\n copy_custom_to_notification?: boolean;\n\n create_notification_activity?: boolean;\n\n id?: string;\n\n object_id?: string;\n\n object_type?: string;\n\n parent_id?: string;\n\n skip_enrich_url?: boolean;\n\n skip_push?: boolean;\n\n attachments?: Attachment[];\n\n mentioned_user_ids?: string[];\n\n custom?: Record<string, any>;\n}\n\nexport interface AddCommentResponse {\n duration: string;\n\n comment: CommentResponse;\n\n mention_notifications_created?: number;\n\n notification_created?: boolean;\n}\n\nexport interface AddCommentsBatchRequest {\n comments: AddCommentRequest[];\n}\n\nexport interface AddCommentsBatchResponse {\n duration: string;\n\n comments: CommentResponse[];\n}\n\nexport interface AddFolderRequest {\n name: string;\n\n custom?: Record<string, any>;\n}\n\nexport interface AddReactionRequest {\n type: string;\n\n copy_custom_to_notification?: boolean;\n\n create_notification_activity?: boolean;\n\n enforce_unique?: boolean;\n\n skip_push?: boolean;\n\n custom?: Record<string, any>;\n}\n\nexport interface AddReactionResponse {\n duration: string;\n\n activity: ActivityResponse;\n\n reaction: FeedsReactionResponse;\n\n notification_created?: boolean;\n}\n\nexport interface AddUserGroupMembersRequest {\n member_ids: string[];\n\n team_id?: string;\n}\n\nexport interface AddUserGroupMembersResponse {\n duration: string;\n\n user_group?: UserGroupResponse;\n}\n\nexport interface AggregatedActivityResponse {\n activity_count: number;\n\n created_at: Date;\n\n group: string;\n\n score: number;\n\n updated_at: Date;\n\n user_count: number;\n\n user_count_truncated: boolean;\n\n activities: ActivityResponse[];\n\n is_read?: boolean;\n\n is_seen?: boolean;\n\n is_watched?: boolean;\n}\n\nexport interface AggregationConfig {\n format?: string;\n\n group_size?: number;\n}\n\nexport interface AppEventResponse {\n auto_translation_enabled: boolean;\n\n name: string;\n\n async_url_enrich_enabled?: boolean;\n\n file_upload_config?: FileUploadConfig;\n\n image_upload_config?: FileUploadConfig;\n}\n\nexport interface AppResponseFields {\n async_url_enrich_enabled: boolean;\n\n auto_translation_enabled: boolean;\n\n id: number;\n\n name: string;\n\n placement: string;\n\n file_upload_config: FileUploadConfig;\n\n image_upload_config: FileUploadConfig;\n}\n\nexport interface AppUpdatedEvent {\n created_at: Date;\n\n app: AppEventResponse;\n\n custom: Record<string, any>;\n\n type: string;\n\n received_at?: Date;\n}\n\nexport interface AppealItemResponse {\n appeal_reason: string;\n\n created_at: Date;\n\n entity_id: string;\n\n entity_type: string;\n\n id: string;\n\n status: string;\n\n updated_at: Date;\n\n decision_reason?: string;\n\n attachments?: string[];\n\n entity_content?: ModerationPayload;\n\n user?: UserResponse;\n}\n\nexport interface AppealRequest {\n appeal_reason: string;\n\n entity_id: string;\n\n entity_type: string;\n\n attachments?: string[];\n}\n\nexport interface AppealResponse {\n appeal_id: string;\n\n duration: string;\n}\n\nexport interface Attachment {\n custom: Record<string, any>;\n\n asset_url?: string;\n\n author_icon?: string;\n\n author_link?: string;\n\n author_name?: string;\n\n color?: string;\n\n fallback?: string;\n\n footer?: string;\n\n footer_icon?: string;\n\n image_url?: string;\n\n og_scrape_url?: string;\n\n original_height?: number;\n\n original_width?: number;\n\n pretext?: string;\n\n text?: string;\n\n thumb_url?: string;\n\n title?: string;\n\n title_link?: string;\n\n type?: string;\n\n actions?: Action[];\n\n fields?: Field[];\n\n giphy?: Images;\n}\n\nexport interface AudioSettingsResponse {\n access_request_enabled: boolean;\n\n default_device: 'speaker' | 'earpiece';\n\n hifi_audio_enabled: boolean;\n\n mic_default_on: boolean;\n\n opus_dtx_enabled: boolean;\n\n redundant_coding_enabled: boolean;\n\n speaker_default_on: boolean;\n\n noise_cancellation?: NoiseCancellationSettings;\n}\n\nexport interface AutomodPlatformCircumventionConfig {\n enabled: boolean;\n\n rules: AutomodRule[];\n\n async?: boolean;\n}\n\nexport interface AutomodRule {\n action:\n | 'flag'\n | 'shadow'\n | 'remove'\n | 'bounce'\n | 'bounce_flag'\n | 'bounce_remove';\n\n label: string;\n\n threshold: number;\n}\n\nexport interface AutomodSemanticFiltersConfig {\n enabled: boolean;\n\n rules: AutomodSemanticFiltersRule[];\n\n async?: boolean;\n}\n\nexport interface AutomodSemanticFiltersRule {\n action: 'flag' | 'shadow' | 'remove';\n\n name: string;\n\n threshold: number;\n}\n\nexport interface AutomodToxicityConfig {\n enabled: boolean;\n\n rules: AutomodRule[];\n\n async?: boolean;\n}\n\nexport interface BackstageSettingsResponse {\n enabled: boolean;\n\n join_ahead_time_seconds?: number;\n}\n\nexport interface BanActionRequestPayload {\n channel_ban_only?: boolean;\n\n channel_cid?: string;\n\n delete_messages?: 'soft' | 'pruning' | 'hard';\n\n ip_ban?: boolean;\n\n reason?: string;\n\n shadow?: boolean;\n\n target_user_id?: string;\n\n timeout?: number;\n}\n\nexport interface BanInfoResponse {\n created_at: Date;\n\n expires?: Date;\n\n reason?: string;\n\n shadow?: boolean;\n\n created_by?: UserResponse;\n\n user?: UserResponse;\n}\n\nexport interface BanOptions {\n delete_messages?: 'soft' | 'pruning' | 'hard';\n\n duration?: number;\n\n ip_ban?: boolean;\n\n reason?: string;\n\n shadow_ban?: boolean;\n}\n\nexport interface BanRequest {\n target_user_id: string;\n\n banned_by_id?: string;\n\n channel_cid?: string;\n\n delete_messages?: 'soft' | 'pruning' | 'hard';\n\n ip_ban?: boolean;\n\n reason?: string;\n\n shadow?: boolean;\n\n timeout?: number;\n\n banned_by?: UserRequest;\n}\n\nexport interface BanResponse {\n duration: string;\n}\n\nexport interface BlockActionRequestPayload {\n reason?: string;\n}\n\nexport interface BlockListConfig {\n enabled: boolean;\n\n rules: BlockListRule[];\n\n async?: boolean;\n\n match_substring?: boolean;\n}\n\nexport interface BlockListOptions {\n behavior: 'flag' | 'block' | 'shadow_block';\n\n blocklist: string;\n}\n\nexport interface BlockListResponse {\n is_leet_check_enabled: boolean;\n\n is_plural_check_enabled: boolean;\n\n name: string;\n\n type: string;\n\n words: string[];\n\n created_at?: Date;\n\n id?: string;\n\n team?: string;\n\n updated_at?: Date;\n}\n\nexport interface BlockListRule {\n action:\n | 'flag'\n | 'mask_flag'\n | 'shadow'\n | 'remove'\n | 'bounce'\n | 'bounce_flag'\n | 'bounce_remove';\n\n name: string;\n\n team: string;\n}\n\nexport interface BlockUsersRequest {\n blocked_user_id: string;\n}\n\nexport interface BlockUsersResponse {\n blocked_by_user_id: string;\n\n blocked_user_id: string;\n\n created_at: Date;\n\n duration: string;\n}\n\nexport interface BlockedUserResponse {\n blocked_user_id: string;\n\n created_at: Date;\n\n user_id: string;\n\n blocked_user: UserResponse;\n\n user: UserResponse;\n}\n\nexport interface BodyguardRule {\n action:\n | 'flag'\n | 'shadow'\n | 'remove'\n | 'bounce'\n | 'bounce_flag'\n | 'bounce_remove';\n\n label: string;\n\n severity_rules: BodyguardSeverityRule[];\n}\n\nexport interface BodyguardSeverityRule {\n action:\n | 'flag'\n | 'shadow'\n | 'remove'\n | 'bounce'\n | 'bounce_flag'\n | 'bounce_remove';\n\n severity: 'low' | 'medium' | 'high' | 'critical';\n}\n\nexport interface BookmarkAddedEvent {\n created_at: Date;\n\n bookmark: BookmarkResponse;\n\n custom: Record<string, any>;\n\n type: string;\n\n received_at?: Date;\n\n user?: UserResponseCommonFields;\n}\n\nexport interface BookmarkDeletedEvent {\n created_at: Date;\n\n bookmark: BookmarkResponse;\n\n custom: Record<string, any>;\n\n type: string;\n\n received_at?: Date;\n\n user?: UserResponseCommonFields;\n}\n\nexport interface BookmarkFolderDeletedEvent {\n created_at: Date;\n\n bookmark_folder: BookmarkFolderResponse;\n\n custom: Record<string, any>;\n\n type: string;\n\n received_at?: Date;\n\n user?: UserResponseCommonFields;\n}\n\nexport interface BookmarkFolderResponse {\n created_at: Date;\n\n id: string;\n\n name: string;\n\n updated_at: Date;\n\n user: UserResponse;\n\n custom?: Record<string, any>;\n}\n\nexport interface BookmarkFolderUpdatedEvent {\n created_at: Date;\n\n bookmark_folder: BookmarkFolderResponse;\n\n custom: Record<string, any>;\n\n type: string;\n\n received_at?: Date;\n\n user?: UserResponseCommonFields;\n}\n\nexport interface BookmarkResponse {\n created_at: Date;\n\n updated_at: Date;\n\n activity: ActivityResponse;\n\n user: UserResponse;\n\n custom?: Record<string, any>;\n\n folder?: BookmarkFolderResponse;\n}\n\nexport interface BookmarkUpdatedEvent {\n created_at: Date;\n\n bookmark: BookmarkResponse;\n\n custom: Record<string, any>;\n\n type: string;\n\n received_at?: Date;\n\n user?: UserResponseCommonFields;\n}\n\nexport interface BroadcastSettingsResponse {\n enabled: boolean;\n\n hls: HLSSettingsResponse;\n\n rtmp: RTMPSettingsResponse;\n}\n\nexport interface CallActionOptions {\n duration?: number;\n\n flag_reason?: string;\n\n kick_reason?: string;\n\n mute_audio?: boolean;\n\n mute_video?: boolean;\n\n reason?: string;\n\n warning_text?: string;\n}\n\nexport interface CallCustomPropertyParameters {\n operator?: string;\n\n property_key?: string;\n}\n\nexport interface CallIngressResponse {\n rtmp: RTMPIngress;\n\n srt: SRTIngress;\n\n whip: WHIPIngress;\n}\n\nexport interface CallParticipantResponse {\n joined_at: Date;\n\n role: string;\n\n user_session_id: string;\n\n user: UserResponse;\n}\n\nexport interface CallResponse {\n backstage: boolean;\n\n captioning: boolean;\n\n cid: string;\n\n created_at: Date;\n\n current_session_id: string;\n\n id: string;\n\n recording: boolean;\n\n transcribing: boolean;\n\n translating: boolean;\n\n type: string;\n\n updated_at: Date;\n\n blocked_user_ids: string[];\n\n created_by: UserResponse;\n\n custom: Record<string, any>;\n\n egress: EgressResponse;\n\n ingress: CallIngressResponse;\n\n settings: CallSettingsResponse;\n\n channel_cid?: string;\n\n ended_at?: Date;\n\n join_ahead_time_seconds?: number;\n\n routing_number?: string;\n\n starts_at?: Date;\n\n team?: string;\n\n session?: CallSessionResponse;\n\n thumbnails?: ThumbnailResponse;\n}\n\nexport interface CallRuleActionSequence {\n violation_number?: number;\n\n actions?: string[];\n\n call_options?: CallActionOptions;\n}\n\nexport interface CallSessionResponse {\n anonymous_participant_count: number;\n\n id: string;\n\n participants: CallParticipantResponse[];\n\n accepted_by: Record<string, Date>;\n\n missed_by: Record<string, Date>;\n\n participants_count_by_role: Record<string, number>;\n\n rejected_by: Record<string, Date>;\n\n ended_at?: Date;\n\n live_ended_at?: Date;\n\n live_started_at?: Date;\n\n started_at?: Date;\n\n timer_ends_at?: Date;\n}\n\nexport interface CallSettingsResponse {\n audio: AudioSettingsResponse;\n\n backstage: BackstageSettingsResponse;\n\n broadcasting: BroadcastSettingsResponse;\n\n frame_recording: FrameRecordingSettingsResponse;\n\n geofencing: GeofenceSettingsResponse;\n\n individual_recording: IndividualRecordingSettingsResponse;\n\n limits: LimitsSettingsResponse;\n\n raw_recording: RawRecordingSettingsResponse;\n\n recording: RecordSettingsResponse;\n\n ring: RingSettingsResponse;\n\n screensharing: ScreensharingSettingsResponse;\n\n session: SessionSettingsResponse;\n\n thumbnails: ThumbnailsSettingsResponse;\n\n transcription: TranscriptionSettingsResponse;\n\n video: VideoSettingsResponse;\n\n ingress?: IngressSettingsResponse;\n}\n\nexport interface CallTypeRuleParameters {\n call_type?: string;\n}\n\nexport interface CallViolationCountParameters {\n threshold?: number;\n\n time_window?: string;\n}\n\nexport interface CastPollVoteRequest {\n vote?: VoteData;\n}\n\nexport interface ChannelConfigWithInfo {\n automod: 'disabled' | 'simple' | 'AI';\n\n automod_behavior: 'flag' | 'block' | 'shadow_block';\n\n connect_events: boolean;\n\n count_messages: boolean;\n\n created_at: Date;\n\n custom_events: boolean;\n\n delivery_events: boolean;\n\n mark_messages_pending: boolean;\n\n max_message_length: number;\n\n mutes: boolean;\n\n name: string;\n\n polls: boolean;\n\n push_notifications: boolean;\n\n quotes: boolean;\n\n reactions: boolean;\n\n read_events: boolean;\n\n reminders: boolean;\n\n replies: boolean;\n\n search: boolean;\n\n shared_locations: boolean;\n\n skip_last_msg_update_for_system_msgs: boolean;\n\n typing_events: boolean;\n\n updated_at: Date;\n\n uploads: boolean;\n\n url_enrichment: boolean;\n\n user_message_reminders: boolean;\n\n commands: Command[];\n\n blocklist?: string;\n\n blocklist_behavior?: 'flag' | 'block' | 'shadow_block';\n\n partition_size?: number;\n\n partition_ttl?: string;\n\n push_level?: 'all' | 'all_mentions' | 'mentions' | 'direct_mentions' | 'none';\n\n allowed_flag_reasons?: string[];\n\n blocklists?: BlockListOptions[];\n\n automod_thresholds?: Thresholds;\n\n chat_preferences?: ChatPreferences;\n\n grants?: Record<string, string[]>;\n}\n\nexport interface ChannelMemberResponse {\n banned: boolean;\n\n channel_role: string;\n\n created_at: Date;\n\n notifications_muted: boolean;\n\n shadow_banned: boolean;\n\n updated_at: Date;\n\n custom: Record<string, any>;\n\n archived_at?: Date;\n\n ban_expires?: Date;\n\n deleted_at?: Date;\n\n invite_accepted_at?: Date;\n\n invite_rejected_at?: Date;\n\n invited?: boolean;\n\n is_moderator?: boolean;\n\n pinned_at?: Date;\n\n role?: string;\n\n status?: string;\n\n user_id?: string;\n\n deleted_messages?: string[];\n\n user?: UserResponse;\n}\n\nexport interface ChannelMute {\n created_at: Date;\n\n updated_at: Date;\n\n expires?: Date;\n\n channel?: ChannelResponse;\n\n user?: UserResponse;\n}\n\nexport const ChannelOwnCapability = {\n BAN_CHANNEL_MEMBERS: 'ban-channel-members',\n CAST_POLL_VOTE: 'cast-poll-vote',\n CONNECT_EVENTS: 'connect-events',\n CREATE_ATTACHMENT: 'create-attachment',\n DELETE_ANY_MESSAGE: 'delete-any-message',\n DELETE_CHANNEL: 'delete-channel',\n DELETE_OWN_MESSAGE: 'delete-own-message',\n DELIVERY_EVENTS: 'delivery-events',\n FLAG_MESSAGE: 'flag-message',\n FREEZE_CHANNEL: 'freeze-channel',\n JOIN_CHANNEL: 'join-channel',\n LEAVE_CHANNEL: 'leave-channel',\n MUTE_CHANNEL: 'mute-channel',\n PIN_MESSAGE: 'pin-message',\n QUERY_POLL_VOTES: 'query-poll-votes',\n QUOTE_MESSAGE: 'quote-message',\n READ_EVENTS: 'read-events',\n SEARCH_MESSAGES: 'search-messages',\n SEND_CUSTOM_EVENTS: 'send-custom-events',\n SEND_LINKS: 'send-links',\n SEND_MESSAGE: 'send-message',\n SEND_POLL: 'send-poll',\n SEND_REACTION: 'send-reaction',\n SEND_REPLY: 'send-reply',\n SEND_RESTRICTED_VISIBILITY_MESSAGE: 'send-restricted-visibility-message',\n SEND_TYPING_EVENTS: 'send-typing-events',\n SET_CHANNEL_COOLDOWN: 'set-channel-cooldown',\n SHARE_LOCATION: 'share-location',\n SKIP_SLOW_MODE: 'skip-slow-mode',\n SLOW_MODE: 'slow-mode',\n TYPING_EVENTS: 'typing-events',\n UPDATE_ANY_MESSAGE: 'update-any-message',\n UPDATE_CHANNEL: 'update-channel',\n UPDATE_CHANNEL_MEMBERS: 'update-channel-members',\n UPDATE_OWN_MESSAGE: 'update-own-message',\n UPDATE_THREAD: 'update-thread',\n UPLOAD_FILE: 'upload-file',\n} as const;\n\nexport type ChannelOwnCapability =\n (typeof ChannelOwnCapability)[keyof typeof ChannelOwnCapability];\n\nexport interface ChannelPushPreferencesResponse {\n chat_level?: string;\n\n disabled_until?: Date;\n\n chat_preferences?: ChatPreferencesResponse;\n}\n\nexport interface ChannelResponse {\n cid: string;\n\n created_at: Date;\n\n disabled: boolean;\n\n frozen: boolean;\n\n id: string;\n\n type: string;\n\n updated_at: Date;\n\n custom: Record<string, any>;\n\n auto_translation_enabled?: boolean;\n\n auto_translation_language?: string;\n\n blocked?: boolean;\n\n cooldown?: number;\n\n deleted_at?: Date;\n\n hidden?: boolean;\n\n hide_messages_before?: Date;\n\n last_message_at?: Date;\n\n member_count?: number;\n\n message_count?: number;\n\n mute_expires_at?: Date;\n\n muted?: boolean;\n\n team?: string;\n\n truncated_at?: Date;\n\n filter_tags?: string[];\n\n members?: ChannelMemberResponse[];\n\n own_capabilities?: ChannelOwnCapability[];\n\n config?: ChannelConfigWithInfo;\n\n created_by?: UserResponse;\n\n truncated_by?: UserResponse;\n}\n\nexport interface ChatPreferences {\n channel_mentions?: string;\n\n default_preference?: string;\n\n direct_mentions?: string;\n\n distinct_channel_messages?: string;\n\n group_mentions?: string;\n\n here_mentions?: string;\n\n role_mentions?: string;\n\n thread_replies?: string;\n}\n\nexport interface ChatPreferencesInput {\n channel_mentions?: 'all' | 'none';\n\n default_preference?: 'all' | 'none';\n\n direct_mentions?: 'all' | 'none';\n\n group_mentions?: 'all' | 'none';\n\n here_mentions?: 'all' | 'none';\n\n role_mentions?: 'all' | 'none';\n\n thread_replies?: 'all' | 'none';\n}\n\nexport interface ChatPreferencesResponse {\n channel_mentions?: string;\n\n default_preference?: string;\n\n direct_mentions?: string;\n\n group_mentions?: string;\n\n here_mentions?: string;\n\n role_mentions?: string;\n\n thread_replies?: string;\n}\n\nexport interface ClosedCaptionRuleParameters {\n threshold?: number;\n\n harm_labels?: string[];\n\n llm_harm_labels?: Record<string, string>;\n}\n\nexport interface CollectionRequest {\n name: string;\n\n custom: Record<string, any>;\n\n id?: string;\n}\n\nexport interface CollectionResponse {\n id: string;\n\n name: string;\n\n created_at?: Date;\n\n updated_at?: Date;\n\n user_id?: string;\n\n custom?: Record<string, any>;\n}\n\nexport interface Command {\n args: string;\n\n description: string;\n\n name: string;\n\n set: string;\n\n created_at?: Date;\n\n updated_at?: Date;\n}\n\nexport interface CommentAddedEvent {\n created_at: Date;\n\n fid: string;\n\n activity: ActivityResponse;\n\n comment: CommentResponse;\n\n custom: Record<string, any>;\n\n type: string;\n\n feed_visibility?: string;\n\n received_at?: Date;\n\n user?: UserResponseCommonFields;\n}\n\nexport interface CommentDeletedEvent {\n created_at: Date;\n\n fid: string;\n\n comment: CommentResponse;\n\n custom: Record<string, any>;\n\n type: string;\n\n feed_visibility?: string;\n\n received_at?: Date;\n\n user?: UserResponseCommonFields;\n}\n\nexport interface CommentReactionAddedEvent {\n created_at: Date;\n\n fid: string;\n\n activity: ActivityResponse;\n\n comment: CommentResponse;\n\n custom: Record<string, any>;\n\n reaction: FeedsReactionResponse;\n\n type: string;\n\n feed_visibility?: string;\n\n received_at?: Date;\n\n user?: UserResponseCommonFields;\n}\n\nexport interface CommentReactionDeletedEvent {\n created_at: Date;\n\n fid: string;\n\n comment: CommentResponse;\n\n custom: Record<string, any>;\n\n reaction: FeedsReactionResponse;\n\n type: string;\n\n feed_visibility?: string;\n\n received_at?: Date;\n}\n\nexport interface CommentReactionUpdatedEvent {\n created_at: Date;\n\n fid: string;\n\n activity: ActivityResponse;\n\n comment: CommentResponse;\n\n custom: Record<string, any>;\n\n reaction: FeedsReactionResponse;\n\n type: string;\n\n feed_visibility?: string;\n\n received_at?: Date;\n\n user?: UserResponseCommonFields;\n}\n\nexport interface CommentResponse {\n confidence_score: number;\n\n created_at: Date;\n\n downvote_count: number;\n\n id: string;\n\n object_id: string;\n\n object_type: string;\n\n reaction_count: number;\n\n reply_count: number;\n\n score: number;\n\n status: 'active' | 'deleted' | 'removed' | 'hidden' | 'shadow_blocked';\n\n updated_at: Date;\n\n upvote_count: number;\n\n mentioned_users: UserResponse[];\n\n own_reactions: FeedsReactionResponse[];\n\n user: UserResponse;\n\n controversy_score?: number;\n\n deleted_at?: Date;\n\n edited_at?: Date;\n\n parent_id?: string;\n\n text?: string;\n\n attachments?: Attachment[];\n\n latest_reactions?: FeedsReactionResponse[];\n\n custom?: Record<string, any>;\n\n moderation?: ModerationV2Response;\n\n reaction_groups?: Record<string, FeedsReactionGroupResponse>;\n}\n\nexport interface CommentRestoredEvent {\n created_at: Date;\n\n fid: string;\n\n comment: CommentResponse;\n\n custom: Record<string, any>;\n\n type: string;\n\n feed_visibility?: string;\n\n received_at?: Date;\n\n user?: UserResponseCommonFields;\n}\n\nexport interface CommentUpdatedEvent {\n created_at: Date;\n\n fid: string;\n\n comment: CommentResponse;\n\n custom: Record<string, any>;\n\n type: string;\n\n feed_visibility?: string;\n\n received_at?: Date;\n\n user?: UserResponseCommonFields;\n}\n\nexport interface CompositeRecordingResponse {\n status: string;\n}\n\nexport interface ConfigResponse {\n async: boolean;\n\n created_at: Date;\n\n key: string;\n\n team: string;\n\n updated_at: Date;\n\n supported_video_call_harm_types: string[];\n\n ai_image_label_definitions?: AIImageLabelDefinition[];\n\n ai_image_config?: AIImageConfig;\n\n ai_image_subclassifications?: Record<string, string[]>;\n\n ai_text_config?: AITextConfig;\n\n ai_video_config?: AIVideoConfig;\n\n automod_platform_circumvention_config?: AutomodPlatformCircumventionConfig;\n\n automod_semantic_filters_config?: AutomodSemanticFiltersConfig;\n\n automod_toxicity_config?: AutomodToxicityConfig;\n\n block_list_config?: BlockListConfig;\n\n llm_config?: LLMConfig;\n\n velocity_filter_config?: VelocityFilterConfig;\n\n video_call_rule_config?: VideoCallRuleConfig;\n}\n\nexport interface ConnectUserDetailsRequest {\n id: string;\n\n image?: string;\n\n invisible?: boolean;\n\n language?: string;\n\n name?: string;\n\n custom?: Record<string, any>;\n\n privacy_settings?: PrivacySettingsResponse;\n}\n\nexport interface ContentCountRuleParameters {\n threshold?: number;\n\n time_window?: string;\n}\n\nexport interface CreateBlockListRequest {\n name: string;\n\n words: string[];\n\n is_leet_check_enabled?: boolean;\n\n is_plural_check_enabled?: boolean;\n\n team?: string;\n\n type?:\n | 'regex'\n | 'domain'\n | 'domain_allowlist'\n | 'email'\n | 'email_allowlist'\n | 'word';\n}\n\nexport interface CreateBlockListResponse {\n duration: string;\n\n blocklist?: BlockListResponse;\n}\n\nexport interface CreateCollectionsRequest {\n collections: CollectionRequest[];\n}\n\nexport interface CreateCollectionsResponse {\n duration: string;\n\n collections: CollectionResponse[];\n}\n\nexport interface CreateDeviceRequest {\n id: string;\n\n push_provider: 'firebase' | 'apn' | 'huawei' | 'xiaomi';\n\n push_provider_name?: string;\n\n voip_token?: boolean;\n}\n\nexport interface CreateFeedsBatchRequest {\n feeds: FeedRequest[];\n\n enrich_own_fields?: boolean;\n}\n\nexport interface CreateFeedsBatchResponse {\n duration: string;\n\n feeds: FeedResponse[];\n}\n\nexport interface CreateGuestRequest {\n user: UserRequest;\n}\n\nexport interface CreateGuestResponse {\n access_token: string;\n\n duration: string;\n\n user: UserResponse;\n}\n\nexport interface CreatePollOptionRequest {\n text: string;\n\n custom?: Record<string, any>;\n}\n\nexport interface CreatePollRequest {\n name: string;\n\n allow_answers?: boolean;\n\n allow_user_suggested_options?: boolean;\n\n description?: string;\n\n enforce_unique_vote?: boolean;\n\n id?: string;\n\n is_closed?: boolean;\n\n max_votes_allowed?: number;\n\n voting_visibility?: 'anonymous' | 'public';\n\n options?: PollOptionInput[];\n\n custom?: Record<string, any>;\n}\n\nexport interface CreateUserGroupRequest {\n name: string;\n\n description?: string;\n\n id?: string;\n\n team_id?: string;\n\n member_ids?: string[];\n}\n\nexport interface CreateUserGroupResponse {\n duration: string;\n\n user_group?: UserGroupResponse;\n}\n\nexport interface CustomActionRequestPayload {\n id?: string;\n\n options?: Record<string, any>;\n}\n\nexport interface Data {\n id: string;\n}\n\nexport interface DecayFunctionConfig {\n base?: string;\n\n decay?: string;\n\n direction?: string;\n\n offset?: string;\n\n origin?: string;\n\n scale?: string;\n}\n\nexport interface DeleteActivitiesRequest {\n ids: string[];\n\n delete_notification_activity?: boolean;\n\n hard_delete?: boolean;\n}\n\nexport interface DeleteActivitiesResponse {\n duration: string;\n\n deleted_ids: string[];\n}\n\nexport interface DeleteActivityReactionResponse {\n duration: string;\n\n activity: ActivityResponse;\n\n reaction: FeedsReactionResponse;\n}\n\nexport interface DeleteActivityRequestPayload {\n entity_id?: string;\n\n entity_type?: string;\n\n hard_delete?: boolean;\n\n reason?: string;\n}\n\nexport interface DeleteActivityResponse {\n duration: string;\n}\n\nexport interface DeleteBookmarkFolderResponse {\n duration: string;\n}\n\nexport interface DeleteBookmarkResponse {\n duration: string;\n\n bookmark: BookmarkResponse;\n}\n\nexport interface DeleteCollectionsResponse {\n duration: string;\n}\n\nexport interface DeleteCommentReactionResponse {\n duration: string;\n\n comment: CommentResponse;\n\n reaction: FeedsReactionResponse;\n}\n\nexport interface DeleteCommentRequestPayload {\n entity_id?: string;\n\n entity_type?: string;\n\n hard_delete?: boolean;\n\n reason?: string;\n}\n\nexport interface DeleteCommentResponse {\n duration: string;\n\n activity: ActivityResponse;\n\n comment: CommentResponse;\n}\n\nexport interface DeleteFeedResponse {\n duration: string;\n\n task_id: string;\n}\n\nexport interface DeleteMessageRequestPayload {\n entity_id?: string;\n\n entity_type?: string;\n\n hard_delete?: boolean;\n\n reason?: string;\n}\n\nexport interface DeleteModerationConfigResponse {\n duration: string;\n}\n\nexport interface DeleteReactionRequestPayload {\n entity_id?: string;\n\n entity_type?: string;\n\n hard_delete?: boolean;\n\n reason?: string;\n}\n\nexport interface DeleteUserRequestPayload {\n delete_conversation_channels?: boolean;\n\n delete_feeds_content?: boolean;\n\n entity_id?: string;\n\n entity_type?: string;\n\n hard_delete?: boolean;\n\n mark_messages_deleted?: boolean;\n\n reason?: string;\n}\n\nexport interface DeliveryReceiptsResponse {\n enabled: boolean;\n}\n\nexport interface DeviceResponse {\n created_at: Date;\n\n id: string;\n\n push_provider: string;\n\n user_id: string;\n\n disabled?: boolean;\n\n disabled_reason?: string;\n\n push_provider_name?: string;\n\n voip?: boolean;\n}\n\nexport interface DraftPayloadResponse {\n id: string;\n\n text: string;\n\n custom: Record<string, any>;\n\n html?: string;\n\n mml?: string;\n\n parent_id?: string;\n\n poll_id?: string;\n\n quoted_message_id?: string;\n\n show_in_channel?: boolean;\n\n silent?: boolean;\n\n type?: string;\n\n attachments?: Attachment[];\n\n mentioned_users?: UserResponse[];\n}\n\nexport interface DraftResponse {\n channel_cid: string;\n\n created_at: Date;\n\n message: DraftPayloadResponse;\n\n parent_id?: string;\n\n channel?: ChannelResponse;\n\n parent_message?: MessageResponse;\n\n quoted_message?: MessageResponse;\n}\n\nexport interface EgressHLSResponse {\n playlist_url: string;\n\n status: string;\n}\n\nexport interface EgressRTMPResponse {\n name: string;\n\n started_at: Date;\n\n stream_key?: string;\n\n stream_url?: string;\n}\n\nexport interface EgressResponse {\n broadcasting: boolean;\n\n rtmps: EgressRTMPResponse[];\n\n composite_recording?: CompositeRecordingResponse;\n\n frame_recording?: FrameRecordingResponse;\n\n hls?: EgressHLSResponse;\n\n individual_recording?: IndividualRecordingResponse;\n\n raw_recording?: RawRecordingResponse;\n}\n\nexport interface EnrichedActivity {\n foreign_id?: string;\n\n id?: string;\n\n score?: number;\n\n verb?: string;\n\n to?: string[];\n\n actor?: Data;\n\n latest_reactions?: Record<string, EnrichedReaction[]>;\n\n object?: Data;\n\n origin?: Data;\n\n own_reactions?: Record<string, EnrichedReaction[]>;\n\n reaction_counts?: Record<string, number>;\n\n target?: Data;\n}\n\nexport interface EnrichedCollectionResponse {\n id: string;\n\n name: string;\n\n status: 'ok' | 'notfound';\n\n created_at?: Date;\n\n updated_at?: Date;\n\n user_id?: string;\n\n custom?: Record<string, any>;\n}\n\nexport interface EnrichedReaction {\n activity_id: string;\n\n kind: string;\n\n user_id: string;\n\n id?: string;\n\n parent?: string;\n\n target_feeds?: string[];\n\n children_counts?: Record<string, number>;\n\n created_at?: Time;\n\n data?: Record<string, any>;\n\n latest_children?: Record<string, EnrichedReaction[]>;\n\n own_children?: Record<string, EnrichedReaction[]>;\n\n updated_at?: Time;\n\n user?: Data;\n}\n\nexport interface EnrichmentOptions {\n enrich_own_followings?: boolean;\n\n include_score_vars?: boolean;\n\n skip_activity?: boolean;\n\n skip_activity_collections?: boolean;\n\n skip_activity_comments?: boolean;\n\n skip_activity_current_feed?: boolean;\n\n skip_activity_mentioned_users?: boolean;\n\n skip_activity_own_bookmarks?: boolean;\n\n skip_activity_parents?: boolean;\n\n skip_activity_poll?: boolean;\n\n skip_activity_reactions?: boolean;\n\n skip_activity_refresh_image_urls?: boolean;\n\n skip_all?: boolean;\n\n skip_feed_member_user?: boolean;\n\n skip_followers?: boolean;\n\n skip_following?: boolean;\n\n skip_own_capabilities?: boolean;\n\n skip_own_follows?: boolean;\n\n skip_pins?: boolean;\n}\n\nexport interface EntityCreatorResponse {\n ban_count: number;\n\n banned: boolean;\n\n created_at: Date;\n\n deleted_content_count: number;\n\n flagged_count: number;\n\n id: string;\n\n language: string;\n\n online: boolean;\n\n role: string;\n\n updated_at: Date;\n\n blocked_user_ids: string[];\n\n teams: string[];\n\n custom: Record<string, any>;\n\n avg_response_time?: number;\n\n deactivated_at?: Date;\n\n deleted_at?: Date;\n\n image?: string;\n\n last_active?: Date;\n\n name?: string;\n\n revoke_tokens_issued_before?: Date;\n\n teams_role?: Record<string, string>;\n}\n\nexport interface FeedCreatedEvent {\n created_at: Date;\n\n fid: string;\n\n members: FeedMemberResponse[];\n\n custom: Record<string, any>;\n\n feed: FeedResponse;\n\n user: UserResponseCommonFields;\n\n type: string;\n\n feed_visibility?: string;\n\n received_at?: Date;\n}\n\nexport interface FeedDeletedEvent {\n created_at: Date;\n\n fid: string;\n\n custom: Record<string, any>;\n\n type: string;\n\n feed_visibility?: string;\n\n received_at?: Date;\n\n user?: UserResponseCommonFields;\n}\n\nexport interface FeedGroup {\n aggregation_version: number;\n\n app_pk: number;\n\n created_at: Date;\n\n default_visibility: string;\n\n group_id: string;\n\n updated_at: Date;\n\n activity_processors: ActivityProcessorConfig[];\n\n activity_selectors: ActivitySelectorConfig[];\n\n custom: Record<string, any>;\n\n deleted_at?: Date;\n\n last_feed_get_at?: Date;\n\n aggregation?: AggregationConfig;\n\n notification?: NotificationConfig;\n\n push_notification?: PushNotificationConfig;\n\n ranking?: RankingConfig;\n\n stories?: StoriesConfig;\n}\n\nexport interface FeedGroupChangedEvent {\n created_at: Date;\n\n fid: string;\n\n custom: Record<string, any>;\n\n type: string;\n\n feed_visibility?: string;\n\n received_at?: Date;\n\n feed_group?: FeedGroup;\n\n user?: UserResponseCommonFields;\n}\n\nexport interface FeedGroupDeletedEvent {\n created_at: Date;\n\n fid: string;\n\n group_id: string;\n\n custom: Record<string, any>;\n\n type: string;\n\n feed_visibility?: string;\n\n received_at?: Date;\n}\n\nexport interface FeedGroupRestoredEvent {\n created_at: Date;\n\n fid: string;\n\n group_id: string;\n\n custom: Record<string, any>;\n\n type: string;\n\n feed_visibility?: string;\n\n received_at?: Date;\n}\n\nexport interface FeedInput {\n description?: string;\n\n name?: string;\n\n visibility?: 'public' | 'visible' | 'followers' | 'members' | 'private';\n\n filter_tags?: string[];\n\n members?: FeedMemberRequest[];\n\n custom?: Record<string, any>;\n}\n\nexport interface FeedMemberAddedEvent {\n created_at: Date;\n\n fid: string;\n\n custom: Record<string, any>;\n\n member: FeedMemberResponse;\n\n type: string;\n\n feed_visibility?: string;\n\n received_at?: Date;\n\n user?: UserResponseCommonFields;\n}\n\nexport interface FeedMemberRemovedEvent {\n created_at: Date;\n\n fid: string;\n\n member_id: string;\n\n custom: Record<string, any>;\n\n type: string;\n\n feed_visibility?: string;\n\n received_at?: Date;\n\n user?: UserResponseCommonFields;\n}\n\nexport interface FeedMemberRequest {\n user_id: string;\n\n invite?: boolean;\n\n membership_level?: string;\n\n role?: string;\n\n custom?: Record<string, any>;\n}\n\nexport interface FeedMemberResponse {\n created_at: Date;\n\n role: string;\n\n status: 'member' | 'pending' | 'rejected';\n\n updated_at: Date;\n\n user: UserResponse;\n\n invite_accepted_at?: Date;\n\n invite_rejected_at?: Date;\n\n custom?: Record<string, any>;\n\n membership_level?: MembershipLevelResponse;\n}\n\nexport interface FeedMemberUpdatedEvent {\n created_at: Date;\n\n fid: string;\n\n custom: Record<string, any>;\n\n member: FeedMemberResponse;\n\n type: string;\n\n feed_visibility?: string;\n\n received_at?: Date;\n\n user?: UserResponseCommonFields;\n}\n\nexport const FeedOwnCapability = {\n ADD_ACTIVITY: 'add-activity',\n ADD_ACTIVITY_BOOKMARK: 'add-activity-bookmark',\n ADD_ACTIVITY_REACTION: 'add-activity-reaction',\n ADD_COMMENT: 'add-comment',\n ADD_COMMENT_REACTION: 'add-comment-reaction',\n CREATE_FEED: 'create-feed',\n DELETE_ANY_ACTIVITY: 'delete-any-activity',\n DELETE_ANY_COMMENT: 'delete-any-comment',\n DELETE_FEED: 'delete-feed',\n DELETE_OWN_ACTIVITY: 'delete-own-activity',\n DELETE_OWN_ACTIVITY_BOOKMARK: 'delete-own-activity-bookmark',\n DELETE_OWN_ACTIVITY_REACTION: 'delete-own-activity-reaction',\n DELETE_OWN_COMMENT: 'delete-own-comment',\n DELETE_OWN_COMMENT_REACTION: 'delete-own-comment-reaction',\n FOLLOW: 'follow',\n PIN_ACTIVITY: 'pin-activity',\n QUERY_FEED_MEMBERS: 'query-feed-members',\n QUERY_FOLLOWS: 'query-follows',\n READ_ACTIVITIES: 'read-activities',\n READ_FEED: 'read-feed',\n UNFOLLOW: 'unfollow',\n UPDATE_ANY_ACTIVITY: 'update-any-activity',\n UPDATE_ANY_COMMENT: 'update-any-comment',\n UPDATE_FEED: 'update-feed',\n UPDATE_FEED_FOLLOWERS: 'update-feed-followers',\n UPDATE_FEED_MEMBERS: 'update-feed-members',\n UPDATE_OWN_ACTIVITY: 'update-own-activity',\n UPDATE_OWN_ACTIVITY_BOOKMARK: 'update-own-activity-bookmark',\n UPDATE_OWN_COMMENT: 'update-own-comment',\n} as const;\n\nexport type FeedOwnCapability =\n (typeof FeedOwnCapability)[keyof typeof FeedOwnCapability];\n\nexport interface FeedOwnData {\n own_capabilities?: FeedOwnCapability[];\n\n own_followings?: FollowResponse[];\n\n own_follows?: FollowResponse[];\n\n own_membership?: FeedMemberResponse;\n}\n\nexport interface FeedRequest {\n feed_group_id: string;\n\n feed_id: string;\n\n created_by_id?: string;\n\n description?: string;\n\n name?: string;\n\n visibility?: 'public' | 'visible' | 'followers' | 'members' | 'private';\n\n filter_tags?: string[];\n\n members?: FeedMemberRequest[];\n\n custom?: Record<string, any>;\n}\n\nexport interface FeedResponse {\n activity_count: number;\n\n created_at: Date;\n\n description: string;\n\n feed: string;\n\n follower_count: number;\n\n following_count: number;\n\n group_id: string;\n\n id: string;\n\n member_count: number;\n\n name: string;\n\n pin_count: number;\n\n updated_at: Date;\n\n created_by: UserResponse;\n\n deleted_at?: Date;\n\n visibility?: 'public' | 'visible' | 'followers' | 'members' | 'private';\n\n filter_tags?: string[];\n\n own_capabilities?: FeedOwnCapability[];\n\n own_followings?: FollowResponse[];\n\n own_follows?: FollowResponse[];\n\n custom?: Record<string, any>;\n\n own_membership?: FeedMemberResponse;\n}\n\nexport interface FeedSuggestionResponse {\n activity_count: number;\n\n created_at: Date;\n\n description: string;\n\n feed: string;\n\n follower_count: number;\n\n following_count: number;\n\n group_id: string;\n\n id: string;\n\n member_count: number;\n\n name: string;\n\n pin_count: number;\n\n updated_at: Date;\n\n created_by: UserResponse;\n\n deleted_at?: Date;\n\n reason?: string;\n\n recommendation_score?: number;\n\n visibility?: 'public' | 'visible' | 'followers' | 'members' | 'private';\n\n filter_tags?: string[];\n\n own_capabilities?: FeedOwnCapability[];\n\n own_followings?: FollowResponse[];\n\n own_follows?: FollowResponse[];\n\n algorithm_scores?: Record<string, number>;\n\n custom?: Record<string, any>;\n\n own_membership?: FeedMemberResponse;\n}\n\nexport interface FeedUpdatedEvent {\n created_at: Date;\n\n fid: string;\n\n custom: Record<string, any>;\n\n feed: FeedResponse;\n\n type: string;\n\n feed_visibility?: string;\n\n received_at?: Date;\n\n user?: UserResponseCommonFields;\n}\n\nexport interface FeedsPreferences {\n comment?: 'all' | 'none';\n\n comment_reaction?: 'all' | 'none';\n\n comment_reply?: 'all' | 'none';\n\n follow?: 'all' | 'none';\n\n mention?: 'all' | 'none';\n\n reaction?: 'all' | 'none';\n\n custom_activity_types?: Record<string, string>;\n}\n\nexport interface FeedsPreferencesResponse {\n comment?: string;\n\n comment_reaction?: string;\n\n comment_reply?: string;\n\n follow?: string;\n\n mention?: string;\n\n reaction?: string;\n\n custom_activity_types?: Record<string, string>;\n}\n\nexport interface FeedsReactionGroupResponse {\n count: number;\n\n first_reaction_at: Date;\n\n last_reaction_at: Date;\n}\n\nexport interface FeedsReactionResponse {\n activity_id: string;\n\n created_at: Date;\n\n type: string;\n\n updated_at: Date;\n\n user: UserResponse;\n\n comment_id?: string;\n\n custom?: Record<string, any>;\n}\n\nexport interface Field {\n short: boolean;\n\n title: string;\n\n value: string;\n}\n\nexport interface FileUploadConfig {\n size_limit: number;\n\n allowed_file_extensions: string[];\n\n allowed_mime_types: string[];\n\n blocked_file_extensions: string[];\n\n blocked_mime_types: string[];\n}\n\nexport interface FileUploadRequest {\n file?: string;\n\n user?: OnlyUserID;\n}\n\nexport interface FileUploadResponse {\n duration: string;\n\n file?: string;\n\n thumb_url?: string;\n}\n\nexport interface FilterConfigResponse {\n llm_labels: string[];\n\n ai_text_labels?: string[];\n\n config_keys?: string[];\n}\n\nexport interface FlagCountRuleParameters {\n threshold?: number;\n}\n\nexport interface FlagRequest {\n entity_id: string;\n\n entity_type: string;\n\n entity_creator_id?: string;\n\n reason?: string;\n\n custom?: Record<string, any>;\n\n moderation_payload?: ModerationPayload;\n}\n\nexport interface FlagResponse {\n duration: string;\n\n item_id: string;\n}\n\nexport interface FlagUserOptions {\n reason?: string;\n}\n\nexport interface FollowBatchRequest {\n follows: FollowRequest[];\n\n enrich_own_fields?: boolean;\n}\n\nexport interface FollowBatchResponse {\n duration: string;\n\n created: FollowResponse[];\n\n follows: FollowResponse[];\n}\n\nexport interface FollowCreatedEvent {\n created_at: Date;\n\n fid: string;\n\n custom: Record<string, any>;\n\n follow: FollowResponse;\n\n type: string;\n\n feed_visibility?: string;\n\n received_at?: Date;\n}\n\nexport interface FollowDeletedEvent {\n created_at: Date;\n\n fid: string;\n\n custom: Record<string, any>;\n\n follow: FollowResponse;\n\n type: string;\n\n feed_visibility?: string;\n\n received_at?: Date;\n}\n\nexport interface FollowPair {\n source: string;\n\n target: string;\n}\n\nexport interface FollowRequest {\n source: string;\n\n target: string;\n\n copy_custom_to_notification?: boolean;\n\n create_notification_activity?: boolean;\n\n enrich_own_fields?: boolean;\n\n push_preference?: 'all' | 'none';\n\n skip_push?: boolean;\n\n custom?: Record<string, any>;\n}\n\nexport interface FollowResponse {\n created_at: Date;\n\n follower_role: string;\n\n push_preference: 'all' | 'none';\n\n status: 'accepted' | 'pending' | 'rejected';\n\n updated_at: Date;\n\n source_feed: FeedResponse;\n\n target_feed: FeedResponse;\n\n request_accepted_at?: Date;\n\n request_rejected_at?: Date;\n\n custom?: Record<string, any>;\n}\n\nexport interface FollowUpdatedEvent {\n created_at: Date;\n\n fid: string;\n\n custom: Record<string, any>;\n\n follow: FollowResponse;\n\n type: string;\n\n feed_visibility?: string;\n\n received_at?: Date;\n}\n\nexport interface FrameRecordingResponse {\n status: string;\n}\n\nexport interface FrameRecordingSettingsResponse {\n capture_interval_in_seconds: number;\n\n mode: 'available' | 'disabled' | 'auto-on';\n\n quality?: string;\n}\n\nexport interface FriendReactionsOptions {\n enabled?: boolean;\n\n limit?: number;\n\n type?: 'following' | 'mutual';\n}\n\nexport interface FullUserResponse {\n banned: boolean;\n\n created_at: Date;\n\n id: string;\n\n invisible: boolean;\n\n language: string;\n\n online: boolean;\n\n role: string;\n\n shadow_banned: boolean;\n\n total_unread_count: number;\n\n unread_channels: number;\n\n unread_count: number;\n\n unread_threads: number;\n\n updated_at: Date;\n\n blocked_user_ids: string[];\n\n channel_mutes: ChannelMute[];\n\n devices: DeviceResponse[];\n\n mutes: UserMuteResponse[];\n\n teams: string[];\n\n custom: Record<string, any>;\n\n avg_response_time?: number;\n\n ban_expires?: Date;\n\n deactivated_at?: Date;\n\n deleted_at?: Date;\n\n image?: string;\n\n last_active?: Date;\n\n name?: string;\n\n revoke_tokens_issued_before?: Date;\n\n latest_hidden_channels?: string[];\n\n privacy_settings?: PrivacySettingsResponse;\n\n teams_role?: Record<string, string>;\n}\n\nexport interface GeofenceSettingsResponse {\n names: string[];\n}\n\nexport interface GetActivityResponse {\n duration: string;\n\n activity: ActivityResponse;\n}\n\nexport interface GetAppealResponse {\n duration: string;\n\n item?: AppealItemResponse;\n}\n\nexport interface GetApplicationResponse {\n duration: string;\n\n app: AppResponseFields;\n}\n\nexport interface GetBlockedUsersResponse {\n duration: string;\n\n blocks: BlockedUserResponse[];\n}\n\nexport interface GetCommentRepliesResponse {\n duration: string;\n\n sort: string;\n\n comments: ThreadedCommentResponse[];\n\n next?: string;\n\n prev?: string;\n}\n\nexport interface GetCommentResponse {\n duration: string;\n\n comment: CommentResponse;\n}\n\nexport interface GetCommentsResponse {\n duration: string;\n\n sort: string;\n\n comments: ThreadedCommentResponse[];\n\n next?: string;\n\n prev?: string;\n}\n\nexport interface GetConfigResponse {\n duration: string;\n\n config?: ConfigResponse;\n}\n\nexport interface GetFollowSuggestionsResponse {\n duration: string;\n\n suggestions: FeedSuggestionResponse[];\n\n algorithm_used?: string;\n}\n\nexport interface GetOGResponse {\n duration: string;\n\n custom: Record<string, any>;\n\n asset_url?: string;\n\n author_icon?: string;\n\n author_link?: string;\n\n author_name?: string;\n\n color?: string;\n\n fallback?: string;\n\n footer?: string;\n\n footer_icon?: string;\n\n image_url?: string;\n\n og_scrape_url?: string;\n\n original_height?: number;\n\n original_width?: number;\n\n pretext?: string;\n\n text?: string;\n\n thumb_url?: string;\n\n title?: string;\n\n title_link?: string;\n\n type?: string;\n\n actions?: Action[];\n\n fields?: Field[];\n\n giphy?: Images;\n}\n\nexport interface GetOrCreateFeedRequest {\n id_around?: string;\n\n limit?: number;\n\n next?: string;\n\n prev?: string;\n\n view?: string;\n\n watch?: boolean;\n\n data?: FeedInput;\n\n enrichment_options?: EnrichmentOptions;\n\n external_ranking?: Record<string, any>;\n\n filter?: Record<string, any>;\n\n followers_pagination?: PagerRequest;\n\n following_pagination?: PagerRequest;\n\n friend_reactions_options?: FriendReactionsOptions;\n\n interest_weights?: Record<string, number>;\n\n member_pagination?: PagerRequest;\n}\n\nexport interface GetOrCreateFeedResponse {\n created: boolean;\n\n duration: string;\n\n activities: ActivityResponse[];\n\n aggregated_activities: AggregatedActivityResponse[];\n\n followers: FollowResponse[];\n\n following: FollowResponse[];\n\n members: FeedMemberResponse[];\n\n pinned_activities: ActivityPinResponse[];\n\n feed: FeedResponse;\n\n next?: string;\n\n prev?: string;\n\n followers_pagination?: PagerResponse;\n\n following_pagination?: PagerResponse;\n\n member_pagination?: PagerResponse;\n\n notification_status?: NotificationStatusResponse;\n}\n\nexport interface GetUserGroupResponse {\n duration: string;\n\n user_group?: UserGroupResponse;\n}\n\nexport interface GoogleVisionConfig {\n enabled?: boolean;\n}\n\nexport interface HLSSettingsResponse {\n auto_on: boolean;\n\n enabled: boolean;\n\n quality_tracks: string[];\n}\n\nexport interface HarmConfig {\n cooldown_period: number;\n\n severity: number;\n\n threshold: number;\n\n action_sequences: ActionSequence[];\n\n harm_types: string[];\n}\n\nexport interface HealthCheckEvent {\n connection_id: string;\n\n created_at: Date;\n\n custom: Record<string, any>;\n\n type: string;\n\n cid?: string;\n\n received_at?: Date;\n\n me?: OwnUserResponse;\n}\n\nexport interface ImageContentParameters {\n harm_labels?: string[];\n}\n\nexport interface ImageData {\n frames: string;\n\n height: string;\n\n size: string;\n\n url: string;\n\n width: string;\n}\n\nexport interface ImageRuleParameters {\n threshold?: number;\n\n time_window?: string;\n\n harm_labels?: string[];\n}\n\nexport interface ImageSize {\n crop?: string;\n\n height?: number;\n\n resize?: string;\n\n width?: number;\n}\n\nexport interface ImageUploadRequest {\n file?: string;\n\n upload_sizes?: ImageSize[];\n\n user?: OnlyUserID;\n}\n\nexport interface ImageUploadResponse {\n duration: string;\n\n file?: string;\n\n thumb_url?: string;\n\n upload_sizes?: ImageSize[];\n}\n\nexport interface Images {\n fixed_height: ImageData;\n\n fixed_height_downsampled: ImageData;\n\n fixed_height_still: ImageData;\n\n fixed_width: ImageData;\n\n fixed_width_downsampled: ImageData;\n\n fixed_width_still: ImageData;\n\n original: ImageData;\n}\n\nexport interface IndividualRecordingResponse {\n status: string;\n}\n\nexport interface IndividualRecordingSettingsResponse {\n mode: 'available' | 'disabled' | 'auto-on';\n\n output_types?: string[];\n}\n\nexport interface IngressAudioEncodingResponse {\n bitrate: number;\n\n channels: number;\n\n enable_dtx: boolean;\n}\n\nexport interface IngressSettingsResponse {\n enabled: boolean;\n\n audio_encoding_options?: IngressAudioEncodingResponse;\n\n video_encoding_options?: Record<string, IngressVideoEncodingResponse>;\n}\n\nexport interface IngressSourceResponse {\n fps: number;\n\n height: number;\n\n width: number;\n}\n\nexport interface IngressVideoEncodingResponse {\n layers: IngressVideoLayerResponse[];\n\n source: IngressSourceResponse;\n}\n\nexport interface IngressVideoLayerResponse {\n bitrate: number;\n\n codec: string;\n\n frame_rate_limit: number;\n\n max_dimension: number;\n\n min_dimension: number;\n}\n\nexport interface KeyframeRuleParameters {\n min_confidence?: number;\n\n threshold?: number;\n\n harm_labels?: string[];\n}\n\nexport interface LLMConfig {\n enabled: boolean;\n\n rules: LLMRule[];\n\n app_context?: string;\n\n async?: boolean;\n\n severity_descriptions?: Record<string, string>;\n}\n\nexport interface LLMRule {\n action:\n | 'flag'\n | 'shadow'\n | 'remove'\n | 'bounce'\n | 'bounce_flag'\n | 'bounce_remove'\n | 'keep';\n\n description: string;\n\n label: string;\n\n severity_rules: BodyguardSeverityRule[];\n}\n\nexport interface LabelThresholds {\n block?: number;\n\n flag?: number;\n}\n\nexport interface LimitsSettingsResponse {\n max_participants_exclude_roles: string[];\n\n max_duration_seconds?: number;\n\n max_participants?: number;\n\n max_participants_exclude_owner?: boolean;\n}\n\nexport interface ListBlockListResponse {\n duration: string;\n\n blocklists: BlockListResponse[];\n}\n\nexport interface ListDevicesResponse {\n duration: string;\n\n devices: DeviceResponse[];\n}\n\nexport interface ListUserGroupsResponse {\n duration: string;\n\n user_groups: UserGroupResponse[];\n}\n\nexport interface MarkActivityRequest {\n mark_all_read?: boolean;\n\n mark_all_seen?: boolean;\n\n mark_read?: string[];\n\n mark_seen?: string[];\n\n mark_watched?: string[];\n}\n\nexport interface MarkReviewedRequestPayload {\n content_to_mark_as_reviewed_limit?: number;\n\n decision_reason?: string;\n\n disable_marking_content_as_reviewed?: boolean;\n}\n\nexport interface MembershipLevelResponse {\n created_at: Date;\n\n id: string;\n\n name: string;\n\n priority: number;\n\n updated_at: Date;\n\n tags: string[];\n\n description?: string;\n\n custom?: Record<string, any>;\n}\n\nexport interface MessageResponse {\n cid: string;\n\n created_at: Date;\n\n deleted_reply_count: number;\n\n html: string;\n\n id: string;\n\n mentioned_channel: boolean;\n\n mentioned_here: boolean;\n\n pinned: boolean;\n\n reply_count: number;\n\n shadowed: boolean;\n\n silent: boolean;\n\n text: string;\n\n type: string;\n\n updated_at: Date;\n\n attachments: Attachment[];\n\n latest_reactions: ReactionResponse[];\n\n mentioned_users: UserResponse[];\n\n own_reactions: ReactionResponse[];\n\n restricted_visibility: string[];\n\n custom: Record<string, any>;\n\n reaction_counts: Record<string, number>;\n\n reaction_scores: Record<string, number>;\n\n user: UserResponse;\n\n command?: string;\n\n deleted_at?: Date;\n\n deleted_for_me?: boolean;\n\n message_text_updated_at?: Date;\n\n mml?: string;\n\n parent_id?: string;\n\n pin_expires?: Date;\n\n pinned_at?: Date;\n\n poll_id?: string;\n\n quoted_message_id?: string;\n\n show_in_channel?: boolean;\n\n mentioned_group_ids?: string[];\n\n mentioned_roles?: string[];\n\n thread_participants?: UserResponse[];\n\n draft?: DraftResponse;\n\n i18n?: Record<string, string>;\n\n image_labels?: Record<string, string[]>;\n\n member?: ChannelMemberResponse;\n\n moderation?: ModerationV2Response;\n\n pinned_by?: UserResponse;\n\n poll?: PollResponseData;\n\n quoted_message?: MessageResponse;\n\n reaction_groups?: Record<string, ReactionGroupResponse>;\n\n reminder?: ReminderResponseData;\n\n shared_location?: SharedLocationResponseData;\n}\n\nexport interface ModerationActionConfigResponse {\n action: string;\n\n description: string;\n\n entity_type: string;\n\n icon: string;\n\n order: number;\n\n custom?: Record<string, any>;\n}\n\nexport interface ModerationCustomActionEvent {\n action_id: string;\n\n created_at: Date;\n\n custom: Record<string, any>;\n\n review_queue_item: ReviewQueueItemResponse;\n\n type: string;\n\n received_at?: Date;\n\n action_options?: Record<string, any>;\n\n message?: MessageResponse;\n}\n\nexport interface ModerationFlagResponse {\n created_at: Date;\n\n entity_id: string;\n\n entity_type: string;\n\n type: string;\n\n updated_at: Date;\n\n user_id: string;\n\n result: Array<Record<string, any>>;\n\n entity_creator_id?: string;\n\n reason?: string;\n\n review_queue_item_id?: string;\n\n labels?: string[];\n\n custom?: Record<string, any>;\n\n moderation_payload?: ModerationPayloadResponse;\n\n review_queue_item?: ReviewQueueItemResponse;\n\n user?: UserResponse;\n}\n\nexport interface ModerationFlaggedEvent {\n content_type: string;\n\n created_at: Date;\n\n object_id: string;\n\n custom: Record<string, any>;\n\n type: string;\n\n received_at?: Date;\n}\n\nexport interface ModerationMarkReviewedEvent {\n created_at: Date;\n\n custom: Record<string, any>;\n\n item: ReviewQueueItemResponse;\n\n type: string;\n\n received_at?: Date;\n\n message?: MessageResponse;\n}\n\nexport interface ModerationPayload {\n images?: string[];\n\n texts?: string[];\n\n videos?: string[];\n\n custom?: Record<string, any>;\n}\n\nexport interface ModerationPayloadResponse {\n images?: string[];\n\n texts?: string[];\n\n videos?: string[];\n\n custom?: Record<string, any>;\n}\n\nexport interface ModerationV2Response {\n action: string;\n\n original_text: string;\n\n blocklist_matched?: string;\n\n platform_circumvented?: boolean;\n\n semantic_filter_matched?: string;\n\n blocklists_matched?: string[];\n\n image_harms?: string[];\n\n text_harms?: string[];\n}\n\nexport interface MuteRequest {\n target_ids: string[];\n\n timeout?: number;\n}\n\nexport interface MuteResponse {\n duration: string;\n\n mutes?: UserMuteResponse[];\n\n non_existing_users?: string[];\n\n own_user?: OwnUserResponse;\n}\n\nexport interface NoiseCancellationSettings {\n mode: 'available' | 'disabled' | 'auto-on';\n}\n\nexport interface NotificationComment {\n comment: string;\n\n id: string;\n\n user_id: string;\n\n attachments?: Attachment[];\n}\n\nexport interface NotificationConfig {\n deduplication_window?: string;\n\n track_read?: boolean;\n\n track_seen?: boolean;\n}\n\nexport interface NotificationContext {\n target?: NotificationTarget;\n\n trigger?: NotificationTrigger;\n}\n\nexport interface NotificationFeedUpdatedEvent {\n created_at: Date;\n\n fid: string;\n\n custom: Record<string, any>;\n\n type: string;\n\n feed_visibility?: string;\n\n received_at?: Date;\n\n aggregated_activities?: AggregatedActivityResponse[];\n\n notification_status?: NotificationStatusResponse;\n\n user?: UserResponseCommonFields;\n}\n\nexport interface NotificationParentActivity {\n id: string;\n\n text?: string;\n\n type?: string;\n\n user_id?: string;\n\n attachments?: Attachment[];\n}\n\nexport interface NotificationStatusResponse {\n unread: number;\n\n unseen: number;\n\n last_read_at?: Date;\n\n last_seen_at?: Date;\n\n read_activities?: string[];\n\n seen_activities?: string[];\n}\n\nexport interface NotificationTarget {\n id: string;\n\n name?: string;\n\n text?: string;\n\n type?: string;\n\n user_id?: string;\n\n attachments?: Attachment[];\n\n comment?: NotificationComment;\n\n parent_activity?: NotificationParentActivity;\n}\n\nexport interface NotificationTrigger {\n text: string;\n\n type: string;\n\n comment?: NotificationComment;\n}\n\nexport interface OCRRule {\n action:\n | 'flag'\n | 'shadow'\n | 'remove'\n | 'bounce'\n | 'bounce_flag'\n | 'bounce_remove';\n\n label: string;\n}\n\nexport interface OnlyUserID {\n id: string;\n}\n\nexport interface OwnBatchRequest {\n feeds: string[];\n\n fields?: string[];\n}\n\nexport interface OwnBatchResponse {\n duration: string;\n\n data: Record<string, FeedOwnData>;\n}\n\nexport interface OwnUserResponse {\n banned: boolean;\n\n created_at: Date;\n\n id: string;\n\n invisible: boolean;\n\n language: string;\n\n online: boolean;\n\n role: string;\n\n total_unread_count: number;\n\n unread_channels: number;\n\n unread_count: number;\n\n unread_threads: number;\n\n updated_at: Date;\n\n channel_mutes: ChannelMute[];\n\n devices: DeviceResponse[];\n\n mutes: UserMuteResponse[];\n\n teams: string[];\n\n custom: Record<string, any>;\n\n avg_response_time?: number;\n\n deactivated_at?: Date;\n\n deleted_at?: Date;\n\n image?: string;\n\n last_active?: Date;\n\n name?: string;\n\n revoke_tokens_issued_before?: Date;\n\n blocked_user_ids?: string[];\n\n latest_hidden_channels?: string[];\n\n privacy_settings?: PrivacySettingsResponse;\n\n push_preferences?: PushPreferencesResponse;\n\n teams_role?: Record<string, string>;\n\n total_unread_count_by_team?: Record<string, number>;\n}\n\nexport interface PagerRequest {\n limit?: number;\n\n next?: string;\n\n prev?: string;\n}\n\nexport interface PagerResponse {\n next?: string;\n\n prev?: string;\n}\n\nexport interface PinActivityRequest {\n enrich_own_fields?: boolean;\n}\n\nexport interface PinActivityResponse {\n created_at: Date;\n\n duration: string;\n\n feed: string;\n\n user_id: string;\n\n activity: ActivityResponse;\n}\n\nexport interface PollClosedFeedEvent {\n created_at: Date;\n\n fid: string;\n\n custom: Record<string, any>;\n\n poll: PollResponseData;\n\n type: string;\n\n feed_visibility?: string;\n\n received_at?: Date;\n}\n\nexport interface PollDeletedFeedEvent {\n created_at: Date;\n\n fid: string;\n\n custom: Record<string, any>;\n\n poll: PollResponseData;\n\n type: string;\n\n feed_visibility?: string;\n\n received_at?: Date;\n}\n\nexport interface PollOptionInput {\n text?: string;\n\n custom?: Record<string, any>;\n}\n\nexport interface PollOptionRequest {\n id: string;\n\n text?: string;\n\n custom?: Record<string, any>;\n}\n\nexport interface PollOptionResponse {\n duration: string;\n\n poll_option: PollOptionResponseData;\n}\n\nexport interface PollOptionResponseData {\n id: string;\n\n text: string;\n\n custom: Record<string, any>;\n}\n\nexport interface PollResponse {\n duration: string;\n\n poll: PollResponseData;\n}\n\nexport interface PollResponseData {\n allow_answers: boolean;\n\n allow_user_suggested_options: boolean;\n\n answers_count: number;\n\n created_at: Date;\n\n created_by_id: string;\n\n description: string;\n\n enforce_unique_vote: boolean;\n\n id: string;\n\n name: string;\n\n updated_at: Date;\n\n vote_count: number;\n\n voting_visibility: string;\n\n latest_answers: PollVoteResponseData[];\n\n options: PollOptionResponseData[];\n\n own_votes: PollVoteResponseData[];\n\n custom: Record<string, any>;\n\n latest_votes_by_option: Record<string, PollVoteResponseData[]>;\n\n vote_counts_by_option: Record<string, number>;\n\n is_closed?: boolean;\n\n max_votes_allowed?: number;\n\n created_by?: UserResponse;\n}\n\nexport interface PollUpdatedFeedEvent {\n created_at: Date;\n\n fid: string;\n\n custom: Record<string, any>;\n\n poll: PollResponseData;\n\n type: string;\n\n feed_visibility?: string;\n\n received_at?: Date;\n}\n\nexport interface PollVoteCastedFeedEvent {\n created_at: Date;\n\n fid: string;\n\n custom: Record<string, any>;\n\n poll: PollResponseData;\n\n poll_vote: PollVoteResponseData;\n\n type: string;\n\n feed_visibility?: string;\n\n received_at?: Date;\n}\n\nexport interface PollVoteChangedFeedEvent {\n created_at: Date;\n\n fid: string;\n\n custom: Record<string, any>;\n\n poll: PollResponseData;\n\n poll_vote: PollVoteResponseData;\n\n type: string;\n\n feed_visibility?: string;\n\n received_at?: Date;\n}\n\nexport interface PollVoteRemovedFeedEvent {\n created_at: Date;\n\n fid: string;\n\n custom: Record<string, any>;\n\n poll: PollResponseData;\n\n poll_vote: PollVoteResponseData;\n\n type: string;\n\n feed_visibility?: string;\n\n received_at?: Date;\n}\n\nexport interface PollVoteResponse {\n duration: string;\n\n poll?: PollResponseData;\n\n vote?: PollVoteResponseData;\n}\n\nexport interface PollVoteResponseData {\n created_at: Date;\n\n id: string;\n\n option_id: string;\n\n poll_id: string;\n\n updated_at: Date;\n\n answer_text?: string;\n\n is_answer?: boolean;\n\n user_id?: string;\n\n user?: UserResponse;\n}\n\nexport interface PollVotesResponse {\n duration: string;\n\n votes: PollVoteResponseData[];\n\n next?: string;\n\n prev?: string;\n}\n\nexport interface PrivacySettingsResponse {\n delivery_receipts?: DeliveryReceiptsResponse;\n\n read_receipts?: ReadReceiptsResponse;\n\n typing_indicators?: TypingIndicatorsResponse;\n}\n\nexport interface PushNotificationConfig {\n enable_push?: boolean;\n\n push_types?: string[];\n}\n\nexport interface PushPreferenceInput {\n call_level?: 'all' | 'none' | 'default';\n\n channel_cid?: string;\n\n chat_level?:\n | 'all'\n | 'mentions'\n | 'direct_mentions'\n | 'all_mentions'\n | 'none'\n | 'default';\n\n disabled_until?: Date;\n\n feeds_level?: 'all' | 'none' | 'default';\n\n remove_disable?: boolean;\n\n user_id?: string;\n\n chat_preferences?: ChatPreferencesInput;\n\n feeds_preferences?: FeedsPreferences;\n}\n\nexport interface PushPreferencesResponse {\n call_level?: string;\n\n chat_level?: string;\n\n disabled_until?: Date;\n\n feeds_level?: string;\n\n chat_preferences?: ChatPreferencesResponse;\n\n feeds_preferences?: FeedsPreferencesResponse;\n}\n\nexport interface QueryActivitiesRequest {\n enrich_own_fields?: boolean;\n\n include_soft_deleted_activities?: boolean;\n\n limit?: number;\n\n next?: string;\n\n prev?: string;\n\n sort?: SortParamRequest[];\n\n filter?: Record<string, any>;\n}\n\nexport interface QueryActivitiesResponse {\n duration: string;\n\n activities: ActivityResponse[];\n\n next?: string;\n\n prev?: string;\n}\n\nexport interface QueryActivityReactionsRequest {\n limit?: number;\n\n next?: string;\n\n prev?: string;\n\n sort?: SortParamRequest[];\n\n filter?: Record<string, any>;\n}\n\nexport interface QueryActivityReactionsResponse {\n duration: string;\n\n reactions: FeedsReactionResponse[];\n\n next?: string;\n\n prev?: string;\n}\n\nexport interface QueryAppealsRequest {\n limit?: number;\n\n next?: string;\n\n prev?: string;\n\n sort?: SortParamRequest[];\n\n filter?: Record<string, any>;\n}\n\nexport interface QueryAppealsResponse {\n duration: string;\n\n items: AppealItemResponse[];\n\n next?: string;\n\n prev?: string;\n}\n\nexport interface QueryBookmarkFoldersRequest {\n limit?: number;\n\n next?: string;\n\n prev?: string;\n\n sort?: SortParamRequest[];\n\n filter?: Record<string, any>;\n}\n\nexport interface QueryBookmarkFoldersResponse {\n duration: string;\n\n bookmark_folders: BookmarkFolderResponse[];\n\n next?: string;\n\n prev?: string;\n}\n\nexport interface QueryBookmarksRequest {\n enrich_own_fields?: boolean;\n\n limit?: number;\n\n next?: string;\n\n prev?: string;\n\n sort?: SortParamRequest[];\n\n filter?: Record<string, any>;\n}\n\nexport interface QueryBookmarksResponse {\n duration: string;\n\n bookmarks: BookmarkResponse[];\n\n next?: string;\n\n prev?: string;\n}\n\nexport interface QueryCollectionsRequest {\n limit?: number;\n\n next?: string;\n\n prev?: string;\n\n sort?: SortParamRequest[];\n\n filter?: Record<string, any>;\n}\n\nexport interface QueryCollectionsResponse {\n duration: string;\n\n collections: CollectionResponse[];\n\n next?: string;\n\n prev?: string;\n}\n\nexport interface QueryCommentReactionsRequest {\n limit?: number;\n\n next?: string;\n\n prev?: string;\n\n sort?: SortParamRequest[];\n\n filter?: Record<string, any>;\n}\n\nexport interface QueryCommentReactionsResponse {\n duration: string;\n\n reactions: FeedsReactionResponse[];\n\n next?: string;\n\n prev?: string;\n}\n\nexport interface QueryCommentsRequest {\n filter: Record<string, any>;\n\n id_around?: string;\n\n limit?: number;\n\n next?: string;\n\n prev?: string;\n\n sort?: 'first' | 'last' | 'top' | 'best' | 'controversial';\n}\n\nexport interface QueryCommentsResponse {\n duration: string;\n\n comments: CommentResponse[];\n\n next?: string;\n\n prev?: string;\n}\n\nexport interface QueryFeedMembersRequest {\n limit?: number;\n\n next?: string;\n\n prev?: string;\n\n sort?: SortParamRequest[];\n\n filter?: Record<string, any>;\n}\n\nexport interface QueryFeedMembersResponse {\n duration: string;\n\n members: FeedMemberResponse[];\n\n next?: string;\n\n prev?: string;\n}\n\nexport interface QueryFeedsRequest {\n enrich_own_fields?: boolean;\n\n limit?: number;\n\n next?: string;\n\n prev?: string;\n\n watch?: boolean;\n\n sort?: SortParamRequest[];\n\n filter?: Record<string, any>;\n}\n\nexport interface QueryFeedsResponse {\n duration: string;\n\n feeds: FeedResponse[];\n\n next?: string;\n\n prev?: string;\n}\n\nexport interface QueryFollowsRequest {\n limit?: number;\n\n next?: string;\n\n prev?: string;\n\n sort?: SortParamRequest[];\n\n filter?: Record<string, any>;\n}\n\nexport interface QueryFollowsResponse {\n duration: string;\n\n follows: FollowResponse[];\n\n next?: string;\n\n prev?: string;\n}\n\nexport interface QueryModerationConfigsRequest {\n limit?: number;\n\n next?: string;\n\n prev?: string;\n\n sort?: SortParamRequest[];\n\n filter?: Record<string, any>;\n}\n\nexport interface QueryModerationConfigsResponse {\n duration: string;\n\n configs: ConfigResponse[];\n\n next?: string;\n\n prev?: string;\n}\n\nexport interface QueryPinnedActivitiesRequest {\n enrich_own_fields?: boolean;\n\n limit?: number;\n\n next?: string;\n\n prev?: string;\n\n sort?: SortParamRequest[];\n\n filter?: Record<string, any>;\n}\n\nexport interface QueryPinnedActivitiesResponse {\n duration: string;\n\n pinned_activities: ActivityPinResponse[];\n\n next?: string;\n\n prev?: string;\n}\n\nexport interface QueryPollVotesRequest {\n limit?: number;\n\n next?: string;\n\n prev?: string;\n\n sort?: SortParamRequest[];\n\n filter?: Record<string, any>;\n}\n\nexport interface QueryPollsRequest {\n limit?: number;\n\n next?: string;\n\n prev?: string;\n\n sort?: SortParamRequest[];\n\n filter?: Record<string, any>;\n}\n\nexport interface QueryPollsResponse {\n duration: string;\n\n polls: PollResponseData[];\n\n next?: string;\n\n prev?: string;\n}\n\nexport interface QueryReviewQueueRequest {\n limit?: number;\n\n lock_count?: number;\n\n lock_duration?: number;\n\n lock_items?: boolean;\n\n next?: string;\n\n prev?: string;\n\n stats_only?: boolean;\n\n sort?: SortParamRequest[];\n\n filter?: Record<string, any>;\n}\n\nexport interface QueryReviewQueueResponse {\n duration: string;\n\n items: ReviewQueueItemResponse[];\n\n action_config: Record<string, ModerationActionConfigResponse[]>;\n\n stats: Record<string, any>;\n\n next?: string;\n\n prev?: string;\n\n filter_config?: FilterConfigResponse;\n}\n\nexport interface QueryUsersPayload {\n filter_conditions: Record<string, any>;\n\n include_deactivated_users?: boolean;\n\n limit?: number;\n\n offset?: number;\n\n presence?: boolean;\n\n sort?: SortParamRequest[];\n}\n\nexport interface QueryUsersResponse {\n duration: string;\n\n users: FullUserResponse[];\n}\n\nexport interface RTMPIngress {\n address: string;\n}\n\nexport interface RTMPSettingsResponse {\n enabled: boolean;\n\n quality: string;\n}\n\nexport interface RankingConfig {\n score?: string;\n\n type?: string;\n\n defaults?: Record<string, any>;\n\n functions?: Record<string, DecayFunctionConfig>;\n}\n\nexport interface RawRecordingResponse {\n status: string;\n}\n\nexport interface RawRecordingSettingsResponse {\n mode: 'available' | 'disabled' | 'auto-on';\n}\n\nexport interface Reaction {\n activity_id: string;\n\n created_at: Date;\n\n kind: string;\n\n updated_at: Date;\n\n user_id: string;\n\n deleted_at?: Date;\n\n id?: string;\n\n parent?: string;\n\n score?: number;\n\n target_feeds?: string[];\n\n children_counts?: Record<string, any>;\n\n data?: Record<string, any>;\n\n latest_children?: Record<string, Reaction[]>;\n\n moderation?: Record<string, any>;\n\n own_children?: Record<string, Reaction[]>;\n\n target_feeds_extra_data?: Record<string, any>;\n\n user?: User;\n}\n\nexport interface ReactionGroupResponse {\n count: number;\n\n first_reaction_at: Date;\n\n last_reaction_at: Date;\n\n sum_scores: number;\n}\n\nexport interface ReactionResponse {\n created_at: Date;\n\n message_id: string;\n\n score: number;\n\n type: string;\n\n updated_at: Date;\n\n user_id: string;\n\n custom: Record<string, any>;\n\n user: UserResponse;\n}\n\nexport interface ReadCollectionsResponse {\n duration: string;\n\n collections: CollectionResponse[];\n}\n\nexport interface ReadReceiptsResponse {\n enabled: boolean;\n}\n\nexport interface RecordSettingsResponse {\n audio_only: boolean;\n\n mode: string;\n\n quality: string;\n}\n\nexport interface RejectAppealRequestPayload {\n decision_reason: string;\n}\n\nexport interface RejectFeedMemberInviteRequest {}\n\nexport interface RejectFeedMemberInviteResponse {\n duration: string;\n\n member: FeedMemberResponse;\n}\n\nexport interface RejectFollowRequest {\n source: string;\n\n target: string;\n}\n\nexport interface RejectFollowResponse {\n duration: string;\n\n follow: FollowResponse;\n}\n\nexport interface ReminderResponseData {\n channel_cid: string;\n\n created_at: Date;\n\n message_id: string;\n\n updated_at: Date;\n\n user_id: string;\n\n remind_at?: Date;\n\n channel?: ChannelResponse;\n\n message?: MessageResponse;\n\n user?: UserResponse;\n}\n\nexport interface RemoveUserGroupMembersRequest {\n member_ids: string[];\n\n team_id?: string;\n}\n\nexport interface RemoveUserGroupMembersResponse {\n duration: string;\n\n user_group?: UserGroupResponse;\n}\n\nexport interface RepliesMeta {\n depth_truncated: boolean;\n\n has_more: boolean;\n\n remaining: number;\n\n next_cursor?: string;\n}\n\nexport interface Response {\n duration: string;\n}\n\nexport interface RestoreActionRequestPayload {\n decision_reason?: string;\n}\n\nexport interface RestoreActivityRequest {}\n\nexport interface RestoreActivityResponse {\n duration: string;\n\n activity: ActivityResponse;\n}\n\nexport interface RestoreCommentRequest {}\n\nexport interface RestoreCommentResponse {\n duration: string;\n\n activity: ActivityResponse;\n\n comment: CommentResponse;\n}\n\nexport interface ReviewQueueItemResponse {\n ai_text_severity: string;\n\n created_at: Date;\n\n entity_id: string;\n\n entity_type: string;\n\n flags_count: number;\n\n id: string;\n\n latest_moderator_action: string;\n\n recommended_action: string;\n\n reviewed_by: string;\n\n severity: number;\n\n status: string;\n\n updated_at: Date;\n\n actions: ActionLogResponse[];\n\n bans: BanInfoResponse[];\n\n flags: ModerationFlagResponse[];\n\n languages: string[];\n\n completed_at?: Date;\n\n config_key?: string;\n\n entity_creator_id?: string;\n\n reviewed_at?: Date;\n\n teams?: string[];\n\n activity?: EnrichedActivity;\n\n appeal?: AppealItemResponse;\n\n assigned_to?: UserResponse;\n\n call?: CallResponse;\n\n entity_creator?: EntityCreatorResponse;\n\n feeds_v2_activity?: EnrichedActivity;\n\n feeds_v2_reaction?: Reaction;\n\n feeds_v3_activity?: ActivityResponse;\n\n feeds_v3_comment?: CommentResponse;\n\n message?: MessageResponse;\n\n moderation_payload?: ModerationPayloadResponse;\n\n reaction?: Reaction;\n}\n\nexport interface RingSettingsResponse {\n auto_cancel_timeout_ms: number;\n\n incoming_call_timeout_ms: number;\n\n missed_call_timeout_ms: number;\n}\n\nexport interface RuleBuilderAction {\n skip_inbox?: boolean;\n\n type?:\n | 'ban_user'\n | 'flag_user'\n | 'flag_content'\n | 'block_content'\n | 'shadow_content'\n | 'bounce_flag_content'\n | 'bounce_content'\n | 'bounce_remove_content'\n | 'mute_video'\n | 'mute_audio'\n | 'blur'\n | 'call_blur'\n | 'end_call'\n | 'kick_user'\n | 'warning'\n | 'call_warning'\n | 'webhook_only';\n\n ban_options?: BanOptions;\n\n call_options?: CallActionOptions;\n\n flag_user_options?: FlagUserOptions;\n}\n\nexport interface RuleBuilderCondition {\n confidence?: number;\n\n type?: string;\n\n call_custom_property_params?: CallCustomPropertyParameters;\n\n call_type_rule_params?: CallTypeRuleParameters;\n\n call_violation_count_params?: CallViolationCountParameters;\n\n closed_caption_rule_params?: ClosedCaptionRuleParameters;\n\n content_count_rule_params?: ContentCountRuleParameters;\n\n content_flag_count_rule_params?: FlagCountRuleParameters;\n\n image_content_params?: ImageContentParameters;\n\n image_rule_params?: ImageRuleParameters;\n\n keyframe_rule_params?: KeyframeRuleParameters;\n\n text_content_params?: TextContentParameters;\n\n text_rule_params?: TextRuleParameters;\n\n user_created_within_params?: UserCreatedWithinParameters;\n\n user_custom_property_params?: UserCustomPropertyParameters;\n\n user_flag_count_rule_params?: FlagCountRuleParameters;\n\n user_identical_content_count_params?: UserIdenticalContentCountParameters;\n\n user_role_params?: UserRoleParameters;\n\n user_rule_params?: UserRuleParameters;\n\n video_content_params?: VideoContentParameters;\n\n video_rule_params?: VideoRuleParameters;\n}\n\nexport interface RuleBuilderConditionGroup {\n logic?: string;\n\n conditions?: RuleBuilderCondition[];\n}\n\nexport interface RuleBuilderConfig {\n async?: boolean;\n\n rules?: RuleBuilderRule[];\n}\n\nexport interface RuleBuilderRule {\n rule_type: string;\n\n cooldown_period?: string;\n\n id?: string;\n\n logic?: string;\n\n action_sequences?: CallRuleActionSequence[];\n\n conditions?: RuleBuilderCondition[];\n\n groups?: RuleBuilderConditionGroup[];\n\n action?: RuleBuilderAction;\n}\n\nexport interface SRTIngress {\n address: string;\n}\n\nexport interface ScreensharingSettingsResponse {\n access_request_enabled: boolean;\n\n enabled: boolean;\n\n target_resolution?: TargetResolution;\n}\n\nexport interface SearchUserGroupsResponse {\n duration: string;\n\n user_groups: UserGroupResponse[];\n}\n\nexport interface SessionSettingsResponse {\n inactivity_timeout_seconds: number;\n}\n\nexport interface ShadowBlockActionRequestPayload {\n reason?: string;\n}\n\nexport interface SharedLocationResponse {\n channel_cid: string;\n\n created_at: Date;\n\n created_by_device_id: string;\n\n duration: string;\n\n latitude: number;\n\n longitude: number;\n\n message_id: string;\n\n updated_at: Date;\n\n user_id: string;\n\n end_at?: Date;\n\n channel?: ChannelResponse;\n\n message?: MessageResponse;\n}\n\nexport interface SharedLocationResponseData {\n channel_cid: string;\n\n created_at: Date;\n\n created_by_device_id: string;\n\n latitude: number;\n\n longitude: number;\n\n message_id: string;\n\n updated_at: Date;\n\n user_id: string;\n\n end_at?: Date;\n\n channel?: ChannelResponse;\n\n message?: MessageResponse;\n}\n\nexport interface SharedLocationsResponse {\n duration: string;\n\n active_live_locations: SharedLocationResponseData[];\n}\n\nexport interface SingleFollowResponse {\n duration: string;\n\n follow: FollowResponse;\n\n notification_created?: boolean;\n}\n\nexport interface SortParam {\n direction: number;\n\n field: string;\n\n type: string;\n}\n\nexport interface SortParamRequest {\n direction?: number;\n\n field?: string;\n\n type?: string;\n}\n\nexport interface SpeechSegmentConfig {\n max_speech_caption_ms?: number;\n\n silence_duration_ms?: number;\n}\n\nexport interface StoriesConfig {\n skip_watched?: boolean;\n\n track_watched?: boolean;\n}\n\nexport interface StoriesFeedUpdatedEvent {\n created_at: Date;\n\n fid: string;\n\n custom: Record<string, any>;\n\n type: string;\n\n feed_visibility?: string;\n\n received_at?: Date;\n\n activities?: ActivityResponse[];\n\n aggregated_activities?: AggregatedActivityResponse[];\n\n user?: UserResponseCommonFields;\n}\n\nexport interface SubmitActionRequest {\n action_type:\n | 'flag'\n | 'mark_reviewed'\n | 'delete_message'\n | 'delete_activity'\n | 'delete_comment'\n | 'delete_reaction'\n | 'ban'\n | 'custom'\n | 'unban'\n | 'restore'\n | 'delete_user'\n | 'unblock'\n | 'block'\n | 'shadow_block'\n | 'unmask'\n | 'kick_user'\n | 'end_call'\n | 'reject_appeal';\n\n appeal_id?: string;\n\n item_id?: string;\n\n ban?: BanActionRequestPayload;\n\n block?: BlockActionRequestPayload;\n\n custom?: CustomActionRequestPayload;\n\n delete_activity?: DeleteActivityRequestPayload;\n\n delete_comment?: DeleteCommentRequestPayload;\n\n delete_message?: DeleteMessageRequestPayload;\n\n delete_reaction?: DeleteReactionRequestPayload;\n\n delete_user?: DeleteUserRequestPayload;\n\n flag?: FlagRequest;\n\n mark_reviewed?: MarkReviewedRequestPayload;\n\n reject_appeal?: RejectAppealRequestPayload;\n\n restore?: RestoreActionRequestPayload;\n\n shadow_block?: ShadowBlockActionRequestPayload;\n\n unban?: UnbanActionRequestPayload;\n\n unblock?: UnblockActionRequestPayload;\n}\n\nexport interface SubmitActionResponse {\n duration: string;\n\n appeal_item?: AppealItemResponse;\n\n item?: ReviewQueueItemResponse;\n}\n\nexport interface TargetResolution {\n bitrate: number;\n\n height: number;\n\n width: number;\n}\n\nexport interface TextContentParameters {\n contains_url?: boolean;\n\n severity?: string;\n\n blocklist_match?: string[];\n\n harm_labels?: string[];\n\n llm_harm_labels?: Record<string, string>;\n}\n\nexport interface TextRuleParameters {\n contains_url?: boolean;\n\n semantic_filter_min_threshold?: number;\n\n severity?: string;\n\n threshold?: number;\n\n time_window?: string;\n\n blocklist_match?: string[];\n\n harm_labels?: string[];\n\n semantic_filter_names?: string[];\n\n llm_harm_labels?: Record<string, string>;\n}\n\nexport interface ThreadedCommentResponse {\n confidence_score: number;\n\n created_at: Date;\n\n downvote_count: number;\n\n id: string;\n\n object_id: string;\n\n object_type: string;\n\n reaction_count: number;\n\n reply_count: number;\n\n score: number;\n\n status: 'active' | 'deleted' | 'removed' | 'hidden' | 'shadow_blocked';\n\n updated_at: Date;\n\n upvote_count: number;\n\n mentioned_users: UserResponse[];\n\n own_reactions: FeedsReactionResponse[];\n\n user: UserResponse;\n\n controversy_score?: number;\n\n deleted_at?: Date;\n\n edited_at?: Date;\n\n parent_id?: string;\n\n text?: string;\n\n attachments?: Attachment[];\n\n latest_reactions?: FeedsReactionResponse[];\n\n replies?: ThreadedCommentResponse[];\n\n custom?: Record<string, any>;\n\n meta?: RepliesMeta;\n\n moderation?: ModerationV2Response;\n\n reaction_groups?: Record<string, FeedsReactionGroupResponse>;\n}\n\nexport interface Thresholds {\n explicit?: LabelThresholds;\n\n spam?: LabelThresholds;\n\n toxic?: LabelThresholds;\n}\n\nexport interface ThumbnailResponse {\n image_url: string;\n}\n\nexport interface ThumbnailsSettingsResponse {\n enabled: boolean;\n}\n\nexport interface Time {}\n\nexport interface TrackActivityMetricsEvent {\n activity_id: string;\n\n metric: string;\n\n delta?: number;\n}\n\nexport interface TrackActivityMetricsEventResult {\n activity_id: string;\n\n allowed: boolean;\n\n metric: string;\n\n error?: string;\n}\n\nexport interface TrackActivityMetricsRequest {\n events: TrackActivityMetricsEvent[];\n}\n\nexport interface TrackActivityMetricsResponse {\n duration: string;\n\n results: TrackActivityMetricsEventResult[];\n}\n\nexport interface TranscriptionSettingsResponse {\n closed_caption_mode: 'available' | 'disabled' | 'auto-on';\n\n language:\n | 'auto'\n | 'en'\n | 'fr'\n | 'es'\n | 'de'\n | 'it'\n | 'nl'\n | 'pt'\n | 'pl'\n | 'ca'\n | 'cs'\n | 'da'\n | 'el'\n | 'fi'\n | 'id'\n | 'ja'\n | 'ru'\n | 'sv'\n | 'ta'\n | 'th'\n | 'tr'\n | 'hu'\n | 'ro'\n | 'zh'\n | 'ar'\n | 'tl'\n | 'he'\n | 'hi'\n | 'hr'\n | 'ko'\n | 'ms'\n | 'no'\n | 'uk'\n | 'bg'\n | 'et'\n | 'sl'\n | 'sk';\n\n mode: 'available' | 'disabled' | 'auto-on';\n\n speech_segment_config?: SpeechSegmentConfig;\n\n translation?: TranslationSettings;\n}\n\nexport interface TranslationSettings {\n enabled: boolean;\n\n languages: string[];\n}\n\nexport interface TypingIndicatorsResponse {\n enabled: boolean;\n}\n\nexport interface UnbanActionRequestPayload {\n channel_cid?: string;\n\n decision_reason?: string;\n}\n\nexport interface UnblockActionRequestPayload {\n decision_reason?: string;\n}\n\nexport interface UnblockUsersRequest {\n blocked_user_id: string;\n}\n\nexport interface UnblockUsersResponse {\n duration: string;\n}\n\nexport interface UnfollowBatchRequest {\n follows: FollowPair[];\n\n delete_notification_activity?: boolean;\n\n enrich_own_fields?: boolean;\n}\n\nexport interface UnfollowBatchResponse {\n duration: string;\n\n follows: FollowResponse[];\n}\n\nexport interface UnfollowResponse {\n duration: string;\n\n follow: FollowResponse;\n}\n\nexport interface UnpinActivityResponse {\n duration: string;\n\n feed: string;\n\n user_id: string;\n\n activity: ActivityResponse;\n}\n\nexport interface UpdateActivityPartialRequest {\n copy_custom_to_notification?: boolean;\n\n enrich_own_fields?: boolean;\n\n handle_mention_notifications?: boolean;\n\n run_activity_processors?: boolean;\n\n unset?: string[];\n\n set?: Record<string, any>;\n}\n\nexport interface UpdateActivityPartialResponse {\n duration: string;\n\n activity: ActivityResponse;\n}\n\nexport interface UpdateActivityRequest {\n copy_custom_to_notification?: boolean;\n\n enrich_own_fields?: boolean;\n\n expires_at?: Date;\n\n handle_mention_notifications?: boolean;\n\n poll_id?: string;\n\n restrict_replies?: 'everyone' | 'people_i_follow' | 'nobody';\n\n run_activity_processors?: boolean;\n\n skip_enrich_url?: boolean;\n\n text?: string;\n\n visibility?: 'public' | 'private' | 'tag';\n\n visibility_tag?: string;\n\n attachments?: Attachment[];\n\n collection_refs?: string[];\n\n feeds?: string[];\n\n filter_tags?: string[];\n\n interest_tags?: string[];\n\n mentioned_user_ids?: string[];\n\n custom?: Record<string, any>;\n\n location?: ActivityLocation;\n\n search_data?: Record<string, any>;\n}\n\nexport interface UpdateActivityResponse {\n duration: string;\n\n activity: ActivityResponse;\n}\n\nexport interface UpdateBlockListRequest {\n is_leet_check_enabled?: boolean;\n\n is_plural_check_enabled?: boolean;\n\n team?: string;\n\n words?: string[];\n}\n\nexport interface UpdateBlockListResponse {\n duration: string;\n\n blocklist?: BlockListResponse;\n}\n\nexport interface UpdateBookmarkFolderRequest {\n name?: string;\n\n custom?: Record<string, any>;\n}\n\nexport interface UpdateBookmarkFolderResponse {\n duration: string;\n\n bookmark_folder: BookmarkFolderResponse;\n}\n\nexport interface UpdateBookmarkRequest {\n folder_id?: string;\n\n new_folder_id?: string;\n\n custom?: Record<string, any>;\n\n new_folder?: AddFolderRequest;\n}\n\nexport interface UpdateBookmarkResponse {\n duration: string;\n\n bookmark: BookmarkResponse;\n}\n\nexport interface UpdateCollectionRequest {\n id: string;\n\n name: string;\n\n custom: Record<string, any>;\n}\n\nexport interface UpdateCollectionsRequest {\n collections: UpdateCollectionRequest[];\n}\n\nexport interface UpdateCollectionsResponse {\n duration: string;\n\n collections: CollectionResponse[];\n}\n\nexport interface UpdateCommentRequest {\n comment?: string;\n\n copy_custom_to_notification?: boolean;\n\n handle_mention_notifications?: boolean;\n\n skip_enrich_url?: boolean;\n\n skip_push?: boolean;\n\n attachments?: Attachment[];\n\n mentioned_user_ids?: string[];\n\n custom?: Record<string, any>;\n}\n\nexport interface UpdateCommentResponse {\n duration: string;\n\n comment: CommentResponse;\n}\n\nexport interface UpdateFeedMembersRequest {\n operation: 'upsert' | 'remove' | 'set';\n\n limit?: number;\n\n next?: string;\n\n prev?: string;\n\n members?: FeedMemberRequest[];\n}\n\nexport interface UpdateFeedMembersResponse {\n duration: string;\n\n added: FeedMemberResponse[];\n\n removed_ids: string[];\n\n updated: FeedMemberResponse[];\n}\n\nexport interface UpdateFeedRequest {\n description?: string;\n\n enrich_own_fields?: boolean;\n\n name?: string;\n\n filter_tags?: string[];\n\n custom?: Record<string, any>;\n}\n\nexport interface UpdateFeedResponse {\n duration: string;\n\n feed: FeedResponse;\n}\n\nexport interface UpdateFollowRequest {\n source: string;\n\n target: string;\n\n copy_custom_to_notification?: boolean;\n\n create_notification_activity?: boolean;\n\n enrich_own_fields?: boolean;\n\n follower_role?: string;\n\n push_preference?: 'all' | 'none';\n\n skip_push?: boolean;\n\n custom?: Record<string, any>;\n}\n\nexport interface UpdateFollowResponse {\n duration: string;\n\n follow: FollowResponse;\n}\n\nexport interface UpdateLiveLocationRequest {\n message_id: string;\n\n end_at?: Date;\n\n latitude?: number;\n\n longitude?: number;\n}\n\nexport interface UpdatePollOptionRequest {\n id: string;\n\n text: string;\n\n custom?: Record<string, any>;\n}\n\nexport interface UpdatePollPartialRequest {\n unset?: string[];\n\n set?: Record<string, any>;\n}\n\nexport interface UpdatePollRequest {\n id: string;\n\n name: string;\n\n allow_answers?: boolean;\n\n allow_user_suggested_options?: boolean;\n\n description?: string;\n\n enforce_unique_vote?: boolean;\n\n is_closed?: boolean;\n\n max_votes_allowed?: number;\n\n voting_visibility?: 'anonymous' | 'public';\n\n options?: PollOptionRequest[];\n\n custom?: Record<string, any>;\n}\n\nexport interface UpdateUserGroupRequest {\n description?: string;\n\n name?: string;\n\n team_id?: string;\n}\n\nexport interface UpdateUserGroupResponse {\n duration: string;\n\n user_group?: UserGroupResponse;\n}\n\nexport interface UpdateUserPartialRequest {\n id: string;\n\n unset?: string[];\n\n set?: Record<string, any>;\n}\n\nexport interface UpdateUsersPartialRequest {\n users: UpdateUserPartialRequest[];\n}\n\nexport interface UpdateUsersRequest {\n users: Record<string, UserRequest>;\n}\n\nexport interface UpdateUsersResponse {\n duration: string;\n\n membership_deletion_task_id: string;\n\n users: Record<string, FullUserResponse>;\n}\n\nexport interface UpsertActivitiesRequest {\n activities: ActivityRequest[];\n\n enrich_own_fields?: boolean;\n}\n\nexport interface UpsertActivitiesResponse {\n duration: string;\n\n activities: ActivityResponse[];\n\n mention_notifications_created?: number;\n}\n\nexport interface UpsertConfigRequest {\n key: string;\n\n async?: boolean;\n\n team?: string;\n\n ai_image_config?: AIImageConfig;\n\n ai_text_config?: AITextConfig;\n\n ai_video_config?: AIVideoConfig;\n\n automod_platform_circumvention_config?: AutomodPlatformCircumventionConfig;\n\n automod_semantic_filters_config?: AutomodSemanticFiltersConfig;\n\n automod_toxicity_config?: AutomodToxicityConfig;\n\n aws_rekognition_config?: AIImageConfig;\n\n block_list_config?: BlockListConfig;\n\n bodyguard_config?: AITextConfig;\n\n google_vision_config?: GoogleVisionConfig;\n\n llm_config?: LLMConfig;\n\n rule_builder_config?: RuleBuilderConfig;\n\n velocity_filter_config?: VelocityFilterConfig;\n\n video_call_rule_config?: VideoCallRuleConfig;\n}\n\nexport interface UpsertConfigResponse {\n duration: string;\n\n config?: ConfigResponse;\n}\n\nexport interface UpsertPushPreferencesRequest {\n preferences: PushPreferenceInput[];\n}\n\nexport interface UpsertPushPreferencesResponse {\n duration: string;\n\n user_channel_preferences: Record<\n string,\n Record<string, ChannelPushPreferencesResponse | null>\n >;\n\n user_preferences: Record<string, PushPreferencesResponse>;\n}\n\nexport interface User {\n id: string;\n\n data?: Record<string, any>;\n}\n\nexport interface UserBannedEvent {\n created_at: Date;\n\n custom: Record<string, any>;\n\n user: UserResponseCommonFields;\n\n type: string;\n\n channel_id?: string;\n\n channel_member_count?: number;\n\n channel_message_count?: number;\n\n channel_type?: string;\n\n cid?: string;\n\n expiration?: Date;\n\n reason?: string;\n\n received_at?: Date;\n\n shadow?: boolean;\n\n team?: string;\n\n total_bans?: number;\n\n channel_custom?: Record<string, any>;\n\n created_by?: UserResponseCommonFields;\n}\n\nexport interface UserCreatedWithinParameters {\n max_age?: string;\n}\n\nexport interface UserCustomPropertyParameters {\n operator?: string;\n\n property_key?: string;\n}\n\nexport interface UserDeactivatedEvent {\n created_at: Date;\n\n custom: Record<string, any>;\n\n user: UserResponseCommonFields;\n\n type: string;\n\n received_at?: Date;\n\n created_by?: UserResponseCommonFields;\n}\n\nexport interface UserGroupMember {\n app_pk: number;\n\n created_at: Date;\n\n group_id: string;\n\n is_admin: boolean;\n\n user_id: string;\n}\n\nexport interface UserGroupResponse {\n created_at: Date;\n\n id: string;\n\n name: string;\n\n updated_at: Date;\n\n created_by?: string;\n\n description?: string;\n\n team_id?: string;\n\n members?: UserGroupMember[];\n}\n\nexport interface UserIdenticalContentCountParameters {\n threshold?: number;\n\n time_window?: string;\n}\n\nexport interface UserMuteResponse {\n created_at: Date;\n\n updated_at: Date;\n\n expires?: Date;\n\n target?: UserResponse;\n\n user?: UserResponse;\n}\n\nexport interface UserReactivatedEvent {\n created_at: Date;\n\n custom: Record<string, any>;\n\n user: UserResponseCommonFields;\n\n type: string;\n\n received_at?: Date;\n\n created_by?: UserResponseCommonFields;\n}\n\nexport interface UserRequest {\n id: string;\n\n image?: string;\n\n invisible?: boolean;\n\n language?: string;\n\n name?: string;\n\n custom?: Record<string, any>;\n\n privacy_settings?: PrivacySettingsResponse;\n}\n\nexport interface UserResponse {\n banned: boolean;\n\n created_at: Date;\n\n id: string;\n\n language: string;\n\n online: boolean;\n\n role: string;\n\n updated_at: Date;\n\n blocked_user_ids: string[];\n\n teams: string[];\n\n custom: Record<string, any>;\n\n avg_response_time?: number;\n\n deactivated_at?: Date;\n\n deleted_at?: Date;\n\n image?: string;\n\n last_active?: Date;\n\n name?: string;\n\n revoke_tokens_issued_before?: Date;\n\n teams_role?: Record<string, string>;\n}\n\nexport interface UserResponseCommonFields {\n banned: boolean;\n\n created_at: Date;\n\n id: string;\n\n language: string;\n\n online: boolean;\n\n role: string;\n\n updated_at: Date;\n\n blocked_user_ids: string[];\n\n teams: string[];\n\n custom: Record<string, any>;\n\n avg_response_time?: number;\n\n deactivated_at?: Date;\n\n deleted_at?: Date;\n\n image?: string;\n\n last_active?: Date;\n\n name?: string;\n\n revoke_tokens_issued_before?: Date;\n\n teams_role?: Record<string, string>;\n}\n\nexport interface UserResponsePrivacyFields {\n banned: boolean;\n\n created_at: Date;\n\n id: string;\n\n language: string;\n\n online: boolean;\n\n role: string;\n\n updated_at: Date;\n\n blocked_user_ids: string[];\n\n teams: string[];\n\n custom: Record<string, any>;\n\n avg_response_time?: number;\n\n deactivated_at?: Date;\n\n deleted_at?: Date;\n\n image?: string;\n\n invisible?: boolean;\n\n last_active?: Date;\n\n name?: string;\n\n revoke_tokens_issued_before?: Date;\n\n privacy_settings?: PrivacySettingsResponse;\n\n teams_role?: Record<string, string>;\n}\n\nexport interface UserRoleParameters {\n operator?: string;\n\n role?: string;\n}\n\nexport interface UserRuleParameters {\n max_age?: string;\n}\n\nexport interface UserUnbannedEvent {\n created_at: Date;\n\n custom: Record<string, any>;\n\n user: UserResponseCommonFields;\n\n type: string;\n\n channel_id?: string;\n\n channel_member_count?: number;\n\n channel_message_count?: number;\n\n channel_type?: string;\n\n cid?: string;\n\n received_at?: Date;\n\n shadow?: boolean;\n\n team?: string;\n\n channel_custom?: Record<string, any>;\n\n created_by?: UserResponseCommonFields;\n}\n\nexport interface UserUpdatedEvent {\n created_at: Date;\n\n custom: Record<string, any>;\n\n user: UserResponsePrivacyFields;\n\n type: string;\n\n received_at?: Date;\n}\n\nexport interface VelocityFilterConfig {\n advanced_filters: boolean;\n\n cascading_actions: boolean;\n\n cids_per_user: number;\n\n enabled: boolean;\n\n first_message_only: boolean;\n\n rules: VelocityFilterConfigRule[];\n\n async?: boolean;\n}\n\nexport interface VelocityFilterConfigRule {\n action: 'flag' | 'shadow' | 'remove' | 'ban';\n\n ban_duration: number;\n\n cascading_action: 'flag' | 'shadow' | 'remove' | 'ban';\n\n cascading_threshold: number;\n\n check_message_context: boolean;\n\n fast_spam_threshold: number;\n\n fast_spam_ttl: number;\n\n ip_ban: boolean;\n\n probation_period: number;\n\n shadow_ban: boolean;\n\n slow_spam_threshold: number;\n\n slow_spam_ttl: number;\n\n url_only: boolean;\n\n slow_spam_ban_duration?: number;\n}\n\nexport interface VideoCallRuleConfig {\n flag_all_labels: boolean;\n\n flagged_labels: string[];\n\n rules: HarmConfig[];\n}\n\nexport interface VideoContentParameters {\n harm_labels?: string[];\n}\n\nexport interface VideoEndCallRequestPayload {}\n\nexport interface VideoKickUserRequestPayload {}\n\nexport interface VideoRuleParameters {\n threshold?: number;\n\n time_window?: string;\n\n harm_labels?: string[];\n}\n\nexport interface VideoSettingsResponse {\n access_request_enabled: boolean;\n\n camera_default_on: boolean;\n\n camera_facing: 'front' | 'back' | 'external';\n\n enabled: boolean;\n\n target_resolution: TargetResolution;\n}\n\nexport interface VoteData {\n answer_text?: string;\n\n option_id?: string;\n}\n\nexport interface WHIPIngress {\n address: string;\n}\n\nexport interface WSAuthMessage {\n token: string;\n\n user_details: ConnectUserDetailsRequest;\n\n products?: string[];\n}\n\nexport type WSClientEvent =\n | ({ type: 'app.updated' } & AppUpdatedEvent)\n | ({ type: 'feeds.activity.added' } & ActivityAddedEvent)\n | ({ type: 'feeds.activity.deleted' } & ActivityDeletedEvent)\n | ({ type: 'feeds.activity.feedback' } & ActivityFeedbackEvent)\n | ({ type: 'feeds.activity.marked' } & ActivityMarkEvent)\n | ({ type: 'feeds.activity.pinned' } & ActivityPinnedEvent)\n | ({ type: 'feeds.activity.reaction.added' } & ActivityReactionAddedEvent)\n | ({ type: 'feeds.activity.reaction.deleted' } & ActivityReactionDeletedEvent)\n | ({ type: 'feeds.activity.reaction.updated' } & ActivityReactionUpdatedEvent)\n | ({\n type: 'feeds.activity.removed_from_feed';\n } & ActivityRemovedFromFeedEvent)\n | ({ type: 'feeds.activity.restored' } & ActivityRestoredEvent)\n | ({ type: 'feeds.activity.unpinned' } & ActivityUnpinnedEvent)\n | ({ type: 'feeds.activity.updated' } & ActivityUpdatedEvent)\n | ({ type: 'feeds.bookmark.added' } & BookmarkAddedEvent)\n | ({ type: 'feeds.bookmark.deleted' } & BookmarkDeletedEvent)\n | ({ type: 'feeds.bookmark.updated' } & BookmarkUpdatedEvent)\n | ({ type: 'feeds.bookmark_folder.deleted' } & BookmarkFolderDeletedEvent)\n | ({ type: 'feeds.bookmark_folder.updated' } & BookmarkFolderUpdatedEvent)\n | ({ type: 'feeds.comment.added' } & CommentAddedEvent)\n | ({ type: 'feeds.comment.deleted' } & CommentDeletedEvent)\n | ({ type: 'feeds.comment.reaction.added' } & CommentReactionAddedEvent)\n | ({ type: 'feeds.comment.reaction.deleted' } & CommentReactionDeletedEvent)\n | ({ type: 'feeds.comment.reaction.updated' } & CommentReactionUpdatedEvent)\n | ({ type: 'feeds.comment.restored' } & CommentRestoredEvent)\n | ({ type: 'feeds.comment.updated' } & CommentUpdatedEvent)\n | ({ type: 'feeds.feed.created' } & FeedCreatedEvent)\n | ({ type: 'feeds.feed.deleted' } & FeedDeletedEvent)\n | ({ type: 'feeds.feed.updated' } & FeedUpdatedEvent)\n | ({ type: 'feeds.feed_group.changed' } & FeedGroupChangedEvent)\n | ({ type: 'feeds.feed_group.deleted' } & FeedGroupDeletedEvent)\n | ({ type: 'feeds.feed_group.restored' } & FeedGroupRestoredEvent)\n | ({ type: 'feeds.feed_member.added' } & FeedMemberAddedEvent)\n | ({ type: 'feeds.feed_member.removed' } & FeedMemberRemovedEvent)\n | ({ type: 'feeds.feed_member.updated' } & FeedMemberUpdatedEvent)\n | ({ type: 'feeds.follow.created' } & FollowCreatedEvent)\n | ({ type: 'feeds.follow.deleted' } & FollowDeletedEvent)\n | ({ type: 'feeds.follow.updated' } & FollowUpdatedEvent)\n | ({ type: 'feeds.notification_feed.updated' } & NotificationFeedUpdatedEvent)\n | ({ type: 'feeds.poll.closed' } & PollClosedFeedEvent)\n | ({ type: 'feeds.poll.deleted' } & PollDeletedFeedEvent)\n | ({ type: 'feeds.poll.updated' } & PollUpdatedFeedEvent)\n | ({ type: 'feeds.poll.vote_casted' } & PollVoteCastedFeedEvent)\n | ({ type: 'feeds.poll.vote_changed' } & PollVoteChangedFeedEvent)\n | ({ type: 'feeds.poll.vote_removed' } & PollVoteRemovedFeedEvent)\n | ({ type: 'feeds.stories_feed.updated' } & StoriesFeedUpdatedEvent)\n | ({ type: 'health.check' } & HealthCheckEvent)\n | ({ type: 'moderation.custom_action' } & ModerationCustomActionEvent)\n | ({ type: 'moderation.flagged' } & ModerationFlaggedEvent)\n | ({ type: 'moderation.mark_reviewed' } & ModerationMarkReviewedEvent)\n | ({ type: 'user.banned' } & UserBannedEvent)\n | ({ type: 'user.deactivated' } & UserDeactivatedEvent)\n | ({ type: 'user.reactivated' } & UserReactivatedEvent)\n | ({ type: 'user.unbanned' } & UserUnbannedEvent)\n | ({ type: 'user.updated' } & UserUpdatedEvent);\n\nexport type WSEvent =\n | ({ type: 'app.updated' } & AppUpdatedEvent)\n | ({ type: 'feeds.activity.added' } & ActivityAddedEvent)\n | ({ type: 'feeds.activity.deleted' } & ActivityDeletedEvent)\n | ({ type: 'feeds.activity.feedback' } & ActivityFeedbackEvent)\n | ({ type: 'feeds.activity.marked' } & ActivityMarkEvent)\n | ({ type: 'feeds.activity.pinned' } & ActivityPinnedEvent)\n | ({ type: 'feeds.activity.reaction.added' } & ActivityReactionAddedEvent)\n | ({ type: 'feeds.activity.reaction.deleted' } & ActivityReactionDeletedEvent)\n | ({ type: 'feeds.activity.reaction.updated' } & ActivityReactionUpdatedEvent)\n | ({\n type: 'feeds.activity.removed_from_feed';\n } & ActivityRemovedFromFeedEvent)\n | ({ type: 'feeds.activity.restored' } & ActivityRestoredEvent)\n | ({ type: 'feeds.activity.unpinned' } & ActivityUnpinnedEvent)\n | ({ type: 'feeds.activity.updated' } & ActivityUpdatedEvent)\n | ({ type: 'feeds.bookmark.added' } & BookmarkAddedEvent)\n | ({ type: 'feeds.bookmark.deleted' } & BookmarkDeletedEvent)\n | ({ type: 'feeds.bookmark.updated' } & BookmarkUpdatedEvent)\n | ({ type: 'feeds.bookmark_folder.deleted' } & BookmarkFolderDeletedEvent)\n | ({ type: 'feeds.bookmark_folder.updated' } & BookmarkFolderUpdatedEvent)\n | ({ type: 'feeds.comment.added' } & CommentAddedEvent)\n | ({ type: 'feeds.comment.deleted' } & CommentDeletedEvent)\n | ({ type: 'feeds.comment.reaction.added' } & CommentReactionAddedEvent)\n | ({ type: 'feeds.comment.reaction.deleted' } & CommentReactionDeletedEvent)\n | ({ type: 'feeds.comment.reaction.updated' } & CommentReactionUpdatedEvent)\n | ({ type: 'feeds.comment.restored' } & CommentRestoredEvent)\n | ({ type: 'feeds.comment.updated' } & CommentUpdatedEvent)\n | ({ type: 'feeds.feed.created' } & FeedCreatedEvent)\n | ({ type: 'feeds.feed.deleted' } & FeedDeletedEvent)\n | ({ type: 'feeds.feed.updated' } & FeedUpdatedEvent)\n | ({ type: 'feeds.feed_group.changed' } & FeedGroupChangedEvent)\n | ({ type: 'feeds.feed_group.deleted' } & FeedGroupDeletedEvent)\n | ({ type: 'feeds.feed_group.restored' } & FeedGroupRestoredEvent)\n | ({ type: 'feeds.feed_member.added' } & FeedMemberAddedEvent)\n | ({ type: 'feeds.feed_member.removed' } & FeedMemberRemovedEvent)\n | ({ type: 'feeds.feed_member.updated' } & FeedMemberUpdatedEvent)\n | ({ type: 'feeds.follow.created' } & FollowCreatedEvent)\n | ({ type: 'feeds.follow.deleted' } & FollowDeletedEvent)\n | ({ type: 'feeds.follow.updated' } & FollowUpdatedEvent)\n | ({ type: 'feeds.notification_feed.updated' } & NotificationFeedUpdatedEvent)\n | ({ type: 'feeds.poll.closed' } & PollClosedFeedEvent)\n | ({ type: 'feeds.poll.deleted' } & PollDeletedFeedEvent)\n | ({ type: 'feeds.poll.updated' } & PollUpdatedFeedEvent)\n | ({ type: 'feeds.poll.vote_casted' } & PollVoteCastedFeedEvent)\n | ({ type: 'feeds.poll.vote_changed' } & PollVoteChangedFeedEvent)\n | ({ type: 'feeds.poll.vote_removed' } & PollVoteRemovedFeedEvent)\n | ({ type: 'feeds.stories_feed.updated' } & StoriesFeedUpdatedEvent)\n | ({ type: 'health.check' } & HealthCheckEvent)\n | ({ type: 'moderation.custom_action' } & ModerationCustomActionEvent)\n | ({ type: 'moderation.flagged' } & ModerationFlaggedEvent)\n | ({ type: 'moderation.mark_reviewed' } & ModerationMarkReviewedEvent)\n | ({ type: 'user.banned' } & UserBannedEvent)\n | ({ type: 'user.deactivated' } & UserDeactivatedEvent)\n | ({ type: 'user.reactivated' } & UserReactivatedEvent)\n | ({ type: 'user.unbanned' } & UserUnbannedEvent)\n | ({ type: 'user.updated' } & UserUpdatedEvent);\n","import { StateStore } from '@stream-io/state-store';\nimport type { SearchSource } from './BaseSearchSource';\n\nexport type SearchControllerState = {\n isActive: boolean;\n searchQuery: string;\n sources: SearchSource[];\n};\n\nexport type InternalSearchControllerState = {};\n\nexport type SearchControllerConfig = {\n // The controller will make sure there is always exactly one active source. Enabled by default.\n keepSingleActiveSource: boolean;\n};\n\nexport type SearchControllerOptions = {\n config?: Partial<SearchControllerConfig>;\n sources?: SearchSource[];\n};\n\nexport class SearchController {\n /**\n * Not intended for direct use by integrators, might be removed without notice resulting in\n * broken integrations.\n */\n _internalState: StateStore<InternalSearchControllerState>;\n state: StateStore<SearchControllerState>;\n config: SearchControllerConfig;\n\n constructor({ config, sources }: SearchControllerOptions = {}) {\n this.state = new StateStore<SearchControllerState>({\n isActive: false,\n searchQuery: '',\n sources: sources ?? [],\n });\n this._internalState = new StateStore<InternalSearchControllerState>({});\n this.config = { keepSingleActiveSource: true, ...config };\n }\n get hasNext() {\n return this.sources.some((source) => source.hasNext);\n }\n\n get sources() {\n return this.state.getLatestValue().sources;\n }\n\n get activeSources() {\n return this.state.getLatestValue().sources.filter((s) => s.isActive);\n }\n\n get isActive() {\n return this.state.getLatestValue().isActive;\n }\n\n get searchQuery() {\n return this.state.getLatestValue().searchQuery;\n }\n\n get searchSourceTypes(): Array<SearchSource['type']> {\n return this.sources.map((s) => s.type);\n }\n\n addSource = (source: SearchSource) => {\n this.state.partialNext({\n sources: [...this.sources, source],\n });\n };\n\n getSource = (sourceType: SearchSource['type']) =>\n this.sources.find((s) => s.type === sourceType);\n\n removeSource = (sourceType: SearchSource['type']) => {\n const newSources = this.sources.filter((s) => s.type !== sourceType);\n if (newSources.length === this.sources.length) return;\n this.state.partialNext({ sources: newSources });\n };\n\n activateSource = (sourceType: SearchSource['type']) => {\n const source = this.getSource(sourceType);\n if (!source || source.isActive) return;\n if (this.config.keepSingleActiveSource) {\n this.sources.forEach((s) => {\n if (s.type !== sourceType) {\n s.deactivate();\n }\n });\n }\n source.activate();\n this.state.partialNext({ sources: [...this.sources] });\n };\n\n deactivateSource = (sourceType: SearchSource['type']) => {\n const source = this.getSource(sourceType);\n if (!source?.isActive) return;\n if (this.activeSources.length === 1) return;\n source.deactivate();\n this.state.partialNext({ sources: [...this.sources] });\n };\n\n activate = () => {\n if (!this.activeSources.length) {\n const sourcesToActivate = this.config.keepSingleActiveSource\n ? this.sources.slice(0, 1)\n : this.sources;\n sourcesToActivate.forEach((s) => s.activate());\n }\n if (this.isActive) return;\n this.state.partialNext({ isActive: true });\n };\n\n search = async (searchQuery?: string) => {\n const searchedSources = this.activeSources;\n this.state.partialNext({\n searchQuery,\n });\n await Promise.all(\n searchedSources.map((source) => source.search(searchQuery)),\n );\n };\n\n cancelSearchQueries = () => {\n this.activeSources.forEach((s) => s.cancelScheduledQuery());\n };\n\n clear = () => {\n this.cancelSearchQueries();\n this.sources.forEach((source) =>\n source.state.next({ ...source.initialState, isActive: source.isActive }),\n );\n this.state.next((current) => ({\n ...current,\n isActive: true,\n queriesInProgress: [],\n searchQuery: '',\n }));\n };\n\n exit = () => {\n this.cancelSearchQueries();\n this.sources.forEach((source) =>\n source.state.next({ ...source.initialState, isActive: source.isActive }),\n );\n this.state.next((current) => ({\n ...current,\n isActive: false,\n queriesInProgress: [],\n searchQuery: '',\n }));\n };\n}\n","import { StateStore } from '@stream-io/state-store';\nimport { debounce, type DebouncedFunc } from '../utils';\nimport type {\n QueryReturnValue,\n SearchSourceOptions,\n SearchSourceState,\n SearchSourceType,\n} from './types';\n\nexport type DebounceOptions = {\n debounceMs: number;\n};\ntype DebouncedExecQueryFunction = DebouncedFunc<\n (searchString?: string) => Promise<void>\n>;\n\ninterface ISearchSource<T = any> {\n activate(): void;\n\n canExecuteQuery(newSearchString?: string): boolean;\n\n deactivate(): void;\n\n readonly hasNext: boolean;\n readonly hasResults: boolean;\n readonly initialState: SearchSourceState<T>;\n readonly isActive: boolean;\n readonly isLoading: boolean;\n readonly items: T[] | undefined;\n readonly lastQueryError: Error | undefined;\n readonly next: string | undefined | null;\n readonly offset: number | undefined;\n\n resetState(): void;\n\n readonly searchQuery: string;\n\n readonly state: StateStore<SearchSourceState<T>>;\n readonly type: SearchSourceType;\n}\n\nexport interface SearchSource<T = any> extends ISearchSource<T> {\n cancelScheduledQuery(): void;\n setDebounceOptions(options: DebounceOptions): void;\n search(text?: string): Promise<void> | undefined;\n}\n\nexport interface SearchSourceSync<T = any> extends ISearchSource<T> {\n cancelScheduledQuery(): void;\n setDebounceOptions(options: DebounceOptions): void;\n search(text?: string): void;\n}\n\nconst DEFAULT_SEARCH_SOURCE_OPTIONS: Required<SearchSourceOptions> = {\n debounceMs: 300,\n pageSize: 10,\n allowEmptySearchString: false,\n resetOnNewSearchQuery: true,\n} as const;\n\nabstract class BaseSearchSourceBase<T> implements ISearchSource<T> {\n state: StateStore<SearchSourceState<T>>;\n pageSize: number;\n protected allowEmptySearchString: boolean;\n protected resetOnNewSearchQuery: boolean;\n abstract readonly type: SearchSourceType;\n\n protected constructor(options?: SearchSourceOptions) {\n const { pageSize, allowEmptySearchString, resetOnNewSearchQuery } = {\n ...DEFAULT_SEARCH_SOURCE_OPTIONS,\n ...options,\n };\n this.pageSize = pageSize;\n this.allowEmptySearchString = allowEmptySearchString;\n this.resetOnNewSearchQuery = resetOnNewSearchQuery;\n this.state = new StateStore<SearchSourceState<T>>(this.initialState);\n }\n\n get lastQueryError() {\n return this.state.getLatestValue().lastQueryError;\n }\n\n get hasNext() {\n return this.state.getLatestValue().hasNext;\n }\n\n get hasResults() {\n return Array.isArray(this.state.getLatestValue().items);\n }\n\n get isActive() {\n return this.state.getLatestValue().isActive;\n }\n\n get isLoading() {\n return this.state.getLatestValue().isLoading;\n }\n\n get initialState() {\n return {\n hasNext: true,\n isActive: false,\n isLoading: false,\n items: undefined,\n lastQueryError: undefined,\n next: undefined,\n offset: 0,\n searchQuery: '',\n };\n }\n\n get items() {\n return this.state.getLatestValue().items;\n }\n\n get next() {\n return this.state.getLatestValue().next;\n }\n\n get offset() {\n return this.state.getLatestValue().offset;\n }\n\n get searchQuery() {\n return this.state.getLatestValue().searchQuery;\n }\n\n activate = () => {\n if (this.isActive) return;\n this.state.partialNext({ isActive: true });\n };\n\n deactivate = () => {\n if (!this.isActive) return;\n this.state.partialNext({ isActive: false });\n };\n\n canExecuteQuery = (newSearchString?: string) => {\n const hasNewSearchQuery = typeof newSearchString !== 'undefined';\n const searchString = newSearchString ?? this.searchQuery;\n return !!(\n this.isActive &&\n !this.isLoading &&\n (this.hasNext || hasNewSearchQuery) &&\n (this.allowEmptySearchString || searchString)\n );\n };\n\n protected getStateBeforeFirstQuery(\n newSearchString: string,\n ): SearchSourceState<T> {\n const initialState = this.initialState;\n const oldItems = this.items;\n\n const items = this.resetOnNewSearchQuery ? initialState.items : oldItems;\n return {\n ...this.initialState,\n items,\n isActive: this.isActive,\n isLoading: this.resetOnNewSearchQuery ? true : !oldItems,\n searchQuery: newSearchString,\n };\n }\n\n protected getStateAfterQuery(\n stateUpdate: Partial<SearchSourceState<T>>,\n isFirstPage: boolean,\n ): SearchSourceState<T> {\n const current = this.state.getLatestValue();\n return {\n ...current,\n lastQueryError: undefined, // reset lastQueryError that can be overridden by the stateUpdate\n ...stateUpdate,\n isLoading: false,\n items: isFirstPage\n ? stateUpdate.items\n : [...(this.items ?? []), ...(stateUpdate.items || [])],\n };\n }\n\n protected prepareStateForQuery(newSearchString?: string) {\n const hasNewSearchQuery = typeof newSearchString !== 'undefined';\n const searchString = newSearchString ?? this.searchQuery;\n\n if (hasNewSearchQuery) {\n this.state.next(this.getStateBeforeFirstQuery(newSearchString ?? ''));\n } else {\n this.state.partialNext({ isLoading: true });\n }\n\n return { searchString, hasNewSearchQuery };\n }\n\n protected updatePaginationStateFromQuery(result: QueryReturnValue<T>) {\n const { items, next } = result;\n\n const stateUpdate: Partial<SearchSourceState<T>> = {};\n if (Object.prototype.hasOwnProperty.call(result, 'next')) {\n stateUpdate.next = next;\n stateUpdate.hasNext = !!next;\n } else {\n stateUpdate.offset = (this.offset ?? 0) + items.length;\n stateUpdate.hasNext = items.length === this.pageSize;\n }\n\n return stateUpdate;\n }\n\n resetState() {\n this.state.next(this.initialState);\n }\n\n resetStateAndActivate() {\n this.resetState();\n this.activate();\n }\n}\n\nexport abstract class BaseSearchSource<T>\n extends BaseSearchSourceBase<T>\n implements SearchSource<T>\n{\n protected searchDebounced!: DebouncedExecQueryFunction;\n\n constructor(options?: SearchSourceOptions) {\n const { debounceMs } = { ...DEFAULT_SEARCH_SOURCE_OPTIONS, ...options };\n super(options);\n this.setDebounceOptions({ debounceMs });\n }\n\n protected abstract query(searchQuery: string): Promise<QueryReturnValue<T>>;\n\n protected abstract filterQueryResults(items: T[]): T[] | Promise<T[]>;\n\n setDebounceOptions = ({ debounceMs }: DebounceOptions) => {\n this.searchDebounced = debounce(this.executeQuery.bind(this), debounceMs);\n };\n\n async executeQuery(newSearchString?: string) {\n if (!this.canExecuteQuery(newSearchString)) return;\n\n const { hasNewSearchQuery, searchString } =\n this.prepareStateForQuery(newSearchString);\n\n let stateUpdate: Partial<SearchSourceState<T>> = {};\n try {\n const results = await this.query(searchString);\n if (!results) return;\n\n const { items } = results;\n stateUpdate = this.updatePaginationStateFromQuery(results);\n stateUpdate.items = await this.filterQueryResults(items);\n } catch (e) {\n stateUpdate.lastQueryError = e as Error;\n } finally {\n this.state.next(this.getStateAfterQuery(stateUpdate, hasNewSearchQuery));\n }\n }\n\n search = (searchQuery?: string) => this.searchDebounced(searchQuery);\n\n cancelScheduledQuery() {\n this.searchDebounced.cancel();\n }\n}\n\nexport abstract class BaseSearchSourceSync<T>\n extends BaseSearchSourceBase<T>\n implements SearchSourceSync<T>\n{\n protected searchDebounced!: DebouncedExecQueryFunction;\n\n constructor(options?: SearchSourceOptions) {\n const { debounceMs } = { ...DEFAULT_SEARCH_SOURCE_OPTIONS, ...options };\n super(options);\n this.setDebounceOptions({ debounceMs });\n }\n\n protected abstract query(searchQuery: string): QueryReturnValue<T>;\n\n protected abstract filterQueryResults(items: T[]): T[];\n\n setDebounceOptions = ({ debounceMs }: DebounceOptions) => {\n this.searchDebounced = debounce(this.executeQuery.bind(this), debounceMs);\n };\n\n executeQuery(newSearchString?: string) {\n if (!this.canExecuteQuery(newSearchString)) return;\n\n const { hasNewSearchQuery, searchString } =\n this.prepareStateForQuery(newSearchString);\n\n let stateUpdate: Partial<SearchSourceState<T>> = {};\n try {\n const results = this.query(searchString);\n if (!results) return;\n\n const { items } = results;\n stateUpdate = this.updatePaginationStateFromQuery(results);\n stateUpdate.items = this.filterQueryResults(items);\n } catch (e) {\n stateUpdate.lastQueryError = e as Error;\n } finally {\n this.state.next(this.getStateAfterQuery(stateUpdate, hasNewSearchQuery));\n }\n }\n\n search = (searchQuery?: string) => this.searchDebounced(searchQuery);\n\n cancelScheduledQuery() {\n this.searchDebounced.cancel();\n }\n}\n","import { BaseSearchSource } from './BaseSearchSource';\nimport type { SearchSourceOptions } from './types';\n\nimport type { FeedsClient } from '../../feeds-client';\nimport type { ActivityResponse } from '../../gen/models';\n\nexport class ActivitySearchSource extends BaseSearchSource<ActivityResponse> {\n readonly type = 'activity' as const;\n private readonly client: FeedsClient;\n\n constructor(client: FeedsClient, options?: SearchSourceOptions) {\n super(options);\n this.client = client;\n }\n\n protected async query(searchQuery: string) {\n const { connected_user: connectedUser } =\n this.client.state.getLatestValue();\n if (!connectedUser) return { items: [] };\n\n const { activities: items, next } = await this.client.queryActivities({\n sort: [{ direction: -1, field: 'created_at' }],\n ...(!this.allowEmptySearchString || searchQuery.length > 0\n ? { filter: { text: { $autocomplete: searchQuery } } }\n : {}),\n limit: 10,\n next: this.next ?? undefined,\n });\n\n return { items, next };\n }\n\n protected filterQueryResults(items: ActivityResponse[]) {\n return items;\n }\n}\n","import { BaseSearchSource } from './BaseSearchSource';\nimport type { SearchSourceOptions } from './types';\n\nimport type { FeedsClient } from '../../feeds-client';\nimport type { Feed } from '../../feed';\n\nexport type FeedSearchSourceOptions = SearchSourceOptions & {\n groupId?: string;\n};\n\nexport class FeedSearchSource extends BaseSearchSource<Feed> {\n readonly type: string;\n readonly feedGroupId?: string | undefined;\n private readonly client: FeedsClient;\n\n constructor(client: FeedsClient, options?: FeedSearchSourceOptions) {\n super(options);\n this.client = client;\n this.feedGroupId = options?.groupId;\n this.type = `${this.feedGroupId}-feed`;\n }\n\n protected async query(searchQuery: string) {\n const { connected_user: connectedUser } =\n this.client.state.getLatestValue();\n if (!connectedUser) return { items: [] };\n\n const { feeds: items, next } = await this.client.queryFeeds({\n filter: {\n ...(this.feedGroupId ? { group_id: this.feedGroupId } : {}),\n ...(!this.allowEmptySearchString || searchQuery.length > 0\n ? {\n $or: [\n { name: { $autocomplete: searchQuery } },\n { description: { $autocomplete: searchQuery } },\n { 'created_by.name': { $autocomplete: searchQuery } },\n ],\n }\n : {}),\n },\n next: this.next ?? undefined,\n });\n\n return { items, next };\n }\n\n protected filterQueryResults(items: Feed[]) {\n return items;\n }\n}\n","import { BaseSearchSource } from './BaseSearchSource';\nimport type { SearchSourceOptions } from './types';\n\nimport type { FeedsClient } from '../../feeds-client';\nimport type { UserResponse } from '../../gen/models';\n\nexport class UserSearchSource extends BaseSearchSource<UserResponse> {\n readonly type = 'user' as const;\n private readonly client: FeedsClient;\n\n constructor(client: FeedsClient, options?: SearchSourceOptions) {\n super(options);\n this.client = client;\n }\n\n protected async query(searchQuery: string) {\n const { connected_user: connectedUser } =\n this.client.state.getLatestValue();\n if (!connectedUser) return { items: [] };\n\n const { users: items } = await this.client.queryUsers({\n payload: {\n filter_conditions: {\n ...(!this.allowEmptySearchString || searchQuery.length > 0\n ? {\n name: {\n $autocomplete: searchQuery,\n },\n }\n : {}),\n },\n },\n });\n\n return { items, next: undefined };\n }\n\n protected filterQueryResults(items: UserResponse[]) {\n return items;\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../src/gen/models/index.ts","../../src/common/search/SearchController.ts","../../src/common/search/BaseSearchSource.ts","../../src/common/search/ActivitySearchSource.ts","../../src/common/search/FeedSearchSource.ts","../../src/common/search/UserSearchSource.ts"],"sourcesContent":["export interface AIImageConfig {\n enabled: boolean;\n\n ocr_rules: OCRRule[];\n\n rules: AWSRekognitionRule[];\n\n async?: boolean;\n}\n\nexport interface AIImageLabelDefinition {\n description: string;\n\n group: string;\n\n key: string;\n\n label: string;\n}\n\nexport interface AITextConfig {\n enabled: boolean;\n\n profile: string;\n\n rules: BodyguardRule[];\n\n severity_rules: BodyguardSeverityRule[];\n\n async?: boolean;\n}\n\nexport interface AIVideoConfig {\n enabled: boolean;\n\n rules: AWSRekognitionRule[];\n\n async?: boolean;\n}\n\nexport interface APIError {\n /**\n * API error code\n */\n code: number;\n\n /**\n * Request duration\n */\n duration: string;\n\n /**\n * Message describing an error\n */\n message: string;\n\n /**\n * URL with additional information\n */\n more_info: string;\n\n /**\n * Response HTTP status code\n */\n status_code: number;\n\n /**\n * Additional error-specific information\n */\n details: number[];\n\n /**\n * Flag that indicates if the error is unrecoverable, requests that return unrecoverable errors should not be retried, this error only applies to the request that caused it\n */\n unrecoverable?: boolean;\n\n /**\n * Additional error info\n */\n exception_fields?: Record<string, string>;\n}\n\nexport interface AWSRekognitionRule {\n action:\n | 'flag'\n | 'shadow'\n | 'remove'\n | 'bounce'\n | 'bounce_flag'\n | 'bounce_remove';\n\n label: string;\n\n min_confidence: number;\n\n subclassifications?: Record<string, any>;\n}\n\nexport interface AcceptFeedMemberInviteRequest {}\n\nexport interface AcceptFeedMemberInviteResponse {\n duration: string;\n\n member: FeedMemberResponse;\n}\n\nexport interface AcceptFollowRequest {\n /**\n * Fully qualified ID of the source feed\n */\n source: string;\n\n /**\n * Fully qualified ID of the target feed\n */\n target: string;\n\n /**\n * Optional role for the follower in the follow relationship\n */\n follower_role?: string;\n}\n\nexport interface AcceptFollowResponse {\n duration: string;\n\n follow: FollowResponse;\n}\n\nexport interface Action {\n name: string;\n\n text: string;\n\n type: string;\n\n style?: string;\n\n value?: string;\n}\n\nexport interface ActionLogResponse {\n /**\n * Timestamp when the action was taken\n */\n created_at: Date;\n\n /**\n * Unique identifier of the action log\n */\n id: string;\n\n /**\n * Reason for the moderation action\n */\n reason: string;\n\n /**\n * ID of the user who was the target of the action\n */\n target_user_id: string;\n\n /**\n * Type of moderation action\n */\n type: string;\n\n /**\n * ID of the user who performed the action\n */\n user_id: string;\n\n ai_providers: string[];\n\n /**\n * Additional metadata about the action\n */\n custom: Record<string, any>;\n\n review_queue_item?: ReviewQueueItemResponse;\n\n target_user?: UserResponse;\n\n user?: UserResponse;\n}\n\nexport interface ActionSequence {\n action: string;\n\n blur: boolean;\n\n cooldown_period: number;\n\n threshold: number;\n\n time_window: number;\n\n warning: boolean;\n\n warning_text: string;\n}\n\nexport interface ActivityAddedEvent {\n /**\n * Date/time of creation\n */\n created_at: Date;\n\n fid: string;\n\n activity: ActivityResponse;\n\n custom: Record<string, any>;\n\n /**\n * The type of event: \"feeds.activity.added\" in this case\n */\n type: string;\n\n feed_visibility?: string;\n\n received_at?: Date;\n\n user?: UserResponseCommonFields;\n}\n\nexport interface ActivityDeletedEvent {\n /**\n * Date/time of creation\n */\n created_at: Date;\n\n fid: string;\n\n activity: ActivityResponse;\n\n custom: Record<string, any>;\n\n /**\n * The type of event: \"feeds.activity.deleted\" in this case\n */\n type: string;\n\n feed_visibility?: string;\n\n received_at?: Date;\n\n user?: UserResponseCommonFields;\n}\n\nexport interface ActivityFeedbackEvent {\n /**\n * Date/time of creation\n */\n created_at: Date;\n\n activity_feedback: ActivityFeedbackEventPayload;\n\n custom: Record<string, any>;\n\n /**\n * The type of event: \"feeds.activity.feedback\" in this case\n */\n type: string;\n\n received_at?: Date;\n\n user?: UserResponseCommonFields;\n}\n\nexport interface ActivityFeedbackEventPayload {\n /**\n * The type of feedback action. One of: hide, show_more, show_less\n */\n\n action: 'hide' | 'show_more' | 'show_less';\n\n /**\n * The activity that received feedback\n */\n activity_id: string;\n\n /**\n * When the feedback was created\n */\n created_at: Date;\n\n /**\n * When the feedback was last updated\n */\n updated_at: Date;\n\n /**\n * The feedback value (true/false)\n */\n value: string;\n\n user: UserResponse;\n}\n\nexport interface ActivityFeedbackRequest {\n /**\n * Whether to hide this activity\n */\n hide?: boolean;\n\n /**\n * Whether to show less content like this\n */\n show_less?: boolean;\n\n /**\n * Whether to show more content like this\n */\n show_more?: boolean;\n}\n\nexport interface ActivityFeedbackResponse {\n /**\n * The ID of the activity that received feedback\n */\n activity_id: string;\n\n duration: string;\n}\n\nexport interface ActivityLocation {\n /**\n * Latitude coordinate\n */\n lat: number;\n\n /**\n * Longitude coordinate\n */\n lng: number;\n}\n\nexport interface ActivityMarkEvent {\n /**\n * Date/time of creation\n */\n created_at: Date;\n\n fid: string;\n\n custom: Record<string, any>;\n\n /**\n * The type of event: \"feeds.activity.marked\" in this case\n */\n type: string;\n\n feed_visibility?: string;\n\n /**\n * Whether all activities were marked as read\n */\n mark_all_read?: boolean;\n\n /**\n * Whether all activities were marked as seen\n */\n mark_all_seen?: boolean;\n\n received_at?: Date;\n\n /**\n * The IDs of activities marked as read\n */\n mark_read?: string[];\n\n /**\n * The IDs of activities marked as seen\n */\n mark_seen?: string[];\n\n /**\n * The IDs of activities marked as watched\n */\n mark_watched?: string[];\n\n user?: UserResponseCommonFields;\n}\n\nexport interface ActivityPinResponse {\n /**\n * When the pin was created\n */\n created_at: Date;\n\n /**\n * ID of the feed where activity is pinned\n */\n feed: string;\n\n /**\n * When the pin was last updated\n */\n updated_at: Date;\n\n activity: ActivityResponse;\n\n user: UserResponse;\n}\n\nexport interface ActivityPinnedEvent {\n /**\n * Date/time of creation\n */\n created_at: Date;\n\n /**\n * The ID of the feed\n */\n fid: string;\n\n custom: Record<string, any>;\n\n pinned_activity: PinActivityResponse;\n\n /**\n * The type of event: \"feeds.activity.pinned\" in this case\n */\n type: string;\n\n feed_visibility?: string;\n\n received_at?: Date;\n\n user?: UserResponseCommonFields;\n}\n\nexport interface ActivityProcessorConfig {\n type: string;\n\n openai_key?: string;\n\n config?: Record<string, any>;\n}\n\nexport interface ActivityReactionAddedEvent {\n /**\n * Date/time of creation\n */\n created_at: Date;\n\n fid: string;\n\n activity: ActivityResponse;\n\n custom: Record<string, any>;\n\n reaction: FeedsReactionResponse;\n\n /**\n * The type of event: \"feeds.activity.reaction.added\" in this case\n */\n type: string;\n\n feed_visibility?: string;\n\n received_at?: Date;\n\n user?: UserResponseCommonFields;\n}\n\nexport interface ActivityReactionDeletedEvent {\n /**\n * Date/time of creation\n */\n created_at: Date;\n\n fid: string;\n\n activity: ActivityResponse;\n\n custom: Record<string, any>;\n\n reaction: FeedsReactionResponse;\n\n /**\n * The type of the reaction that was removed\n */\n type: string;\n\n feed_visibility?: string;\n\n received_at?: Date;\n\n user?: UserResponseCommonFields;\n}\n\nexport interface ActivityReactionUpdatedEvent {\n /**\n * Date/time of creation\n */\n created_at: Date;\n\n fid: string;\n\n activity: ActivityResponse;\n\n custom: Record<string, any>;\n\n reaction: FeedsReactionResponse;\n\n /**\n * The type of event: \"feeds.activity.reaction.updated\" in this case\n */\n type: string;\n\n feed_visibility?: string;\n\n received_at?: Date;\n\n user?: UserResponseCommonFields;\n}\n\nexport interface ActivityRemovedFromFeedEvent {\n /**\n * Date/time of creation\n */\n created_at: Date;\n\n fid: string;\n\n activity: ActivityResponse;\n\n custom: Record<string, any>;\n\n /**\n * The type of event: \"feeds.activity.removed_from_feed\" in this case\n */\n type: string;\n\n feed_visibility?: string;\n\n received_at?: Date;\n\n user?: UserResponseCommonFields;\n}\n\nexport interface ActivityRequest {\n /**\n * Type of activity\n */\n type: string;\n\n /**\n * List of feeds to add the activity to with a default max limit of 25 feeds\n */\n feeds: string[];\n\n /**\n * @deprecated\n * Deprecated: use notification_context.trigger.custom and notification_context.target.custom instead\n */\n copy_custom_to_notification?: boolean;\n\n /**\n * Whether to create notification activities for mentioned users\n */\n create_notification_activity?: boolean;\n\n /**\n * Expiration time for the activity\n */\n expires_at?: string;\n\n /**\n * Optional ID for the activity\n */\n id?: string;\n\n /**\n * ID of parent activity for replies/comments\n */\n parent_id?: string;\n\n /**\n * ID of a poll to attach to activity\n */\n poll_id?: string;\n\n /**\n * Controls who can add comments/replies to this activity. One of: everyone, people_i_follow, nobody\n */\n\n restrict_replies?: 'everyone' | 'people_i_follow' | 'nobody';\n\n /**\n * Whether to skip URL enrichment for the activity\n */\n skip_enrich_url?: boolean;\n\n /**\n * Whether to skip push notifications\n */\n skip_push?: boolean;\n\n /**\n * Text content of the activity\n */\n text?: string;\n\n /**\n * Visibility setting for the activity. One of: public, private, tag\n */\n\n visibility?: 'public' | 'private' | 'tag';\n\n /**\n * If visibility is 'tag', this is the tag name and is required\n */\n visibility_tag?: string;\n\n /**\n * List of attachments for the activity\n */\n attachments?: Attachment[];\n\n /**\n * Collections that this activity references\n */\n collection_refs?: string[];\n\n /**\n * Tags for filtering activities\n */\n filter_tags?: string[];\n\n /**\n * Tags for indicating user interests\n */\n interest_tags?: string[];\n\n /**\n * List of users mentioned in the activity\n */\n mentioned_user_ids?: string[];\n\n /**\n * Custom data for the activity\n */\n custom?: Record<string, any>;\n\n location?: ActivityLocation;\n\n /**\n * Additional data for search indexing\n */\n search_data?: Record<string, any>;\n}\n\nexport interface ActivityResponse {\n /**\n * Number of bookmarks on the activity\n */\n bookmark_count: number;\n\n /**\n * Number of comments on the activity\n */\n comment_count: number;\n\n /**\n * When the activity was created\n */\n created_at: Date;\n\n /**\n * If this activity is hidden by this user (using activity feedback)\n */\n hidden: boolean;\n\n /**\n * Unique identifier for the activity\n */\n id: string;\n\n /**\n * Popularity score of the activity\n */\n popularity: number;\n\n /**\n * If this activity is obfuscated for this user. For premium content where you want to show a preview\n */\n preview: boolean;\n\n /**\n * Number of reactions to the activity\n */\n reaction_count: number;\n\n /**\n * Controls who can add comments/replies to this activity. One of: everyone, people_i_follow, nobody\n */\n\n restrict_replies: 'everyone' | 'people_i_follow' | 'nobody';\n\n /**\n * Ranking score for this activity\n */\n score: number;\n\n /**\n * Number of times the activity was shared\n */\n share_count: number;\n\n /**\n * Type of activity\n */\n type: string;\n\n /**\n * When the activity was last updated\n */\n updated_at: Date;\n\n /**\n * Visibility setting for the activity. One of: public, private, tag\n */\n\n visibility: 'public' | 'private' | 'tag';\n\n /**\n * Media attachments for the activity\n */\n attachments: Attachment[];\n\n /**\n * Latest 5 comments of this activity (comment replies excluded)\n */\n comments: CommentResponse[];\n\n /**\n * List of feed IDs containing this activity\n */\n feeds: string[];\n\n /**\n * Tags for filtering\n */\n filter_tags: string[];\n\n /**\n * Tags for user interests\n */\n interest_tags: string[];\n\n /**\n * Recent reactions to the activity\n */\n latest_reactions: FeedsReactionResponse[];\n\n /**\n * Users mentioned in the activity\n */\n mentioned_users: UserResponse[];\n\n /**\n * Current user's bookmarks for this activity\n */\n own_bookmarks: BookmarkResponse[];\n\n /**\n * Current user's reactions to this activity\n */\n own_reactions: FeedsReactionResponse[];\n\n /**\n * Enriched collection data referenced by this activity\n */\n collections: Record<string, EnrichedCollectionResponse>;\n\n /**\n * Custom data for the activity\n */\n custom: Record<string, any>;\n\n /**\n * Grouped reactions by type\n */\n reaction_groups: Record<string, FeedsReactionGroupResponse>;\n\n /**\n * Data for search indexing\n */\n search_data: Record<string, any>;\n\n user: UserResponse;\n\n /**\n * When the activity was deleted\n */\n deleted_at?: Date;\n\n /**\n * When the activity was last edited\n */\n edited_at?: Date;\n\n /**\n * When the activity will expire\n */\n expires_at?: Date;\n\n /**\n * Total count of reactions from friends on this activity\n */\n friend_reaction_count?: number;\n\n /**\n * Whether this activity has been read. Only set for feed groups with notification config (track_seen/track_read enabled).\n */\n is_read?: boolean;\n\n /**\n * Whether this activity has been seen. Only set for feed groups with notification config (track_seen/track_read enabled).\n */\n is_seen?: boolean;\n\n is_watched?: boolean;\n\n moderation_action?: string;\n\n /**\n * Which activity selector provided this activity (e.g., 'following', 'popular', 'interest'). Only set when using multiple activity selectors with ranking.\n */\n selector_source?: string;\n\n /**\n * Text content of the activity\n */\n text?: string;\n\n /**\n * If visibility is 'tag', this is the tag name\n */\n visibility_tag?: string;\n\n /**\n * Reactions from users the current user follows or has mutual follows with\n */\n friend_reactions?: FeedsReactionResponse[];\n\n current_feed?: FeedResponse;\n\n location?: ActivityLocation;\n\n metrics?: Record<string, number>;\n\n moderation?: ModerationV2Response;\n\n notification_context?: NotificationContext;\n\n parent?: ActivityResponse;\n\n poll?: PollResponseData;\n\n /**\n * Variable values used at ranking time. Only included when include_score_vars is enabled in enrichment options.\n */\n score_vars?: Record<string, any>;\n}\n\nexport interface ActivityRestoredEvent {\n /**\n * Date/time of creation\n */\n created_at: Date;\n\n fid: string;\n\n activity: ActivityResponse;\n\n custom: Record<string, any>;\n\n /**\n * The type of the event\n */\n type: string;\n\n feed_visibility?: string;\n\n received_at?: Date;\n\n user?: UserResponseCommonFields;\n}\n\nexport interface ActivitySelectorConfig {\n cutoff_time: Date;\n\n cutoff_window?: string;\n\n min_popularity?: number;\n\n type?: string;\n\n sort?: SortParam[];\n\n filter?: Record<string, any>;\n\n params?: Record<string, any>;\n}\n\nexport interface ActivityUnpinnedEvent {\n /**\n * Date/time of creation\n */\n created_at: Date;\n\n /**\n * The ID of the feed\n */\n fid: string;\n\n custom: Record<string, any>;\n\n pinned_activity: PinActivityResponse;\n\n /**\n * The type of event: \"feeds.activity.unpinned\" in this case\n */\n type: string;\n\n feed_visibility?: string;\n\n received_at?: Date;\n\n user?: UserResponseCommonFields;\n}\n\nexport interface ActivityUpdatedEvent {\n /**\n * Date/time of creation\n */\n created_at: Date;\n\n fid: string;\n\n activity: ActivityResponse;\n\n custom: Record<string, any>;\n\n /**\n * The type of the event\n */\n type: string;\n\n feed_visibility?: string;\n\n received_at?: Date;\n\n user?: UserResponseCommonFields;\n}\n\nexport interface AddActivityRequest {\n /**\n * Type of activity\n */\n type: string;\n\n /**\n * List of feeds to add the activity to with a default max limit of 25 feeds\n */\n feeds: string[];\n\n /**\n * @deprecated\n * Deprecated: use notification_context.trigger.custom and notification_context.target.custom instead\n */\n copy_custom_to_notification?: boolean;\n\n /**\n * Whether to create notification activities for mentioned users\n */\n create_notification_activity?: boolean;\n\n enrich_own_fields?: boolean;\n\n /**\n * Expiration time for the activity\n */\n expires_at?: string;\n\n /**\n * Optional ID for the activity\n */\n id?: string;\n\n /**\n * ID of parent activity for replies/comments\n */\n parent_id?: string;\n\n /**\n * ID of a poll to attach to activity\n */\n poll_id?: string;\n\n /**\n * Controls who can add comments/replies to this activity. One of: everyone, people_i_follow, nobody\n */\n\n restrict_replies?: 'everyone' | 'people_i_follow' | 'nobody';\n\n /**\n * Whether to skip URL enrichment for the activity\n */\n skip_enrich_url?: boolean;\n\n /**\n * Whether to skip push notifications\n */\n skip_push?: boolean;\n\n /**\n * Text content of the activity\n */\n text?: string;\n\n /**\n * Visibility setting for the activity. One of: public, private, tag\n */\n\n visibility?: 'public' | 'private' | 'tag';\n\n /**\n * If visibility is 'tag', this is the tag name and is required\n */\n visibility_tag?: string;\n\n /**\n * List of attachments for the activity\n */\n attachments?: Attachment[];\n\n /**\n * Collections that this activity references\n */\n collection_refs?: string[];\n\n /**\n * Tags for filtering activities\n */\n filter_tags?: string[];\n\n /**\n * Tags for indicating user interests\n */\n interest_tags?: string[];\n\n /**\n * List of users mentioned in the activity\n */\n mentioned_user_ids?: string[];\n\n /**\n * Custom data for the activity\n */\n custom?: Record<string, any>;\n\n location?: ActivityLocation;\n\n /**\n * Additional data for search indexing\n */\n search_data?: Record<string, any>;\n}\n\nexport interface AddActivityResponse {\n duration: string;\n\n activity: ActivityResponse;\n\n /**\n * Number of mention notification activities created for mentioned users\n */\n mention_notifications_created?: number;\n}\n\nexport interface AddBookmarkRequest {\n /**\n * ID of the folder to add the bookmark to\n */\n folder_id?: string;\n\n /**\n * Custom data for the bookmark\n */\n custom?: Record<string, any>;\n\n new_folder?: AddFolderRequest;\n}\n\nexport interface AddBookmarkResponse {\n duration: string;\n\n bookmark: BookmarkResponse;\n}\n\nexport interface AddCommentReactionRequest {\n /**\n * The type of reaction, eg upvote, like, ...\n */\n type: string;\n\n /**\n * @deprecated\n * Deprecated: use notification_context.trigger.custom and notification_context.target.custom instead\n */\n copy_custom_to_notification?: boolean;\n\n /**\n * Whether to create a notification activity for this reaction\n */\n create_notification_activity?: boolean;\n\n /**\n * Whether to enforce unique reactions per user (remove other reaction types from the user when adding this one)\n */\n enforce_unique?: boolean;\n\n skip_push?: boolean;\n\n /**\n * Optional custom data to add to the reaction\n */\n custom?: Record<string, any>;\n}\n\nexport interface AddCommentReactionResponse {\n /**\n * Duration of the request\n */\n duration: string;\n\n comment: CommentResponse;\n\n reaction: FeedsReactionResponse;\n\n /**\n * Whether a notification activity was successfully created\n */\n notification_created?: boolean;\n}\n\nexport interface AddCommentRequest {\n /**\n * Text content of the comment\n */\n comment?: string;\n\n /**\n * @deprecated\n * Deprecated: use notification_context.trigger.custom and notification_context.target.custom instead\n */\n copy_custom_to_notification?: boolean;\n\n /**\n * Whether to create a notification activity for this comment\n */\n create_notification_activity?: boolean;\n\n /**\n * Optional custom ID for the comment (max 255 characters). If not provided, a UUID will be generated.\n */\n id?: string;\n\n /**\n * ID of the object to comment on. Required for root comments\n */\n object_id?: string;\n\n /**\n * Type of the object to comment on. Required for root comments\n */\n object_type?: string;\n\n /**\n * ID of parent comment for replies. When provided, object_id and object_type are automatically inherited from the parent comment.\n */\n parent_id?: string;\n\n /**\n * Whether to skip URL enrichment for this comment\n */\n skip_enrich_url?: boolean;\n\n skip_push?: boolean;\n\n /**\n * Media attachments for the reply\n */\n attachments?: Attachment[];\n\n /**\n * List of users mentioned in the reply\n */\n mentioned_user_ids?: string[];\n\n /**\n * Custom data for the comment\n */\n custom?: Record<string, any>;\n}\n\nexport interface AddCommentResponse {\n duration: string;\n\n comment: CommentResponse;\n\n /**\n * Number of mention notification activities created for mentioned users\n */\n mention_notifications_created?: number;\n\n /**\n * Whether a notification activity was successfully created\n */\n notification_created?: boolean;\n}\n\nexport interface AddCommentsBatchRequest {\n /**\n * List of comments to add\n */\n comments: AddCommentRequest[];\n}\n\nexport interface AddCommentsBatchResponse {\n duration: string;\n\n /**\n * List of comments added\n */\n comments: CommentResponse[];\n}\n\nexport interface AddFolderRequest {\n /**\n * Name of the folder\n */\n name: string;\n\n /**\n * Custom data for the folder\n */\n custom?: Record<string, any>;\n}\n\nexport interface AddReactionRequest {\n /**\n * Type of reaction\n */\n type: string;\n\n /**\n * @deprecated\n * Deprecated: use notification_context.trigger.custom and notification_context.target.custom instead\n */\n copy_custom_to_notification?: boolean;\n\n /**\n * Whether to create a notification activity for this reaction\n */\n create_notification_activity?: boolean;\n\n /**\n * Whether to enforce unique reactions per user (remove other reaction types from the user when adding this one)\n */\n enforce_unique?: boolean;\n\n skip_push?: boolean;\n\n /**\n * Custom data for the reaction\n */\n custom?: Record<string, any>;\n}\n\nexport interface AddReactionResponse {\n duration: string;\n\n activity: ActivityResponse;\n\n reaction: FeedsReactionResponse;\n\n /**\n * Whether a notification activity was successfully created\n */\n notification_created?: boolean;\n}\n\nexport interface AddUserGroupMembersRequest {\n /**\n * List of user IDs to add as members\n */\n member_ids: string[];\n\n /**\n * Whether to add the members as group admins. Defaults to false\n */\n as_admin?: boolean;\n\n team_id?: string;\n}\n\nexport interface AddUserGroupMembersResponse {\n duration: string;\n\n user_group?: UserGroupResponse;\n}\n\nexport interface AggregatedActivityResponse {\n /**\n * Number of activities in this aggregation\n */\n activity_count: number;\n\n /**\n * When the aggregation was created\n */\n created_at: Date;\n\n /**\n * Grouping identifier\n */\n group: string;\n\n /**\n * Ranking score for this aggregation\n */\n score: number;\n\n /**\n * When the aggregation was last updated\n */\n updated_at: Date;\n\n /**\n * Number of unique users in this aggregation\n */\n user_count: number;\n\n /**\n * Whether this activity group has been truncated due to exceeding the group size limit\n */\n user_count_truncated: boolean;\n\n /**\n * List of activities in this aggregation\n */\n activities: ActivityResponse[];\n\n /**\n * Whether this aggregated group has been read. Only set for feed groups with notification config (track_seen/track_read enabled).\n */\n is_read?: boolean;\n\n /**\n * Whether this aggregated group has been seen. Only set for feed groups with notification config (track_seen/track_read enabled).\n */\n is_seen?: boolean;\n\n is_watched?: boolean;\n}\n\nexport interface AggregationConfig {\n format?: string;\n\n group_size?: number;\n\n score_strategy?: string;\n}\n\nexport interface AppEventResponse {\n /**\n * boolean\n */\n auto_translation_enabled: boolean;\n\n /**\n * string\n */\n name: string;\n\n /**\n * boolean\n */\n async_url_enrich_enabled?: boolean;\n\n file_upload_config?: FileUploadConfig;\n\n image_upload_config?: FileUploadConfig;\n}\n\nexport interface AppResponseFields {\n async_url_enrich_enabled: boolean;\n\n auto_translation_enabled: boolean;\n\n id: number;\n\n name: string;\n\n placement: string;\n\n file_upload_config: FileUploadConfig;\n\n image_upload_config: FileUploadConfig;\n}\n\nexport interface AppUpdatedEvent {\n /**\n * Date/time of creation\n */\n created_at: Date;\n\n app: AppEventResponse;\n\n custom: Record<string, any>;\n\n /**\n * The type of event: \"app.updated\" in this case\n */\n type: string;\n\n received_at?: Date;\n}\n\nexport interface AppealItemResponse {\n /**\n * Reason Text of the Appeal Item\n */\n appeal_reason: string;\n\n /**\n * When the flag was created\n */\n created_at: Date;\n\n /**\n * ID of the entity\n */\n entity_id: string;\n\n /**\n * Type of entity\n */\n entity_type: string;\n\n id: string;\n\n /**\n * Status of the Appeal Item\n */\n status: string;\n\n /**\n * When the flag was last updated\n */\n updated_at: Date;\n\n /**\n * Decision Reason of the Appeal Item\n */\n decision_reason?: string;\n\n /**\n * Attachments(e.g. Images) of the Appeal Item\n */\n attachments?: string[];\n\n entity_content?: ModerationPayload;\n\n user?: UserResponse;\n}\n\nexport interface AppealRequest {\n /**\n * Explanation for why the content is being appealed\n */\n appeal_reason: string;\n\n /**\n * Unique identifier of the entity being appealed\n */\n entity_id: string;\n\n /**\n * Type of entity being appealed (e.g., message, user)\n */\n entity_type: string;\n\n /**\n * Array of Attachment URLs(e.g., images)\n */\n attachments?: string[];\n}\n\nexport interface AppealResponse {\n /**\n * Unique identifier of the created Appeal item\n */\n appeal_id: string;\n\n duration: string;\n}\n\nexport interface Attachment {\n custom: Record<string, any>;\n\n asset_url?: string;\n\n author_icon?: string;\n\n author_link?: string;\n\n author_name?: string;\n\n color?: string;\n\n fallback?: string;\n\n footer?: string;\n\n footer_icon?: string;\n\n image_url?: string;\n\n og_scrape_url?: string;\n\n original_height?: number;\n\n original_width?: number;\n\n pretext?: string;\n\n text?: string;\n\n thumb_url?: string;\n\n title?: string;\n\n title_link?: string;\n\n /**\n * Attachment type (e.g. image, video, url)\n */\n type?: string;\n\n actions?: Action[];\n\n fields?: Field[];\n\n giphy?: Images;\n}\n\nexport interface AudioSettingsResponse {\n access_request_enabled: boolean;\n\n default_device: string;\n\n hifi_audio_enabled: boolean;\n\n mic_default_on: boolean;\n\n opus_dtx_enabled: boolean;\n\n redundant_coding_enabled: boolean;\n\n speaker_default_on: boolean;\n\n noise_cancellation?: NoiseCancellationSettings;\n}\n\nexport interface AutomodPlatformCircumventionConfig {\n enabled: boolean;\n\n rules: AutomodRule[];\n\n async?: boolean;\n}\n\nexport interface AutomodRule {\n action:\n | 'flag'\n | 'shadow'\n | 'remove'\n | 'bounce'\n | 'bounce_flag'\n | 'bounce_remove';\n\n label: string;\n\n threshold: number;\n}\n\nexport interface AutomodSemanticFiltersConfig {\n enabled: boolean;\n\n rules: AutomodSemanticFiltersRule[];\n\n async?: boolean;\n}\n\nexport interface AutomodSemanticFiltersRule {\n action:\n | 'flag'\n | 'shadow'\n | 'remove'\n | 'bounce'\n | 'bounce_flag'\n | 'bounce_remove';\n\n name: string;\n\n threshold: number;\n}\n\nexport interface AutomodToxicityConfig {\n enabled: boolean;\n\n rules: AutomodRule[];\n\n async?: boolean;\n}\n\nexport interface BackstageSettingsResponse {\n enabled: boolean;\n\n join_ahead_time_seconds?: number;\n}\n\nexport interface BanActionRequestPayload {\n /**\n * Ban only from specific channel\n */\n channel_ban_only?: boolean;\n\n channel_cid?: string;\n\n /**\n * Message deletion mode: soft, pruning, or hard\n */\n\n delete_messages?: 'soft' | 'pruning' | 'hard';\n\n /**\n * Whether to ban by IP address\n */\n ip_ban?: boolean;\n\n /**\n * Reason for the ban\n */\n reason?: string;\n\n /**\n * Whether this is a shadow ban\n */\n shadow?: boolean;\n\n /**\n * Optional: ban user directly without review item\n */\n target_user_id?: string;\n\n /**\n * Duration of ban in minutes\n */\n timeout?: number;\n}\n\nexport interface BanInfoResponse {\n /**\n * When the ban was created\n */\n created_at: Date;\n\n /**\n * When the ban expires\n */\n expires?: Date;\n\n /**\n * Reason for the ban\n */\n reason?: string;\n\n /**\n * Whether this is a shadow ban\n */\n shadow?: boolean;\n\n created_by?: UserResponse;\n\n user?: UserResponse;\n}\n\nexport interface BanOptions {\n delete_messages?: 'soft' | 'pruning' | 'hard';\n\n duration?: number;\n\n ip_ban?: boolean;\n\n reason?: string;\n\n shadow_ban?: boolean;\n}\n\nexport interface BanRequest {\n /**\n * ID of the user to ban\n */\n target_user_id: string;\n\n /**\n * ID of the user performing the ban\n */\n banned_by_id?: string;\n\n /**\n * Channel where the ban applies\n */\n channel_cid?: string;\n\n delete_messages?: 'soft' | 'pruning' | 'hard';\n\n /**\n * Whether to ban the user's IP address\n */\n ip_ban?: boolean;\n\n /**\n * Optional explanation for the ban\n */\n reason?: string;\n\n /**\n * Whether this is a shadow ban\n */\n shadow?: boolean;\n\n /**\n * Duration of the ban in minutes\n */\n timeout?: number;\n\n banned_by?: UserRequest;\n}\n\nexport interface BanResponse {\n duration: string;\n}\n\nexport interface BlockActionRequestPayload {\n /**\n * Reason for blocking\n */\n reason?: string;\n}\n\nexport interface BlockListConfig {\n enabled: boolean;\n\n rules: BlockListRule[];\n\n async?: boolean;\n\n match_substring?: boolean;\n}\n\nexport interface BlockListOptions {\n /**\n * Blocklist behavior. One of: flag, block, shadow_block\n */\n\n behavior: 'flag' | 'block' | 'shadow_block';\n\n /**\n * Blocklist name\n */\n blocklist: string;\n}\n\nexport interface BlockListResponse {\n is_leet_check_enabled: boolean;\n\n is_plural_check_enabled: boolean;\n\n /**\n * Block list name\n */\n name: string;\n\n /**\n * Block list type. One of: regex, domain, domain_allowlist, email, email_allowlist, word\n */\n type: string;\n\n /**\n * List of words to block\n */\n words: string[];\n\n /**\n * Date/time of creation\n */\n created_at?: Date;\n\n id?: string;\n\n team?: string;\n\n /**\n * Date/time of the last update\n */\n updated_at?: Date;\n}\n\nexport interface BlockListRule {\n action:\n | 'flag'\n | 'mask_flag'\n | 'shadow'\n | 'remove'\n | 'bounce'\n | 'bounce_flag'\n | 'bounce_remove';\n\n name: string;\n\n team: string;\n}\n\nexport interface BlockUsersRequest {\n /**\n * User id to block\n */\n blocked_user_id: string;\n}\n\nexport interface BlockUsersResponse {\n /**\n * User id who blocked another user\n */\n blocked_by_user_id: string;\n\n /**\n * User id who got blocked\n */\n blocked_user_id: string;\n\n /**\n * Timestamp when the user was blocked\n */\n created_at: Date;\n\n /**\n * Duration of the request in milliseconds\n */\n duration: string;\n}\n\nexport interface BlockedUserResponse {\n /**\n * ID of the user who got blocked\n */\n blocked_user_id: string;\n\n created_at: Date;\n\n /**\n * ID of the user who blocked another user\n */\n user_id: string;\n\n blocked_user: UserResponse;\n\n user: UserResponse;\n}\n\nexport interface BodyguardRule {\n action:\n | 'flag'\n | 'shadow'\n | 'remove'\n | 'bounce'\n | 'bounce_flag'\n | 'bounce_remove';\n\n label: string;\n\n severity_rules: BodyguardSeverityRule[];\n}\n\nexport interface BodyguardSeverityRule {\n action:\n | 'flag'\n | 'shadow'\n | 'remove'\n | 'bounce'\n | 'bounce_flag'\n | 'bounce_remove';\n\n severity: 'low' | 'medium' | 'high' | 'critical';\n}\n\nexport interface BookmarkAddedEvent {\n /**\n * Date/time of creation\n */\n created_at: Date;\n\n bookmark: BookmarkResponse;\n\n custom: Record<string, any>;\n\n /**\n * The type of event: \"feeds.bookmark.added\" in this case\n */\n type: string;\n\n received_at?: Date;\n\n user?: UserResponseCommonFields;\n}\n\nexport interface BookmarkDeletedEvent {\n /**\n * Date/time of creation\n */\n created_at: Date;\n\n bookmark: BookmarkResponse;\n\n custom: Record<string, any>;\n\n /**\n * The type of event: \"feeds.bookmark.deleted\" in this case\n */\n type: string;\n\n received_at?: Date;\n\n user?: UserResponseCommonFields;\n}\n\nexport interface BookmarkFolderDeletedEvent {\n /**\n * Date/time of creation\n */\n created_at: Date;\n\n bookmark_folder: BookmarkFolderResponse;\n\n custom: Record<string, any>;\n\n /**\n * The type of event: \"feeds.bookmark_folder.deleted\" in this case\n */\n type: string;\n\n received_at?: Date;\n\n user?: UserResponseCommonFields;\n}\n\nexport interface BookmarkFolderResponse {\n /**\n * When the folder was created\n */\n created_at: Date;\n\n /**\n * Unique identifier for the folder\n */\n id: string;\n\n /**\n * Name of the folder\n */\n name: string;\n\n /**\n * When the folder was last updated\n */\n updated_at: Date;\n\n user: UserResponse;\n\n /**\n * Custom data for the folder\n */\n custom?: Record<string, any>;\n}\n\nexport interface BookmarkFolderUpdatedEvent {\n /**\n * Date/time of creation\n */\n created_at: Date;\n\n bookmark_folder: BookmarkFolderResponse;\n\n custom: Record<string, any>;\n\n /**\n * The type of event: \"feeds.bookmark_folder.updated\" in this case\n */\n type: string;\n\n received_at?: Date;\n\n user?: UserResponseCommonFields;\n}\n\nexport interface BookmarkResponse {\n /**\n * When the bookmark was created\n */\n created_at: Date;\n\n /**\n * When the bookmark was last updated\n */\n updated_at: Date;\n\n activity: ActivityResponse;\n\n user: UserResponse;\n\n /**\n * Custom data for the bookmark\n */\n custom?: Record<string, any>;\n\n folder?: BookmarkFolderResponse;\n}\n\nexport interface BookmarkUpdatedEvent {\n /**\n * Date/time of creation\n */\n created_at: Date;\n\n bookmark: BookmarkResponse;\n\n custom: Record<string, any>;\n\n /**\n * The type of event: \"feeds.bookmark.updated\" in this case\n */\n type: string;\n\n received_at?: Date;\n\n user?: UserResponseCommonFields;\n}\n\nexport interface BroadcastSettingsResponse {\n enabled: boolean;\n\n hls: HLSSettingsResponse;\n\n rtmp: RTMPSettingsResponse;\n}\n\nexport interface CallActionOptions {\n duration?: number;\n\n flag_reason?: string;\n\n kick_reason?: string;\n\n mute_audio?: boolean;\n\n mute_video?: boolean;\n\n reason?: string;\n\n warning_text?: string;\n}\n\nexport interface CallCustomPropertyParameters {\n operator?: string;\n\n property_key?: string;\n}\n\nexport interface CallIngressResponse {\n rtmp: RTMPIngress;\n\n srt: SRTIngress;\n\n whip: WHIPIngress;\n}\n\nexport interface CallParticipantResponse {\n role: string;\n\n user_session_id: string;\n\n joined_at: Timestamp;\n\n user: UserResponse;\n}\n\nexport interface CallResponse {\n backstage: boolean;\n\n captioning: boolean;\n\n cid: string;\n\n current_session_id: string;\n\n id: string;\n\n recording: boolean;\n\n transcribing: boolean;\n\n translating: boolean;\n\n type: string;\n\n blocked_user_ids: string[];\n\n created_at: Timestamp;\n\n created_by: UserResponse;\n\n custom: Record<string, any>;\n\n egress: EgressResponse;\n\n ingress: CallIngressResponse;\n\n settings: CallSettingsResponse;\n\n updated_at: Timestamp;\n\n channel_cid?: string;\n\n join_ahead_time_seconds?: number;\n\n routing_number?: string;\n\n team?: string;\n\n ended_at?: Timestamp;\n\n session?: CallSessionResponse;\n\n starts_at?: Timestamp;\n\n thumbnails?: ThumbnailResponse;\n}\n\nexport interface CallRuleActionSequence {\n violation_number?: number;\n\n actions?: string[];\n\n call_options?: CallActionOptions;\n}\n\nexport interface CallSessionResponse {\n anonymous_participant_count: number;\n\n id: string;\n\n participants: CallParticipantResponse[];\n\n accepted_by: Record<string, Timestamp>;\n\n missed_by: Record<string, Timestamp>;\n\n participants_count_by_role: Record<string, number>;\n\n rejected_by: Record<string, Timestamp>;\n\n ended_at?: Timestamp;\n\n live_ended_at?: Timestamp;\n\n live_started_at?: Timestamp;\n\n started_at?: Timestamp;\n\n timer_ends_at?: Timestamp;\n}\n\nexport interface CallSettingsResponse {\n audio: AudioSettingsResponse;\n\n backstage: BackstageSettingsResponse;\n\n broadcasting: BroadcastSettingsResponse;\n\n frame_recording: FrameRecordingSettingsResponse;\n\n geofencing: GeofenceSettingsResponse;\n\n individual_recording: IndividualRecordingSettingsResponse;\n\n limits: LimitsSettingsResponse;\n\n raw_recording: RawRecordingSettingsResponse;\n\n recording: RecordSettingsResponse;\n\n ring: RingSettingsResponse;\n\n screensharing: ScreensharingSettingsResponse;\n\n session: SessionSettingsResponse;\n\n thumbnails: ThumbnailsSettingsResponse;\n\n transcription: TranscriptionSettingsResponse;\n\n video: VideoSettingsResponse;\n\n ingress?: IngressSettingsResponse;\n}\n\nexport interface CallTypeRuleParameters {\n call_type?: string;\n}\n\nexport interface CallViolationCountParameters {\n threshold?: number;\n\n time_window?: string;\n}\n\nexport interface CastPollVoteRequest {\n vote?: VoteData;\n}\n\nexport interface ChannelConfigWithInfo {\n automod: 'disabled' | 'simple' | 'AI';\n\n automod_behavior: 'flag' | 'block' | 'shadow_block';\n\n connect_events: boolean;\n\n count_messages: boolean;\n\n created_at: Date;\n\n custom_events: boolean;\n\n delivery_events: boolean;\n\n mark_messages_pending: boolean;\n\n max_message_length: number;\n\n mutes: boolean;\n\n name: string;\n\n polls: boolean;\n\n push_notifications: boolean;\n\n quotes: boolean;\n\n reactions: boolean;\n\n read_events: boolean;\n\n reminders: boolean;\n\n replies: boolean;\n\n search: boolean;\n\n shared_locations: boolean;\n\n skip_last_msg_update_for_system_msgs: boolean;\n\n typing_events: boolean;\n\n updated_at: Date;\n\n uploads: boolean;\n\n url_enrichment: boolean;\n\n user_message_reminders: boolean;\n\n commands: Command[];\n\n blocklist?: string;\n\n blocklist_behavior?: 'flag' | 'block' | 'shadow_block';\n\n partition_size?: number;\n\n partition_ttl?: string;\n\n push_level?: 'all' | 'all_mentions' | 'mentions' | 'direct_mentions' | 'none';\n\n allowed_flag_reasons?: string[];\n\n blocklists?: BlockListOptions[];\n\n automod_thresholds?: Thresholds;\n\n chat_preferences?: ChatPreferences;\n\n grants?: Record<string, string[]>;\n}\n\nexport interface ChannelMemberResponse {\n /**\n * Whether member is banned this channel or not\n */\n banned: boolean;\n\n /**\n * Role of the member in the channel\n */\n channel_role: string;\n\n /**\n * Date/time of creation\n */\n created_at: Date;\n\n notifications_muted: boolean;\n\n /**\n * Whether member is shadow banned in this channel or not\n */\n shadow_banned: boolean;\n\n /**\n * Date/time of the last update\n */\n updated_at: Date;\n\n custom: Record<string, any>;\n\n archived_at?: Date;\n\n /**\n * Expiration date of the ban\n */\n ban_expires?: Date;\n\n deleted_at?: Date;\n\n /**\n * Date when invite was accepted\n */\n invite_accepted_at?: Date;\n\n /**\n * Date when invite was rejected\n */\n invite_rejected_at?: Date;\n\n /**\n * Whether member was invited or not\n */\n invited?: boolean;\n\n /**\n * Whether member is channel moderator or not\n */\n is_moderator?: boolean;\n\n pinned_at?: Date;\n\n /**\n * Permission level of the member in the channel (DEPRECATED: use channel_role instead). One of: member, moderator, admin, owner\n */\n role?: string;\n\n status?: string;\n\n user_id?: string;\n\n deleted_messages?: string[];\n\n user?: UserResponse;\n}\n\nexport interface ChannelMute {\n /**\n * Date/time of creation\n */\n created_at: Date;\n\n /**\n * Date/time of the last update\n */\n updated_at: Date;\n\n /**\n * Date/time of mute expiration\n */\n expires?: Date;\n\n channel?: ChannelResponse;\n\n user?: UserResponse;\n}\n\nexport const ChannelOwnCapability = {\n BAN_CHANNEL_MEMBERS: 'ban-channel-members',\n CAST_POLL_VOTE: 'cast-poll-vote',\n CONNECT_EVENTS: 'connect-events',\n CREATE_ATTACHMENT: 'create-attachment',\n DELETE_ANY_MESSAGE: 'delete-any-message',\n DELETE_CHANNEL: 'delete-channel',\n DELETE_OWN_MESSAGE: 'delete-own-message',\n DELIVERY_EVENTS: 'delivery-events',\n FLAG_MESSAGE: 'flag-message',\n FREEZE_CHANNEL: 'freeze-channel',\n JOIN_CHANNEL: 'join-channel',\n LEAVE_CHANNEL: 'leave-channel',\n MUTE_CHANNEL: 'mute-channel',\n PIN_MESSAGE: 'pin-message',\n QUERY_POLL_VOTES: 'query-poll-votes',\n QUOTE_MESSAGE: 'quote-message',\n READ_EVENTS: 'read-events',\n SEARCH_MESSAGES: 'search-messages',\n SEND_CUSTOM_EVENTS: 'send-custom-events',\n SEND_LINKS: 'send-links',\n SEND_MESSAGE: 'send-message',\n SEND_POLL: 'send-poll',\n SEND_REACTION: 'send-reaction',\n SEND_REPLY: 'send-reply',\n SEND_RESTRICTED_VISIBILITY_MESSAGE: 'send-restricted-visibility-message',\n SEND_TYPING_EVENTS: 'send-typing-events',\n SET_CHANNEL_COOLDOWN: 'set-channel-cooldown',\n SHARE_LOCATION: 'share-location',\n SKIP_SLOW_MODE: 'skip-slow-mode',\n SLOW_MODE: 'slow-mode',\n TYPING_EVENTS: 'typing-events',\n UPDATE_ANY_MESSAGE: 'update-any-message',\n UPDATE_CHANNEL: 'update-channel',\n UPDATE_CHANNEL_MEMBERS: 'update-channel-members',\n UPDATE_OWN_MESSAGE: 'update-own-message',\n UPDATE_THREAD: 'update-thread',\n UPLOAD_FILE: 'upload-file',\n} as const;\n\nexport type ChannelOwnCapability =\n (typeof ChannelOwnCapability)[keyof typeof ChannelOwnCapability];\n\nexport interface ChannelPushPreferencesResponse {\n chat_level?: string;\n\n disabled_until?: Date;\n\n chat_preferences?: ChatPreferencesResponse;\n}\n\nexport interface ChannelResponse {\n /**\n * Channel CID (<type>:<id>)\n */\n cid: string;\n\n /**\n * Date/time of creation\n */\n created_at: Date;\n\n disabled: boolean;\n\n /**\n * Whether channel is frozen or not\n */\n frozen: boolean;\n\n /**\n * Channel unique ID\n */\n id: string;\n\n /**\n * Type of the channel\n */\n type: string;\n\n /**\n * Date/time of the last update\n */\n updated_at: Date;\n\n /**\n * Custom data for this object\n */\n custom: Record<string, any>;\n\n /**\n * Whether auto translation is enabled or not\n */\n auto_translation_enabled?: boolean;\n\n /**\n * Language to translate to when auto translation is active\n */\n auto_translation_language?: string;\n\n /**\n * Whether this channel is blocked by current user or not\n */\n blocked?: boolean;\n\n /**\n * Cooldown period after sending each message\n */\n cooldown?: number;\n\n /**\n * Date/time of deletion\n */\n deleted_at?: Date;\n\n /**\n * Whether this channel is hidden by current user or not\n */\n hidden?: boolean;\n\n /**\n * Date since when the message history is accessible\n */\n hide_messages_before?: Date;\n\n /**\n * Date of the last message sent\n */\n last_message_at?: Date;\n\n /**\n * Number of members in the channel\n */\n member_count?: number;\n\n /**\n * Number of messages in the channel\n */\n message_count?: number;\n\n /**\n * Date of mute expiration\n */\n mute_expires_at?: Date;\n\n /**\n * Whether this channel is muted or not\n */\n muted?: boolean;\n\n /**\n * Team the channel belongs to (multi-tenant only)\n */\n team?: string;\n\n /**\n * Date of the latest truncation of the channel\n */\n truncated_at?: Date;\n\n /**\n * List of filter tags associated with the channel\n */\n filter_tags?: string[];\n\n /**\n * List of channel members (max 100)\n */\n members?: ChannelMemberResponse[];\n\n /**\n * List of channel capabilities of authenticated user\n */\n own_capabilities?: ChannelOwnCapability[];\n\n config?: ChannelConfigWithInfo;\n\n created_by?: UserResponse;\n\n truncated_by?: UserResponse;\n}\n\nexport interface ChatPreferences {\n channel_mentions?: string;\n\n default_preference?: string;\n\n direct_mentions?: string;\n\n distinct_channel_messages?: string;\n\n group_mentions?: string;\n\n here_mentions?: string;\n\n role_mentions?: string;\n\n thread_replies?: string;\n}\n\nexport interface ChatPreferencesInput {\n channel_mentions?: 'all' | 'none';\n\n default_preference?: 'all' | 'none';\n\n direct_mentions?: 'all' | 'none';\n\n group_mentions?: 'all' | 'none';\n\n here_mentions?: 'all' | 'none';\n\n role_mentions?: 'all' | 'none';\n\n thread_replies?: 'all' | 'none';\n}\n\nexport interface ChatPreferencesResponse {\n channel_mentions?: string;\n\n default_preference?: string;\n\n direct_mentions?: string;\n\n group_mentions?: string;\n\n here_mentions?: string;\n\n role_mentions?: string;\n\n thread_replies?: string;\n}\n\nexport interface ClosedCaptionRuleParameters {\n threshold?: number;\n\n harm_labels?: string[];\n\n llm_harm_labels?: Record<string, string>;\n}\n\nexport interface CollectionRequest {\n /**\n * Name/type of the collection\n */\n name: string;\n\n /**\n * Custom data for the collection (required, must contain at least one key)\n */\n custom: Record<string, any>;\n\n /**\n * Unique identifier for the collection within its name (optional, will be auto-generated if not provided)\n */\n id?: string;\n}\n\nexport interface CollectionResponse {\n /**\n * Unique identifier for the collection within its name\n */\n id: string;\n\n /**\n * Name/type of the collection\n */\n name: string;\n\n /**\n * When the collection was created\n */\n created_at?: Date;\n\n /**\n * When the collection was last updated\n */\n updated_at?: Date;\n\n /**\n * ID of the user who owns this collection\n */\n user_id?: string;\n\n /**\n * Custom data for the collection\n */\n custom?: Record<string, any>;\n}\n\nexport interface Command {\n /**\n * Arguments help text, shown in commands auto-completion\n */\n args: string;\n\n /**\n * Description, shown in commands auto-completion\n */\n description: string;\n\n /**\n * Unique command name\n */\n name: string;\n\n /**\n * Set name used for grouping commands\n */\n set: string;\n\n /**\n * Date/time of creation\n */\n created_at?: Date;\n\n /**\n * Date/time of the last update\n */\n updated_at?: Date;\n}\n\nexport interface CommentAddedEvent {\n /**\n * Date/time of creation\n */\n created_at: Date;\n\n fid: string;\n\n activity: ActivityResponse;\n\n comment: CommentResponse;\n\n custom: Record<string, any>;\n\n /**\n * The type of event: \"feeds.comment.added\" in this case\n */\n type: string;\n\n feed_visibility?: string;\n\n received_at?: Date;\n\n user?: UserResponseCommonFields;\n}\n\nexport interface CommentDeletedEvent {\n /**\n * Date/time of creation\n */\n created_at: Date;\n\n fid: string;\n\n comment: CommentResponse;\n\n custom: Record<string, any>;\n\n /**\n * The type of event: \"feeds.comment.deleted\" in this case\n */\n type: string;\n\n feed_visibility?: string;\n\n received_at?: Date;\n\n user?: UserResponseCommonFields;\n}\n\nexport interface CommentReactionAddedEvent {\n /**\n * Date/time of creation\n */\n created_at: Date;\n\n fid: string;\n\n activity: ActivityResponse;\n\n comment: CommentResponse;\n\n custom: Record<string, any>;\n\n reaction: FeedsReactionResponse;\n\n /**\n * The type of event: \"feeds.comment.reaction.added\" in this case\n */\n type: string;\n\n feed_visibility?: string;\n\n received_at?: Date;\n\n user?: UserResponseCommonFields;\n}\n\nexport interface CommentReactionDeletedEvent {\n /**\n * Date/time of creation\n */\n created_at: Date;\n\n fid: string;\n\n comment: CommentResponse;\n\n custom: Record<string, any>;\n\n reaction: FeedsReactionResponse;\n\n /**\n * The type of reaction that was removed\n */\n type: string;\n\n feed_visibility?: string;\n\n received_at?: Date;\n}\n\nexport interface CommentReactionUpdatedEvent {\n /**\n * Date/time of creation\n */\n created_at: Date;\n\n fid: string;\n\n activity: ActivityResponse;\n\n comment: CommentResponse;\n\n custom: Record<string, any>;\n\n reaction: FeedsReactionResponse;\n\n /**\n * The type of event: \"feeds.comment.reaction.updated\" in this case\n */\n type: string;\n\n feed_visibility?: string;\n\n received_at?: Date;\n\n user?: UserResponseCommonFields;\n}\n\nexport interface CommentResponse {\n /**\n * Confidence score of the comment\n */\n confidence_score: number;\n\n /**\n * When the comment was created\n */\n created_at: Date;\n\n /**\n * Number of downvotes for this comment\n */\n downvote_count: number;\n\n /**\n * Unique identifier for the comment\n */\n id: string;\n\n /**\n * ID of the object this comment is associated with\n */\n object_id: string;\n\n /**\n * Type of the object this comment is associated with\n */\n object_type: string;\n\n /**\n * Number of reactions to this comment\n */\n reaction_count: number;\n\n /**\n * Number of replies to this comment\n */\n reply_count: number;\n\n /**\n * Score of the comment based on reactions\n */\n score: number;\n\n /**\n * Status of the comment. One of: active, deleted, removed, hidden\n */\n\n status: 'active' | 'deleted' | 'removed' | 'hidden' | 'shadow_blocked';\n\n /**\n * When the comment was last updated\n */\n updated_at: Date;\n\n /**\n * Number of upvotes for this comment\n */\n upvote_count: number;\n\n /**\n * Users mentioned in the comment\n */\n mentioned_users: UserResponse[];\n\n /**\n * Current user's reactions to this activity\n */\n own_reactions: FeedsReactionResponse[];\n\n user: UserResponse;\n\n /**\n * Controversy score of the comment\n */\n controversy_score?: number;\n\n /**\n * When the comment was deleted\n */\n deleted_at?: Date;\n\n /**\n * When the comment was last edited\n */\n edited_at?: Date;\n\n /**\n * ID of parent comment for nested replies\n */\n parent_id?: string;\n\n /**\n * Text content of the comment\n */\n text?: string;\n\n /**\n * Attachments associated with the comment\n */\n attachments?: Attachment[];\n\n /**\n * Recent reactions to the comment\n */\n latest_reactions?: FeedsReactionResponse[];\n\n /**\n * Custom data for the comment\n */\n custom?: Record<string, any>;\n\n moderation?: ModerationV2Response;\n\n /**\n * Grouped reactions by type\n */\n reaction_groups?: Record<string, FeedsReactionGroupResponse>;\n}\n\nexport interface CommentRestoredEvent {\n /**\n * Date/time of creation\n */\n created_at: Date;\n\n fid: string;\n\n comment: CommentResponse;\n\n custom: Record<string, any>;\n\n /**\n * The type of event: \"feeds.comment.restored\" in this case\n */\n type: string;\n\n feed_visibility?: string;\n\n received_at?: Date;\n\n user?: UserResponseCommonFields;\n}\n\nexport interface CommentUpdatedEvent {\n /**\n * Date/time of creation\n */\n created_at: Date;\n\n fid: string;\n\n comment: CommentResponse;\n\n custom: Record<string, any>;\n\n /**\n * The type of event: \"feeds.comment.updated\" in this case\n */\n type: string;\n\n feed_visibility?: string;\n\n received_at?: Date;\n\n user?: UserResponseCommonFields;\n}\n\nexport interface CompositeRecordingResponse {\n status: string;\n}\n\nexport interface ConfigResponse {\n /**\n * Whether moderation should be performed asynchronously\n */\n async: boolean;\n\n /**\n * When the configuration was created\n */\n created_at: Date;\n\n /**\n * Unique identifier for the moderation configuration\n */\n key: string;\n\n /**\n * Team associated with the configuration\n */\n team: string;\n\n /**\n * When the configuration was last updated\n */\n updated_at: Date;\n\n supported_video_call_harm_types: string[];\n\n /**\n * Configurable image moderation label definitions for dashboard rendering\n */\n ai_image_label_definitions?: AIImageLabelDefinition[];\n\n ai_image_config?: AIImageConfig;\n\n /**\n * Available L2 subclassifications per L1 image moderation label, based on the active provider\n */\n ai_image_subclassifications?: Record<string, string[]>;\n\n ai_text_config?: AITextConfig;\n\n ai_video_config?: AIVideoConfig;\n\n automod_platform_circumvention_config?: AutomodPlatformCircumventionConfig;\n\n automod_semantic_filters_config?: AutomodSemanticFiltersConfig;\n\n automod_toxicity_config?: AutomodToxicityConfig;\n\n block_list_config?: BlockListConfig;\n\n llm_config?: LLMConfig;\n\n velocity_filter_config?: VelocityFilterConfig;\n\n video_call_rule_config?: VideoCallRuleConfig;\n}\n\nexport interface ConnectUserDetailsRequest {\n id: string;\n\n image?: string;\n\n invisible?: boolean;\n\n language?: string;\n\n name?: string;\n\n custom?: Record<string, any>;\n\n privacy_settings?: PrivacySettingsResponse;\n}\n\nexport interface ContentCountRuleParameters {\n threshold?: number;\n\n time_window?: string;\n}\n\nexport interface CreateBlockListRequest {\n /**\n * Block list name\n */\n name: string;\n\n /**\n * List of words to block\n */\n words: string[];\n\n is_leet_check_enabled?: boolean;\n\n is_plural_check_enabled?: boolean;\n\n team?: string;\n\n /**\n * Block list type. One of: regex, domain, domain_allowlist, email, email_allowlist, word\n */\n\n type?:\n | 'regex'\n | 'domain'\n | 'domain_allowlist'\n | 'email'\n | 'email_allowlist'\n | 'word';\n}\n\nexport interface CreateBlockListResponse {\n /**\n * Duration of the request in milliseconds\n */\n duration: string;\n\n blocklist?: BlockListResponse;\n}\n\nexport interface CreateCollectionsRequest {\n /**\n * List of collections to create\n */\n collections: CollectionRequest[];\n}\n\nexport interface CreateCollectionsResponse {\n duration: string;\n\n /**\n * List of created collections\n */\n collections: CollectionResponse[];\n}\n\nexport interface CreateDeviceRequest {\n /**\n * Device ID\n */\n id: string;\n\n /**\n * Push provider\n */\n\n push_provider: 'firebase' | 'apn' | 'huawei' | 'xiaomi';\n\n /**\n * Push provider name\n */\n push_provider_name?: string;\n\n /**\n * When true the token is for Apple VoIP push notifications\n */\n voip_token?: boolean;\n}\n\nexport interface CreateFeedsBatchRequest {\n /**\n * List of feeds to create\n */\n feeds: FeedRequest[];\n\n /**\n * If true, enriches the created feeds with own_* fields (own_follows, own_followings, own_capabilities, own_membership). Defaults to false for performance.\n */\n enrich_own_fields?: boolean;\n}\n\nexport interface CreateFeedsBatchResponse {\n duration: string;\n\n /**\n * List of created feeds\n */\n feeds: FeedResponse[];\n}\n\nexport interface CreateGuestRequest {\n user: UserRequest;\n}\n\nexport interface CreateGuestResponse {\n /**\n * the access token to authenticate the user\n */\n access_token: string;\n\n /**\n * Duration of the request in milliseconds\n */\n duration: string;\n\n user: UserResponse;\n}\n\nexport interface CreatePollOptionRequest {\n /**\n * Option text\n */\n text: string;\n\n custom?: Record<string, any>;\n}\n\nexport interface CreatePollRequest {\n /**\n * The name of the poll\n */\n name: string;\n\n /**\n * Indicates whether users can suggest user defined answers\n */\n allow_answers?: boolean;\n\n allow_user_suggested_options?: boolean;\n\n /**\n * A description of the poll\n */\n description?: string;\n\n /**\n * Indicates whether users can cast multiple votes\n */\n enforce_unique_vote?: boolean;\n\n id?: string;\n\n /**\n * Indicates whether the poll is open for voting\n */\n is_closed?: boolean;\n\n /**\n * Indicates the maximum amount of votes a user can cast\n */\n max_votes_allowed?: number;\n\n voting_visibility?: 'anonymous' | 'public';\n\n options?: PollOptionInput[];\n\n custom?: Record<string, any>;\n}\n\nexport interface CreateUserGroupRequest {\n /**\n * The user friendly name of the user group\n */\n name: string;\n\n /**\n * An optional description for the group\n */\n description?: string;\n\n /**\n * Optional user group ID. If not provided, a UUID v7 will be generated\n */\n id?: string;\n\n /**\n * Optional team ID to scope the group to a team\n */\n team_id?: string;\n\n /**\n * Optional initial list of user IDs to add as members\n */\n member_ids?: string[];\n}\n\nexport interface CreateUserGroupResponse {\n duration: string;\n\n user_group?: UserGroupResponse;\n}\n\nexport interface CustomActionRequestPayload {\n /**\n * Custom action identifier\n */\n id?: string;\n\n /**\n * Custom action options\n */\n options?: Record<string, any>;\n}\n\nexport interface Data {\n id: string;\n}\n\nexport interface DecayFunctionConfig {\n base?: string;\n\n decay?: string;\n\n direction?: string;\n\n offset?: string;\n\n origin?: string;\n\n scale?: string;\n}\n\nexport interface DeleteActivitiesRequest {\n /**\n * List of activity IDs to delete\n */\n ids: string[];\n\n /**\n * Whether to also delete any notification activities created from mentions in these activities\n */\n delete_notification_activity?: boolean;\n\n /**\n * Whether to permanently delete the activities\n */\n hard_delete?: boolean;\n}\n\nexport interface DeleteActivitiesResponse {\n duration: string;\n\n /**\n * List of activity IDs that were successfully deleted\n */\n deleted_ids: string[];\n}\n\nexport interface DeleteActivityReactionResponse {\n duration: string;\n\n activity: ActivityResponse;\n\n reaction: FeedsReactionResponse;\n}\n\nexport interface DeleteActivityRequestPayload {\n /**\n * ID of the activity to delete (alternative to item_id)\n */\n entity_id?: string;\n\n /**\n * Type of the entity (required for delete_activity to distinguish v2 vs v3)\n */\n entity_type?: string;\n\n /**\n * Whether to permanently delete the activity\n */\n hard_delete?: boolean;\n\n /**\n * Reason for deletion\n */\n reason?: string;\n}\n\nexport interface DeleteActivityResponse {\n duration: string;\n}\n\nexport interface DeleteBookmarkFolderResponse {\n duration: string;\n}\n\nexport interface DeleteBookmarkResponse {\n duration: string;\n\n bookmark: BookmarkResponse;\n}\n\nexport interface DeleteCollectionsResponse {\n duration: string;\n}\n\nexport interface DeleteCommentReactionResponse {\n duration: string;\n\n comment: CommentResponse;\n\n reaction: FeedsReactionResponse;\n}\n\nexport interface DeleteCommentRequestPayload {\n /**\n * ID of the comment to delete (alternative to item_id)\n */\n entity_id?: string;\n\n /**\n * Type of the entity\n */\n entity_type?: string;\n\n /**\n * Whether to permanently delete the comment\n */\n hard_delete?: boolean;\n\n /**\n * Reason for deletion\n */\n reason?: string;\n}\n\nexport interface DeleteCommentResponse {\n duration: string;\n\n activity: ActivityResponse;\n\n comment: CommentResponse;\n}\n\nexport interface DeleteFeedResponse {\n duration: string;\n\n /**\n * The ID of the async task that will handle feed cleanup and hard deletion\n */\n task_id: string;\n}\n\nexport interface DeleteMessageRequestPayload {\n /**\n * ID of the message to delete (alternative to item_id)\n */\n entity_id?: string;\n\n /**\n * Type of the entity\n */\n entity_type?: string;\n\n /**\n * Whether to permanently delete the message\n */\n hard_delete?: boolean;\n\n /**\n * Reason for deletion\n */\n reason?: string;\n}\n\nexport interface DeleteModerationConfigResponse {\n duration: string;\n}\n\nexport interface DeleteReactionRequestPayload {\n /**\n * ID of the reaction to delete (alternative to item_id)\n */\n entity_id?: string;\n\n /**\n * Type of the entity\n */\n entity_type?: string;\n\n /**\n * Whether to permanently delete the reaction\n */\n hard_delete?: boolean;\n\n /**\n * Reason for deletion\n */\n reason?: string;\n}\n\nexport interface DeleteUserRequestPayload {\n /**\n * Also delete all user conversations\n */\n delete_conversation_channels?: boolean;\n\n /**\n * Delete flagged feeds content\n */\n delete_feeds_content?: boolean;\n\n /**\n * ID of the user to delete (alternative to item_id)\n */\n entity_id?: string;\n\n /**\n * Type of the entity\n */\n entity_type?: string;\n\n /**\n * Whether to permanently delete the user\n */\n hard_delete?: boolean;\n\n /**\n * Also delete all user messages\n */\n mark_messages_deleted?: boolean;\n\n /**\n * Reason for deletion\n */\n reason?: string;\n}\n\nexport interface DeliveryReceiptsResponse {\n enabled: boolean;\n}\n\nexport interface DeviceResponse {\n /**\n * Date/time of creation\n */\n created_at: Date;\n\n /**\n * Device ID\n */\n id: string;\n\n /**\n * Push provider\n */\n push_provider: string;\n\n /**\n * User ID\n */\n user_id: string;\n\n /**\n * Whether device is disabled or not\n */\n disabled?: boolean;\n\n /**\n * Reason explaining why device had been disabled\n */\n disabled_reason?: string;\n\n /**\n * Push provider name\n */\n push_provider_name?: string;\n\n /**\n * When true the token is for Apple VoIP push notifications\n */\n voip?: boolean;\n}\n\nexport interface DraftPayloadResponse {\n /**\n * Message ID is unique string identifier of the message\n */\n id: string;\n\n /**\n * Text of the message\n */\n text: string;\n\n custom: Record<string, any>;\n\n /**\n * Contains HTML markup of the message\n */\n html?: string;\n\n /**\n * MML content of the message\n */\n mml?: string;\n\n /**\n * ID of parent message (thread)\n */\n parent_id?: string;\n\n /**\n * Identifier of the poll to include in the message\n */\n poll_id?: string;\n\n quoted_message_id?: string;\n\n /**\n * Whether thread reply should be shown in the channel as well\n */\n show_in_channel?: boolean;\n\n /**\n * Whether message is silent or not\n */\n silent?: boolean;\n\n /**\n * Contains type of the message. One of: regular, system\n */\n type?: string;\n\n /**\n * Array of message attachments\n */\n attachments?: Attachment[];\n\n /**\n * List of mentioned users\n */\n mentioned_users?: UserResponse[];\n}\n\nexport interface DraftResponse {\n channel_cid: string;\n\n created_at: Date;\n\n message: DraftPayloadResponse;\n\n parent_id?: string;\n\n channel?: ChannelResponse;\n\n parent_message?: MessageResponse;\n\n quoted_message?: MessageResponse;\n}\n\nexport interface EgressHLSResponse {\n playlist_url: string;\n\n status: string;\n}\n\nexport interface EgressRTMPResponse {\n name: string;\n\n started_at: Timestamp;\n\n stream_key?: string;\n\n stream_url?: string;\n}\n\nexport interface EgressResponse {\n broadcasting: boolean;\n\n rtmps: EgressRTMPResponse[];\n\n composite_recording?: CompositeRecordingResponse;\n\n frame_recording?: FrameRecordingResponse;\n\n hls?: EgressHLSResponse;\n\n individual_recording?: IndividualRecordingResponse;\n\n raw_recording?: RawRecordingResponse;\n}\n\nexport interface EnrichedActivity {\n foreign_id?: string;\n\n id?: string;\n\n score?: number;\n\n verb?: string;\n\n to?: string[];\n\n actor?: Data;\n\n latest_reactions?: Record<string, EnrichedReaction[]>;\n\n object?: Data;\n\n origin?: Data;\n\n own_reactions?: Record<string, EnrichedReaction[]>;\n\n reaction_counts?: Record<string, number>;\n\n target?: Data;\n}\n\nexport interface EnrichedCollection {\n created_at: Date;\n\n id: string;\n\n name: string;\n\n status: string;\n\n updated_at: Date;\n\n user_id: string;\n\n custom: Record<string, any>;\n}\n\nexport interface EnrichedCollectionResponse {\n /**\n * Unique identifier for the collection within its name\n */\n id: string;\n\n /**\n * Name/type of the collection\n */\n name: string;\n\n /**\n * Enrichment status of the collection. One of: ok, notfound\n */\n\n status: 'ok' | 'notfound';\n\n /**\n * When the collection was created\n */\n created_at?: Date;\n\n /**\n * When the collection was last updated\n */\n updated_at?: Date;\n\n /**\n * ID of the user who owns this collection\n */\n user_id?: string;\n\n /**\n * Custom data for the collection\n */\n custom?: Record<string, any>;\n}\n\nexport interface EnrichedReaction {\n activity_id: string;\n\n kind: string;\n\n user_id: string;\n\n id?: string;\n\n parent?: string;\n\n target_feeds?: string[];\n\n children_counts?: Record<string, number>;\n\n created_at?: Time;\n\n data?: Record<string, any>;\n\n latest_children?: Record<string, EnrichedReaction[]>;\n\n own_children?: Record<string, EnrichedReaction[]>;\n\n updated_at?: Time;\n\n user?: Data;\n}\n\nexport interface EnrichmentOptions {\n /**\n * Default: false. When true, includes fetching and enriching own_followings (follows where activity author's feeds follow current user's feeds).\n */\n enrich_own_followings?: boolean;\n\n /**\n * Default: false. When true, includes score_vars in activity responses containing variable values used at ranking time.\n */\n include_score_vars?: boolean;\n\n /**\n * Default: false. When true, skips all activity enrichments.\n */\n skip_activity?: boolean;\n\n /**\n * Default: false. When true, skips enriching collections on activities.\n */\n skip_activity_collections?: boolean;\n\n /**\n * Default: false. When true, skips enriching comments on activities.\n */\n skip_activity_comments?: boolean;\n\n /**\n * Default: false. When true, skips enriching current_feed on activities. Note: CurrentFeed is still computed for permission checks, but enrichment is skipped.\n */\n skip_activity_current_feed?: boolean;\n\n /**\n * Default: false. When true, skips enriching mentioned users on activities.\n */\n skip_activity_mentioned_users?: boolean;\n\n /**\n * Default: false. When true, skips enriching own bookmarks on activities.\n */\n skip_activity_own_bookmarks?: boolean;\n\n /**\n * Default: false. When true, skips enriching parent activities.\n */\n skip_activity_parents?: boolean;\n\n /**\n * Default: false. When true, skips enriching poll data on activities.\n */\n skip_activity_poll?: boolean;\n\n /**\n * Default: false. When true, skips fetching and enriching latest and own reactions on activities. Note: If reactions are already denormalized in the database, they will still be included.\n */\n skip_activity_reactions?: boolean;\n\n /**\n * Default: false. When true, skips refreshing image URLs on activities.\n */\n skip_activity_refresh_image_urls?: boolean;\n\n /**\n * Default: false. When true, skips all enrichments.\n */\n skip_all?: boolean;\n\n /**\n * Default: false. When true, skips enriching user data on feed members.\n */\n skip_feed_member_user?: boolean;\n\n /**\n * Default: false. When true, skips fetching and enriching followers. Note: If followers_pagination is explicitly provided, followers will be fetched regardless of this setting.\n */\n skip_followers?: boolean;\n\n /**\n * Default: false. When true, skips fetching and enriching following. Note: If following_pagination is explicitly provided, following will be fetched regardless of this setting.\n */\n skip_following?: boolean;\n\n /**\n * Default: false. When true, skips computing and including capabilities for feeds.\n */\n skip_own_capabilities?: boolean;\n\n /**\n * Default: false. When true, skips fetching and enriching own_follows (follows where user's feeds follow target feeds).\n */\n skip_own_follows?: boolean;\n\n /**\n * Default: false. When true, skips enriching pinned activities.\n */\n skip_pins?: boolean;\n}\n\nexport interface EntityCreatorResponse {\n /**\n * Number of minor actions performed on the user\n */\n ban_count: number;\n\n banned: boolean;\n\n created_at: Date;\n\n /**\n * Number of major actions performed on the user\n */\n deleted_content_count: number;\n\n /**\n * Number of flag actions performed on the user\n */\n flagged_count: number;\n\n id: string;\n\n language: string;\n\n online: boolean;\n\n role: string;\n\n updated_at: Date;\n\n blocked_user_ids: string[];\n\n teams: string[];\n\n custom: Record<string, any>;\n\n avg_response_time?: number;\n\n deactivated_at?: Date;\n\n deleted_at?: Date;\n\n image?: string;\n\n last_active?: Date;\n\n name?: string;\n\n revoke_tokens_issued_before?: Date;\n\n teams_role?: Record<string, string>;\n}\n\nexport interface FeedCreatedEvent {\n /**\n * Date/time of creation\n */\n created_at: Date;\n\n fid: string;\n\n members: FeedMemberResponse[];\n\n custom: Record<string, any>;\n\n feed: FeedResponse;\n\n user: UserResponseCommonFields;\n\n /**\n * The type of event: \"feeds.feed.created\" in this case\n */\n type: string;\n\n feed_visibility?: string;\n\n received_at?: Date;\n}\n\nexport interface FeedDeletedEvent {\n /**\n * Date/time of creation\n */\n created_at: Date;\n\n fid: string;\n\n custom: Record<string, any>;\n\n /**\n * The type of event: \"feeds.feed.deleted\" in this case\n */\n type: string;\n\n feed_visibility?: string;\n\n received_at?: Date;\n\n user?: UserResponseCommonFields;\n}\n\nexport interface FeedGroup {\n aggregation_version: number;\n\n app_pk: number;\n\n created_at: Date;\n\n default_visibility: string;\n\n group_id: string;\n\n updated_at: Date;\n\n activity_processors: ActivityProcessorConfig[];\n\n activity_selectors: ActivitySelectorConfig[];\n\n custom: Record<string, any>;\n\n deleted_at?: Date;\n\n last_feed_get_at?: Date;\n\n aggregation?: AggregationConfig;\n\n notification?: NotificationConfig;\n\n push_notification?: PushNotificationConfig;\n\n ranking?: RankingConfig;\n\n stories?: StoriesConfig;\n}\n\nexport interface FeedGroupChangedEvent {\n /**\n * Date/time of creation\n */\n created_at: Date;\n\n fid: string;\n\n custom: Record<string, any>;\n\n /**\n * The type of event: \"feeds.feed_group.changed\" in this case\n */\n type: string;\n\n feed_visibility?: string;\n\n received_at?: Date;\n\n feed_group?: FeedGroup;\n\n user?: UserResponseCommonFields;\n}\n\nexport interface FeedGroupDeletedEvent {\n /**\n * Date/time of creation\n */\n created_at: Date;\n\n fid: string;\n\n /**\n * The ID of the feed group that was deleted\n */\n group_id: string;\n\n custom: Record<string, any>;\n\n /**\n * The type of event: \"feeds.feed_group.deleted\" in this case\n */\n type: string;\n\n feed_visibility?: string;\n\n received_at?: Date;\n}\n\nexport interface FeedGroupRestoredEvent {\n /**\n * Date/time of creation\n */\n created_at: Date;\n\n fid: string;\n\n /**\n * The ID of the feed group that was restored\n */\n group_id: string;\n\n custom: Record<string, any>;\n\n /**\n * The type of event: \"feeds.feed_group.restored\" in this case\n */\n type: string;\n\n feed_visibility?: string;\n\n received_at?: Date;\n}\n\nexport interface FeedInput {\n description?: string;\n\n name?: string;\n\n visibility?: 'public' | 'visible' | 'followers' | 'members' | 'private';\n\n filter_tags?: string[];\n\n members?: FeedMemberRequest[];\n\n custom?: Record<string, any>;\n}\n\nexport interface FeedMemberAddedEvent {\n /**\n * Date/time of creation\n */\n created_at: Date;\n\n fid: string;\n\n custom: Record<string, any>;\n\n member: FeedMemberResponse;\n\n /**\n * The type of event: \"feeds.feed_member.added\" in this case\n */\n type: string;\n\n feed_visibility?: string;\n\n received_at?: Date;\n\n user?: UserResponseCommonFields;\n}\n\nexport interface FeedMemberRemovedEvent {\n /**\n * Date/time of creation\n */\n created_at: Date;\n\n fid: string;\n\n member_id: string;\n\n custom: Record<string, any>;\n\n /**\n * The type of event: \"feeds.feed_member.removed\" in this case\n */\n type: string;\n\n feed_visibility?: string;\n\n received_at?: Date;\n\n user?: UserResponseCommonFields;\n}\n\nexport interface FeedMemberRequest {\n /**\n * ID of the user to add as a member\n */\n user_id: string;\n\n /**\n * Whether this is an invite to become a member\n */\n invite?: boolean;\n\n /**\n * ID of the membership level to assign to the member\n */\n membership_level?: string;\n\n /**\n * Role of the member in the feed\n */\n role?: string;\n\n /**\n * Custom data for the member\n */\n custom?: Record<string, any>;\n}\n\nexport interface FeedMemberResponse {\n /**\n * When the membership was created\n */\n created_at: Date;\n\n /**\n * Role of the member in the feed\n */\n role: string;\n\n /**\n * Status of the membership. One of: member, pending, rejected\n */\n\n status: 'member' | 'pending' | 'rejected';\n\n /**\n * When the membership was last updated\n */\n updated_at: Date;\n\n user: UserResponse;\n\n /**\n * When the invite was accepted\n */\n invite_accepted_at?: Date;\n\n /**\n * When the invite was rejected\n */\n invite_rejected_at?: Date;\n\n /**\n * Custom data for the membership\n */\n custom?: Record<string, any>;\n\n membership_level?: MembershipLevelResponse;\n}\n\nexport interface FeedMemberUpdatedEvent {\n /**\n * Date/time of creation\n */\n created_at: Date;\n\n fid: string;\n\n custom: Record<string, any>;\n\n member: FeedMemberResponse;\n\n /**\n * The type of event: \"feeds.feed_member.updated\" in this case\n */\n type: string;\n\n feed_visibility?: string;\n\n received_at?: Date;\n\n user?: UserResponseCommonFields;\n}\n\nexport const FeedOwnCapability = {\n ADD_ACTIVITY: 'add-activity',\n ADD_ACTIVITY_BOOKMARK: 'add-activity-bookmark',\n ADD_ACTIVITY_REACTION: 'add-activity-reaction',\n ADD_COMMENT: 'add-comment',\n ADD_COMMENT_REACTION: 'add-comment-reaction',\n CREATE_FEED: 'create-feed',\n DELETE_ANY_ACTIVITY: 'delete-any-activity',\n DELETE_ANY_COMMENT: 'delete-any-comment',\n DELETE_FEED: 'delete-feed',\n DELETE_OWN_ACTIVITY: 'delete-own-activity',\n DELETE_OWN_ACTIVITY_BOOKMARK: 'delete-own-activity-bookmark',\n DELETE_OWN_ACTIVITY_REACTION: 'delete-own-activity-reaction',\n DELETE_OWN_COMMENT: 'delete-own-comment',\n DELETE_OWN_COMMENT_REACTION: 'delete-own-comment-reaction',\n FOLLOW: 'follow',\n PIN_ACTIVITY: 'pin-activity',\n QUERY_FEED_MEMBERS: 'query-feed-members',\n QUERY_FOLLOWS: 'query-follows',\n READ_ACTIVITIES: 'read-activities',\n READ_FEED: 'read-feed',\n UNFOLLOW: 'unfollow',\n UPDATE_ANY_ACTIVITY: 'update-any-activity',\n UPDATE_ANY_COMMENT: 'update-any-comment',\n UPDATE_FEED: 'update-feed',\n UPDATE_FEED_FOLLOWERS: 'update-feed-followers',\n UPDATE_FEED_MEMBERS: 'update-feed-members',\n UPDATE_OWN_ACTIVITY: 'update-own-activity',\n UPDATE_OWN_ACTIVITY_BOOKMARK: 'update-own-activity-bookmark',\n UPDATE_OWN_COMMENT: 'update-own-comment',\n} as const;\n\nexport type FeedOwnCapability =\n (typeof FeedOwnCapability)[keyof typeof FeedOwnCapability];\n\nexport interface FeedOwnData {\n /**\n * Capabilities the current user has for this feed\n */\n own_capabilities?: FeedOwnCapability[];\n\n /**\n * Follow relationships where the feed owner's feeds are following the current user's feeds (up to 5 total)\n */\n own_followings?: FollowResponse[];\n\n /**\n * Follow relationships where the current user's feeds are following this feed\n */\n own_follows?: FollowResponse[];\n\n own_membership?: FeedMemberResponse;\n}\n\nexport interface FeedRequest {\n /**\n * ID of the feed group\n */\n feed_group_id: string;\n\n /**\n * ID of the feed\n */\n feed_id: string;\n\n /**\n * ID of the feed creator\n */\n created_by_id?: string;\n\n /**\n * Description of the feed\n */\n description?: string;\n\n /**\n * Name of the feed\n */\n name?: string;\n\n /**\n * Visibility setting for the feed. One of: public, visible, followers, members, private\n */\n\n visibility?: 'public' | 'visible' | 'followers' | 'members' | 'private';\n\n /**\n * Tags used for filtering feeds\n */\n filter_tags?: string[];\n\n /**\n * Initial members for the feed\n */\n members?: FeedMemberRequest[];\n\n /**\n * Custom data for the feed\n */\n custom?: Record<string, any>;\n}\n\nexport interface FeedResponse {\n activity_count: number;\n\n /**\n * When the feed was created\n */\n created_at: Date;\n\n /**\n * Description of the feed\n */\n description: string;\n\n /**\n * Fully qualified feed ID (group_id:id)\n */\n feed: string;\n\n /**\n * Number of followers of this feed\n */\n follower_count: number;\n\n /**\n * Number of feeds this feed follows\n */\n following_count: number;\n\n /**\n * Group this feed belongs to\n */\n group_id: string;\n\n /**\n * Unique identifier for the feed\n */\n id: string;\n\n /**\n * Number of members in this feed\n */\n member_count: number;\n\n /**\n * Name of the feed\n */\n name: string;\n\n /**\n * Number of pinned activities in this feed\n */\n pin_count: number;\n\n /**\n * When the feed was last updated\n */\n updated_at: Date;\n\n created_by: UserResponse;\n\n /**\n * When the feed was deleted\n */\n deleted_at?: Date;\n\n /**\n * Visibility setting for the feed\n */\n\n visibility?: 'public' | 'visible' | 'followers' | 'members' | 'private';\n\n /**\n * Tags used for filtering feeds\n */\n filter_tags?: string[];\n\n /**\n * Capabilities the current user has for this feed\n */\n own_capabilities?: FeedOwnCapability[];\n\n /**\n * Follow relationships where the feed owner’s feeds are following the current user's feeds\n */\n own_followings?: FollowResponse[];\n\n /**\n * Follow relationships where the current user's feeds are following this feed\n */\n own_follows?: FollowResponse[];\n\n /**\n * Custom data for the feed\n */\n custom?: Record<string, any>;\n\n own_membership?: FeedMemberResponse;\n}\n\nexport interface FeedSuggestionResponse {\n activity_count: number;\n\n /**\n * When the feed was created\n */\n created_at: Date;\n\n /**\n * Description of the feed\n */\n description: string;\n\n /**\n * Fully qualified feed ID (group_id:id)\n */\n feed: string;\n\n /**\n * Number of followers of this feed\n */\n follower_count: number;\n\n /**\n * Number of feeds this feed follows\n */\n following_count: number;\n\n /**\n * Group this feed belongs to\n */\n group_id: string;\n\n /**\n * Unique identifier for the feed\n */\n id: string;\n\n /**\n * Number of members in this feed\n */\n member_count: number;\n\n /**\n * Name of the feed\n */\n name: string;\n\n /**\n * Number of pinned activities in this feed\n */\n pin_count: number;\n\n /**\n * When the feed was last updated\n */\n updated_at: Date;\n\n created_by: UserResponse;\n\n /**\n * When the feed was deleted\n */\n deleted_at?: Date;\n\n reason?: string;\n\n recommendation_score?: number;\n\n /**\n * Visibility setting for the feed\n */\n\n visibility?: 'public' | 'visible' | 'followers' | 'members' | 'private';\n\n /**\n * Tags used for filtering feeds\n */\n filter_tags?: string[];\n\n /**\n * Capabilities the current user has for this feed\n */\n own_capabilities?: FeedOwnCapability[];\n\n /**\n * Follow relationships where the feed owner’s feeds are following the current user's feeds\n */\n own_followings?: FollowResponse[];\n\n /**\n * Follow relationships where the current user's feeds are following this feed\n */\n own_follows?: FollowResponse[];\n\n algorithm_scores?: Record<string, number>;\n\n /**\n * Custom data for the feed\n */\n custom?: Record<string, any>;\n\n own_membership?: FeedMemberResponse;\n}\n\nexport interface FeedUpdatedEvent {\n created_at: Date;\n\n fid: string;\n\n custom: Record<string, any>;\n\n feed: FeedResponse;\n\n /**\n * The type of event: \"feeds.feed.updated\" in this case\n */\n type: string;\n\n feed_visibility?: string;\n\n received_at?: Date;\n\n user?: UserResponseCommonFields;\n}\n\nexport interface FeedsPreferences {\n /**\n * Push notification preference for comments on user's activities. One of: all, none\n */\n\n comment?: 'all' | 'none';\n\n /**\n * Push notification preference for mentions in comments. One of: all, none\n */\n\n comment_mention?: 'all' | 'none';\n\n /**\n * Push notification preference for reactions on comments. One of: all, none\n */\n\n comment_reaction?: 'all' | 'none';\n\n /**\n * Push notification preference for replies to comments. One of: all, none\n */\n\n comment_reply?: 'all' | 'none';\n\n /**\n * Push notification preference for new followers. One of: all, none\n */\n\n follow?: 'all' | 'none';\n\n /**\n * Push notification preference for mentions in activities. One of: all, none\n */\n\n mention?: 'all' | 'none';\n\n /**\n * Push notification preference for reactions on user's activities or comments. One of: all, none\n */\n\n reaction?: 'all' | 'none';\n\n /**\n * Push notification preferences for custom activity types. Map of activity type to preference (all or none)\n */\n custom_activity_types?: Record<string, string>;\n}\n\nexport interface FeedsPreferencesResponse {\n comment?: string;\n\n comment_mention?: string;\n\n comment_reaction?: string;\n\n comment_reply?: string;\n\n follow?: string;\n\n mention?: string;\n\n reaction?: string;\n\n custom_activity_types?: Record<string, string>;\n}\n\nexport interface FeedsReactionGroup {\n count: number;\n\n first_reaction_at: Date;\n\n last_reaction_at: Date;\n}\n\nexport interface FeedsReactionGroupResponse {\n /**\n * Number of reactions in this group\n */\n count: number;\n\n /**\n * Time of the first reaction\n */\n first_reaction_at: Date;\n\n /**\n * Time of the most recent reaction\n */\n last_reaction_at: Date;\n}\n\nexport interface FeedsReactionResponse {\n /**\n * ID of the activity that was reacted to\n */\n activity_id: string;\n\n /**\n * When the reaction was created\n */\n created_at: Date;\n\n /**\n * Type of reaction\n */\n type: string;\n\n /**\n * When the reaction was last updated\n */\n updated_at: Date;\n\n user: UserResponse;\n\n /**\n * ID of the comment that was reacted to\n */\n comment_id?: string;\n\n /**\n * Custom data for the reaction\n */\n custom?: Record<string, any>;\n}\n\nexport interface FeedsV3ActivityResponse {\n bookmark_count: number;\n\n comment_count: number;\n\n created_at: Date;\n\n hidden: boolean;\n\n id: string;\n\n popularity: number;\n\n preview: boolean;\n\n reaction_count: number;\n\n restrict_replies: string;\n\n score: number;\n\n share_count: number;\n\n type: string;\n\n updated_at: Date;\n\n visibility: string;\n\n attachments: Attachment[];\n\n comments: FeedsV3CommentResponse[];\n\n feeds: string[];\n\n filter_tags: string[];\n\n interest_tags: string[];\n\n latest_reactions: any[];\n\n mentioned_users: UserResponse[];\n\n own_bookmarks: any[];\n\n own_reactions: any[];\n\n collections: Record<string, EnrichedCollection>;\n\n custom: Record<string, any>;\n\n reaction_groups: Record<string, FeedsReactionGroup>;\n\n search_data: Record<string, any>;\n\n user: UserResponse;\n\n deleted_at?: Date;\n\n edited_at?: Date;\n\n expires_at?: Date;\n\n moderation_action?: string;\n\n text?: string;\n\n visibility_tag?: string;\n\n metrics?: Record<string, number>;\n\n moderation?: ModerationV2Response;\n}\n\nexport interface FeedsV3CommentResponse {\n confidence_score: number;\n\n created_at: Date;\n\n downvote_count: number;\n\n id: string;\n\n object_id: string;\n\n object_type: string;\n\n reaction_count: number;\n\n reply_count: number;\n\n score: number;\n\n status: string;\n\n updated_at: Date;\n\n upvote_count: number;\n\n mentioned_users: UserResponse[];\n\n own_reactions: any[];\n\n user: UserResponse;\n\n controversy_score?: number;\n\n deleted_at?: Date;\n\n edited_at?: Date;\n\n parent_id?: string;\n\n text?: string;\n\n attachments?: Attachment[];\n\n custom?: Record<string, any>;\n\n moderation?: ModerationV2Response;\n}\n\nexport interface Field {\n short: boolean;\n\n title: string;\n\n value: string;\n}\n\nexport interface FileUploadConfig {\n size_limit: number;\n\n allowed_file_extensions: string[];\n\n allowed_mime_types: string[];\n\n blocked_file_extensions: string[];\n\n blocked_mime_types: string[];\n}\n\nexport interface FileUploadRequest {\n /**\n * file field\n */\n file?: string;\n\n user?: OnlyUserID;\n}\n\nexport interface FileUploadResponse {\n /**\n * Duration of the request in milliseconds\n */\n duration: string;\n\n /**\n * URL to the uploaded asset. Should be used to put to `asset_url` attachment field\n */\n file?: string;\n\n /**\n * URL of the file thumbnail for supported file formats. Should be put to `thumb_url` attachment field\n */\n thumb_url?: string;\n}\n\nexport interface FilterConfigResponse {\n llm_labels: string[];\n\n ai_text_labels?: string[];\n\n config_keys?: string[];\n}\n\nexport interface FlagCountRuleParameters {\n threshold?: number;\n}\n\nexport interface FlagRequest {\n /**\n * Unique identifier of the entity being flagged\n */\n entity_id: string;\n\n /**\n * Type of entity being flagged (e.g., message, user)\n */\n entity_type: string;\n\n /**\n * ID of the user who created the flagged entity\n */\n entity_creator_id?: string;\n\n /**\n * Optional explanation for why the content is being flagged\n */\n reason?: string;\n\n /**\n * Additional metadata about the flag\n */\n custom?: Record<string, any>;\n\n moderation_payload?: ModerationPayload;\n}\n\nexport interface FlagResponse {\n duration: string;\n\n /**\n * Unique identifier of the created moderation item\n */\n item_id: string;\n}\n\nexport interface FlagUserOptions {\n reason?: string;\n}\n\nexport interface FollowBatchRequest {\n /**\n * List of follow relationships to create\n */\n follows: FollowRequest[];\n\n /**\n * If true, enriches the follow's source_feed and target_feed with own_* fields (own_follows, own_followings, own_capabilities, own_membership). Defaults to false for performance.\n */\n enrich_own_fields?: boolean;\n}\n\nexport interface FollowBatchResponse {\n duration: string;\n\n /**\n * List of newly created follow relationships\n */\n created: FollowResponse[];\n\n /**\n * List of current follow relationships\n */\n follows: FollowResponse[];\n}\n\nexport interface FollowCreatedEvent {\n /**\n * Date/time of creation\n */\n created_at: Date;\n\n fid: string;\n\n custom: Record<string, any>;\n\n follow: FollowResponse;\n\n /**\n * The type of event: \"feeds.follow.created\" in this case\n */\n type: string;\n\n feed_visibility?: string;\n\n received_at?: Date;\n}\n\nexport interface FollowDeletedEvent {\n /**\n * Date/time of creation\n */\n created_at: Date;\n\n fid: string;\n\n custom: Record<string, any>;\n\n follow: FollowResponse;\n\n /**\n * The type of event: \"feeds.follow.deleted\" in this case\n */\n type: string;\n\n feed_visibility?: string;\n\n received_at?: Date;\n}\n\nexport interface FollowRequest {\n /**\n * Fully qualified ID of the source feed\n */\n source: string;\n\n /**\n * Fully qualified ID of the target feed\n */\n target: string;\n\n /**\n * @deprecated\n * Deprecated: use notification_context.trigger.custom and notification_context.target.custom instead\n */\n copy_custom_to_notification?: boolean;\n\n /**\n * Whether to create a notification activity for this follow\n */\n create_notification_activity?: boolean;\n\n /**\n * If true, enriches the follow's source_feed and target_feed with own_* fields (own_follows, own_followings, own_capabilities, own_membership). Defaults to false for performance.\n */\n enrich_own_fields?: boolean;\n\n /**\n * Push preference for the follow relationship\n */\n\n push_preference?: 'all' | 'none';\n\n /**\n * Whether to skip push for this follow\n */\n skip_push?: boolean;\n\n /**\n * Custom data for the follow relationship\n */\n custom?: Record<string, any>;\n}\n\nexport interface FollowResponse {\n /**\n * When the follow relationship was created\n */\n created_at: Date;\n\n /**\n * Role of the follower (source user) in the follow relationship\n */\n follower_role: string;\n\n /**\n * Push preference for notifications. One of: all, none\n */\n\n push_preference: 'all' | 'none';\n\n /**\n * Status of the follow relationship. One of: accepted, pending, rejected\n */\n\n status: 'accepted' | 'pending' | 'rejected';\n\n /**\n * When the follow relationship was last updated\n */\n updated_at: Date;\n\n source_feed: FeedResponse;\n\n target_feed: FeedResponse;\n\n /**\n * When the follow request was accepted\n */\n request_accepted_at?: Date;\n\n /**\n * When the follow request was rejected\n */\n request_rejected_at?: Date;\n\n /**\n * Custom data for the follow relationship\n */\n custom?: Record<string, any>;\n}\n\nexport interface FollowUpdatedEvent {\n /**\n * Date/time of creation\n */\n created_at: Date;\n\n fid: string;\n\n custom: Record<string, any>;\n\n follow: FollowResponse;\n\n /**\n * The type of event: \"feeds.follow.updated\" in this case\n */\n type: string;\n\n feed_visibility?: string;\n\n received_at?: Date;\n}\n\nexport interface FrameRecordingResponse {\n status: string;\n}\n\nexport interface FrameRecordingSettingsResponse {\n capture_interval_in_seconds: number;\n\n mode: string;\n\n quality?: string;\n}\n\nexport interface FriendReactionsOptions {\n /**\n * Default: false. When true, fetches friend reactions for activities.\n */\n enabled?: boolean;\n\n /**\n * Default: 3, Max: 10. The maximum number of friend reactions to return per activity.\n */\n limit?: number;\n\n /**\n * Default: 'following'. The type of friend relationship to use. 'following' = users you follow, 'mutual' = users with mutual follows. One of: following, mutual\n */\n\n type?: 'following' | 'mutual';\n}\n\nexport interface FullUserResponse {\n banned: boolean;\n\n created_at: Date;\n\n id: string;\n\n invisible: boolean;\n\n language: string;\n\n online: boolean;\n\n role: string;\n\n shadow_banned: boolean;\n\n total_unread_count: number;\n\n unread_channels: number;\n\n unread_count: number;\n\n unread_threads: number;\n\n updated_at: Date;\n\n blocked_user_ids: string[];\n\n channel_mutes: ChannelMute[];\n\n devices: DeviceResponse[];\n\n mutes: UserMuteResponse[];\n\n teams: string[];\n\n custom: Record<string, any>;\n\n avg_response_time?: number;\n\n ban_expires?: Date;\n\n deactivated_at?: Date;\n\n deleted_at?: Date;\n\n image?: string;\n\n last_active?: Date;\n\n name?: string;\n\n revoke_tokens_issued_before?: Date;\n\n latest_hidden_channels?: string[];\n\n privacy_settings?: PrivacySettingsResponse;\n\n teams_role?: Record<string, string>;\n}\n\nexport interface GeofenceSettingsResponse {\n names: string[];\n}\n\nexport interface GetActivityResponse {\n duration: string;\n\n activity: ActivityResponse;\n}\n\nexport interface GetAppealResponse {\n duration: string;\n\n item?: AppealItemResponse;\n}\n\nexport interface GetApplicationResponse {\n /**\n * Duration of the request in milliseconds\n */\n duration: string;\n\n app: AppResponseFields;\n}\n\nexport interface GetBlockedUsersResponse {\n /**\n * Duration of the request in milliseconds\n */\n duration: string;\n\n /**\n * Array of blocked user object\n */\n blocks: BlockedUserResponse[];\n}\n\nexport interface GetCommentRepliesResponse {\n duration: string;\n\n /**\n * Sort order used for the replies (first, last, top, best, controversial)\n */\n sort: string;\n\n /**\n * Threaded listing of replies to the comment\n */\n comments: ThreadedCommentResponse[];\n\n next?: string;\n\n prev?: string;\n}\n\nexport interface GetCommentResponse {\n duration: string;\n\n comment: CommentResponse;\n}\n\nexport interface GetCommentsResponse {\n duration: string;\n\n /**\n * Sort order used for the comments (first, last, top, best, controversial)\n */\n sort: string;\n\n /**\n * Threaded listing for the activity\n */\n comments: ThreadedCommentResponse[];\n\n next?: string;\n\n prev?: string;\n}\n\nexport interface GetConfigResponse {\n duration: string;\n\n config?: ConfigResponse;\n}\n\nexport interface GetFollowSuggestionsResponse {\n duration: string;\n\n /**\n * List of suggested feeds to follow\n */\n suggestions: FeedSuggestionResponse[];\n\n algorithm_used?: string;\n}\n\nexport interface GetOGResponse {\n duration: string;\n\n custom: Record<string, any>;\n\n /**\n * URL of detected video or audio\n */\n asset_url?: string;\n\n author_icon?: string;\n\n /**\n * og:site\n */\n author_link?: string;\n\n /**\n * og:site_name\n */\n author_name?: string;\n\n color?: string;\n\n fallback?: string;\n\n footer?: string;\n\n footer_icon?: string;\n\n /**\n * URL of detected image\n */\n image_url?: string;\n\n /**\n * extracted url from the text\n */\n og_scrape_url?: string;\n\n original_height?: number;\n\n original_width?: number;\n\n pretext?: string;\n\n /**\n * og:description\n */\n text?: string;\n\n /**\n * URL of detected thumb image\n */\n thumb_url?: string;\n\n /**\n * og:title\n */\n title?: string;\n\n /**\n * og:url\n */\n title_link?: string;\n\n /**\n * Attachment type, could be empty, image, audio or video\n */\n type?: string;\n\n actions?: Action[];\n\n fields?: Field[];\n\n giphy?: Images;\n}\n\nexport interface GetOrCreateFeedRequest {\n id_around?: string;\n\n limit?: number;\n\n next?: string;\n\n prev?: string;\n\n view?: string;\n\n watch?: boolean;\n\n data?: FeedInput;\n\n enrichment_options?: EnrichmentOptions;\n\n external_ranking?: Record<string, any>;\n\n filter?: Record<string, any>;\n\n followers_pagination?: PagerRequest;\n\n following_pagination?: PagerRequest;\n\n friend_reactions_options?: FriendReactionsOptions;\n\n interest_weights?: Record<string, number>;\n\n member_pagination?: PagerRequest;\n}\n\nexport interface GetOrCreateFeedResponse {\n created: boolean;\n\n /**\n * Duration of the request in milliseconds\n */\n duration: string;\n\n activities: ActivityResponse[];\n\n aggregated_activities: AggregatedActivityResponse[];\n\n followers: FollowResponse[];\n\n following: FollowResponse[];\n\n members: FeedMemberResponse[];\n\n pinned_activities: ActivityPinResponse[];\n\n feed: FeedResponse;\n\n next?: string;\n\n prev?: string;\n\n followers_pagination?: PagerResponse;\n\n following_pagination?: PagerResponse;\n\n member_pagination?: PagerResponse;\n\n notification_status?: NotificationStatusResponse;\n}\n\nexport interface GetUserGroupResponse {\n duration: string;\n\n user_group?: UserGroupResponse;\n}\n\nexport interface GoogleVisionConfig {\n enabled?: boolean;\n}\n\nexport interface HLSSettingsResponse {\n auto_on: boolean;\n\n enabled: boolean;\n\n quality_tracks: string[];\n\n layout: LayoutSettingsResponse;\n}\n\nexport interface HarmConfig {\n cooldown_period: number;\n\n severity: number;\n\n threshold: number;\n\n action_sequences: ActionSequence[];\n\n harm_types: string[];\n}\n\nexport interface HealthCheckEvent {\n connection_id: string;\n\n created_at: Date;\n\n custom: Record<string, any>;\n\n type: string;\n\n cid?: string;\n\n received_at?: Date;\n\n me?: OwnUserResponse;\n}\n\nexport interface ImageContentParameters {\n label_operator?: string;\n\n min_confidence?: number;\n\n harm_labels?: string[];\n}\n\nexport interface ImageData {\n frames: string;\n\n height: string;\n\n size: string;\n\n url: string;\n\n width: string;\n}\n\nexport interface ImageRuleParameters {\n min_confidence?: number;\n\n threshold?: number;\n\n time_window?: string;\n\n harm_labels?: string[];\n}\n\nexport interface ImageSize {\n /**\n * Crop mode. One of: top, bottom, left, right, center\n */\n crop?: string;\n\n /**\n * Target image height\n */\n height?: number;\n\n /**\n * Resize method. One of: clip, crop, scale, fill\n */\n resize?: string;\n\n /**\n * Target image width\n */\n width?: number;\n}\n\nexport interface ImageUploadRequest {\n file?: string;\n\n /**\n * field with JSON-encoded array of image size configurations\n */\n upload_sizes?: ImageSize[];\n\n user?: OnlyUserID;\n}\n\nexport interface ImageUploadResponse {\n /**\n * Duration of the request in milliseconds\n */\n duration: string;\n\n file?: string;\n\n thumb_url?: string;\n\n /**\n * Array of image size configurations\n */\n upload_sizes?: ImageSize[];\n}\n\nexport interface Images {\n fixed_height: ImageData;\n\n fixed_height_downsampled: ImageData;\n\n fixed_height_still: ImageData;\n\n fixed_width: ImageData;\n\n fixed_width_downsampled: ImageData;\n\n fixed_width_still: ImageData;\n\n original: ImageData;\n}\n\nexport interface IndividualRecordingResponse {\n status: string;\n}\n\nexport interface IndividualRecordingSettingsResponse {\n mode: string;\n\n output_types?: string[];\n}\n\nexport interface IngressAudioEncodingResponse {\n bitrate: number;\n\n channels: number;\n\n enable_dtx: boolean;\n}\n\nexport interface IngressSettingsResponse {\n enabled: boolean;\n\n audio_encoding_options?: IngressAudioEncodingResponse;\n\n video_encoding_options?: Record<string, IngressVideoEncodingResponse>;\n}\n\nexport interface IngressSourceResponse {\n fps: number;\n\n height: number;\n\n width: number;\n}\n\nexport interface IngressVideoEncodingResponse {\n layers: IngressVideoLayerResponse[];\n\n source: IngressSourceResponse;\n}\n\nexport interface IngressVideoLayerResponse {\n bitrate: number;\n\n codec: string;\n\n frame_rate_limit: number;\n\n max_dimension: number;\n\n min_dimension: number;\n}\n\nexport interface KeyframeRuleParameters {\n min_confidence?: number;\n\n threshold?: number;\n\n harm_labels?: string[];\n}\n\nexport interface LLMConfig {\n enabled: boolean;\n\n rules: LLMRule[];\n\n app_context?: string;\n\n async?: boolean;\n\n severity_descriptions?: Record<string, string>;\n}\n\nexport interface LLMRule {\n action:\n | 'flag'\n | 'shadow'\n | 'remove'\n | 'bounce'\n | 'bounce_flag'\n | 'bounce_remove'\n | 'keep';\n\n description: string;\n\n label: string;\n\n severity_rules: BodyguardSeverityRule[];\n}\n\nexport interface LabelThresholds {\n /**\n * Threshold for automatic message block\n */\n block?: number;\n\n /**\n * Threshold for automatic message flag\n */\n flag?: number;\n}\n\nexport interface LayoutSettingsResponse {\n external_app_url: string;\n\n external_css_url: string;\n\n name: string;\n\n detect_orientation?: boolean;\n\n options?: Record<string, any>;\n}\n\nexport interface LimitsSettingsResponse {\n max_participants_exclude_roles: string[];\n\n max_duration_seconds?: number;\n\n max_participants?: number;\n\n max_participants_exclude_owner?: boolean;\n}\n\nexport interface ListBlockListResponse {\n /**\n * Duration of the request in milliseconds\n */\n duration: string;\n\n blocklists: BlockListResponse[];\n}\n\nexport interface ListDevicesResponse {\n duration: string;\n\n /**\n * List of devices\n */\n devices: DeviceResponse[];\n}\n\nexport interface ListUserGroupsResponse {\n duration: string;\n\n /**\n * List of user groups\n */\n user_groups: UserGroupResponse[];\n}\n\nexport interface MarkActivityRequest {\n /**\n * Whether to mark all activities as read\n */\n mark_all_read?: boolean;\n\n /**\n * Whether to mark all activities as seen\n */\n mark_all_seen?: boolean;\n\n /**\n * List of activity IDs to mark as read\n */\n mark_read?: string[];\n\n /**\n * List of activity IDs to mark as seen\n */\n mark_seen?: string[];\n\n /**\n * List of activity IDs to mark as watched (for stories)\n */\n mark_watched?: string[];\n}\n\nexport interface MarkReviewedRequestPayload {\n /**\n * Maximum content items to mark as reviewed\n */\n content_to_mark_as_reviewed_limit?: number;\n\n /**\n * Reason for the appeal decision\n */\n decision_reason?: string;\n\n /**\n * Skip marking content as reviewed\n */\n disable_marking_content_as_reviewed?: boolean;\n}\n\nexport interface MembershipLevelResponse {\n /**\n * When the membership level was created\n */\n created_at: Date;\n\n /**\n * Unique identifier for the membership level\n */\n id: string;\n\n /**\n * Display name for the membership level\n */\n name: string;\n\n /**\n * Priority level\n */\n priority: number;\n\n /**\n * When the membership level was last updated\n */\n updated_at: Date;\n\n /**\n * Activity tags this membership level gives access to\n */\n tags: string[];\n\n /**\n * Description of the membership level\n */\n description?: string;\n\n /**\n * Custom data for the membership level\n */\n custom?: Record<string, any>;\n}\n\nexport interface MessageResponse {\n /**\n * Channel unique identifier in <type>:<id> format\n */\n cid: string;\n\n /**\n * Date/time of creation\n */\n created_at: Date;\n\n deleted_reply_count: number;\n\n /**\n * Contains HTML markup of the message. Can only be set when using server-side API\n */\n html: string;\n\n /**\n * Message ID is unique string identifier of the message\n */\n id: string;\n\n /**\n * Whether the message mentioned the channel tag\n */\n mentioned_channel: boolean;\n\n /**\n * Whether the message mentioned online users with @here tag\n */\n mentioned_here: boolean;\n\n /**\n * Whether message is pinned or not\n */\n pinned: boolean;\n\n /**\n * Number of replies to this message\n */\n reply_count: number;\n\n /**\n * Whether the message was shadowed or not\n */\n shadowed: boolean;\n\n /**\n * Whether message is silent or not\n */\n silent: boolean;\n\n /**\n * Text of the message. Should be empty if `mml` is provided\n */\n text: string;\n\n /**\n * Contains type of the message. One of: regular, ephemeral, error, reply, system, deleted\n */\n type: string;\n\n /**\n * Date/time of the last update\n */\n updated_at: Date;\n\n /**\n * Array of message attachments\n */\n attachments: Attachment[];\n\n /**\n * List of 10 latest reactions to this message\n */\n latest_reactions: ReactionResponse[];\n\n /**\n * List of mentioned users\n */\n mentioned_users: UserResponse[];\n\n /**\n * List of 10 latest reactions of authenticated user to this message\n */\n own_reactions: ReactionResponse[];\n\n /**\n * A list of user ids that have restricted visibility to the message, if the list is not empty, the message is only visible to the users in the list\n */\n restricted_visibility: string[];\n\n custom: Record<string, any>;\n\n /**\n * An object containing number of reactions of each type. Key: reaction type (string), value: number of reactions (int)\n */\n reaction_counts: Record<string, number>;\n\n /**\n * An object containing scores of reactions of each type. Key: reaction type (string), value: total score of reactions (int)\n */\n reaction_scores: Record<string, number>;\n\n user: UserResponse;\n\n /**\n * Contains provided slash command\n */\n command?: string;\n\n /**\n * Date/time of deletion\n */\n deleted_at?: Date;\n\n deleted_for_me?: boolean;\n\n message_text_updated_at?: Date;\n\n /**\n * Should be empty if `text` is provided. Can only be set when using server-side API\n */\n mml?: string;\n\n /**\n * ID of parent message (thread)\n */\n parent_id?: string;\n\n /**\n * Date when pinned message expires\n */\n pin_expires?: Date;\n\n /**\n * Date when message got pinned\n */\n pinned_at?: Date;\n\n /**\n * Identifier of the poll to include in the message\n */\n poll_id?: string;\n\n quoted_message_id?: string;\n\n /**\n * Whether thread reply should be shown in the channel as well\n */\n show_in_channel?: boolean;\n\n /**\n * List of user group IDs mentioned in the message. Group members who are also channel members will receive push notifications based on their push preferences. Max 10 groups\n */\n mentioned_group_ids?: string[];\n\n /**\n * List of roles mentioned in the message (e.g. admin, channel_moderator, custom roles). Members with matching roles will receive push notifications based on their push preferences. Max 10 roles\n */\n mentioned_roles?: string[];\n\n /**\n * List of users who participate in thread\n */\n thread_participants?: UserResponse[];\n\n draft?: DraftResponse;\n\n /**\n * Object with translations. Key `language` contains the original language key. Other keys contain translations\n */\n i18n?: Record<string, string>;\n\n /**\n * Contains image moderation information\n */\n image_labels?: Record<string, string[]>;\n\n member?: ChannelMemberResponse;\n\n moderation?: ModerationV2Response;\n\n pinned_by?: UserResponse;\n\n poll?: PollResponseData;\n\n quoted_message?: MessageResponse;\n\n reaction_groups?: Record<string, ReactionGroupResponse>;\n\n reminder?: ReminderResponseData;\n\n shared_location?: SharedLocationResponseData;\n}\n\nexport interface ModerationActionConfigResponse {\n /**\n * The action to take\n */\n action: string;\n\n /**\n * Description of what this action does\n */\n description: string;\n\n /**\n * Type of entity this action applies to\n */\n entity_type: string;\n\n /**\n * Icon for the dashboard\n */\n icon: string;\n\n /**\n * Display order (lower numbers shown first)\n */\n order: number;\n\n /**\n * Custom data for the action\n */\n custom?: Record<string, any>;\n}\n\nexport interface ModerationCustomActionEvent {\n /**\n * The ID of the custom action that was executed\n */\n action_id: string;\n\n created_at: Date;\n\n custom: Record<string, any>;\n\n review_queue_item: ReviewQueueItemResponse;\n\n type: string;\n\n received_at?: Date;\n\n /**\n * Additional options passed to the custom action\n */\n action_options?: Record<string, any>;\n\n message?: MessageResponse;\n}\n\nexport interface ModerationFlagResponse {\n created_at: Date;\n\n entity_id: string;\n\n entity_type: string;\n\n type: string;\n\n updated_at: Date;\n\n user_id: string;\n\n result: Array<Record<string, any>>;\n\n entity_creator_id?: string;\n\n reason?: string;\n\n review_queue_item_id?: string;\n\n labels?: string[];\n\n custom?: Record<string, any>;\n\n moderation_payload?: ModerationPayloadResponse;\n\n review_queue_item?: ReviewQueueItemResponse;\n\n user?: UserResponse;\n}\n\nexport interface ModerationFlaggedEvent {\n /**\n * The type of content that was flagged\n */\n content_type: string;\n\n created_at: Date;\n\n /**\n * The ID of the flagged content\n */\n object_id: string;\n\n custom: Record<string, any>;\n\n type: string;\n\n received_at?: Date;\n}\n\nexport interface ModerationMarkReviewedEvent {\n created_at: Date;\n\n custom: Record<string, any>;\n\n item: ReviewQueueItemResponse;\n\n type: string;\n\n received_at?: Date;\n\n message?: MessageResponse;\n}\n\nexport interface ModerationPayload {\n images?: string[];\n\n texts?: string[];\n\n videos?: string[];\n\n custom?: Record<string, any>;\n}\n\nexport interface ModerationPayloadResponse {\n /**\n * Image URLs to moderate\n */\n images?: string[];\n\n /**\n * Text content to moderate\n */\n texts?: string[];\n\n /**\n * Video URLs to moderate\n */\n videos?: string[];\n\n /**\n * Custom data for moderation\n */\n custom?: Record<string, any>;\n}\n\nexport interface ModerationV2Response {\n action: string;\n\n original_text: string;\n\n blocklist_matched?: string;\n\n platform_circumvented?: boolean;\n\n semantic_filter_matched?: string;\n\n blocklists_matched?: string[];\n\n image_harms?: string[];\n\n text_harms?: string[];\n}\n\nexport interface MuteRequest {\n /**\n * User IDs to mute (if multiple users)\n */\n target_ids: string[];\n\n /**\n * Duration of mute in minutes\n */\n timeout?: number;\n}\n\nexport interface MuteResponse {\n duration: string;\n\n /**\n * Object with mutes (if multiple users were muted)\n */\n mutes?: UserMuteResponse[];\n\n /**\n * A list of users that can't be found. Common cause for this is deleted users\n */\n non_existing_users?: string[];\n\n own_user?: OwnUserResponse;\n}\n\nexport interface NoiseCancellationSettings {\n mode: string;\n}\n\nexport interface NotificationComment {\n comment: string;\n\n id: string;\n\n user_id: string;\n\n attachments?: Attachment[];\n}\n\nexport interface NotificationConfig {\n deduplication_window?: string;\n\n track_read?: boolean;\n\n track_seen?: boolean;\n}\n\nexport interface NotificationContext {\n target?: NotificationTarget;\n\n trigger?: NotificationTrigger;\n}\n\nexport interface NotificationFeedUpdatedEvent {\n /**\n * Date/time of creation\n */\n created_at: Date;\n\n /**\n * The ID of the feed\n */\n fid: string;\n\n custom: Record<string, any>;\n\n /**\n * The type of event: \"feeds.notification_feed.updated\" in this case\n */\n type: string;\n\n feed_visibility?: string;\n\n received_at?: Date;\n\n /**\n * Aggregated activities for notification feeds\n */\n aggregated_activities?: AggregatedActivityResponse[];\n\n notification_status?: NotificationStatusResponse;\n\n user?: UserResponseCommonFields;\n}\n\nexport interface NotificationParentActivity {\n id: string;\n\n text?: string;\n\n type?: string;\n\n user_id?: string;\n\n attachments?: Attachment[];\n}\n\nexport interface NotificationStatusResponse {\n /**\n * Number of unread notifications\n */\n unread: number;\n\n /**\n * Number of unseen notifications\n */\n unseen: number;\n\n /**\n * When notifications were last read\n */\n last_read_at?: Date;\n\n /**\n * When notifications were last seen\n */\n last_seen_at?: Date;\n\n /**\n * Deprecated: use is_read on each activity/group instead. IDs of activities that have been read. Capped at ~101 entries for aggregated feeds.\n */\n read_activities?: string[];\n\n /**\n * Deprecated: use is_seen on each activity/group instead. IDs of activities that have been seen. Capped at ~101 entries for aggregated feeds.\n */\n seen_activities?: string[];\n}\n\nexport interface NotificationTarget {\n /**\n * The ID of the target (activity ID or user ID)\n */\n id: string;\n\n /**\n * The name of the target user (for user targets like follows)\n */\n name?: string;\n\n /**\n * The text content of the target activity (for activity targets)\n */\n text?: string;\n\n /**\n * The type of the target activity (for activity targets)\n */\n type?: string;\n\n /**\n * The ID of the user who created the target activity (for activity targets)\n */\n user_id?: string;\n\n /**\n * Attachments on the target activity (for activity targets)\n */\n attachments?: Attachment[];\n\n comment?: NotificationComment;\n\n /**\n * Custom data from the target activity\n */\n custom?: Record<string, any>;\n\n parent_activity?: NotificationParentActivity;\n}\n\nexport interface NotificationTrigger {\n /**\n * Human-readable text describing the notification\n */\n text: string;\n\n /**\n * The type of notification (mention, reaction, comment, follow, etc.)\n */\n type: string;\n\n comment?: NotificationComment;\n\n /**\n * Custom data from the trigger object (comment, reaction, etc.)\n */\n custom?: Record<string, any>;\n}\n\nexport interface OCRRule {\n action:\n | 'flag'\n | 'shadow'\n | 'remove'\n | 'bounce'\n | 'bounce_flag'\n | 'bounce_remove';\n\n label: string;\n}\n\nexport interface OnlyUserID {\n id: string;\n}\n\nexport interface OwnBatchRequest {\n /**\n * List of feed IDs to get own fields for\n */\n feeds: string[];\n\n /**\n * Optional list of specific fields to return. If not specified, all fields (own_follows, own_followings, own_capabilities, own_membership) are returned\n */\n fields?: string[];\n}\n\nexport interface OwnBatchResponse {\n duration: string;\n\n /**\n * Map of feed ID to own fields data\n */\n data: Record<string, FeedOwnData>;\n}\n\nexport interface OwnUserResponse {\n banned: boolean;\n\n created_at: Date;\n\n id: string;\n\n invisible: boolean;\n\n language: string;\n\n online: boolean;\n\n role: string;\n\n total_unread_count: number;\n\n unread_channels: number;\n\n unread_count: number;\n\n unread_threads: number;\n\n updated_at: Date;\n\n channel_mutes: ChannelMute[];\n\n devices: DeviceResponse[];\n\n mutes: UserMuteResponse[];\n\n teams: string[];\n\n custom: Record<string, any>;\n\n avg_response_time?: number;\n\n deactivated_at?: Date;\n\n deleted_at?: Date;\n\n image?: string;\n\n last_active?: Date;\n\n name?: string;\n\n revoke_tokens_issued_before?: Date;\n\n blocked_user_ids?: string[];\n\n latest_hidden_channels?: string[];\n\n privacy_settings?: PrivacySettingsResponse;\n\n push_preferences?: PushPreferencesResponse;\n\n teams_role?: Record<string, string>;\n\n total_unread_count_by_team?: Record<string, number>;\n}\n\nexport interface PagerRequest {\n limit?: number;\n\n next?: string;\n\n prev?: string;\n}\n\nexport interface PagerResponse {\n next?: string;\n\n prev?: string;\n}\n\nexport interface PinActivityRequest {\n /**\n * If true, enriches the activity's current_feed with own_* fields (own_follows, own_followings, own_capabilities, own_membership). Defaults to false for performance.\n */\n enrich_own_fields?: boolean;\n}\n\nexport interface PinActivityResponse {\n /**\n * When the activity was pinned\n */\n created_at: Date;\n\n duration: string;\n\n /**\n * Fully qualified ID of the feed the activity was pinned to\n */\n feed: string;\n\n /**\n * ID of the user who pinned the activity\n */\n user_id: string;\n\n activity: ActivityResponse;\n}\n\nexport interface PollClosedFeedEvent {\n created_at: Date;\n\n fid: string;\n\n custom: Record<string, any>;\n\n poll: PollResponseData;\n\n type: string;\n\n feed_visibility?: string;\n\n received_at?: Date;\n}\n\nexport interface PollDeletedFeedEvent {\n created_at: Date;\n\n fid: string;\n\n custom: Record<string, any>;\n\n poll: PollResponseData;\n\n type: string;\n\n feed_visibility?: string;\n\n received_at?: Date;\n}\n\nexport interface PollOptionInput {\n text?: string;\n\n custom?: Record<string, any>;\n}\n\nexport interface PollOptionRequest {\n id: string;\n\n text?: string;\n\n custom?: Record<string, any>;\n}\n\nexport interface PollOptionResponse {\n /**\n * Duration of the request in milliseconds\n */\n duration: string;\n\n poll_option: PollOptionResponseData;\n}\n\nexport interface PollOptionResponseData {\n id: string;\n\n text: string;\n\n custom: Record<string, any>;\n}\n\nexport interface PollResponse {\n /**\n * Duration of the request in milliseconds\n */\n duration: string;\n\n poll: PollResponseData;\n}\n\nexport interface PollResponseData {\n allow_answers: boolean;\n\n allow_user_suggested_options: boolean;\n\n answers_count: number;\n\n created_at: Date;\n\n created_by_id: string;\n\n description: string;\n\n enforce_unique_vote: boolean;\n\n id: string;\n\n name: string;\n\n updated_at: Date;\n\n vote_count: number;\n\n voting_visibility: string;\n\n latest_answers: PollVoteResponseData[];\n\n options: PollOptionResponseData[];\n\n own_votes: PollVoteResponseData[];\n\n custom: Record<string, any>;\n\n latest_votes_by_option: Record<string, PollVoteResponseData[]>;\n\n vote_counts_by_option: Record<string, number>;\n\n is_closed?: boolean;\n\n max_votes_allowed?: number;\n\n created_by?: UserResponse;\n}\n\nexport interface PollUpdatedFeedEvent {\n created_at: Date;\n\n fid: string;\n\n custom: Record<string, any>;\n\n poll: PollResponseData;\n\n type: string;\n\n feed_visibility?: string;\n\n received_at?: Date;\n}\n\nexport interface PollVoteCastedFeedEvent {\n created_at: Date;\n\n fid: string;\n\n custom: Record<string, any>;\n\n poll: PollResponseData;\n\n poll_vote: PollVoteResponseData;\n\n type: string;\n\n feed_visibility?: string;\n\n received_at?: Date;\n}\n\nexport interface PollVoteChangedFeedEvent {\n created_at: Date;\n\n fid: string;\n\n custom: Record<string, any>;\n\n poll: PollResponseData;\n\n poll_vote: PollVoteResponseData;\n\n type: string;\n\n feed_visibility?: string;\n\n received_at?: Date;\n}\n\nexport interface PollVoteRemovedFeedEvent {\n created_at: Date;\n\n fid: string;\n\n custom: Record<string, any>;\n\n poll: PollResponseData;\n\n poll_vote: PollVoteResponseData;\n\n type: string;\n\n feed_visibility?: string;\n\n received_at?: Date;\n}\n\nexport interface PollVoteResponse {\n /**\n * Duration of the request in milliseconds\n */\n duration: string;\n\n poll?: PollResponseData;\n\n vote?: PollVoteResponseData;\n}\n\nexport interface PollVoteResponseData {\n created_at: Date;\n\n id: string;\n\n option_id: string;\n\n poll_id: string;\n\n updated_at: Date;\n\n answer_text?: string;\n\n is_answer?: boolean;\n\n user_id?: string;\n\n user?: UserResponse;\n}\n\nexport interface PollVotesResponse {\n /**\n * Duration of the request in milliseconds\n */\n duration: string;\n\n /**\n * Poll votes\n */\n votes: PollVoteResponseData[];\n\n next?: string;\n\n prev?: string;\n}\n\nexport interface PrivacySettingsResponse {\n delivery_receipts?: DeliveryReceiptsResponse;\n\n read_receipts?: ReadReceiptsResponse;\n\n typing_indicators?: TypingIndicatorsResponse;\n}\n\nexport interface PushNotificationConfig {\n enable_push?: boolean;\n\n push_types?: string[];\n}\n\nexport interface PushPreferenceInput {\n /**\n * Set the level of call push notifications for the user. One of: all, none, default\n */\n\n call_level?: 'all' | 'none' | 'default';\n\n /**\n * Set the push preferences for a specific channel. If empty it sets the default for the user\n */\n channel_cid?: string;\n\n /**\n * Set the level of chat push notifications for the user. Note: \"mentions\" is deprecated in favor of \"direct_mentions\". One of: all, mentions, direct_mentions, all_mentions, none, default\n */\n\n chat_level?:\n | 'all'\n | 'mentions'\n | 'direct_mentions'\n | 'all_mentions'\n | 'none'\n | 'default';\n\n /**\n * Disable push notifications till a certain time\n */\n disabled_until?: Date;\n\n /**\n * Set the level of feeds push notifications for the user. One of: all, none, default\n */\n\n feeds_level?: 'all' | 'none' | 'default';\n\n /**\n * Remove the disabled until time. (IE stop snoozing notifications)\n */\n remove_disable?: boolean;\n\n /**\n * The user id for which to set the push preferences. Required when using server side auths, defaults to current user with client side auth.\n */\n user_id?: string;\n\n chat_preferences?: ChatPreferencesInput;\n\n feeds_preferences?: FeedsPreferences;\n}\n\nexport interface PushPreferencesResponse {\n call_level?: string;\n\n chat_level?: string;\n\n disabled_until?: Date;\n\n feeds_level?: string;\n\n chat_preferences?: ChatPreferencesResponse;\n\n feeds_preferences?: FeedsPreferencesResponse;\n}\n\nexport interface QueryActivitiesRequest {\n enrich_own_fields?: boolean;\n\n include_soft_deleted_activities?: boolean;\n\n limit?: number;\n\n next?: string;\n\n prev?: string;\n\n /**\n * Sorting parameters for the query\n */\n sort?: SortParamRequest[];\n\n /**\n * Filters to apply to the query. Supports location-based queries with 'near' and 'within_bounds' operators.\n */\n filter?: Record<string, any>;\n}\n\nexport interface QueryActivitiesResponse {\n duration: string;\n\n /**\n * List of activities matching the query\n */\n activities: ActivityResponse[];\n\n /**\n * Cursor for next page\n */\n next?: string;\n\n /**\n * Cursor for previous page\n */\n prev?: string;\n}\n\nexport interface QueryActivityReactionsRequest {\n limit?: number;\n\n next?: string;\n\n prev?: string;\n\n sort?: SortParamRequest[];\n\n filter?: Record<string, any>;\n}\n\nexport interface QueryActivityReactionsResponse {\n /**\n * Duration of the request in milliseconds\n */\n duration: string;\n\n reactions: FeedsReactionResponse[];\n\n next?: string;\n\n prev?: string;\n}\n\nexport interface QueryAppealsRequest {\n limit?: number;\n\n next?: string;\n\n prev?: string;\n\n /**\n * Sorting parameters for appeals\n */\n sort?: SortParamRequest[];\n\n /**\n * Filter conditions for appeals\n */\n filter?: Record<string, any>;\n}\n\nexport interface QueryAppealsResponse {\n duration: string;\n\n /**\n * List of Appeal Items\n */\n items: AppealItemResponse[];\n\n next?: string;\n\n prev?: string;\n}\n\nexport interface QueryBookmarkFoldersRequest {\n limit?: number;\n\n next?: string;\n\n prev?: string;\n\n /**\n * Sorting parameters for the query\n */\n sort?: SortParamRequest[];\n\n /**\n * Filters to apply to the query\n */\n filter?: Record<string, any>;\n}\n\nexport interface QueryBookmarkFoldersResponse {\n duration: string;\n\n /**\n * List of bookmark folders matching the query\n */\n bookmark_folders: BookmarkFolderResponse[];\n\n /**\n * Cursor for next page\n */\n next?: string;\n\n /**\n * Cursor for previous page\n */\n prev?: string;\n}\n\nexport interface QueryBookmarksRequest {\n enrich_own_fields?: boolean;\n\n limit?: number;\n\n next?: string;\n\n prev?: string;\n\n /**\n * Sorting parameters for the query\n */\n sort?: SortParamRequest[];\n\n /**\n * Filters to apply to the query\n */\n filter?: Record<string, any>;\n}\n\nexport interface QueryBookmarksResponse {\n duration: string;\n\n /**\n * List of bookmarks matching the query\n */\n bookmarks: BookmarkResponse[];\n\n /**\n * Cursor for next page\n */\n next?: string;\n\n /**\n * Cursor for previous page\n */\n prev?: string;\n}\n\nexport interface QueryCollectionsRequest {\n limit?: number;\n\n next?: string;\n\n prev?: string;\n\n /**\n * Sorting parameters for the query\n */\n sort?: SortParamRequest[];\n\n /**\n * Filters to apply to the query\n */\n filter?: Record<string, any>;\n}\n\nexport interface QueryCollectionsResponse {\n duration: string;\n\n /**\n * List of collections matching the query\n */\n collections: CollectionResponse[];\n\n /**\n * Cursor for next page\n */\n next?: string;\n\n /**\n * Cursor for previous page\n */\n prev?: string;\n}\n\nexport interface QueryCommentReactionsRequest {\n limit?: number;\n\n next?: string;\n\n prev?: string;\n\n sort?: SortParamRequest[];\n\n filter?: Record<string, any>;\n}\n\nexport interface QueryCommentReactionsResponse {\n /**\n * Duration of the request in milliseconds\n */\n duration: string;\n\n reactions: FeedsReactionResponse[];\n\n next?: string;\n\n prev?: string;\n}\n\nexport interface QueryCommentsRequest {\n /**\n * MongoDB-style filter for querying comments\n */\n filter: Record<string, any>;\n\n /**\n * Returns the comment with the specified ID along with surrounding comments for context\n */\n id_around?: string;\n\n /**\n * Maximum number of comments to return\n */\n limit?: number;\n\n next?: string;\n\n prev?: string;\n\n /**\n * first (oldest), last (newest) or top. One of: first, last, top, best, controversial\n */\n\n sort?: 'first' | 'last' | 'top' | 'best' | 'controversial';\n}\n\nexport interface QueryCommentsResponse {\n duration: string;\n\n /**\n * List of comments matching the query\n */\n comments: CommentResponse[];\n\n /**\n * Cursor for next page\n */\n next?: string;\n\n /**\n * Cursor for previous page\n */\n prev?: string;\n}\n\nexport interface QueryFeedMembersRequest {\n limit?: number;\n\n next?: string;\n\n prev?: string;\n\n /**\n * Sort parameters for the query\n */\n sort?: SortParamRequest[];\n\n /**\n * Filter parameters for the query\n */\n filter?: Record<string, any>;\n}\n\nexport interface QueryFeedMembersResponse {\n duration: string;\n\n /**\n * List of feed members\n */\n members: FeedMemberResponse[];\n\n /**\n * Cursor for next page\n */\n next?: string;\n\n /**\n * Cursor for previous page\n */\n prev?: string;\n}\n\nexport interface QueryFeedsRequest {\n enrich_own_fields?: boolean;\n\n limit?: number;\n\n next?: string;\n\n prev?: string;\n\n /**\n * Whether to subscribe to realtime updates\n */\n watch?: boolean;\n\n /**\n * Sorting parameters for the query\n */\n sort?: SortParamRequest[];\n\n /**\n * Filters to apply to the query\n */\n filter?: Record<string, any>;\n}\n\nexport interface QueryFeedsResponse {\n duration: string;\n\n /**\n * List of feeds matching the query\n */\n feeds: FeedResponse[];\n\n /**\n * Cursor for next page\n */\n next?: string;\n\n /**\n * Cursor for previous page\n */\n prev?: string;\n}\n\nexport interface QueryFollowsRequest {\n limit?: number;\n\n next?: string;\n\n prev?: string;\n\n /**\n * Sorting parameters for the query\n */\n sort?: SortParamRequest[];\n\n /**\n * Filters to apply to the query\n */\n filter?: Record<string, any>;\n}\n\nexport interface QueryFollowsResponse {\n duration: string;\n\n /**\n * List of follow relationships matching the query\n */\n follows: FollowResponse[];\n\n /**\n * Cursor for next page\n */\n next?: string;\n\n /**\n * Cursor for previous page\n */\n prev?: string;\n}\n\nexport interface QueryModerationConfigsRequest {\n limit?: number;\n\n next?: string;\n\n prev?: string;\n\n /**\n * Sorting parameters for the results\n */\n sort?: SortParamRequest[];\n\n /**\n * Filter conditions for moderation configs\n */\n filter?: Record<string, any>;\n}\n\nexport interface QueryModerationConfigsResponse {\n duration: string;\n\n /**\n * List of moderation configurations\n */\n configs: ConfigResponse[];\n\n next?: string;\n\n prev?: string;\n}\n\nexport interface QueryPinnedActivitiesRequest {\n enrich_own_fields?: boolean;\n\n limit?: number;\n\n next?: string;\n\n prev?: string;\n\n /**\n * Sorting parameters for the query\n */\n sort?: SortParamRequest[];\n\n /**\n * Filters to apply to the query\n */\n filter?: Record<string, any>;\n}\n\nexport interface QueryPinnedActivitiesResponse {\n duration: string;\n\n /**\n * List of pinned activities matching the query\n */\n pinned_activities: ActivityPinResponse[];\n\n /**\n * Cursor for next page\n */\n next?: string;\n\n /**\n * Cursor for previous page\n */\n prev?: string;\n}\n\nexport interface QueryPollVotesRequest {\n limit?: number;\n\n next?: string;\n\n prev?: string;\n\n /**\n * Array of sort parameters\n */\n sort?: SortParamRequest[];\n\n /**\n * Filter to apply to the query\n */\n filter?: Record<string, any>;\n}\n\nexport interface QueryPollsRequest {\n limit?: number;\n\n next?: string;\n\n prev?: string;\n\n /**\n * Array of sort parameters\n */\n sort?: SortParamRequest[];\n\n /**\n * Filter to apply to the query\n */\n filter?: Record<string, any>;\n}\n\nexport interface QueryPollsResponse {\n /**\n * Duration of the request in milliseconds\n */\n duration: string;\n\n /**\n * Polls data returned by the query\n */\n polls: PollResponseData[];\n\n next?: string;\n\n prev?: string;\n}\n\nexport interface QueryReviewQueueRequest {\n limit?: number;\n\n /**\n * Number of items to lock (1-25)\n */\n lock_count?: number;\n\n /**\n * Duration for which items should be locked\n */\n lock_duration?: number;\n\n /**\n * Whether to lock items for review (true), unlock items (false), or just fetch (nil)\n */\n lock_items?: boolean;\n\n next?: string;\n\n prev?: string;\n\n /**\n * Whether to return only statistics\n */\n stats_only?: boolean;\n\n /**\n * Sorting parameters for the results\n */\n sort?: SortParamRequest[];\n\n /**\n * Filter conditions for review queue items\n */\n filter?: Record<string, any>;\n}\n\nexport interface QueryReviewQueueResponse {\n duration: string;\n\n /**\n * List of review queue items\n */\n items: ReviewQueueItemResponse[];\n\n /**\n * Configuration for moderation actions\n */\n action_config: Record<string, ModerationActionConfigResponse[]>;\n\n /**\n * Statistics about the review queue\n */\n stats: Record<string, any>;\n\n next?: string;\n\n prev?: string;\n\n filter_config?: FilterConfigResponse;\n}\n\nexport interface QueryUsersPayload {\n filter_conditions: Record<string, any>;\n\n include_deactivated_users?: boolean;\n\n limit?: number;\n\n offset?: number;\n\n presence?: boolean;\n\n sort?: SortParamRequest[];\n}\n\nexport interface QueryUsersResponse {\n /**\n * Duration of the request in milliseconds\n */\n duration: string;\n\n /**\n * Array of users as result of filters applied.\n */\n users: FullUserResponse[];\n}\n\nexport interface RTMPIngress {\n address: string;\n}\n\nexport interface RTMPSettingsResponse {\n enabled: boolean;\n\n quality: string;\n\n layout: LayoutSettingsResponse;\n}\n\nexport interface RankingConfig {\n score?: string;\n\n type?: string;\n\n defaults?: Record<string, any>;\n\n functions?: Record<string, DecayFunctionConfig>;\n}\n\nexport interface RawRecordingResponse {\n status: string;\n}\n\nexport interface RawRecordingSettingsResponse {\n mode: string;\n}\n\nexport interface Reaction {\n activity_id: string;\n\n created_at: Date;\n\n kind: string;\n\n updated_at: Date;\n\n user_id: string;\n\n deleted_at?: Date;\n\n id?: string;\n\n parent?: string;\n\n score?: number;\n\n target_feeds?: string[];\n\n children_counts?: Record<string, any>;\n\n data?: Record<string, any>;\n\n latest_children?: Record<string, Reaction[]>;\n\n moderation?: Record<string, any>;\n\n own_children?: Record<string, Reaction[]>;\n\n target_feeds_extra_data?: Record<string, any>;\n\n user?: User;\n}\n\nexport interface ReactionGroupResponse {\n /**\n * Count is the number of reactions of this type.\n */\n count: number;\n\n /**\n * FirstReactionAt is the time of the first reaction of this type. This is the same also if all reaction of this type are deleted, because if someone will react again with the same type, will be preserved the sorting.\n */\n first_reaction_at: Date;\n\n /**\n * LastReactionAt is the time of the last reaction of this type.\n */\n last_reaction_at: Date;\n\n /**\n * SumScores is the sum of all scores of reactions of this type. Medium allows you to clap articles more than once and shows the sum of all claps from all users. For example, you can send `clap` x5 using `score: 5`.\n */\n sum_scores: number;\n\n /**\n * The most recent users who reacted with this type, ordered by most recent first.\n */\n latest_reactions_by: ReactionGroupUserResponse[];\n}\n\nexport interface ReactionGroupUserResponse {\n /**\n * The time when the user reacted.\n */\n created_at: Date;\n\n /**\n * The ID of the user who reacted.\n */\n user_id: string;\n\n user?: UserResponse;\n}\n\nexport interface ReactionResponse {\n /**\n * Date/time of creation\n */\n created_at: Date;\n\n /**\n * Message ID\n */\n message_id: string;\n\n /**\n * Score of the reaction\n */\n score: number;\n\n /**\n * Type of reaction\n */\n type: string;\n\n /**\n * Date/time of the last update\n */\n updated_at: Date;\n\n /**\n * User ID\n */\n user_id: string;\n\n /**\n * Custom data for this object\n */\n custom: Record<string, any>;\n\n user: UserResponse;\n}\n\nexport interface ReadCollectionsResponse {\n duration: string;\n\n /**\n * List of collections matching the references\n */\n collections: CollectionResponse[];\n}\n\nexport interface ReadReceiptsResponse {\n enabled: boolean;\n}\n\nexport interface RecordSettingsResponse {\n audio_only: boolean;\n\n mode: string;\n\n quality: string;\n\n layout: LayoutSettingsResponse;\n}\n\nexport interface RejectAppealRequestPayload {\n /**\n * Reason for rejecting the appeal\n */\n decision_reason: string;\n}\n\nexport interface RejectFeedMemberInviteRequest {}\n\nexport interface RejectFeedMemberInviteResponse {\n duration: string;\n\n member: FeedMemberResponse;\n}\n\nexport interface RejectFollowRequest {\n /**\n * Fully qualified ID of the source feed\n */\n source: string;\n\n /**\n * Fully qualified ID of the target feed\n */\n target: string;\n}\n\nexport interface RejectFollowResponse {\n duration: string;\n\n follow: FollowResponse;\n}\n\nexport interface ReminderResponseData {\n channel_cid: string;\n\n created_at: Date;\n\n message_id: string;\n\n updated_at: Date;\n\n user_id: string;\n\n remind_at?: Date;\n\n channel?: ChannelResponse;\n\n message?: MessageResponse;\n\n user?: UserResponse;\n}\n\nexport interface RemoveUserGroupMembersRequest {\n /**\n * List of user IDs to remove\n */\n member_ids: string[];\n\n team_id?: string;\n}\n\nexport interface RemoveUserGroupMembersResponse {\n duration: string;\n\n user_group?: UserGroupResponse;\n}\n\nexport interface RepliesMeta {\n /**\n * True if the subtree was cut because the requested depth was reached.\n */\n depth_truncated: boolean;\n\n /**\n * True if more siblings exist in the database.\n */\n has_more: boolean;\n\n /**\n * Number of unread siblings that match current filters.\n */\n remaining: number;\n\n /**\n * Opaque cursor to request the next page of siblings.\n */\n next_cursor?: string;\n}\n\nexport interface Response {\n /**\n * Duration of the request in milliseconds\n */\n duration: string;\n}\n\nexport interface RestoreActionRequestPayload {\n /**\n * Reason for the appeal decision\n */\n decision_reason?: string;\n}\n\nexport interface RestoreActivityRequest {}\n\nexport interface RestoreActivityResponse {\n duration: string;\n\n activity: ActivityResponse;\n}\n\nexport interface RestoreCommentRequest {}\n\nexport interface RestoreCommentResponse {\n duration: string;\n\n activity: ActivityResponse;\n\n comment: CommentResponse;\n}\n\nexport interface ReviewQueueItemResponse {\n /**\n * AI-determined text severity\n */\n ai_text_severity: string;\n\n /**\n * When the item was created\n */\n created_at: Date;\n\n /**\n * ID of the entity being reviewed\n */\n entity_id: string;\n\n /**\n * Type of entity being reviewed\n */\n entity_type: string;\n\n flags_count: number;\n\n /**\n * Unique identifier of the review queue item\n */\n id: string;\n\n latest_moderator_action: string;\n\n /**\n * Suggested moderation action\n */\n recommended_action: string;\n\n /**\n * ID of the moderator who reviewed the item\n */\n reviewed_by: string;\n\n /**\n * Severity level of the content\n */\n severity: number;\n\n /**\n * Current status of the review\n */\n status: string;\n\n /**\n * When the item was last updated\n */\n updated_at: Date;\n\n /**\n * Moderation actions taken\n */\n actions: ActionLogResponse[];\n\n /**\n * Associated ban records\n */\n bans: BanInfoResponse[];\n\n /**\n * Associated flag records\n */\n flags: ModerationFlagResponse[];\n\n /**\n * Detected languages in the content\n */\n languages: string[];\n\n /**\n * When the review was completed\n */\n completed_at?: Date;\n\n config_key?: string;\n\n /**\n * ID of who created the entity\n */\n entity_creator_id?: string;\n\n /**\n * When the item was reviewed\n */\n reviewed_at?: Date;\n\n /**\n * Teams associated with this item\n */\n teams?: string[];\n\n activity?: EnrichedActivity;\n\n appeal?: AppealItemResponse;\n\n assigned_to?: UserResponse;\n\n call?: CallResponse;\n\n entity_creator?: EntityCreatorResponse;\n\n feeds_v2_activity?: EnrichedActivity;\n\n feeds_v2_reaction?: Reaction;\n\n feeds_v3_activity?: FeedsV3ActivityResponse;\n\n feeds_v3_comment?: FeedsV3CommentResponse;\n\n message?: MessageResponse;\n\n moderation_payload?: ModerationPayloadResponse;\n\n reaction?: Reaction;\n}\n\nexport interface RingSettingsResponse {\n auto_cancel_timeout_ms: number;\n\n incoming_call_timeout_ms: number;\n\n missed_call_timeout_ms: number;\n}\n\nexport interface RuleBuilderAction {\n skip_inbox?: boolean;\n\n type?:\n | 'ban_user'\n | 'flag_user'\n | 'flag_content'\n | 'block_content'\n | 'shadow_content'\n | 'bounce_flag_content'\n | 'bounce_content'\n | 'bounce_remove_content'\n | 'mute_video'\n | 'mute_audio'\n | 'blur'\n | 'call_blur'\n | 'end_call'\n | 'kick_user'\n | 'warning'\n | 'call_warning'\n | 'webhook_only';\n\n ban_options?: BanOptions;\n\n call_options?: CallActionOptions;\n\n flag_user_options?: FlagUserOptions;\n}\n\nexport interface RuleBuilderCondition {\n confidence?: number;\n\n type?: string;\n\n call_custom_property_params?: CallCustomPropertyParameters;\n\n call_type_rule_params?: CallTypeRuleParameters;\n\n call_violation_count_params?: CallViolationCountParameters;\n\n closed_caption_rule_params?: ClosedCaptionRuleParameters;\n\n content_count_rule_params?: ContentCountRuleParameters;\n\n content_flag_count_rule_params?: FlagCountRuleParameters;\n\n image_content_params?: ImageContentParameters;\n\n image_rule_params?: ImageRuleParameters;\n\n keyframe_rule_params?: KeyframeRuleParameters;\n\n text_content_params?: TextContentParameters;\n\n text_rule_params?: TextRuleParameters;\n\n user_created_within_params?: UserCreatedWithinParameters;\n\n user_custom_property_params?: UserCustomPropertyParameters;\n\n user_flag_count_rule_params?: FlagCountRuleParameters;\n\n user_identical_content_count_params?: UserIdenticalContentCountParameters;\n\n user_role_params?: UserRoleParameters;\n\n user_rule_params?: UserRuleParameters;\n\n video_content_params?: VideoContentParameters;\n\n video_rule_params?: VideoRuleParameters;\n}\n\nexport interface RuleBuilderConditionGroup {\n logic?: string;\n\n conditions?: RuleBuilderCondition[];\n}\n\nexport interface RuleBuilderConfig {\n async?: boolean;\n\n rules?: RuleBuilderRule[];\n}\n\nexport interface RuleBuilderRule {\n rule_type: string;\n\n cooldown_period?: string;\n\n id?: string;\n\n logic?: string;\n\n action_sequences?: CallRuleActionSequence[];\n\n conditions?: RuleBuilderCondition[];\n\n groups?: RuleBuilderConditionGroup[];\n\n action?: RuleBuilderAction;\n}\n\nexport interface SRTIngress {\n address: string;\n}\n\nexport interface ScreensharingSettingsResponse {\n access_request_enabled: boolean;\n\n enabled: boolean;\n\n target_resolution?: TargetResolution;\n}\n\nexport interface SearchUserGroupsResponse {\n duration: string;\n\n /**\n * List of matching user groups\n */\n user_groups: UserGroupResponse[];\n}\n\nexport interface SessionSettingsResponse {\n inactivity_timeout_seconds: number;\n}\n\nexport interface ShadowBlockActionRequestPayload {\n /**\n * Reason for shadow blocking\n */\n reason?: string;\n}\n\nexport interface SharedLocationResponse {\n /**\n * Channel CID\n */\n channel_cid: string;\n\n /**\n * Date/time of creation\n */\n created_at: Date;\n\n /**\n * Device ID that created the live location\n */\n created_by_device_id: string;\n\n duration: string;\n\n /**\n * Latitude coordinate\n */\n latitude: number;\n\n /**\n * Longitude coordinate\n */\n longitude: number;\n\n /**\n * Message ID\n */\n message_id: string;\n\n /**\n * Date/time of the last update\n */\n updated_at: Date;\n\n /**\n * User ID\n */\n user_id: string;\n\n /**\n * Time when the live location expires\n */\n end_at?: Date;\n\n channel?: ChannelResponse;\n\n message?: MessageResponse;\n}\n\nexport interface SharedLocationResponseData {\n channel_cid: string;\n\n created_at: Date;\n\n created_by_device_id: string;\n\n latitude: number;\n\n longitude: number;\n\n message_id: string;\n\n updated_at: Date;\n\n user_id: string;\n\n end_at?: Date;\n\n channel?: ChannelResponse;\n\n message?: MessageResponse;\n}\n\nexport interface SharedLocationsResponse {\n duration: string;\n\n active_live_locations: SharedLocationResponseData[];\n}\n\nexport interface SingleFollowResponse {\n duration: string;\n\n follow: FollowResponse;\n\n /**\n * Whether a notification activity was successfully created\n */\n notification_created?: boolean;\n}\n\nexport interface SortParam {\n direction: number;\n\n field: string;\n\n type: string;\n}\n\nexport interface SortParamRequest {\n /**\n * Direction of sorting, 1 for Ascending, -1 for Descending, default is 1. One of: -1, 1\n */\n direction?: number;\n\n /**\n * Name of field to sort by\n */\n field?: string;\n\n /**\n * Type of field to sort by. Empty string or omitted means string type (default). One of: number, boolean\n */\n type?: string;\n}\n\nexport interface SpeechSegmentConfig {\n max_speech_caption_ms?: number;\n\n silence_duration_ms?: number;\n}\n\nexport interface StoriesConfig {\n skip_watched?: boolean;\n\n track_watched?: boolean;\n}\n\nexport interface StoriesFeedUpdatedEvent {\n /**\n * Date/time of creation\n */\n created_at: Date;\n\n /**\n * The ID of the feed\n */\n fid: string;\n\n custom: Record<string, any>;\n\n /**\n * The type of event: \"feeds.stories_feed.updated\" in this case\n */\n type: string;\n\n feed_visibility?: string;\n\n received_at?: Date;\n\n /**\n * Individual activities for stories feeds\n */\n activities?: ActivityResponse[];\n\n /**\n * Aggregated activities for stories feeds\n */\n aggregated_activities?: AggregatedActivityResponse[];\n\n user?: UserResponseCommonFields;\n}\n\nexport interface SubmitActionRequest {\n /**\n * Type of moderation action to perform. One of: mark_reviewed, delete_message, delete_activity, delete_comment, delete_reaction, ban, custom, unban, restore, delete_user, unblock, block, shadow_block, unmask, kick_user, end_call\n */\n\n action_type:\n | 'flag'\n | 'mark_reviewed'\n | 'delete_message'\n | 'delete_activity'\n | 'delete_comment'\n | 'delete_reaction'\n | 'ban'\n | 'custom'\n | 'unban'\n | 'restore'\n | 'delete_user'\n | 'unblock'\n | 'block'\n | 'shadow_block'\n | 'unmask'\n | 'kick_user'\n | 'end_call'\n | 'reject_appeal';\n\n /**\n * UUID of the appeal to act on (required for reject_appeal, optional for other actions)\n */\n appeal_id?: string;\n\n /**\n * UUID of the review queue item to act on\n */\n item_id?: string;\n\n ban?: BanActionRequestPayload;\n\n block?: BlockActionRequestPayload;\n\n custom?: CustomActionRequestPayload;\n\n delete_activity?: DeleteActivityRequestPayload;\n\n delete_comment?: DeleteCommentRequestPayload;\n\n delete_message?: DeleteMessageRequestPayload;\n\n delete_reaction?: DeleteReactionRequestPayload;\n\n delete_user?: DeleteUserRequestPayload;\n\n flag?: FlagRequest;\n\n mark_reviewed?: MarkReviewedRequestPayload;\n\n reject_appeal?: RejectAppealRequestPayload;\n\n restore?: RestoreActionRequestPayload;\n\n shadow_block?: ShadowBlockActionRequestPayload;\n\n unban?: UnbanActionRequestPayload;\n\n unblock?: UnblockActionRequestPayload;\n}\n\nexport interface SubmitActionResponse {\n duration: string;\n\n appeal_item?: AppealItemResponse;\n\n item?: ReviewQueueItemResponse;\n}\n\nexport interface TargetResolution {\n bitrate: number;\n\n height: number;\n\n width: number;\n}\n\nexport interface TextContentParameters {\n contains_url?: boolean;\n\n label_operator?: string;\n\n severity?: string;\n\n blocklist_match?: string[];\n\n harm_labels?: string[];\n\n llm_harm_labels?: Record<string, string>;\n}\n\nexport interface TextRuleParameters {\n contains_url?: boolean;\n\n semantic_filter_min_threshold?: number;\n\n severity?: string;\n\n threshold?: number;\n\n time_window?: string;\n\n blocklist_match?: string[];\n\n harm_labels?: string[];\n\n semantic_filter_names?: string[];\n\n llm_harm_labels?: Record<string, string>;\n}\n\nexport interface ThreadedCommentResponse {\n confidence_score: number;\n\n created_at: Date;\n\n downvote_count: number;\n\n id: string;\n\n object_id: string;\n\n object_type: string;\n\n reaction_count: number;\n\n reply_count: number;\n\n score: number;\n\n /**\n * Status of the comment. One of: active, deleted, removed, hidden\n */\n\n status: 'active' | 'deleted' | 'removed' | 'hidden' | 'shadow_blocked';\n\n updated_at: Date;\n\n upvote_count: number;\n\n mentioned_users: UserResponse[];\n\n own_reactions: FeedsReactionResponse[];\n\n user: UserResponse;\n\n controversy_score?: number;\n\n deleted_at?: Date;\n\n edited_at?: Date;\n\n parent_id?: string;\n\n text?: string;\n\n attachments?: Attachment[];\n\n latest_reactions?: FeedsReactionResponse[];\n\n /**\n * Slice of nested comments (may be empty).\n */\n replies?: ThreadedCommentResponse[];\n\n custom?: Record<string, any>;\n\n meta?: RepliesMeta;\n\n moderation?: ModerationV2Response;\n\n reaction_groups?: Record<string, FeedsReactionGroupResponse>;\n}\n\nexport interface Thresholds {\n explicit?: LabelThresholds;\n\n spam?: LabelThresholds;\n\n toxic?: LabelThresholds;\n}\n\nexport interface ThumbnailResponse {\n image_url: string;\n}\n\nexport interface ThumbnailsSettingsResponse {\n enabled: boolean;\n}\n\nexport interface Time {}\n\nexport interface Timestamp {\n time?: Date;\n}\n\nexport interface TrackActivityMetricsEvent {\n /**\n * The ID of the activity to track the metric for\n */\n activity_id: string;\n\n /**\n * The metric name (e.g. views, clicks, impressions). Alphanumeric and underscores only.\n */\n metric: string;\n\n /**\n * The amount to increment (positive) or decrement (negative). Defaults to 1. The absolute value counts against rate limits.\n */\n delta?: number;\n}\n\nexport interface TrackActivityMetricsEventResult {\n /**\n * The activity ID from the request\n */\n activity_id: string;\n\n /**\n * Whether the metric was counted (false if rate-limited)\n */\n allowed: boolean;\n\n /**\n * The metric name from the request\n */\n metric: string;\n\n /**\n * Error message if processing failed\n */\n error?: string;\n}\n\nexport interface TrackActivityMetricsRequest {\n /**\n * List of metric events to track (max 100 per request)\n */\n events: TrackActivityMetricsEvent[];\n}\n\nexport interface TrackActivityMetricsResponse {\n duration: string;\n\n /**\n * Results for each event in the request, in the same order\n */\n results: TrackActivityMetricsEventResult[];\n}\n\nexport interface TranscriptionSettingsResponse {\n closed_caption_mode: string;\n\n language: string;\n\n mode: string;\n\n speech_segment_config?: SpeechSegmentConfig;\n\n translation?: TranslationSettings;\n}\n\nexport interface TranslationSettings {\n enabled: boolean;\n\n languages: string[];\n}\n\nexport interface TypingIndicatorsResponse {\n enabled: boolean;\n}\n\nexport interface UnbanActionRequestPayload {\n /**\n * Channel CID for channel-specific unban\n */\n channel_cid?: string;\n\n /**\n * Reason for the appeal decision\n */\n decision_reason?: string;\n}\n\nexport interface UnblockActionRequestPayload {\n /**\n * Reason for the appeal decision\n */\n decision_reason?: string;\n}\n\nexport interface UnblockUsersRequest {\n blocked_user_id: string;\n}\n\nexport interface UnblockUsersResponse {\n /**\n * Duration of the request in milliseconds\n */\n duration: string;\n}\n\nexport interface UnfollowBatchRequest {\n /**\n * List of follow relationships to remove, each with optional keep_history\n */\n follows: UnfollowPair[];\n\n /**\n * Whether to delete the corresponding notification activity (default: false)\n */\n delete_notification_activity?: boolean;\n\n /**\n * If true, enriches the follow's source_feed and target_feed with own_* fields (own_follows, own_followings, own_capabilities, own_membership). Defaults to false for performance.\n */\n enrich_own_fields?: boolean;\n}\n\nexport interface UnfollowBatchResponse {\n duration: string;\n\n /**\n * List of follow relationships that were removed\n */\n follows: FollowResponse[];\n}\n\nexport interface UnfollowPair {\n /**\n * Fully qualified ID of the source feed\n */\n source: string;\n\n /**\n * Fully qualified ID of the target feed\n */\n target: string;\n\n /**\n * When true, activities from the unfollowed feed will remain in the source feed's timeline (default: false)\n */\n keep_history?: boolean;\n}\n\nexport interface UnfollowResponse {\n duration: string;\n\n follow: FollowResponse;\n}\n\nexport interface UnpinActivityResponse {\n duration: string;\n\n /**\n * Fully qualified ID of the feed the activity was unpinned from\n */\n feed: string;\n\n /**\n * ID of the user who unpinned the activity\n */\n user_id: string;\n\n activity: ActivityResponse;\n}\n\nexport interface UpdateActivityPartialRequest {\n /**\n * @deprecated\n * Deprecated: use notification_context.trigger.custom and notification_context.target.custom instead\n */\n copy_custom_to_notification?: boolean;\n\n /**\n * If true, enriches the activity's current_feed with own_* fields (own_follows, own_followings, own_capabilities, own_membership). Defaults to false for performance.\n */\n enrich_own_fields?: boolean;\n\n /**\n * If true, creates notification activities for newly mentioned users and deletes notifications for users no longer mentioned\n */\n handle_mention_notifications?: boolean;\n\n /**\n * If true, runs activity processors on the updated activity. Processors will only run if the activity text and/or attachments are changed. Defaults to false.\n */\n run_activity_processors?: boolean;\n\n /**\n * List of field names to remove. Supported fields: 'custom', 'visibility_tag', 'location', 'expires_at', 'filter_tags', 'interest_tags', 'attachments', 'poll_id', 'mentioned_user_ids', 'search_data'. Use dot-notation for nested custom fields (e.g., 'custom.field_name')\n */\n unset?: string[];\n\n /**\n * Map of field names to new values. Supported fields: 'text', 'attachments', 'custom', 'visibility', 'visibility_tag', 'restrict_replies' (values: 'everyone', 'people_i_follow', 'nobody'), 'location', 'expires_at', 'filter_tags', 'interest_tags', 'poll_id', 'feeds', 'mentioned_user_ids', 'search_data'. For custom fields, use dot-notation (e.g., 'custom.field_name')\n */\n set?: Record<string, any>;\n}\n\nexport interface UpdateActivityPartialResponse {\n duration: string;\n\n activity: ActivityResponse;\n}\n\nexport interface UpdateActivityRequest {\n /**\n * @deprecated\n * Deprecated: use notification_context.trigger.custom and notification_context.target.custom instead\n */\n copy_custom_to_notification?: boolean;\n\n /**\n * If true, enriches the activity's current_feed with own_* fields (own_follows, own_followings, own_capabilities, own_membership). Defaults to false for performance.\n */\n enrich_own_fields?: boolean;\n\n /**\n * Time when the activity will expire\n */\n expires_at?: Date;\n\n /**\n * If true, creates notification activities for newly mentioned users and deletes notifications for users no longer mentioned\n */\n handle_mention_notifications?: boolean;\n\n /**\n * Poll ID\n */\n poll_id?: string;\n\n /**\n * Controls who can add comments/replies to this activity. One of: everyone, people_i_follow, nobody\n */\n\n restrict_replies?: 'everyone' | 'people_i_follow' | 'nobody';\n\n /**\n * If true, runs activity processors on the updated activity. Processors will only run if the activity text and/or attachments are changed. Defaults to false.\n */\n run_activity_processors?: boolean;\n\n /**\n * Whether to skip URL enrichment for the activity\n */\n skip_enrich_url?: boolean;\n\n /**\n * The text content of the activity\n */\n text?: string;\n\n /**\n * Visibility setting for the activity\n */\n\n visibility?: 'public' | 'private' | 'tag';\n\n /**\n * If visibility is 'tag', this is the tag name and is required\n */\n visibility_tag?: string;\n\n /**\n * List of attachments for the activity\n */\n attachments?: Attachment[];\n\n /**\n * Collections that this activity references\n */\n collection_refs?: string[];\n\n /**\n * List of feeds the activity is present in\n */\n feeds?: string[];\n\n /**\n * Tags used for filtering the activity\n */\n filter_tags?: string[];\n\n /**\n * Tags indicating interest categories\n */\n interest_tags?: string[];\n\n /**\n * List of user IDs mentioned in the activity\n */\n mentioned_user_ids?: string[];\n\n /**\n * Custom data for the activity\n */\n custom?: Record<string, any>;\n\n location?: ActivityLocation;\n\n /**\n * Additional data for search indexing\n */\n search_data?: Record<string, any>;\n}\n\nexport interface UpdateActivityResponse {\n duration: string;\n\n activity: ActivityResponse;\n}\n\nexport interface UpdateBlockListRequest {\n is_leet_check_enabled?: boolean;\n\n is_plural_check_enabled?: boolean;\n\n team?: string;\n\n /**\n * List of words to block\n */\n words?: string[];\n}\n\nexport interface UpdateBlockListResponse {\n /**\n * Duration of the request in milliseconds\n */\n duration: string;\n\n blocklist?: BlockListResponse;\n}\n\nexport interface UpdateBookmarkFolderRequest {\n /**\n * Name of the folder\n */\n name?: string;\n\n /**\n * Custom data for the folder\n */\n custom?: Record<string, any>;\n}\n\nexport interface UpdateBookmarkFolderResponse {\n duration: string;\n\n bookmark_folder: BookmarkFolderResponse;\n}\n\nexport interface UpdateBookmarkRequest {\n /**\n * ID of the folder to move the bookmark to\n */\n folder_id?: string;\n\n new_folder_id?: string;\n\n /**\n * Custom data for the bookmark\n */\n custom?: Record<string, any>;\n\n new_folder?: AddFolderRequest;\n}\n\nexport interface UpdateBookmarkResponse {\n duration: string;\n\n bookmark: BookmarkResponse;\n}\n\nexport interface UpdateCollectionRequest {\n /**\n * Unique identifier for the collection within its name\n */\n id: string;\n\n /**\n * Name/type of the collection\n */\n name: string;\n\n /**\n * Custom data for the collection (required, must contain at least one key)\n */\n custom: Record<string, any>;\n}\n\nexport interface UpdateCollectionsRequest {\n /**\n * List of collections to update (only custom data is updatable)\n */\n collections: UpdateCollectionRequest[];\n}\n\nexport interface UpdateCollectionsResponse {\n duration: string;\n\n /**\n * List of updated collections\n */\n collections: CollectionResponse[];\n}\n\nexport interface UpdateCommentPartialRequest {\n /**\n * @deprecated\n * Deprecated: use notification_context.trigger.custom and notification_context.target.custom instead\n */\n copy_custom_to_notification?: boolean;\n\n /**\n * Whether to handle mention notification changes\n */\n handle_mention_notifications?: boolean;\n\n /**\n * Whether to skip URL enrichment\n */\n skip_enrich_url?: boolean;\n\n /**\n * Whether to skip push notifications\n */\n skip_push?: boolean;\n\n /**\n * List of field names to remove. Supported fields: 'custom', 'attachments', 'mentioned_user_ids', 'status'. Use dot-notation for nested custom fields (e.g., 'custom.field_name')\n */\n unset?: string[];\n\n /**\n * Map of field names to new values. Supported fields: 'text', 'attachments', 'custom', 'mentioned_user_ids', 'status'. Use dot-notation for nested custom fields (e.g., 'custom.field_name')\n */\n set?: Record<string, any>;\n}\n\nexport interface UpdateCommentPartialResponse {\n duration: string;\n\n comment: CommentResponse;\n}\n\nexport interface UpdateCommentRequest {\n /**\n * Updated text content of the comment\n */\n comment?: string;\n\n /**\n * @deprecated\n * Deprecated: use notification_context.trigger.custom and notification_context.target.custom instead\n */\n copy_custom_to_notification?: boolean;\n\n /**\n * If true, creates notification activities for newly mentioned users and deletes notifications for users no longer mentioned\n */\n handle_mention_notifications?: boolean;\n\n /**\n * Whether to skip URL enrichment for this comment\n */\n skip_enrich_url?: boolean;\n\n skip_push?: boolean;\n\n /**\n * Updated media attachments for the comment. Providing this field will replace all existing attachments.\n */\n attachments?: Attachment[];\n\n /**\n * List of user IDs mentioned in the comment\n */\n mentioned_user_ids?: string[];\n\n /**\n * Updated custom data for the comment\n */\n custom?: Record<string, any>;\n}\n\nexport interface UpdateCommentResponse {\n duration: string;\n\n comment: CommentResponse;\n}\n\nexport interface UpdateFeedMembersRequest {\n /**\n * Type of update operation to perform. One of: upsert, remove, set\n */\n\n operation: 'upsert' | 'remove' | 'set';\n\n limit?: number;\n\n next?: string;\n\n prev?: string;\n\n /**\n * List of members to upsert, remove, or set\n */\n members?: FeedMemberRequest[];\n}\n\nexport interface UpdateFeedMembersResponse {\n /**\n * Duration of the request in milliseconds\n */\n duration: string;\n\n added: FeedMemberResponse[];\n\n removed_ids: string[];\n\n updated: FeedMemberResponse[];\n}\n\nexport interface UpdateFeedRequest {\n /**\n * Description of the feed\n */\n description?: string;\n\n /**\n * If true, enriches the feed with own_* fields (own_follows, own_followings, own_capabilities, own_membership). Defaults to false for performance.\n */\n enrich_own_fields?: boolean;\n\n /**\n * Name of the feed\n */\n name?: string;\n\n /**\n * Tags used for filtering feeds\n */\n filter_tags?: string[];\n\n /**\n * Custom data for the feed\n */\n custom?: Record<string, any>;\n}\n\nexport interface UpdateFeedResponse {\n duration: string;\n\n feed: FeedResponse;\n}\n\nexport interface UpdateFollowRequest {\n /**\n * Fully qualified ID of the source feed\n */\n source: string;\n\n /**\n * Fully qualified ID of the target feed\n */\n target: string;\n\n /**\n * @deprecated\n * Deprecated: use notification_context.trigger.custom and notification_context.target.custom instead\n */\n copy_custom_to_notification?: boolean;\n\n /**\n * Whether to create a notification activity for this follow\n */\n create_notification_activity?: boolean;\n\n /**\n * If true, enriches the follow's source_feed and target_feed with own_* fields (own_follows, own_followings, own_capabilities, own_membership). Defaults to false for performance.\n */\n enrich_own_fields?: boolean;\n\n follower_role?: string;\n\n /**\n * Push preference for the follow relationship\n */\n\n push_preference?: 'all' | 'none';\n\n /**\n * Whether to skip push for this follow\n */\n skip_push?: boolean;\n\n /**\n * Custom data for the follow relationship\n */\n custom?: Record<string, any>;\n}\n\nexport interface UpdateFollowResponse {\n duration: string;\n\n follow: FollowResponse;\n}\n\nexport interface UpdateLiveLocationRequest {\n /**\n * Live location ID\n */\n message_id: string;\n\n /**\n * Time when the live location expires\n */\n end_at?: Date;\n\n /**\n * Latitude coordinate\n */\n latitude?: number;\n\n /**\n * Longitude coordinate\n */\n longitude?: number;\n}\n\nexport interface UpdatePollOptionRequest {\n /**\n * Option ID\n */\n id: string;\n\n /**\n * Option text\n */\n text: string;\n\n custom?: Record<string, any>;\n}\n\nexport interface UpdatePollPartialRequest {\n /**\n * Array of field names to unset\n */\n unset?: string[];\n\n /**\n * Sets new field values\n */\n set?: Record<string, any>;\n}\n\nexport interface UpdatePollRequest {\n /**\n * Poll ID\n */\n id: string;\n\n /**\n * Poll name\n */\n name: string;\n\n /**\n * Allow answers\n */\n allow_answers?: boolean;\n\n /**\n * Allow user suggested options\n */\n allow_user_suggested_options?: boolean;\n\n /**\n * Poll description\n */\n description?: string;\n\n /**\n * Enforce unique vote\n */\n enforce_unique_vote?: boolean;\n\n /**\n * Is closed\n */\n is_closed?: boolean;\n\n /**\n * Max votes allowed\n */\n max_votes_allowed?: number;\n\n /**\n * Voting visibility\n */\n\n voting_visibility?: 'anonymous' | 'public';\n\n /**\n * Poll options\n */\n options?: PollOptionRequest[];\n\n custom?: Record<string, any>;\n}\n\nexport interface UpdateUserGroupRequest {\n /**\n * The new description for the group\n */\n description?: string;\n\n /**\n * The new name of the user group\n */\n name?: string;\n\n team_id?: string;\n}\n\nexport interface UpdateUserGroupResponse {\n duration: string;\n\n user_group?: UserGroupResponse;\n}\n\nexport interface UpdateUserPartialRequest {\n /**\n * User ID to update\n */\n id: string;\n\n unset?: string[];\n\n set?: Record<string, any>;\n}\n\nexport interface UpdateUsersPartialRequest {\n users: UpdateUserPartialRequest[];\n}\n\nexport interface UpdateUsersRequest {\n /**\n * Object containing users\n */\n users: Record<string, UserRequest>;\n}\n\nexport interface UpdateUsersResponse {\n /**\n * Duration of the request in milliseconds\n */\n duration: string;\n\n membership_deletion_task_id: string;\n\n /**\n * Object containing users\n */\n users: Record<string, FullUserResponse>;\n}\n\nexport interface UpsertActivitiesRequest {\n /**\n * List of activities to create or update\n */\n activities: ActivityRequest[];\n\n /**\n * If true, enriches the activities' current_feed with own_* fields (own_follows, own_followings, own_capabilities, own_membership). Defaults to false for performance.\n */\n enrich_own_fields?: boolean;\n}\n\nexport interface UpsertActivitiesResponse {\n duration: string;\n\n /**\n * List of created or updated activities\n */\n activities: ActivityResponse[];\n\n /**\n * Total number of mention notification activities created for mentioned users across all activities\n */\n mention_notifications_created?: number;\n}\n\nexport interface UpsertConfigRequest {\n /**\n * Unique identifier for the moderation configuration\n */\n key: string;\n\n /**\n * Whether moderation should be performed asynchronously\n */\n async?: boolean;\n\n /**\n * Team associated with the configuration\n */\n team?: string;\n\n ai_image_config?: AIImageConfig;\n\n ai_text_config?: AITextConfig;\n\n ai_video_config?: AIVideoConfig;\n\n automod_platform_circumvention_config?: AutomodPlatformCircumventionConfig;\n\n automod_semantic_filters_config?: AutomodSemanticFiltersConfig;\n\n automod_toxicity_config?: AutomodToxicityConfig;\n\n aws_rekognition_config?: AIImageConfig;\n\n block_list_config?: BlockListConfig;\n\n bodyguard_config?: AITextConfig;\n\n google_vision_config?: GoogleVisionConfig;\n\n llm_config?: LLMConfig;\n\n rule_builder_config?: RuleBuilderConfig;\n\n velocity_filter_config?: VelocityFilterConfig;\n\n video_call_rule_config?: VideoCallRuleConfig;\n}\n\nexport interface UpsertConfigResponse {\n duration: string;\n\n config?: ConfigResponse;\n}\n\nexport interface UpsertPushPreferencesRequest {\n /**\n * A list of push preferences for channels, calls, or the user.\n */\n preferences: PushPreferenceInput[];\n}\n\nexport interface UpsertPushPreferencesResponse {\n /**\n * Duration of the request in milliseconds\n */\n duration: string;\n\n /**\n * The channel specific push notification preferences, only returned for channels you've edited.\n */\n user_channel_preferences: Record<\n string,\n Record<string, ChannelPushPreferencesResponse | null>\n >;\n\n /**\n * The user preferences, always returned regardless if you edited it\n */\n user_preferences: Record<string, PushPreferencesResponse>;\n}\n\nexport interface User {\n id: string;\n\n data?: Record<string, any>;\n}\n\nexport interface UserBannedEvent {\n /**\n * Date/time of creation\n */\n created_at: Date;\n\n custom: Record<string, any>;\n\n user: UserResponseCommonFields;\n\n /**\n * The type of event: \"user.banned\" in this case\n */\n type: string;\n\n /**\n * The ID of the channel where the target user was banned\n */\n channel_id?: string;\n\n channel_member_count?: number;\n\n channel_message_count?: number;\n\n /**\n * The type of the channel where the target user was banned\n */\n channel_type?: string;\n\n /**\n * The CID of the channel where the target user was banned\n */\n cid?: string;\n\n /**\n * The expiration date of the ban\n */\n expiration?: Date;\n\n /**\n * The reason for the ban\n */\n reason?: string;\n\n received_at?: Date;\n\n /**\n * Whether the user was shadow banned\n */\n shadow?: boolean;\n\n /**\n * The team of the channel where the target user was banned\n */\n team?: string;\n\n total_bans?: number;\n\n channel_custom?: Record<string, any>;\n\n created_by?: UserResponseCommonFields;\n}\n\nexport interface UserCreatedWithinParameters {\n max_age?: string;\n}\n\nexport interface UserCustomPropertyParameters {\n operator?: string;\n\n property_key?: string;\n}\n\nexport interface UserDeactivatedEvent {\n /**\n * Date/time of creation\n */\n created_at: Date;\n\n custom: Record<string, any>;\n\n user: UserResponseCommonFields;\n\n /**\n * The type of event: \"user.deactivated\" in this case\n */\n type: string;\n\n received_at?: Date;\n\n created_by?: UserResponseCommonFields;\n}\n\nexport interface UserGroupMember {\n app_pk: number;\n\n created_at: Date;\n\n group_id: string;\n\n is_admin: boolean;\n\n user_id: string;\n}\n\nexport interface UserGroupResponse {\n created_at: Date;\n\n id: string;\n\n name: string;\n\n updated_at: Date;\n\n created_by?: string;\n\n description?: string;\n\n team_id?: string;\n\n members?: UserGroupMember[];\n}\n\nexport interface UserIdenticalContentCountParameters {\n threshold?: number;\n\n time_window?: string;\n}\n\nexport interface UserMuteResponse {\n created_at: Date;\n\n updated_at: Date;\n\n expires?: Date;\n\n target?: UserResponse;\n\n user?: UserResponse;\n}\n\nexport interface UserReactivatedEvent {\n /**\n * Date/time of creation\n */\n created_at: Date;\n\n custom: Record<string, any>;\n\n user: UserResponseCommonFields;\n\n /**\n * The type of event: \"user.reactivated\" in this case\n */\n type: string;\n\n received_at?: Date;\n\n created_by?: UserResponseCommonFields;\n}\n\nexport interface UserRequest {\n /**\n * User ID\n */\n id: string;\n\n /**\n * User's profile image URL\n */\n image?: string;\n\n invisible?: boolean;\n\n language?: string;\n\n /**\n * Optional name of user\n */\n name?: string;\n\n /**\n * Custom user data\n */\n custom?: Record<string, any>;\n\n privacy_settings?: PrivacySettingsResponse;\n}\n\nexport interface UserResponse {\n /**\n * Whether a user is banned or not\n */\n banned: boolean;\n\n /**\n * Date/time of creation\n */\n created_at: Date;\n\n /**\n * Unique user identifier\n */\n id: string;\n\n /**\n * Preferred language of a user\n */\n language: string;\n\n /**\n * Whether a user online or not\n */\n online: boolean;\n\n /**\n * Determines the set of user permissions\n */\n role: string;\n\n /**\n * Date/time of the last update\n */\n updated_at: Date;\n\n blocked_user_ids: string[];\n\n /**\n * List of teams user is a part of\n */\n teams: string[];\n\n /**\n * Custom data for this object\n */\n custom: Record<string, any>;\n\n avg_response_time?: number;\n\n /**\n * Date of deactivation\n */\n deactivated_at?: Date;\n\n /**\n * Date/time of deletion\n */\n deleted_at?: Date;\n\n image?: string;\n\n /**\n * Date of last activity\n */\n last_active?: Date;\n\n /**\n * Optional name of user\n */\n name?: string;\n\n /**\n * Revocation date for tokens\n */\n revoke_tokens_issued_before?: Date;\n\n teams_role?: Record<string, string>;\n}\n\nexport interface UserResponseCommonFields {\n banned: boolean;\n\n created_at: Date;\n\n id: string;\n\n language: string;\n\n online: boolean;\n\n role: string;\n\n updated_at: Date;\n\n blocked_user_ids: string[];\n\n teams: string[];\n\n custom: Record<string, any>;\n\n avg_response_time?: number;\n\n deactivated_at?: Date;\n\n deleted_at?: Date;\n\n image?: string;\n\n last_active?: Date;\n\n name?: string;\n\n revoke_tokens_issued_before?: Date;\n\n teams_role?: Record<string, string>;\n}\n\nexport interface UserResponsePrivacyFields {\n banned: boolean;\n\n created_at: Date;\n\n id: string;\n\n language: string;\n\n online: boolean;\n\n role: string;\n\n updated_at: Date;\n\n blocked_user_ids: string[];\n\n teams: string[];\n\n custom: Record<string, any>;\n\n avg_response_time?: number;\n\n deactivated_at?: Date;\n\n deleted_at?: Date;\n\n image?: string;\n\n invisible?: boolean;\n\n last_active?: Date;\n\n name?: string;\n\n revoke_tokens_issued_before?: Date;\n\n privacy_settings?: PrivacySettingsResponse;\n\n teams_role?: Record<string, string>;\n}\n\nexport interface UserRoleParameters {\n operator?: string;\n\n role?: string;\n}\n\nexport interface UserRuleParameters {\n max_age?: string;\n}\n\nexport interface UserUnbannedEvent {\n /**\n * Date/time of creation\n */\n created_at: Date;\n\n custom: Record<string, any>;\n\n user: UserResponseCommonFields;\n\n /**\n * The type of event: \"user.unbanned\" in this case\n */\n type: string;\n\n /**\n * The ID of the channel where the target user was unbanned\n */\n channel_id?: string;\n\n channel_member_count?: number;\n\n channel_message_count?: number;\n\n /**\n * The type of the channel where the target user was unbanned\n */\n channel_type?: string;\n\n /**\n * The CID of the channel where the target user was unbanned\n */\n cid?: string;\n\n received_at?: Date;\n\n /**\n * Whether the target user was shadow unbanned\n */\n shadow?: boolean;\n\n /**\n * The team of the channel where the target user was unbanned\n */\n team?: string;\n\n channel_custom?: Record<string, any>;\n\n created_by?: UserResponseCommonFields;\n}\n\nexport interface UserUpdatedEvent {\n /**\n * Date/time of creation\n */\n created_at: Date;\n\n custom: Record<string, any>;\n\n user: UserResponsePrivacyFields;\n\n /**\n * The type of event: \"user.updated\" in this case\n */\n type: string;\n\n received_at?: Date;\n}\n\nexport interface VelocityFilterConfig {\n advanced_filters: boolean;\n\n cascading_actions: boolean;\n\n cids_per_user: number;\n\n enabled: boolean;\n\n first_message_only: boolean;\n\n rules: VelocityFilterConfigRule[];\n\n async?: boolean;\n}\n\nexport interface VelocityFilterConfigRule {\n action: 'flag' | 'shadow' | 'remove' | 'ban';\n\n ban_duration: number;\n\n cascading_action: 'flag' | 'shadow' | 'remove' | 'ban';\n\n cascading_threshold: number;\n\n check_message_context: boolean;\n\n fast_spam_threshold: number;\n\n fast_spam_ttl: number;\n\n ip_ban: boolean;\n\n probation_period: number;\n\n shadow_ban: boolean;\n\n slow_spam_threshold: number;\n\n slow_spam_ttl: number;\n\n url_only: boolean;\n\n slow_spam_ban_duration?: number;\n}\n\nexport interface VideoCallRuleConfig {\n flag_all_labels: boolean;\n\n flagged_labels: string[];\n\n rules: HarmConfig[];\n}\n\nexport interface VideoContentParameters {\n label_operator?: string;\n\n harm_labels?: string[];\n}\n\nexport interface VideoEndCallRequestPayload {}\n\nexport interface VideoKickUserRequestPayload {}\n\nexport interface VideoRuleParameters {\n threshold?: number;\n\n time_window?: string;\n\n harm_labels?: string[];\n}\n\nexport interface VideoSettingsResponse {\n access_request_enabled: boolean;\n\n camera_default_on: boolean;\n\n camera_facing: string;\n\n enabled: boolean;\n\n target_resolution: TargetResolution;\n}\n\nexport interface VoteData {\n answer_text?: string;\n\n option_id?: string;\n}\n\nexport interface WHIPIngress {\n address: string;\n}\n\nexport interface WSAuthMessage {\n /**\n * JWT token for authentication\n */\n token: string;\n\n user_details: ConnectUserDetailsRequest;\n\n /**\n * List of products to subscribe to. One of: chat, video, feeds\n */\n products?: string[];\n}\n\nexport type WSClientEvent =\n | ({ type: 'app.updated' } & AppUpdatedEvent)\n | ({ type: 'feeds.activity.added' } & ActivityAddedEvent)\n | ({ type: 'feeds.activity.deleted' } & ActivityDeletedEvent)\n | ({ type: 'feeds.activity.feedback' } & ActivityFeedbackEvent)\n | ({ type: 'feeds.activity.marked' } & ActivityMarkEvent)\n | ({ type: 'feeds.activity.pinned' } & ActivityPinnedEvent)\n | ({ type: 'feeds.activity.reaction.added' } & ActivityReactionAddedEvent)\n | ({ type: 'feeds.activity.reaction.deleted' } & ActivityReactionDeletedEvent)\n | ({ type: 'feeds.activity.reaction.updated' } & ActivityReactionUpdatedEvent)\n | ({\n type: 'feeds.activity.removed_from_feed';\n } & ActivityRemovedFromFeedEvent)\n | ({ type: 'feeds.activity.restored' } & ActivityRestoredEvent)\n | ({ type: 'feeds.activity.unpinned' } & ActivityUnpinnedEvent)\n | ({ type: 'feeds.activity.updated' } & ActivityUpdatedEvent)\n | ({ type: 'feeds.bookmark.added' } & BookmarkAddedEvent)\n | ({ type: 'feeds.bookmark.deleted' } & BookmarkDeletedEvent)\n | ({ type: 'feeds.bookmark.updated' } & BookmarkUpdatedEvent)\n | ({ type: 'feeds.bookmark_folder.deleted' } & BookmarkFolderDeletedEvent)\n | ({ type: 'feeds.bookmark_folder.updated' } & BookmarkFolderUpdatedEvent)\n | ({ type: 'feeds.comment.added' } & CommentAddedEvent)\n | ({ type: 'feeds.comment.deleted' } & CommentDeletedEvent)\n | ({ type: 'feeds.comment.reaction.added' } & CommentReactionAddedEvent)\n | ({ type: 'feeds.comment.reaction.deleted' } & CommentReactionDeletedEvent)\n | ({ type: 'feeds.comment.reaction.updated' } & CommentReactionUpdatedEvent)\n | ({ type: 'feeds.comment.restored' } & CommentRestoredEvent)\n | ({ type: 'feeds.comment.updated' } & CommentUpdatedEvent)\n | ({ type: 'feeds.feed.created' } & FeedCreatedEvent)\n | ({ type: 'feeds.feed.deleted' } & FeedDeletedEvent)\n | ({ type: 'feeds.feed.updated' } & FeedUpdatedEvent)\n | ({ type: 'feeds.feed_group.changed' } & FeedGroupChangedEvent)\n | ({ type: 'feeds.feed_group.deleted' } & FeedGroupDeletedEvent)\n | ({ type: 'feeds.feed_group.restored' } & FeedGroupRestoredEvent)\n | ({ type: 'feeds.feed_member.added' } & FeedMemberAddedEvent)\n | ({ type: 'feeds.feed_member.removed' } & FeedMemberRemovedEvent)\n | ({ type: 'feeds.feed_member.updated' } & FeedMemberUpdatedEvent)\n | ({ type: 'feeds.follow.created' } & FollowCreatedEvent)\n | ({ type: 'feeds.follow.deleted' } & FollowDeletedEvent)\n | ({ type: 'feeds.follow.updated' } & FollowUpdatedEvent)\n | ({ type: 'feeds.notification_feed.updated' } & NotificationFeedUpdatedEvent)\n | ({ type: 'feeds.poll.closed' } & PollClosedFeedEvent)\n | ({ type: 'feeds.poll.deleted' } & PollDeletedFeedEvent)\n | ({ type: 'feeds.poll.updated' } & PollUpdatedFeedEvent)\n | ({ type: 'feeds.poll.vote_casted' } & PollVoteCastedFeedEvent)\n | ({ type: 'feeds.poll.vote_changed' } & PollVoteChangedFeedEvent)\n | ({ type: 'feeds.poll.vote_removed' } & PollVoteRemovedFeedEvent)\n | ({ type: 'feeds.stories_feed.updated' } & StoriesFeedUpdatedEvent)\n | ({ type: 'health.check' } & HealthCheckEvent)\n | ({ type: 'moderation.custom_action' } & ModerationCustomActionEvent)\n | ({ type: 'moderation.flagged' } & ModerationFlaggedEvent)\n | ({ type: 'moderation.mark_reviewed' } & ModerationMarkReviewedEvent)\n | ({ type: 'user.banned' } & UserBannedEvent)\n | ({ type: 'user.deactivated' } & UserDeactivatedEvent)\n | ({ type: 'user.reactivated' } & UserReactivatedEvent)\n | ({ type: 'user.unbanned' } & UserUnbannedEvent)\n | ({ type: 'user.updated' } & UserUpdatedEvent);\n\nexport type WSEvent =\n | ({ type: 'app.updated' } & AppUpdatedEvent)\n | ({ type: 'feeds.activity.added' } & ActivityAddedEvent)\n | ({ type: 'feeds.activity.deleted' } & ActivityDeletedEvent)\n | ({ type: 'feeds.activity.feedback' } & ActivityFeedbackEvent)\n | ({ type: 'feeds.activity.marked' } & ActivityMarkEvent)\n | ({ type: 'feeds.activity.pinned' } & ActivityPinnedEvent)\n | ({ type: 'feeds.activity.reaction.added' } & ActivityReactionAddedEvent)\n | ({ type: 'feeds.activity.reaction.deleted' } & ActivityReactionDeletedEvent)\n | ({ type: 'feeds.activity.reaction.updated' } & ActivityReactionUpdatedEvent)\n | ({\n type: 'feeds.activity.removed_from_feed';\n } & ActivityRemovedFromFeedEvent)\n | ({ type: 'feeds.activity.restored' } & ActivityRestoredEvent)\n | ({ type: 'feeds.activity.unpinned' } & ActivityUnpinnedEvent)\n | ({ type: 'feeds.activity.updated' } & ActivityUpdatedEvent)\n | ({ type: 'feeds.bookmark.added' } & BookmarkAddedEvent)\n | ({ type: 'feeds.bookmark.deleted' } & BookmarkDeletedEvent)\n | ({ type: 'feeds.bookmark.updated' } & BookmarkUpdatedEvent)\n | ({ type: 'feeds.bookmark_folder.deleted' } & BookmarkFolderDeletedEvent)\n | ({ type: 'feeds.bookmark_folder.updated' } & BookmarkFolderUpdatedEvent)\n | ({ type: 'feeds.comment.added' } & CommentAddedEvent)\n | ({ type: 'feeds.comment.deleted' } & CommentDeletedEvent)\n | ({ type: 'feeds.comment.reaction.added' } & CommentReactionAddedEvent)\n | ({ type: 'feeds.comment.reaction.deleted' } & CommentReactionDeletedEvent)\n | ({ type: 'feeds.comment.reaction.updated' } & CommentReactionUpdatedEvent)\n | ({ type: 'feeds.comment.restored' } & CommentRestoredEvent)\n | ({ type: 'feeds.comment.updated' } & CommentUpdatedEvent)\n | ({ type: 'feeds.feed.created' } & FeedCreatedEvent)\n | ({ type: 'feeds.feed.deleted' } & FeedDeletedEvent)\n | ({ type: 'feeds.feed.updated' } & FeedUpdatedEvent)\n | ({ type: 'feeds.feed_group.changed' } & FeedGroupChangedEvent)\n | ({ type: 'feeds.feed_group.deleted' } & FeedGroupDeletedEvent)\n | ({ type: 'feeds.feed_group.restored' } & FeedGroupRestoredEvent)\n | ({ type: 'feeds.feed_member.added' } & FeedMemberAddedEvent)\n | ({ type: 'feeds.feed_member.removed' } & FeedMemberRemovedEvent)\n | ({ type: 'feeds.feed_member.updated' } & FeedMemberUpdatedEvent)\n | ({ type: 'feeds.follow.created' } & FollowCreatedEvent)\n | ({ type: 'feeds.follow.deleted' } & FollowDeletedEvent)\n | ({ type: 'feeds.follow.updated' } & FollowUpdatedEvent)\n | ({ type: 'feeds.notification_feed.updated' } & NotificationFeedUpdatedEvent)\n | ({ type: 'feeds.poll.closed' } & PollClosedFeedEvent)\n | ({ type: 'feeds.poll.deleted' } & PollDeletedFeedEvent)\n | ({ type: 'feeds.poll.updated' } & PollUpdatedFeedEvent)\n | ({ type: 'feeds.poll.vote_casted' } & PollVoteCastedFeedEvent)\n | ({ type: 'feeds.poll.vote_changed' } & PollVoteChangedFeedEvent)\n | ({ type: 'feeds.poll.vote_removed' } & PollVoteRemovedFeedEvent)\n | ({ type: 'feeds.stories_feed.updated' } & StoriesFeedUpdatedEvent)\n | ({ type: 'health.check' } & HealthCheckEvent)\n | ({ type: 'moderation.custom_action' } & ModerationCustomActionEvent)\n | ({ type: 'moderation.flagged' } & ModerationFlaggedEvent)\n | ({ type: 'moderation.mark_reviewed' } & ModerationMarkReviewedEvent)\n | ({ type: 'user.banned' } & UserBannedEvent)\n | ({ type: 'user.deactivated' } & UserDeactivatedEvent)\n | ({ type: 'user.reactivated' } & UserReactivatedEvent)\n | ({ type: 'user.unbanned' } & UserUnbannedEvent)\n | ({ type: 'user.updated' } & UserUpdatedEvent);\n","import { StateStore } from '@stream-io/state-store';\nimport type { SearchSource } from './BaseSearchSource';\n\nexport type SearchControllerState = {\n isActive: boolean;\n searchQuery: string;\n sources: SearchSource[];\n};\n\nexport type InternalSearchControllerState = {};\n\nexport type SearchControllerConfig = {\n // The controller will make sure there is always exactly one active source. Enabled by default.\n keepSingleActiveSource: boolean;\n};\n\nexport type SearchControllerOptions = {\n config?: Partial<SearchControllerConfig>;\n sources?: SearchSource[];\n};\n\nexport class SearchController {\n /**\n * Not intended for direct use by integrators, might be removed without notice resulting in\n * broken integrations.\n */\n _internalState: StateStore<InternalSearchControllerState>;\n state: StateStore<SearchControllerState>;\n config: SearchControllerConfig;\n\n constructor({ config, sources }: SearchControllerOptions = {}) {\n this.state = new StateStore<SearchControllerState>({\n isActive: false,\n searchQuery: '',\n sources: sources ?? [],\n });\n this._internalState = new StateStore<InternalSearchControllerState>({});\n this.config = { keepSingleActiveSource: true, ...config };\n }\n get hasNext() {\n return this.sources.some((source) => source.hasNext);\n }\n\n get sources() {\n return this.state.getLatestValue().sources;\n }\n\n get activeSources() {\n return this.state.getLatestValue().sources.filter((s) => s.isActive);\n }\n\n get isActive() {\n return this.state.getLatestValue().isActive;\n }\n\n get searchQuery() {\n return this.state.getLatestValue().searchQuery;\n }\n\n get searchSourceTypes(): Array<SearchSource['type']> {\n return this.sources.map((s) => s.type);\n }\n\n addSource = (source: SearchSource) => {\n this.state.partialNext({\n sources: [...this.sources, source],\n });\n };\n\n getSource = (sourceType: SearchSource['type']) =>\n this.sources.find((s) => s.type === sourceType);\n\n removeSource = (sourceType: SearchSource['type']) => {\n const newSources = this.sources.filter((s) => s.type !== sourceType);\n if (newSources.length === this.sources.length) return;\n this.state.partialNext({ sources: newSources });\n };\n\n activateSource = (sourceType: SearchSource['type']) => {\n const source = this.getSource(sourceType);\n if (!source || source.isActive) return;\n if (this.config.keepSingleActiveSource) {\n this.sources.forEach((s) => {\n if (s.type !== sourceType) {\n s.deactivate();\n }\n });\n }\n source.activate();\n this.state.partialNext({ sources: [...this.sources] });\n };\n\n deactivateSource = (sourceType: SearchSource['type']) => {\n const source = this.getSource(sourceType);\n if (!source?.isActive) return;\n if (this.activeSources.length === 1) return;\n source.deactivate();\n this.state.partialNext({ sources: [...this.sources] });\n };\n\n activate = () => {\n if (!this.activeSources.length) {\n const sourcesToActivate = this.config.keepSingleActiveSource\n ? this.sources.slice(0, 1)\n : this.sources;\n sourcesToActivate.forEach((s) => s.activate());\n }\n if (this.isActive) return;\n this.state.partialNext({ isActive: true });\n };\n\n search = async (searchQuery?: string) => {\n const searchedSources = this.activeSources;\n this.state.partialNext({\n searchQuery,\n });\n await Promise.all(\n searchedSources.map((source) => source.search(searchQuery)),\n );\n };\n\n cancelSearchQueries = () => {\n this.activeSources.forEach((s) => s.cancelScheduledQuery());\n };\n\n clear = () => {\n this.cancelSearchQueries();\n this.sources.forEach((source) =>\n source.state.next({ ...source.initialState, isActive: source.isActive }),\n );\n this.state.next((current) => ({\n ...current,\n isActive: true,\n queriesInProgress: [],\n searchQuery: '',\n }));\n };\n\n exit = () => {\n this.cancelSearchQueries();\n this.sources.forEach((source) =>\n source.state.next({ ...source.initialState, isActive: source.isActive }),\n );\n this.state.next((current) => ({\n ...current,\n isActive: false,\n queriesInProgress: [],\n searchQuery: '',\n }));\n };\n}\n","import { StateStore } from '@stream-io/state-store';\nimport { debounce, type DebouncedFunc } from '../utils';\nimport type {\n QueryReturnValue,\n SearchSourceOptions,\n SearchSourceState,\n SearchSourceType,\n} from './types';\n\nexport type DebounceOptions = {\n debounceMs: number;\n};\ntype DebouncedExecQueryFunction = DebouncedFunc<\n (searchString?: string) => Promise<void>\n>;\n\ninterface ISearchSource<T = any> {\n activate(): void;\n\n canExecuteQuery(newSearchString?: string): boolean;\n\n deactivate(): void;\n\n readonly hasNext: boolean;\n readonly hasResults: boolean;\n readonly initialState: SearchSourceState<T>;\n readonly isActive: boolean;\n readonly isLoading: boolean;\n readonly items: T[] | undefined;\n readonly lastQueryError: Error | undefined;\n readonly next: string | undefined | null;\n readonly offset: number | undefined;\n\n resetState(): void;\n\n readonly searchQuery: string;\n\n readonly state: StateStore<SearchSourceState<T>>;\n readonly type: SearchSourceType;\n}\n\nexport interface SearchSource<T = any> extends ISearchSource<T> {\n cancelScheduledQuery(): void;\n setDebounceOptions(options: DebounceOptions): void;\n search(text?: string): Promise<void> | undefined;\n}\n\nexport interface SearchSourceSync<T = any> extends ISearchSource<T> {\n cancelScheduledQuery(): void;\n setDebounceOptions(options: DebounceOptions): void;\n search(text?: string): void;\n}\n\nconst DEFAULT_SEARCH_SOURCE_OPTIONS: Required<SearchSourceOptions> = {\n debounceMs: 300,\n pageSize: 10,\n allowEmptySearchString: false,\n resetOnNewSearchQuery: true,\n} as const;\n\nabstract class BaseSearchSourceBase<T> implements ISearchSource<T> {\n state: StateStore<SearchSourceState<T>>;\n pageSize: number;\n protected allowEmptySearchString: boolean;\n protected resetOnNewSearchQuery: boolean;\n abstract readonly type: SearchSourceType;\n\n protected constructor(options?: SearchSourceOptions) {\n const { pageSize, allowEmptySearchString, resetOnNewSearchQuery } = {\n ...DEFAULT_SEARCH_SOURCE_OPTIONS,\n ...options,\n };\n this.pageSize = pageSize;\n this.allowEmptySearchString = allowEmptySearchString;\n this.resetOnNewSearchQuery = resetOnNewSearchQuery;\n this.state = new StateStore<SearchSourceState<T>>(this.initialState);\n }\n\n get lastQueryError() {\n return this.state.getLatestValue().lastQueryError;\n }\n\n get hasNext() {\n return this.state.getLatestValue().hasNext;\n }\n\n get hasResults() {\n return Array.isArray(this.state.getLatestValue().items);\n }\n\n get isActive() {\n return this.state.getLatestValue().isActive;\n }\n\n get isLoading() {\n return this.state.getLatestValue().isLoading;\n }\n\n get initialState() {\n return {\n hasNext: true,\n isActive: false,\n isLoading: false,\n items: undefined,\n lastQueryError: undefined,\n next: undefined,\n offset: 0,\n searchQuery: '',\n };\n }\n\n get items() {\n return this.state.getLatestValue().items;\n }\n\n get next() {\n return this.state.getLatestValue().next;\n }\n\n get offset() {\n return this.state.getLatestValue().offset;\n }\n\n get searchQuery() {\n return this.state.getLatestValue().searchQuery;\n }\n\n activate = () => {\n if (this.isActive) return;\n this.state.partialNext({ isActive: true });\n };\n\n deactivate = () => {\n if (!this.isActive) return;\n this.state.partialNext({ isActive: false });\n };\n\n canExecuteQuery = (newSearchString?: string) => {\n const hasNewSearchQuery = typeof newSearchString !== 'undefined';\n const searchString = newSearchString ?? this.searchQuery;\n return !!(\n this.isActive &&\n !this.isLoading &&\n (this.hasNext || hasNewSearchQuery) &&\n (this.allowEmptySearchString || searchString)\n );\n };\n\n protected getStateBeforeFirstQuery(\n newSearchString: string,\n ): SearchSourceState<T> {\n const initialState = this.initialState;\n const oldItems = this.items;\n\n const items = this.resetOnNewSearchQuery ? initialState.items : oldItems;\n return {\n ...this.initialState,\n items,\n isActive: this.isActive,\n isLoading: this.resetOnNewSearchQuery ? true : !oldItems,\n searchQuery: newSearchString,\n };\n }\n\n protected getStateAfterQuery(\n stateUpdate: Partial<SearchSourceState<T>>,\n isFirstPage: boolean,\n ): SearchSourceState<T> {\n const current = this.state.getLatestValue();\n return {\n ...current,\n lastQueryError: undefined, // reset lastQueryError that can be overridden by the stateUpdate\n ...stateUpdate,\n isLoading: false,\n items: isFirstPage\n ? stateUpdate.items\n : [...(this.items ?? []), ...(stateUpdate.items || [])],\n };\n }\n\n protected prepareStateForQuery(newSearchString?: string) {\n const hasNewSearchQuery = typeof newSearchString !== 'undefined';\n const searchString = newSearchString ?? this.searchQuery;\n\n if (hasNewSearchQuery) {\n this.state.next(this.getStateBeforeFirstQuery(newSearchString ?? ''));\n } else {\n this.state.partialNext({ isLoading: true });\n }\n\n return { searchString, hasNewSearchQuery };\n }\n\n protected updatePaginationStateFromQuery(result: QueryReturnValue<T>) {\n const { items, next } = result;\n\n const stateUpdate: Partial<SearchSourceState<T>> = {};\n if (Object.prototype.hasOwnProperty.call(result, 'next')) {\n stateUpdate.next = next;\n stateUpdate.hasNext = !!next;\n } else {\n stateUpdate.offset = (this.offset ?? 0) + items.length;\n stateUpdate.hasNext = items.length === this.pageSize;\n }\n\n return stateUpdate;\n }\n\n resetState() {\n this.state.next(this.initialState);\n }\n\n resetStateAndActivate() {\n this.resetState();\n this.activate();\n }\n}\n\nexport abstract class BaseSearchSource<T>\n extends BaseSearchSourceBase<T>\n implements SearchSource<T>\n{\n protected searchDebounced!: DebouncedExecQueryFunction;\n\n constructor(options?: SearchSourceOptions) {\n const { debounceMs } = { ...DEFAULT_SEARCH_SOURCE_OPTIONS, ...options };\n super(options);\n this.setDebounceOptions({ debounceMs });\n }\n\n protected abstract query(searchQuery: string): Promise<QueryReturnValue<T>>;\n\n protected abstract filterQueryResults(items: T[]): T[] | Promise<T[]>;\n\n setDebounceOptions = ({ debounceMs }: DebounceOptions) => {\n this.searchDebounced = debounce(this.executeQuery.bind(this), debounceMs);\n };\n\n async executeQuery(newSearchString?: string) {\n if (!this.canExecuteQuery(newSearchString)) return;\n\n const { hasNewSearchQuery, searchString } =\n this.prepareStateForQuery(newSearchString);\n\n let stateUpdate: Partial<SearchSourceState<T>> = {};\n try {\n const results = await this.query(searchString);\n if (!results) return;\n\n const { items } = results;\n stateUpdate = this.updatePaginationStateFromQuery(results);\n stateUpdate.items = await this.filterQueryResults(items);\n } catch (e) {\n stateUpdate.lastQueryError = e as Error;\n } finally {\n this.state.next(this.getStateAfterQuery(stateUpdate, hasNewSearchQuery));\n }\n }\n\n search = (searchQuery?: string) => this.searchDebounced(searchQuery);\n\n cancelScheduledQuery() {\n this.searchDebounced.cancel();\n }\n}\n\nexport abstract class BaseSearchSourceSync<T>\n extends BaseSearchSourceBase<T>\n implements SearchSourceSync<T>\n{\n protected searchDebounced!: DebouncedExecQueryFunction;\n\n constructor(options?: SearchSourceOptions) {\n const { debounceMs } = { ...DEFAULT_SEARCH_SOURCE_OPTIONS, ...options };\n super(options);\n this.setDebounceOptions({ debounceMs });\n }\n\n protected abstract query(searchQuery: string): QueryReturnValue<T>;\n\n protected abstract filterQueryResults(items: T[]): T[];\n\n setDebounceOptions = ({ debounceMs }: DebounceOptions) => {\n this.searchDebounced = debounce(this.executeQuery.bind(this), debounceMs);\n };\n\n executeQuery(newSearchString?: string) {\n if (!this.canExecuteQuery(newSearchString)) return;\n\n const { hasNewSearchQuery, searchString } =\n this.prepareStateForQuery(newSearchString);\n\n let stateUpdate: Partial<SearchSourceState<T>> = {};\n try {\n const results = this.query(searchString);\n if (!results) return;\n\n const { items } = results;\n stateUpdate = this.updatePaginationStateFromQuery(results);\n stateUpdate.items = this.filterQueryResults(items);\n } catch (e) {\n stateUpdate.lastQueryError = e as Error;\n } finally {\n this.state.next(this.getStateAfterQuery(stateUpdate, hasNewSearchQuery));\n }\n }\n\n search = (searchQuery?: string) => this.searchDebounced(searchQuery);\n\n cancelScheduledQuery() {\n this.searchDebounced.cancel();\n }\n}\n","import { BaseSearchSource } from './BaseSearchSource';\nimport type { SearchSourceOptions } from './types';\n\nimport type { FeedsClient } from '../../feeds-client';\nimport type { ActivityResponse } from '../../gen/models';\n\nexport class ActivitySearchSource extends BaseSearchSource<ActivityResponse> {\n readonly type = 'activity' as const;\n private readonly client: FeedsClient;\n\n constructor(client: FeedsClient, options?: SearchSourceOptions) {\n super(options);\n this.client = client;\n }\n\n protected async query(searchQuery: string) {\n const { connected_user: connectedUser } =\n this.client.state.getLatestValue();\n if (!connectedUser) return { items: [] };\n\n const { activities: items, next } = await this.client.queryActivities({\n sort: [{ direction: -1, field: 'created_at' }],\n ...(!this.allowEmptySearchString || searchQuery.length > 0\n ? { filter: { text: { $autocomplete: searchQuery } } }\n : {}),\n limit: 10,\n next: this.next ?? undefined,\n });\n\n return { items, next };\n }\n\n protected filterQueryResults(items: ActivityResponse[]) {\n return items;\n }\n}\n","import { BaseSearchSource } from './BaseSearchSource';\nimport type { SearchSourceOptions } from './types';\n\nimport type { FeedsClient } from '../../feeds-client';\nimport type { Feed } from '../../feed';\n\nexport type FeedSearchSourceOptions = SearchSourceOptions & {\n groupId?: string;\n};\n\nexport class FeedSearchSource extends BaseSearchSource<Feed> {\n readonly type: string;\n readonly feedGroupId?: string | undefined;\n private readonly client: FeedsClient;\n\n constructor(client: FeedsClient, options?: FeedSearchSourceOptions) {\n super(options);\n this.client = client;\n this.feedGroupId = options?.groupId;\n this.type = `${this.feedGroupId}-feed`;\n }\n\n protected async query(searchQuery: string) {\n const { connected_user: connectedUser } =\n this.client.state.getLatestValue();\n if (!connectedUser) return { items: [] };\n\n const { feeds: items, next } = await this.client.queryFeeds({\n filter: {\n ...(this.feedGroupId ? { group_id: this.feedGroupId } : {}),\n ...(!this.allowEmptySearchString || searchQuery.length > 0\n ? {\n $or: [\n { name: { $autocomplete: searchQuery } },\n { description: { $autocomplete: searchQuery } },\n { 'created_by.name': { $autocomplete: searchQuery } },\n ],\n }\n : {}),\n },\n next: this.next ?? undefined,\n });\n\n return { items, next };\n }\n\n protected filterQueryResults(items: Feed[]) {\n return items;\n }\n}\n","import { BaseSearchSource } from './BaseSearchSource';\nimport type { SearchSourceOptions } from './types';\n\nimport type { FeedsClient } from '../../feeds-client';\nimport type { UserResponse } from '../../gen/models';\n\nexport class UserSearchSource extends BaseSearchSource<UserResponse> {\n readonly type = 'user' as const;\n private readonly client: FeedsClient;\n\n constructor(client: FeedsClient, options?: SearchSourceOptions) {\n super(options);\n this.client = client;\n }\n\n protected async query(searchQuery: string) {\n const { connected_user: connectedUser } =\n this.client.state.getLatestValue();\n if (!connectedUser) return { items: [] };\n\n const { users: items } = await this.client.queryUsers({\n payload: {\n filter_conditions: {\n ...(!this.allowEmptySearchString || searchQuery.length > 0\n ? {\n name: {\n $autocomplete: searchQuery,\n },\n }\n : {}),\n },\n },\n });\n\n return { items, next: undefined };\n }\n\n protected filterQueryResults(items: UserResponse[]) {\n return items;\n }\n}\n"],"mappings":"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"}