import type { EVENT_MAP } from './events'; /** * Utility Types */ export declare type ArrayOneOrMore = { 0: T; } & Array; export declare type ArrayTwoOrMore = { 0: T; 1: T; } & Array; export declare type KnownKeys = { [K in keyof T]: string extends K ? never : number extends K ? never : K; } extends { [_ in keyof T]: infer U; } ? U : never; export declare type RequireAtLeastOne = { [K in keyof T]-?: Required> & Partial>>; }[keyof T]; export declare type RequireOnlyOne = Pick> & { [K in Keys]-?: Required> & Partial, undefined>>; }[Keys]; export declare type UR = Record; export declare type UnknownType = UR; export declare type DefaultGenerics = { attachmentType: UR; channelType: UR; commandType: LiteralStringForUnion; eventType: UR; messageType: UR; reactionType: UR; userType: UR; }; export declare type ExtendableGenerics = { attachmentType: UR; channelType: UR; commandType: string; eventType: UR; messageType: UR; reactionType: UR; userType: UR; }; export declare type Unpacked = T extends (infer U)[] ? U : T extends (...args: any[]) => infer U ? U : T extends Promise ? U : T; /** * Response Types */ export declare type APIResponse = { duration: string; }; export declare type AppSettingsAPIResponse = APIResponse & { app?: { call_types: any; channel_configs: Record[]; connect_events?: boolean; created_at?: string; custom_events?: boolean; max_message_length?: number; message_retention?: string; mutes?: boolean; name?: string; push_notifications?: boolean; quotes?: boolean; reactions?: boolean; read_events?: boolean; replies?: boolean; search?: boolean; typing_events?: boolean; updated_at?: string; uploads?: boolean; url_enrichment?: boolean; }>; reminders_interval: number; agora_options?: AgoraOptions | null; async_moderation_config?: AsyncModerationOptions; async_url_enrich_enabled?: boolean; auto_translation_enabled?: boolean; before_message_send_hook_url?: string; campaign_enabled?: boolean; cdn_expiration_seconds?: number; custom_action_handler_url?: string; disable_auth_checks?: boolean; disable_permissions_checks?: boolean; enforce_unique_usernames?: 'no' | 'app' | 'team'; file_upload_config?: FileUploadConfig; grants?: Record; hms_options?: HMSOptions | null; image_moderation_enabled?: boolean; image_upload_config?: FileUploadConfig; multi_tenant_enabled?: boolean; name?: string; organization?: string; permission_version?: string; policies?: Record; push_notifications?: { offline_only: boolean; version: string; apn?: APNConfig; firebase?: FirebaseConfig; huawei?: HuaweiConfig; providers?: PushProviderConfig[]; xiaomi?: XiaomiConfig; }; revoke_tokens_issued_before?: string | null; search_backend?: 'disabled' | 'elasticsearch' | 'postgres'; sqs_key?: string; sqs_secret?: string; sqs_url?: string; suspended?: boolean; suspended_explanation?: string; user_search_disallowed_roles?: string[] | null; video_provider?: string; webhook_events?: Array; webhook_url?: string; }; }; export declare type ModerationResult = { action: string; created_at: string; message_id: string; updated_at: string; user_bad_karma: boolean; user_karma: number; blocked_word?: string; blocklist_name?: string; moderated_by?: string; }; export declare type AutomodDetails = { action?: string; image_labels?: Array; original_message_type?: string; result?: ModerationResult; }; export declare type FlagDetails = { automod?: AutomodDetails; }; export declare type Flag = { created_at: string; created_by_automod: boolean; updated_at: string; details?: FlagDetails; target_message?: MessageResponse; target_user?: UserResponse; user?: UserResponse; }; export declare type FlagsResponse = APIResponse & { flags?: Array>; }; export declare type MessageFlagsResponse = APIResponse & { flags?: Array<{ message: MessageResponse; user: UserResponse; approved_at?: string; created_at?: string; created_by_automod?: boolean; moderation_result?: ModerationResult; rejected_at?: string; reviewed_at?: string; reviewed_by?: UserResponse; updated_at?: string; }>; }; export declare type FlagReport = { flags_count: number; id: string; message: MessageResponse; user: UserResponse; created_at?: string; details?: FlagDetails; first_reporter?: UserResponse; review_result?: string; reviewed_at?: string; reviewed_by?: UserResponse; updated_at?: string; }; export declare type FlagReportsResponse = APIResponse & { flag_reports: Array>; }; export declare type ReviewFlagReportResponse = APIResponse & { flag_report: FlagReport; }; export declare type BannedUsersResponse = APIResponse & { bans?: Array<{ user: UserResponse; banned_by?: UserResponse; channel?: ChannelResponse; expires?: string; ip_ban?: boolean; reason?: string; timeout?: number; }>; }; export declare type BlockListResponse = BlockList & { created_at?: string; updated_at?: string; }; export declare type ChannelResponse = OneChatGenerics['channelType'] & { cid: string; disabled: boolean; frozen: boolean; id: string; type: string; auto_translation_enabled?: boolean; auto_translation_language?: TranslationLanguages | ''; config?: ChannelConfigWithInfo; cooldown?: number; created_at?: string; created_by?: UserResponse | null; created_by_id?: string; deleted_at?: string; hidden?: boolean; invites?: string[]; joined?: boolean; last_message_at?: string; member_count?: number; members?: ChannelMemberResponse[]; muted?: boolean; name?: string; own_capabilities?: string[]; team?: string; truncated_at?: string; truncated_by?: UserResponse; truncated_by_id?: string; updated_at?: string; }; export declare type QueryChannelsAPIResponse = APIResponse & { channels: Omit, keyof APIResponse>[]; }; export declare type QueryChannelAPIResponse = APIResponse & ChannelAPIResponse; export declare type ChannelAPIResponse = { channel: ChannelResponse; members: ChannelMemberResponse[]; messages: MessageResponse[]; pinned_messages: MessageResponse[]; hidden?: boolean; membership?: ChannelMembership | null; pending_messages?: PendingMessageResponse[]; read?: ReadResponse[]; watcher_count?: number; watchers?: UserResponse[]; }; export declare type ChannelUpdateOptions = { hide_history?: boolean; skip_push?: boolean; }; export declare type ChannelMemberAPIResponse = APIResponse & { members: ChannelMemberResponse[]; }; export declare type ChannelMemberResponse = { banned?: boolean; channel_role?: Role; created_at?: string; invite_accepted_at?: string; invite_rejected_at?: string; invited?: boolean; is_moderator?: boolean; role?: string; shadow_banned?: boolean; updated_at?: string; user?: UserResponse; user_id?: string; }; export declare type CheckPushResponse = APIResponse & { device_errors?: { [deviceID: string]: { error_message?: string; provider?: PushProvider; provider_name?: string; }; }; general_errors?: string[]; rendered_apn_template?: string; rendered_firebase_template?: string; rendered_message?: {}; skip_devices?: boolean; }; export declare type CheckSQSResponse = APIResponse & { status: string; data?: {}; error?: string; }; export declare type CommandResponse = Partial & { args?: string; description?: string; name?: CommandVariants; set?: CommandVariants; }; export declare type ConnectAPIResponse = Promise>; export declare type CreateChannelResponse = APIResponse & Omit, 'client_id' | 'connection_id'> & { created_at: string; updated_at: string; grants?: Record; }; export declare type CreateCommandResponse = APIResponse & { command: CreateCommandOptions & CreatedAtUpdatedAt; }; export declare type DeleteChannelAPIResponse = APIResponse & { channel: ChannelResponse; }; export declare type DeleteCommandResponse = APIResponse & { name?: CommandVariants; }; export declare type EventAPIResponse = APIResponse & { event: Event; }; export declare type ExportChannelResponse = { task_id: string; }; export declare type ExportUsersResponse = { task_id: string; }; export declare type ExportChannelStatusResponse = { created_at?: string; error?: {}; result?: {}; updated_at?: string; }; export declare type FlagMessageResponse = APIResponse & { flag: { created_at: string; created_by_automod: boolean; target_message_id: string; updated_at: string; user: UserResponse; approved_at?: string; channel_cid?: string; details?: Object; message_user_id?: string; rejected_at?: string; reviewed_at?: string; reviewed_by?: string; }; }; export declare type FlagUserResponse = APIResponse & { flag: { created_at: string; created_by_automod: boolean; target_user: UserResponse; updated_at: string; user: UserResponse; approved_at?: string; details?: Object; rejected_at?: string; reviewed_at?: string; reviewed_by?: string; }; }; export declare type FormatMessageResponse = Omit, 'created_at' | 'pinned_at' | 'updated_at' | 'status'> & OneChatGenerics['messageType'] & { created_at: Date; pinned_at: Date | null; status: string; updated_at: Date; }; export declare type GetChannelTypeResponse = APIResponse & Omit, 'client_id' | 'connection_id' | 'commands'> & { created_at: string; updated_at: string; commands?: CommandResponse[]; grants?: Record; }; export declare type GetCommandResponse = APIResponse & CreateCommandOptions & CreatedAtUpdatedAt; export declare type GetMessageAPIResponse = SendMessageAPIResponse; export declare type GetMultipleMessagesAPIResponse = APIResponse & { messages: MessageResponse[]; }; export declare type GetRateLimitsResponse = APIResponse & { android?: RateLimitsMap; ios?: RateLimitsMap; server_side?: RateLimitsMap; web?: RateLimitsMap; }; export declare type GetReactionsAPIResponse = APIResponse & { reactions: ReactionResponse[]; }; export declare type GetRepliesAPIResponse = APIResponse & { messages: MessageResponse[]; }; export declare type GetUnreadCountAPIResponse = APIResponse & { channel_type: { channel_count: number; channel_type: string; unread_count: number; }[]; channels: { channel_id: string; last_read: string; unread_count: number; }[]; total_unread_count: number; }; export declare type ListChannelResponse = APIResponse & { channel_types: Record, 'client_id' | 'connection_id' | 'commands'> & { commands: CommandResponse[]; created_at: string; updated_at: string; grants?: Record; }>; }; export declare type ListChannelTypesAPIResponse = ListChannelResponse; export declare type ListCommandsResponse = APIResponse & { commands: Array & Partial>; }; export declare type MuteChannelAPIResponse = APIResponse & { channel_mute: ChannelMute; own_user: OwnUserResponse; channel_mutes?: ChannelMute[]; mute?: MuteResponse; }; export declare type MessageResponse = MessageResponseBase & { quoted_message?: MessageResponseBase; }; export declare type MessageResponseBase = MessageBase & { type: MessageLabel; args?: string; channel?: ChannelResponse; cid?: string; command?: string; command_info?: { name?: string; }; created_at?: string; deleted_at?: string; i18n?: RequireAtLeastOne> & { language: TranslationLanguages; }; latest_reactions?: ReactionResponse[]; mentioned_users?: UserResponse[]; own_reactions?: ReactionResponse[] | null; pin_expires?: string | null; pinned_at?: string | null; pinned_by?: UserResponse | null; reaction_counts?: { [key: string]: number; } | null; reaction_scores?: { [key: string]: number; } | null; reply_count?: number; shadowed?: boolean; silent?: boolean; status?: string; thread_participants?: UserResponse[]; updated_at?: string; }; export declare type MuteResponse = { user: UserResponse; created_at?: string; expires?: string; target?: UserResponse; updated_at?: string; }; export declare type MuteUserResponse = APIResponse & { mute?: MuteResponse; mutes?: Array>; own_user?: OwnUserResponse; }; export declare type OwnUserBase = { channel_mutes: ChannelMute[]; devices: Device[]; mutes: Mute[]; total_unread_count: number; unread_channels: number; unread_count: number; invisible?: boolean; roles?: string[]; }; export declare type OwnUserResponse = UserResponse & OwnUserBase; export declare type PartialUpdateChannelAPIResponse = APIResponse & { channel: ChannelResponse; members: ChannelMemberResponse[]; }; export declare type PermissionAPIResponse = APIResponse & { permission?: PermissionAPIObject; }; export declare type PermissionsAPIResponse = APIResponse & { permissions?: PermissionAPIObject[]; }; export declare type ReactionAPIResponse = APIResponse & { message: MessageResponse; reaction: ReactionResponse; }; export declare type ReactionResponse = Reaction & { created_at: string; message_id: string; updated_at: string; }; export declare type ReadResponse = { last_read: string; user: UserResponse; last_read_message_id?: string; unread_messages?: number; }; export declare type SearchAPIResponse = APIResponse & { results: { message: MessageResponse; }[]; next?: string; previous?: string; results_warning?: SearchWarning | null; }; export declare type SearchWarning = { channel_search_cids: string[]; channel_search_count: number; warning_code: number; warning_description: string; }; export declare type SendFileAPIResponse = APIResponse & { file: string; thumb_url?: string; }; export declare type SendMessageAPIResponse = APIResponse & { message: MessageResponse; pending_message_metadata?: Record | null; }; export declare type SyncResponse = APIResponse & { events: Event[]; inaccessible_cids?: string[]; }; export declare type TruncateChannelAPIResponse = APIResponse & { channel: ChannelResponse; message?: MessageResponse; }; export declare type UpdateChannelAPIResponse = APIResponse & { channel: ChannelResponse; members: ChannelMemberResponse[]; message?: MessageResponse; }; export declare type UpdateChannelResponse = APIResponse & Omit, 'client_id' | 'connection_id'> & { created_at: string; updated_at: string; }; export declare type UpdateCommandResponse = APIResponse & { command: UpdateCommandOptions & CreatedAtUpdatedAt & { name: CommandVariants; }; }; export declare type UpdateMessageAPIResponse = APIResponse & { message: MessageResponse; }; export declare type UsersAPIResponse = APIResponse & { users: Array>; }; export declare type UpdateUsersAPIResponse = APIResponse & { users: { [key: string]: UserResponse; }; }; export declare type UserResponse = User & { banned?: boolean; created_at?: string; deactivated_at?: string; deleted_at?: string; language?: TranslationLanguages | ''; last_active?: string; online?: boolean; push_notifications?: PushNotificationSettings; revoke_tokens_issued_before?: string; shadow_banned?: boolean; updated_at?: string; }; export declare type PushNotificationSettings = { disabled?: boolean; disabled_until?: string | null; }; /** * Option Types */ export declare type MessageFlagsPaginationOptions = { limit?: number; offset?: number; }; export declare type FlagsPaginationOptions = { limit?: number; offset?: number; }; export declare type FlagReportsPaginationOptions = { limit?: number; offset?: number; }; export declare type ReviewFlagReportOptions = { review_details?: Object; user_id?: string; }; export declare type BannedUsersPaginationOptions = Omit; export declare type BanUserOptions = UnBanUserOptions & { banned_by?: UserResponse; banned_by_id?: string; ip_ban?: boolean; reason?: string; timeout?: number; }; export declare type ChannelOptions = { limit?: number; member_limit?: number; message_limit?: number; offset?: number; presence?: boolean; state?: boolean; user_id?: string; watch?: boolean; }; export declare type ChannelQueryOptions = { client_id?: string; connection_id?: string; data?: ChannelResponse; hide_for_creator?: boolean; members?: PaginationOptions; messages?: MessagePaginationOptions; presence?: boolean; state?: boolean; watch?: boolean; watchers?: PaginationOptions; }; export declare type ChannelStateOptions = { offlineMode?: boolean; skipInitialization?: string[]; }; export declare type CreateChannelOptions = { automod?: ChannelConfigAutomod; automod_behavior?: ChannelConfigAutomodBehavior; automod_thresholds?: ChannelConfigAutomodThresholds; blocklist?: string; blocklist_behavior?: ChannelConfigAutomodBehavior; client_id?: string; commands?: CommandVariants[]; connect_events?: boolean; connection_id?: string; custom_events?: boolean; grants?: Record; max_message_length?: number; message_retention?: string; mutes?: boolean; name?: string; permissions?: PermissionObject[]; push_notifications?: boolean; quotes?: boolean; reactions?: boolean; read_events?: boolean; reminders?: boolean; replies?: boolean; search?: boolean; typing_events?: boolean; uploads?: boolean; url_enrichment?: boolean; }; export declare type CreateCommandOptions = { description: string; name: CommandVariants; args?: string; set?: CommandVariants; }; export declare type CustomPermissionOptions = { action: string; condition: object; id: string; name: string; description?: string; owner?: boolean; same_team?: boolean; }; export declare type DeactivateUsersOptions = { created_by_id?: string; mark_messages_deleted?: boolean; }; export declare type InviteOptions = { accept_invite?: boolean; add_members?: string[]; add_moderators?: string[]; client_id?: string; connection_id?: string; data?: Omit, 'id' | 'cid'>; demote_moderators?: string[]; invites?: string[]; message?: MessageResponse; reject_invite?: boolean; remove_members?: string[]; user?: UserResponse; user_id?: string; }; /** @deprecated use MarkChannelsReadOptions instead */ export declare type MarkAllReadOptions = MarkChannelsReadOptions; export declare type MarkChannelsReadOptions = { client_id?: string; connection_id?: string; read_by_channel?: Record; user?: UserResponse; user_id?: string; }; export declare type MarkReadOptions = { client_id?: string; connection_id?: string; user?: UserResponse; user_id?: string; }; export declare type MarkUnreadOptions = { message_id: string; client_id?: string; connection_id?: string; user?: UserResponse; user_id?: string; }; export declare type MuteUserOptions = { client_id?: string; connection_id?: string; id?: string; reason?: string; target_user_id?: string; timeout?: number; type?: string; user?: UserResponse; user_id?: string; }; export declare type PaginationOptions = { created_at_after?: string | Date; created_at_after_or_equal?: string | Date; created_at_before?: string | Date; created_at_before_or_equal?: string | Date; id_gt?: string; id_gte?: string; id_lt?: string; id_lte?: string; limit?: number; offset?: number; }; export declare type MessagePaginationOptions = PaginationOptions & { created_at_around?: string | Date; id_around?: string; }; export declare type PinnedMessagePaginationOptions = { id_around?: string; id_gt?: string; id_gte?: string; id_lt?: string; id_lte?: string; limit?: number; offset?: number; pinned_at_after?: string | Date; pinned_at_after_or_equal?: string | Date; pinned_at_around?: string | Date; pinned_at_before?: string | Date; pinned_at_before_or_equal?: string | Date; }; export declare type QueryMembersOptions = { limit?: number; offset?: number; user_id_gt?: string; user_id_gte?: string; user_id_lt?: string; user_id_lte?: string; }; export declare type ReactivateUserOptions = { created_by_id?: string; name?: string; restore_messages?: boolean; }; export declare type ReactivateUsersOptions = { created_by_id?: string; restore_messages?: boolean; }; export declare type SearchOptions = { limit?: number; next?: string; offset?: number; sort?: SearchMessageSort; }; export declare type SyncOptions = { /** * This will behave as queryChannels option. */ watch?: boolean; /** * Return channels from request that user does not have access to in a separate * field in the response called 'inaccessible_cids' instead of * adding them as 'notification.removed_from_channel' events. */ with_inaccessible_cids?: boolean; }; export declare type UnBanUserOptions = { client_id?: string; connection_id?: string; id?: string; shadow?: boolean; target_user_id?: string; type?: string; }; export declare type UpdateChannelOptions = Omit, 'name'> & { created_at?: string; updated_at?: string; }; export declare type UpdateCommandOptions = { description: string; args?: string; set?: CommandVariants; }; export declare type UserOptions = { limit?: number; offset?: number; presence?: boolean; }; /** * Event Types */ export declare type ConnectionChangeEvent = { type: EventTypes; online?: boolean; }; export declare type Event = OneChatGenerics['eventType'] & { type: EventTypes; channel?: ChannelResponse; channel_id?: string; channel_type?: string; cid?: string; clear_history?: boolean; connection_id?: string; created_at?: string; hard_delete?: boolean; mark_messages_deleted?: boolean; me?: OwnUserResponse; member?: ChannelMemberResponse; message?: MessageResponse; mode?: string; online?: boolean; parent_id?: string; queriedChannels?: { channels: ChannelAPIResponse[]; isLatestMessageSet?: boolean; }; reaction?: ReactionResponse; received_at?: string | Date; team?: string; total_unread_count?: number; unread_channels?: number; unread_count?: number; user?: UserResponse; user_id?: string; watcher_count?: number; }; export declare type UserCustomEvent = OneChatGenerics['eventType'] & { type: string; }; export declare type EventHandler = (event: Event) => void; export declare type EventTypes = 'all' | keyof typeof EVENT_MAP; /** * Filter Types */ export declare type AscDesc = 1 | -1; export declare type MessageFlagsFiltersOptions = { channel_cid?: string; is_reviewed?: boolean; team?: string; user_id?: string; }; export declare type MessageFlagsFilters = QueryFilters<{ channel_cid?: RequireOnlyOne, '$eq' | '$in'>> | PrimitiveFilter; } & { team?: RequireOnlyOne, '$eq' | '$in'>> | PrimitiveFilter; } & { user_id?: RequireOnlyOne, '$eq' | '$in'>> | PrimitiveFilter; } & { [Key in keyof Omit]: RequireOnlyOne> | PrimitiveFilter; }>; export declare type FlagsFiltersOptions = { channel_cid?: string; message_id?: string; message_user_id?: string; reporter_id?: string; team?: string; user_id?: string; }; export declare type FlagsFilters = QueryFilters<{ user_id?: RequireOnlyOne, '$eq' | '$in'>> | PrimitiveFilter; } & { message_id?: RequireOnlyOne, '$eq' | '$in'>> | PrimitiveFilter; } & { message_user_id?: RequireOnlyOne, '$eq' | '$in'>> | PrimitiveFilter; } & { channel_cid?: RequireOnlyOne, '$eq' | '$in'>> | PrimitiveFilter; } & { reporter_id?: RequireOnlyOne, '$eq' | '$in'>> | PrimitiveFilter; } & { team?: RequireOnlyOne, '$eq' | '$in'>> | PrimitiveFilter; }>; export declare type FlagReportsFiltersOptions = { channel_cid?: string; is_reviewed?: boolean; message_id?: string; message_user_id?: string; report_id?: string; review_result?: string; reviewed_by?: string; team?: string; user_id?: string; }; export declare type FlagReportsFilters = QueryFilters<{ report_id?: RequireOnlyOne, '$eq' | '$in'>> | PrimitiveFilter; } & { review_result?: RequireOnlyOne, '$eq' | '$in'>> | PrimitiveFilter; } & { reviewed_by?: RequireOnlyOne, '$eq' | '$in'>> | PrimitiveFilter; } & { user_id?: RequireOnlyOne, '$eq' | '$in'>> | PrimitiveFilter; } & { message_id?: RequireOnlyOne, '$eq' | '$in'>> | PrimitiveFilter; } & { message_user_id?: RequireOnlyOne, '$eq' | '$in'>> | PrimitiveFilter; } & { channel_cid?: RequireOnlyOne, '$eq' | '$in'>> | PrimitiveFilter; } & { team?: RequireOnlyOne, '$eq' | '$in'>> | PrimitiveFilter; } & { [Key in keyof Omit]: RequireOnlyOne> | PrimitiveFilter; }>; export declare type BannedUsersFilterOptions = { banned_by_id?: string; channel_cid?: string; created_at?: string; reason?: string; user_id?: string; }; export declare type BannedUsersFilters = QueryFilters<{ channel_cid?: RequireOnlyOne, '$eq' | '$in'>> | PrimitiveFilter; } & { reason?: RequireOnlyOne<{ $autocomplete?: BannedUsersFilterOptions['reason']; } & QueryFilter> | PrimitiveFilter; } & { [Key in keyof Omit]: RequireOnlyOne> | PrimitiveFilter; }>; export declare type ChannelFilters = QueryFilters & { members?: RequireOnlyOne, '$in' | '$nin'>> | RequireOnlyOne, '$eq'>> | PrimitiveFilter; } & { name?: RequireOnlyOne<{ $autocomplete?: ChannelResponse['name']; } & QueryFilter['name']>> | PrimitiveFilter['name']>; } & { [Key in keyof Omit, 'name' | 'members'>]: RequireOnlyOne[Key]>> | PrimitiveFilter[Key]>; }>; export declare type ContainsOperator = { [Key in keyof CustomType]?: CustomType[Key] extends (infer ContainType)[] ? RequireOnlyOne<{ $contains?: ContainType extends object ? PrimitiveFilter> : PrimitiveFilter; } & QueryFilter[]>> | PrimitiveFilter[]> : RequireOnlyOne> | PrimitiveFilter; }; export declare type MessageFilters = QueryFilters & { text?: RequireOnlyOne<{ $autocomplete?: MessageResponse['text']; $q?: MessageResponse['text']; } & QueryFilter['text']>> | PrimitiveFilter['text']>; } & { [Key in keyof Omit, 'text'>]?: RequireOnlyOne[Key]>> | PrimitiveFilter[Key]>; }>; export declare type PrimitiveFilter = ObjectType | null; export declare type QueryFilter = NonNullable extends string | number | boolean ? { $eq?: PrimitiveFilter; $exists?: boolean; $gt?: PrimitiveFilter; $gte?: PrimitiveFilter; $in?: PrimitiveFilter[]; $lt?: PrimitiveFilter; $lte?: PrimitiveFilter; $ne?: PrimitiveFilter; $nin?: PrimitiveFilter[]; } : { $eq?: PrimitiveFilter; $exists?: boolean; $in?: PrimitiveFilter[]; $ne?: PrimitiveFilter; $nin?: PrimitiveFilter[]; }; export declare type QueryFilters = { [Key in keyof Operators]?: Operators[Key]; } & QueryLogicalOperators; export declare type QueryLogicalOperators = { $and?: ArrayOneOrMore>; $nor?: ArrayOneOrMore>; $or?: ArrayTwoOrMore>; }; export declare type UserFilters = QueryFilters & { id?: RequireOnlyOne<{ $autocomplete?: UserResponse['id']; } & QueryFilter['id']>> | PrimitiveFilter['id']>; name?: RequireOnlyOne<{ $autocomplete?: UserResponse['name']; } & QueryFilter['name']>> | PrimitiveFilter['name']>; teams?: RequireOnlyOne<{ $contains?: PrimitiveFilter; $eq?: PrimitiveFilter['teams']>; }> | PrimitiveFilter['teams']>; username?: RequireOnlyOne<{ $autocomplete?: UserResponse['username']; } & QueryFilter['username']>> | PrimitiveFilter['username']>; } & { [Key in keyof Omit, 'id' | 'name' | 'teams' | 'username'>]?: RequireOnlyOne[Key]>> | PrimitiveFilter[Key]>; }>; /** * Sort Types */ export declare type BannedUsersSort = BannedUsersSortBase | Array; export declare type BannedUsersSortBase = { created_at?: AscDesc; }; export declare type ChannelSort = ChannelSortBase | Array>; export declare type ChannelSortBase = Sort & { created_at?: AscDesc; has_unread?: AscDesc; last_message_at?: AscDesc; last_updated?: AscDesc; member_count?: AscDesc; unread_count?: AscDesc; updated_at?: AscDesc; }; export declare type PinnedMessagesSort = PinnedMessagesSortBase | Array; export declare type PinnedMessagesSortBase = { pinned_at?: AscDesc; }; export declare type Sort = { [P in keyof T]?: AscDesc; }; export declare type UserSort = Sort> | Array>>; export declare type MemberSort = Sort, 'id' | 'created_at' | 'name'>> | Array, 'id' | 'created_at' | 'name'>>>; export declare type SearchMessageSortBase = Sort & { attachments?: AscDesc; 'attachments.type'?: AscDesc; created_at?: AscDesc; id?: AscDesc; 'mentioned_users.id'?: AscDesc; parent_id?: AscDesc; pinned?: AscDesc; relevance?: AscDesc; reply_count?: AscDesc; text?: AscDesc; type?: AscDesc; updated_at?: AscDesc; 'user.id'?: AscDesc; }; export declare type SearchMessageSort = SearchMessageSortBase | Array>; export declare type QuerySort = BannedUsersSort | ChannelSort | SearchMessageSort | UserSort; /** * Base Types */ export declare type Action = { name?: string; style?: string; text?: string; type?: string; value?: string; }; export declare type AnonUserType = {}; export declare type APNConfig = { auth_key?: string; auth_type?: string; bundle_id?: string; development?: boolean; enabled?: boolean; host?: string; key_id?: string; notification_template?: string; p12_cert?: string; team_id?: string; }; export declare type AgoraOptions = { app_certificate: string; app_id: string; role_map?: Record; }; export declare type HMSOptions = { app_access_key: string; app_secret: string; default_role: string; default_room_template: string; default_region?: string; role_map?: Record; }; export declare type AsyncModerationOptions = { callback?: { mode?: 'CALLBACK_MODE_NONE' | 'CALLBACK_MODE_REST' | 'CALLBACK_MODE_TWIRP'; server_url?: string; }; timeout_ms?: number; }; export declare type AppSettings = { agora_options?: AgoraOptions | null; apn_config?: { auth_key?: string; auth_type?: string; bundle_id?: string; development?: boolean; host?: string; key_id?: string; notification_template?: string; p12_cert?: string; team_id?: string; }; async_moderation_config?: AsyncModerationOptions; async_url_enrich_enabled?: boolean; auto_translation_enabled?: boolean; before_message_send_hook_url?: string; cdn_expiration_seconds?: number; custom_action_handler_url?: string; disable_auth_checks?: boolean; disable_permissions_checks?: boolean; enforce_unique_usernames?: 'no' | 'app' | 'team'; file_upload_config?: FileUploadConfig; firebase_config?: { apn_template?: string; credentials_json?: string; data_template?: string; notification_template?: string; server_key?: string; }; grants?: Record; hms_options?: HMSOptions | null; huawei_config?: { id: string; secret: string; }; image_moderation_enabled?: boolean; image_upload_config?: FileUploadConfig; migrate_permissions_to_v2?: boolean; multi_tenant_enabled?: boolean; permission_version?: 'v1' | 'v2'; push_config?: { offline_only?: boolean; version?: string; }; reminders_interval?: number; revoke_tokens_issued_before?: string | null; sqs_key?: string; sqs_secret?: string; sqs_url?: string; video_provider?: string; webhook_events?: Array | null; webhook_url?: string; xiaomi_config?: { package_name: string; secret: string; }; }; export declare type Attachment = OneChatGenerics['attachmentType'] & { actions?: Action[]; asset_url?: string; author_icon?: string; author_link?: string; author_name?: string; color?: string; fallback?: string; fields?: Field[]; file_size?: number | string; footer?: string; footer_icon?: string; giphy?: GiphyData; image_url?: string; mime_type?: string; og_scrape_url?: string; original_height?: number; original_width?: number; pretext?: string; text?: string; thumb_url?: string; title?: string; title_link?: string; type?: string; }; export declare type OGAttachment = { og_scrape_url: string; asset_url?: string; author_link?: string; author_name?: string; image_url?: string; text?: string; thumb_url?: string; title?: string; title_link?: string; type?: string | 'video' | 'audio' | 'image'; }; export declare type BlockList = { name: string; words: string[]; }; export declare type ChannelConfig = ChannelConfigFields & CreatedAtUpdatedAt & { commands?: CommandVariants[]; }; export declare type ChannelConfigAutomod = '' | 'AI' | 'disabled' | 'simple'; export declare type ChannelConfigAutomodBehavior = '' | 'block' | 'flag'; export declare type ChannelConfigAutomodThresholds = null | { explicit?: { block?: number; flag?: number; }; spam?: { block?: number; flag?: number; }; toxic?: { block?: number; flag?: number; }; }; export declare type ChannelConfigFields = { reminders: boolean; automod?: ChannelConfigAutomod; automod_behavior?: ChannelConfigAutomodBehavior; automod_thresholds?: ChannelConfigAutomodThresholds; blocklist_behavior?: ChannelConfigAutomodBehavior; connect_events?: boolean; custom_events?: boolean; max_message_length?: number; message_retention?: string; mutes?: boolean; name?: string; push_notifications?: boolean; quotes?: boolean; reactions?: boolean; read_events?: boolean; replies?: boolean; search?: boolean; typing_events?: boolean; uploads?: boolean; url_enrichment?: boolean; }; export declare type ChannelConfigWithInfo = ChannelConfigFields & CreatedAtUpdatedAt & { commands?: CommandResponse[]; }; export declare type ChannelData = OneChatGenerics['channelType'] & { members?: string[]; name?: string; }; export declare type ChannelMembership = { banned?: boolean; channel_role?: Role; created_at?: string; is_moderator?: boolean; role?: string; shadow_banned?: boolean; updated_at?: string; user?: UserResponse; }; export declare type ChannelMute = { user: UserResponse; channel?: ChannelResponse; created_at?: string; expires?: string; updated_at?: string; }; export declare type ChannelRole = { custom?: boolean; name?: string; owner?: boolean; resource?: string; same_team?: boolean; }; export declare type CheckPushInput = { apn_template?: string; client_id?: string; connection_id?: string; firebase_data_template?: string; firebase_template?: string; message_id?: string; user?: UserResponse; user_id?: string; }; export declare type PushProvider = 'apn' | 'firebase' | 'huawei' | 'xiaomi'; export declare type PushProviderConfig = PushProviderCommon & PushProviderID & PushProviderAPN & PushProviderFirebase & PushProviderHuawei & PushProviderXiaomi; export declare type PushProviderID = { name: string; type: PushProvider; }; export declare type PushProviderCommon = { created_at: string; updated_at: string; description?: string; disabled_at?: string; disabled_reason?: string; }; export declare type PushProviderAPN = { apn_auth_key?: string; apn_auth_type?: 'token' | 'certificate'; apn_development?: boolean; apn_host?: string; apn_key_id?: string; apn_notification_template?: string; apn_p12_cert?: string; apn_team_id?: string; apn_topic?: string; }; export declare type PushProviderFirebase = { firebase_apn_template?: string; firebase_credentials?: string; firebase_data_template?: string; firebase_notification_template?: string; firebase_server_key?: string; }; export declare type PushProviderHuawei = { huawei_app_id?: string; huawei_app_secret?: string; }; export declare type PushProviderXiaomi = { xiaomi_package_name?: string; xiaomi_secret?: string; }; export declare type CommandVariants = 'all' | 'ban' | 'fun_set' | 'giphy' | 'moderation_set' | 'mute' | 'unban' | 'unmute' | OneChatGenerics['commandType']; export declare type Configs = Record | undefined>; export declare type ConnectionOpen = { connection_id: string; cid?: string; created_at?: string; me?: OwnUserResponse; type?: string; }; export declare type CreatedAtUpdatedAt = { created_at: string; updated_at: string; }; export declare type Device = DeviceFields & { provider?: string; user?: UserResponse; user_id?: string; }; export declare type BaseDeviceFields = { id: string; push_provider: PushProvider; push_provider_name?: string; }; export declare type DeviceFields = BaseDeviceFields & { created_at: string; disabled?: boolean; disabled_reason?: string; }; export declare type EndpointName = 'Connect' | 'LongPoll' | 'DeleteFile' | 'DeleteImage' | 'DeleteMessage' | 'DeleteUser' | 'DeleteUsers' | 'DeactivateUser' | 'ExportUser' | 'DeleteReaction' | 'UpdateChannel' | 'UpdateChannelPartial' | 'UpdateMessage' | 'UpdateMessagePartial' | 'GetMessage' | 'GetManyMessages' | 'UpdateUsers' | 'UpdateUsersPartial' | 'CreateGuest' | 'GetOrCreateChannel' | 'StopWatchingChannel' | 'QueryChannels' | 'Search' | 'QueryUsers' | 'QueryMembers' | 'QueryBannedUsers' | 'QueryFlags' | 'QueryMessageFlags' | 'GetReactions' | 'GetReplies' | 'GetPinnedMessages' | 'Ban' | 'Unban' | 'MuteUser' | 'MuteChannel' | 'UnmuteChannel' | 'UnmuteUser' | 'RunMessageAction' | 'SendEvent' | 'SendUserCustomEvent' | 'MarkRead' | 'MarkChannelsRead' | 'SendMessage' | 'ImportChannelMessages' | 'UploadFile' | 'UploadImage' | 'UpdateApp' | 'GetApp' | 'CreateDevice' | 'DeleteDevice' | 'SendReaction' | 'Flag' | 'Unflag' | 'Unblock' | 'QueryFlagReports' | 'FlagReportReview' | 'CreateChannelType' | 'DeleteChannel' | 'DeleteChannels' | 'DeleteChannelType' | 'GetChannelType' | 'ListChannelTypes' | 'ListDevices' | 'TruncateChannel' | 'UpdateChannelType' | 'CheckPush' | 'PrivateSubmitModeration' | 'ReactivateUser' | 'HideChannel' | 'ShowChannel' | 'CreatePermission' | 'UpdatePermission' | 'GetPermission' | 'DeletePermission' | 'ListPermissions' | 'CreateRole' | 'DeleteRole' | 'ListRoles' | 'ListCustomRoles' | 'Sync' | 'TranslateMessage' | 'CreateCommand' | 'GetCommand' | 'UpdateCommand' | 'DeleteCommand' | 'ListCommands' | 'CreateBlockList' | 'UpdateBlockList' | 'GetBlockList' | 'ListBlockLists' | 'DeleteBlockList' | 'ExportChannels' | 'GetExportChannelsStatus' | 'CheckSQS' | 'GetRateLimits' | 'CreateSegment' | 'GetSegment' | 'QuerySegments' | 'UpdateSegment' | 'DeleteSegment' | 'CreateCampaign' | 'GetCampaign' | 'ListCampaigns' | 'UpdateCampaign' | 'DeleteCampaign' | 'ScheduleCampaign' | 'StopCampaign' | 'ResumeCampaign' | 'TestCampaign' | 'GetOG' | 'GetTask' | 'ExportUsers' | 'CreateImport' | 'CreateImportURL' | 'GetImport' | 'ListImports' | 'UpsertPushProvider' | 'DeletePushProvider' | 'ListPushProviders'; export declare type ExportChannelRequest = { id: string; type: string; cid?: string; messages_since?: Date; messages_until?: Date; }; export declare type ExportChannelOptions = { clear_deleted_message_text?: boolean; export_users?: boolean; include_truncated_messages?: boolean; version?: string; }; export declare type ExportUsersRequest = { user_ids: string[]; }; export declare type Field = { short?: boolean; title?: string; value?: string; }; export declare type FileUploadConfig = { allowed_file_extensions?: string[] | null; allowed_mime_types?: string[] | null; blocked_file_extensions?: string[] | null; blocked_mime_types?: string[] | null; }; export declare type FirebaseConfig = { apn_template?: string; credentials_json?: string; data_template?: string; enabled?: boolean; notification_template?: string; server_key?: string; }; declare type GiphyVersionInfo = { height: string; url: string; width: string; }; declare type GiphyVersions = 'original' | 'fixed_height' | 'fixed_height_still' | 'fixed_height_downsampled' | 'fixed_width' | 'fixed_width_still' | 'fixed_width_downsampled'; declare type GiphyData = { [key in GiphyVersions]: GiphyVersionInfo; }; export declare type HuaweiConfig = { enabled?: boolean; id?: string; secret?: string; }; export declare type XiaomiConfig = { enabled?: boolean; package_name?: string; secret?: string; }; export declare type LiteralStringForUnion = string & {}; export declare type LogLevel = 'info' | 'error' | 'warn'; export declare type Logger = (logLevel: LogLevel, message: string, extraData?: Record) => void; export declare type Message = Partial> & { mentioned_users?: string[]; }; export declare type MessageBase = OneChatGenerics['messageType'] & { id: string; attachments?: Attachment[]; html?: string; mml?: string; parent_id?: string; pin_expires?: string | null; pinned?: boolean; pinned_at?: string | null; quoted_message_id?: string; show_in_channel?: boolean; text?: string; user?: UserResponse | null; user_id?: string; }; export declare type MessageLabel = 'deleted' | 'ephemeral' | 'error' | 'regular' | 'reply' | 'system'; export declare type Mute = { created_at: string; target: UserResponse; updated_at: string; user: UserResponse; }; export declare type PartialUpdateChannel = { set?: Partial>; unset?: Array>; }; export declare type PartialUserUpdate = { id: string; set?: Partial>; unset?: Array>; }; export declare type MessageUpdatableFields = Omit, 'cid' | 'created_at' | 'updated_at' | 'deleted_at' | 'user' | 'user_id'>; export declare type PartialMessageUpdate = { set?: Partial>; unset?: Array>; }; export declare type PendingMessageResponse = { message: MessageResponse; pending_message_metadata?: Record; }; export declare type PermissionAPIObject = { action?: string; condition?: object; custom?: boolean; description?: string; id?: string; level?: string; name?: string; owner?: boolean; same_team?: boolean; tags?: string[]; }; export declare type PermissionObject = { action?: 'Deny' | 'Allow'; name?: string; owner?: boolean; priority?: number; resources?: string[]; roles?: string[]; }; export declare type Policy = { action?: 0 | 1; created_at?: string; name?: string; owner?: boolean; priority?: number; resources?: string[]; roles?: string[] | null; updated_at?: string; }; export declare type RateLimitsInfo = { limit: number; remaining: number; reset: number; }; export declare type RateLimitsMap = Record; export declare type Reaction = OneChatGenerics['reactionType'] & { type: string; message_id?: string; score?: number; user?: UserResponse | null; user_id?: string; }; export declare type Resource = 'AddLinks' | 'BanUser' | 'CreateChannel' | 'CreateMessage' | 'CreateReaction' | 'DeleteAttachment' | 'DeleteChannel' | 'DeleteMessage' | 'DeleteReaction' | 'EditUser' | 'MuteUser' | 'ReadChannel' | 'RunMessageAction' | 'UpdateChannel' | 'UpdateChannelMembers' | 'UpdateMessage' | 'UpdateUser' | 'UploadAttachment'; export declare type SearchPayload = Omit, 'sort'> & { client_id?: string; connection_id?: string; filter_conditions?: ChannelFilters; message_filter_conditions?: MessageFilters; query?: string; sort?: Array<{ direction: AscDesc; field: keyof SearchMessageSortBase; }>; }; export declare type TestPushDataInput = { apnTemplate?: string; firebaseDataTemplate?: string; firebaseTemplate?: string; messageID?: string; pushProviderName?: string; pushProviderType?: PushProvider; skipDevices?: boolean; }; export declare type TestSQSDataInput = { sqs_key?: string; sqs_secret?: string; sqs_url?: string; }; export declare type TokenOrProvider = null | string | TokenProvider | undefined; export declare type TokenProvider = () => Promise; export declare type TranslationLanguages = '' | 'af' | 'am' | 'ar' | 'az' | 'bg' | 'bn' | 'bs' | 'cs' | 'da' | 'de' | 'el' | 'en' | 'es' | 'es-MX' | 'et' | 'fa' | 'fa-AF' | 'fi' | 'fr' | 'fr-CA' | 'ha' | 'he' | 'hi' | 'hr' | 'hu' | 'id' | 'it' | 'ja' | 'ka' | 'ko' | 'lv' | 'ms' | 'nl' | 'no' | 'pl' | 'ps' | 'pt' | 'ro' | 'ru' | 'sk' | 'sl' | 'so' | 'sq' | 'sr' | 'sv' | 'sw' | 'ta' | 'th' | 'tl' | 'tr' | 'uk' | 'ur' | 'vi' | 'zh' | 'zh-TW'; export declare type TypingStartEvent = Event; export declare type ReservedMessageFields = 'command' | 'created_at' | 'html' | 'latest_reactions' | 'own_reactions' | 'quoted_message' | 'reaction_counts' | 'reply_count' | 'type' | 'updated_at' | 'user' | '__html'; export declare type UpdatedMessage = Omit, 'mentioned_users'> & { mentioned_users?: string[]; }; export declare type User = OneChatGenerics['userType'] & { id: string; anon?: boolean; name?: string; role?: string; teams?: string[]; username?: string; }; export declare type TaskResponse = { task_id: string; }; export declare type DeleteChannelsResponse = { result: Record; } & Partial; export declare type DeleteType = 'soft' | 'hard'; export declare type DeleteUserOptions = { user: DeleteType; conversations?: DeleteType; messages?: DeleteType; new_channel_owner_id?: string; }; export declare type SegmentData = { description: string; filter: {}; name: string; type: 'channel' | 'user'; }; export declare type Segment = { created_at: string; id: string; in_use: boolean; size: number; status: 'computing' | 'ready'; updated_at: string; } & SegmentData; export declare type CampaignSortField = { field: string; value: any; }; export declare type CampaignSort = { fields: CampaignSortField[]; direction?: 'asc' | 'desc'; }; export declare type CampaignQueryOptions = { limit?: number; sort?: CampaignSort; }; export declare type SegmentQueryOptions = CampaignQueryOptions; export declare type RecipientQueryOptions = CampaignQueryOptions; export declare type SegmentFilters = {}; export declare type CampaignFilters = {}; export declare type RecipientFilters = {}; export declare type CampaignData = { attachments: Attachment[]; channel_type: string; defaults: Record; name: string; segment_id: string; text: string; description?: string; sender_id?: string; }; export declare type CampaignStatusName = 'draft' | 'stopped' | 'scheduled' | 'completed' | 'failed' | 'in_progress'; export declare type CampaignStatus = { status: CampaignStatusName; completed_at?: string; errored_messages?: number; failed_at?: string; resumed_at?: string; scheduled_at?: string; scheduled_for?: string; sent_messages?: number; stopped_at?: string; task_id?: string; }; export declare type Campaign = { created_at: string; id: string; updated_at: string; } & CampaignData & CampaignStatus; export declare type TestCampaignResponse = { status: CampaignStatusName; details?: string; results?: Record; }; export declare type DeleteCampaignOptions = { recipients?: boolean; }; export declare type Recipient = { campaign_id: string; channel_cid: string; created_at: string; status: 'pending' | 'sent' | 'failed'; updated_at: string; details?: string; message_id?: string; receiver_id?: string; }; export declare type TaskStatus = { created_at: string; status: string; task_id: string; updated_at: string; error?: { description: string; type: string; }; result?: UR; }; export declare type TruncateOptions = { hard_delete?: boolean; message?: Message; skip_push?: boolean; truncated_at?: Date; user?: UserResponse; user_id?: string; }; export declare type CreateImportURLResponse = { path: string; upload_url: string; }; export declare type CreateImportResponse = { import_task: ImportTask; }; export declare type GetImportResponse = { import_task: ImportTask; }; export declare type CreateImportOptions = { mode: 'insert' | 'upsert'; }; export declare type ListImportsPaginationOptions = { limit?: number; offset?: number; }; export declare type ListImportsResponse = { import_tasks: ImportTask[]; }; export declare type ImportTaskHistory = { created_at: string; next_state: string; prev_state: string; }; export declare type ImportTask = { created_at: string; history: ImportTaskHistory[]; id: string; path: string; state: string; updated_at: string; result?: UR; size?: number; }; export declare type MessageSetType = 'latest' | 'current' | 'new'; export declare type PushProviderUpsertResponse = { push_provider: PushProvider; }; export declare type PushProviderListResponse = { push_providers: PushProvider[]; }; export declare type CreateCallOptions = { id: string; type: string; options?: UR; user?: UserResponse | null; user_id?: string; }; export declare type HMSCall = { room: string; }; export declare type AgoraCall = { channel: string; }; export declare type Call = { id: string; provider: string; agora?: AgoraCall; hms?: HMSCall; }; export declare type CreateCallResponse = APIResponse & { call: Call; token: string; agora_app_id?: string; agora_uid?: number; }; export declare type GetCallTokenResponse = APIResponse & { token: string; agora_app_id?: string; agora_uid?: number; }; declare type ErrorResponseDetails = { code: number; messages: string[]; }; export declare type APIErrorResponse = { code: number; duration: string; message: string; more_info: string; StatusCode: number; details?: ErrorResponseDetails; }; export declare class ErrorFromResponse extends Error { code?: number; response?: { data: T; headers: Record; status: number; statusText: string; request?: any; }; status?: number; } export declare type Role = 'admin' | 'user' | 'guest' | 'anonymous' | 'channel_member' | 'channel_moderator' | string; export {}; //# sourceMappingURL=models.d.ts.map