import { CometChatCardAction, CometChatCardThemeMode, CometChatCardThemeOverride } from '@cometchat/cards-react';
import * as React$1 from 'react';
import React__default, { ReactNode, ButtonHTMLAttributes, InputHTMLAttributes, Ref, CSSProperties, RefObject } from 'react';
import * as react_jsx_runtime from 'react/jsx-runtime';
import { FlagReason } from '@cometchat/chat-sdk-javascript';

type CometChatPresenceSubscription = 'ALL_USERS' | 'FRIENDS' | 'ROLES';
/**
 * Represents the settings required to initialize the CometChat UIKit.
 * This class holds various configuration options, such as app credentials,
 * socket connection settings, and feature toggles.
 *
 * @class UIKitSettings
 */
declare class UIKitSettings {
    /**
     * Unique ID for the app, available on the CometChat dashboard.
     * @type {string}
     */
    readonly appId: string;
    /**
     * Region for the app, such as "us" or "eu".
     * @type {string}
     */
    readonly region: string;
    /**
     * Sets the subscription type for presence.
     * @type {CometChatPresenceSubscription}
     */
    readonly subscriptionType: CometChatPresenceSubscription;
    /**
     * Subscribes to user presence for users having the specified roles.
     * @type {string[]}
     */
    readonly roles: string[];
    /**
     * Configures WebSocket connections. When set to true, establishes connection
     * automatically on app initialization.
     * @type {boolean}
     * @default true
     */
    readonly autoEstablishSocketConnection: boolean;
    /**
     * Authentication key for the app, available on the CometChat dashboard.
     * @type {string}
     */
    readonly authKey?: string;
    /**
     * Custom admin URL, used instead of the default admin URL for dedicated deployments.
     * @type {string}
     */
    readonly adminHost?: string;
    /**
     * Custom client URL, used instead of the default client URL for dedicated deployments.
     * @type {string}
     */
    readonly clientHost?: string;
    /**
     * Storage mode for persisting data.
     * @type {CometChat.StorageMode}
     */
    readonly storageMode: CometChat.StorageMode;
    /**
     * Whether calling functionality is enabled.
     * When true, the Calls SDK is initialized after login.
     * When false (default), call buttons are hidden across all components.
     * @type {boolean}
     * @default false
     */
    readonly callingEnabled: boolean;
    /**
     * Custom CallAppSettings to use when initializing the Calls SDK.
     * If not provided, the UIKit builds default settings from appId and region.
     * Pass a plain object: `{ appId: 'APP_ID', region: 'us' }`.
     * @type {any}
     */
    readonly callAppSettings?: any;
    /**
     * Private constructor to initialize the settings using the provided builder.
     * @param {UIKitSettingsBuilder} builder - The builder instance containing the settings configuration.
     */
    private constructor();
    /**
     * Creates an instance of UIKitSettings from the provided builder.
     * @param {UIKitSettingsBuilder} builder - The builder instance containing the settings configuration.
     * @returns {UIKitSettings} A new instance of UIKitSettings.
     */
    static fromBuilder(builder: UIKitSettingsBuilder): UIKitSettings;
    /**
     * Retrieves the app ID.
     * @returns {string} The unique ID of the app.
     */
    getAppId(): string;
    /**
     * Retrieves the region.
     * @returns {string} The region of the app.
     */
    getRegion(): string;
    /**
     * Retrieves the subscription type for presence.
     * @returns {CometChatPresenceSubscription} The subscription type.
     */
    getSubscriptionType(): CometChatPresenceSubscription;
    /**
     * Retrieves the roles for presence subscription.
     * @returns {string[]} The list of roles subscribed to presence.
     */
    getRoles(): string[];
    /**
     * Checks if auto-establish socket connection is enabled.
     * @returns {boolean} True if auto-establish is enabled, otherwise false.
     */
    isAutoEstablishSocketConnection(): boolean;
    /**
     * Retrieves the authentication key.
     * @returns {string | undefined} The authentication key.
     */
    getAuthKey(): string | undefined;
    /**
     * Retrieves the custom admin host URL.
     * @returns {string | undefined} The admin host URL.
     */
    getAdminHost(): string | undefined;
    /**
     * Retrieves the custom client host URL.
     * @returns {string | undefined} The client host URL.
     */
    getClientHost(): string | undefined;
    /**
     * Retrieves the storage mode.
     * @returns {CometChat.StorageMode} The storage mode.
     */
    getStorageMode(): CometChat.StorageMode;
    /**
     * Checks if calling functionality is enabled.
     * @returns {boolean} True if calling is enabled, otherwise false.
     */
    isCallingEnabled(): boolean;
    /**
     * Retrieves the custom CallAppSettings for Calls SDK initialization.
     * @returns {any | undefined} The custom CallAppSettings, or undefined if not set.
     */
    getCallAppSettings(): any;
}
/**
 * Builder class for constructing UIKitSettings instances.
 * Provides a fluent API for configuring the UIKit initialization settings.
 *
 * @class UIKitSettingsBuilder
 */
declare class UIKitSettingsBuilder {
    /**
     * Unique ID for the app, available on the CometChat dashboard.
     * @type {string}
     */
    appId?: string;
    /**
     * Region for the app, such as "us" or "eu".
     * @type {string}
     */
    region?: string;
    /**
     * Sets the subscription type for presence.
     * @type {CometChatPresenceSubscription}
     */
    subscriptionType?: CometChatPresenceSubscription;
    /**
     * Subscribes to user presence for users having the specified roles.
     * @type {string[]}
     */
    roles?: string[];
    /**
     * Configures WebSocket connections.
     * @type {boolean}
     */
    autoEstablishSocketConnection?: boolean;
    /**
     * Authentication key for the app, available on the CometChat dashboard.
     * @type {string}
     */
    authKey?: string;
    /**
     * Custom admin URL, used instead of the default admin URL for dedicated deployments.
     * @type {string}
     */
    adminHost?: string;
    /**
     * Custom client URL, used instead of the default client URL for dedicated deployments.
     * @type {string}
     */
    clientHost?: string;
    /**
     * Storage mode for persisting data.
     * @type {CometChat.StorageMode}
     */
    storageMode?: CometChat.StorageMode;
    /**
     * Whether calling functionality is enabled.
     * @type {boolean}
     * @default false
     */
    callingEnabled?: boolean;
    /**
     * Custom CallAppSettings for Calls SDK initialization.
     * @type {any}
     */
    callAppSettings?: any;
    /**
     * Builds and returns an instance of UIKitSettings.
     * @returns {UIKitSettings} A new instance of UIKitSettings with the specified configuration.
     */
    build(): UIKitSettings;
    /**
     * Sets the app ID.
     * @param {string} appId - The unique ID of the app.
     * @returns {UIKitSettingsBuilder} The builder instance.
     */
    setAppId(appId: string): this;
    /**
     * Sets the region.
     * @param {string} region - The region of the app.
     * @returns {UIKitSettingsBuilder} The builder instance.
     */
    setRegion(region: string): this;
    /**
     * Sets the authentication key.
     * @param {string} authKey - The authentication key.
     * @returns {UIKitSettingsBuilder} The builder instance.
     */
    setAuthKey(authKey: string): this;
    /**
     * Subscribes to presence updates for all users.
     * @returns {UIKitSettingsBuilder} The builder instance.
     */
    subscribePresenceForAllUsers(): this;
    /**
     * Subscribes to presence updates for friends.
     * @returns {UIKitSettingsBuilder} The builder instance.
     */
    subscribePresenceForFriends(): this;
    /**
     * Subscribes to presence updates for specific roles.
     * @param {string[]} roles - The roles to subscribe to.
     * @returns {UIKitSettingsBuilder} The builder instance.
     */
    subscribePresenceForRoles(roles: string[]): this;
    /**
     * Sets the roles for presence subscription.
     * @param {string[]} roles - The roles to subscribe to.
     * @returns {UIKitSettingsBuilder} The builder instance.
     */
    setRoles(roles: string[]): this;
    /**
     * Enables or disables the auto-establish socket connection.
     * @param {boolean} value - True to enable, false to disable.
     * @returns {UIKitSettingsBuilder} The builder instance.
     */
    setAutoEstablishSocketConnection(value: boolean): this;
    /**
     * Sets the custom admin host URL.
     * @param {string} host - The admin host URL.
     * @returns {UIKitSettingsBuilder} The builder instance.
     */
    setAdminHost(host: string): this;
    /**
     * Sets the custom client host URL.
     * @param {string} host - The client host URL.
     * @returns {UIKitSettingsBuilder} The builder instance.
     */
    setClientHost(host: string): this;
    /**
     * Sets the storage mode.
     * @param {CometChat.StorageMode} mode - The storage mode.
     * @returns {UIKitSettingsBuilder} The builder instance.
     */
    setStorageMode(mode: CometChat.StorageMode): this;
    /**
     * Enables or disables calling functionality.
     * @param {boolean} enabled - True to enable, false to disable.
     * @returns {UIKitSettingsBuilder} The builder instance.
     */
    setCallingEnabled(enabled: boolean): this;
    /**
     * Sets custom CallAppSettings for Calls SDK initialization.
     * If not set, the UIKit builds default settings from appId and region.
     *
     * @example
     * ```typescript
     * new UIKitSettingsBuilder()
     *   .setCallingEnabled(true)
     *   .setCallAppSettings({ appId: 'APP_ID', region: 'us' })
     *   .build();
     * ```
     *
     * @param {any} callAppSettings - The CallAppSettings object.
     * @returns {UIKitSettingsBuilder} The builder instance.
     */
    setCallAppSettings(callAppSettings: any): this;
}

/**
 * Status values for message lifecycle UI events.
 * Matches Angular's MessageStatus enum.
 */
declare enum CometChatMessageStatus {
    /** Message is being sent (optimistic, before SDK confirmation). */
    inprogress = "inprogress",
    /** Message was sent and confirmed by the SDK. */
    success = "success",
    /** Message send/edit failed. */
    error = "error",
    /** Operation was cancelled by the user (e.g., closed edit/reply preview). */
    cancelled = "cancelled"
}
/**
 * Discriminated union of all SDK events emitted by the CometChat SDK listeners.
 * These events originate from the network (other users, other tabs/devices).
 */
type CometChatSDKEvent = {
    type: 'message/text-received';
    message: CometChat.TextMessage;
} | {
    type: 'message/media-received';
    message: CometChat.MediaMessage;
} | {
    type: 'message/custom-received';
    message: CometChat.CustomMessage;
} | {
    type: 'message/interactive-received';
    message: CometChat.InteractiveMessage;
} | {
    type: 'message/card-received';
    message: CometChat.BaseMessage;
} | {
    type: 'message/ai-assistant-received';
    message: CometChat.BaseMessage;
} | {
    type: 'message/edited';
    message: CometChat.BaseMessage;
} | {
    type: 'message/deleted';
    message: CometChat.BaseMessage;
} | {
    type: 'message/moderated';
    message: CometChat.BaseMessage;
} | {
    type: 'receipt/delivered';
    receipt: CometChat.MessageReceipt;
} | {
    type: 'receipt/read';
    receipt: CometChat.MessageReceipt;
} | {
    type: 'receipt/delivered-to-all';
    receipt: CometChat.MessageReceipt;
} | {
    type: 'receipt/read-by-all';
    receipt: CometChat.MessageReceipt;
} | {
    type: 'reaction/added';
    event: CometChat.ReactionEvent;
} | {
    type: 'reaction/removed';
    event: CometChat.ReactionEvent;
} | {
    type: 'typing/started';
    indicator: CometChat.TypingIndicator;
} | {
    type: 'typing/ended';
    indicator: CometChat.TypingIndicator;
} | {
    type: 'user/online';
    user: CometChat.User;
} | {
    type: 'user/offline';
    user: CometChat.User;
} | {
    type: 'group/member-joined';
    action: CometChat.Action;
    joinedUser: CometChat.User;
    joinedGroup: CometChat.Group;
} | {
    type: 'group/member-left';
    action: CometChat.Action;
    leftUser: CometChat.User;
    leftGroup: CometChat.Group;
} | {
    type: 'group/member-kicked';
    action: CometChat.Action;
    kickedUser: CometChat.User;
    kickedBy: CometChat.User;
    kickedFrom: CometChat.Group;
} | {
    type: 'group/member-banned';
    action: CometChat.Action;
    bannedUser: CometChat.User;
    bannedBy: CometChat.User;
    bannedFrom: CometChat.Group;
} | {
    type: 'group/member-unbanned';
    action: CometChat.Action;
    unbannedUser: CometChat.User;
    unbannedBy: CometChat.User;
    unbannedFrom: CometChat.Group;
} | {
    type: 'group/member-added';
    action: CometChat.Action;
    addedBy: CometChat.User;
    addedUser: CometChat.User;
    addedTo: CometChat.Group;
} | {
    type: 'group/member-scope-changed';
    action: CometChat.Action;
    changedUser: CometChat.User;
    newScope: string;
    oldScope: string;
    changedGroup: CometChat.Group;
} | {
    type: 'call/incoming';
    call: CometChat.Call;
} | {
    type: 'call/accepted';
    call: CometChat.Call;
} | {
    type: 'call/rejected';
    call: CometChat.Call;
} | {
    type: 'call/cancelled';
    call: CometChat.Call;
} | {
    type: 'call/ended';
    call: CometChat.Call;
} | {
    type: 'connection/connected';
} | {
    type: 'connection/disconnected';
};
/**
 * Discriminated union of UI events published by components for local
 * cross-component communication. Prefixed with `ui:` to distinguish
 * from SDK events.
 *
 */
type CometChatUIEvent = {
    type: 'ui:message/sent';
    message: CometChat.BaseMessage;
    status: CometChatMessageStatus.inprogress | CometChatMessageStatus.success | CometChatMessageStatus.error;
} | {
    type: 'ui:message/deleted';
    message: CometChat.BaseMessage;
} | {
    type: 'ui:message/read';
    message: CometChat.BaseMessage;
} | {
    type: 'ui:conversation/read';
    conversationId: string;
} | {
    type: 'ui:conversation/updated';
    conversation: CometChat.Conversation;
} | {
    type: 'ui:active-chat/changed';
    user?: CometChat.User;
    group?: CometChat.Group;
    message?: CometChat.BaseMessage;
    unreadMessageCount?: number;
} | {
    type: 'ui:compose/edit';
    message: CometChat.BaseMessage;
    status: CometChatMessageStatus;
    parentMessageId?: number | null | undefined;
} | {
    type: 'ui:compose/reply';
    message: CometChat.BaseMessage;
    status: CometChatMessageStatus.inprogress | CometChatMessageStatus.success | CometChatMessageStatus.cancelled;
    parentMessageId?: number | null | undefined;
} | {
    type: 'ui:compose/text';
    text: string;
} | {
    type: 'ui:compose/recording-started';
    composerInstanceId: string;
} | {
    type: 'ui:user/blocked';
    user: CometChat.User;
} | {
    type: 'ui:user/unblocked';
    user: CometChat.User;
} | {
    type: 'ui:group/created';
    group: CometChat.Group;
} | {
    type: 'ui:group/left';
    group: CometChat.Group;
} | {
    type: 'ui:group/deleted';
    group: CometChat.Group;
} | {
    type: 'ui:group/member-joined';
    joinedUser: CometChat.User;
    joinedGroup: CometChat.Group;
} | {
    type: 'ui:group/member-added';
    messages: CometChat.Action[];
    group: CometChat.Group;
} | {
    type: 'ui:group/member-kicked';
    message: CometChat.Action;
    user: CometChat.User;
    group: CometChat.Group;
} | {
    type: 'ui:group/member-banned';
    message: CometChat.Action;
    user: CometChat.User;
    group: CometChat.Group;
} | {
    type: 'ui:group/member-unbanned';
    message?: CometChat.Action;
    user: CometChat.User;
    group: CometChat.Group;
} | {
    type: 'ui:group/member-scope-changed';
    message: CometChat.Action;
    user: CometChat.User;
    group: CometChat.Group;
    newScope: string;
} | {
    type: 'ui:group/ownership-changed';
    group: CometChat.Group;
    newOwner: CometChat.User;
    previousOwnerUid: string;
} | {
    type: 'ui:thread/opened';
    parentMessage: CometChat.BaseMessage;
} | {
    type: 'ui:thread/closed';
} | {
    type: 'ui:call/outgoing';
    call: CometChat.Call;
} | {
    type: 'ui:call/rejected';
    call: CometChat.Call;
} | {
    type: 'ui:call/ended';
    call?: CometChat.Call;
} | {
    type: 'ui:call/accepted';
    call: CometChat.Call;
} | {
    type: 'ui:call/join';
    sessionId: string;
    message: CometChat.BaseMessage;
} | {
    type: 'ui:conversation/deleted';
    conversation: CometChat.Conversation;
} | {
    type: 'ui:card/action';
    message: CometChat.BaseMessage;
    action: CometChatCardAction;
} | {
    type: 'ui:open-chat';
    user?: CometChat.User;
    group?: CometChat.Group;
} | {
    type: 'ui:panel/show';
    position: 'messageListFooter' | 'messageListHeader';
    panel: 'smartReplies' | 'conversationSummary' | 'conversationStarters';
} | {
    type: 'ui:panel/hide';
    position: 'messageListFooter' | 'messageListHeader';
};
/** All CometChat events — SDK (from network) + UI (from local actions). */
type CometChatEvent = CometChatSDKEvent | CometChatUIEvent;

/**
 * CometChatUIKit — static facade for initializing and interacting with the UIKit.
 *
 * Provides a single entry point for:
 * - SDK initialization (with UIKit-specific configuration)
 * - User login/logout with session resumption
 * - Plugin registry management
 * - Calling SDK initialization
 * - Convenience send methods (for non-React usage)
 *
 * Usage:
 * ```typescript
 * import { CometChatUIKit, UIKitSettingsBuilder } from '@cometchat/chat-uikit-react';
 *
 * const settings = new UIKitSettingsBuilder()
 *   .setAppId('APP_ID')
 *   .setRegion('us')
 *   .setAuthKey('AUTH_KEY')
 *   .subscribePresenceForAllUsers()
 *   .setCallingEnabled(true)
 *   .build();
 *
 * await CometChatUIKit.init(settings);
 * const user = await CometChatUIKit.login('superhero1');
 * ```
 */
declare class CometChatUIKit {
    private static _settings;
    private static _loggedInUser;
    private static _initialized;
    /** Settings from the initFromSettings() (ai-agent) path; routes the Calls SDK through initFromSettings too. Null on plain init(). */
    private static _callsInitSettings;
    private static _callingReady;
    private static _loginListenerId;
    private static _conversationUpdateSettings;
    private static _emit;
    /**
     * Register the emit function from CometChatEventsProvider.
     * Called internally by the provider on mount/unmount.
     */
    static _setEmit(fn: ((event: CometChatEvent) => void) | null): void;
    /** Returns the UIKit settings used during initialization. */
    static getSettings(): UIKitSettings | null;
    /** Returns the currently logged-in user (synchronous). */
    static getLoggedInUser(): CometChat.User | null;
    /** Returns whether the SDK has been initialized. */
    static isInitialized(): boolean;
    /** Returns whether the Calls SDK is ready. */
    static isCallingReady(): boolean;
    /** Returns the conversation update settings fetched from the dashboard. */
    static getConversationUpdateSettings(): CometChat.ConversationUpdateSettings | null;
    /**
     * Initialize the CometChat SDK and UIKit.
     *
     * This:
     * 1. Validates settings
     * 2. Builds AppSettings from UIKitSettings
     * 3. Calls CometChat.init()
     * 4. Sets source metadata for analytics
     * 5. Sets up plugin registry
     * 6. Resumes existing session (if any)
     * 7. Initializes Calls SDK (if enabled)
     */
    static init(settings: UIKitSettings): Promise<CometChat.User | null>;
    /**
     * @internal
     * File-based init for AI agent skills.
     * Calls CometChat.initFromSettings(settings) which sets
     * integrationSource = "ai-agent" in persistent storage.
     *
     * This method is completely independent of init() — new→new, old→old.
     * Regular init(uikitSettings) does NOT set the integrationSource flag.
     */
    static initFromSettings(settings: CometChat.CometChatSettings): Promise<CometChat.User | null>;
    /**
     * Log in a user by UID.
     * Requires authKey to be set in UIKitSettings.
     */
    static login(uid: string): Promise<CometChat.User>;
    /**
     * Log in a user with an auth token.
     */
    static loginWithAuthToken(authToken: string): Promise<CometChat.User>;
    /**
     * Log out the current user.
     */
    static logout(): Promise<void>;
    /**
     * Create a new user.
     * Requires authKey in UIKitSettings.
     */
    static createUser(user: CometChat.User): Promise<CometChat.User>;
    /**
     * Update an existing user.
     * Requires authKey in UIKitSettings.
     */
    static updateUser(user: CometChat.User): Promise<CometChat.User>;
    /**
     * Send a text message with optimistic UI updates.
     * Emits 'ui:message/sent' at each stage (inprogress → success/error).
     */
    static sendTextMessage(message: CometChat.TextMessage): Promise<CometChat.BaseMessage>;
    /**
     * Send a media message with optimistic UI updates.
     * Emits 'ui:message/sent' at each stage (inprogress → success/error).
     */
    static sendMediaMessage(message: CometChat.MediaMessage): Promise<CometChat.BaseMessage>;
    /**
     * Send a custom message with optimistic UI updates.
     * Emits 'ui:message/sent' at each stage (inprogress → success/error).
     */
    static sendCustomMessage(message: CometChat.CustomMessage): Promise<CometChat.BaseMessage>;
    /** Post-login initialization: calls SDK, conversation settings, login listener. */
    private static _postLogin;
    /** Attach SDK login listener to track login/logout from other tabs or direct SDK calls. */
    private static _attachLoginListener;
    /** Initialize the Calls SDK. */
    private static _initCalling;
    /** Prepare a message for sending (set muid, sentAt, sender). */
    private static _prepareMessage;
    /** Throw if not initialized. */
    private static _checkInitialized;
}

/**
 * CometChatCalls — dynamic import wrapper for the optional Calls SDK.
 *
 * The Calls SDK (`@cometchat/calls-sdk-javascript`) is an optional peer dependency.
 * This module attempts to import it. If unavailable (not installed,
 * test environment, SSR), `CometChatUIKitCalls` will be `null`.
 *
 * In ESM/Vite environments, `require()` is not available. The SDK is loaded
 * asynchronously via `loadCallsSDK()` called from `CometChatUIKit._initCalling()`
 * or `CometChatProvider`'s calling init effect.
 *
 * Usage:
 * ```typescript
 * import { CometChatUIKitCalls } from '@cometchat/chat-uikit-react';
 *
 * if (CometChatUIKitCalls) {
 *   // Initialize with plain object
 *   await CometChatUIKitCalls.init({ appId: 'APP_ID', region: 'us' });
 *
 *   // Login (after Chat SDK login)
 *   await CometChatUIKitCalls.loginWithAuthToken(authToken);
 *
 *   // Generate token and join session
 *   const { token } = await CometChatUIKitCalls.generateToken(sessionId);
 *   CometChatUIKitCalls.joinSession(token, callSettings, element);
 *
 *   // Register event listeners
 *   const unsub = CometChatUIKitCalls.addEventListener('onSessionLeft', () => { });
 *
 *   // Leave session
 *   CometChatUIKitCalls.leaveSession();
 * }
 * ```
 */
/**
 * The Calls SDK reference. Starts as `null` and is populated either:
 * 1. Synchronously via `require()` in CJS/webpack environments
 * 2. Asynchronously via `loadCallsSDK()` after dynamic import in ESM/Vite environments
 */
declare let CometChatUIKitCalls: any;
/**
 * Dynamically load the Calls SDK in ESM/Vite environments.
 *
 * Uses a literal specifier so Vite's dev server and bundler resolve it
 * correctly when the package is installed. When not installed, the
 * `optionalPeerDependency` Vite plugin (in vite.config.ts) intercepts the
 * import and returns a virtual empty module instead of throwing a build error.
 * The null-check below handles that case at runtime.
 *
 * Returns the resolved CometChatCalls object, or null if not installed.
 */
declare function loadCallsSDK(): Promise<any>;
/**
 * Initialize the Calls SDK reference.
 * Call this after the SDK is loaded asynchronously (e.g., via dynamic import).
 * The CometChatUIKit class and CometChatProvider call this during initialization.
 */
declare function initCallsSDK(sdk: any): void;

/** Supported theme values. */
type CometChatTheme = 'light' | 'dark';
/** Context value for theme. */
interface CometChatThemeContextValue {
    /** Current theme. */
    theme: CometChatTheme;
    /** Toggle or set theme programmatically. */
    setTheme: (theme: CometChatTheme) => void;
}
/** Props for CometChatThemeProvider. */
interface CometChatThemeProviderProps {
    /**
     * The active theme. Controls the `data-theme` attribute on the wrapper.
     * CSS custom properties in css-variables.css respond to this attribute.
     * Default: 'light'.
     */
    theme?: CometChatTheme;
    /** Children. */
    children: ReactNode;
}

/**
 * Cross-cutting display settings used by multiple components.
 *
 * Set once at the provider level, read by any component via `useGlobalConfig()`.
 * Individual component props override these values when explicitly set.
 */
interface CometChatGlobalConfig {
    /** Hide read receipt indicators across all components. Default: false. */
    hideReceipts?: boolean;
    /** Hide user online/offline status across all components. Default: false. */
    hideUserStatus?: boolean;
    /** Disable sound for incoming/outgoing calls. Default: false. */
    disableSoundForCalls?: boolean;
    /** Custom sound URL for calls. */
    customSoundForCalls?: string;
    /** Disable sound for incoming messages across all components. Default: false. */
    disableSoundForMessages?: boolean;
    /** Custom sound URL for incoming messages. */
    customSoundForMessages?: string;
    /**
     * Custom call settings builder for ongoing call sessions.
     * Passed to OngoingCall component when a call is started.
     * If not set, the component creates default settings internally.
     */
    callSettingsBuilder?: any;
}

/**
 * Abstract base class for text formatters.
 *
 * Formatters detect patterns in text and apply formatting transformations.
 * They can be chained together — each formatter receives the output of the
 * previous one. Formatters are applied in order of their `priority` property
 * (lower = earlier in pipeline).
 *
 * Formatters handle ONLY bubble display (text → HTML). Composer input
 * handling and message metadata are separate concerns.
 *
 * @example
 * ```typescript
 * class HashtagFormatter extends CometChatTextFormatter {
 *   readonly id = 'hashtag-formatter';
 *   priority = 50;
 *   getRegex() { return /(#\w+)/g; }
 *   format(text: string): string {
 *     this.originalText = text;
 *     this.formattedText = text.replace(this.getRegex(), '<span class="hashtag">$1</span>');
 *     return this.formattedText;
 *   }
 * }
 * ```
 */
declare abstract class CometChatTextFormatter {
    /** Formatter priority (lower = earlier in pipeline). Default is 100. */
    priority: number;
    /** Unique identifier for this formatter. */
    abstract readonly id: string;
    /** The original unformatted text. */
    protected originalText: string;
    /** The formatted text after applying transformations. */
    protected formattedText: string;
    /** Metadata extracted during formatting (e.g., mentions, URLs). */
    protected metadata: Record<string, unknown>;
    /** Get the regex pattern for detecting formattable content. */
    abstract getRegex(): RegExp;
    /**
     * Format the input text by applying transformations.
     * Must store originalText, apply transformations, store formattedText, and return it.
     */
    abstract format(text: string): string;
    /** Get the formatted text after format() has been called. */
    getFormattedText(): string;
    /** Get the original unformatted text. */
    getOriginalText(): string;
    /** Get metadata extracted during formatting. */
    getMetadata(): Record<string, unknown>;
    /** Reset the formatter state. */
    reset(): void;
    /**
     * Check if this formatter should process the given text.
     * Override to conditionally skip formatting. Default: always format.
     */
    shouldFormat(_text: string, // eslint-disable-line @typescript-eslint/no-unused-vars
    _message?: CometChat.BaseMessage): boolean;
}

/** Alignment of a message bubble in the message list. */
type CometChatMessageBubbleAlignment = 'left' | 'right' | 'center';
/** A single option in the message context menu (long-press / hover menu). */
interface CometChatMessageOption {
    /** Unique identifier (e.g., 'react', 'reply', 'copy', 'edit', 'delete'). */
    id: string;
    /** Display title (localized). */
    title: string;
    /** Icon URL or inline SVG string. */
    iconURL?: string;
    /** Callback when the option is selected. */
    onClick: (message: CometChat.BaseMessage) => void;
    /** Show only for messages sent by the logged-in user. */
    senderOnly?: boolean;
    /** Show only for messages NOT sent by the logged-in user. */
    receiverOnly?: boolean;
    /** Show only in group conversations. */
    groupOnly?: boolean;
}
/** Context passed to every plugin method. Contains the current user, conversation, and UI state. */
interface CometChatMessagePluginContext {
    /** The currently logged-in user. */
    loggedInUser: CometChat.User;
    /** The group (if the conversation is a group chat). Undefined for 1:1 chats. */
    group?: CometChat.Group;
    /** Bubble alignment for the current message. */
    alignment: CometChatMessageBubbleAlignment;
    /** Batch position within a multi-attachment batch group ('first'|'middle'|'last'|'single'). */
    batchPosition?: 'first' | 'middle' | 'last' | 'single';
    /** Current theme. */
    theme: 'light' | 'dark';
    /** Localization function. Returns the translated string for a given key. */
    getLocalizedString?: (key: string) => string;
    /** Delete a message. Shows confirm dialog, then calls SDK. */
    onDeleteMessage?: (message: CometChat.BaseMessage) => void;
    /** Open the flag/report dialog for a message. */
    onFlagMessage?: (message: CometChat.BaseMessage) => void;
    /** Open thread view for a message. */
    onThreadClick?: (message: CometChat.BaseMessage) => void;
    /** Mark a message as unread. Updates conversation unread count and last read ID. */
    onMarkAsUnread?: (message: CometChat.BaseMessage) => void;
    /** Show a toast notification with the given text. */
    showToast?: (text: string) => void;
    /** Disable text truncation (read more / show less) in text bubbles. */
    disableTruncation?: boolean;
    /** Disable interaction (click handlers, options) on the bubble. Used in thread header parent bubble. */
    disableInteraction?: boolean;
    /** Set a message into edit mode in the composer. */
    onEditMessage?: (message: CometChat.BaseMessage) => void;
    /** Set a message as the reply-to target in the composer. */
    onReplyMessage?: (message: CometChat.BaseMessage) => void;
    /** Open the emoji picker to react to a message. */
    onReactToMessage?: (message: CometChat.BaseMessage) => void;
    /** Open the message information panel for a message. */
    onMessageInfo?: (message: CometChat.BaseMessage) => void;
    /** Publish a UI event for cross-component communication. */
    publish?: (event: CometChatUIEvent) => void;
    /** Get text formatters from the plugin registry (for caption rendering in media bubbles). */
    getTextFormatters?: () => CometChatTextFormatter[];
    hideReplyOption?: boolean;
    hideReplyInThreadOption?: boolean;
    hideEditMessageOption?: boolean;
    hideDeleteMessageOption?: boolean;
    hideCopyMessageOption?: boolean;
    hideReactionOption?: boolean;
    hideMessageInfoOption?: boolean;
    hideFlagMessageOption?: boolean;
    hideMessagePrivatelyOption?: boolean;
    hideTranslateMessageOption?: boolean;
    showMarkAsUnreadOption?: boolean;
}
/**
 * The core plugin interface. Every message type plugin implements this.
 *
 * A plugin owns one or more message types within one or more categories.
 * It provides bubble rendering, context menu options, conversation list preview,
 * text formatters, and composer attachment options.
 */
interface CometChatMessagePlugin {
    /** Unique plugin identifier (e.g., 'text', 'image', 'polls'). */
    id: string;
    /** SDK message types this plugin handles (e.g., ['text'], ['image'], ['groupMember']). */
    messageTypes: string[];
    /** SDK message categories this plugin handles (e.g., ['message'], ['action']). */
    messageCategories: string[];
    /**
     * Render the bubble content for a message.
     * Returns only the inner content — the outer bubble wrapper is handled by CometChatMessageBubble.
     */
    renderBubble(message: CometChat.BaseMessage, context: CometChatMessagePluginContext): ReactNode;
    /**
     * Return context menu options for a message.
     * Return an empty array for messages that have no options (e.g., group actions, deleted).
     */
    getOptions?(message: CometChat.BaseMessage, context: CometChatMessagePluginContext): CometChatMessageOption[];
    /**
     * Return a plain-text preview for the conversation list subtitle.
     * Must return plain text — no HTML, no markdown. Truncate to ~100 chars.
     * @param t - Optional localization function. Use it to translate preview strings.
     */
    getLastMessagePreview?(message: CometChat.BaseMessage, loggedInUser: CometChat.User, t?: (key: string) => string): string;
    /**
     * Return text formatters this plugin provides.
     * Only relevant for the text plugin. Other plugins return undefined or [].
     */
    getTextFormatters?(): CometChatTextFormatter[];
    /**
     * Render the leading view (avatar area) for a message bubble.
     * Default: avatar for incoming messages in group chats.
     */
    renderLeadingView?(message: CometChat.BaseMessage, context: CometChatMessagePluginContext): ReactNode;
    /**
     * Render the header view (sender name area) for a message bubble.
     * Default: sender name for incoming messages in group chats.
     */
    renderHeaderView?(message: CometChat.BaseMessage, context: CometChatMessagePluginContext): ReactNode;
    /**
     * Render the footer view (below content, e.g., reactions) for a message bubble.
     * Default: CometChatReactions when the message has reactions.
     */
    renderFooterView?(message: CometChat.BaseMessage, context: CometChatMessagePluginContext): ReactNode;
    /**
     * Render the bottom view (moderation/error footer) for a message bubble.
     * Default: CometChatModerationView for disapproved or permission-denied messages.
     */
    renderBottomView?(message: CometChat.BaseMessage, context: CometChatMessagePluginContext): ReactNode;
    /**
     * Render the status info view (timestamp, receipts, "edited") for a message bubble.
     * Default: timestamp + delivery/read receipts + "edited" indicator.
     */
    renderStatusInfoView?(message: CometChat.BaseMessage, context: CometChatMessagePluginContext): ReactNode;
    /**
     * Render the reply view (quoted message preview) for a message bubble.
     * Default: CometChatMessageReplyPreview when the message has a quoted message.
     */
    renderReplyView?(message: CometChat.BaseMessage, context: CometChatMessagePluginContext): ReactNode;
    /**
     * Render the thread view (reply count indicator) for a message bubble.
     * Default: CometChatThreadView with reply count.
     */
    renderThreadView?(message: CometChat.BaseMessage, context: CometChatMessagePluginContext): ReactNode;
}

/**
 * Types for the CometChatProvider — context composition for the UIKit.
 */

/** Props for the root CometChatProvider. */
interface CometChatProviderProps {
    /** Additional plugins beyond the default set. Merged with defaultPlugins internally. */
    plugins?: CometChatMessagePlugin[];
    /**
     * Plugins to exclude — including defaults. Each entry is matched against every
     * plugin's `messageTypes`/`messageCategories`: a plugin is removed when its
     * `messageTypes` includes `text` AND its `messageCategories` includes `category`.
     *
     * ```tsx
     * <CometChatProvider removePlugins={[{ text: 'extension_poll', category: 'custom' }]}>
     * ```
     */
    removePlugins?: {
        text: string;
        category: string;
    }[];
    /** Global config overrides (hideReceipts, hideUserStatus, etc.). */
    config?: CometChatGlobalConfig;
    /** Theme: 'light' or 'dark'. Default: 'light'. */
    theme?: CometChatTheme;
    /** Locale override (e.g., 'en', 'fr', 'de'). Default: browser language. */
    locale?: string;
    children: ReactNode;
}

declare const CometChatProvider: React__default.FC<CometChatProviderProps>;

/**
 * useLoggedInUser — get the logged-in user.
 *
 * Reads synchronously from CometChatUIKit first (instant if init+login was done via UIKit class).
 * Falls back to async CometChat.getLoggedinUser() for cases where the SDK was initialized directly.
 * SSR-safe: returns null if no user is available.
 *
 * Use this in components that can render without a user (graceful degradation).
 * For components that REQUIRE a user, check the return value and handle null.
 */
declare function useLoggedInUser(): CometChat.User | null;

interface CometChatFrameContextValue {
    iframeDocument: Document | null;
    iframeWindow: Window | null;
    iframe: HTMLIFrameElement | null;
}
interface CometChatFrameProviderProps {
    children: ReactNode;
    iframeId: string;
}
declare const useCometChatFrameContext: () => CometChatFrameContextValue;
declare const CometChatFrameProvider: React__default.FC<CometChatFrameProviderProps>;

/**
 * Log level enum defining verbosity levels.
 * Ordered from least verbose (none) to most verbose (debug).
 */
declare enum LogLevel {
    none = 0,
    error = 1,
    warn = 2,
    info = 3,
    debug = 4
}
/** Sets the active log level. Only messages at this level or below are output. */
declare function setLogLevel(level: LogLevel): void;
/** Returns the current log level. */
declare function getLogLevel(): LogLevel;
/** Logs an error message if the current level permits. */
declare function error(tag: string, message: string, ...args: unknown[]): void;
/** Logs a warning message if the current level permits. */
declare function warn(tag: string, message: string, ...args: unknown[]): void;
/** Logs an informational message if the current level permits. */
declare function info(tag: string, message: string, ...args: unknown[]): void;
/** Logs a debug message if the current level permits. */
declare function debug(tag: string, message: string, ...args: unknown[]): void;
/**
 * Centralized logging utility for the CometChat UIKit.
 * All internal logging goes through this object so consumers can control verbosity.
 *
 * @example
 * ```ts
 * import { CometChatLogger, LogLevel } from '@cometchat/chat-uikit-react';
 * CometChatLogger.setLogLevel(LogLevel.debug);
 * ```
 */
declare const CometChatLogger: {
    readonly setLogLevel: typeof setLogLevel;
    readonly getLogLevel: typeof getLogLevel;
    readonly error: typeof error;
    readonly warn: typeof warn;
    readonly info: typeof info;
    readonly debug: typeof debug;
};

/**
 * CometChatUIKitUtility — utility class providing helper methods
 * such as deep cloning, ID generation, and Unix timestamp retrieval.
 *
 */
/**
 * Creates a deep copy of the value provided.
 *
 * @remarks
 * This function cannot copy truly private properties (those that start with a "#" symbol inside a class block).
 * Functions are copied by reference and additional properties on array objects are ignored.
 *
 * @param arg - Any value
 * @returns A deep copy of `arg`
 */
declare function clone<T>(arg: T): T;
/**
 * Generates a unique ID.
 * @returns A unique string identifier.
 */
declare function generateId(): string;
/**
 * Retrieves the current Unix timestamp (seconds).
 * @returns The Unix timestamp.
 */
declare function getUnixTimestamp(): number;
/**
 * Creates a CometChat.Action message for group member actions.
 *
 * @param actionOn - The group member the action is performed on
 * @param action - The action string (e.g., 'kicked', 'banned', 'added', 'scopeChanged')
 * @param group - The group where the action occurred
 * @param loggedInUser - The user performing the action
 * @returns A properly constructed CometChat.Action message
 */
declare function createActionMessage(actionOn: CometChat.GroupMember | CometChat.User, action: string, group: CometChat.Group, loggedInUser: CometChat.User): CometChat.Action;
declare const CometChatUIKitUtility: {
    clone: typeof clone;
    ID: typeof generateId;
    getUnixTimestamp: typeof getUnixTimestamp;
    createActionMessage: typeof createActionMessage;
};

/** Batch position within a multi-attachment batch group. */
type BatchPosition = 'first' | 'middle' | 'last' | 'single';
/**
 * Reads the `batchId` from a message's metadata, null-guarded.
 * Returns `undefined` if the message has no batchId.
 */
declare function getMessageBatchId(message: CometChat.BaseMessage | undefined | null): string | undefined;
/**
 * Computes the batch position of a message given its immediate neighbors.
 *
 * Groups consecutive messages by comparing each message's `batchId` to only its
 * immediate previous and next neighbors (R6.1). The result drives chrome
 * suppression in the renderer:
 *
 * | Position | Avatar+Name | StatusInfo |
 * |----------|-------------|------------|
 * | first    | show        | suppress   |
 * | middle   | suppress    | suppress   |
 * | last     | suppress    | show       |
 * | single   | show        | show       |
 *
 * Voice notes have no batchId → always 'single'.
 */
declare function computeBatchPosition(prev: CometChat.BaseMessage | undefined | null, current: CometChat.BaseMessage | undefined | null, next: CometChat.BaseMessage | undefined | null): BatchPosition;

/** A single action item rendered inside the sheet. */
interface CometChatActionSheetItemData {
    /** Unique identifier. */
    id: string;
    /** Display title. */
    title: string;
    /** Icon element (SVG or ReactNode). */
    icon?: ReactNode;
    /** Callback when item is selected. */
    onClick: () => void;
    /** Optional secondary text. */
    subtitle?: string;
    /** Whether the item is disabled. */
    disabled?: boolean;
    /** Optional custom className. */
    className?: string;
}
/** Layout mode for the action sheet. */
type CometChatActionSheetLayoutMode = 'list' | 'grid';
/** Props for ActionSheetRoot. */
interface CometChatActionSheetRootProps {
    /** Whether the sheet is open. */
    isOpen: boolean;
    /** Callback when the sheet requests to close (backdrop click, Escape key). */
    onClose: () => void;
    /** Layout mode. Defaults to 'list'. */
    layoutMode?: CometChatActionSheetLayoutMode;
    /** Optional title displayed in the header. */
    title?: string;
    /** Children (ActionSheet.Item elements or custom content). */
    children: ReactNode;
    /** Optional custom className for the root container. */
    className?: string;
}
/** Props for ActionSheetItem. */
interface CometChatActionSheetItemProps {
    /** The action item data. */
    item: CometChatActionSheetItemData;
    /** Optional custom className. */
    className?: string;
}
/** Props for ActionSheetHeader. */
interface CometChatActionSheetHeaderProps {
    /** Title text. */
    title?: string;
    /** Optional close button callback. */
    onClose?: () => void;
    /** Children for custom header content. */
    children?: ReactNode;
}
/** Props for ActionSheetLayout. */
interface CometChatActionSheetLayoutProps {
    /** Layout mode: list (vertical) or grid (icon grid). Defaults to 'list'. */
    mode?: CometChatActionSheetLayoutMode;
    /** Children (ActionSheet.Item elements). */
    children: ReactNode;
}
/** Context value for ActionSheet. */
interface CometChatActionSheetContextValue {
    isOpen: boolean;
    onClose: () => void;
    layoutMode: CometChatActionSheetLayoutMode;
}

/**
 * Flat API props for CometChatActionSheet.
 * Renders Root + Header + Layout with Items in one call.
 */
interface CometChatActionSheetProps extends Omit<CometChatActionSheetRootProps, 'children' | 'title'> {
    /** Header title. */
    title?: string;
    /** Callback for the header close button. Defaults to onClose. */
    onHeaderClose?: () => void;
    /** Items to render in the sheet layout. */
    items?: CometChatActionSheetItemData[];
}
declare const CometChatActionSheet: React__default.FC<CometChatActionSheetProps> & {
    Root: React__default.FC<CometChatActionSheetRootProps>;
    Item: React__default.FC<CometChatActionSheetItemProps>;
    Header: React__default.FC<CometChatActionSheetHeaderProps>;
    Layout: React__default.FC<CometChatActionSheetLayoutProps>;
};

declare function useCometChatActionSheetContext(): CometChatActionSheetContextValue;

/** Visual variant of the button. */
type CometChatButtonVariant = 'primary' | 'secondary' | 'ghost';
/** Size variant of the button. */
type CometChatButtonSize = 'sm' | 'md' | 'lg';
/** Props for CometChatButton.Root. */
interface CometChatButtonRootProps extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'children'> {
    /** Visual variant. Defaults to 'primary'. */
    variant?: CometChatButtonVariant;
    /** Size variant. Defaults to 'md'. */
    size?: CometChatButtonSize;
    /** Whether the button is in a loading state. */
    isLoading?: boolean;
    /** Accessible label for the loading state. */
    loadingLabel?: string;
    /** Tooltip text shown on hover (maps to native title attribute). */
    hoverText?: string;
    /** Children (CometChatButton.Icon, CometChatButton.Text, or custom content). */
    children: ReactNode;
    /** Optional custom className. */
    className?: string;
}
/** Props for CometChatButton.Icon. */
interface CometChatButtonIconProps {
    /** Icon content — accepts ReactNode (SVG component, img, etc.). */
    children: ReactNode;
    /** Optional custom className. */
    className?: string;
}
/** Props for CometChatButton.Text. */
interface CometChatButtonTextProps {
    /** Text content. */
    children: ReactNode;
    /** Optional custom className. */
    className?: string;
}
/** Context value for CometChatButton. */
interface CometChatButtonContextValue {
    variant: CometChatButtonVariant;
    size: CometChatButtonSize;
    isLoading: boolean;
    disabled: boolean;
}

/**
 * Flat API props for CometChatButton.
 * Renders Root + optional Icon + optional Text in one call.
 */
interface CometChatButtonProps extends Omit<CometChatButtonRootProps, 'children'> {
    /** Icon content (SVG component, img, etc.). Rendered inside CometChatButton.Icon. */
    icon?: React__default.ReactNode;
    /** Text content. Rendered inside CometChatButton.Text. */
    text?: React__default.ReactNode;
}
declare const CometChatButton: React__default.ForwardRefExoticComponent<CometChatButtonProps & React__default.RefAttributes<HTMLButtonElement>> & {
    Root: React__default.ForwardRefExoticComponent<CometChatButtonRootProps & React__default.RefAttributes<HTMLButtonElement>>;
    Icon: React__default.FC<CometChatButtonIconProps>;
    Text: React__default.FC<CometChatButtonTextProps>;
};

declare function useCometChatButtonContext(): CometChatButtonContextValue;

/** Event payload emitted on checkbox state change. */
interface CometChatCheckboxChangeEvent {
    /** Whether the checkbox is now checked. */
    checked: boolean;
    /** The label text, if provided. */
    label?: string;
    /** Whether the Shift key was held during the click. */
    shiftKey?: boolean;
    /** Whether the Meta/Cmd key was held during the click. */
    metaKey?: boolean;
}
/** Props for CometChatCheckbox. */
interface CometChatCheckboxProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'onChange' | 'type' | 'children'> {
    /** Whether the checkbox is checked (controlled mode). */
    checked?: boolean;
    /** Default checked state (uncontrolled mode). */
    defaultChecked?: boolean;
    /** Label text displayed next to the checkbox. */
    label?: string;
    /** Whether the checkbox is disabled. */
    disabled?: boolean;
    /** Callback fired when the checkbox value changes. */
    onChange?: (event: CometChatCheckboxChangeEvent) => void;
    /** Optional custom className. */
    className?: string;
}

/**
 * CometChatCheckbox — a controlled/uncontrolled checkbox with support
 * for shift/meta key detection (used for range-select in list components).
 *
 * Usage:
 * ```tsx
 * <CometChatCheckbox
 *   checked={isSelected}
 *   label="Select"
 *   onChange={({ checked, shiftKey }) => handleSelect(checked, shiftKey)}
 * />
 * ```
 */
declare const CometChatCheckbox: React__default.ForwardRefExoticComponent<CometChatCheckboxProps & React__default.RefAttributes<HTMLInputElement>>;

/** Event payload emitted on radio button state change. */
interface CometChatRadioButtonChangeEvent {
    /** Whether the radio button is now checked. */
    checked: boolean;
    /** The label text, if provided. */
    label?: string | undefined;
    /** The value of the radio button. */
    value?: string | undefined;
}
/** Props for CometChatRadioButton. */
interface CometChatRadioButtonProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'onChange' | 'type' | 'children'> {
    /** Whether the radio button is checked (controlled mode). */
    checked?: boolean;
    /** Default checked state (uncontrolled mode). */
    defaultChecked?: boolean;
    /** Label text displayed next to the radio button. */
    label?: string;
    /** Whether the radio button is disabled. */
    disabled?: boolean;
    /** Name for grouping radio buttons — only one in a group can be selected. */
    name?: string;
    /** Value of the radio button submitted with the form. */
    value?: string;
    /** Custom aria-label that overrides label for accessibility. */
    ariaLabel?: string;
    /** Callback fired when the radio button value changes. */
    onChange?: (event: CometChatRadioButtonChangeEvent) => void;
    /** Optional custom className. */
    className?: string;
}

/**
 * CometChatRadioButton — a controlled/uncontrolled radio button with label,
 * grouping via `name`, and full keyboard accessibility.
 *
 * Radio group behavior (single-selection) is handled natively by the browser
 * when multiple radio inputs share the same `name` attribute.
 *
 * Usage:
 * ```tsx
 * <CometChatRadioButton
 *   name="poll"
 *   value="option-1"
 *   label="Option 1"
 *   checked={selected === 'option-1'}
 *   onChange={({ value }) => setSelected(value)}
 * />
 * ```
 */
declare const CometChatRadioButton: React__default.ForwardRefExoticComponent<CometChatRadioButtonProps & React__default.RefAttributes<HTMLInputElement>>;

/** Media type supported by the fullscreen viewer. */
type CometChatFullScreenViewerMediaType = 'image' | 'video' | 'audio' | 'file';
/** A single media attachment for gallery mode. */
interface CometChatMediaAttachment {
    /** Media URL. */
    url: string;
    /** Type of media. */
    type: CometChatFullScreenViewerMediaType;
    /** File name (displayed in header and file preview). */
    name?: string;
    /** File size in bytes (displayed in header and file preview). */
    size?: number;
}
/** Props for CometChatFullScreenViewer.Root. */
interface CometChatFullScreenViewerRootProps {
    /** Callback when the viewer requests to close. */
    onClose: () => void;
    /** Media URL (single mode). */
    url?: string;
    /** Media type (single mode). Defaults to 'image'. */
    mediaType?: CometChatFullScreenViewerMediaType;
    /** File name (single mode). */
    fileName?: string;
    /** File size in bytes (single mode). */
    fileSize?: number;
    /** Array of media attachments (gallery mode). */
    attachments?: CometChatMediaAttachment[];
    /** Starting index for gallery mode. Defaults to 0. */
    startIndex?: number;
    /** Sender name displayed in header. */
    senderName?: string;
    /** Sender avatar URL displayed in header. */
    senderAvatar?: string;
    /** Sender status text. */
    senderStatus?: string;
    /** Formatted timestamp string displayed in header. */
    sentAt?: string;
    /** Callback when the gallery index changes. */
    onIndexChange?: (index: number) => void;
    /** Callback when the download button is clicked. */
    onDownload?: (attachment: CometChatMediaAttachment | string) => void;
    /** Children (sub-components or custom content). */
    children?: ReactNode;
    /** Optional custom className. */
    className?: string;
}
/** Props for CometChatFullScreenViewer.Header. */
interface CometChatFullScreenViewerHeaderProps {
    /** Override default header content. */
    children?: ReactNode;
    /** Optional custom className. */
    className?: string;
}
/** Props for CometChatFullScreenViewer.Body. */
interface CometChatFullScreenViewerBodyProps {
    /** Override default body content. */
    children?: ReactNode;
    /** Optional custom className. */
    className?: string;
}
/** Props for CometChatFullScreenViewer.Navigation. */
interface CometChatFullScreenViewerNavigationProps {
    /** Optional custom className. */
    className?: string;
}
/** Context value for CometChatFullScreenViewer. */
interface CometChatFullScreenViewerContextValue {
    onClose: () => void;
    mediaType: CometChatFullScreenViewerMediaType;
    currentUrl: string;
    currentIndex: number;
    attachments: CometChatMediaAttachment[];
    isGalleryMode: boolean;
    canNavigatePrev: boolean;
    canNavigateNext: boolean;
    navigatePrev: () => void;
    navigateNext: () => void;
    senderName: string | undefined;
    senderAvatar: string | undefined;
    senderStatus: string | undefined;
    sentAt: string | undefined;
    fileName: string | undefined;
    fileSize: number | undefined;
    onDownload: ((attachment: CometChatMediaAttachment | string) => void) | undefined;
}

/**
 * Flat API props for CometChatFullScreenViewer.
 * Same as Root props but without children (always renders default layout).
 */
type CometChatFullScreenViewerProps = Omit<CometChatFullScreenViewerRootProps, 'children'>;
declare const CometChatFullScreenViewer: React__default.FC<CometChatFullScreenViewerProps> & {
    Root: React__default.FC<CometChatFullScreenViewerRootProps>;
    Header: React__default.FC<CometChatFullScreenViewerHeaderProps>;
    Body: React__default.FC<CometChatFullScreenViewerBodyProps>;
    Navigation: React__default.FC<CometChatFullScreenViewerNavigationProps>;
};

declare function useCometChatFullScreenViewerContext(): CometChatFullScreenViewerContextValue;

/** Size variants for the avatar. */
type CometChatAvatarSize = 'small' | 'medium' | 'large';
/** Props for AvatarRoot. */
interface CometChatAvatarRootProps {
    /** Name used for initials fallback and alt text. */
    name?: string;
    /** URL of the avatar image. */
    image?: string;
    /** Size variant. Defaults to 'medium'. */
    size?: CometChatAvatarSize;
    /** Optional custom className. */
    className?: string;
    children?: ReactNode;
}
/** Props for AvatarImage. */
interface CometChatAvatarImageProps {
    /** Optional custom className. */
    className?: string;
}
/** Props for AvatarInitials. */
interface CometChatAvatarInitialsProps {
    /** Optional custom className. */
    className?: string;
}
/** Status indicator state. */
type CometChatAvatarStatus = 'online' | 'offline';
/** Props for AvatarStatusIndicator. */
interface CometChatAvatarStatusIndicatorProps {
    /** Online/offline status. */
    status: CometChatAvatarStatus;
    /** Optional custom className. */
    className?: string;
}
/** Context value exposed by AvatarRoot. */
interface CometChatAvatarContextValue {
    name: string;
    image: string;
    size: CometChatAvatarSize;
    /** Whether the image has loaded successfully. */
    imageLoaded: boolean;
    /** Whether the image failed to load. */
    imageError: boolean;
}

declare function CometChatAvatarRoot({ name, image, size, className, children, }: CometChatAvatarRootProps): react_jsx_runtime.JSX.Element;

declare function CometChatAvatarImage({ className }: CometChatAvatarImageProps): react_jsx_runtime.JSX.Element | null;

declare function CometChatAvatarInitials({ className }: CometChatAvatarInitialsProps): react_jsx_runtime.JSX.Element | null;

declare function CometChatAvatarStatusIndicator({ status, className, }: CometChatAvatarStatusIndicatorProps): react_jsx_runtime.JSX.Element;

/**
 * Flat API props for CometChatAvatar.
 * Renders Root + Image + Initials + optional StatusIndicator in one call.
 */
interface CometChatAvatarProps extends Omit<CometChatAvatarRootProps, 'children'> {
    /** Optional online/offline status indicator. Omit to hide. */
    status?: CometChatAvatarStatus;
}
declare const CometChatAvatar: React__default.FC<CometChatAvatarProps> & {
    Root: typeof CometChatAvatarRoot;
    Image: typeof CometChatAvatarImage;
    Initials: typeof CometChatAvatarInitials;
    StatusIndicator: typeof CometChatAvatarStatusIndicator;
};

/** Placement of the dropdown relative to the trigger. */
type CometChatContextMenuPlacement = 'top' | 'right' | 'bottom' | 'left';
/** A single menu item. */
interface CometChatContextMenuItemData {
    /** Unique identifier. */
    id: string;
    /** Display title. */
    title: string;
    /** Icon element (SVG component or ReactNode). */
    icon?: ReactNode;
    /** Icon URL (for mask-image rendering). */
    iconURL?: string;
    /** Callback when item is selected. */
    onClick: () => void;
    /** Whether the item is disabled. */
    disabled?: boolean;
    /** Optional custom className. */
    className?: string;
}
/** Props for CometChatContextMenuRoot. */
interface CometChatContextMenuRootProps {
    /** All menu items. */
    items?: CometChatContextMenuItemData[];
    /** Number of items to show in the top row. Remaining go to the dropdown. Defaults to 2. */
    topMenuSize?: number;
    /** Callback when any menu item is clicked. Overrides individual item.onClick if provided. */
    onOptionClicked?: (item: CometChatContextMenuItemData) => void;
    /** Placement of the dropdown popover. Defaults to 'left'. */
    placement?: CometChatContextMenuPlacement;
    /** Tooltip text for the "more" button. */
    moreButtonTooltip?: string;
    /** Whether clicking outside closes the dropdown. Defaults to true. */
    closeOnOutsideClick?: boolean;
    /**
     * When true, renders a transparent overlay behind the dropdown that blocks
     * scroll and pointer events on the background. Also closes the dropdown on scroll.
     */
    disableBackgroundInteraction?: boolean;
    /**
     * Callback fired when the dropdown closes. Useful for the parent to hide
     * the entire options toolbar when the menu dismisses.
     */
    onDropdownClose?: () => void;
    /**
     * When true, uses the nearest scrollable ancestor as the boundary for dropdown positioning.
     * Useful for iframe or constrained container scenarios.
     */
    useParentContainer?: boolean;
    /**
     * When true (and useParentContainer is true), clamps the dropdown vertically
     * within the parent container's bounds.
     */
    useParentHeight?: boolean;
    /**
     * When true, disables dynamic flip/reposition logic for the dropdown.
     */
    forceStaticPlacement?: boolean;
    /** Children for fully custom rendering (overrides items-based rendering). */
    children?: ReactNode;
    /** Optional custom className for the root container. */
    className?: string;
}
/** Props for CometChatContextMenuItem. */
interface CometChatContextMenuItemProps {
    /** The menu item data. */
    item: CometChatContextMenuItemData;
    /** Display variant: 'icon' for top-row (icon only) or 'full' for dropdown (icon + title). */
    variant?: 'icon' | 'full';
    /** Optional custom className. */
    className?: string;
}
/** Props for CometChatContextMenuTrigger (the "more" button). */
interface CometChatContextMenuTriggerProps {
    /** Tooltip text. */
    tooltip?: string;
    /** Optional custom className. */
    className?: string;
    /** Custom trigger content (replaces default "more" icon). */
    children?: ReactNode;
}
/** Props for CometChatContextMenuDropdown. */
interface CometChatContextMenuDropdownProps {
    /** Placement relative to the trigger. */
    placement?: CometChatContextMenuPlacement;
    /**
     * When true, uses the nearest scrollable ancestor (or `.cometchat` container)
     * as the boundary for positioning instead of the viewport.
     * Useful when rendered inside iframes or constrained containers.
     */
    useParentContainer?: boolean;
    /**
     * When true (and useParentContainer is true), clamps the dropdown's vertical
     * position to stay within the parent container's height.
     */
    useParentHeight?: boolean;
    /**
     * When true, disables dynamic flip/reposition logic. The dropdown opens exactly
     * at the specified placement without checking available space.
     */
    forceStaticPlacement?: boolean;
    /** Children (CometChatContextMenu.Item elements). */
    children?: ReactNode;
    /** Optional custom className. */
    className?: string;
}
/** Context value shared across sub-components. */
interface CometChatContextMenuContextValue {
    /** Whether the dropdown is open. */
    isOpen: boolean;
    /** Open the dropdown. */
    open: () => void;
    /** Close the dropdown. */
    close: () => void;
    /** Toggle the dropdown. */
    toggle: () => void;
    /** Placement of the dropdown. */
    placement: CometChatContextMenuPlacement;
    /** Callback when an item is clicked. */
    onOptionClicked?: (item: CometChatContextMenuItemData) => void;
    /** Ref for the trigger button (used for focus restoration). */
    triggerRef: React.RefObject<HTMLButtonElement | null>;
    /** Use parent container as positioning boundary. */
    useParentContainer?: boolean;
    /** Clamp vertical position to parent height. */
    useParentHeight?: boolean;
    /** Disable dynamic flip/reposition logic. */
    forceStaticPlacement?: boolean;
    /** Block background scroll/interaction when dropdown is open. */
    disableBackgroundInteraction?: boolean;
}

/**
 * Flat API props for CometChatContextMenu.
 * Same as Root props — the Root already supports data-driven rendering
 * when no children are provided (splits items into top-row + dropdown).
 */
type CometChatContextMenuProps = Omit<CometChatContextMenuRootProps, 'children'>;
declare const CometChatContextMenu: React__default.FC<CometChatContextMenuProps> & {
    Root: React__default.FC<CometChatContextMenuRootProps>;
    Item: React__default.FC<CometChatContextMenuItemProps>;
    Trigger: React__default.FC<CometChatContextMenuTriggerProps>;
    Dropdown: React__default.FC<CometChatContextMenuDropdownProps>;
};

declare function useCometChatContextMenuContext(): CometChatContextMenuContextValue;

declare function useCometChatAvatarContext(): CometChatAvatarContextValue;

/**
 * Extracts initials from a name.
 * - 2+ words: first letter of first two words, uppercased
 * - 1 word: first 2 characters, uppercased
 * - Empty: returns empty string
 */
declare function getInitials(name: string): string;

/**
 * Configuration for date formatting based on temporal proximity.
 * Plain interface replacing the CalendarObject class.
 */
interface CometChatDateFormatConfig {
    /** Format pattern for same-day dates (e.g., "hh:mm A"). */
    today?: string;
    /** Format pattern for previous-day dates (e.g., "Yesterday"). */
    yesterday?: string;
    /** Format pattern for dates within the last 7 days (e.g., "dddd"). */
    lastWeek?: string;
    /** Format pattern for dates older than 7 days (e.g., "DD/MM/YYYY"). */
    otherDays?: string;
    /** Relative time formatting for recent timestamps. */
    relativeTime?: {
        /** Formatting for minutes (singular). Use %d as placeholder for the count. */
        minute?: string;
        /** Formatting for minutes (plural). Use %d as placeholder for the count. */
        minutes?: string;
        /** Formatting for hours (singular). Use %d as placeholder for the count. */
        hour?: string;
        /** Formatting for hours (plural). Use %d as placeholder for the count. */
        hours?: string;
    };
}
/** Style variant for the date text. */
type CometChatDateVariant = 'caption' | 'caption2' | 'body' | 'label' | 'separator';
/** Props for CometChatDateRoot. */
interface CometChatDateRootProps {
    /** Unix timestamp (seconds) of the date to display. */
    timestamp: number;
    /**
     * Format configuration based on temporal proximity.
     * Defaults to: today="hh:mm A", yesterday="Yesterday", lastWeek="dddd", otherDays="DD/MM/YYYY".
     */
    formatConfig?: CometChatDateFormatConfig;
    /**
     * Custom formatter function. When provided, overrides formatConfig.
     * Receives the timestamp and returns the display string.
     */
    formatter?: (timestamp: number) => string;
    /** Visual style variant. Defaults to 'caption'. */
    variant?: CometChatDateVariant;
    /** Optional custom className. */
    className?: string;
    children?: ReactNode;
}
/** Props for CometChatDateText. */
interface CometChatDateTextProps {
    /** Optional custom className. */
    className?: string;
}
/** Context value exposed by CometChatDateRoot. */
interface CometChatDateContextValue {
    /** The original Unix timestamp. */
    timestamp: number;
    /** The formatted date string for display. */
    formattedDate: string;
    /** ISO 8601 string for the <time> datetime attribute. */
    isoDate: string;
    /** Human-readable full date/time string for aria-label. */
    fullDateLabel: string;
    /** The visual style variant. */
    variant: CometChatDateVariant;
}

declare function CometChatDateRoot({ timestamp, formatConfig, formatter, variant, className, children, }: CometChatDateRootProps): react_jsx_runtime.JSX.Element;

declare function CometChatDateText({ className }: CometChatDateTextProps): react_jsx_runtime.JSX.Element;

type CometChatDateProps = Omit<CometChatDateRootProps, 'children'>;
declare const CometChatDate: React__default.FC<CometChatDateProps> & {
    Root: typeof CometChatDateRoot;
    Text: typeof CometChatDateText;
};

/** Props for CometChatSearchBarRoot. */
interface CometChatSearchBarRootProps {
    /** Current search text (controlled mode). When provided, the component is controlled. */
    searchText?: string;
    /** Default search text (uncontrolled mode). Used as initial value when `searchText` is not provided. */
    defaultSearchText?: string;
    /** Callback fired when the search value changes. */
    onChange?: (value: string) => void;
    /** Placeholder text for the input. Defaults to localized "Search" string. */
    placeholderText?: string;
    /** Whether the search bar is disabled. */
    disabled?: boolean;
    /** Debounce delay in milliseconds for the onChange callback. 0 = no debounce. */
    debounceMs?: number;
    /** Ref forwarded to the underlying <input> element (convenience — same as using ref on Input sub-component). */
    inputRef?: Ref<HTMLInputElement>;
    /** Children (Icon, Input, ClearButton sub-components). */
    children?: ReactNode;
    /** Optional custom className for the root container. */
    className?: string;
    /** Optional custom styles for the root container. */
    style?: CSSProperties;
}
/** Props for CometChatSearchBarIcon. */
interface CometChatSearchBarIconProps {
    /** Custom icon element. Defaults to the built-in search icon. */
    icon?: ReactNode;
    /** Optional custom className. */
    className?: string;
}
/** Props for CometChatSearchBarInput. */
interface CometChatSearchBarInputProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'value' | 'onChange' | 'disabled' | 'placeholder'> {
    /** Optional custom className. */
    className?: string;
}
/** Props for CometChatSearchBarClearButton. */
interface CometChatSearchBarClearButtonProps {
    /** Custom clear icon element. Defaults to the built-in "×" icon. */
    icon?: ReactNode;
    /** Optional custom className. */
    className?: string;
    /** aria-label for the clear button. Defaults to "Clear search". */
    'aria-label'?: string;
}
/** Context value shared between SearchBar sub-components. */
interface CometChatSearchBarContextValue {
    /** Current search text. */
    searchText: string;
    /** Update the search text. */
    setSearchText: (value: string) => void;
    /** Clear the search text. */
    clear: () => void;
    /** Placeholder text. */
    placeholderText: string;
    /** Whether the search bar is disabled. */
    disabled: boolean;
    /** Unique ID for the input element (for aria-labelledby). */
    inputId: string;
    /** Whether a search transition is pending (from useTransition). */
    isPending: boolean;
    /** Ref forwarded to the input element (from Root's inputRef prop). */
    inputRef?: Ref<HTMLInputElement> | undefined;
}

type CometChatSearchBarProps = Omit<CometChatSearchBarRootProps, 'children'>;
declare const CometChatSearchBar: React__default.FC<CometChatSearchBarProps> & {
    Root: React__default.FC<CometChatSearchBarRootProps>;
    Icon: React__default.FC<CometChatSearchBarIconProps>;
    Input: React__default.ForwardRefExoticComponent<CometChatSearchBarInputProps & React__default.RefAttributes<HTMLInputElement>>;
    ClearButton: React__default.FC<CometChatSearchBarClearButtonProps>;
};

declare function useCometChatSearchBarContext(): CometChatSearchBarContextValue;

declare function useCometChatDateContext(): CometChatDateContextValue;

interface UseCometChatDateOptions {
    timestamp: number;
    formatConfig?: CometChatDateFormatConfig;
    formatter?: (timestamp: number) => string;
    /** Optional IANA timezone string (e.g., "America/New_York"). */
    timezone?: string;
    /** Optional BCP 47 locale string (e.g., "hi", "de"). Used for Intl date formatting. */
    locale?: string;
}
interface UseCometChatDateResult {
    formattedDate: string;
    isoDate: string;
    fullDateLabel: string;
}
/**
 * Formats a Unix timestamp based on a CometChatDateFormatConfig or custom formatter.
 *
 * - Determines temporal bucket (today, yesterday, lastWeek, otherDays)
 * - Applies the corresponding format pattern
 * - If a custom `formatter` function is provided, uses that instead
 * - Returns the formatted string, an ISO 8601 date string, and a full human-readable label
 * - SSR-safe: no browser-only APIs at module scope
 * - Memoized: recalculates only when timestamp or config changes
 */
declare function useCometChatDate(options: UseCometChatDateOptions): UseCometChatDateResult;

/** Visual state of the conversation starter. */
type CometChatConversationStarterState = 'loading' | 'loaded' | 'error' | 'empty';
/** Props for CometChatConversationStarterRoot. */
interface CometChatConversationStarterRootProps {
    /** Async function that returns an array of suggestion strings. */
    getConversationStarters: () => Promise<string[]>;
    /** Callback when a suggestion is clicked. */
    onSuggestionClick?: ((suggestion: string) => void) | undefined;
    /** Optional custom className for the root container. */
    className?: string | undefined;
    /** Children — sub-components for custom composition. */
    children?: ReactNode | undefined;
}
/** Props for CometChatConversationStarterItem. */
interface CometChatConversationStarterItemProps {
    /** The suggestion text to display. */
    suggestion: string;
    /** Callback when this suggestion is clicked. */
    onClick?: ((suggestion: string) => void) | undefined;
    /** Whether the item is disabled. */
    disabled?: boolean | undefined;
    /** Optional custom className. */
    className?: string | undefined;
}
/** Props for CometChatConversationStarterLoading. */
interface CometChatConversationStarterLoadingProps {
    /** Number of shimmer items to display (default: 3). */
    count?: number | undefined;
    /** Optional custom className. */
    className?: string | undefined;
    /** Custom loading content. */
    children?: ReactNode | undefined;
}
/** Props for CometChatConversationStarterError. */
interface CometChatConversationStarterErrorProps {
    /** Custom error message (overrides default localized text). */
    message?: string | undefined;
    /** Callback to retry fetching suggestions. */
    onRetry?: (() => void) | undefined;
    /** Optional custom className. */
    className?: string | undefined;
    /** Custom error content. */
    children?: ReactNode | undefined;
}
/** Props for CometChatConversationStarterEmpty. */
interface CometChatConversationStarterEmptyProps {
    /** Custom empty message. */
    message?: string | undefined;
    /** Optional custom className. */
    className?: string | undefined;
    /** Custom empty content. */
    children?: ReactNode | undefined;
}
/** Context value shared between sub-components. */
interface CometChatConversationStarterContextValue {
    /** Current visual state. */
    state: CometChatConversationStarterState;
    /** Fetched suggestions (empty array if not loaded). */
    suggestions: string[];
    /** Error object if state is 'error'. */
    error: Error | null;
    /** Callback when a suggestion is clicked. */
    onSuggestionClick?: ((suggestion: string) => void) | undefined;
    /** Retry fetching suggestions. */
    retry: () => void;
}

/**
 * Flat API props for CometChatConversationStarter.
 * Same as Root props without children — renders default item list automatically.
 */
type CometChatConversationStarterProps = Omit<CometChatConversationStarterRootProps, 'children'>;
declare const CometChatConversationStarter: React__default.FC<CometChatConversationStarterProps> & {
    Root: React__default.FC<CometChatConversationStarterRootProps>;
    Item: React__default.FC<CometChatConversationStarterItemProps>;
    Loading: React__default.FC<CometChatConversationStarterLoadingProps>;
    Error: React__default.FC<CometChatConversationStarterErrorProps>;
    Empty: React__default.FC<CometChatConversationStarterEmptyProps>;
};

declare function useCometChatConversationStarterContext(): CometChatConversationStarterContextValue;

/**
 * Structured error context emitted when an error is caught.
 * Mirrors the Angular ErrorContext interface for cross-platform consistency.
 */
interface CometChatErrorContext {
    /** The original error that was caught. */
    error: Error;
    /** Name identifying the source component. */
    componentName: string;
    /** Epoch milliseconds when the error occurred. */
    timestamp: number;
}
/** Props for CometChatErrorBoundaryRoot. */
interface CometChatErrorBoundaryRootProps {
    /**
     * Name identifying the wrapped component, used in the emitted CometChatErrorContext.
     * Defaults to 'Unknown'.
     */
    componentName?: string;
    /**
     * Callback invoked when an error is caught.
     * Receives the structured CometChatErrorContext.
     */
    onError?: (context: CometChatErrorContext) => void;
    /**
     * Custom fallback render function. When provided, overrides the default fallback UI.
     * Receives the CometChatErrorContext and a retry function.
     */
    fallbackView?: (context: CometChatErrorContext, retry: () => void) => ReactNode;
    /** Optional custom className for the root wrapper. */
    className?: string;
    /** Child components to render (wrapped by the error boundary). */
    children: ReactNode;
}
/** Props for CometChatErrorBoundaryFallback (default fallback UI). */
interface CometChatErrorBoundaryFallbackProps {
    /** Optional custom className. */
    className?: string;
}
/** Context value exposed by CometChatErrorBoundaryRoot. */
interface CometChatErrorBoundaryContextValue {
    /** Whether the boundary is currently in an error state. */
    hasError: boolean;
    /** The current error context, or null if no error. */
    errorContext: CometChatErrorContext | null;
    /** Reset the error state and re-render children. */
    retry: () => void;
}

interface State {
    hasError: boolean;
    errorContext: CometChatErrorContext | null;
}
/**
 * CometChatErrorBoundaryRoot — class-based React error boundary.
 *
 * Catches rendering errors in the child tree via getDerivedStateFromError
 * and componentDidCatch. Provides error state and retry via context.
 *
 * This is the only class component in the codebase — React requires
 * error boundaries to be class components.
 */
declare class CometChatErrorBoundaryRoot extends React__default.Component<CometChatErrorBoundaryRootProps, State> {
    constructor(props: CometChatErrorBoundaryRootProps);
    static getDerivedStateFromError(error: Error): State;
    componentDidCatch(error: Error, errorInfo: React__default.ErrorInfo): void;
    private retry;
    render(): React__default.ReactNode;
}

/**
 * Default fallback UI for CometChatErrorBoundary.
 *
 * Reads error state from context and renders a localized
 * "Something went wrong" message with a retry button.
 * Renders nothing when not in error state.
 */
declare function CometChatErrorBoundaryFallback({ className }: CometChatErrorBoundaryFallbackProps): react_jsx_runtime.JSX.Element | null;

declare const CometChatErrorBoundary: React__default.FC<CometChatErrorBoundaryRootProps> & {
    Root: typeof CometChatErrorBoundaryRoot;
    Fallback: typeof CometChatErrorBoundaryFallback;
};

declare function useCometChatErrorBoundaryContext(): CometChatErrorBoundaryContextValue;

/** Visual state of the conversation summary. */
type CometChatConversationSummaryState = 'loading' | 'loaded' | 'error' | 'empty';
/** Props for CometChatConversationSummaryRoot. */
interface CometChatConversationSummaryRootProps {
    /** Async function that returns a summary string. */
    getConversationSummary: () => Promise<string>;
    /** Callback when the close button is clicked. */
    onClose?: (() => void) | undefined;
    /** Optional custom className for the root container. */
    className?: string | undefined;
    /** Children — sub-components for custom composition. */
    children?: ReactNode | undefined;
}
/** Props for CometChatConversationSummaryHeader. */
interface CometChatConversationSummaryHeaderProps {
    /** Custom title text (overrides default localized text). */
    title?: string | undefined;
    /** Whether to show the close button (default: true). */
    showCloseButton?: boolean | undefined;
    /** Optional custom className. */
    className?: string | undefined;
    /** Custom header content. */
    children?: ReactNode | undefined;
}
/** Props for CometChatConversationSummaryBody. */
interface CometChatConversationSummaryBodyProps {
    /** Optional custom className. */
    className?: string | undefined;
    /** Custom body content (overrides default summary text rendering). */
    children?: ReactNode | undefined;
}
/** Props for CometChatConversationSummaryLoading. */
interface CometChatConversationSummaryLoadingProps {
    /** Number of shimmer bars to display (default: 3). */
    count?: number | undefined;
    /** Optional custom className. */
    className?: string | undefined;
    /** Custom loading content. */
    children?: ReactNode | undefined;
}
/** Props for CometChatConversationSummaryError. */
interface CometChatConversationSummaryErrorProps {
    /** Custom error message (overrides default localized text). */
    message?: string | undefined;
    /** Callback to retry fetching the summary. */
    onRetry?: (() => void) | undefined;
    /** Optional custom className. */
    className?: string | undefined;
    /** Custom error content. */
    children?: ReactNode | undefined;
}
/** Props for CometChatConversationSummaryEmpty. */
interface CometChatConversationSummaryEmptyProps {
    /** Custom empty message (overrides default localized text). */
    message?: string | undefined;
    /** Optional custom className. */
    className?: string | undefined;
    /** Custom empty content. */
    children?: ReactNode | undefined;
}
/** Context value shared between sub-components. */
interface CometChatConversationSummaryContextValue {
    /** Current visual state. */
    state: CometChatConversationSummaryState;
    /** Fetched summary text (empty string if not loaded). */
    summary: string;
    /** Error object if state is 'error'. */
    error: Error | null;
    /** Callback when the close button is clicked. */
    onClose?: (() => void) | undefined;
    /** Retry fetching the summary. */
    retry: () => void;
}

type CometChatConversationSummaryProps = Omit<CometChatConversationSummaryRootProps, 'children'>;
declare const CometChatConversationSummary: React__default.FC<CometChatConversationSummaryProps> & {
    Root: React__default.FC<CometChatConversationSummaryRootProps>;
    Header: React__default.FC<CometChatConversationSummaryHeaderProps>;
    Body: React__default.FC<CometChatConversationSummaryBodyProps>;
    Loading: React__default.FC<CometChatConversationSummaryLoadingProps>;
    Error: React__default.FC<CometChatConversationSummaryErrorProps>;
    Empty: React__default.FC<CometChatConversationSummaryEmptyProps>;
};

declare function useCometChatConversationSummaryContext(): CometChatConversationSummaryContextValue;

/** Visual state of the smart replies panel. */
type CometChatSmartRepliesState = 'loading' | 'loaded' | 'error' | 'empty';
/** Props for CometChatSmartRepliesRoot. */
interface CometChatSmartRepliesRootProps {
    /** Async function that returns an array of reply suggestion strings. */
    getSmartReplies: () => Promise<string[]>;
    /** Callback when a suggestion is clicked. Receives the reply string. */
    onSuggestionClick?: ((reply: string) => void) | undefined;
    /** Callback when the close button is clicked. */
    onClose?: (() => void) | undefined;
    /** Optional custom className for the root container. */
    className?: string | undefined;
    /** Children — sub-components for custom composition. */
    children?: ReactNode | undefined;
}
/** Props for CometChatSmartRepliesHeader. */
interface CometChatSmartRepliesHeaderProps {
    /** Custom title text (overrides default localized text). */
    title?: string | undefined;
    /** Whether to show the close button (default: true). */
    showCloseButton?: boolean | undefined;
    /** Optional custom className. */
    className?: string | undefined;
    /** Custom header content. */
    children?: ReactNode | undefined;
}
/** Props for CometChatSmartRepliesItem. */
interface CometChatSmartRepliesItemProps {
    /** The reply text to display. */
    reply: string;
    /** Optional custom className. */
    className?: string | undefined;
}
/** Props for CometChatSmartRepliesLoading. */
interface CometChatSmartRepliesLoadingProps {
    /** Number of shimmer bars to display (default: 3). */
    count?: number | undefined;
    /** Optional custom className. */
    className?: string | undefined;
    /** Custom loading content. */
    children?: ReactNode | undefined;
}
/** Props for CometChatSmartRepliesError. */
interface CometChatSmartRepliesErrorProps {
    /** Custom error message (overrides default localized text). */
    message?: string | undefined;
    /** Callback to retry fetching replies. */
    onRetry?: (() => void) | undefined;
    /** Optional custom className. */
    className?: string | undefined;
    /** Custom error content. */
    children?: ReactNode | undefined;
}
/** Props for CometChatSmartRepliesEmpty. */
interface CometChatSmartRepliesEmptyProps {
    /** Custom empty message (overrides default localized text). */
    message?: string | undefined;
    /** Optional custom className. */
    className?: string | undefined;
    /** Custom empty content. */
    children?: ReactNode | undefined;
}
/** Context value shared between sub-components. */
interface CometChatSmartRepliesContextValue {
    /** Current visual state. */
    state: CometChatSmartRepliesState;
    /** Fetched reply suggestions (empty array if not loaded). */
    replies: string[];
    /** Error object if state is 'error'. */
    error: Error | null;
    /** Callback when a suggestion is clicked. */
    onSuggestionClick?: ((reply: string) => void) | undefined;
    /** Callback when the close button is clicked. */
    onClose?: (() => void) | undefined;
    /** Retry fetching the replies. */
    retry: () => void;
}

type CometChatSmartRepliesProps = Omit<CometChatSmartRepliesRootProps, 'children'>;
declare const CometChatSmartReplies: React__default.FC<CometChatSmartRepliesProps> & {
    Root: React__default.FC<CometChatSmartRepliesRootProps>;
    Header: React__default.FC<CometChatSmartRepliesHeaderProps>;
    Item: React__default.FC<CometChatSmartRepliesItemProps>;
    Loading: React__default.FC<CometChatSmartRepliesLoadingProps>;
    Error: React__default.FC<CometChatSmartRepliesErrorProps>;
    Empty: React__default.FC<CometChatSmartRepliesEmptyProps>;
};

declare function useCometChatSmartRepliesContext(): CometChatSmartRepliesContextValue;

/** A scope option (e.g., admin, moderator, participant). */
interface CometChatChangeScopeOptionData {
    /** Unique identifier (e.g., 'admin'). */
    id: string;
    /** Display label. */
    label: string;
}
/** Props for CometChatChangeScopeRoot. */
interface CometChatChangeScopeRootProps {
    /** Available scope options. */
    options: CometChatChangeScopeOptionData[];
    /** Currently selected scope id. */
    defaultSelection?: string;
    /** Callback when scope change is confirmed. Returns a Promise for loading/error handling. */
    onScopeChanged?: (scopeId: string) => Promise<void>;
    /** Callback when close/cancel is clicked. */
    onClose?: () => void;
    /** Optional custom className. */
    className?: string;
    children?: ReactNode;
}
/** Props for CometChatChangeScopeHeader. */
interface CometChatChangeScopeHeaderProps {
    /** Title text. Defaults to localized "Change Scope". */
    title?: string;
    /** Description text. Defaults to localized subtitle. */
    description?: string;
    /** Whether to show the scope icon. Defaults to true. */
    showIcon?: boolean;
    /** Optional custom className. */
    className?: string;
}
/** Props for CometChatChangeScopeList. */
interface CometChatChangeScopeListProps {
    /** Optional custom className. */
    className?: string;
    children?: ReactNode;
}
/** Props for CometChatChangeScopeOption. */
interface CometChatChangeScopeOptionProps {
    /** The scope option data. */
    option: CometChatChangeScopeOptionData;
    /** Optional custom className. */
    className?: string;
}
/** Props for CometChatChangeScopeActions. */
interface CometChatChangeScopeActionsProps {
    /** Submit button text. Defaults to localized "Save". */
    submitText?: string;
    /** Cancel button text. Defaults to localized "Cancel". */
    cancelText?: string;
    /** Optional custom className. */
    className?: string;
}
/** Props for CometChatChangeScopeErrorMessage. */
interface CometChatChangeScopeErrorMessageProps {
    /** Optional custom className. */
    className?: string;
}
/** Context value exposed by CometChatChangeScopeRoot. */
interface CometChatChangeScopeContextValue {
    options: CometChatChangeScopeOptionData[];
    selectedId: string;
    defaultSelection: string;
    isLoading: boolean;
    error: string | null;
    selectOption: (id: string) => void;
    confirmChange: () => void;
    cancel: () => void;
    /** Whether the selection has changed from the default. */
    hasChanged: boolean;
}

/**
 * Flat API props for CometChatChangeScope.
 * Renders Root + Header + ScopeList + ErrorMessage + Actions in one call.
 */
interface CometChatChangeScopeProps extends Omit<CometChatChangeScopeRootProps, 'children'> {
    /** Title for the header. */
    title?: CometChatChangeScopeHeaderProps['title'];
    /** Description for the header. */
    description?: CometChatChangeScopeHeaderProps['description'];
    /** Whether to show the scope icon in the header. */
    showIcon?: CometChatChangeScopeHeaderProps['showIcon'];
    /** Submit button text for the actions. */
    submitText?: CometChatChangeScopeActionsProps['submitText'];
    /** Cancel button text for the actions. */
    cancelText?: CometChatChangeScopeActionsProps['cancelText'];
}
declare const CometChatChangeScope: React__default.FC<CometChatChangeScopeProps> & {
    Root: React__default.FC<CometChatChangeScopeRootProps>;
    Header: React__default.FC<CometChatChangeScopeHeaderProps>;
    ScopeList: React__default.FC<CometChatChangeScopeListProps>;
    ScopeOption: React__default.FC<CometChatChangeScopeOptionProps>;
    Actions: React__default.FC<CometChatChangeScopeActionsProps>;
    ErrorMessage: React__default.FC<CometChatChangeScopeErrorMessageProps>;
};

declare function useCometChatChangeScopeContext(): CometChatChangeScopeContextValue;

/** Variant of the confirm dialog — affects icon and confirm button styling. */
type CometChatConfirmDialogVariant = 'danger' | 'warning' | 'info';
/** Props for CometChatConfirmDialog.Root. */
interface CometChatConfirmDialogRootProps {
    /** Whether the dialog is currently open. When provided, the component is controlled. */
    isOpen?: boolean;
    /** Callback invoked when the dialog requests to close (outside click, Escape, cancel button). */
    onClose?: () => void;
    /** Whether the dialog closes when clicking outside it. Defaults to true. */
    closeOnOutsideClick?: boolean;
    /** Visual variant affecting icon and confirm button color. Defaults to 'danger'. */
    variant?: CometChatConfirmDialogVariant;
    /** Children (Icon, Content, Actions sub-components). */
    children: ReactNode;
    /** Optional custom className for the root container. */
    className?: string;
}
/** Props for CometChatConfirmDialog.Icon. */
interface CometChatConfirmDialogIconProps {
    /** Custom icon element. If omitted, renders a default icon based on the variant. */
    icon?: ReactNode;
    /** Optional custom className. */
    className?: string;
}
/** Props for CometChatConfirmDialog.Content. */
interface CometChatConfirmDialogContentProps {
    /** Title text displayed in the dialog. */
    title?: string;
    /** Descriptive message text. */
    messageText?: string;
    /** Children for fully custom content (overrides title + messageText). */
    children?: ReactNode;
    /** Optional custom className. */
    className?: string;
}
/** Props for CometChatConfirmDialog.Actions. */
interface CometChatConfirmDialogActionsProps {
    /** Text for the cancel button. Defaults to localized "Cancel". */
    cancelButtonText?: string;
    /** Text for the confirm button. Defaults to localized "Confirm". */
    confirmButtonText?: string;
    /** Callback when confirm button is clicked. Can return a Promise for async operations. */
    onConfirm?: () => void | Promise<void>;
    /** Callback when cancel button is clicked. Defaults to calling onClose from context. */
    onCancel?: () => void;
    /** Whether the confirm button is in a loading state. When onConfirm returns a Promise, this is managed automatically. */
    isLoading?: boolean;
    /** Error message to display above the buttons. When onConfirm rejects, this is set automatically. */
    errorText?: string;
    /** Children for fully custom action buttons (overrides default cancel/confirm). */
    children?: ReactNode;
    /** Optional custom className. */
    className?: string;
}
/** Context value for CometChatConfirmDialog. */
interface CometChatConfirmDialogContextValue {
    /** Whether the dialog is open. */
    isOpen: boolean;
    /** Request to close the dialog. */
    onClose: () => void;
    /** Current variant. */
    variant: CometChatConfirmDialogVariant;
}

/**
 * Flat API props for CometChatConfirmDialog.
 * Renders Root + Icon + Content + Actions in one call.
 */
interface CometChatConfirmDialogProps {
    /** Whether the dialog is currently open. */
    isOpen?: boolean;
    /** Callback when the dialog requests to close. */
    onClose?: () => void;
    /** Whether clicking outside closes the dialog. Defaults to true. */
    closeOnOutsideClick?: boolean;
    /** Visual variant. Defaults to 'danger'. */
    variant?: CometChatConfirmDialogVariant;
    /** Optional custom className for the root backdrop. */
    className?: string;
    /** Custom icon element for the Icon slot. */
    icon?: CometChatConfirmDialogIconProps['icon'];
    /** Title text for the Content slot. */
    title?: CometChatConfirmDialogContentProps['title'];
    /** Message text for the Content slot. */
    messageText?: CometChatConfirmDialogContentProps['messageText'];
    /** Cancel button text. */
    cancelButtonText?: CometChatConfirmDialogActionsProps['cancelButtonText'];
    /** Confirm button text. */
    confirmButtonText?: CometChatConfirmDialogActionsProps['confirmButtonText'];
    /** Callback when confirm is clicked. */
    onConfirm?: CometChatConfirmDialogActionsProps['onConfirm'];
    /** Callback when cancel is clicked. */
    onCancel?: CometChatConfirmDialogActionsProps['onCancel'];
    /** Whether confirm button shows loading state. */
    isLoading?: CometChatConfirmDialogActionsProps['isLoading'];
    /** Error text to display above buttons. */
    errorText?: CometChatConfirmDialogActionsProps['errorText'];
}
declare const CometChatConfirmDialog: React__default.FC<CometChatConfirmDialogProps> & {
    Root: React__default.FC<CometChatConfirmDialogRootProps>;
    Icon: React__default.FC<CometChatConfirmDialogIconProps>;
    Content: React__default.FC<CometChatConfirmDialogContentProps>;
    Actions: React__default.FC<CometChatConfirmDialogActionsProps>;
};

declare function useCometChatConfirmDialogContext(): CometChatConfirmDialogContextValue;

/**
 * CometChat Localization types.
 */

/** Translation function — takes a key, returns the translated string (or the key itself as fallback). */
type TranslateFunction = (key: string) => string;
type TDateTimeParserInput = string | number | Date;
type TDateTimeParser = (input?: TDateTimeParserInput) => Date;
/** Callback invoked when a translation key is not found in the current or fallback language. */
type MissingKeyHandler = (key: string) => string | undefined;
type SupportedLanguage = 'en-us' | 'en-gb' | 'de' | 'es' | 'fr' | 'hi' | 'hu' | 'it' | 'ja' | 'ko' | 'lt' | 'ms' | 'nl' | 'pt' | 'ru' | 'sv' | 'tr' | 'zh' | 'zh-tw';
/** Configuration object accepted by the `init()` method containing all initialization options. */
interface LocalizationSettings {
    /** The language code to set as the active language. */
    language?: string;
    /** IANA timezone string for date formatting (e.g., "America/New_York"). */
    timezone?: string;
    /** Global date format configuration for CometChatDate components. */
    calendarObject?: CometChatDateFormatConfig;
    /** Map of language codes to key-value translation pairs. */
    translationsForLanguage?: Record<string, Record<string, string>>;
    /** Language code to use as fallback when a key is missing in the current language. Defaults to "en-us". */
    fallbackLanguage?: string;
    /** When true, browser language detection is disabled. */
    disableAutoDetection?: boolean;
    /** When true, date locale language is forced to "en-US" regardless of current language. */
    disableDateTimeLocalization?: boolean;
    /** Callback invoked when a translation key is not found. */
    missingKeyHandler?: MissingKeyHandler;
}
interface TranslationContextValue {
    getLocalizedString: TranslateFunction;
    tDateTimeParser: TDateTimeParser;
    language: string;
    /** IANA timezone string from the CometChatLocalize instance, or undefined if not set. */
    timezone?: string | undefined;
    /** Global date format configuration from the CometChatLocalize instance, or undefined if not set. */
    calendarObject?: CometChatDateFormatConfig | undefined;
    /** The locale language used for date formatting. Returns "en-US" when disableDateTimeLocalization is true. */
    dateLocaleLanguage: string;
}
interface CometChatLocalizeInstance {
    init: (settings?: LocalizationSettings) => void;
    getTranslators: () => {
        t: TranslateFunction;
        tDateTimeParser: TDateTimeParser;
    };
    setCurrentLanguage: (language: string) => void;
    getCurrentLanguage: () => string;
    addTranslation: (resources: Record<string, Record<string, string>>) => void;
    registerSetLanguageCallback: (callback: (t: TranslateFunction) => void) => void;
    currentLanguage: string;
    formatDate: (timestamp: number, calendarObject?: CometChatDateFormatConfig) => string;
    getBrowserLanguage: () => string;
    getLocalizedString: (key: string) => string;
    getDateLocaleLanguage: () => string;
    getTimezone: () => string | undefined;
    getCalendarObject: () => CometChatDateFormatConfig | undefined;
    getDefaultLanguage: () => string;
}

/**
 * Hook to access the translation context.
 * Must be used within a LocaleProvider (inside CometChatProvider).
 */
declare function useLocale(): TranslationContextValue;

/**
 * CometChatLocalize — core localization service class.
 *
 * Simple key-value lookup with fallback language support.
 * React integration is in LocaleProvider.
 */

interface CometChatLocalizeOptions {
    language?: string;
    translationsForLanguage?: Record<string, string>;
    fallbackLanguage?: string;
}
declare class CometChatLocalize implements CometChatLocalizeInstance {
    private static _sharedInstance;
    /**
     * Returns the shared CometChatLocalize instance (set by LocaleProvider on mount).
     * Use this in non-React code (plugins, utilities) to access `getLocalizedString()` without a hook.
     */
    static getSharedInstance(): CometChatLocalize | null;
    /**
     * Called by LocaleProvider to register the active instance for static access.
     */
    static setSharedInstance(instance: CometChatLocalize): void;
    currentLanguage: string;
    private fallbackLanguage;
    private translations;
    private setLanguageCallback;
    private missingKeyHandler;
    private timezone;
    private disableDateTimeLocalization;
    private disableAutoDetection;
    private calendarObject;
    t: TranslateFunction;
    tDateTimeParser: TDateTimeParser;
    constructor(options?: CometChatLocalizeOptions);
    /**
     * Creates the translate function bound to the current language and fallback settings.
     */
    private createTranslateFunction;
    init(settings?: LocalizationSettings): void;
    getTranslators(): {
        t: TranslateFunction;
        tDateTimeParser: TDateTimeParser;
    };
    /**
     * Adds translations for one or more languages. Existing keys are overwritten.
     */
    addTranslation(resources: Record<string, Record<string, string>>): void;
    /**
     * Sets the active language and recreates the getLocalizedString() function.
     */
    setCurrentLanguage(language: string): void;
    /**
     * Returns the currently active language code.
     */
    getCurrentLanguage(): string;
    registerSetLanguageCallback(callback: (t: TranslateFunction) => void): void;
    /**
     * Returns the configured IANA timezone string, or undefined if not set.
     */
    getTimezone(): string | undefined;
    /**
     * Returns the locale language for date formatting.
     * Returns "en-US" when disableDateTimeLocalization is true, otherwise the current language.
     */
    getDateLocaleLanguage(): string;
    /**
     * Returns the stored calendar object configuration, or undefined if not set.
     */
    getCalendarObject(): CometChatDateFormatConfig | undefined;
    /**
     * Formats a Unix timestamp (seconds) using a CometChatDateFormatConfig.
     *
     * When a calendarObject argument is provided, uses it directly.
     * When not provided, falls back to the globally configured calendarObject from init().
     * If neither is available, uses a sensible default config.
     */
    formatDate(timestamp: number, calendarObject?: CometChatDateFormatConfig): string;
    getBrowserLanguage(): string;
    getLocalizedString(key: string): string;
    getDefaultLanguage(): string;
}

/**
 * Immutable registry of message plugins.
 *
 * `.register()` returns a new instance — safe for React context.
 * `findPlugin()` resolves deleted messages to the DeletePlugin first,
 * then matches by message type + category.
 */
declare class CometChatPluginRegistry {
    private readonly plugins;
    constructor(plugins?: CometChatMessagePlugin[]);
    /** Return a new registry with the plugin added. */
    register(plugin: CometChatMessagePlugin): CometChatPluginRegistry;
    /**
     * Find the plugin that handles a given message.
     *
     * Resolution order:
     * 1. If the message is deleted (getDeletedAt() !== null), return the DeletePlugin.
     * 2. Otherwise, find the first plugin whose messageCategories includes the message's
     *    category AND whose messageTypes includes the message's type — OR whose messageTypes
     *    is empty, which acts as a category-only render wildcard. Note: an empty messageTypes
     *    contributes nothing to the request builder (getAllMessageTypes), so a plugin that
     *    needs its messages fetched must declare its type explicitly. Strict type+category
     *    matching is unchanged for every plugin that declares a non-empty messageTypes.
     * 3. If no plugin matches, return undefined.
     */
    findPlugin(message: CometChat.BaseMessage): CometChatMessagePlugin | undefined;
    /** Get all registered plugins. */
    getAll(): readonly CometChatMessagePlugin[];
    /** Get all message types across all plugins (for SDK request builders). */
    getAllMessageTypes(): string[];
    /** Get all message categories across all plugins (for SDK request builders). */
    getAllMessageCategories(): string[];
    /**
     * Get a plain-text preview for the conversation list subtitle.
     *
     * Finds the plugin that handles the message and delegates to its
     * `getLastMessagePreview()` method. Returns undefined if no plugin
     * matches or the matched plugin doesn't implement the method.
     */
    getLastMessagePreview(message: CometChat.BaseMessage, loggedInUser: CometChat.User, t?: (key: string) => string): string | undefined;
    /**
     * Get text formatters from the text plugin (or the first plugin that provides them).
     * Used by media plugins for caption rendering and by conversations/search for subtitles.
     */
    getTextFormatters(): CometChatTextFormatter[];
}

/**
 * Read the plugin registry from context.
 *
 * Throws if used outside a provider — catches misconfiguration early
 * rather than silently returning null and failing later in renderBubble().
 *
 * @returns The immutable CometChatPluginRegistry instance.
 * @throws Error if no CometChatPluginRegistryContext provider is found.
 */
declare function usePluginRegistry(): CometChatPluginRegistry;

/**
 * The default message types `CometChatMessageList` passes to the
 * `messagesRequestBuilder` via `setTypes(...)` when no custom `messageTypes`
 * prop is supplied.
 *
 * This is the live union of every active plugin's `messageTypes` — it reflects
 * custom plugins added via the provider's `plugins` prop and respects
 * `removePlugins`. It is the exact value MessageList uses by default, so a
 * custom request builder can stay in sync:
 *
 * ```tsx
 * const types = useDefaultMessageTypes();
 * const builder = new CometChat.MessagesRequestBuilder()
 *   .setTypes([...types, 'my_custom_type']);
 * ```
 *
 * @returns Deduplicated message types from the active plugin registry.
 * @throws Error if used outside a CometChatProvider.
 */
declare function useDefaultMessageTypes(): string[];
/**
 * The default message categories `CometChatMessageList` passes to the
 * `messagesRequestBuilder` via `setCategories(...)` when no custom
 * `messageCategories` prop is supplied.
 *
 * Live union of every active plugin's `messageCategories` — reflects custom
 * plugins and `removePlugins`. See {@link useDefaultMessageTypes}.
 *
 * @returns Deduplicated message categories from the active plugin registry.
 * @throws Error if used outside a CometChatProvider.
 */
declare function useDefaultMessageCategories(): string[];

/**
 * Default core plugins.
 *
 * The media plugins (image, video, audio, file) render the batch-aware plural
 * bubbles (ImagesBubble, VideosBubble, AudiosBubble/VoiceNoteBubble, FilesBubble).
 * Order matters for type+category matching — first match wins.
 */
declare const defaultPlugins: CometChatMessagePlugin[];

/**
 * Public type re-exports.
 */
/** Standard fetch lifecycle state for all list components. */
type CometChatFetchState = 'idle' | 'loading' | 'loaded' | 'error' | 'empty';

/**
 * Read the current theme from context.
 *
 * Returns `'light'` with a no-op `setTheme` if no ThemeProvider is present (safe default).
 * Does not throw — unlike usePluginRegistry which requires a provider.
 */
declare function useTheme(): CometChatThemeContextValue;

/**
 * Subscribe to CometChat events (SDK + UI).
 *
 * The handler is called for every event (both SDK events from the network
 * and UI events from local component actions). Filter by `event.type`
 * inside the handler to react to specific events.
 *
 * The handler reference is kept stable via a ref — no need to memoize it.
 * The `deps` array controls when the subscription is refreshed (same
 * semantics as useEffect deps).
 *
 * Replaces the deprecated useSDKEvents() — same API, but receives both SDK and UI events.
 *
 * Usage:
 * ```typescript
 * useCometChatEvents((event) => {
 *   if (event.type === 'message/text-received') {
 *     // handle incoming text message from network
 *   }
 *   if (event.type === 'ui:message/sent' && event.status === 'success') {
 *     // handle message sent by local composer
 *   }
 * }, [conversationId]);
 * ```
 */
declare function useCometChatEvents(handler: (event: CometChatEvent) => void, deps: React.DependencyList): void;

/**
 * Hook to get the publish function for emitting UI events.
 * Used by components that perform local actions (composer, message list, etc.)
 *
 * Usage:
 * ```typescript
 * const publish = usePublishEvent();
 * publish({ type: 'ui:message/sent', message: msg, status: 'success' });
 * ```
 */
declare function usePublishEvent(): (event: CometChatUIEvent) => void;

interface CometChatMessageListDateSeparatorProps {
    /** Unix timestamp (seconds) for the date to display. */
    timestamp: number;
    /**
     * Custom date format config. When omitted, uses a sensible default:
     * "Today", "Yesterday", weekday name for last 7 days, "DD MMM, YYYY" otherwise.
     */
    formatConfig?: CometChatDateFormatConfig;
    /** Optional custom className. */
    className?: string;
}

interface CometChatMessageListLoadingStateProps {
    children?: ReactNode;
}

interface CometChatMessageListErrorStateProps {
    children?: ReactNode;
    onRetry?: () => void;
}

interface CometChatMessageListEmptyStateProps {
    children?: ReactNode;
}

interface CometChatMessageListScrollToBottomProps {
    /** Reference to the scroll container for scrollToBottom. */
    scrollContainerRef?: React__default.RefObject<HTMLDivElement | null>;
}

interface CometChatMessageListFooterProps {
    children?: ReactNode;
}

interface CometChatMessageListHeaderProps {
    children?: ReactNode;
}

/** How messages are aligned in the list. */
declare enum CometChatMessageListAlignment {
    /** All messages left-aligned (like Slack). */
    left = 0,
    /** Incoming left, outgoing right (standard chat). */
    standard = 1
}
/**
 * Options for constructing a CometChatMessageListManager.
 * The Manager is a stateless SDK wrapper — no React imports, no listeners.
 */
interface CometChatMessageListManagerOptions {
    /** User for 1:1 chat. Mutually exclusive with group. */
    user?: CometChat.User;
    /** Group for group chat. Mutually exclusive with user. */
    group?: CometChat.Group;
    /** Optional custom MessagesRequestBuilder (overrides default builder). */
    builder?: CometChat.MessagesRequestBuilder;
    /** Parent message ID for thread mode. */
    parentMessageId?: number;
    /** Message types to include in the request. */
    messageTypes?: string[];
    /** Message categories to include in the request. */
    messageCategories?: string[];
    /** Page size for fetch requests. Defaults to 30. */
    limit?: number;
}
interface CometChatMessageListState {
    /**
     * All messages in the conversation, ordered by sentAt ascending.
     *
     * Each entry is a real SDK message object —
     * pending (just-sent), confirmed (server-acknowledged), edited, moderated,
     * errored, or deleted. The lifecycle is expressed by the message's own
     * fields (muid, id, sentAt, deliveredAt, readAt, moderationStatus,
     * metadata.error), not by a separate state container.
     *
     * Pending messages (before the SDK resolves sendMessage) carry a muid but
     * no server-assigned id yet. They are replaced in place by muid when the
     * SDK confirms (MESSAGE_SEND_SUCCESS) or fails (MESSAGE_SEND_ERROR).
     */
    messages: CometChat.BaseMessage[];
    /** Fetch lifecycle state for the initial load. */
    fetchState: CometChatFetchState;
    hasMore: boolean;
    hasMoreNewer: boolean;
    /**
     * Whether the list has fetched all the way to the most recent message.
     *
     * - `true` after a normal latest-message init or when fetchNext exhausts newer messages.
     * - `false` after goToMessageId / startFromUnreadMessages when newer messages exist beyond the window.
     *
     * When false, real-time received messages are NOT appended to the list —
     * they only increment newMessageCount. This prevents messages from appearing
     * out of order when the user is viewing historical messages.
     *
     */
    hasReachedLatest: boolean;
    isFetchingMore: boolean;
    error: string | null;
    /** Message ID to scroll to (for goToMessageId / startFromUnread / reply-preview). */
    scrollToMessageId: number | null;
    scrollToMessageHighlight: boolean;
    isAtBottom: boolean;
    newMessageCount: number;
    lastReadMessageId: number | null;
    unreadCount: number;
    isConversationRead: boolean;
    /** Whether the user manually marked a message as unread in this session.
     *  When true, auto-read (markConversationAsRead, markAsRead) is suppressed.
     *  Cleared only on RESET (new chat). */
    markedUnreadByUser: boolean;
    /** Whether to show the "New" unread separator banner.
     *  True only when: init goes to lastRead, scroll-to-bottom goes to lastRead, or mark-as-unread.
     *  Cleared on RESET (new chat). */
    showUnreadBanner: boolean;
}
declare const initialMessageListState: CometChatMessageListState;
type CometChatMessageListAction = {
    type: 'FETCH_PREVIOUS_START';
} | {
    type: 'FETCH_PREVIOUS_SUCCESS';
    messages: CometChat.BaseMessage[];
    hasMore: boolean;
} | {
    type: 'FETCH_PREVIOUS_ERROR';
    error: string;
} | {
    type: 'FETCH_NEXT_START';
} | {
    type: 'FETCH_NEXT_SUCCESS';
    messages: CometChat.BaseMessage[];
    hasMoreNewer: boolean;
} | {
    type: 'FETCH_NEXT_ERROR';
    error: string;
} | {
    type: 'FETCH_AROUND_SUCCESS';
    messages: CometChat.BaseMessage[];
    targetMessageId: number;
    hasMore: boolean;
    hasMoreNewer: boolean;
    /**
     * Whether the view should flash a highlight on the target message.
     * `true` for explicit goToMessage / reply-preview jumps; `false` when
     * scrolling is a side effect of startFromUnread (lastRead anchor).
     * Defaults to `false` if omitted.
     */
    highlight?: boolean;
} | {
    type: 'MESSAGE_SEND_START';
    muid: string;
    message: CometChat.BaseMessage;
} | {
    type: 'MESSAGE_SEND_SUCCESS';
    muid: string;
    confirmedMessage: CometChat.BaseMessage;
} | {
    type: 'MESSAGE_SEND_ERROR';
    muid: string;
    message: CometChat.BaseMessage;
    error: string;
} | {
    type: 'MESSAGE_RECEIVED';
    message: CometChat.BaseMessage;
    fromLoggedInUser?: boolean;
    isLocalGroupAction?: boolean;
} | {
    type: 'MESSAGE_EDITED';
    message: CometChat.BaseMessage;
} | {
    type: 'MESSAGE_DELETED';
    message: CometChat.BaseMessage;
} | {
    type: 'REMOVE_STREAMING_BUBBLE';
} | {
    type: 'ADD_STREAMING_BUBBLE';
    message: CometChat.BaseMessage;
} | {
    type: 'PROCESS_PENDING_MESSAGES';
    pendingMessagesMap: Record<string, CometChat.BaseMessage[]>;
} | {
    type: 'RECEIPT_UPDATE';
    receiptType: 'delivered' | 'read';
    messageId: number;
    timestamp: number;
    loggedInUserId: string;
} | {
    type: 'REACTION_UPDATE';
    messageId: number;
    reactions: CometChat.ReactionCount[];
} | {
    type: 'SET_AT_BOTTOM';
    isAtBottom: boolean;
} | {
    type: 'SET_SCROLL_TO_MESSAGE';
    messageId: number | null;
    /**
     * Whether to flash the highlight animation once the view scrolls
     * into position. Defaults to `false`.
     */
    highlight?: boolean;
} | {
    type: 'CLEAR_NEW_MESSAGE_COUNT';
} | {
    type: 'SET_LAST_READ_MESSAGE_ID';
    messageId: number | null;
} | {
    type: 'SET_UNREAD_COUNT';
    count: number;
} | {
    type: 'SET_CONVERSATION_READ';
} | {
    type: 'SET_MARKED_UNREAD_BY_USER';
    value: boolean;
} | {
    type: 'SET_SHOW_UNREAD_BANNER';
    value: boolean;
} | {
    type: 'UPDATE_REPLY_COUNT';
    parentMessageId: number;
} | {
    type: 'MESSAGE_MODERATED';
    message: CometChat.BaseMessage;
} | {
    type: 'SET_HAS_REACHED_LATEST';
    hasReachedLatest: boolean;
} | {
    type: 'UPDATE_GROUP_REFERENCE';
    group: CometChat.Group;
} | {
    type: 'RESET';
};
interface CometChatUseMessageListOptions {
    /** User for 1:1 chat. Mutually exclusive with group. */
    user?: CometChat.User;
    /** Group for group chat. Mutually exclusive with user. */
    group?: CometChat.Group;
    /**
     * The logged-in user. Optional — when omitted, falls back to
     * `CometChatUIKit.getLoggedInUser()`. Used for alignment, receipt logic,
     * and the conversation filter.
     */
    loggedInUser?: CometChat.User;
    /** Optional custom MessagesRequestBuilder. */
    messagesRequestBuilder?: CometChat.MessagesRequestBuilder;
    /**
     * Optional custom ReactionsRequestBuilder.
     */
    reactionsRequestBuilder?: CometChat.ReactionsRequestBuilder;
    /** Parent message ID for thread mode. */
    parentMessageId?: number;
    /** Scroll to last read message instead of bottom on open. */
    startFromUnreadMessages?: boolean;
    /** Jump to a specific message by ID (e.g., from search or deep link). */
    goToMessageId?: number;
    /** Message types to fetch. Defaults to plugin registry types. */
    messageTypes?: string[];
    /** Message categories to fetch. Defaults to plugin registry categories. */
    messageCategories?: string[];
    /** Disable incoming message sound. */
    disableSoundForMessages?: boolean;
    /** Custom sound URL for incoming messages. */
    customSoundForMessages?: string;
    /**
     * Force-scroll to bottom on every new message regardless of scroll position.
     */
    scrollToBottomOnNewMessages?: boolean;
    /**
     * Skip processing delivery/read receipt events entirely.
     * When true, both 1:1 and group receipts are ignored.
     */
    hideReceipts?: boolean;
    /** Error callback. */
    onError?: ((error: CometChat.CometChatException) => void) | null;
    /** Hide the sticky date header that floats at the top of the scroll area. */
    hideStickyDate?: boolean;
    /** Hide the avatar on incoming group messages. */
    hideAvatar?: boolean;
    /** Filter out messages in the `action` category (group join/leave/etc.). */
    hideGroupActionMessages?: boolean;
    /**
     * Number of quick-action options shown inline next to the bubble
     * before overflowing into the "More" menu. Default: 3.
     */
    quickOptionsCount?: number;
    hideReplyOption?: boolean;
    hideReplyInThreadOption?: boolean;
    hideEditMessageOption?: boolean;
    hideDeleteMessageOption?: boolean;
    hideCopyMessageOption?: boolean;
    hideReactionOption?: boolean;
    hideMessageInfoOption?: boolean;
    hideFlagMessageOption?: boolean;
    hideMessagePrivatelyOption?: boolean;
    hideTranslateMessageOption?: boolean;
    /** Show the "Mark as Unread" option. Defaults to false (opt-in). */
    showMarkAsUnreadOption?: boolean;
    /** Date format for in-list day separators ("Today", "Yesterday", etc.). */
    separatorDateTimeFormat?: CometChatDateFormatConfig;
    /** Date format for the sticky date header floating above messages. */
    stickyDateTimeFormat?: CometChatDateFormatConfig;
    /** Date format for the timestamp shown beside the message bubble. */
    messageSentAtDateTimeFormat?: CometChatDateFormatConfig;
    /** Date format for timestamps in the MessageInformation sheet. */
    messageInfoDateTimeFormat?: CometChatDateFormatConfig;
    /** Invoked when a reaction count pill is clicked on a message. */
    onReactionClick?: (reaction: CometChat.ReactionCount, message: CometChat.BaseMessage) => void;
    /** Invoked when an individual reactor in the reaction list is clicked. */
    onReactionListItemClick?: (reaction: CometChat.Reaction, message: CometChat.BaseMessage) => void;
    /** Message list alignment. 0 = all left, 1 = standard. */
    messageAlignment?: CometChatMessageListAlignment;
    /** Show the native scrollbar. Default: false (scrollbar hidden).. */
    showScrollbar?: boolean;
    /** Hide date separators between calendar days. */
    hideDateSeparator?: boolean;
    /** Callback when the thread-reply indicator is clicked. */
    onThreadRepliesClick?: (message: CometChat.BaseMessage) => void;
    /** Callback when an incoming message avatar is clicked. */
    onAvatarClick?: (user: CometChat.User) => void;
    /** Callback when the "Edit" context menu option is clicked. Sets message in edit mode in composer. */
    onEditMessage?: (message: CometChat.BaseMessage) => void;
    /** Callback when the "Reply" context menu option is clicked. Sets message as reply-to in composer. */
    onReplyMessage?: (message: CometChat.BaseMessage) => void;
    /** Hide the remark textarea in the flag message dialog. */
    hideFlagRemarkField?: boolean;
    /** Disable text truncation (read more / show less) in text bubbles. */
    disableTruncation?: boolean;
    /** Hide the moderation footer beneath disapproved messages. */
    hideModerationView?: boolean;
    /** Whether this is an AI agent chat (suppresses moderation UI). */
    isAgentChat?: boolean;
    /**
     * Replace the entire bubble rendering for each message.
     * When provided, the default BubbleRenderer is skipped entirely.
     */
    bubbleView?: (message: CometChat.BaseMessage, loggedInUser: CometChat.User) => ReactNode;
    /**
     * Show AI-generated smart reply suggestions in the footer when the last
     * received message matches keyword criteria. Default: false.
     */
    showSmartReplies?: boolean;
    /**
     * Keywords that trigger smart replies when found in a received text message.
     * If empty array, smart replies show for every received text message.
     * Default: ['what', 'when', 'why', 'who', 'where', 'how', '?']
     */
    smartRepliesKeywords?: string[];
    /**
     * Delay in milliseconds before showing smart replies after a qualifying
     * message is received. Acts as a debounce — if another message arrives
     * within this window, the timer resets. Default: 10000 (10 seconds).
     */
    smartRepliesDelayDuration?: number;
    /**
     * Show AI-generated conversation starters in the footer when the message
     * list is empty (no messages in this conversation). Default: false.
     */
    showConversationStarters?: boolean;
    /**
     * When true, loads the last agent conversation on initial render.
     * Used for AI agent chat — shows a loading state while fetching the last
     * agent conversation. Default: false.
     */
    loadLastAgentConversation?: boolean;
    /** Invoked on first load with the active chat context. */
    onActiveChatChanged?: (data: {
        user?: CometChat.User;
        group?: CometChat.Group;
        message?: CometChat.BaseMessage;
        unreadMessageCount?: number;
    }) => void;
    /** Invoked when a message is marked as read. */
    onMessageRead?: (message: CometChat.BaseMessage) => void;
    /** Invoked when a message is deleted. */
    onMessageDeleted?: (message: CometChat.BaseMessage) => void;
    /** Invoked when the conversation is marked as read. */
    onConversationMarkedAsRead?: (conversation: CometChat.Conversation) => void;
    /** Invoked when mark-as-unread succeeds (conversation updated). */
    onConversationUpdated?: (conversation: CometChat.Conversation) => void;
}
/**
 * Aggregated visual / option / date-format knobs surfaced by the hook so the
 * View can read them from context instead of taking them as props.
 *
 * Separated from the hook return so it can be imported cleanly by View /
 * Bubble / DateSeparator / StickyDate without dragging in the full state and
 * action surface.
 */
interface CometChatMessageListOptions {
    hideStickyDate: boolean;
    hideAvatar: boolean;
    hideGroupActionMessages: boolean;
    quickOptionsCount: number;
    hideReplyOption: boolean;
    hideReplyInThreadOption: boolean;
    hideEditMessageOption: boolean;
    hideDeleteMessageOption: boolean;
    hideCopyMessageOption: boolean;
    hideReactionOption: boolean;
    hideMessageInfoOption: boolean;
    hideFlagMessageOption: boolean;
    hideMessagePrivatelyOption: boolean;
    hideTranslateMessageOption: boolean;
    showMarkAsUnreadOption: boolean;
    separatorDateTimeFormat: CometChatDateFormatConfig | undefined;
    stickyDateTimeFormat: CometChatDateFormatConfig | undefined;
    messageSentAtDateTimeFormat: CometChatDateFormatConfig | undefined;
    messageInfoDateTimeFormat: CometChatDateFormatConfig | undefined;
    reactionsRequestBuilder: CometChat.ReactionsRequestBuilder | undefined;
    onReactionClick: ((reaction: CometChat.ReactionCount, message: CometChat.BaseMessage) => void) | undefined;
    onReactionListItemClick: ((reaction: CometChat.Reaction, message: CometChat.BaseMessage) => void) | undefined;
    messageAlignment: CometChatMessageListAlignment;
    showScrollbar: boolean;
    hideDateSeparator: boolean;
    onThreadRepliesClick: ((message: CometChat.BaseMessage) => void) | undefined;
    onAvatarClick: ((user: CometChat.User) => void) | undefined;
    onEditMessage: ((message: CometChat.BaseMessage) => void) | undefined;
    onReplyMessage: ((message: CometChat.BaseMessage) => void) | undefined;
    hideFlagRemarkField: boolean;
    disableTruncation: boolean;
    hideModerationView: boolean;
    isAgentChat: boolean;
    bubbleView: ((message: CometChat.BaseMessage, loggedInUser: CometChat.User) => ReactNode) | undefined;
    showSmartReplies: boolean;
    smartRepliesKeywords: string[];
    smartRepliesDelayDuration: number;
    showConversationStarters: boolean;
    loadLastAgentConversation: boolean;
}
interface CometChatUseMessageListReturn {
    state: CometChatMessageListState;
    /**
     * All messages in display order. Currently an alias for `state.messages` —
     * kept for API continuity and to express the "what you render" intent.
     */
    allMessages: CometChat.BaseMessage[];
    loggedInUser: CometChat.User;
    user: CometChat.User | undefined;
    group: CometChat.Group | undefined;
    isLoading: boolean;
    isEmpty: boolean;
    isError: boolean;
    fetchPrevious: () => Promise<void>;
    fetchNext: () => Promise<void>;
    deleteMessage: (messageId: number) => Promise<void>;
    scrollToMessage: (messageId: number) => void;
    /**
     * Jump to a specific message — re-fetches around it if not loaded.
     * Used for reply-preview clicks and deep links.
     */
    goToMessage: (messageId: number) => Promise<void>;
    setAtBottom: (isAtBottom: boolean) => void;
    clearNewMessageCount: () => void;
    /**
     * Mark the conversation as read if the last message is unread.
     * Called when reaching the bottom via any method (scroll, button, auto-scroll).
     */
    markConversationAsReadIfUnread: () => void;
    markMessageAsUnread: (message: CometChat.BaseMessage) => Promise<void>;
    reactToMessage: (messageId: number, emoji: string) => Promise<void>;
    /**
     * Scroll to the bottom of the conversation.
     * If hasReachedLatest is true, returns 'scroll-dom' — caller should scroll the container.
     * If hasReachedLatest is false, returns 'refetching' — data will re-fetch, View handles scroll.
     * If unread messages exist, first click goes to last-read message, second click goes to actual bottom.
     */
    scrollToBottom: () => 'scroll-dom' | 'refetching';
    hasMore: boolean;
    hasMoreNewer: boolean;
    /**
     * Whether the list has fetched to the latest message.
     * When false, real-time messages are not appended (only counted).
     */
    hasReachedLatest: boolean;
    isFetchingMore: boolean;
    newMessageCount: number;
    unreadCount: number;
    isConversationRead: boolean;
    lastReadMessageId: number | null;
    error: string | null;
    isAtBottom: boolean;
    /**
     * Aggregated visual / option / date-format knobs.
     * Consumed by the View, DateSeparator, StickyDate, and BubbleRenderer.
     */
    options: CometChatMessageListOptions;
}
/**
 * Props for CometChatMessageList.Root.
 *
 * Accepts all hook options (data, behavior, visibility, option toggles,
 * date formats, view slots, callbacks) plus optional children for compound
 * composition. When children are omitted, Root renders the default layout.
 */
interface CometChatMessageListRootProps extends CometChatUseMessageListOptions {
    /** Children for compound composition. When omitted, renders default layout. */
    children?: ReactNode;
    /** Optional custom className appended to the root container. */
    className?: string;
}
/**
 * Convenience view props for the flat `<CometChatMessageList />` API.
 * These allow customizing the loading, empty, error, header, and footer views
 * without needing compound composition.
 */
interface CometChatMessageListConvenienceProps {
    /** Custom loading view (replaces default shimmer). */
    loadingView?: ReactNode;
    /** Custom empty view (replaces default empty state). */
    emptyView?: ReactNode;
    /** Custom error view (replaces default error state). */
    errorView?: ReactNode;
    /** Custom header view (above the scroll container). */
    headerView?: ReactNode;
    /** Custom footer view (below the scroll container). */
    footerView?: ReactNode;
}
/**
 * Props for the flat `<CometChatMessageList />` component.
 * Combines Root props + convenience props.
 */
type CometChatMessageListProps = CometChatMessageListRootProps & CometChatMessageListConvenienceProps;

interface CometChatMessageListViewProps {
    /** Message list alignment (local override). */
    messageAlignment?: CometChatMessageListAlignment;
    /** Hide the scrollbar (local override). */
    showScrollbar?: boolean;
    /** Hide date separators (local override). */
    hideDateSeparator?: boolean;
    /** Callbacks (local override) */
    onThreadRepliesClick?: (message: CometChat.BaseMessage) => void;
    onAvatarClick?: (user: CometChat.User) => void;
    /** Hide the remark text area in the flag message dialog (local override). */
    hideFlagRemarkField?: boolean;
    /** Disable text truncation in text bubbles (local override). */
    disableTruncation?: boolean;
    /** Hide the moderation footer (local override). */
    hideModerationView?: boolean;
    /** Whether this is an AI agent chat (local override). */
    isAgentChat?: boolean;
}

/**
 * CometChatMessageList — compound component namespace with flat API.
 *
 * - `<CometChatMessageList ... />` — flat API (renders default layout)
 * - `<CometChatMessageList.Root>...</CometChatMessageList.Root>` — compound composition
 */
declare const CometChatMessageList: React__default.FC<CometChatMessageListProps> & {
    Root: React__default.FC<CometChatMessageListRootProps>;
    View: React__default.FC<CometChatMessageListViewProps>;
    Header: React__default.FC<CometChatMessageListHeaderProps>;
    Footer: React__default.FC<CometChatMessageListFooterProps>;
    ScrollToBottom: React__default.FC<CometChatMessageListScrollToBottomProps>;
    EmptyState: React__default.FC<CometChatMessageListEmptyStateProps>;
    ErrorState: React__default.FC<CometChatMessageListErrorStateProps>;
    LoadingState: React__default.FC<CometChatMessageListLoadingStateProps>;
    DateSeparator: React__default.FC<CometChatMessageListDateSeparatorProps>;
    AIFooter: React__default.FC<{}>;
};

declare function useCometChatMessageListContext(): CometChatUseMessageListReturn;

/**
 * useCometChatMessageList — orchestration hook for the message list data layer.
 *
 * Creates a CometChatMessageListManager for SDK calls, uses useReducer for state,
 * subscribes to SDK events via useCometChatEvents, and exposes a clean API.
 *
 *
 * The hook is split into sub-hooks for maintainability:
 * - useMessageListInit      — initialization effect
 * - useMessageListEvents    — real-time SDK event handling
 * - useMessageListActions   — send, edit, delete, mark as unread
 * - useMessageListScroll    — pagination, scroll state, goToMessage, scrollToBottom
 */
declare function useCometChatMessageList(options: CometChatUseMessageListOptions): CometChatUseMessageListReturn;

/** Props for CometChatMessageBubble. */
interface CometChatMessageBubbleProps {
    /** The SDK message object. Required. */
    message: CometChat.BaseMessage;
    /** Bubble alignment: 'left' (incoming), 'right' (outgoing), 'center' (action). */
    alignment: CometChatMessageBubbleAlignment;
    /** The inner content rendered by the plugin's renderBubble(). Required. */
    contentView: ReactNode;
    /** Group context — enables avatar and sender name for group conversations. */
    group?: CometChat.Group;
    /** Context menu options for this message. */
    options?: CometChatMessageOption[];
    /** Number of quick options shown directly (rest go to overflow). Default: 2. */
    quickOptionsCount?: number;
    /** Hide the avatar. Default: false. */
    hideAvatar?: boolean;
    /** Force show avatar for incoming messages even in 1:1 chats (used in agent chat). Default: false. */
    forceShowAvatar?: boolean;
    /** Hide the sender name. Default: false. */
    hideSenderName?: boolean;
    /** Hide the timestamp. Default: false. */
    hideTimestamp?: boolean;
    /** Hide thread reply indicator. Default: false. */
    hideThreadView?: boolean;
    /** Show error state instead of normal receipts. Default: false. */
    showError?: boolean;
    /** Disable all interactive elements. Default: false. */
    disableInteraction?: boolean;
    /** Hide read receipt indicators. Reads from GlobalConfig if not set. */
    hideReceipts?: boolean;
    /** Override the date format for the sent-at timestamp shown beside the bubble. */
    messageSentAtDateTimeFormat?: CometChatDateFormatConfig;
    /** Override the leading view (avatar area). Pass null to suppress. */
    leadingView?: ((message: CometChat.BaseMessage) => ReactNode) | null;
    /** Override the header view (sender name area). Pass null to suppress. */
    headerView?: ((message: CometChat.BaseMessage) => ReactNode) | null;
    /** Override the status info (timestamp + receipts). Pass null to suppress. */
    statusInfoView?: ((message: CometChat.BaseMessage) => ReactNode) | null;
    /** Override the footer (reactions area). Pass null to suppress. */
    footerView?: ((message: CometChat.BaseMessage) => ReactNode) | null;
    /** Override the thread view. Pass null to suppress. */
    threadView?: ((message: CometChat.BaseMessage) => ReactNode) | null;
    /** Reply preview (quoted message) rendered above content. Pass null to suppress. */
    replyView?: ReactNode | null;
    /**
     * Render a view below the bubble (e.g., the moderation "blocked" footer).
     * Shown after the body and before reactions/thread view. Pass null to suppress.
     */
    bottomView?: ((message: CometChat.BaseMessage) => ReactNode) | null;
    /** Called when the avatar is clicked. */
    onAvatarClick?: (user: CometChat.User) => void;
    /** Called when the thread view is clicked. */
    onThreadRepliesClick?: (message: CometChat.BaseMessage) => void;
    /** Called when a context menu option is clicked. */
    onOptionClick?: (option: CometChatMessageOption, message: CometChat.BaseMessage) => void;
    /** Called when a reaction chip is clicked (toggle add/remove). Used by the default footer reactions. */
    onReactionChipClick?: (messageId: number, emoji: string) => void;
    /** Called when a reactor in the reaction list is clicked. */
    onReactorClick?: (reaction: CometChat.Reaction, message: CometChat.BaseMessage) => void;
    /** Whether this message is selected. */
    isSelected?: boolean;
    /** Position in the message list (1-indexed). */
    ariaPosinset?: number;
    /** Total messages in the list. */
    ariaSetsize?: number;
    /** Optional custom className. */
    className?: string;
    /** Ref to the outermost wrapper div (role="article"). */
    setRef?: Ref<HTMLDivElement>;
    /**
     * When true, the options toolbar uses `fit-content` height instead of the
     * fixed body height. Useful when a bottomView is present.
     * Default: false.
     */
    includeBottomViewHeight?: boolean;
    /**
     * Explicitly control options toolbar visibility.
     * - `true` → always visible
     * - `false` → always hidden
     * - `undefined` → default hover-based behavior
     */
    toggleOptionsVisibility?: boolean;
}
/** Props for CometChatMessageBubbleRenderer — the bridge between MessageList and MessageBubble. */
interface CometChatMessageBubbleRendererProps {
    /** The message to render. */
    message: CometChat.BaseMessage;
    /** The group (if group conversation). */
    group?: CometChat.Group;
    /** List alignment mode. 0 = all left, 1 = standard (incoming left, outgoing right). */
    messageAlignment?: number;
    /** Position in the list (for aria-posinset). */
    index: number;
    /** Total messages (for aria-setsize). */
    total: number;
    /** Batch position within a multi-attachment batch group. */
    batchPosition?: 'first' | 'middle' | 'last' | 'single';
    hideAvatar?: boolean;
    hideTimestamp?: boolean;
    hideThreadView?: boolean;
    hideReceipts?: boolean;
    disableInteraction?: boolean;
    quickOptionsCount?: number;
    /** Hide the "Reply" option in the message context menu. */
    hideReplyOption?: boolean;
    /** Hide the "Reply in Thread" option in the message context menu. */
    hideReplyInThreadOption?: boolean;
    /** Hide the "Edit" option in the message context menu. */
    hideEditMessageOption?: boolean;
    /** Hide the "Delete" option in the message context menu. */
    hideDeleteMessageOption?: boolean;
    /** Hide the "Copy" option in the message context menu. */
    hideCopyMessageOption?: boolean;
    /** Hide the "React" option in the message context menu. */
    hideReactionOption?: boolean;
    /** Hide the "Message Info" option in the message context menu. */
    hideMessageInfoOption?: boolean;
    /** Hide the "Report / Flag" option in the message context menu. */
    hideFlagMessageOption?: boolean;
    /** Hide the "Message Privately" option in the message context menu. */
    hideMessagePrivatelyOption?: boolean;
    /** Hide the "Translate" option in the message context menu. */
    hideTranslateMessageOption?: boolean;
    /**
     * Show the "Mark as Unread" option. Defaults to false (opt-in).
     * Mirrors prop.
     */
    showMarkAsUnreadOption?: boolean;
    /** Override the date format for the timestamp shown beside the bubble. */
    messageSentAtDateTimeFormat?: CometChatDateFormatConfig;
    /**
     * Hide the moderation footer under disapproved messages.
     * When true, a disapproved message still gets the red outline and reduced
     * option set, but no "blocked" footer is shown.
     * Mirrors prop. Default: false.
     */
    hideModerationView?: boolean;
    /**
     * Whether this conversation is an AI agent chat.
     */
    isAgentChat?: boolean;
    onAvatarClick?: (user: CometChat.User) => void;
    onThreadRepliesClick?: (message: CometChat.BaseMessage) => void;
    /** Called when the delete option is selected. Shows confirm dialog, then deletes. */
    onDeleteMessage?: (message: CometChat.BaseMessage) => void;
    /** Called when the flag option is selected. Opens the flag dialog. */
    onFlagMessage?: (message: CometChat.BaseMessage) => void;
    /** Called when the mark-as-unread option is selected. */
    onMarkAsUnread?: (message: CometChat.BaseMessage) => void;
    /** Called when the edit option is selected. Sets message in edit mode in composer. */
    onEditMessage?: (message: CometChat.BaseMessage) => void;
    /** Called when the reply option is selected. Sets message as reply-to in composer. */
    onReplyMessage?: (message: CometChat.BaseMessage) => void;
    /** Called when the "React" option is selected. Opens the emoji picker. */
    onReactToMessage?: (message: CometChat.BaseMessage) => void;
    /** Called when a reaction chip is clicked (toggle add/remove). */
    onReactionChipClick?: (messageId: number, emoji: string) => void;
    /** Called when a reactor in the reaction list is clicked. */
    onReactorClick?: (reaction: CometChat.Reaction, message: CometChat.BaseMessage) => void;
    /** Called when the "Info" option is selected. Opens the message info panel. */
    onMessageInfo?: (message: CometChat.BaseMessage) => void;
    /** Called when the reply preview is clicked. Scrolls to the quoted message. */
    onReplyPreviewClick?: (message: CometChat.BaseMessage) => void;
    /** Show a toast notification. */
    showToast?: (text: string) => void;
    /** Disable text truncation in text bubbles. */
    disableTruncation?: boolean;
}
/** Props for CometChatMessageBubbleWrapper — alignment and spacing. */
interface CometChatMessageBubbleWrapperProps {
    /** Bubble alignment: 'left', 'right', or 'center'. */
    alignment: CometChatMessageBubbleAlignment;
    /** Children (the rendered bubble). */
    children: ReactNode;
    /** Optional className. */
    className?: string;
}

/**
 * CometChatMessageBubbleRenderer — resolves the correct plugin for a message,
 * renders the bubble content via plugin.renderBubble(), and passes everything
 * to the existing CometChatMessageBubble wrapper.
 *
 * This is the only component that touches PluginRegistryContext.
 * The existing CometChatMessageBubble stays a pure presentation component.
 *
 * View slot semantics:
 *   undefined (not passed) → bubble uses its built-in default
 *   null → bubble suppresses the slot (renders nothing)
 *   ReactNode / function → bubble renders it (override)
 */
declare const CometChatMessageBubbleRenderer: React__default.FC<CometChatMessageBubbleRendererProps>;

/**
 * CometChatMessageBubbleWrapper — alignment wrapper for message bubbles.
 *
 * Handles flex alignment (left/right/center) based on message direction.
 *
 * Used by the MessageList UI to wrap each CometChatMessageBubbleRenderer.
 */
declare const CometChatMessageBubbleWrapper: React__default.FC<CometChatMessageBubbleWrapperProps>;

/** Props for CometChatModerationView. */
interface CometChatModerationViewProps {
    /**
     * Override the default message. When not provided, a localized
     * "moderation_block_message" string is used.
     */
    message?: string;
    /** Optional custom className. */
    className?: string;
}

/**
 * CometChatModerationView — footer shown under a message that was blocked
 * by moderation or rejected with a permission-denied error.
 *
 * Renders a warning icon + short message. The parent message bubble decides
 * when to mount this (via the `bottomView` slot) based on moderation status
 * or metadata error.
 */
declare const CometChatModerationView: React__default.FC<CometChatModerationViewProps>;

/** All possible receipt states a message can be in. */
type CometChatReceipt = 'wait' | 'sent' | 'delivered' | 'read' | 'error';
/**
 * Compute the receipt state for a message.
 *
 * Priority order:
 *   1. moderationStatus === 'disapproved' → error
 *   2. message.error OR message.metadata.error → error
 *   3. getReadAt() → read
 *   4. getDeliveredAt() → delivered
 *   5. getSentAt() && getId() → sent
 *   6. fallback → wait (optimistic in-flight)
 *
 * Moderation and error cases take precedence over normal delivery state,
 * so a message that was disapproved after being delivered still renders
 * as error — not delivered/read.
 */
declare function getReceiptStatus(message: CometChat.BaseMessage): CometChatReceipt;
/** Read an error object off either the message or its metadata. */
declare function getMessageError(message: CometChat.BaseMessage): {
    code?: string;
    message?: string;
    details?: string;
} | undefined;
declare function hasMessageError(message: CometChat.BaseMessage): boolean;
/**
 * Has this message been disapproved by moderation AND belongs to the
 * logged-in user? only surfaces the moderation footer to the sender —
 * other users don't see the message (or see it as plain content).
 */
declare function isMessageModerated(message: CometChat.BaseMessage, loggedInUserUid: string): boolean;
/**
 * Does this message carry a permission-denied error (from the composer's
 * SDK error handler)? treats this like moderation — shows a footer, red
 * receipt, reduced options.
 *
 * Mirrors v6 getIsPermissionDeniedError exactly.
 */
declare function isPermissionDeniedError(message: CometChat.BaseMessage, loggedInUserUid: string): boolean;
/** Is this message still moderating (pending server review)? */
declare function isMessagePendingModeration(message: CometChat.BaseMessage): boolean;

/** Fetch lifecycle state for reactor list. */
type CometChatReactionsFetchState = 'idle' | 'loading' | 'loaded' | 'error' | 'empty';
/** Props for CometChatReactions.Root. */
interface CometChatReactionsRootProps {
    /** The message to show reactions for. Required. */
    message: CometChat.BaseMessage;
    /** Bubble alignment for positioning context. Default: 'left'. */
    alignment?: CometChatMessageBubbleAlignment;
    /** Custom reactions request builder for fetching reactor details. */
    reactionsRequestBuilder?: CometChat.ReactionsRequestBuilder;
    /** Called when a reaction chip is clicked (toggle). Parent handles SDK call. */
    onReactionClick?: (emoji: string, message: CometChat.BaseMessage) => void;
    /** Called when a user in the reaction list is clicked. */
    onReactorClick?: (reaction: CometChat.Reaction, message: CometChat.BaseMessage) => void;
    /** Debounce time in ms before showing reaction info tooltip on hover. Default: 500. */
    hoverDebounceTime?: number;
    /** Error callback. */
    onError?: ((error: CometChat.CometChatException) => void) | null;
    /** Children (sub-components). When omitted, renders default layout. */
    children?: ReactNode;
    /** Optional custom className. */
    className?: string;
}
/** Props for CometChatReactions.Bar. */
interface CometChatReactionsBarProps {
    /** Max visible reaction chips before overflow. Auto-calculated if not set. */
    maxVisible?: number;
    /** Optional custom className. */
    className?: string;
}
/** Props for CometChatReactions.Chip. */
interface CometChatReactionsChipProps {
    /** The reaction count object. */
    reaction: CometChat.ReactionCount;
    /** Optional custom className. */
    className?: string;
}
/** Props for CometChatReactions.Info. */
interface CometChatReactionsInfoProps {
    /** The emoji to show info for. */
    emoji: string;
    /** Optional custom className. */
    className?: string;
}
/** Props for CometChatReactions.Overflow. */
interface CometChatReactionsOverflowProps {
    /** Number of hidden reactions. */
    count: number;
    /** Optional custom className. */
    className?: string;
}
/** Context value shared across CometChatReactions sub-components. */
interface CometChatReactionsContextValue {
    /** The message object. */
    message: CometChat.BaseMessage;
    /** Reaction counts from the message. */
    reactions: CometChat.ReactionCount[];
    /** Bubble alignment. */
    alignment: CometChatMessageBubbleAlignment;
    /** Computed max visible chips. */
    maxVisible: number;
    /** Reactions visible in the bar (sliced). */
    visibleReactions: CometChat.ReactionCount[];
    /** Number of overflow reactions. */
    overflowCount: number;
    /** Toggle a reaction (fires parent callback). */
    onReactionClick: (emoji: string) => void;
    /** Request builder for reactor fetching. */
    reactionsRequestBuilder?: CometChat.ReactionsRequestBuilder;
    /** Debounce time in ms before showing reaction info tooltip on hover. */
    hoverDebounceTime: number;
    /** Error callback. */
    onError?: ((error: CometChat.CometChatException) => void) | null;
}

/**
 * CometChatReactions — compound component for message reactions.
 *
 * Displays emoji reaction chips on message bubbles with hover tooltips
 * showing who reacted, a full reactor list popover with tab filtering,
 * and overflow handling for many reactions.
 *
 * Usage (default layout):
 * ```tsx
 * <CometChatReactions.Root
 *   message={message}
 *   alignment="right"
 *   onReactionClick={(emoji, msg) => handleReaction(emoji, msg)}
 * />
 * ```
 *
 * Usage (custom layout):
 * ```tsx
 * <CometChatReactions.Root message={message}>
 *   <CometChatReactions.Bar maxVisible={5} />
 * </CometChatReactions.Root>
 * ```
 */
declare const CometChatReactions: {
    readonly Root: React$1.FC<CometChatReactionsRootProps>;
    readonly Bar: React$1.FC<CometChatReactionsBarProps>;
    readonly Chip: React$1.NamedExoticComponent<CometChatReactionsChipProps>;
    readonly Info: React$1.FC<CometChatReactionsInfoProps>;
    readonly Overflow: React$1.FC<CometChatReactionsOverflowProps>;
};

/**
 * Hook to access the CometChatReactions context.
 * Must be used within a CometChatReactions.Root.
 */
declare function useCometChatReactionsContext(): CometChatReactionsContextValue;

/** Fetch lifecycle state for the reaction list. */
type CometChatReactionListFetchState = 'idle' | 'loading' | 'loaded' | 'error' | 'empty';
/** Props for CometChatReactionList.Root (and the flat API). */
interface CometChatReactionListRootProps {
    /** The message to show reactions for. Required. */
    message: CometChat.BaseMessage;
    /** Custom reactions request builder. */
    reactionsRequestBuilder?: CometChat.ReactionsRequestBuilder;
    /** Called when a reaction item is clicked (current user only — to remove). */
    onItemClick?: (reaction: CometChat.Reaction, message: CometChat.BaseMessage) => void;
    /** Called when all reactions are removed (parent should close the panel). */
    onEmpty?: () => void;
    /** Error callback. */
    onError?: ((error: CometChat.CometChatException) => void) | null;
    /** Children for compound composition. */
    children?: ReactNode;
    /** Optional className. */
    className?: string;
}
/** Context value shared across CometChatReactionList sub-components. */
interface CometChatReactionListContextValue {
    /** The message object. */
    message: CometChat.BaseMessage;
    /** All reactions fetched so far (flat list). */
    allReactions: CometChat.Reaction[];
    /** Reactions grouped by emoji. */
    groupedReactions: Map<string, CometChat.Reaction[]>;
    /** Currently selected emoji filter. null = "All". */
    selectedEmoji: string | null;
    /** Fetch state. */
    fetchState: CometChatReactionListFetchState;
    /** Whether more reactions can be fetched. */
    hasMore: boolean;
    /** Whether a fetch is in progress. */
    isFetching: boolean;
    /** Unique emoji tabs derived from groupedReactions. */
    emojiTabs: string[];
    /** Total reaction count (sum of all). */
    totalCount: number;
    /** Reactions currently displayed (filtered by selectedEmoji). */
    filteredReactions: CometChat.Reaction[];
    /** Select an emoji tab (null = All). */
    selectEmoji: (emoji: string | null) => void;
    /** Fetch more reactions (pagination). */
    fetchMore: () => Promise<void>;
    /** Handle item click (current user only). */
    handleItemClick: (reaction: CometChat.Reaction) => void;
    /** Whether a reaction is from the current user. */
    isCurrentUser: (reaction: CometChat.Reaction) => boolean;
    /** Retry after error. */
    retry: () => void;
    /** Logged-in user UID. */
    loggedInUserUid: string;
}
/** Props for CometChatReactionList.Tabs. */
interface CometChatReactionListTabsProps {
    className?: string;
}
/** Props for CometChatReactionList.Items. */
interface CometChatReactionListItemsProps {
    className?: string;
}
/** Props for CometChatReactionList.LoadingState. */
interface CometChatReactionListLoadingStateProps {
    className?: string;
}
/** Props for CometChatReactionList.ErrorState. */
interface CometChatReactionListErrorStateProps {
    className?: string;
}
/** Props for CometChatReactionList.EmptyState. */
interface CometChatReactionListEmptyStateProps {
    className?: string;
}

/**
 * CometChatReactionList — standalone compound component for viewing who reacted to a message.
 *
 * Shows a panel with emoji tabs (All + per-emoji) and a scrollable list of users who reacted.
 * Fetches reactor details from the SDK via `CometChat.ReactionsRequestBuilder`.
 * Supports clicking own reactions to remove them (fires callback, updates list optimistically).
 * Emits `onEmpty` when all reactions are removed (parent should close the panel).
 *
 * This is a STANDALONE component — it manages its own state and does NOT depend on
 * `CometChatReactions.Root` context. It is distinct from `CometChatReactions.List`
 * which is a sub-component of `CometChatReactions`.
 *
 * Usage (flat API — simplest):
 * ```tsx
 * <CometChatReactionList
 *   message={message}
 *   onItemClick={(reaction, msg) => CometChat.removeReaction(msg.getId(), reaction.getReaction())}
 *   onEmpty={() => setShowReactionList(false)}
 * />
 * ```
 *
 * Usage (compound composition — full control):
 * ```tsx
 * <CometChatReactionList.Root message={message} onItemClick={handleRemove}>
 *   <CometChatReactionList.Tabs />
 *   <CometChatReactionList.LoadingState />
 *   <CometChatReactionList.ErrorState />
 *   <CometChatReactionList.EmptyState />
 *   <CometChatReactionList.Items />
 * </CometChatReactionList.Root>
 * ```
 */
declare const CometChatReactionList: React__default.FC<CometChatReactionListRootProps> & {
    Root: React__default.FC<CometChatReactionListRootProps>;
    Tabs: React__default.FC<CometChatReactionListTabsProps>;
    Items: React__default.FC<CometChatReactionListItemsProps>;
    LoadingState: React__default.FC<CometChatReactionListLoadingStateProps>;
    ErrorState: React__default.FC<CometChatReactionListErrorStateProps>;
    EmptyState: React__default.FC<CometChatReactionListEmptyStateProps>;
};

/**
 * Hook to access the CometChatReactionList context.
 * Must be used within a CometChatReactionList.Root.
 */
declare function useCometChatReactionListContext(): CometChatReactionListContextValue;

interface CometChatUseCometChatReactionListOptions {
    message: CometChat.BaseMessage;
    reactionsRequestBuilder?: CometChat.ReactionsRequestBuilder;
    onItemClick?: (reaction: CometChat.Reaction, message: CometChat.BaseMessage) => void;
    onEmpty?: () => void;
    onError?: ((error: CometChat.CometChatException) => void) | null;
}
/**
 * useCometChatReactionList — data hook for the standalone CometChatReactionList component.
 *
 * Manages fetching all reactions for a message, grouping them by emoji client-side,
 * and handling optimistic removal when the current user removes their reaction.
 *
 * Does NOT subscribe to SDK events — the parent (MessageList) owns reaction add/remove
 * and passes an updated `message` prop when reactions change.
 */
declare function useCometChatReactionList(options: CometChatUseCometChatReactionListOptions): Omit<CometChatReactionListContextValue, 'message'> & {
    message: CometChat.BaseMessage;
};

/**
 * CometChatMessageBubble — shared wrapper for all message types.
 *
 * Renders avatar, sender name, bubble background, content (from plugin),
 * timestamp, receipts, and thread view. The `contentView` prop is the
 * inner content produced by `plugin.renderBubble()`.
 */
declare const CometChatMessageBubble: React__default.FC<CometChatMessageBubbleProps>;

/** Props for CometChatTextBubble. */
interface CometChatTextBubbleProps {
    /**
     * The message to render. When `text` is omitted, the bubble extracts content itself
     * via `message.getText()` and configures mention formatting from the message.
     * Provide `message` for plugin/standalone usage.
     */
    message?: CometChat.BaseMessage;
    /**
     * Explicit text to display. Overrides `message.getText()` when provided
     * (used for media captions). At least one of `text` / `message` should be set.
     */
    text?: string;
    /** Whether the message was sent by the logged-in user. Default: true. */
    isSentByMe?: boolean;
    /** Text formatters to apply (mentions, URLs, etc.). */
    textFormatters?: CometChatTextFormatter[];
    /** Disable text truncation (read more / show less). Default: false. */
    disableTruncation?: boolean;
    /** Optional custom className. */
    className?: string;
}

/**
 * CometChatTextBubble — renders text messages with formatting, link previews,
 * translations, emoji detection, and content truncation.
 */
declare const CometChatTextBubble: React__default.FC<CometChatTextBubbleProps>;

/** Incoming/outgoing alignment for a message bubble. */
type CometChatBubbleAlignment = 'left' | 'right';

/** A single image attachment extracted from a MediaMessage. */
interface CometChatImageBubbleAttachment {
    /** Full-resolution image URL. Empty string for pending/optimistic messages. */
    url: string;
    /** File size in bytes (used by fullscreen viewer). */
    size?: number;
}
/** Props for the self-extracting CometChatImageBubble. */
interface CometChatImageBubbleProps {
    /**
     * The image message. The bubble extracts its attachments and caption itself,
     * so it can be used directly (no plugin).
     */
    message: CometChat.MediaMessage;
    /** Override incoming/outgoing alignment. Defaults to sender-vs-logged-in-user. */
    alignment?: CometChatBubbleAlignment;
    /** Text formatters for caption rendering (mentions, URLs). */
    textFormatters?: CometChatTextFormatter[];
    /** Optional custom className. */
    className?: string;
    /** Custom placeholder image URL shown while the image is loading. Falls back to default photo icon. */
    placeholderImage?: string;
    /** Callback fired when an image is clicked (in addition to opening the fullscreen viewer). */
    onImageClicked?: (attachment: CometChatImageBubbleAttachment, index: number) => void;
}

/**
 * CometChatImageBubble — renders image messages with single/multi-image layouts,
 * click-to-fullscreen gallery, caption display, and overflow indicators.
 *
 * Takes the SDK message and extracts its attachments and caption itself; alignment
 * defaults to sender-vs-logged-in-user, so it can be used directly (no plugin).
 *
 * This is the inner content component. The outer wrapper (avatar, sender name,
 * timestamp, receipts, thread view) is handled by CometChatMessageBubble.
 *
 * @deprecated Use {@link CometChatImagesBubble} instead. This legacy
 * single-attachment bubble is retained for backward compatibility and is no
 * longer the default renderer for image messages.
 */
declare const CometChatImageBubble: React__default.FC<CometChatImageBubbleProps>;

/** Props for CometChatVideoBubble. */
interface CometChatVideoBubbleProps {
    /**
     * The SDK media message. Drives all message-derived data:
     * video attachments, thumbnails, caption, and sender name.
     */
    message: CometChat.MediaMessage;
    /**
     * Bubble alignment. When omitted, it is derived from the message sender vs the
     * logged-in user via `getBubbleAlignment`, so the bubble renders correctly standalone.
     */
    alignment?: 'left' | 'right';
    /** Text formatters for caption rendering (mentions, URLs). */
    textFormatters?: CometChatTextFormatter[];
    /** Optional custom className. */
    className?: string;
}

/**
 * CometChatVideoBubble — renders video messages with inline playback (single),
 * thumbnail grids (multi), captions, and fullscreen viewer.
 *
 * Single video: inline <video> with native controls + poster thumbnail.
 * Multi-video: thumbnail <img> + play overlay per tile, click opens fullscreen viewer.
 *
 * @deprecated Use {@link CometChatVideosBubble} instead. This legacy
 * single-attachment bubble is retained for backward compatibility and is no
 * longer the default renderer for video messages.
 */
declare const CometChatVideoBubble: React__default.FC<CometChatVideoBubbleProps>;

/**
 * Props for the self-extracting audio bubble.
 *
 * The bubble takes the SDK message and extracts the audio attachments and caption
 * itself; alignment and localization come from hooks, so it can be used directly
 * (no plugin) by passing only `message`.
 */
interface CometChatAudioBubbleProps {
    /** The audio message. The bubble extracts attachments and caption from it. */
    message: CometChat.MediaMessage;
    /** Override incoming/outgoing alignment. Defaults to sender-vs-logged-in-user. */
    alignment?: CometChatBubbleAlignment;
    /** Text formatters applied to the caption (mentions, URLs, etc.). */
    textFormatters?: CometChatTextFormatter[];
    /** Optional custom className. */
    className?: string;
}

/**
 * CometChatAudioBubble — renders an audio message with WaveSurfer waveform,
 * play/pause, time display, download with progress, and caption support.
 *
 * Takes the SDK message and extracts the audio attachment and caption from it;
 * alignment and localization come from hooks, so it can be used directly (no plugin).
 */
declare const CometChatAudioBubble: React__default.FC<CometChatAudioBubbleProps>;

/** Props for the self-extracting CometChatFileBubble. */
interface CometChatFileBubbleProps {
    /**
     * The file message. The bubble extracts the attachments (url, name, size,
     * extension) and caption from it itself.
     */
    message: CometChat.MediaMessage;
    /** Override incoming/outgoing alignment. Defaults to sender-vs-logged-in-user. */
    alignment?: CometChatBubbleAlignment;
    /** Text formatters applied to the extracted caption. */
    textFormatters?: CometChatTextFormatter[];
    /** Optional custom className. */
    className?: string;
}

/**
 * CometChatFileBubble — renders file messages with icon, filename, size,
 * download button, multi-file expand/collapse, and caption support.
 *
 * Takes the SDK message and extracts the attachments and caption from it itself;
 * localization comes from hooks, so it can be used directly (no plugin).
 *
 * Collapsed: shows up to 3 files + "Show more +N" on the right.
 * Expanded: shows all files + "Show less" on the right.
 *
 * @deprecated Use {@link CometChatFilesBubble} instead. This legacy
 * single-attachment bubble is retained for backward compatibility and is no
 * longer the default renderer for file messages.
 */
declare const CometChatFileBubble: React__default.FC<CometChatFileBubbleProps>;

/** Props for the self-extracting call bubble (direct call / meeting custom messages). */
interface CometChatCallBubbleProps {
    /**
     * The meeting/direct-call custom message. The bubble extracts the call type,
     * session ID, title, icon and timestamp from it.
     */
    message: CometChat.BaseMessage;
    /** Override incoming/outgoing alignment. Defaults to sender-vs-logged-in-user. */
    alignment?: CometChatBubbleAlignment;
    /** Callback when the Join button is clicked. Receives the session ID. */
    onJoinClick?: (sessionId: string) => void;
    /** Optional custom className. */
    className?: string;
}

/**
 * CometChatCallBubble — renders a call bubble with icon, title, subtitle, and a Join button.
 * Used for group/conference call messages (direct call / meeting custom messages).
 *
 * Takes the SDK message and derives the call type, session ID, title, icon and timestamp
 * itself using the logged-in user (from useLoggedInUser) and localization (from useLocale),
 * so it can be rendered directly without a plugin.
 */
declare const CometChatCallBubble: React__default.FC<CometChatCallBubbleProps>;

/** A single image attachment extracted from a MediaMessage. */
interface CometChatImagesBubbleAttachment {
    /** Full-resolution image URL. Empty string for pending/optimistic messages. */
    url: string;
    /** File size in bytes (used by fullscreen viewer). */
    size?: number;
    /** Original file name including extension (used for downloads). */
    name?: string;
}
/** Props for the self-extracting CometChatImagesBubble. */
interface CometChatImagesBubbleProps {
    /**
     * The image message. The bubble extracts its attachments and caption itself,
     * so it can be used directly (no plugin).
     */
    message: CometChat.MediaMessage;
    /** Override incoming/outgoing alignment. Defaults to sender-vs-logged-in-user. */
    alignment?: CometChatBubbleAlignment;
    /** Text formatters for caption rendering (mentions, URLs). */
    textFormatters?: CometChatTextFormatter[];
    /** Optional custom className. */
    className?: string;
    /** Custom placeholder image URL shown while the image is loading. Falls back to default photo icon. */
    placeholderImage?: string;
    /** Callback fired when an image is clicked (in addition to opening the fullscreen viewer). */
    onImageClicked?: (attachment: CometChatImagesBubbleAttachment, index: number) => void;
}

/**
 * CometChatImagesBubble — renders image messages with single/multi-image layouts,
 * click-to-fullscreen gallery, caption display, and overflow indicators.
 *
 * Takes the SDK message and extracts its attachments and caption itself; alignment
 * defaults to sender-vs-logged-in-user, so it can be used directly (no plugin).
 *
 * This is the batch-aware replacement for CometChatImageBubble.
 *
 * This is the inner content component. The outer wrapper (avatar, sender name,
 * timestamp, receipts, thread view) is handled by CometChatMessageBubble.
 */
declare const CometChatImagesBubble: React__default.FC<CometChatImagesBubbleProps>;

/** A single video attachment extracted from a MediaMessage. */
interface CometChatVideosBubbleAttachment {
    /** Video URL. */
    url: string;
    /** Thumbnail URL from thumbnail-generation extension. */
    thumbnail?: string;
    /** Duration in seconds. */
    duration?: number;
    /** File size in bytes. */
    size?: number;
    /** Original file name including extension (used for downloads). */
    name?: string;
}
/** Props for the self-extracting CometChatVideosBubble. */
interface CometChatVideosBubbleProps {
    /**
     * The video message. The bubble extracts its attachments and caption itself,
     * so it can be used directly (no plugin).
     */
    message: CometChat.MediaMessage;
    /** Override incoming/outgoing alignment. Defaults to sender-vs-logged-in-user. */
    alignment?: CometChatBubbleAlignment;
    /** Text formatters for caption rendering (mentions, URLs). */
    textFormatters?: CometChatTextFormatter[];
    /** Optional custom className. */
    className?: string;
    /** Callback fired when a video tile is clicked. */
    onVideoClicked?: (attachment: CometChatVideosBubbleAttachment, index: number) => void;
}

/**
 * CometChatVideosBubble — renders video messages with single/multi-video grid layouts,
 * thumbnail posters from thumbnail-generation extension, play-over-black fallback,
 * click-to-fullscreen video pager, caption display, and overflow indicators.
 *
 * Takes the SDK message and extracts its attachments and caption itself; alignment
 * defaults to sender-vs-logged-in-user, so it can be used directly (no plugin).
 *
 * This is the batch-aware replacement for CometChatVideoBubble.
 */
declare const CometChatVideosBubble: React__default.FC<CometChatVideosBubbleProps>;

/** Props for the self-extracting CometChatAudiosBubble. */
interface CometChatAudiosBubbleProps {
    /**
     * The audio message. The bubble extracts the audio attachments and caption
     * from it itself.
     */
    message: CometChat.MediaMessage;
    /** Override incoming/outgoing alignment. Defaults to sender-vs-logged-in-user. */
    alignment?: CometChatBubbleAlignment;
    /** Text formatters applied to the caption (mentions, URLs, etc.). */
    textFormatters?: CometChatTextFormatter[];
    /** Optional custom className. */
    className?: string;
}

/**
 * CometChatAudiosBubble — renders audio attachments matching the tray card UI.
 *
 * Each card: [round play/pause button | filename + seek slider + time | download button].
 * When >1 audio files: wraps in a background container.
 * Clicking play plays inline; fullscreen available via the play button long-press (future).
 */
declare const CometChatAudiosBubble: React__default.FC<CometChatAudiosBubbleProps>;

/** Props for the voice note bubble. */
interface CometChatVoiceNoteBubbleProps {
    /**
     * The audio message (voice note). The bubble delegates to the existing
     * CometChatAudioBubble waveform renderer.
     */
    message: CometChat.MediaMessage;
    /** Override incoming/outgoing alignment. Defaults to sender-vs-logged-in-user. */
    alignment?: CometChatBubbleAlignment;
    /** Text formatters applied to any caption. */
    textFormatters?: CometChatTextFormatter[];
    /** Optional custom className. */
    className?: string;
}

/**
 * CometChatVoiceNoteBubble — thin wrapper around the existing CometChatAudioBubble
 * waveform renderer. Always standalone (no grid), used for voice notes.
 *
 * Used only for audio messages explicitly tagged `audioType === "voice_note"`.
 * Audio without that tag renders as a normal audio row (CometChatAudiosBubble).
 */
declare const CometChatVoiceNoteBubble: React__default.FC<CometChatVoiceNoteBubbleProps>;

/** Props for the self-extracting CometChatFilesBubble. */
interface CometChatFilesBubbleProps {
    /**
     * The file message. The bubble extracts the attachments (url, name, size,
     * extension) and caption from it itself.
     */
    message: CometChat.MediaMessage;
    /** Override incoming/outgoing alignment. Defaults to sender-vs-logged-in-user. */
    alignment?: CometChatBubbleAlignment;
    /** Text formatters applied to the extracted caption. */
    textFormatters?: CometChatTextFormatter[];
    /** Optional custom className. */
    className?: string;
}

/**
 * CometChatFilesBubble — renders file attachments matching the tray card UI.
 *
 * Each card: [file-type icon | filename + ext/size meta | download button].
 * When >1 files: wraps in a background container.
 * When >3 files: collapsed with "+N more" expander.
 */
declare const CometChatFilesBubble: React__default.FC<CometChatFilesBubbleProps>;

/** Props for the self-extracting call action bubble. */
interface CometChatCallActionBubbleProps {
    /** The call message (audio/video) in the 'call' category. */
    message: CometChat.BaseMessage;
    /** Optional custom className. */
    className?: string;
}

/**
 * CometChatCallActionBubble — renders a call status system message
 * ("Missed Call", "Call Ended", "Outgoing Call", etc.).
 *
 * Takes the SDK call message and derives the status text/icon itself using the
 * logged-in user (from useLoggedInUser) and localization (from useLocale), so it
 * can be used directly without a plugin.
 */
declare const CometChatCallActionBubble: React__default.FC<CometChatCallActionBubbleProps>;

/** Props for the self-extracting group action bubble. */
interface CometChatGroupActionBubbleProps {
    /** The group-action message (member joined/left/added/kicked/banned/scope change). */
    message: CometChat.BaseMessage;
    /** Optional custom className. */
    className?: string;
}

/**
 * CometChatGroupActionBubble — renders a group action system message
 * ("Alice joined", "Bob was added", scope changes, etc.).
 *
 * Takes the SDK action message and derives the localized text itself
 * (via getActionMessageText), so it can be used directly without a plugin.
 */
declare const CometChatGroupActionBubble: React__default.FC<CometChatGroupActionBubbleProps>;

/** Props for CometChatActionBubble. */
interface CometChatActionBubbleProps {
    /** The action text to display (e.g., "Alice joined the group"). */
    messageText: string;
    /**
     * Optional CSS class name for the icon displayed before the text.
     * Used for call status messages (outgoing, incoming, missed, etc.).
     * The icon is rendered via CSS mask — override in your own CSS to use custom icons.
     *
     * Built-in classes:
     * - cometchat-action-bubble__icon--missed-video
     * - cometchat-action-bubble__icon--missed-audio
     * - cometchat-action-bubble__icon--outgoing-video
     * - cometchat-action-bubble__icon--outgoing-audio
     * - cometchat-action-bubble__icon--incoming-video
     * - cometchat-action-bubble__icon--incoming-audio
     * - cometchat-action-bubble__icon--call-ended
     */
    iconClassName?: string;
    /** Whether to use error color for the icon (e.g., missed calls). */
    iconErrorColor?: boolean;
    /** Optional custom className. */
    className?: string;
}

/**
 * CometChatActionBubble — renders a centered system message for actions.
 *
 * Used for group actions ("Alice joined the group") and call status messages
 * ("Missed Call", "Call Ended", etc.).
 *
 * Renders nothing if messageText is empty/whitespace.
 * Supports an optional icon via CSS class name.
 * Override the icon by targeting the class in your own CSS.
 *
 * Accessible: role="status", aria-label.
 */
declare const CometChatActionBubble: React__default.FC<CometChatActionBubbleProps>;

/** Props for CometChatDeleteBubble. */
interface CometChatDeleteBubbleProps {
    /** Whether the deleted message was sent by the logged-in user. Affects styling. */
    isSentByMe?: boolean;
    /** Optional custom text override. Defaults to localized "This message was deleted". */
    text?: string;
    /** Optional custom className. */
    className?: string;
}

/**
 * CometChatDeleteBubble — renders a "This message was deleted" placeholder.
 *
 * Displayed when a message has been soft-deleted (getDeletedAt() !== null).
 * The PluginRegistry routes deleted messages to the DeletePlugin regardless
 * of their original type.
 *
 * Features:
 * - Delete icon via CSS mask on message_delete.svg
 * - Localized text via useLocale()
 * - Sender/receiver styling variants
 * - Accessible: role="status", aria-label
 */
declare const CometChatDeleteBubble: React__default.FC<CometChatDeleteBubbleProps>;

/**
 * CometChatPollsPlugin
 *
 * Extension plugin for poll messages.
 * Handles message type 'extension_poll' in category 'custom'.
 * Renders CometChatPollBubble with poll question, options, and voting.
 */

declare const CometChatPollsPlugin: CometChatMessagePlugin;

/**
 * CometChatStickersPlugin
 *
 * Extension plugin for sticker messages.
 * Handles message type 'extension_sticker' in category 'custom'.
 * Renders CometChatStickerBubble with extracted sticker URL.
 *
 * Note: Stickers use a separate keyboard button in the composer,
 * not the "+" attachment menu.
 */

declare const CometChatStickersPlugin: CometChatMessagePlugin;

/**
 * Types for the CometChatPollBubble component.
 */

/** Event emitted when a vote is successfully submitted. */
interface CometChatPollVoteEvent {
    /** The poll ID. */
    pollId: string | number;
    /** The selected option ID. */
    optionId: string;
    /** The selected option text. */
    optionText: string;
    /** The message containing the poll. */
    message: CometChat.CustomMessage;
}
/** Event emitted when vote submission fails. */
interface CometChatPollVoteErrorEvent {
    /** The poll ID. */
    pollId: string | number;
    /** The attempted option ID. */
    optionId: string;
    /** The error that occurred. */
    error: Error;
    /** The message containing the poll. */
    message: CometChat.CustomMessage;
}
/**
 * Props for the CometChatPollBubble component.
 *
 * The bubble is self-extracting: it derives the question, options, vote counts,
 * total votes and the logged-in user's voted option entirely from `message`.
 * Only non-data props (alignment override, interaction flags, handlers) are exposed.
 */
interface CometChatPollBubbleProps {
    /** The CometChat CustomMessage containing poll data in its metadata. Drives all extraction. */
    message: CometChat.CustomMessage;
    /**
     * Optional bubble alignment override — determines sender/receiver styling.
     * When omitted, alignment is derived from the message sender vs. the logged-in user.
     */
    alignment?: CometChatBubbleAlignment;
    /** Disable all interaction (for thread header preview). */
    disableInteraction?: boolean;
    /** Callback when a vote is submitted successfully. */
    onVoteSubmit?: (event: CometChatPollVoteEvent) => void;
    /** Callback when a vote submission fails. */
    onVoteError?: (event: CometChatPollVoteErrorEvent) => void;
    /** Optional custom className. */
    className?: string;
}

/**
 * CometChatPollBubble
 *
 * Renders poll messages with voting functionality.
 *
 * Self-extracting: takes the SDK CustomMessage and derives the question, options,
 * vote counts, total votes and the logged-in user's voted option itself. The
 * logged-in user (from useLoggedInUser) and localization (from useLocale) come
 * from hooks, so the bubble can be used directly without a plugin.
 *
 * Features:
 * - Optimistic UI with rollback on vote error
 * - Vote change support (click different option to change vote)
 * - Non-blocking API calls (fire-and-forget)
 * - Stacked voter avatars (up to 3)
 * - Progress bars with sender/receiver color variants
 */

declare const CometChatPollBubble: React__default.FC<CometChatPollBubbleProps>;

/** Props for the CometChatCreatePoll component. */
interface CometChatCreatePollProps {
    /** User to send poll to (for 1:1 conversations). */
    user?: CometChat.User;
    /** Group to send poll to (for group conversations). */
    group?: CometChat.Group;
    /** Message to reply to (for quoted replies). */
    replyToMessage?: CometChat.BaseMessage;
    /** Default number of answer options (min 2, max 12). @default 2 */
    defaultAnswers?: number;
    /** Callback when close is requested (close button, Escape). */
    onClose?: () => void;
    /** Callback when poll is created successfully. */
    onPollCreated?: () => void;
    /** Callback when an error occurs. */
    onError?: ((error: CometChat.CometChatException) => void) | null;
    /** Title override. */
    title?: string;
    /** Placeholder text for question input. */
    questionPlaceholderText?: string;
    /** Placeholder text for answer inputs. */
    answerPlaceholderText?: string;
    /** Help text for answers section. */
    answerHelpText?: string;
    /** Add option button text. */
    addAnswerText?: string;
    /** Create button text. */
    createPollButtonText?: string;
}

/**
 * CometChatCreatePoll
 *
 * Modal form for creating poll messages.
 * Supports question input, dynamic answer options (2-12), validation,
 * loading state, error display, and reply-to-message.
 *
 * - Focus trap (Tab/Shift+Tab cycles within modal)
 * - Escape to close + focus restoration on unmount
 * - role="dialog", aria-modal, aria-labelledby
 * - aria-required, aria-invalid on inputs
 * - Error display with role="alert"
 */

declare const CometChatCreatePoll: React__default.FC<CometChatCreatePollProps>;

/** Props for the self-extracting CometChatStickerBubble component. */
interface CometChatStickerBubbleProps {
    /** The sticker custom message. The bubble extracts the image URL and name from its metadata. */
    message: CometChat.CustomMessage;
    /** Override incoming/outgoing alignment. Defaults to sender-vs-logged-in-user. */
    alignment?: CometChatBubbleAlignment;
    /** Optional custom className. */
    className?: string;
}

/**
 * CometChatStickerBubble
 *
 * Self-extracting bubble component for sticker messages. Takes the SDK message and
 * extracts the sticker image URL and name from its metadata itself, so it can be used
 * directly (no plugin). Alignment falls back to sender-vs-logged-in-user.
 *
 * NOT reusing CometChatImageBubble — stickers have different semantics
 * (no caption, no multi-image grid, no fullscreen viewer, different URL extraction).
 */

declare const CometChatStickerBubble: React__default.FC<CometChatStickerBubbleProps>;

/** Props for the self-extracting collaborative document bubble. */
interface CometChatCollaborativeDocumentBubbleProps {
    /** The collaborative-document message. The bubble extracts the URL from its metadata. */
    message: CometChat.BaseMessage;
    /** Override incoming/outgoing alignment. Defaults to sender-vs-logged-in-user. */
    alignment?: CometChatBubbleAlignment;
    /** Click handler for the action button. Receives the document URL. Defaults to window.open. */
    onButtonClick?: (url: string) => void;
    /** Disable the action button (e.g. thread header preview). */
    disabled?: boolean;
    /** Optional custom className. */
    className?: string;
}

/**
 * CometChatCollaborativeDocumentBubble — renders a collaborative document message.
 *
 * Takes the SDK message and extracts the document URL from its metadata itself;
 * localization and theme come from hooks, so it can be used directly (no plugin).
 *
 * Structure: Banner image → Body (icon + title/subtitle) → Action button.
 */
declare const CometChatCollaborativeDocumentBubble: React__default.FC<CometChatCollaborativeDocumentBubbleProps>;

/** Props for the self-extracting collaborative whiteboard bubble. */
interface CometChatCollaborativeWhiteboardBubbleProps {
    /** The collaborative-whiteboard message. The bubble extracts the URL from its metadata. */
    message: CometChat.BaseMessage;
    /** Override incoming/outgoing alignment. Defaults to sender-vs-logged-in-user. */
    alignment?: CometChatBubbleAlignment;
    /** Click handler for the action button. Receives the board URL. Defaults to window.open. */
    onButtonClick?: (url: string) => void;
    /** Disable the action button (e.g. thread header preview). */
    disabled?: boolean;
    /** Optional custom className. */
    className?: string;
}

/**
 * CometChatCollaborativeWhiteboardBubble — renders a collaborative whiteboard message.
 *
 * Takes the SDK message and extracts the board URL from its metadata itself;
 * localization and theme come from hooks, so it can be used directly (no plugin).
 *
 * Structure: Banner image → Body (icon + title/subtitle) → Action button.
 */
declare const CometChatCollaborativeWhiteboardBubble: React__default.FC<CometChatCollaborativeWhiteboardBubbleProps>;

/**
 * CometChatTranslationUtils
 * Translation API call with caching and same-language detection.
 */
interface TranslationResult {
    translatedText: string;
    isSameLanguage: boolean;
}
/**
 * Translate a text message to the specified language.
 * Returns the translated text and whether the source language matches the target.
 *
 * Same-language detection: if the API response's `language_original` matches the
 * requested language (or its base code, e.g., "en" from "en-US"), the message is
 * already in the target language and no translation is needed.
 */
declare function translateMessage(message: CometChat.TextMessage, language: string): Promise<TranslationResult>;
/**
 * Get a cached translation for a message.
 */
declare function getCachedTranslation(messageId: number, language: string): string | undefined;
/**
 * Clear the translation cache.
 */
declare function clearTranslationCache(): void;

/**
 * Shared Extension URL Extractor
 */
/**
 * Extracts a URL from a CometChat message's extension metadata.
 * Path: `@injected -> extensions -> extensionKey -> urlKey`
 */
declare function extractExtensionUrl(message: CometChat.BaseMessage | null | undefined, extensionKey: string, urlKey: string): string;

/** Props for CometChatThreadHeaderRoot. */
interface CometChatThreadHeaderRootProps {
    /** The parent message of the thread. Required. */
    parentMessage: CometChat.BaseMessage;
    /** Whether to hide message receipts in the parent bubble. */
    hideReceipts?: boolean | undefined;
    /** Whether to hide the date chip shown above the parent bubble. @default false */
    hideDate?: boolean | undefined;
    /** Whether to hide the reply count section below the parent bubble. @default false */
    hideReplyCount?: boolean | undefined;
    /** Format for the date chip shown above the parent bubble. */
    separatorDateTimeFormat?: CometChatDateFormatConfig | undefined;
    /** Format for the sent-at timestamp on the parent message bubble. */
    messageSentAtDateTimeFormat?: CometChatDateFormatConfig | undefined;
    /** Whether to show the scrollbar on the bubble wrapper area. @default false */
    showScrollbar?: boolean | undefined;
    /** Callback when the close button is clicked or Escape is pressed. */
    onClose?: (() => void) | undefined;
    /** Callback when the sender name / subtitle is clicked (navigate to parent in main list). */
    onSubtitleClicked?: (() => void) | undefined;
    /** Callback when the parent message is deleted (thread should close). */
    onParentDeleted?: (() => void) | undefined;
    /** Error callback for SDK errors. */
    onError?: ((error: CometChat.CometChatException) => void) | null;
    /** Optional custom className for the root container. */
    className?: string | undefined;
    /** Children for compound composition. If omitted, renders default layout. */
    children?: ReactNode | undefined;
}
/** Props for CometChatThreadHeaderTopBar. */
interface CometChatThreadHeaderTopBarProps {
    /** Optional custom className. */
    className?: string | undefined;
    /** Custom content. If omitted, renders default title + sender + close button. */
    children?: ReactNode | undefined;
}
/** Props for CometChatThreadHeaderTitle. */
interface CometChatThreadHeaderTitleProps {
    /** Custom title text (overrides default localized "Thread"). */
    title?: string | undefined;
    /** Optional custom className. */
    className?: string | undefined;
}
/** Props for CometChatThreadHeaderSenderName. */
interface CometChatThreadHeaderSenderNameProps {
    /** Optional custom className. */
    className?: string | undefined;
}
/** Props for CometChatThreadHeaderCloseButton. */
interface CometChatThreadHeaderCloseButtonProps {
    /** Optional custom className. */
    className?: string | undefined;
}
/** Props for CometChatThreadHeaderParentBubble. */
interface CometChatThreadHeaderParentBubbleProps {
    /** Whether interactions on the bubble are disabled. Default: true. */
    disableInteraction?: boolean | undefined;
    /** Format for the sent-at timestamp on the parent message bubble. */
    messageSentAtDateTimeFormat?: CometChatDateFormatConfig | undefined;
    /** Optional custom className. */
    className?: string | undefined;
}
/** Props for CometChatThreadHeaderReplyCount. */
interface CometChatThreadHeaderReplyCountProps {
    /** Whether to show the divider line. Default: true. */
    showDivider?: boolean | undefined;
    /** Optional custom className. */
    className?: string | undefined;
}
/** Context value shared between sub-components. */
interface CometChatThreadHeaderContextValue {
    /** The parent message (may be updated on edit). */
    parentMessage: CometChat.BaseMessage;
    /** Current reply count (updates in real-time). */
    replyCount: number;
    /** Sender name of the parent message. */
    senderName: string;
    /** Close handler. */
    onClose?: (() => void) | undefined;
    /** Subtitle click handler (navigate to parent in main list). */
    onSubtitleClicked?: (() => void) | undefined;
    /** Whether to hide the date chip above the parent bubble. */
    hideDate?: boolean | undefined;
    /** Whether to hide the reply count section. */
    hideReplyCount?: boolean | undefined;
    /** Format for the date chip above the parent bubble. */
    separatorDateTimeFormat?: CometChatDateFormatConfig | undefined;
    /** Format for the sent-at timestamp on the parent bubble. */
    messageSentAtDateTimeFormat?: CometChatDateFormatConfig | undefined;
    /** Whether to show the scrollbar. */
    showScrollbar?: boolean | undefined;
}
/** Convenience view props for the direct `<CometChatThreadHeader />` flat API. */
interface CometChatThreadHeaderConvenienceProps {
    /** Custom header/top bar content (replaces default top bar). */
    headerView?: ReactNode;
    /** Custom parent message bubble view (replaces default bubble rendering). */
    messageBubbleView?: ReactNode;
    /** Custom subtitle view below the title. */
    subtitleView?: ReactNode;
}
/**
 * Props for the direct `<CometChatThreadHeader />` flat API.
 * Combines all Root props with convenience view props.
 */
type CometChatThreadHeaderProps = Omit<CometChatThreadHeaderRootProps, 'children'> & CometChatThreadHeaderConvenienceProps;

declare const CometChatThreadHeader: React__default.FC<CometChatThreadHeaderProps> & {
    Root: React__default.FC<CometChatThreadHeaderRootProps>;
    TopBar: React__default.FC<CometChatThreadHeaderTopBarProps>;
    Title: React__default.FC<CometChatThreadHeaderTitleProps>;
    SenderName: React__default.FC<CometChatThreadHeaderSenderNameProps>;
    CloseButton: React__default.FC<CometChatThreadHeaderCloseButtonProps>;
    ParentBubble: React__default.FC<CometChatThreadHeaderParentBubbleProps>;
    ReplyCount: React__default.FC<CometChatThreadHeaderReplyCountProps>;
};

/**
 * Hook to access the CometChatThreadHeader context.
 * Must be used within a CometChatThreadHeader.Root.
 *
 * @throws Error if used outside of CometChatThreadHeader.Root
 */
declare function useCometChatThreadHeaderContext(): CometChatThreadHeaderContextValue;

/** User online/offline status. */
type CometChatUserStatus = 'online' | 'offline';
/** Typing indicator display info for the subtitle. */
interface CometChatTypingDisplay {
    /** Whether someone is currently typing. */
    isTyping: boolean;
    /** Display text for the typing indicator. */
    text: string;
}
/** Context value shared between all MessageHeader sub-components. */
interface CometChatMessageHeaderContextValue {
    /** The user being displayed (1-on-1 conversation). */
    user: CometChat.User | null;
    /** The group being displayed (group conversation). */
    group: CometChat.Group | null;
    /** User online/offline status. */
    userStatus: CometChatUserStatus;
    /** Last active timestamp (epoch seconds) for offline users. */
    lastActiveAt: number | null;
    /** Whether someone is currently typing. */
    isTyping: boolean;
    /** Typing display text (e.g., "typing...", "John is typing..."). */
    typingText: string;
    /** Group member count. */
    groupMemberCount: number;
    /** Whether user status should be hidden. */
    hideUserStatus: boolean;
    /** Display name (user name or group name). */
    displayName: string;
    /** Avatar image URL. */
    avatarImage: string;
    /** Avatar name (for initials fallback). */
    avatarName: string;
    /** Whether this is a user conversation. */
    isUserConversation: boolean;
    /** Whether this is a group conversation. */
    isGroupConversation: boolean;
    /** Callback when the back button is clicked. */
    onBack?: () => void;
    /** Callback when the header item (avatar/name area) is clicked. */
    onItemClick?: (entity: CometChat.User | CometChat.Group) => void;
    /** Callback when the search button is clicked. */
    onSearchOptionClicked?: () => void;
    /** Callback when the conversation summary button is clicked. */
    onSummaryClick?: () => void;
    /** Number of messages to include in summary generation (default: 1000). */
    summaryGenerationMessageCount: number;
}
/** Props for CometChatMessageHeaderRoot. */
interface CometChatMessageHeaderRootProps {
    /** The user to display (for 1-on-1 conversations). Mutually exclusive with group. */
    user?: CometChat.User;
    /** The group to display (for group conversations). Mutually exclusive with user. */
    group?: CometChat.Group;
    /** Whether to hide the user's online/offline status. Default: false. */
    hideUserStatus?: boolean;
    /** Whether to hide the back button. Default: false (back button visible). */
    hideBackButton?: boolean;
    /** Whether to show the search option. Default: true. */
    showSearchOption?: boolean;
    /** Whether to show the AI conversation summary button. Default: false. */
    showConversationSummaryButton?: boolean;
    /**
     * Auto-trigger conversation summary when unread message count >= 15.
     * Requires `showConversationSummaryButton` to be true and `onSummaryClick` to be provided.
     * Default: false.
     */
    enableAutoSummaryGeneration?: boolean;
    /**
     * Number of last messages to include in the summary request.
     * Default: 1000.
     */
    summaryGenerationMessageCount?: number;
    /** Whether to hide the voice call button. Default: false (shown by default). */
    hideVoiceCallButton?: boolean;
    /** Whether to hide the video call button. Default: false (shown by default). */
    hideVideoCallButton?: boolean;
    /**
     * Custom call settings builder for ongoing call sessions.
     * Passed to the CometChatCallButtons component.
     */
    callSettingsBuilder?: any;
    /** Custom date/time format for the "last active" timestamp in the subtitle. */
    lastActiveAtDateTimeFormat?: CometChatDateFormatConfig;
    /** Callback when the back button is clicked. */
    onBack?: () => void;
    /** Callback when the header item (avatar/name area) is clicked. */
    onItemClick?: (entity: CometChat.User | CometChat.Group) => void;
    /** Callback when the search button is clicked. */
    onSearchOptionClicked?: () => void;
    /** Callback when the conversation summary button is clicked. */
    onSummaryClick?: () => void;
    /** Callback when the voice call button is clicked. Overrides default call initiation. */
    onVoiceCallClick?: (entity: CometChat.User | CometChat.Group) => void;
    /** Callback when the video call button is clicked. Overrides default call initiation. */
    onVideoCallClick?: (entity: CometChat.User | CometChat.Group) => void;
    /** Error callback for SDK errors. */
    onError?: ((error: CometChat.CometChatException) => void) | null;
    /** Optional custom className for the root container. */
    className?: string;
    /** Children for compound composition. If omitted, renders default layout. */
    children?: ReactNode;
}
/** Props for CometChatMessageHeaderBackButton. */
interface CometChatMessageHeaderBackButtonProps {
    /** Optional custom className. */
    className?: string;
}
/** Props for CometChatMessageHeaderAvatar. */
interface CometChatMessageHeaderAvatarProps {
    /** Optional custom className. */
    className?: string;
}
/** Props for CometChatMessageHeaderTitle. */
interface CometChatMessageHeaderTitleProps {
    /** Optional custom className. */
    className?: string;
}
/** Props for CometChatMessageHeaderSubtitle. */
interface CometChatMessageHeaderSubtitleProps {
    /** Optional custom className. */
    className?: string;
}
/** Props for CometChatMessageHeaderCallButtons (now renders CometChatCallButtons). */
interface CometChatMessageHeaderCallButtonsProps {
    /** Optional custom className. */
    className?: string;
    /** Whether to hide the voice call button. */
    hideVoiceCallButton?: boolean;
    /** Whether to hide the video call button. */
    hideVideoCallButton?: boolean;
    /** Callback when the voice call button is clicked. Overrides default call initiation. */
    onVoiceCallClick?: (entity: CometChat.User | CometChat.Group) => void;
    /** Callback when the video call button is clicked. Overrides default call initiation. */
    onVideoCallClick?: (entity: CometChat.User | CometChat.Group) => void;
    /** Custom call settings builder. */
    callSettingsBuilder?: any;
    /** Error callback. */
    onError?: ((error: CometChat.CometChatException) => void) | null;
}
/** Props for CometChatMessageHeaderSearchButton. */
interface CometChatMessageHeaderSearchButtonProps {
    /** Override the default search click handler. */
    onClick?: () => void;
    /** Optional custom className. */
    className?: string;
}
/** Props for CometChatMessageHeaderSummaryButton. */
interface CometChatMessageHeaderSummaryButtonProps {
    /** Override the default summary click handler. */
    onClick?: () => void;
    /** Optional custom className. */
    className?: string;
}
/** Props for CometChatMessageHeaderOverflowMenu. */
interface CometChatMessageHeaderOverflowMenuProps {
    /** Optional custom className. */
    className?: string;
}
/** Props for CometChatMessageHeaderAuxiliaryButtons. */
interface CometChatMessageHeaderAuxiliaryButtonsProps {
    /** Optional custom className. */
    className?: string;
    /** Custom auxiliary button content. */
    children?: ReactNode;
}
/** Convenience view props for the direct `<CometChatMessageHeader />` flat API. */
interface CometChatMessageHeaderConvenienceProps {
    /** Custom leading view (replaces default avatar area). */
    leadingView?: ReactNode;
    /** Custom title view (replaces default title). */
    titleView?: ReactNode;
    /** Custom subtitle view (replaces default subtitle). */
    subtitleView?: ReactNode;
    /** Custom trailing view (replaces default trailing area with call buttons + menu). */
    trailingView?: ReactNode;
    /** Custom auxiliary button content. */
    auxiliaryButtonView?: ReactNode;
}
/**
 * Props for the direct `<CometChatMessageHeader />` flat API.
 * Combines all Root props with convenience view props.
 */
type CometChatMessageHeaderProps = Omit<CometChatMessageHeaderRootProps, 'children'> & CometChatMessageHeaderConvenienceProps;

declare const CometChatMessageHeader: React__default.FC<CometChatMessageHeaderProps> & {
    Root: React__default.FC<CometChatMessageHeaderRootProps>;
    BackButton: React__default.FC<CometChatMessageHeaderBackButtonProps>;
    Avatar: React__default.FC<CometChatMessageHeaderAvatarProps>;
    Title: React__default.FC<CometChatMessageHeaderTitleProps>;
    Subtitle: React__default.FC<CometChatMessageHeaderSubtitleProps>;
    CallButtons: React__default.FC<CometChatMessageHeaderCallButtonsProps>;
    SearchButton: React__default.FC<CometChatMessageHeaderSearchButtonProps>;
    SummaryButton: React__default.FC<CometChatMessageHeaderSummaryButtonProps>;
    OverflowMenu: React__default.FC<CometChatMessageHeaderOverflowMenuProps>;
    AuxiliaryButtons: React__default.FC<CometChatMessageHeaderAuxiliaryButtonsProps>;
};

/**
 * Hook to access the CometChatMessageHeader context.
 * Must be used within a CometChatMessageHeader.Root.
 *
 * @throws Error if used outside of CometChatMessageHeader.Root
 */
declare function useCometChatMessageHeaderContext(): CometChatMessageHeaderContextValue;

/** Props for CometChatFlagMessageDialog.Root */
interface CometChatFlagMessageDialogRootProps {
    /** The message being flagged. Required for SDK submission. */
    message: CometChat.BaseMessage;
    /** Whether the dialog is currently open. When provided, the component is controlled. */
    isOpen?: boolean;
    /** Callback invoked when the dialog requests to close (outside click, Escape, cancel). */
    onClose?: () => void;
    /** Whether the dialog closes when clicking outside it. Defaults to true. */
    closeOnOutsideClick?: boolean;
    /** Custom submit handler. If omitted, uses the default SDK flagMessage call. */
    onSubmit?: (messageId: string, reasonId: string, remark?: string) => Promise<boolean>;
    /** Error callback for SDK errors. */
    onError?: ((error: CometChat.CometChatException) => void) | null;
    /** Children (Header, Reasons, Remark, Actions sub-components). */
    children?: ReactNode;
    /** Optional custom className. */
    className?: string;
}
/** Props for CometChatFlagMessageDialog.Header */
interface CometChatFlagMessageDialogHeaderProps {
    /** Title text. Defaults to localized "Report a Message". */
    title?: string;
    /** Subtitle text. Defaults to localized description. */
    subtitle?: string;
    /** Children for fully custom header content. */
    children?: ReactNode;
    /** Optional custom className. */
    className?: string;
}
/** Props for CometChatFlagMessageDialog.Reasons */
interface CometChatFlagMessageDialogReasonsProps {
    /** Children for fully custom reason rendering (overrides default reason list). */
    children?: ReactNode;
    /** Optional custom className. */
    className?: string;
}
/** Props for CometChatFlagMessageDialog.Remark */
interface CometChatFlagMessageDialogRemarkProps {
    /** Placeholder text. Defaults to localized placeholder. */
    placeholder?: string;
    /** Maximum character count. Defaults to 500. */
    maxLength?: number;
    /** Label text. Defaults to localized "Reason". */
    label?: string;
    /** Optional custom className. */
    className?: string;
}
/** Props for CometChatFlagMessageDialog.Actions */
interface CometChatFlagMessageDialogActionsProps {
    /** Text for the cancel button. Defaults to localized "Cancel". */
    cancelText?: string;
    /** Text for the submit/report button. Defaults to localized "Report". */
    submitText?: string;
    /** Children for fully custom action buttons. */
    children?: ReactNode;
    /** Optional custom className. */
    className?: string;
}
/** Context value for CometChatFlagMessageDialog */
interface CometChatFlagMessageDialogContextValue {
    /** Whether the dialog is open. */
    isOpen: boolean;
    /** Request to close the dialog. */
    onClose: () => void;
    /** The message being flagged. */
    message: CometChat.BaseMessage;
    /** Available flag reasons (fetched from SDK). */
    flagReasons: FlagReason[];
    /** Currently selected reason, or null. */
    selectedReason: FlagReason | null;
    /** Select a flag reason. */
    selectReason: (reason: FlagReason) => void;
    /** Current remark text. */
    remark: string;
    /** Update the remark text. */
    setRemark: (value: string) => void;
    /** Current error message, or empty string. */
    errorMessage: string;
    /** Set error message. */
    setErrorMessage: (msg: string) => void;
    /** Whether a submit is in progress. */
    isLoading: boolean;
    /** Submit the flag report. */
    handleSubmit: () => Promise<void>;
    /** Whether reasons are still loading from SDK. */
    isLoadingReasons: boolean;
}

type CometChatFlagMessageDialogProps = Omit<CometChatFlagMessageDialogRootProps, 'children'>;
declare const CometChatFlagMessageDialog: React__default.FC<CometChatFlagMessageDialogProps> & {
    Root: React__default.FC<CometChatFlagMessageDialogRootProps>;
    Header: React__default.FC<CometChatFlagMessageDialogHeaderProps>;
    Reasons: React__default.FC<CometChatFlagMessageDialogReasonsProps>;
    Remark: React__default.FC<CometChatFlagMessageDialogRemarkProps>;
    Actions: React__default.FC<CometChatFlagMessageDialogActionsProps>;
};

declare function useCometChatFlagMessageDialogContext(): CometChatFlagMessageDialogContextValue;

/** Selection mode for the user list. */
type CometChatUsersSelectionMode = 'none' | 'single' | 'multiple';

/** A single option in the user context menu (hover menu). */
interface CometChatUserOption {
    /** Unique identifier. */
    id: string;
    /** Display title (localized). */
    title: string;
    /** Icon URL or inline SVG string. */
    iconURL?: string;
    /** Callback when the option is selected. */
    onClick: (user: CometChat.User) => void;
}
/** Props for CometChatUsers.Root (Provider + default layout). */
interface CometChatUsersRootProps {
    /** Custom request builder for fetching users. Defaults to limit 30. */
    usersRequestBuilder?: CometChat.UsersRequestBuilder;
    /** Custom request builder specifically for search queries. */
    searchRequestBuilder?: CometChat.UsersRequestBuilder;
    /** Initial search keyword to filter users. */
    searchKeyword?: string;
    /** Whether to hide user online/offline status indicator. */
    hideUserStatus?: boolean;
    /** Selection mode: 'none' | 'single' | 'multiple'. */
    selectionMode?: CometChatUsersSelectionMode;
    /** Currently active/highlighted user. */
    activeUser?: CometChat.User;
    /** Key to extract section header value from user object. */
    sectionHeaderKey?: keyof CometChat.User;
    /** Function that returns context menu options for a user. */
    options?: (user: CometChat.User) => CometChatUserOption[];
    /** Callback when a user item is clicked. */
    onItemClick?: (user: CometChat.User) => void;
    /** Callback when a user is selected or deselected. */
    onSelect?: (user: CometChat.User, selected: boolean) => void;
    /** Callback when an error occurs. */
    onError?: ((error: CometChat.CometChatException) => void) | null;
    /** Callback when the user list is empty after initial fetch. */
    onEmpty?: () => void;
    /** Whether to hide the search bar. Default: false. */
    hideSearch?: boolean;
    /** Whether to show alphabetical section headers. Default: true. */
    showSectionHeader?: boolean;
    /** Whether to show a preview bar of selected users (chips) when selectionMode is 'multiple'. Default: false. */
    showSelectedUsersPreview?: boolean;
    /** Show the native scrollbar on the list. Default: false (scrollbar hidden). */
    showScrollbar?: boolean;
    /** Children (compound sub-components). If omitted, renders default layout. */
    children?: ReactNode;
}
/** Props for CometChatUsers.List. */
interface CometChatUsersListProps {
    /** Optional custom render function for each user item. */
    itemView?: (user: CometChat.User) => ReactNode;
}
/** Props for CometChatUsers.Item. */
interface CometChatUsersItemProps {
    /** The user to render. */
    user: CometChat.User;
    /** Whether to hide the user status indicator. */
    hideUserStatus?: boolean;
    /** Whether this item is active/highlighted. */
    isActive?: boolean;
    /** Custom leading view (replaces avatar). */
    leadingView?: ReactNode;
    /** Custom title view. */
    titleView?: ReactNode;
    /** Custom subtitle view. */
    subtitleView?: ReactNode;
    /** Custom trailing view (replaces selection control). */
    trailingView?: ReactNode;
}
/** Props for CometChatUsers.Header. */
interface CometChatUsersHeaderProps {
    /** Custom title text. Defaults to localized "Users". */
    title?: string;
    /** Custom header content (replaces default). */
    children?: ReactNode;
}
/** Props for CometChatUsers.SearchBar. */
interface CometChatUsersSearchBarProps {
    /** Placeholder text. Defaults to localized "Search users". */
    placeholder?: string;
}
/** Props for CometChatUsers.SectionHeader. */
interface CometChatUsersSectionHeaderProps {
    /** The section header character (e.g., "A", "B"). */
    letter: string;
}
/** Props for CometChatUsers.EmptyState. */
interface CometChatUsersEmptyStateProps {
    /** Custom empty state content (replaces default). */
    children?: ReactNode;
}
/** Props for CometChatUsers.ErrorState. */
interface CometChatUsersErrorStateProps {
    /** Custom error state content (replaces default). */
    children?: ReactNode;
}
/** Props for CometChatUsers.LoadingStateProps. */
interface CometChatUsersLoadingStateProps {
    /** Custom loading state content (replaces default shimmer). */
    children?: ReactNode;
}
/** Props for CometChatUsers.SelectedPreview. */
interface CometChatUsersSelectedPreviewProps {
    /** Custom chip render function. */
    chipView?: (user: CometChat.User) => ReactNode;
}
/** Context value provided by CometChatUsers.Root. */
interface CometChatUsersContextValue {
    /** List of fetched users. */
    users: CometChat.User[];
    /** Current fetch lifecycle state. */
    fetchState: CometChatFetchState;
    /** Whether more pages are available. */
    hasMore: boolean;
    /** Error message (if fetchState is 'error'). */
    error: string | null;
    /** UIDs of selected users. */
    selectedUserIds: string[];
    /** Full user objects for selected users (persists across search). */
    selectedUsersMap: Map<string, CometChat.User>;
    /** Currently active/highlighted user UID. */
    activeUserId: string | null;
    /** Current search text. */
    searchText: string;
    /** Selection mode. */
    selectionMode: CometChatUsersSelectionMode;
    /** Whether to hide user status. */
    hideUserStatus: boolean;
    /** Key for section header extraction. */
    sectionHeaderKey: keyof CometChat.User;
    /** Whether to hide the search bar. */
    hideSearch: boolean;
    /** Whether to show alphabetical section headers. */
    showSectionHeader: boolean;
    /** Whether to show a preview bar of selected users. */
    showSelectedUsersPreview: boolean;
    /** Whether to show the native scrollbar on the list. */
    showScrollbar: boolean;
    /** Context menu options function. */
    options?: ((user: CometChat.User) => CometChatUserOption[]) | undefined;
    /** Fetch next page of users. */
    fetchNext: () => Promise<void>;
    /** Set search text (triggers re-fetch). */
    setSearchText: (text: string) => void;
    /** Select a user. */
    selectUser: (user: CometChat.User) => void;
    /** Deselect a user by UID. */
    deselectUser: (userId: string) => void;
    /** Select a range of users (shift-click). */
    selectRange: (users: CometChat.User[]) => void;
    /** Deselect a range of users. */
    deselectRange: (userIds: string[]) => void;
    /** Clear all selections. */
    clearSelection: () => void;
    /** Set active user UID. */
    setActiveUser: (userId: string | null) => void;
    /** Handle item click (selection + callback). */
    handleItemClick: (user: CometChat.User, event?: {
        shiftKey?: boolean;
    }) => void;
}
/** Convenience view props for the direct `<CometChatUsers />` flat API. */
interface CometChatUsersConvenienceProps {
    /** Custom leading view per user item (replaces avatar). */
    leadingView?: (user: CometChat.User) => ReactNode;
    /** Custom title view per user item. */
    titleView?: (user: CometChat.User) => ReactNode;
    /** Custom subtitle view per user item. */
    subtitleView?: (user: CometChat.User) => ReactNode;
    /** Custom trailing view per user item (replaces selection control). */
    trailingView?: (user: CometChat.User) => ReactNode;
    /** Fully custom item view (overrides leadingView, titleView, subtitleView, trailingView). */
    itemView?: (user: CometChat.User) => ReactNode;
    /** Custom header content (replaces default header). */
    headerView?: ReactNode;
    /** Custom loading state content (replaces default shimmer). */
    loadingView?: ReactNode;
    /** Custom error state content (replaces default error view). */
    errorView?: ReactNode;
    /** Custom empty state content (replaces default empty view). */
    emptyView?: ReactNode;
}
/**
 * Props for the direct `<CometChatUsers />` flat API.
 * Combines all Root props with convenience view props.
 * When using this API, do NOT pass `children` — the component renders its own default layout.
 */
type CometChatUsersProps = Omit<CometChatUsersRootProps, 'children'> & CometChatUsersConvenienceProps;
/** Options for the useCometChatUsers hook. */
interface CometChatUseCometChatUsersOptions {
    usersRequestBuilder?: CometChat.UsersRequestBuilder | undefined;
    searchRequestBuilder?: CometChat.UsersRequestBuilder | undefined;
    searchKeyword?: string | undefined;
    hideUserStatus?: boolean | undefined;
    selectionMode?: CometChatUsersSelectionMode | undefined;
    activeUser?: CometChat.User | undefined;
    onError?: ((error: CometChat.CometChatException) => void) | null | undefined;
    onEmpty?: (() => void) | undefined;
    onSelect?: ((user: CometChat.User, selected: boolean) => void) | undefined;
    onItemClick?: ((user: CometChat.User) => void) | undefined;
}
/** Return type of the useCometChatUsers hook. */
interface CometChatUseCometChatUsersReturn {
    users: CometChat.User[];
    fetchState: CometChatFetchState;
    hasMore: boolean;
    error: string | null;
    selectedUserIds: string[];
    selectedUsersMap: Map<string, CometChat.User>;
    activeUserId: string | null;
    searchText: string;
    fetchNext: () => Promise<void>;
    setSearchText: (text: string) => void;
    selectUser: (user: CometChat.User) => void;
    deselectUser: (userId: string) => void;
    selectRange: (users: CometChat.User[]) => void;
    deselectRange: (userIds: string[]) => void;
    clearSelection: () => void;
    setActiveUser: (userId: string | null) => void;
    handleItemClick: (user: CometChat.User, event?: {
        shiftKey?: boolean;
    }) => void;
}

/**
 * CometChatUsers — Compound component namespace with flat API.
 *
 * - `<CometChatUsers ... />` — flat API with convenience props
 * - `<CometChatUsers.Root>...</CometChatUsers.Root>` — compound composition
 */
declare const CometChatUsers: React__default.FC<CometChatUsersProps> & {
    Root: React__default.FC<CometChatUsersRootProps>;
    List: React__default.FC<CometChatUsersListProps>;
    Item: React__default.MemoExoticComponent<({ user, hideUserStatus: hideUserStatusProp, isActive: isActiveProp, leadingView, titleView, subtitleView, trailingView, }: CometChatUsersItemProps) => react_jsx_runtime.JSX.Element>;
    Header: React__default.FC<CometChatUsersHeaderProps>;
    SearchBar: React__default.FC<CometChatUsersSearchBarProps>;
    SectionHeader: React__default.FC<CometChatUsersSectionHeaderProps>;
    EmptyState: React__default.FC<CometChatUsersEmptyStateProps>;
    ErrorState: React__default.FC<CometChatUsersErrorStateProps>;
    LoadingState: React__default.FC<CometChatUsersLoadingStateProps>;
    SelectedPreview: React__default.FC<CometChatUsersSelectedPreviewProps>;
};

/**
 * Hook to access the CometChatUsers context.
 * Must be used within a CometChatUsers.Root component.
 * @throws Error if used outside of CometChatUsers.Root.
 */
declare function useCometChatUsersContext(): CometChatUsersContextValue;

/**
 * useCometChatUsers — orchestration hook for the users list data layer.
 *
 * Creates the Manager, attaches SDK listeners, dispatches reducer actions,
 * and exposes a clean API to the Provider.
 */
declare function useCometChatUsers(options?: CometChatUseCometChatUsersOptions): CometChatUseCometChatUsersReturn;

/** Selection mode for the group list. */
type CometChatGroupsSelectionMode = 'none' | 'single' | 'multiple';

/** A single option in the group context menu (hover menu). */
interface CometChatGroupOption {
    /** Unique identifier. */
    id: string;
    /** Display title (localized). */
    title: string;
    /** Icon URL or inline SVG string. */
    iconURL?: string;
    /** Callback when the option is selected. */
    onClick: (group: CometChat.Group) => void;
}
/** Props for CometChatGroups.Root (Provider + default layout). */
interface CometChatGroupsRootProps {
    /** Custom request builder for fetching groups. Defaults to limit 30. */
    groupsRequestBuilder?: CometChat.GroupsRequestBuilder;
    /** Custom request builder specifically for search queries. */
    searchRequestBuilder?: CometChat.GroupsRequestBuilder;
    /** Initial search keyword to filter groups. */
    searchKeyword?: string;
    /** Whether to hide the group type badge (public/private/password). */
    hideGroupType?: boolean;
    /** Selection mode: 'none' | 'single' | 'multiple'. */
    selectionMode?: CometChatGroupsSelectionMode;
    /** Currently active/highlighted group. */
    activeGroup?: CometChat.Group;
    /** Function that returns context menu options for a group. */
    options?: (group: CometChat.Group) => CometChatGroupOption[];
    /** Callback when a group item is clicked. */
    onItemClick?: (group: CometChat.Group) => void;
    /** Callback when a group is selected or deselected. */
    onSelect?: (group: CometChat.Group, selected: boolean) => void;
    /** Callback when an error occurs. */
    onError?: ((error: CometChat.CometChatException) => void) | null;
    /** Callback when the group list is empty after initial fetch. */
    onEmpty?: () => void;
    /** Whether to hide the search bar. Default: false. */
    hideSearch?: boolean;
    /** Show the native scrollbar on the list. Default: false (scrollbar hidden). */
    showScrollbar?: boolean;
    /** Children (compound sub-components). If omitted, renders default layout. */
    children?: ReactNode;
}
/** Props for CometChatGroups.List. */
interface CometChatGroupsListProps {
    /** Optional custom render function for each group item. */
    itemView?: (group: CometChat.Group) => ReactNode;
}
/** Props for CometChatGroups.Item. */
interface CometChatGroupsItemProps {
    /** The group to render. */
    group: CometChat.Group;
    /** Whether this item is active/highlighted. */
    isActive?: boolean;
    /** Custom leading view (replaces avatar). */
    leadingView?: ReactNode;
    /** Custom title view. */
    titleView?: ReactNode;
    /** Custom subtitle view. */
    subtitleView?: ReactNode;
    /** Custom trailing view (replaces selection control). */
    trailingView?: ReactNode;
}
/** Props for CometChatGroups.Header. */
interface CometChatGroupsHeaderProps {
    /** Custom title text. Defaults to "Groups". */
    title?: string;
    /** Custom header content (replaces default). */
    children?: ReactNode;
}
/** Props for CometChatGroups.SearchBar. */
interface CometChatGroupsSearchBarProps {
    /** Placeholder text. Defaults to "Search groups". */
    placeholder?: string;
}
/** Props for CometChatGroups.EmptyState. */
interface CometChatGroupsEmptyStateProps {
    /** Custom empty state content (replaces default). */
    children?: ReactNode;
}
/** Props for CometChatGroups.ErrorState. */
interface CometChatGroupsErrorStateProps {
    /** Custom error state content (replaces default). */
    children?: ReactNode;
}
/** Props for CometChatGroups.LoadingState. */
interface CometChatGroupsLoadingStateProps {
    /** Custom loading state content (replaces default shimmer). */
    children?: ReactNode;
}
/** Context value provided by CometChatGroups.Root. */
interface CometChatGroupsContextValue {
    /** List of fetched groups. */
    groups: CometChat.Group[];
    /** Current fetch lifecycle state. */
    fetchState: CometChatFetchState;
    /** Whether more pages are available. */
    hasMore: boolean;
    /** Error message (if fetchState is 'error'). */
    error: string | null;
    /** GUIDs of selected groups. */
    selectedGroupIds: string[];
    /** Full group objects for selected groups (persists across search). */
    selectedGroupsMap: Map<string, CometChat.Group>;
    /** Currently active/highlighted group GUID. */
    activeGroupId: string | null;
    /** Current search text. */
    searchText: string;
    /** Selection mode. */
    selectionMode: CometChatGroupsSelectionMode;
    /** Whether to hide the group type badge. */
    hideGroupType: boolean;
    /** Whether to hide the search bar. */
    hideSearch: boolean;
    /** Whether to show the native scrollbar. Default: false (hidden). */
    showScrollbar: boolean;
    /** Context menu options function. */
    options?: ((group: CometChat.Group) => CometChatGroupOption[]) | undefined;
    /** Fetch next page of groups. */
    fetchNext: () => Promise<void>;
    /** Set search text (triggers re-fetch). */
    setSearchText: (text: string) => void;
    /** Select a group. */
    selectGroup: (group: CometChat.Group) => void;
    /** Deselect a group by GUID. */
    deselectGroup: (groupId: string) => void;
    /** Select a range of groups (shift-click). */
    selectRange: (groups: CometChat.Group[]) => void;
    /** Deselect a range of groups. */
    deselectRange: (groupIds: string[]) => void;
    /** Clear all selections. */
    clearSelection: () => void;
    /** Set active group GUID. */
    setActiveGroup: (groupId: string | null) => void;
    /** Handle item click (selection + callback). */
    handleItemClick: (group: CometChat.Group, event?: {
        shiftKey?: boolean;
    }) => void;
    /** Create a new group. */
    createGroup: (group: CometChat.Group) => Promise<CometChat.Group>;
    /** Join a group (with optional password for password-protected groups). */
    joinGroup: (guid: string, groupType: string, password?: string) => Promise<CometChat.Group>;
    /** Leave a group. */
    leaveGroup: (guid: string) => Promise<boolean>;
    /** Delete a group (owner only). */
    deleteGroup: (guid: string) => Promise<boolean>;
}
/** Convenience view props for the direct `<CometChatGroups />` flat API. */
interface CometChatGroupsConvenienceProps {
    /** Custom leading view per group item (replaces avatar). */
    leadingView?: (group: CometChat.Group) => ReactNode;
    /** Custom title view per group item. */
    titleView?: (group: CometChat.Group) => ReactNode;
    /** Custom subtitle view per group item. */
    subtitleView?: (group: CometChat.Group) => ReactNode;
    /** Custom trailing view per group item (replaces selection control). */
    trailingView?: (group: CometChat.Group) => ReactNode;
    /** Fully custom item view (overrides leadingView, titleView, subtitleView, trailingView). */
    itemView?: (group: CometChat.Group) => ReactNode;
    /** Custom header content (replaces default header). */
    headerView?: ReactNode;
    /** Custom loading state content (replaces default shimmer). */
    loadingView?: ReactNode;
    /** Custom error state content (replaces default error view). */
    errorView?: ReactNode;
    /** Custom empty state content (replaces default empty view). */
    emptyView?: ReactNode;
}
/**
 * Props for the direct `<CometChatGroups />` flat API.
 * Combines all Root props with convenience view props.
 */
type CometChatGroupsProps = Omit<CometChatGroupsRootProps, 'children'> & CometChatGroupsConvenienceProps;
/** Options for the useCometChatGroups hook. */
interface CometChatUseCometChatGroupsOptions {
    groupsRequestBuilder?: CometChat.GroupsRequestBuilder | undefined;
    searchRequestBuilder?: CometChat.GroupsRequestBuilder | undefined;
    searchKeyword?: string | undefined;
    selectionMode?: CometChatGroupsSelectionMode | undefined;
    activeGroup?: CometChat.Group | undefined;
    onError?: ((error: CometChat.CometChatException) => void) | null | undefined;
    onEmpty?: (() => void) | undefined;
    onSelect?: ((group: CometChat.Group, selected: boolean) => void) | undefined;
    onItemClick?: ((group: CometChat.Group) => void) | undefined;
}
/** Return type of the useCometChatGroups hook. */
interface CometChatUseCometChatGroupsReturn {
    groups: CometChat.Group[];
    fetchState: CometChatFetchState;
    hasMore: boolean;
    error: string | null;
    selectedGroupIds: string[];
    selectedGroupsMap: Map<string, CometChat.Group>;
    activeGroupId: string | null;
    searchText: string;
    fetchNext: () => Promise<void>;
    setSearchText: (text: string) => void;
    selectGroup: (group: CometChat.Group) => void;
    deselectGroup: (groupId: string) => void;
    selectRange: (groups: CometChat.Group[]) => void;
    deselectRange: (groupIds: string[]) => void;
    clearSelection: () => void;
    setActiveGroup: (groupId: string | null) => void;
    handleItemClick: (group: CometChat.Group, event?: {
        shiftKey?: boolean;
    }) => void;
    createGroup: (group: CometChat.Group) => Promise<CometChat.Group>;
    joinGroup: (guid: string, groupType: string, password?: string) => Promise<CometChat.Group>;
    leaveGroup: (guid: string) => Promise<boolean>;
    deleteGroup: (guid: string) => Promise<boolean>;
}

declare const CometChatGroups: React__default.FC<CometChatGroupsProps> & {
    Root: React__default.FC<CometChatGroupsRootProps>;
    List: React__default.FC<CometChatGroupsListProps>;
    Item: React__default.MemoExoticComponent<({ group, isActive: isActiveProp, leadingView, titleView, subtitleView, trailingView, }: CometChatGroupsItemProps) => react_jsx_runtime.JSX.Element>;
    Header: React__default.FC<CometChatGroupsHeaderProps>;
    SearchBar: React__default.FC<CometChatGroupsSearchBarProps>;
    EmptyState: React__default.FC<CometChatGroupsEmptyStateProps>;
    ErrorState: React__default.FC<CometChatGroupsErrorStateProps>;
    LoadingState: React__default.FC<CometChatGroupsLoadingStateProps>;
};

/**
 * Hook to access the CometChatGroups context.
 * Must be used within a CometChatGroups.Root component.
 * @throws Error if used outside of CometChatGroups.Root.
 */
declare function useCometChatGroupsContext(): CometChatGroupsContextValue;

/**
 * useCometChatGroups — orchestration hook for the groups list data layer.
 *
 * Creates the Manager, attaches SDK listeners, dispatches reducer actions,
 * and exposes a clean API to the Provider.
 */
declare function useCometChatGroups(options?: CometChatUseCometChatGroupsOptions): CometChatUseCometChatGroupsReturn;

/** Selection mode for the conversation list. */
type CometChatConversationsSelectionMode = 'none' | 'single' | 'multiple';

/** A single option in the conversation context menu (hover/swipe menu). */
interface CometChatConversationOption {
    /** Unique identifier. */
    id: string;
    /** Display title (localized). */
    title: string;
    /** Icon URL or inline SVG string. */
    iconURL?: string;
    /** Callback when the option is selected. */
    onClick: (conversation: CometChat.Conversation) => void;
}
/** Props for CometChatConversations.Root (Provider + default layout). */
interface CometChatConversationsRootProps {
    /** Custom request builder for fetching conversations. Defaults to limit 30. */
    conversationsRequestBuilder?: CometChat.ConversationsRequestBuilder;
    /** Custom request builder specifically for search queries. */
    searchRequestBuilder?: CometChat.ConversationsRequestBuilder;
    /** Initial search keyword to filter conversations. */
    searchKeyword?: string;
    /** Whether to hide user online/offline status indicator on conversation items. */
    hideUserStatus?: boolean;
    /** Whether to hide the unread count badge. */
    hideUnreadCount?: boolean;
    /** Whether to hide message receipts (sent/delivered/read). */
    hideReceipts?: boolean;
    /** Whether to hide the group type indicator. */
    hideGroupType?: boolean;
    /** Custom date/time format configuration for the last message timestamp. */
    lastMessageDateTimeFormat?: CometChatDateFormatConfig;
    /** Whether to disable sound notifications for incoming messages. */
    disableSoundForMessages?: boolean;
    /** Custom sound URL for incoming message notifications. */
    customSoundForMessages?: string;
    /** Selection mode: 'none' | 'single' | 'multiple'. */
    selectionMode?: CometChatConversationsSelectionMode;
    /** Currently active/highlighted conversation. */
    activeConversation?: CometChat.Conversation;
    /** Function that returns context menu options for a conversation. */
    options?: (conversation: CometChat.Conversation) => CometChatConversationOption[];
    /** Callback when a conversation item is clicked. */
    onItemClick?: (conversation: CometChat.Conversation) => void;
    /** Callback when a conversation is selected or deselected. */
    onSelect?: (conversation: CometChat.Conversation, selected: boolean) => void;
    /** Callback when an error occurs. */
    onError?: ((error: CometChat.CometChatException) => void) | null;
    /** Callback when the conversation list is empty after initial fetch. */
    onEmpty?: () => void;
    /**
     * Callback when the search bar is clicked (click, Enter, or Space).
     * When provided, the search bar input becomes read-only (acts as a trigger to open global search).
     */
    onSearchBarClicked?: () => void;
    /** Custom search view that replaces the default search bar when provided. */
    searchView?: ReactNode;
    /** Show the native scrollbar on the list. Default: false (scrollbar hidden). */
    showScrollbar?: boolean;
    /** Whether to hide the delete conversation option on conversation items. Default: false. */
    hideDeleteConversation?: boolean;
    /** Whether to show the search bar. Default: true. */
    showSearchBar?: boolean;
    /** Children (compound sub-components). If omitted, renders default layout. */
    children?: ReactNode;
}
/** Props for CometChatConversations.List. */
interface CometChatConversationsListProps {
    /** Optional custom render function for each conversation item. */
    itemView?: (conversation: CometChat.Conversation) => ReactNode;
}
/** Props for CometChatConversations.Item. */
interface CometChatConversationsItemProps {
    /** The conversation to render. */
    conversation: CometChat.Conversation;
    /** Whether to hide the user status indicator. */
    hideUserStatus?: boolean;
    /** Whether to hide the unread count badge. */
    hideUnreadCount?: boolean;
    /** Whether to hide message receipts. */
    hideReceipts?: boolean;
    /** Whether to hide the delete button on hover/swipe. */
    hideDeleteButton?: boolean;
    /** Whether this item is active/highlighted. */
    isActive?: boolean;
    /** Function that returns context menu options for this conversation. */
    options?: (conversation: CometChat.Conversation) => CometChatConversationOption[];
    /** Custom leading view (replaces avatar). */
    leadingView?: ReactNode;
    /** Custom title view. */
    titleView?: ReactNode;
    /** Custom subtitle view (replaces last message preview). */
    subtitleView?: ReactNode;
    /** Custom trailing view (replaces timestamp + unread badge). */
    trailingView?: ReactNode;
}
/** Props for CometChatConversations.Header. */
interface CometChatConversationsHeaderProps {
    /** Custom title text. Defaults to "Chats". */
    title?: string;
    /** Custom header content (replaces default). */
    children?: ReactNode;
}
/** Props for CometChatConversations.SearchBar. */
interface CometChatConversationsSearchBarProps {
    /** Placeholder text. Defaults to "Search conversations". */
    placeholder?: string;
    /**
     * Callback when the search bar is clicked (click, Enter, or Space).
     * When provided, the input becomes read-only (acts as a trigger).
     */
    onClick?: () => void;
}
/** Props for CometChatConversations.EmptyState. */
interface CometChatConversationsEmptyStateProps {
    /** Custom empty state content (replaces default). */
    children?: ReactNode;
}
/** Props for CometChatConversations.ErrorState. */
interface CometChatConversationsErrorStateProps {
    /** Custom error state content (replaces default). */
    children?: ReactNode;
}
/** Props for CometChatConversations.LoadingState. */
interface CometChatConversationsLoadingStateProps {
    /** Custom loading state content (replaces default shimmer). */
    children?: ReactNode;
}
/** Context value provided by CometChatConversations.Root. */
interface CometChatConversationsContextValue {
    /** List of fetched conversations. */
    conversations: CometChat.Conversation[];
    /** Current fetch lifecycle state. */
    fetchState: CometChatFetchState;
    /** Whether more pages are available. */
    hasMore: boolean;
    /** Error message (if fetchState is 'error'). */
    error: string | null;
    /** Conversation IDs of selected conversations. */
    selectedConversationIds: string[];
    /** Full conversation objects for selected conversations (persists across search). */
    selectedConversationsMap: Map<string, CometChat.Conversation>;
    /** Currently active/highlighted conversation ID. */
    activeConversationId: string | null;
    /** Current search text. */
    searchText: string;
    /** Typing indicators keyed by user UID or group GUID. */
    typingIndicatorMap: Map<string, CometChat.TypingIndicator>;
    /** Selection mode. */
    selectionMode: CometChatConversationsSelectionMode;
    /** Whether to hide user status. */
    hideUserStatus: boolean;
    /** Whether to hide unread count badge. */
    hideUnreadCount: boolean;
    /** Whether to hide message receipts. */
    hideReceipts: boolean;
    /** Whether to hide the group type indicator. */
    hideGroupType: boolean;
    /** Custom date/time format configuration for the last message timestamp. */
    lastMessageDateTimeFormat?: CometChatDateFormatConfig | undefined;
    /** Logged-in user UID (for receipt display). */
    loggedInUserId: string | null;
    /** Context menu options function. */
    options?: ((conversation: CometChat.Conversation) => CometChatConversationOption[]) | undefined;
    /** Fetch next page of conversations. */
    fetchNext: () => Promise<void>;
    /** Set search text (triggers re-fetch). */
    setSearchText: (text: string) => void;
    /** Select a conversation. */
    selectConversation: (conversation: CometChat.Conversation) => void;
    /** Deselect a conversation by ID. */
    deselectConversation: (conversationId: string) => void;
    /** Select a range of conversations (shift-click). */
    selectRange: (conversations: CometChat.Conversation[]) => void;
    /** Deselect a range of conversations. */
    deselectRange: (conversationIds: string[]) => void;
    /** Clear all selections. */
    clearSelection: () => void;
    /** Set active conversation ID. */
    setActiveConversation: (conversationId: string | null) => void;
    /** Handle item click (selection + callback). */
    handleItemClick: (conversation: CometChat.Conversation, event?: {
        shiftKey?: boolean;
    }) => void;
    /** Delete a conversation. */
    deleteConversation: (conversationId: string) => Promise<void>;
    /** Set conversation to be deleted (shows confirm dialog). */
    setConversationToBeDeleted: (conversation: CometChat.Conversation | null) => void;
    /** Conversation pending deletion (for confirm dialog). */
    conversationToBeDeleted: CometChat.Conversation | null;
    /** Callback when the search bar is clicked (acts as trigger for global search). */
    onSearchBarClicked?: (() => void) | undefined;
    /** Whether to hide the delete conversation option on conversation items. */
    hideDeleteConversation: boolean;
    /** Whether to show the search bar. */
    showSearchBar: boolean;
}
/** Convenience view props for the direct `<CometChatConversations />` flat API. */
interface CometChatConversationsConvenienceProps {
    /** Custom search view that replaces the default search bar when provided. */
    searchView?: ReactNode;
    /** Custom leading view per conversation item (replaces avatar). */
    leadingView?: (conversation: CometChat.Conversation) => ReactNode;
    /** Custom title view per conversation item. */
    titleView?: (conversation: CometChat.Conversation) => ReactNode;
    /** Custom subtitle view per conversation item (replaces last message preview). */
    subtitleView?: (conversation: CometChat.Conversation) => ReactNode;
    /** Custom trailing view per conversation item (replaces timestamp + badge). */
    trailingView?: (conversation: CometChat.Conversation) => ReactNode;
    /** Fully custom item view (overrides leadingView, titleView, subtitleView, trailingView). */
    itemView?: (conversation: CometChat.Conversation) => ReactNode;
    /** Custom header content (replaces default header). */
    headerView?: ReactNode;
    /** Custom loading state content (replaces default shimmer). */
    loadingView?: ReactNode;
    /** Custom error state content (replaces default error view). */
    errorView?: ReactNode;
    /** Custom empty state content (replaces default empty view). */
    emptyView?: ReactNode;
}
/**
 * Props for the direct `<CometChatConversations />` flat API.
 * Combines all Root props with convenience view props.
 */
type CometChatConversationsProps = Omit<CometChatConversationsRootProps, 'children'> & CometChatConversationsConvenienceProps;
/** Options for the useCometChatConversations hook. */
interface CometChatUseCometChatConversationsOptions {
    conversationsRequestBuilder?: CometChat.ConversationsRequestBuilder | undefined;
    searchRequestBuilder?: CometChat.ConversationsRequestBuilder | undefined;
    searchKeyword?: string | undefined;
    hideUserStatus?: boolean | undefined;
    hideUnreadCount?: boolean | undefined;
    hideReceipts?: boolean | undefined;
    disableSoundForMessages?: boolean | undefined;
    customSoundForMessages?: string | undefined;
    selectionMode?: CometChatConversationsSelectionMode | undefined;
    activeConversation?: CometChat.Conversation | undefined;
    onError?: ((error: CometChat.CometChatException) => void) | null | undefined;
    onEmpty?: (() => void) | undefined;
    onSelect?: ((conversation: CometChat.Conversation, selected: boolean) => void) | undefined;
    onItemClick?: ((conversation: CometChat.Conversation) => void) | undefined;
}
/** Return type of the useCometChatConversations hook. */
interface CometChatUseCometChatConversationsReturn {
    conversations: CometChat.Conversation[];
    fetchState: CometChatFetchState;
    hasMore: boolean;
    error: string | null;
    selectedConversationIds: string[];
    selectedConversationsMap: Map<string, CometChat.Conversation>;
    activeConversationId: string | null;
    searchText: string;
    typingIndicatorMap: Map<string, CometChat.TypingIndicator>;
    loggedInUserId: string | null;
    fetchNext: () => Promise<void>;
    setSearchText: (text: string) => void;
    selectConversation: (conversation: CometChat.Conversation) => void;
    deselectConversation: (conversationId: string) => void;
    selectRange: (conversations: CometChat.Conversation[]) => void;
    deselectRange: (conversationIds: string[]) => void;
    clearSelection: () => void;
    setActiveConversation: (conversationId: string | null) => void;
    handleItemClick: (conversation: CometChat.Conversation, event?: {
        shiftKey?: boolean;
    }) => void;
    deleteConversation: (conversationId: string) => Promise<void>;
    setConversationToBeDeleted: (conversation: CometChat.Conversation | null) => void;
    conversationToBeDeleted: CometChat.Conversation | null;
}

/**
 * CometChatConversations — Compound component namespace with flat API.
 *
 * - `<CometChatConversations ... />` — flat API with convenience props
 * - `<CometChatConversations.Root>...</CometChatConversations.Root>` — compound composition
 */
declare const CometChatConversations: React__default.FC<CometChatConversationsProps> & {
    Root: React__default.FC<CometChatConversationsRootProps>;
    List: React__default.FC<CometChatConversationsListProps>;
    Item: React__default.FC<CometChatConversationsItemProps>;
    Header: React__default.FC<CometChatConversationsHeaderProps>;
    SearchBar: React__default.FC<CometChatConversationsSearchBarProps>;
    EmptyState: React__default.FC<CometChatConversationsEmptyStateProps>;
    ErrorState: React__default.FC<CometChatConversationsErrorStateProps>;
    LoadingState: React__default.FC<CometChatConversationsLoadingStateProps>;
};

/**
 * Hook to access the CometChatConversations context.
 * Must be used within a CometChatConversations.Root component.
 * @throws Error if used outside of CometChatConversations.Root.
 */
declare function useCometChatConversationsContext(): CometChatConversationsContextValue;

/**
 * useCometChatConversations — orchestration hook for the conversations list data layer.
 *
 * Creates the Manager, attaches SDK listeners, dispatches reducer actions,
 * and exposes a clean API to the Provider.
 */
declare function useCometChatConversations(options?: CometChatUseCometChatConversationsOptions): CometChatUseCometChatConversationsReturn;

/** Selection mode for the group members list. */
type CometChatGroupMembersSelectionMode = 'none' | 'single' | 'multiple';

/** A single option in the group member context menu (hover menu). */
interface CometChatGroupMemberOption {
    /** Unique identifier (e.g., 'kick', 'ban', 'changeScope'). */
    id: string;
    /** Display title (localized). */
    title: string;
    /** Icon URL or inline SVG string. */
    iconURL?: string;
    /** Callback when the option is selected. */
    onClick: (member: CometChat.GroupMember) => void;
}
/** Props for CometChatGroupMembers.Root (Provider + default layout). */
interface CometChatGroupMembersRootProps {
    /** The group whose members to display. Required. */
    group: CometChat.Group;
    /** Custom request builder for fetching group members. Defaults to limit 30. */
    groupMemberRequestBuilder?: CometChat.GroupMembersRequestBuilder;
    /** Custom request builder specifically for search queries. */
    searchRequestBuilder?: CometChat.GroupMembersRequestBuilder;
    /** Initial search keyword to filter members. */
    searchKeyword?: string;
    /** Whether to hide user online/offline status indicator. */
    hideUserStatus?: boolean;
    /** Whether to hide the kick member option in the context menu. */
    hideKickMemberOption?: boolean;
    /** Whether to hide the ban member option in the context menu. */
    hideBanMemberOption?: boolean;
    /** Whether to hide the scope change option in the context menu. */
    hideScopeChangeOption?: boolean;
    /** Selection mode: 'none' | 'single' | 'multiple'. */
    selectionMode?: CometChatGroupMembersSelectionMode;
    /** Function that returns context menu options for a member. */
    options?: (member: CometChat.GroupMember) => CometChatGroupMemberOption[];
    /** Callback when a member item is clicked. */
    onItemClick?: (member: CometChat.GroupMember) => void;
    /** Callback when a member is selected or deselected. */
    onSelect?: (member: CometChat.GroupMember, selected: boolean) => void;
    /** Callback when an error occurs. */
    onError?: ((error: CometChat.CometChatException) => void) | null;
    /** Callback when the member list is empty after initial fetch. */
    onEmpty?: () => void;
    /** Callback when back button is clicked. */
    onBack?: () => void;
    /** Whether to hide the search bar. Default: false. */
    hideSearch?: boolean;
    /** Show the native scrollbar on the list. Default: false (scrollbar hidden). */
    showScrollbar?: boolean;
    /** Children (compound sub-components). If omitted, renders default layout. */
    children?: ReactNode;
}
/** Props for CometChatGroupMembers.List. */
interface CometChatGroupMembersListProps {
    /** Optional custom render function for each member item. */
    itemView?: (member: CometChat.GroupMember) => ReactNode;
}
/** Props for CometChatGroupMembers.Item. */
interface CometChatGroupMembersItemProps {
    /** The group member to render. */
    member: CometChat.GroupMember;
    /** Whether to hide the user status indicator. */
    hideUserStatus?: boolean;
    /** Whether this item is active/highlighted. */
    isActive?: boolean;
    /** Custom leading view (replaces avatar). */
    leadingView?: ReactNode;
    /** Custom title view. */
    titleView?: ReactNode;
    /** Custom subtitle view. */
    subtitleView?: ReactNode;
    /** Custom trailing view (replaces role badge + action menu). */
    trailingView?: ReactNode;
}
/** Props for CometChatGroupMembers.Header. */
interface CometChatGroupMembersHeaderProps {
    /** Custom title text. Defaults to "Members". */
    title?: string;
    /** Custom header content (replaces default). */
    children?: ReactNode;
}
/** Props for CometChatGroupMembers.SearchBar. */
interface CometChatGroupMembersSearchBarProps {
    /** Placeholder text. Defaults to "Search members". */
    placeholder?: string;
}
/** Props for CometChatGroupMembers.EmptyState. */
interface CometChatGroupMembersEmptyStateProps {
    /** Custom empty state content (replaces default). */
    children?: ReactNode;
}
/** Props for CometChatGroupMembers.ErrorState. */
interface CometChatGroupMembersErrorStateProps {
    /** Custom error state content (replaces default). */
    children?: ReactNode;
}
/** Props for CometChatGroupMembers.LoadingState. */
interface CometChatGroupMembersLoadingStateProps {
    /** Custom loading state content (replaces default shimmer). */
    children?: ReactNode;
}
/** Context value provided by CometChatGroupMembers.Root. */
interface CometChatGroupMembersContextValue {
    /** The group whose members are displayed. */
    group: CometChat.Group;
    /** List of fetched group members. */
    members: CometChat.GroupMember[];
    /** Current fetch lifecycle state. */
    fetchState: CometChatFetchState;
    /** Whether more pages are available. */
    hasMore: boolean;
    /** Error message (if fetchState is 'error'). */
    error: string | null;
    /** UIDs of selected members. */
    selectedMemberIds: string[];
    /** Full member objects for selected members (persists across search). */
    selectedMembersMap: Map<string, CometChat.GroupMember>;
    /** Currently active/highlighted member UID. */
    activeMemberId: string | null;
    /** Current search text. */
    searchText: string;
    /** The logged-in user (for role-based action visibility). */
    loggedInUser: CometChat.User | null;
    /** The logged-in user's scope in this group. */
    loggedInUserScope: string | null;
    /** Selection mode. */
    selectionMode: CometChatGroupMembersSelectionMode;
    /** Whether to hide user status. */
    hideUserStatus: boolean;
    /** Whether to hide the search bar. */
    hideSearch: boolean;
    /** Whether to hide the kick member option. */
    hideKickMemberOption: boolean;
    /** Whether to hide the ban member option. */
    hideBanMemberOption: boolean;
    /** Whether to hide the scope change option. */
    hideScopeChangeOption: boolean;
    /** Context menu options function. */
    options?: ((member: CometChat.GroupMember) => CometChatGroupMemberOption[]) | undefined;
    /** Fetch next page of members. */
    fetchNext: () => Promise<void>;
    /** Set search text (triggers re-fetch). */
    setSearchText: (text: string) => void;
    /** Select a member. */
    selectMember: (member: CometChat.GroupMember) => void;
    /** Deselect a member by UID. */
    deselectMember: (uid: string) => void;
    /** Clear all selections. */
    clearSelection: () => void;
    /** Set active member UID. */
    setActiveMember: (uid: string | null) => void;
    /** Handle item click (selection + callback). */
    handleItemClick: (member: CometChat.GroupMember, event?: {
        shiftKey?: boolean;
    }) => void;
    /** Kick a member from the group. */
    kickMember: (uid: string) => Promise<boolean>;
    /** Ban a member from the group. */
    banMember: (uid: string) => Promise<boolean>;
    /** Unban a previously banned member. */
    unbanMember: (uid: string) => Promise<boolean>;
    /** Change a member's role/scope. */
    changeScope: (uid: string, scope: string) => Promise<boolean>;
    /** Set the member to change scope of (opens CometChatChangeScope dialog). */
    setMemberToChangeScope: (member: CometChat.GroupMember | null) => void;
    /** The member currently pending scope change (for dialog display). */
    memberToChangeScope: CometChat.GroupMember | null;
}
/** Convenience view props for the direct `<CometChatGroupMembers />` flat API. */
interface CometChatGroupMembersConvenienceProps {
    /** Custom leading view per member item (replaces avatar). */
    leadingView?: (member: CometChat.GroupMember) => ReactNode;
    /** Custom title view per member item. */
    titleView?: (member: CometChat.GroupMember) => ReactNode;
    /** Custom subtitle view per member item. */
    subtitleView?: (member: CometChat.GroupMember) => ReactNode;
    /** Custom trailing view per member item (replaces role badge + action menu). */
    trailingView?: (member: CometChat.GroupMember) => ReactNode;
    /** Fully custom item view (overrides leadingView, titleView, subtitleView, trailingView). */
    itemView?: (member: CometChat.GroupMember) => ReactNode;
    /** Custom header content (replaces default header). */
    headerView?: ReactNode;
    /** Custom loading state content (replaces default shimmer). */
    loadingView?: ReactNode;
    /** Custom error state content (replaces default error view). */
    errorView?: ReactNode;
    /** Custom empty state content (replaces default empty view). */
    emptyView?: ReactNode;
}
/**
 * Props for the direct `<CometChatGroupMembers />` flat API.
 * Combines all Root props with convenience view props.
 */
type CometChatGroupMembersProps = Omit<CometChatGroupMembersRootProps, 'children'> & CometChatGroupMembersConvenienceProps;
/** Options for the useCometChatGroupMembers hook. */
interface CometChatUseCometChatGroupMembersOptions {
    group: CometChat.Group;
    groupMemberRequestBuilder?: CometChat.GroupMembersRequestBuilder | undefined;
    searchRequestBuilder?: CometChat.GroupMembersRequestBuilder | undefined;
    searchKeyword?: string | undefined;
    hideUserStatus?: boolean | undefined;
    selectionMode?: CometChatGroupMembersSelectionMode | undefined;
    onError?: ((error: CometChat.CometChatException) => void) | null | undefined;
    onEmpty?: (() => void) | undefined;
    onSelect?: ((member: CometChat.GroupMember, selected: boolean) => void) | undefined;
    onItemClick?: ((member: CometChat.GroupMember) => void) | undefined;
}
/** Return type of the useCometChatGroupMembers hook. */
interface CometChatUseCometChatGroupMembersReturn {
    members: CometChat.GroupMember[];
    fetchState: CometChatFetchState;
    hasMore: boolean;
    error: string | null;
    selectedMemberIds: string[];
    selectedMembersMap: Map<string, CometChat.GroupMember>;
    activeMemberId: string | null;
    searchText: string;
    loggedInUser: CometChat.User | null;
    loggedInUserScope: string | null;
    fetchNext: () => Promise<void>;
    setSearchText: (text: string) => void;
    selectMember: (member: CometChat.GroupMember) => void;
    deselectMember: (uid: string) => void;
    clearSelection: () => void;
    setActiveMember: (uid: string | null) => void;
    handleItemClick: (member: CometChat.GroupMember, event?: {
        shiftKey?: boolean;
    }) => void;
    kickMember: (uid: string) => Promise<boolean>;
    banMember: (uid: string) => Promise<boolean>;
    unbanMember: (uid: string) => Promise<boolean>;
    changeScope: (uid: string, scope: string) => Promise<boolean>;
    setMemberToChangeScope: (member: CometChat.GroupMember | null) => void;
    memberToChangeScope: CometChat.GroupMember | null;
}

declare const CometChatGroupMembers: React__default.FC<CometChatGroupMembersProps> & {
    Root: React__default.FC<CometChatGroupMembersRootProps>;
    List: React__default.FC<CometChatGroupMembersListProps>;
    Item: React__default.MemoExoticComponent<({ member, hideUserStatus: hideUserStatusProp, isActive: isActiveProp, leadingView, titleView, subtitleView, trailingView, }: CometChatGroupMembersItemProps) => react_jsx_runtime.JSX.Element>;
    Header: React__default.FC<CometChatGroupMembersHeaderProps>;
    SearchBar: React__default.FC<CometChatGroupMembersSearchBarProps>;
    EmptyState: React__default.FC<CometChatGroupMembersEmptyStateProps>;
    ErrorState: React__default.FC<CometChatGroupMembersErrorStateProps>;
    LoadingState: React__default.FC<CometChatGroupMembersLoadingStateProps>;
};

/**
 * Hook to access the CometChatGroupMembers context.
 * Must be used within a CometChatGroupMembers.Root component.
 * @throws Error if used outside of CometChatGroupMembers.Root.
 */
declare function useCometChatGroupMembersContext(): CometChatGroupMembersContextValue;

/**
 * useCometChatGroupMembers — orchestration hook for the group members list data layer.
 *
 * Creates the Manager, attaches SDK listeners, dispatches reducer actions,
 * and exposes a clean API to the Provider.
 */
declare function useCometChatGroupMembers(options: CometChatUseCometChatGroupMembersOptions): CometChatUseCometChatGroupMembersReturn;

/** An attachment action shown in the composer's "+" menu. */
interface CometChatComposerAttachmentOption {
    /** Unique identifier (e.g., 'image', 'video', 'file'). */
    id: string;
    /** Display title (localized). */
    title: string;
    /** Icon URL. */
    iconURL: string;
    /** Callback when the option is selected. */
    onClick: () => void;
}
/** Layout mode for the message composer. */
type CometChatMessageComposerLayout = 'compact' | 'multiline';
/** Send state lifecycle. */
type CometChatComposerSendState = 'idle' | 'sending' | 'sent' | 'error';
/** Which overlay content is currently displayed. */
type CometChatComposerContentToDisplay = 'attachments' | 'emojiKeyboard' | 'voiceRecording' | 'stickers' | 'ai' | 'none';
/** Media kind of a staged tray item, derived from the file type. */
type TrayItemKind = 'image' | 'video' | 'audio' | 'file';
/** Upload lifecycle status of a staged tray item. */
type TrayItemStatus = 'uploading' | 'success' | 'failed' | 'rejected';
/** A single staged file in the composer tray with its own upload status and preview. */
interface TrayItem {
    /** Per-file identifier from the upload group. */
    fileId: string;
    /** The staged file. */
    file: File;
    /** Media kind derived from the file type. */
    kind: TrayItemKind;
    /** Upload lifecycle status. */
    status: TrayItemStatus;
    /** Upload progress percentage (0-100). */
    percent: number;
    /** SDK attachment, set once the upload succeeds. */
    attachment?: CometChat.Attachment;
    /** Object URL used for local preview; revoked on remove/clear. */
    previewUrl?: string;
    /** Error captured on failure/rejection. */
    error?: unknown;
}
/** Composer staging-tray slice: one upload group of staged items. */
interface TrayState {
    /** UIKit-generated upload-group id, or null when the tray is empty. */
    batchId: string | null;
    /** Staged items in attach order. */
    items: TrayItem[];
}
/** Configuration for hiding specific attachment options. */
interface CometChatAttachmentHideOptions {
    image?: boolean;
    video?: boolean;
    audio?: boolean;
    file?: boolean;
    polls?: boolean;
    collaborativeDocument?: boolean;
    collaborativeWhiteboard?: boolean;
}
/** Props for CometChatMessageComposer.Root. */
interface CometChatMessageComposerRootProps {
    /** User for 1:1 conversations. */
    user?: CometChat.User;
    /** Group for group conversations. */
    group?: CometChat.Group;
    /** Parent message ID for threaded replies. */
    parentMessageId?: number;
    /** Layout mode. Default: 'compact'. */
    layout?: CometChatMessageComposerLayout;
    /** Initial text to pre-fill (uncontrolled). */
    initialText?: string;
    /**
     * Controlled text value. When provided the composer is in controlled mode —
     * the consumer owns the text state and must update it via `onTextChange`.
     */
    text?: string;
    /** Placeholder text. Default: 'Type a message...'. */
    placeholder?: string;
    /** Enter key behavior. Default: 'send'. */
    enterKeyBehavior?: 'send' | 'newline' | 'none';
    /** Max height for the input area in px. Default: 200. */
    maxInputHeight?: number;
    /** Enable rich text formatting (toolbar, keyboard shortcuts, markdown auto-conversion). Default: false. */
    enableRichTextEditor?: boolean;
    /** Hide the rich text formatting toolbar (toolbar hidden but shortcuts still work). Default: false. */
    hideRichTextFormattingOptions?: boolean;
    /**
     * Show a floating bubble menu near selected text with formatting options (desktop only).
     * Default: false.
     */
    showBubbleMenuOnSelection?: boolean;
    /** Message to edit (triggers edit mode). */
    messageToEdit?: CometChat.TextMessage | CometChat.MediaMessage | null;
    /** Message to reply to (triggers reply mode). */
    messageToReply?: CometChat.BaseMessage | null;
    /** Custom attachment options (overrides plugin-provided ones). */
    attachmentOptions?: CometChatComposerAttachmentOption[];
    /** Hide specific attachment options in the default layout. */
    hideAttachmentOptions?: CometChatAttachmentHideOptions;
    /** Whether to show attachment preview thumbnails before sending. Default: true. */
    showAttachmentPreview?: boolean;
    /**
     * Enable multi-attachment staging behavior. When `true` (default), selecting an
     * attachment option stages files in a tray for a single batched send. When
     * `false`, each attachment option reverts to legacy single-select,
     * send-immediately behavior.
     */
    enableMultipleAttachments?: boolean;
    /** Disable drag-and-drop file upload. Default: false. */
    disableDragAndDrop?: boolean;
    /** Allowed file MIME types for attachments. */
    allowedFileTypes?: string[];
    /** Hide the attachment ("+") button entirely. Default: false. */
    hideAttachmentButton?: boolean;
    /** Hide the emoji keyboard button. Default: false. */
    hideEmojiKeyboardButton?: boolean;
    /** Hide the voice recording button. Default: false. */
    hideVoiceRecordingButton?: boolean;
    /** Hide the stickers button. Default: false. */
    hideStickersButton?: boolean;
    /** Hide the AI button. Default: true. */
    hideAIButton?: boolean;
    /** Hide the live reaction button. Default: false. */
    hideLiveReaction?: boolean;
    /** Hide the send button. Default: false. */
    hideSendButton?: boolean;
    /** Hide the error state UI. Default: false. */
    hideError?: boolean;
    /** Text formatters pipeline. */
    textFormatters?: CometChatTextFormatter[];
    /** Disable individual @mentions (member list). @all remains available unless disableMentionAll is also true. Default: false. */
    disableMentions?: boolean;
    /** Disable @all mention in groups. Default: false. */
    disableMentionAll?: boolean;
    /** Label for the @all mention option. Default: 'all'. */
    mentionAllLabel?: string;
    /** Custom request builder for mention user search. */
    mentionsUsersRequestBuilder?: CometChat.UsersRequestBuilder;
    /** Custom request builder for mention group member search. */
    mentionsGroupMembersRequestBuilder?: CometChat.GroupMembersRequestBuilder;
    /** Disable typing indicator events. Default: false. */
    disableTypingEvents?: boolean;
    /** Disable sound on message send. Default: false. */
    disableSoundForMessage?: boolean;
    /** Custom sound URL for message send. */
    customSoundForMessage?: string;
    /**
     * Disable auto-focus on mobile devices to prevent the keyboard from
     * automatically opening on load. Default: true.
     */
    disableAutoFocusOnMobile?: boolean;
    /** Custom icon URL for the live reaction button. */
    liveReactionIcon?: string;
    /** Custom ReactNode to replace the content inside the attachment button (keeps action wired). */
    attachmentButtonIconView?: ReactNode;
    /** Custom ReactNode to replace the content inside the voice recording button (keeps action wired). */
    voiceRecordingButtonIconView?: ReactNode;
    /** Custom ReactNode to replace the content inside the emoji button (keeps action wired). */
    emojiButtonIconView?: ReactNode;
    /** Custom ReactNode to replace the content inside the send button (keeps send/edit action wired). */
    sendButtonView?: ReactNode;
    /** Custom ReactNode for additional buttons rendered in the actions area before the send button. */
    auxiliaryButtonView?: ReactNode;
    /** Custom ReactNode for the header area above the input (replaces edit/reply preview + validation). */
    headerView?: ReactNode;
    /** Whether to show the scrollbar on the input area. Default: false. */
    showScrollbar?: boolean;
    /** Called when text changes. */
    onTextChange?: (text: string) => void;
    /** Called when a message is sent. */
    onSendButtonClick?: (message: CometChat.BaseMessage, mode?: 'send' | 'edit') => void;
    /**
     * Override the internal SDK sendTextMessage call for optimistic updates.
     * When provided, called INSTEAD of CometChat.sendMessage(). Use with
     * MessageList.sendTextMessage to show messages immediately.
     */
    sendTextMessageOverride?: (text: string, richTextHtml?: string) => string;
    /** Called when an error occurs. */
    onError?: ((error: CometChat.CometChatException) => void) | null;
    /** Called when reply/edit preview is closed. */
    onClosePreview?: () => void;
    /** Called when a file attachment is added. */
    onAttachmentAdded?: (file: File) => void;
    /** Called when a file attachment is removed. */
    onAttachmentRemoved?: (file: File) => void;
    /** Called when a mention is selected from the suggestions list. */
    onMentionSelected?: (user: CometChat.User | CometChat.GroupMember) => void;
    /** Children (sub-components for compound composition). */
    children?: ReactNode;
    /** Optional custom className. */
    className?: string;
}
/** Props for CometChatMessageComposer.Input. */
interface CometChatMessageComposerInputProps {
    /** Optional custom className. */
    className?: string;
}
/** Props for CometChatMessageComposer.SendButton. */
interface CometChatMessageComposerSendButtonProps {
    /** Custom content to render inside the button (replaces default icon). */
    children?: ReactNode;
    /** Optional custom className. */
    className?: string;
}
/** Props for CometChatMessageComposer.AttachmentButton. */
interface CometChatMessageComposerAttachmentButtonProps {
    /** Config for hiding specific attachment options. */
    hideOptions?: CometChatAttachmentHideOptions;
    /** Optional custom className. */
    className?: string;
}
/** Props for CometChatMessageComposer.EmojiButton. */
interface CometChatMessageComposerEmojiButtonProps {
    /** Optional custom className. */
    className?: string;
}
/** Props for CometChatMessageComposer.VoiceButton. */
interface CometChatMessageComposerVoiceButtonProps {
    /** Optional custom className. */
    className?: string;
}
/** Props for CometChatMessageComposer.EditPreview. */
interface CometChatMessageComposerEditPreviewProps {
    /** Optional custom className. */
    className?: string;
}
/** Props for CometChatMessageComposer.ReplyPreview. */
interface CometChatMessageComposerReplyPreviewProps {
    /** Optional custom className. */
    className?: string;
}
/** Props for CometChatMessageComposer.AuxiliaryButtons. */
interface CometChatMessageComposerAuxiliaryButtonsProps {
    /** Children (plugin-injected buttons). */
    children?: ReactNode;
    /** Optional custom className. */
    className?: string;
}
/** Props for CometChatMessageComposer.Header. */
interface CometChatMessageComposerHeaderProps {
    /** Header content. */
    children?: ReactNode;
    /** Optional custom className. */
    className?: string;
}
/** Props for CometChatMessageComposer.Footer. */
interface CometChatMessageComposerFooterProps {
    /** Footer content. */
    children?: ReactNode;
    /** Optional custom className. */
    className?: string;
}
/** Context value shared across CometChatMessageComposer sub-components. */
interface CometChatMessageComposerContextValue {
    text: string;
    textMessageToEdit: CometChat.TextMessage | CometChat.MediaMessage | null;
    messageToReply: CometChat.BaseMessage | null;
    contentToDisplay: CometChatComposerContentToDisplay;
    sendState: CometChatComposerSendState;
    isRecording: boolean;
    isDraggingOver: boolean;
    error: string | null;
    showValidationError: boolean;
    validationErrorText: string | null;
    canSend: boolean;
    isInEditMode: boolean;
    isInReplyMode: boolean;
    /** Whether the voice recording button should be visible (hidden when text has content). */
    showVoiceButton: boolean;
    layout: CometChatMessageComposerLayout;
    /** Multi-attachment staging-tray slice (one upload group of staged items). */
    tray: TrayState;
    /**
     * Stage and upload the given files, creating or extending the upload group.
     * Used by the attachment picker when `enableMultipleAttachments` is true.
     */
    stageAttachments: (files: File[], forcedKind?: TrayItemKind) => void;
    /** Cancel a staged file's upload and remove it from the tray. */
    removeAttachment: (fileId: string) => void;
    /** Retry a failed staged file's upload. */
    retryAttachment: (fileId: string) => void;
    /** Release the upload group and clear the tray. */
    clearAttachments: () => void;
    /** Latest send-eligibility computed from the most recent upload `onComplete`. */
    attachmentsSendable: boolean;
    /** Resolved per-batch maximum attachment count (from SDK settings, or fallback). */
    maxAttachmentCount: number;
    setText: (text: string) => void;
    sendMessage: (textOverride?: string) => Promise<void>;
    sendMediaMessage: (file: File, fileType: string, options?: {
        isVoiceNote?: boolean;
    }) => Promise<void>;
    editMessage: () => Promise<void>;
    insertEmoji: (emoji: string) => void;
    setContentToDisplay: (content: CometChatComposerContentToDisplay) => void;
    closePreview: () => void;
    setRecording: (recording: boolean) => void;
    setDragging: (dragging: boolean) => void;
    dismissValidationError: () => void;
    startTyping: () => void;
    endTyping: () => void;
    inputRef: RefObject<HTMLDivElement | null>;
    /** Ref from the RichTextEditor hook — when enableRichTextEditor is true, Input should use this ref. */
    richTextEditorRef: RefObject<HTMLDivElement | null>;
    user?: CometChat.User;
    group?: CometChat.Group;
    parentMessageId?: number;
    placeholder: string;
    enterKeyBehavior: 'send' | 'newline' | 'none';
    maxInputHeight: number;
    enableRichTextEditor: boolean;
    hideRichTextFormattingOptions: boolean;
    showBubbleMenuOnSelection: boolean;
    disableMentions: boolean;
    disableMentionAll: boolean;
    mentionAllLabel: string;
    showAttachmentPreview: boolean;
    /** Whether multi-attachment staging is enabled (default true). */
    enableMultipleAttachments: boolean;
    allowedFileTypes?: string[];
    attachmentOptions?: CometChatComposerAttachmentOption[];
    textFormatters?: CometChatTextFormatter[];
    hideAttachmentButton: boolean;
    hideEmojiKeyboardButton: boolean;
    hideVoiceRecordingButton: boolean;
    hideStickersButton: boolean;
    hideAIButton: boolean;
    hideLiveReaction: boolean;
    hideSendButton: boolean;
    hideError: boolean;
    disableAutoFocusOnMobile: boolean;
    liveReactionIcon?: string;
    attachmentButtonIconView?: ReactNode;
    voiceRecordingButtonIconView?: ReactNode;
    emojiButtonIconView?: ReactNode;
    auxiliaryButtonView?: ReactNode;
    headerView?: ReactNode;
    showScrollbar?: boolean;
    onError?: ((error: CometChat.CometChatException) => void) | null;
    onAttachmentAdded?: (file: File) => void;
    onAttachmentRemoved?: (file: File) => void;
    onMentionSelected?: (user: CometChat.User | CometChat.GroupMember) => void;
    /** Called when @ is detected in the input. */
    onMentionQueryChange?: (query: string) => void;
    /** Called when mention context is lost. */
    onMentionEnd?: () => void;
}

/**
 * CometChatMessageComposer — compound component namespace with flat API.
 *
 * - `<CometChatMessageComposer ... />` — flat API (renders default layout)
 * - `<CometChatMessageComposer.Root>...</CometChatMessageComposer.Root>` — compound composition
 */
declare const CometChatMessageComposer: React__default.FC<CometChatMessageComposerRootProps> & {
    Root: React__default.FC<CometChatMessageComposerRootProps>;
    Input: React__default.FC<CometChatMessageComposerInputProps>;
    SendButton: React__default.FC<CometChatMessageComposerSendButtonProps>;
    AttachmentButton: React__default.FC<CometChatMessageComposerAttachmentButtonProps>;
    EmojiButton: React__default.FC<CometChatMessageComposerEmojiButtonProps>;
    VoiceButton: React__default.FC<CometChatMessageComposerVoiceButtonProps>;
    EditPreview: React__default.FC<CometChatMessageComposerEditPreviewProps>;
    ReplyPreview: React__default.FC<CometChatMessageComposerReplyPreviewProps>;
    AuxiliaryButtons: React__default.FC<CometChatMessageComposerAuxiliaryButtonsProps>;
    Header: React__default.FC<CometChatMessageComposerHeaderProps>;
    Footer: React__default.FC<CometChatMessageComposerFooterProps>;
};

/**
 * Hook to access the CometChatMessageComposer context.
 * Must be used within a CometChatMessageComposer.Root.
 */
declare function useCometChatMessageComposerContext(): CometChatMessageComposerContextValue;

/** A group of tray items sharing the same media kind. */
interface TrayItemGroup {
    kind: TrayItemKind;
    items: TrayItem[];
}
/**
 * Pure helper: groups success-only tray items by kind and orders the groups in
 * the fixed sequence [image, video, audio, file], filtered to only types that
 * are present.
 *
 * Exported for property testing (Properties 4, 5, 6).
 */
declare function groupAndOrderTrayItems(items: TrayItem[]): TrayItemGroup[];

/** Metadata for a detected mention. */
interface CometChatMentionData {
    uid: string;
    name: string;
    startIndex: number;
    endIndex: number;
    type: 'self' | 'other' | 'channel';
}
/**
 * Formatter for @mentions in text.
 *
 * Handles two formats:
 * - Plain text `@username` patterns (for composer/live typing)
 * - SDK format `<@uid:xxx>` and `<@all:xxx>` patterns (for stored messages)
 *
 * Produces styled spans with BEM classes:
 * `cometchat-mentions`, `cometchat-mentions-you`, `cometchat-mentions-other`,
 * `cometchat-mentions-incoming`, `cometchat-mentions-outgoing`
 */
declare class CometChatMentionsFormatter extends CometChatTextFormatter {
    readonly id = "mentions-formatter";
    priority: number;
    private mentions;
    private users;
    private loggedInUser;
    private messageBubbleAlignment;
    private allMentionLabel;
    setLoggedInUser(user: CometChat.User | null): void;
    setUsers(users: (CometChat.User | CometChat.GroupMember)[]): void;
    setMessageBubbleAlignment(alignment: CometChatMessageBubbleAlignment | undefined): void;
    getRegex(): RegExp;
    /** Check if text contains SDK format mentions. */
    hasSdkMentions(text: string): boolean;
    /**
     * Format plain text @mentions by matching against the user list.
     */
    format(text: string): string;
    /**
     * Format SDK-format mentions: `<@uid:xxx>` and `<@all:xxx>`.
     * Uses the mentionedUsers array to resolve display names.
     */
    formatSdkMentions(text: string, mentionedUsers?: (CometChat.User | CometChat.GroupMember)[]): string;
    getMentions(): CometChatMentionData[];
    reset(): void;
    private getMentionType;
    private buildCssClasses;
}

/**
 * Formatter for URLs in text.
 *
 * Detects URL patterns (http://, https://, www.) and converts them to
 * clickable links with security attributes. Protects existing `<a>` tags
 * and markdown links from double-processing.
 */
declare class CometChatUrlFormatter extends CometChatTextFormatter {
    readonly id = "url-formatter";
    priority: number;
    private urls;
    getRegex(): RegExp;
    format(text: string): string;
    /** Get detected URLs from the last format() call. */
    getUrls(): string[];
    reset(): void;
}

/**
 * CometChatMarkdownFormatter
 *
 * Handles markdown → HTML conversion for display in message bubbles.
 *
 * Supported syntax:
 * - **bold** → <b>bold</b>
 * - _italic_ → <i>italic</i>
 * - __underline__ or ++underline++ → <u>underline</u>
 * - ~~strikethrough~~ → <s>strikethrough</s>
 * - `inline code` → <code>inline code</code>
 * - ```code block``` → <pre><code>code block</code></pre>
 * - > blockquote → <blockquote>blockquote</blockquote>
 * - [text](url) → <a href="url">text</a>
 * - 1. item → <ol><li>item</li></ol>
 * - • item / - item → <ul><li>item</li></ul>
 *
 * This formatter runs FIRST in the pipeline (priority 10) so that
 * subsequent formatters (mentions, URLs) operate on the HTML output.
 */
declare class CometChatMarkdownFormatter extends CometChatTextFormatter {
    readonly id = "markdown-formatter";
    priority: number;
    getRegex(): RegExp;
    format(text: string): string;
    private formatCodeBlocks;
    /**
     * Apply a formatting function only to text segments outside of code blocks.
     * Unlike formatOutsideCode, this does NOT split on inline <code> tags or mention placeholders.
     * Used for blockquote processing which runs before inline code conversion.
     */
    private formatOutsideCodeBlocks;
    /**
     * Apply a formatting function only to text segments outside of code blocks and inline code.
     * Splits the text by <pre><code>...</code></pre> and <code>...</code> segments,
     * applies the formatter only to non-code parts, then reassembles.
     */
    private formatOutsideCode;
    private formatInlineCode;
    private formatBold;
    private formatItalic;
    private formatUnderline;
    private formatStrikethrough;
    private formatLinks;
    private normalizeLinkUrl;
    private formatBlockquotes;
    private formatOrderedLists;
    private formatUnorderedLists;
    /**
     * Strip markdown for conversation subtitle display.
     * Converts markdown to simple HTML (bold, italic, etc.) without block-level elements.
     */
    stripMarkdownForConversation(text: string): string;
    /**
     * Normalize ordered list markers so indented items show correct depth markers.
     * Handles backward compatibility: old messages store all levels as "1. 2. 3."
     * regardless of nesting. This converts them based on indentation:
     * - depth 0 (no indent): keep numeric (1. 2. 3.)
     * - depth 1 (4 spaces): convert to alpha (a. b. c.)
     * - depth 2 (8 spaces): convert to roman (i. ii. iii.)
     */
    private normalizeOrderedListMarkers;
}

/**
 * CometChatRichTextFormatter
 *
 * Converts HTML from the contenteditable composer to markdown for storage/transmission.
 *
 * This formatter runs on the COMPOSER SIDE only. It takes the rich HTML produced
 * by the RichTextEditor and converts it to markdown before the message is sent.
 *
 * Conversion rules:
 * - <b>, <strong> → **text**
 * - <i>, <em> → _text_
 * - <u> → <u>text</u> (HTML-style underline, no standard markdown equivalent)
 * - <s>, <strike>, <del> → ~~text~~
 * - <code> (not in pre) → `text`
 * - <pre><code> → ```text```
 * - <blockquote> → > text
 * - <a href="url">text</a> → [text](url)
 * - <ol><li> → 1. text
 * - <ul><li> → • text
 * - <br> → \n
 * - <div>, <p> → \n
 *
 * Priority is set high (200) so it runs AFTER other formatters in the pipeline.
 */
declare class CometChatRichTextFormatter extends CometChatTextFormatter {
    readonly id = "rich-text-formatter";
    priority: number;
    getRegex(): RegExp;
    /**
     * Only format if the input contains HTML tags that need conversion.
     */
    shouldFormat(text: string): boolean;
    format(text: string): string;
    private htmlToMarkdown;
    private processNode;
    private processChildNode;
    /**
     * Get the ordered list marker based on nesting depth.
     * depth 0: 1. 2. 3. (decimal)
     * depth 1: a. b. c. (lower-alpha)
     * depth 2: i. ii. iii. (lower-roman)
     * depth 3+: cycles back through the pattern
     */
    private getOrderedListMarker;
    private numberToLowerAlpha;
    private numberToLowerRoman;
    /**
     * Wrap inline markers per-line to handle block elements nested inside inline tags.
     */
    private wrapPerLine;
    /**
     * Extract text content from a code element, preserving structure.
     * For inline code: preserves inline formatting (bold/italic/underline/strikethrough)
     * by converting them to markdown markers.
     * For code blocks (pre): strips all formatting to plain text.
     */
    private extractCodeContent;
    /**
     * Extract text and nested list content from a <li> element.
     * Treats <div>/<p>/<br> inside list items as inline (space separator) rather than
     * block (newline) since browsers wrap inline content in divs inside <li>.
     */
    private extractListItemContent;
    /**
     * Clean up markdown output.
     */
    private cleanMarkdown;
    /**
     * Fallback for SSR environments where document is not available.
     * Does basic regex-based HTML stripping.
     */
    private fallbackHtmlToMarkdown;
}

/**
 * CometChatSoundManager
 *
 * Manages audio playback for CometChat events (message send/receive, calls).
 * Provides static methods for playing predefined sounds with optional custom URLs.
 *
 * Used by: CometChatMessageComposer (outgoing), CometChatConversations (incoming),
 * CometChatIncomingCall, CometChatCallButtons.
 *
 * SSR-safe: All Audio API usage is guarded behind typeof checks.
 */
/** Sound event types. */
type CometChatSoundType = 'incomingCall' | 'incomingMessage' | 'incomingMessageFromOther' | 'outgoingCall' | 'outgoingMessage';
declare class CometChatSoundManager {
    private static currentAudio;
    /**
     * Play a sound for the given event type.
     *
     * @param sound - The sound event type to play.
     * @param customSoundUrl - Optional custom sound URL. If not provided, uses the default.
     *
     * @example
     * // Play default outgoing message sound
     * CometChatSoundManager.play('outgoingMessage');
     *
     * @example
     * // Play custom sound
     * CometChatSoundManager.play('incomingMessage', '/sounds/custom-notification.mp3');
     */
    static play(sound: CometChatSoundType, customSoundUrl?: string): void;
    /**
     * Pause and reset the currently playing sound.
     *
     * @example
     * CometChatSoundManager.pause();
     */
    static pause(): void;
    /** Play the outgoing message sound. */
    static onOutgoingMessage(customSoundUrl?: string): void;
    /** Play the incoming message sound. */
    static onIncomingMessage(customSoundUrl?: string): void;
    /** Play the incoming message from other conversation sound. */
    static onIncomingOtherMessage(customSoundUrl?: string): void;
    /** Play the incoming call sound (loops). */
    static onIncomingCall(customSoundUrl?: string): void;
    /** Play the outgoing call sound (loops). */
    static onOutgoingCall(customSoundUrl?: string): void;
    /**
     * Check if the user has interacted with the page.
     * Required by browser autoplay policies.
     */
    private static hasInteracted;
}

/** A single option in the conversation context menu within search results. */
interface CometChatSearchConversationOption {
    /** Unique identifier. */
    id: string;
    /** Display title (localized). */
    title: string;
    /** Icon URL or inline SVG string. */
    iconURL?: string;
    /** Callback when the option is selected. */
    onClick: (conversation: CometChat.Conversation) => void;
}
/** Scope of the search — which result sections to show. */
type CometChatSearchScope = 'conversations' | 'messages';
/** Filter chips available in the search filter bar. */
type CometChatSearchFilter = 'messages' | 'conversations' | 'unread' | 'groups' | 'photos' | 'videos' | 'links' | 'files' | 'audio';
/** Payload emitted when a conversation result is clicked. */
interface CometChatSearchConversationClickEvent {
    conversation: CometChat.Conversation;
    searchKeyword: string;
}
/** Payload emitted when a message result is clicked. */
interface CometChatSearchMessageClickEvent {
    message: CometChat.BaseMessage;
    searchKeyword: string;
}
/** Props for CometChatSearch.Root (and the flat API). */
interface CometChatSearchRootProps {
    /**
     * Which result sections to show.
     * Empty array (default) = both conversations and messages.
     */
    searchIn?: CometChatSearchScope[];
    /**
     * Filter chips to display in the filter bar.
     * Defaults to all available filters.
     */
    searchFilters?: CometChatSearchFilter[];
    /**
     * Pre-select a filter on mount.
     */
    initialSearchFilter?: CometChatSearchFilter;
    /**
     * Pre-populate the search input with this text.
     */
    defaultSearchText?: string;
    /**
     * Scope search to a specific user's conversation.
     * When set, conversation filters are hidden.
     */
    uid?: string;
    /**
     * Scope search to a specific group's conversation.
     * When set, conversation filters are hidden.
     */
    guid?: string;
    /** Hide the back button in the header. */
    hideBackButton?: boolean;
    /** Hide user online/offline status indicators. */
    hideUserStatus?: boolean;
    /** Hide group type badge. */
    hideGroupType?: boolean;
    /** Hide message receipts. */
    hideReceipts?: boolean;
    /** Text formatters applied to conversation subtitles. */
    textFormatters?: CometChatTextFormatter[];
    /**
     * Custom date/time format for the last message timestamp in conversation results.
     * Defaults to DD/MM/YYYY for all date ranges in search context.
     */
    lastMessageDateTimeFormat?: CometChatDateFormatConfig;
    /**
     * Custom date/time format for the sent-at timestamp in message results.
     */
    messageSentAtDateTimeFormat?: CometChatDateFormatConfig;
    /** Custom request builder for conversation search. */
    conversationsRequestBuilder?: CometChat.ConversationsRequestBuilder;
    /** Custom request builder for message search. */
    messagesRequestBuilder?: CometChat.MessagesRequestBuilder;
    /**
     * Function that returns context menu options for a conversation result item.
     * Passed through to each conversation item rendered in search results.
     */
    conversationOptions?: (conversation: CometChat.Conversation) => CometChatSearchConversationOption[];
    /** Fired when the back button is clicked. */
    onBack?: () => void;
    /** Fired when a conversation result item is clicked. */
    onConversationClicked?: (event: CometChatSearchConversationClickEvent) => void;
    /** Fired when a message result item is clicked. */
    onMessageClicked?: (event: CometChatSearchMessageClickEvent) => void;
    /** Fired when a search error occurs. */
    onError?: ((error: CometChat.CometChatException) => void) | null;
    /** Custom render for the initial (pre-search) state. */
    initialView?: ReactNode;
    /** Custom render for the loading state. */
    loadingView?: ReactNode;
    /** Custom render for the empty state (no results). */
    emptyView?: ReactNode;
    /** Custom render for the error state. */
    errorView?: ReactNode;
    /** Custom render for a conversation result item. */
    conversationItemView?: (conversation: CometChat.Conversation) => ReactNode;
    /** Custom leading view for a conversation result item. */
    conversationLeadingView?: (conversation: CometChat.Conversation) => ReactNode;
    /** Custom title view for a conversation result item. */
    conversationTitleView?: (conversation: CometChat.Conversation) => ReactNode;
    /** Custom subtitle view for a conversation result item. */
    conversationSubtitleView?: (conversation: CometChat.Conversation) => ReactNode;
    /** Custom trailing view for a conversation result item. */
    conversationTrailingView?: (conversation: CometChat.Conversation) => ReactNode;
    /** Custom render for a message result item. */
    messageItemView?: (message: CometChat.BaseMessage) => ReactNode;
    /** Custom leading view for a message result item. */
    messageLeadingView?: (message: CometChat.BaseMessage) => ReactNode;
    /** Custom title view for a message result item. */
    messageTitleView?: (message: CometChat.BaseMessage) => ReactNode;
    /** Custom subtitle view for a message result item. */
    messageSubtitleView?: (message: CometChat.BaseMessage) => ReactNode;
    /** Custom trailing view for a message result item. */
    messageTrailingView?: (message: CometChat.BaseMessage) => ReactNode;
    /** Children (compound sub-components). If omitted, renders default layout. */
    children?: ReactNode;
}
/** Props for the flat `<CometChatSearch />` API. */
type CometChatSearchProps = Omit<CometChatSearchRootProps, 'children'>;
/** Context value provided by CometChatSearch.Root. */
interface CometChatSearchContextValue {
    /** Current raw input value (unDebounced). */
    searchValue: string;
    /** Debounced search text used for SDK queries. */
    searchText: string;
    /** Currently active filter chips. */
    activeFilters: CometChatSearchFilter[];
    /** Visible filter chips (computed from scope + active filters). */
    visibleFilters: CometChatSearchFilter[];
    /** Whether to show the initial (pre-search) view. */
    showInitialView: boolean;
    /** Whether to render the conversations result section. */
    showConversations: boolean;
    /** Whether to render the messages result section. */
    showMessages: boolean;
    /** Whether both scopes are active simultaneously. */
    bothScopesActive: boolean;
    /** Whether to hide the conversations section (unified state coordination). */
    hideConversationsSection: boolean;
    /** Whether to hide the messages section (unified state coordination). */
    hideMessagesSection: boolean;
    /** Whether to show a unified empty view (both lists empty). */
    showUnifiedEmpty: boolean;
    /** Whether to show a unified error view (both lists errored). */
    showUnifiedError: boolean;
    conversationsState: CometChatFetchState;
    messagesState: CometChatFetchState;
    searchIn: CometChatSearchScope[];
    searchFilters: CometChatSearchFilter[];
    uid?: string;
    guid?: string;
    hideBackButton: boolean;
    hideUserStatus: boolean;
    hideGroupType: boolean;
    hideReceipts: boolean;
    textFormatters: CometChatTextFormatter[];
    lastMessageDateTimeFormat?: CometChatDateFormatConfig;
    messageSentAtDateTimeFormat?: CometChatDateFormatConfig;
    conversationsRequestBuilder?: CometChat.ConversationsRequestBuilder;
    messagesRequestBuilder?: CometChat.MessagesRequestBuilder;
    conversationOptions?: (conversation: CometChat.Conversation) => CometChatSearchConversationOption[];
    initialView?: ReactNode;
    loadingView?: ReactNode;
    emptyView?: ReactNode;
    errorView?: ReactNode;
    conversationItemView?: (conversation: CometChat.Conversation) => ReactNode;
    conversationLeadingView?: (conversation: CometChat.Conversation) => ReactNode;
    conversationTitleView?: (conversation: CometChat.Conversation) => ReactNode;
    conversationSubtitleView?: (conversation: CometChat.Conversation) => ReactNode;
    conversationTrailingView?: (conversation: CometChat.Conversation) => ReactNode;
    messageItemView?: (message: CometChat.BaseMessage) => ReactNode;
    messageLeadingView?: (message: CometChat.BaseMessage) => ReactNode;
    messageTitleView?: (message: CometChat.BaseMessage) => ReactNode;
    messageSubtitleView?: (message: CometChat.BaseMessage) => ReactNode;
    messageTrailingView?: (message: CometChat.BaseMessage) => ReactNode;
    setSearchValue: (value: string) => void;
    clearSearch: () => void;
    toggleFilter: (filterId: CometChatSearchFilter) => void;
    isFilterActive: (filterId: CometChatSearchFilter) => boolean;
    getFilterLabel: (filterId: CometChatSearchFilter) => string;
    handleBackClick: () => void;
    handleConversationClick: (event: CometChatSearchConversationClickEvent) => void;
    handleMessageClick: (event: CometChatSearchMessageClickEvent) => void;
    handleConversationsStateChange: (state: CometChatFetchState) => void;
    handleMessagesStateChange: (state: CometChatFetchState) => void;
    handleError: (error: unknown) => void;
}
/** Props for CometChatSearchConversationsList. */
interface CometChatSearchConversationsListProps {
    /** Override search keyword (reads from context by default). */
    searchKeyword?: string;
    /** Override active filters (reads from context by default). */
    activeFilters?: CometChatSearchFilter[];
    /** Whether to hide this section entirely. */
    hideSection?: boolean;
    /** Whether to suppress own empty/error views (parent handles them). */
    suppressEmptyErrorView?: boolean;
    /**
     * Force scroll-based infinite pagination instead of the "See More" button.
     * By default, derived from uid/guid/activeFilters presence.
     */
    useScrollPagination?: boolean;
}
/** Props for CometChatSearchMessagesList. */
interface CometChatSearchMessagesListProps {
    /** Override search keyword (reads from context by default). */
    searchKeyword?: string;
    /** Override active filters (reads from context by default). */
    activeFilters?: CometChatSearchFilter[];
    /** Whether to hide this section entirely. */
    hideSection?: boolean;
    /** Whether to suppress own empty/error views (parent handles them). */
    suppressEmptyErrorView?: boolean;
    /**
     * When true, always show the "See More" button instead of scroll-based pagination.
     * By default, derived from uid/guid/activeFilters presence.
     */
    alwaysShowSeeMore?: boolean;
}

/**
 * CometChatSearch — Compound component namespace with flat API.
 *
 * - `<CometChatSearch ... />` — flat API
 * - `<CometChatSearch.Root>...</CometChatSearch.Root>` — compound composition
 */
declare const CometChatSearch: React__default.FC<CometChatSearchProps> & {
    Root: React__default.FC<CometChatSearchRootProps>;
    ConversationsList: React__default.FC<CometChatSearchConversationsListProps>;
    MessagesList: React__default.FC<CometChatSearchMessagesListProps>;
};

/**
 * Hook to access the CometChatSearch context.
 * Must be used within a CometChatSearch.Root component.
 */
declare function useCometChatSearchContext(): CometChatSearchContextValue;

/**
 * Props for the standalone CometChatCallButtons component.
 */
interface CometChatCallButtonsProps {
    /** The user to call (for 1-on-1 calls). Mutually exclusive with group. */
    user?: CometChat.User;
    /** The group to call (for group calls). Mutually exclusive with user. */
    group?: CometChat.Group;
    /** Whether to hide the voice call button. Default: false. */
    hideVoiceCallButton?: boolean;
    /** Whether to hide the video call button. Default: false. */
    hideVideoCallButton?: boolean;
    /** Callback when the voice call button is clicked. Overrides default call initiation. */
    onVoiceCallClick?: (entity: CometChat.User | CometChat.Group) => void;
    /** Callback when the video call button is clicked. Overrides default call initiation. */
    onVideoCallClick?: (entity: CometChat.User | CometChat.Group) => void;
    /**
     * Custom call settings builder for ongoing call sessions.
     * If not provided, falls back to GlobalConfig.callSettingsBuilder, then default.
     */
    callSettingsBuilder?: any;
    /** Error callback for SDK errors. */
    onError?: ((error: CometChat.CometChatException) => void) | null;
    /** Callback when an ongoing call ends. */
    onCallEnded?: () => void;
    /** Optional custom className for the root container. */
    className?: string;
    /** Custom voice call button view. */
    voiceCallButtonView?: ReactNode;
    /** Custom video call button view. */
    videoCallButtonView?: ReactNode;
}

/**
 * CometChatCallButtons — standalone component that renders voice and video call buttons
 * and manages the complete call lifecycle (outgoing + ongoing).
 *
 * Usage:
 * ```tsx
 * <CometChatCallButtons user={selectedUser} />
 * <CometChatCallButtons group={selectedGroup} />
 * <CometChatCallButtons user={user} hideVoiceCallButton />
 * ```
 *
 * This component is self-contained: clicking a button initiates the call,
 * shows the outgoing call UI, transitions to the ongoing call screen on acceptance,
 * and cleans up when the call ends.
 */
declare const CometChatCallButtons: React__default.FC<CometChatCallButtonsProps>;

/**
 * useCometChatCallButtons — standalone hook for managing the call lifecycle.
 *
 * Handles:
 * - Call initiation (user calls via CometChat.initiateCall, group calls via custom message)
 * - Outgoing call state (waiting for answer)
 * - Ongoing call state (active call session)
 * - SDK call listeners (accepted, rejected, cancelled)
 * - UI event listeners (call/ended, call/rejected, call/join)
 */
interface CometChatCallButtonsState {
    /** Active outgoing call object. */
    activeCall: CometChat.Call | null;
    /** Whether call buttons are disabled (during active call). */
    callButtonsDisabled: boolean;
    /** Whether to show outgoing call screen. */
    showOutgoingCallScreen: boolean;
    /** Whether to show ongoing call screen. */
    showOngoingCall: boolean;
    /** Call session ID. */
    callSessionId: string;
    /** Whether current call uses direct calling (group) vs default (user). */
    isDirectCalling: boolean;
    /** Whether current group call is audio-only. */
    isGroupAudioCall: boolean;
}
interface UseCometChatCallButtonsOptions {
    user?: CometChat.User;
    group?: CometChat.Group;
    onError?: ((error: CometChat.CometChatException) => void) | null;
}
declare function useCometChatCallButtons(options: UseCometChatCallButtonsOptions): {
    initiateAudioCall: () => Promise<void>;
    initiateVideoCall: () => Promise<void>;
    cancelOutgoingCall: () => Promise<void>;
    resetCallState: () => void;
    /** Active outgoing call object. */
    activeCall: CometChat.Call | null;
    /** Whether call buttons are disabled (during active call). */
    callButtonsDisabled: boolean;
    /** Whether to show outgoing call screen. */
    showOutgoingCallScreen: boolean;
    /** Whether to show ongoing call screen. */
    showOngoingCall: boolean;
    /** Call session ID. */
    callSessionId: string;
    /** Whether current call uses direct calling (group) vs default (user). */
    isDirectCalling: boolean;
    /** Whether current group call is audio-only. */
    isGroupAudioCall: boolean;
};

/**
 * SessionSettings — plain object passed to joinSession().
 */
interface SessionSettings {
    /** Session type: "VIDEO" or "VOICE". Default: "VIDEO". */
    sessionType?: 'VIDEO' | 'VOICE';
    /** Layout mode: "TILE", "SIDEBAR", or "SPOTLIGHT". Default: "TILE". */
    layout?: 'TILE' | 'SIDEBAR' | 'SPOTLIGHT';
    /** Whether to start with microphone muted. Default: false. */
    startAudioMuted?: boolean;
    /** Whether to start with camera off. Default: false. */
    startVideoPaused?: boolean;
    /** Auto-start recording when session begins. Default: false. */
    autoStartRecording?: boolean;
    /** Hide the bottom control bar. Default: false. */
    hideControlPanel?: boolean;
    /** Hide the leave/end session button. Default: false. */
    hideLeaveSessionButton?: boolean;
    /** Hide the mute/unmute audio button. Default: false. */
    hideToggleAudioButton?: boolean;
    /** Hide the video on/off button. Default: false. */
    hideToggleVideoButton?: boolean;
    /** Hide the recording button. Default: true. */
    hideRecordingButton?: boolean;
    /** Hide the screen sharing button. Default: false. */
    hideScreenSharingButton?: boolean;
    /** Hide the layout change button. Default: false. */
    hideChangeLayoutButton?: boolean;
    /** Hide the virtual background button. Default: false. */
    hideVirtualBackgroundButton?: boolean;
    /** Hide the network quality indicator. Default: false. */
    hideNetworkIndicator?: boolean;
    /** Idle timeout before showing prompt (ms). Default: 60000. */
    idleTimeoutPeriodBeforePrompt?: number;
    /** Idle timeout after prompt before ending session (ms). Default: 120000. */
    idleTimeoutPeriodAfterPrompt?: number;
}
interface CometChatOngoingCallProps {
    /** The call session ID. */
    sessionID: string;
    /** Whether this is an audio-only call. Default: false. */
    isAudioOnly?: boolean;
    /** Whether this uses direct calling (group) vs default calling (user). Default: false. */
    isDirectCalling?: boolean;
    /**
     * Custom session settings for the ongoing call session.
     * If not provided, the component creates default settings internally.
     * Pass SessionSettings plain object.
     *
     * @example
     * ```tsx
     * <CometChatOngoingCall
     *   sessionID="abc123"
     *   callSettings={{ sessionType: 'VIDEO', layout: 'TILE', startAudioMuted: false }}
     * />
     * ```
     */
    callSettings?: SessionSettings;
    /**
     */
    callSettingsBuilder?: any;
    /** Callback when the call ends. */
    onCallEnded?: () => void;
    /** Error callback. */
    onError?: ((error: CometChat.CometChatException) => void) | null;
    /** Optional className for the container. */
    className?: string;
}

/**
 * CometChatOngoingCall — renders the Calls SDK call UI in a full-screen container.
 *
 * When mounted with a valid sessionID:
 * 1. Gets the logged-in user's auth token
 * 2. Generates a call token via CometChatUIKitCalls.generateToken()
 * 3. Registers event listeners via CometChatUIKitCalls.addEventListener()
 * 4. Joins the session via CometChatUIKitCalls.joinSession()
 *
 * The Calls SDK renders its own UI (video/audio, controls) into the container element.
 */
declare const CometChatOngoingCall: React__default.FC<CometChatOngoingCallProps>;

interface UseOngoingCallOptions {
    /** The call session ID. */
    sessionId: string;
    /** Whether this is an audio-only call. Default: false. */
    isAudioOnly?: boolean;
    /** Whether this uses direct calling (group) vs default calling (user). Default: false. */
    isDirectCalling?: boolean;
    /** Callback when the call ends (from any source). */
    onCallEnded?: () => void;
    /** Error callback. */
    onError?: ((error: CometChat.CometChatException) => void) | null;
}
interface UseOngoingCallReturn {
    /** Start the call session — renders the call UI into the provided element. */
    startCall: (callScreenFrame: HTMLElement) => Promise<void>;
    /** End the current session (local cleanup only). */
    endSession: () => void;
    /** End the call fully (server + local + events). */
    endCall: () => Promise<void>;
    /** Whether a call session is currently active. */
    isCallActive: boolean;
}
declare function useOngoingCall(options: UseOngoingCallOptions): UseOngoingCallReturn;

interface CometChatOutgoingCallProps {
    /** The CometChat call object. */
    call: CometChat.Call;
    /** Disable outgoing call sound. Default: false. */
    disableSoundForCalls?: boolean;
    /** Custom sound URL for outgoing call. */
    customSoundForCalls?: string;
    /** Callback when the cancel/end button is clicked. */
    onCallCanceled?: () => void;
    /** Error callback. */
    onError?: ((error: CometChat.CometChatException) => void) | null;
    /** Custom title view (overrides receiver name). */
    titleView?: ReactNode;
    /** Custom subtitle view (overrides "Calling..." text). */
    subtitleView?: ReactNode;
    /** Custom avatar view. */
    avatarView?: ReactNode;
    /** Custom cancel button view. */
    cancelButtonView?: ReactNode;
    /** Optional className. */
    className?: string;
}

/**
 * CometChatOutgoingCall — shown when you initiate a call, waiting for the other person to pick up.
 *
 * Displays receiver name, avatar, "Calling..." subtitle, and a red end-call button.
 * Plays the outgoing call sound (looping) while visible and pauses on unmount.
 */
declare const CometChatOutgoingCall: React__default.FC<CometChatOutgoingCallProps>;

interface CometChatIncomingCallProps {
    /** Custom accept handler (overrides default CometChat.acceptCall). */
    onAccept?: (call: CometChat.Call) => void;
    /** Custom decline handler (overrides default CometChat.rejectCall). */
    onDecline?: (call: CometChat.Call) => void;
    /** Callback when the call ends and ongoing call screen should close. */
    onCallEnded?: () => void;
    /** Disable incoming call sound. Default: false. */
    disableSoundForCalls?: boolean;
    /** Custom sound URL for incoming call. */
    customSoundForCalls?: string;
    /**
     * Custom call settings builder for the ongoing call session after accepting.
     * If not provided, the component uses default settings.
     */
    callSettingsBuilder?: (call: CometChat.Call) => any;
    /** Error callback. */
    onError?: ((error: CometChat.CometChatException) => void) | null;
    /** Custom item view (overrides entire call card). */
    itemView?: (call: CometChat.Call) => ReactNode;
    /** Custom leading view (replaces the avatar section). */
    leadingView?: (call: CometChat.Call) => ReactNode;
    /** Custom title view (replaces the caller name). */
    titleView?: (call: CometChat.Call) => ReactNode;
    /** Custom subtitle view. */
    subtitleView?: (call: CometChat.Call) => ReactNode;
    /** Custom trailing view (replaces the trailing section). */
    trailingView?: (call: CometChat.Call) => ReactNode;
    /** Optional className. */
    className?: string;
}

/**
 * CometChatIncomingCall — listens for incoming calls and shows accept/reject UI.
 *
 * When an incoming call is received, displays a card with caller info and
 * Accept/Decline buttons. On accept, transitions to the ongoing call screen.
 *
 * Render this component at the app root level (it manages its own visibility).
 */
declare const CometChatIncomingCall: React__default.FC<CometChatIncomingCallProps>;

/**
 * Props for the CometChatCallLogs component.
 */
interface CometChatCallLogsProps {
    /** Object representing the active/selected call log. */
    activeCall?: any;
    /** Custom request builder for filtering call logs. Default: limit 30, category "call". */
    callLogRequestBuilder?: any;
    /** Format for displaying the call initiation time in call log items. */
    callInitiatedDateTimeFormat?: CometChatDateFormatConfig;
    /** Callback when a call log item is clicked. */
    onItemClick?: (call: any) => void;
    /** Callback when the call button (trailing view) is clicked. */
    onCallButtonClicked?: (call: any) => void;
    /** Error callback. */
    onError?: ((error: CometChat.CometChatException) => void) | null;
    /**
     * Custom call settings builder for ongoing call sessions initiated from call logs.
     * If not provided, falls back to GlobalConfig.callSettingsBuilder, then default.
     */
    callSettingsBuilder?: any;
    /** Custom loading view. */
    loadingView?: ReactNode;
    /** Custom empty state view. */
    emptyView?: ReactNode;
    /** Custom error state view. */
    errorView?: ReactNode;
    /** Custom item view renderer. */
    itemView?: (call: any) => ReactNode;
    /** Custom leading view renderer. */
    leadingView?: (call: any) => ReactNode;
    /** Custom title view renderer. */
    titleView?: (call: any) => ReactNode;
    /** Custom subtitle view renderer. */
    subtitleView?: (call: any) => ReactNode;
    /** Custom trailing view renderer. */
    trailingView?: (call: any) => ReactNode;
    /** Show scrollbar. Default: false. */
    showScrollbar?: boolean;
}

/**
 * CometChatCallLogs — displays a list of call logs with the ability to initiate calls.
 *
 * Uses CometChatCallButtons for the trailing call action, which handles
 * the entire call flow (outgoing + ongoing) independently.
 */
declare const CometChatCallLogs: React__default.FC<CometChatCallLogsProps>;

/**
 * Determine the "other" user in a call log (the person who isn't the logged-in user).
 * If the logged-in user initiated the call, returns the receiver. Otherwise returns the initiator.
 */
declare function verifyCallUser(call: any, loggedInUser: CometChat.User): any;
/**
 * Determine if the call was sent by the logged-in user.
 */
declare function isSentByMe(call: any, loggedInUser: CometChat.User): boolean;
/**
 * Determine if the call is a missed call for the logged-in user.
 */
declare function isMissedCall(call: any, loggedInUser: CometChat.User): boolean;

/** Fetch lifecycle state. */
type CometChatMessageInformationFetchState = 'idle' | 'loading' | 'loaded' | 'error' | 'empty';
/** Combined user receipt information (for group messages). */
interface CometChatUserReceiptInfo {
    /** The user who received/read the message. */
    user: CometChat.User;
    /** Timestamp when the message was read (Unix seconds), 0 if not read. */
    readAt: number;
    /** Timestamp when the message was delivered (Unix seconds), 0 if not delivered. */
    deliveredAt: number;
}
/**
 * CalendarObject for date formatting.
 * Matches the pattern used by CometChatDate.
 */
interface CometChatMessageInformationCalendarObject {
    today?: string;
    yesterday?: string;
    otherDays?: string;
    [key: string]: string | undefined;
}
/** Props for CometChatMessageInformation.Root. */
interface CometChatMessageInformationRootProps {
    /** The message to show information for. Required. */
    message: CometChat.BaseMessage;
    /** Callback when the panel close button is clicked. */
    onClose?: () => void;
    /** Error callback for SDK failures. */
    onError?: ((error: CometChat.CometChatException) => void) | null;
    /** Date format for receipt timestamps (read/delivered). */
    messageInfoDateTimeFormat?: CometChatMessageInformationCalendarObject;
    /** Format for the sent-at timestamp on the message bubble preview. */
    messageSentAtDateTimeFormat?: CometChatMessageInformationCalendarObject;
    /** Text formatters for the message bubble preview. */
    textFormatters?: CometChatTextFormatter[];
    /** Whether to show the scrollbar in the content area. Default: false. */
    showScrollbar?: boolean;
    /** Children (sub-components). When omitted, renders default layout. */
    children?: ReactNode;
    /** Optional custom className. */
    className?: string;
}
/** Props for CometChatMessageInformation.Header. */
interface CometChatMessageInformationHeaderProps {
    /** Optional custom className. */
    className?: string;
}
/** Props for CometChatMessageInformation.MessagePreview. */
interface CometChatMessageInformationMessagePreviewProps {
    /** Optional custom className. */
    className?: string;
}
/** Props for CometChatMessageInformation.ReceiptList. */
interface CometChatMessageInformationReceiptListProps {
    /** Optional custom className. */
    className?: string;
}
/** Props for CometChatMessageInformation.LoadingState. */
interface CometChatMessageInformationLoadingStateProps {
    /** Optional custom className. */
    className?: string;
}
/** Props for CometChatMessageInformation.ErrorState. */
interface CometChatMessageInformationErrorStateProps {
    /** Optional custom className. */
    className?: string;
}
/** Props for CometChatMessageInformation.EmptyState. */
interface CometChatMessageInformationEmptyStateProps {
    /** Optional custom className. */
    className?: string;
}
/** Context value shared across CometChatMessageInformation sub-components. */
interface CometChatMessageInformationContextValue {
    /** The message object. */
    message: CometChat.BaseMessage;
    /** Fetch lifecycle state. */
    fetchState: CometChatMessageInformationFetchState;
    /** User receipts for group messages. */
    userReceipts: CometChatUserReceiptInfo[];
    /** Read timestamp for 1-on-1 messages (Unix seconds). */
    oneOnOneReadAt: number;
    /** Delivered timestamp for 1-on-1 messages (Unix seconds). */
    oneOnOneDeliveredAt: number;
    /** Error message, if any. */
    error: string | null;
    /** Whether this is a group message. */
    isGroupMessage: boolean;
    /** Date format for receipt timestamps. */
    messageInfoDateTimeFormat: CometChatMessageInformationCalendarObject;
    /** Format for the sent-at timestamp on the message bubble preview. */
    messageSentAtDateTimeFormat?: CometChatMessageInformationCalendarObject;
    /** Text formatters for the message bubble preview. */
    textFormatters: CometChatTextFormatter[];
    /** Whether to show the scrollbar. */
    showScrollbar: boolean;
    /** Close the panel. */
    onClose: () => void;
    /** Retry fetching receipts after error. */
    retry: () => void;
}
/** Convenience view props for the direct `<CometChatMessageInformation />` flat API. */
interface CometChatMessageInformationConvenienceProps {
    /** Custom header content (replaces default header). */
    headerView?: ReactNode;
    /** Custom receipt list content (replaces default receipt list). */
    receiptListView?: ReactNode;
    /** Custom loading state content (replaces default loading). */
    loadingView?: ReactNode;
    /** Custom error state content (replaces default error view). */
    errorView?: ReactNode;
    /** Custom empty state content (replaces default empty view). */
    emptyView?: ReactNode;
}
/**
 * Props for the direct `<CometChatMessageInformation />` flat API.
 * Combines all Root props with convenience view props.
 */
type CometChatMessageInformationProps = Omit<CometChatMessageInformationRootProps, 'children'> & CometChatMessageInformationConvenienceProps;

declare const CometChatMessageInformation: React__default.FC<CometChatMessageInformationProps> & {
    Root: React__default.FC<CometChatMessageInformationRootProps>;
    Header: React__default.FC<CometChatMessageInformationHeaderProps>;
    MessagePreview: React__default.FC<CometChatMessageInformationMessagePreviewProps>;
    ReceiptList: React__default.FC<CometChatMessageInformationReceiptListProps>;
    LoadingState: React__default.FC<CometChatMessageInformationLoadingStateProps>;
    ErrorState: React__default.FC<CometChatMessageInformationErrorStateProps>;
    EmptyState: React__default.FC<CometChatMessageInformationEmptyStateProps>;
};

/**
 * Hook to access the CometChatMessageInformation context.
 * Must be used within a CometChatMessageInformation.Root.
 */
declare function useCometChatMessageInformationContext(): CometChatMessageInformationContextValue;

/**
 * AI Plugin Types
 *
 * All TypeScript interfaces for the AI plugin system.
 * Covers: AIPlugin, AIAssistantBubble, StreamMessageBubble,
 *         AIAssistantChat (full orchestrator), ChatHistory sidebar,
 *         ToolCallArgumentBubble, ToolCallResultBubble.
 */

/** Discriminated union of AI assistant stream events from the SDK. */
type CometChatAIStreamEventType = 'run_started' | 'text_message_start' | 'text_message_content' | 'text_message_end' | 'run_finished' | 'tool_call_start' | 'tool_call_end' | 'tool_call_args' | 'tool_call_result';
/** A single AI stream event chunk received from the SDK. */
interface CometChatAIStreamEvent {
    /** The event type. */
    type: CometChatAIStreamEventType;
    /** The text content chunk (present for text_message_content). */
    content?: string;
    /** The tool call ID (present for tool_call_* events). */
    toolCallId?: string;
    /** The tool name (present for tool_call_start). */
    toolName?: string;
    /** The tool arguments chunk (present for tool_call_args). */
    toolArgs?: string;
    /** The tool result (present for tool_call_result). */
    toolResult?: string;
    /** Raw event data from the SDK. */
    raw?: unknown;
}
/** Internal streaming state per message ID. */
/**
 * A streamed card lifecycle entry for the current run.
 * `card` is null while loading (after `card_start`) and set once `card` arrives.
 */
interface CometChatStreamCard {
    /** Correlation id from the card events. */
    cardId: string;
    /** Optional loader label from `card_start` (e.g. "Building your card…"). */
    executionText: string;
    /** Raw card payload (null while the loader is showing). */
    card: unknown;
}
interface CometChatStreamState {
    /** Accumulated text content. */
    text: string;
    /** Whether the stream has completed. */
    isComplete: boolean;
    /** Name of the currently executing tool call (null if none). */
    activeToolCall: string | null;
    /** Tool execution text (from event data or localized fallback). */
    toolExecutionText: string;
    /** Whether the AI is in the "thinking" state (run_started, before first text). */
    isThinking: boolean;
    /** Whether there is any streamed content yet. */
    hasContent: boolean;
    /** Whether an offline/network error occurred. */
    hasError: boolean;
    /** Whether the stream has started at all. */
    hasStarted: boolean;
    /** The run ID of the currently active stream (used to scope bubbles). */
    currentRunId: string;
    /** Streamed card lifecycle entries for the current run, in arrival order. */
    streamCards: CometChatStreamCard[];
}
/** Props for CometChatAIAssistantBubble. */
interface CometChatAIAssistantBubbleProps {
    /** The AI assistant message to render. */
    message: CometChat.BaseMessage;
    /** Bubble alignment — 'left' for incoming, 'right' for outgoing. */
    alignment?: 'left' | 'right';
    /** Optional custom className. */
    className?: string;
}
/** Props for CometChatStreamMessageBubble. */
interface CometChatStreamMessageBubbleProps {
    /**
     * The chat ID (user UID or group GUID) this stream belongs to.
     * Used to scope stream events to the correct conversation.
     */
    chatId: string;
    /**
     * Optional run ID to filter events when multiple runs are in flight.
     * When omitted, the bubble subscribes to the latest run for this chatId.
     */
    runId?: string;
    /** Bubble alignment — 'left' for incoming, 'right' for outgoing. */
    alignment?: 'left' | 'right';
    /** Optional custom className. */
    className?: string;
    /**
     * The streaming placeholder message, forwarded so streamed card actions can
     * reference an owning message when emitting `ui:card/action`.
     */
    message?: CometChat.BaseMessage;
}
/** Props for CometChatToolCallArgumentBubble. */
interface CometChatToolCallArgumentBubbleProps {
    /** The AI tool argument message to render. */
    message: CometChat.BaseMessage;
    /** Optional custom className. */
    className?: string;
}
/** Props for CometChatToolCallResultBubble. */
interface CometChatToolCallResultBubbleProps {
    /** The AI tool result message to render. */
    message: CometChat.BaseMessage;
    /** Optional custom className. */
    className?: string;
}
/** Props for CometChatAIAssistantChatHistory. */
interface CometChatAIAssistantChatHistoryProps {
    /** The AI assistant user. */
    user?: CometChat.User;
    /** The AI assistant group (alternative to user). */
    group?: CometChat.Group;
    /** Whether to hide the "New Chat" button. Default: false (show new chat by default). */
    hideNewChat?: boolean;
    /** Auto-load the most recent conversation on mount. Default: false. */
    loadLastAgentConversation?: boolean;
    /** Callback when a message is clicked (loads that conversation). */
    onMessageClick?: (message: CometChat.TextMessage) => void;
    /** Callback when "New Chat" is clicked. */
    onNewChatClick?: (message?: CometChat.TextMessage | null) => void;
    /** Callback when the close button is clicked. */
    onClose?: () => void;
    /** Callback when the history is empty. */
    onEmpty?: () => void;
    /** Callback when an error occurs. */
    onError?: ((error: CometChat.CometChatException) => void) | null;
    /** Custom empty state template. */
    emptyStateView?: ReactNode;
    /** Custom error state template. */
    errorStateView?: ReactNode;
    /** Optional custom className. */
    className?: string;
}
/** Imperative handle exposed by CometChatAIAssistantChatHistory via ref. */
interface CometChatAIAssistantChatHistoryHandle {
    /** Add a message to the top of the history list (used when a new message is sent). */
    addMessage: (message: CometChat.TextMessage) => void;
}
/** Props for CometChatAIAssistantChat. */
interface CometChatAIAssistantChatProps {
    /** Required: the AI assistant user. */
    user: CometChat.User;
    /** Streaming speed in ms between text chunks. Default: 30. */
    streamingSpeed?: number;
    /** Tool handlers for function calls. */
    aiAssistantTools?: CometChatAIAssistantTools;
    /** Auto-load the most recent conversation on mount. Default: false. */
    loadLastAgentConversation?: boolean;
    /** Whether to hide suggestion pills. Default: false. */
    hideSuggestedMessages?: boolean;
    /** Custom suggestion texts (overrides user metadata). */
    suggestedMessages?: string[];
    /** Custom image view for the empty chat state. */
    emptyChatImageView?: ReactNode;
    /** Custom greeting message view for the empty chat state. */
    emptyChatGreetingView?: ReactNode;
    /** Custom intro message view for the empty chat state. */
    emptyChatIntroMessageView?: ReactNode;
    /** Whether to hide the chat history sidebar button. Default: false. */
    hideChatHistory?: boolean;
    /** Whether to hide the "New Chat" button. Default: false. */
    hideNewChat?: boolean;
    /** Whether to show the back button in the header. Default: false. */
    showBackButton?: boolean;
    /** Whether to show the close button in the header. Default: false. */
    showCloseButton?: boolean;
    /** Callback when the back button is clicked. */
    onBackButtonClicked?: () => void;
    /** Callback when the close button is clicked. */
    onCloseButtonClicked?: () => void;
    /** Callback when a message is sent. */
    onSendButtonClick?: (message: CometChat.BaseMessage) => void;
    /** Custom empty state view (replaces default greeting). */
    emptyView?: ReactNode;
    /** Custom loading view. */
    loadingView?: ReactNode;
    /** Custom error view. */
    errorView?: ReactNode;
    /** Callback when an error occurs. */
    onError?: ((error: CometChat.CometChatException) => void) | null;
    /** Optional custom className. */
    className?: string;
    /** Parent message ID to load a specific conversation thread. */
    parentMessageId?: number;
    /** Custom header item view (replaces entire header). */
    headerItemView?: ReactNode;
    /** Custom header title view. */
    headerTitleView?: ReactNode;
    /** Custom header subtitle view. */
    headerSubtitleView?: ReactNode;
    /** Custom header leading view (avatar area). */
    headerLeadingView?: ReactNode;
    /** Custom header trailing view. */
    headerTrailingView?: ReactNode;
    /** Custom header auxiliary button view. */
    headerAuxiliaryButtonView?: ReactNode;
}
/** Type for a tool action function. */
type CometChatAIAssistantToolFunction = (args: Record<string, unknown>) => void;
/** Map of tool name → handler function. */
type CometChatAIAssistantToolsMap = Record<string, CometChatAIAssistantToolFunction>;
/**
 * CometChatAIAssistantTools — maps tool function names to handler functions.
 * Plain model class (not a service).
 */
declare class CometChatAIAssistantTools {
    private readonly actionsMap;
    constructor(actions: CometChatAIAssistantToolsMap);
    /** Returns the handler for the given tool name, or undefined if not registered. */
    getAction(name: string): CometChatAIAssistantToolFunction | undefined;
    /** Returns a shallow copy of all registered actions. */
    getActions(): CometChatAIAssistantToolsMap;
}
/**
 * Configuration for the AI plugin.
 * Passed to createCometChatAIPlugin().
 */
interface CometChatAIPluginConfig {
    /**
     * Whether to enable the AI assistant chat panel.
     * Default: true.
     */
    enableAssistantPanel?: boolean;
    /**
     * Whether to enable smart replies in the composer.
     * Default: true.
     */
    enableSmartReplies?: boolean;
    /**
     * Whether to enable conversation summary in the message header.
     * Default: true.
     */
    enableConversationSummary?: boolean;
    /**
     * Whether to enable conversation starters in the message list empty state.
     * Default: true.
     */
    enableConversationStarters?: boolean;
    /**
     * Custom icon URL for the AI button in the composer.
     */
    aiButtonIconURL?: string;
}

/**
 * CometChatAIAssistantBubble
 *
 * Renders completed AI assistant messages (category: 'agentic', type: 'assistant').
 * Uses the CometChatMarkdownFormatter to render rich markdown content including:
 * - Bold, italic, strikethrough, inline code
 * - Code blocks with syntax highlighting
 * - Lists (ordered and unordered)
 * - Tables, blockquotes, links
 * - Images (clickable to expand)
 *
 * Copy affordance: 1:1 AI assistant chat renders an inline copy button inside
 * the bubble. Group agent messages omit it (copy is offered via the message
 * context menu instead) — this is decided internally from the message's
 * receiver type, so callers don't pass a flag.
 *
 * Performance: uses content-visibility: auto (via CSS) to defer rendering
 * until the bubble is in the viewport.
 */

declare const CometChatAIAssistantBubble: React__default.FC<CometChatAIAssistantBubbleProps>;

/**
 * CometChatStreamMessageBubble
 *
 * Renders a live-streaming AI response with three states:
 * 1. Thinking — "Thinking..." text with shimmer animation (before first text chunk)
 * 2. Tool execution — tool name/execution text while a tool is running
 * 3. Streaming text — accumulated markdown content rendered progressively
 *
 * Architecture:
 * - Subscribes to CometChatAIStreamingService via useSyncExternalStore
 * - No Suspense — the bubble is always rendered (thinking state is the initial UI)
 * - Markdown rendered via CometChatMarkdownFormatter + DOMPurify sanitization
 * - Offline error detection via window online/offline events
 *
 */

declare const CometChatStreamMessageBubble: React__default.FC<CometChatStreamMessageBubbleProps>;

/**
 * CometChatToolCallArgumentBubble
 *
 * Displays the arguments passed to a tool call as formatted JSON.
 * Valid JSON is pretty-printed (2-space indent); invalid JSON is shown raw.
 *
 */

declare const CometChatToolCallArgumentBubble: React__default.FC<CometChatToolCallArgumentBubbleProps>;

/**
 * CometChatToolCallResultBubble
 *
 * Displays the result returned by a tool call as formatted JSON.
 * Valid JSON is pretty-printed (2-space indent); invalid JSON is shown raw.
 * Renders nothing when the result is empty or null.
 *
 */

declare const CometChatToolCallResultBubble: React__default.FC<CometChatToolCallResultBubbleProps>;

/**
 * CometChatAIAssistantChatHistory
 *
 * Sidebar component showing past AI conversations.
 * Latest messages appear at top; scrolling to the bottom fetches older messages.
 * Each item shows the message text with a delete button on hover.
 *
 * Features:
 * - Infinite scroll (fetches older messages when scrolling to bottom)
 * - Date separators between messages from different days
 * - Delete button on hover for each message
 * - New Chat button to start a fresh conversation
 * - Loading shimmer, empty, and error states
 * - Keyboard navigation (ArrowUp/Down, Enter, Escape)
 * - Auto-loads most recent conversation when loadLastAgentConversation=true
 *
 */

declare const CometChatAIAssistantChatHistory: React__default.ForwardRefExoticComponent<CometChatAIAssistantChatHistoryProps & React__default.RefAttributes<CometChatAIAssistantChatHistoryHandle>>;

/**
 * CometChatAIAssistantChat
 *
 *
 *
 * 1. EMPTY STATE: When goToMessageId is null (no conversation selected),
 *    isAgentChat=true + no parentMessageId → message list shows emptyView.
 *    This is the greeting screen with suggestions.
 *
 * 2. MESSAGE LIST: Always rendered. Uses goToMessageId as parentMessageId.
 *    When goToMessageId is null → isAgentChat empty state (greeting).
 *    When goToMessageId is set → fetch and show that thread.
 *
 * 3. COMPOSER: Always rendered. activeParentMessageId is passed for threading.
 *    Set on first message sent (via onSendButtonClick callback).
 *    goToMessageId is set when loading from history.
 *
 * 4. CSS: Uses global CSS (not CSS module) to override hashed UIKit class names.
 *    Matches .cometchat-message-composer pattern.
 */

declare const CometChatAIAssistantChat: React__default.NamedExoticComponent<CometChatAIAssistantChatProps>;

/**
 * CometChatAIPlugin
 *
 * Extension plugin for AI assistant messages.
 * Handles three message types in the 'agentic' category:
 *   - 'assistant'      → CometChatAIAssistantBubble (completed AI response with markdown)
 *   - 'toolArguments'  → CometChatToolCallArgumentBubble (tool call arguments as JSON)
 *   - 'toolResults'    → CometChatToolCallResultBubble (tool call results as JSON)
 *
 * Also provides:
 *   - getLastMessagePreview() → conversation list subtitle
 *
 * Lazy loading:
 *   - All three bubble components are lazy-loaded (kept out of the initial bundle)
 *   - CometChatAIAssistantChat is Tier 4 lazy (loaded on first open)
 *   - Preloaded on AI button hover/focus via preloadAIAssistantChat()
 *
 * @example
 * ```tsx
 * import { CometChatAIPlugin } from '@cometchat/chat-uikit-react/plugins/ai';
 *
 * <CometChatProvider plugins={[...defaultPlugins, CometChatAIPlugin]}>
 *   ...
 * </CometChatProvider>
 * ```
 */

/**
 * Preload function for the AI assistant chat.
 * Called on AI button hover/focus to reduce perceived latency.
 */
declare const preloadAIAssistantChat: () => Promise<unknown>;
/**
 */
declare const preloadAIAssistantPanel: () => Promise<unknown>;
/**
 * CometChatAIPlugin — implements CometChatMessagePlugin for AI assistant messages.
 */
declare const CometChatAIPlugin: CometChatMessagePlugin;

/**
 * CometChatAIStreamingService
 *
 * Module-level streaming service for AI assistant messages.
 *
 * Architecture:
 * - Single global message queue processed sequentially (no drops)
 * - Per-chatId streaming state tracked via Map<chatId, StreamState>
 * - Subscribers notified via Set<listener> per chatId
 * - Configurable stream speed (typing delay between text chunks)
 * - Tool call execution via CometChatAIAssistantTools
 *
 * This is a plain TypeScript module (not a React hook or class) so it can be
 * imported by both the streaming bubble and the AI assistant chat component.
 */

declare function getStreamState(chatId: string): CometChatStreamState;
declare function subscribeToStreamState(chatId: string, listener: () => void): () => void;
declare function setStreamSpeed(ms: number): void;
declare function getStreamSpeed(): number;
declare function setAIAssistantTools(tools: CometChatAIAssistantTools): void;
declare function getAIAssistantTools(): CometChatAIAssistantTools | null;
/**
 * Push an AI stream event into the processing queue.
 * Called by the SDK listener in CometChatAIAssistantChat.
 */
declare function handleWebsocketMessage(event: CometChat.AIAssistantBaseEvent, chatId: string): void;
/**
 * Start a new streaming session for a chatId.
 * Resets state and marks streaming as active.
 */
declare function startStreamingMessage(chatId: string, runId?: string | number): void;
/**
 * Stop streaming for a chatId and clean up state.
 */
declare function stopStreamingMessage(chatId: string): void;
/**
 * Mark a streaming session as having an error (e.g., network offline).
 */
declare function setStreamError(chatId: string): void;
/**
 * Check if streaming is currently active for a chatId.
 */
declare function isStreaming(chatId: string): boolean;

/**
 * AI Plugin Constants
 */
declare const AI_CONSTANTS: {
    /** Plugin ID for the AI assistant plugin. */
    readonly pluginId: "ai-assistant";
    /** Message type for AI assistant messages. */
    readonly messageType: "assistant";
    /** Message type for tool argument messages. */
    readonly toolArgumentsType: "toolArguments";
    /** Message type for tool result messages. */
    readonly toolResultsType: "toolResults";
    /** Message category for agentic messages. */
    readonly messageCategory: "agentic";
    /** Default panel title. */
    readonly defaultPanelTitle: "AI Assistant";
    /** Default input placeholder. */
    readonly defaultInputPlaceholder: "Ask AI anything...";
    /** Maximum message history to keep in the panel. */
    readonly maxHistoryLength: 100;
    /** Streaming cursor character. */
    readonly streamingCursor: "▋";
    /** Delay (ms) before hiding the streaming cursor after completion. */
    readonly cursorHideDelay: 500;
};

/**
 * CometChatCollaborativeDocumentPlugin
 *
 * Extension plugin for collaborative document messages.
 * Handles message type 'extension_document' in category 'custom'.
 * Renders CometChatCollaborativeBubble with document-specific config.
 */

declare const CometChatCollaborativeDocumentPlugin: CometChatMessagePlugin;

/**
 * CometChatCollaborativeWhiteboardPlugin
 *
 * Extension plugin for collaborative whiteboard messages.
 * Handles message type 'extension_whiteboard' in category 'custom'.
 * Renders CometChatCollaborativeBubble with whiteboard-specific config.
 */

declare const CometChatCollaborativeWhiteboardPlugin: CometChatMessagePlugin;

/**
 * Core plugin for text messages.
 *
 * Handles message type 'text' in category 'message'.
 * Renders CometChatTextBubble with mentions + URL + markdown formatting.
 *
 * 1. convertFormattingHtmlToMarkdown(text) — normalizes any HTML formatting to markdown
 * 2. sanitizeText(markdownText) — escapes remaining dangerous HTML
 * 3. Run formatters (markdown → mentions → URLs) in priority order
 */
declare const CometChatTextPlugin: CometChatMessagePlugin;

/**
 * Core plugin for image messages.
 *
 * Handles message type 'image' in category 'message'.
 *
 * Renders CometChatImagesBubble (batch-aware grid, +N overflow, fullscreen
 * gallery, batch position awareness). The bubble is self-extracting: it derives
 * attachments, caption, sender and alignment from the SDK message itself.
 *
 * The legacy single-attachment CometChatImageBubble remains available as a
 * deprecated standalone component for consumers who want it.
 */
declare const CometChatImagePlugin: CometChatMessagePlugin;

/**
 * Core plugin for video messages.
 *
 * Handles message type 'video' in category 'message'.
 *
 * Renders CometChatVideosBubble (batch-aware grid, thumbnail posters,
 * play-over-black fallback, fullscreen video pager, batch position awareness).
 * The bubble is self-extracting: it derives attachments, thumbnail, caption,
 * sender name and alignment from the SDK message itself.
 *
 * The legacy single-attachment CometChatVideoBubble remains available as a
 * deprecated standalone component for consumers who want it.
 */
declare const CometChatVideoPlugin: CometChatMessagePlugin;

/**
 * Core plugin for file messages.
 *
 * Handles message type 'file' in category 'message'.
 *
 * Renders CometChatFilesBubble (file list, >3 expand/collapse, download on click,
 * batch position awareness). The bubble is self-extracting: it derives
 * attachments, caption, sender and alignment from the SDK message itself.
 *
 * The legacy single-attachment CometChatFileBubble remains available as a
 * deprecated standalone component for consumers who want it.
 */
declare const CometChatFilePlugin: CometChatMessagePlugin;

/**
 * Core plugin for audio messages.
 *
 * Handles message type 'audio' in category 'message'.
 *
 * Routes by `audioType` metadata:
 * - voice note (explicitly tagged `audioType === "voice_note"`) → CometChatVoiceNoteBubble.
 * - everything else (attached audio file, or no `audioType`) → CometChatAudiosBubble.
 *
 * Both bubbles self-extract the audio attachments and caption from the message.
 *
 * The legacy single-attachment CometChatAudioBubble remains available as a
 * deprecated standalone component for consumers who want it. (CometChatVoiceNoteBubble
 * itself is a thin wrapper around that waveform renderer.)
 */
declare const CometChatAudioPlugin: CometChatMessagePlugin;

/**
 * Core plugin for group action messages (member joined, left, kicked, banned, etc.).
 *
 * These are system messages rendered as centered, pill-shaped bubbles.
 * They have no context menu options.
 *
 * Uses the shared getActionMessageText() utility for localized action text
 * generation, which is also reusable by the future Calling plugin.
 */
declare const CometChatGroupActionPlugin: CometChatMessagePlugin;

/**
 * Core plugin for call action messages (missed call, ended call, etc.).
 *
 * System messages rendered as centered, pill-shaped bubbles with an icon.
 * CometChatCallActionBubble derives the status text/icon from the message
 * itself (using the logged-in user + localization). No context menu options.
 *
 * Handles both audio and video call types in the 'call' category.
 */
declare const CometChatCallActionPlugin: CometChatMessagePlugin;

/**
 * Plugin for group/conference call messages (meeting type).
 *
 * These are custom messages with type "meeting" that show a call bubble
 * with a "Join" button in group chats.
 *
 * Handles 4 combinations:
 * - Video call (incoming/outgoing)
 * - Audio call (incoming/outgoing)
 */
declare const CometChatMeetingPlugin: CometChatMessagePlugin;

/**
 * Core plugin for developer card messages.
 *
 * Handles card messages (type `card`, category `MessageCategory.card`).
 *
 * `messageTypes` must list `card` explicitly: the messages API AND-filters
 * category against the request's `types` list, so a card-category message is
 * only fetched when `card` is present in `types`. An empty `messageTypes` would
 * act as a render-only wildcard but contribute nothing to the request builder,
 * causing card messages to be filtered out of thread/list responses.
 *
 * Render-only & additive: mirrors `CometChatTextPlugin`. The only differences
 * from the text plugin are (a) the content is drawn by `CometChatCardBubble`
 * (the prebuilt card renderer) and (b) the `edit` and `copy` options are
 * suppressed — every other option (and its per-option conditions) is inherited
 * from the text option set.
 */
declare const CometChatCardBubblePlugin: CometChatMessagePlugin;

/**
 * Props for {@link CometChatCardBubble}.
 */
interface CometChatCardBubbleProps {
    /** The developer card message (`category: "card"`). */
    message: CometChat.CardMessage;
    /** Theme mode forwarded to the renderer. Defaults to `"auto"`. */
    themeMode?: CometChatCardThemeMode;
    /** Optional theme overrides forwarded to the renderer. */
    themeOverride?: CometChatCardThemeOverride;
    /**
     * Optional direct callback for card actions. Fired in addition to the
     * `ui:card/action` UI event so an app embedding the bubble directly can
     * receive actions without subscribing to the event bus.
     */
    onCardAction?: (message: CometChat.BaseMessage, action: CometChatCardAction) => void;
}
/**
 * Render-only bubble for developer cards (`category: "card"`).
 *
 * Mirrors `CometChatTextBubble`: the kit performs zero transformation — it
 * stringifies the raw card payload from `getCard()` and hands it to the prebuilt
 * `CometChatCardView` renderer, then forwards user actions back to the app.
 * It never parses or mutates the card body, and never performs an action itself.
 *
 * When `getCard()` is absent/empty the renderer is not invoked; the bubble falls
 * back to `getFallbackText()` → `getText()` → localized "Card Message".
 */
declare const CometChatCardBubble: React__default.FC<CometChatCardBubbleProps>;

/**
 * Core plugin for deleted messages.
 *
 * Special: messageTypes and messageCategories are empty because the
 * PluginRegistry matches deleted messages by checking getDeletedAt()
 * before type/category matching. This plugin is always resolved via
 * the registry's deleted-message fast path, not by type+category.
 *
 * Renders CometChatDeleteBubble with sender/receiver styling.
 * No context menu options — deleted messages have no actions.
 */
declare const CometChatDeletePlugin: CometChatMessagePlugin;

/**
 * Type alias for the SDK's NotificationFeedItem.
 * Uses an interface definition since the SDK type may not be available
 * in all versions. The actual object is provided by the SDK at runtime.
 */
interface NotificationFeedItem {
    getId(): string;
    getSentAt(): number;
    getReadAt(): number | null;
    setReadAt(timestamp: number): void;
    getContent(): unknown;
    getCategory(): string;
}
/** Represents a notification category for filter chips. */
interface NotificationCategory {
    id: string;
    label: string;
}
/** Action triggered from a card element (from @cometchat/cards-react). */
interface CardAction {
    type: string;
    params: Record<string, unknown>;
    elementId?: string;
    cardJson?: string;
}
/** Timestamp group for feed items grouped by date. */
interface TimestampGroup {
    label: string;
    items: NotificationFeedItem[];
}
/** Screen state for the notification feed. */
type ScreenState = 'loading' | 'loaded' | 'empty' | 'error';
/** Props for CometChatNotificationFeed.Root (Provider + default layout). */
interface CometChatNotificationFeedRootProps {
    /** Title displayed in the header. Default: "Notifications" */
    title?: string;
    /** Whether to show the header. Default: true */
    showHeader?: boolean;
    /** Whether to show the back button. Default: false */
    showBackButton?: boolean;
    /** Whether to show filter chips. Default: true */
    showFilterChips?: boolean;
    /** Custom request builder for fetching feed items */
    notificationFeedRequestBuilder?: unknown;
    /** Custom request builder for fetching categories */
    notificationCategoriesRequestBuilder?: unknown;
    /** Callback when a feed item is clicked */
    onItemClick?: (feedItem: NotificationFeedItem) => void;
    /** Callback when a card action button is clicked */
    onActionClick?: (feedItem: NotificationFeedItem, action: CardAction) => void;
    /** Callback when an error occurs */
    onError?: (error: CometChat.CometChatException) => void;
    /** Callback when back button is pressed */
    onBackPress?: () => void;
    /** Card theme mode forwarded to @cometchat/cards-react */
    cardThemeMode?: 'auto' | 'light' | 'dark';
    /** Card theme override forwarded to @cometchat/cards-react */
    cardThemeOverride?: Record<string, unknown>;
    /** Children (compound sub-components). If omitted, renders default layout. */
    children?: ReactNode;
}
/** Props for CometChatNotificationFeed.Header. */
interface CometChatNotificationFeedHeaderProps {
    /** Custom title text. Defaults to "Notifications". */
    title?: string;
    /** Whether to show the back button. */
    showBackButton?: boolean;
    /** Callback when back button is pressed. */
    onBackPress?: () => void;
    /** Custom header content (replaces default). */
    children?: ReactNode;
}
/** Props for CometChatNotificationFeed.List. */
interface CometChatNotificationFeedListProps {
    /** Optional custom render function for each feed item. */
    itemView?: (item: NotificationFeedItem) => ReactNode;
}
/** Props for CometChatNotificationFeed.Item. */
interface CometChatNotificationFeedItemProps {
    /** The notification feed item to render. */
    item: NotificationFeedItem;
    /** Card theme mode. */
    cardThemeMode?: 'auto' | 'light' | 'dark';
    /** Card theme override. */
    cardThemeOverride?: Record<string, unknown>;
}
/** Props for CometChatNotificationFeed.FilterChips. */
interface CometChatNotificationFeedFilterChipsProps {
    /** Custom chip content (replaces default). */
    children?: ReactNode;
}
/** Props for CometChatNotificationFeed.EmptyState. */
interface CometChatNotificationFeedEmptyStateProps {
    /** Custom empty state content (replaces default). */
    children?: ReactNode;
}
/** Props for CometChatNotificationFeed.ErrorState. */
interface CometChatNotificationFeedErrorStateProps {
    /** Custom error state content (replaces default). */
    children?: ReactNode;
}
/** Props for CometChatNotificationFeed.LoadingState. */
interface CometChatNotificationFeedLoadingStateProps {
    /** Custom loading state content (replaces default). */
    children?: ReactNode;
}
/** Context value provided by CometChatNotificationFeed.Root. */
interface CometChatNotificationFeedContextValue {
    items: NotificationFeedItem[];
    groupedItems: TimestampGroup[];
    categories: NotificationCategory[];
    activeCategory: string | null;
    totalUnreadCount: number;
    categoryUnreadCounts: Map<string, number>;
    screenState: ScreenState;
    isLoadingMore: boolean;
    isRefreshing: boolean;
    error: CometChat.CometChatException | null;
    hasMorePages: boolean;
    paginationError: boolean;
    title: string;
    showHeader: boolean;
    showBackButton: boolean;
    showFilterChips: boolean;
    cardThemeMode: 'auto' | 'light' | 'dark';
    cardThemeOverride?: Record<string, unknown>;
    fetchNextPage: () => Promise<void>;
    refresh: () => Promise<void>;
    switchCategory: (category: string | null) => void;
    markAllAsRead: () => Promise<void>;
    retryPagination: () => void;
    reportClicked: (item: NotificationFeedItem) => void;
    reportViewed: (item: NotificationFeedItem) => void;
    reportRead: (item: NotificationFeedItem) => void;
    /** Register an item element for visibility tracking (viewed/read engagement). */
    observeItem: (element: HTMLDivElement | null, item: NotificationFeedItem) => void;
    onItemClick?: (feedItem: NotificationFeedItem) => void;
    onActionClick?: (feedItem: NotificationFeedItem, action: CardAction) => void;
    onBackPress?: () => void;
}
/** Convenience view props for the direct flat API. */
interface CometChatNotificationFeedConvenienceProps {
    /** Custom header view (replaces default header). */
    headerView?: ReactNode;
    /** Custom loading state view. */
    loadingView?: ReactNode;
    /** Custom error state view. */
    errorView?: ReactNode;
    /** Custom empty state view. */
    emptyView?: ReactNode;
    /** Custom item view. */
    itemView?: (item: NotificationFeedItem) => ReactNode;
}
/**
 * Props for the direct `<CometChatNotificationFeed />` flat API.
 */
type CometChatNotificationFeedProps = Omit<CometChatNotificationFeedRootProps, 'children'> & CometChatNotificationFeedConvenienceProps;
/** Options for the useCometChatNotificationFeed hook. */
interface CometChatUseCometChatNotificationFeedOptions {
    notificationFeedRequestBuilder?: unknown;
    notificationCategoriesRequestBuilder?: unknown;
    onError?: (error: CometChat.CometChatException) => void;
}
/** Return type of the useCometChatNotificationFeed hook. */
interface CometChatUseCometChatNotificationFeedReturn {
    items: NotificationFeedItem[];
    groupedItems: TimestampGroup[];
    categories: NotificationCategory[];
    activeCategory: string | null;
    totalUnreadCount: number;
    categoryUnreadCounts: Map<string, number>;
    screenState: ScreenState;
    isLoadingMore: boolean;
    isRefreshing: boolean;
    error: CometChat.CometChatException | null;
    hasMorePages: boolean;
    paginationError: boolean;
    fetchNextPage: () => Promise<void>;
    refresh: () => Promise<void>;
    switchCategory: (category: string | null) => void;
    markAllAsRead: () => Promise<void>;
    retryPagination: () => void;
    reportClicked: (item: NotificationFeedItem) => void;
    reportViewed: (item: NotificationFeedItem) => void;
    reportRead: (item: NotificationFeedItem) => void;
}

/**
 * CometChatNotificationFeed — Compound component namespace with flat API.
 *
 * - `<CometChatNotificationFeed ... />` — flat API with convenience props
 * - `<CometChatNotificationFeed.Root>...</CometChatNotificationFeed.Root>` — compound composition
 */
declare const CometChatNotificationFeed: React__default.FC<CometChatNotificationFeedProps> & {
    Root: React__default.FC<CometChatNotificationFeedRootProps>;
    List: React__default.FC<CometChatNotificationFeedListProps>;
    Item: React__default.FC<CometChatNotificationFeedItemProps>;
    Header: React__default.FC<CometChatNotificationFeedHeaderProps>;
    FilterChips: React__default.FC<CometChatNotificationFeedFilterChipsProps>;
    EmptyState: React__default.FC<CometChatNotificationFeedEmptyStateProps>;
    ErrorState: React__default.FC<CometChatNotificationFeedErrorStateProps>;
    LoadingState: React__default.FC<CometChatNotificationFeedLoadingStateProps>;
};

/**
 * Hook to access the CometChatNotificationFeed context.
 * Must be used within a CometChatNotificationFeed.Root component.
 * @throws Error if used outside of CometChatNotificationFeed.Root.
 */
declare function useCometChatNotificationFeedContext(): CometChatNotificationFeedContextValue;

/**
 * useCometChatNotificationFeed — orchestration hook for the notification feed data layer.
 *
 * Creates the Manager, attaches SDK listeners, dispatches reducer actions,
 * and exposes a clean API to the Provider.
 */
declare function useCometChatNotificationFeed(options?: CometChatUseCometChatNotificationFeedOptions): CometChatUseCometChatNotificationFeedReturn;

interface UseNotificationUnreadCountOptions {
    /** Filter count by category */
    category?: string;
    /** Polling interval in ms. Default: 30000 */
    pollingInterval?: number;
}
interface UseNotificationUnreadCountResult {
    count: number;
    refresh: () => Promise<void>;
    isLoading: boolean;
}
/**
 * Hook to track unread notification feed count.
 * Uses a shared singleton — multiple components share one polling interval and listener.
 */
declare function useNotificationUnreadCount(_options?: UseNotificationUnreadCountOptions): UseNotificationUnreadCountResult;

/**
 *
 * Public API — named exports only.
 */

declare const VERSION = "7.1.0";

export { AI_CONSTANTS, type BatchPosition, type CardAction, CometChatAIAssistantBubble, type CometChatAIAssistantBubbleProps, CometChatAIAssistantChat, CometChatAIAssistantChatHistory, type CometChatAIAssistantChatHistoryProps, type CometChatAIAssistantChatProps, type CometChatAIAssistantToolFunction, CometChatAIAssistantTools, type CometChatAIAssistantToolsMap, CometChatAIPlugin, type CometChatAIPluginConfig, type CometChatAIStreamEvent, type CometChatAIStreamEventType, CometChatActionBubble, type CometChatActionBubbleProps, CometChatActionSheet, type CometChatActionSheetContextValue, type CometChatActionSheetHeaderProps, type CometChatActionSheetItemData, type CometChatActionSheetItemProps, type CometChatActionSheetLayoutMode, type CometChatActionSheetLayoutProps, type CometChatActionSheetRootProps, type CometChatAttachmentHideOptions, CometChatAudioBubble, type CometChatAudioBubbleProps, CometChatAudioPlugin, CometChatAudiosBubble, type CometChatAudiosBubbleProps, CometChatAvatar, type CometChatAvatarContextValue, type CometChatAvatarImageProps, type CometChatAvatarInitialsProps, type CometChatAvatarRootProps, type CometChatAvatarSize, type CometChatAvatarStatus, type CometChatAvatarStatusIndicatorProps, CometChatButton, type CometChatButtonContextValue, type CometChatButtonIconProps, type CometChatButtonRootProps, type CometChatButtonSize, type CometChatButtonTextProps, type CometChatButtonVariant, CometChatCallActionBubble, type CometChatCallActionBubbleProps, CometChatCallActionPlugin, CometChatCallBubble, type CometChatCallBubbleProps, CometChatCallButtons, type CometChatCallButtonsProps, type CometChatCallButtonsState, CometChatCallLogs, type CometChatCallLogsProps, CometChatCardBubble, CometChatCardBubblePlugin, type CometChatCardBubbleProps, CometChatChangeScope, type CometChatChangeScopeActionsProps, type CometChatChangeScopeContextValue, type CometChatChangeScopeErrorMessageProps, type CometChatChangeScopeHeaderProps, type CometChatChangeScopeListProps, type CometChatChangeScopeOptionData, type CometChatChangeScopeOptionProps, type CometChatChangeScopeRootProps, CometChatCheckbox, type CometChatCheckboxChangeEvent, type CometChatCheckboxProps, CometChatCollaborativeDocumentBubble, type CometChatCollaborativeDocumentBubbleProps, CometChatCollaborativeDocumentPlugin, CometChatCollaborativeWhiteboardBubble, type CometChatCollaborativeWhiteboardBubbleProps, CometChatCollaborativeWhiteboardPlugin, type CometChatComposerAttachmentOption, type CometChatComposerContentToDisplay, type CometChatComposerSendState, CometChatConfirmDialog, type CometChatConfirmDialogActionsProps, type CometChatConfirmDialogContentProps, type CometChatConfirmDialogContextValue, type CometChatConfirmDialogIconProps, type CometChatConfirmDialogRootProps, type CometChatConfirmDialogVariant, CometChatContextMenu, type CometChatContextMenuContextValue, type CometChatContextMenuDropdownProps, type CometChatContextMenuItemData, type CometChatContextMenuItemProps, type CometChatContextMenuPlacement, type CometChatContextMenuRootProps, type CometChatContextMenuTriggerProps, type CometChatConversationOption, CometChatConversationStarter, type CometChatConversationStarterContextValue, type CometChatConversationStarterEmptyProps, type CometChatConversationStarterErrorProps, type CometChatConversationStarterItemProps, type CometChatConversationStarterLoadingProps, type CometChatConversationStarterRootProps, type CometChatConversationStarterState, CometChatConversationSummary, type CometChatConversationSummaryBodyProps, type CometChatConversationSummaryContextValue, type CometChatConversationSummaryEmptyProps, type CometChatConversationSummaryErrorProps, type CometChatConversationSummaryHeaderProps, type CometChatConversationSummaryLoadingProps, type CometChatConversationSummaryRootProps, type CometChatConversationSummaryState, CometChatConversations, type CometChatConversationsContextValue, type CometChatConversationsConvenienceProps, type CometChatConversationsEmptyStateProps, type CometChatConversationsErrorStateProps, type CometChatConversationsHeaderProps, type CometChatConversationsItemProps, type CometChatConversationsListProps, type CometChatConversationsLoadingStateProps, type CometChatConversationsProps, type CometChatConversationsRootProps, type CometChatConversationsSearchBarProps, type CometChatConversationsSelectionMode, CometChatCreatePoll, type CometChatCreatePollProps, CometChatDate, type CometChatDateContextValue, type CometChatDateFormatConfig, type CometChatDateRootProps, type CometChatDateTextProps, type CometChatDateVariant, CometChatDeleteBubble, type CometChatDeleteBubbleProps, CometChatDeletePlugin, CometChatErrorBoundary, type CometChatErrorBoundaryContextValue, type CometChatErrorBoundaryFallbackProps, type CometChatErrorBoundaryRootProps, type CometChatErrorContext, type CometChatEvent, type CometChatFetchState, CometChatFileBubble, type CometChatFileBubbleProps, CometChatFilePlugin, CometChatFilesBubble, type CometChatFilesBubbleProps, CometChatFlagMessageDialog, type CometChatFlagMessageDialogActionsProps, type CometChatFlagMessageDialogContextValue, type CometChatFlagMessageDialogHeaderProps, type CometChatFlagMessageDialogReasonsProps, type CometChatFlagMessageDialogRemarkProps, type CometChatFlagMessageDialogRootProps, type CometChatFrameContextValue, CometChatFrameProvider, type CometChatFrameProviderProps, CometChatFullScreenViewer, type CometChatFullScreenViewerBodyProps, type CometChatFullScreenViewerContextValue, type CometChatFullScreenViewerHeaderProps, type CometChatFullScreenViewerMediaType, type CometChatFullScreenViewerNavigationProps, type CometChatFullScreenViewerRootProps, CometChatGroupActionBubble, type CometChatGroupActionBubbleProps, CometChatGroupActionPlugin, type CometChatGroupMemberOption, CometChatGroupMembers, type CometChatGroupMembersContextValue, type CometChatGroupMembersEmptyStateProps, type CometChatGroupMembersErrorStateProps, type CometChatGroupMembersHeaderProps, type CometChatGroupMembersItemProps, type CometChatGroupMembersListProps, type CometChatGroupMembersLoadingStateProps, type CometChatGroupMembersProps, type CometChatGroupMembersRootProps, type CometChatGroupMembersSearchBarProps, type CometChatGroupMembersSelectionMode, type CometChatGroupOption, CometChatGroups, type CometChatGroupsContextValue, type CometChatGroupsEmptyStateProps, type CometChatGroupsErrorStateProps, type CometChatGroupsHeaderProps, type CometChatGroupsItemProps, type CometChatGroupsListProps, type CometChatGroupsLoadingStateProps, type CometChatGroupsProps, type CometChatGroupsRootProps, type CometChatGroupsSearchBarProps, type CometChatGroupsSelectionMode, CometChatImageBubble, type CometChatImageBubbleAttachment, type CometChatImageBubbleProps, CometChatImagePlugin, CometChatImagesBubble, type CometChatImagesBubbleProps, CometChatIncomingCall, type CometChatIncomingCallProps, CometChatLocalize, CometChatLogger, CometChatMarkdownFormatter, type CometChatMediaAttachment, CometChatMeetingPlugin, type CometChatMentionData, CometChatMentionsFormatter, CometChatMessageBubble, type CometChatMessageBubbleAlignment, type CometChatMessageBubbleProps, CometChatMessageBubbleRenderer, type CometChatMessageBubbleRendererProps, CometChatMessageBubbleWrapper, type CometChatMessageBubbleWrapperProps, CometChatMessageComposer, type CometChatMessageComposerAttachmentButtonProps, type CometChatMessageComposerAuxiliaryButtonsProps, type CometChatMessageComposerContextValue, type CometChatMessageComposerEditPreviewProps, type CometChatMessageComposerEmojiButtonProps, type CometChatMessageComposerFooterProps, type CometChatMessageComposerHeaderProps, type CometChatMessageComposerInputProps, type CometChatMessageComposerLayout, type CometChatMessageComposerReplyPreviewProps, type CometChatMessageComposerRootProps, type CometChatMessageComposerSendButtonProps, type CometChatMessageComposerVoiceButtonProps, CometChatMessageHeader, type CometChatMessageHeaderAuxiliaryButtonsProps, type CometChatMessageHeaderAvatarProps, type CometChatMessageHeaderBackButtonProps, type CometChatMessageHeaderCallButtonsProps, type CometChatMessageHeaderContextValue, type CometChatMessageHeaderConvenienceProps, type CometChatMessageHeaderOverflowMenuProps, type CometChatMessageHeaderProps, type CometChatMessageHeaderRootProps, type CometChatMessageHeaderSearchButtonProps, type CometChatMessageHeaderSubtitleProps, type CometChatMessageHeaderSummaryButtonProps, type CometChatMessageHeaderTitleProps, CometChatMessageInformation, type CometChatMessageInformationCalendarObject, type CometChatMessageInformationContextValue, type CometChatMessageInformationEmptyStateProps, type CometChatMessageInformationErrorStateProps, type CometChatMessageInformationFetchState, type CometChatMessageInformationHeaderProps, type CometChatMessageInformationLoadingStateProps, type CometChatMessageInformationMessagePreviewProps, type CometChatMessageInformationReceiptListProps, type CometChatMessageInformationRootProps, CometChatMessageList, type CometChatMessageListAction, CometChatMessageListAlignment, type CometChatMessageListManagerOptions, type CometChatMessageListOptions, type CometChatMessageListProps, type CometChatMessageListRootProps, type CometChatMessageListState, type CometChatMessageOption, type CometChatMessagePlugin, type CometChatMessagePluginContext, CometChatMessageStatus, CometChatModerationView, type CometChatModerationViewProps, CometChatNotificationFeed, type CometChatNotificationFeedContextValue, type CometChatNotificationFeedProps, type CometChatNotificationFeedRootProps, CometChatOngoingCall, type CometChatOngoingCallProps, CometChatOutgoingCall, type CometChatOutgoingCallProps, CometChatPluginRegistry, CometChatPollBubble, type CometChatPollBubbleProps, CometChatPollsPlugin, type CometChatPresenceSubscription, CometChatProvider, type CometChatProviderProps, CometChatRadioButton, type CometChatRadioButtonChangeEvent, type CometChatRadioButtonProps, CometChatReactionList, type CometChatReactionListContextValue, type CometChatReactionListEmptyStateProps, type CometChatReactionListErrorStateProps, type CometChatReactionListFetchState, type CometChatReactionListItemsProps, type CometChatReactionListLoadingStateProps, type CometChatReactionListRootProps, type CometChatReactionListTabsProps, CometChatReactions, type CometChatReactionsBarProps, type CometChatReactionsChipProps, type CometChatReactionsContextValue, type CometChatReactionsFetchState, type CometChatReactionsInfoProps, type CometChatReactionsOverflowProps, type CometChatReactionsRootProps, type CometChatReceipt, CometChatRichTextFormatter, CometChatSearch, CometChatSearchBar, type CometChatSearchBarClearButtonProps, type CometChatSearchBarContextValue, type CometChatSearchBarIconProps, type CometChatSearchBarInputProps, type CometChatSearchBarRootProps, type CometChatSearchContextValue, type CometChatSearchConversationClickEvent, type CometChatSearchConversationsListProps, type CometChatSearchFilter, type CometChatSearchMessageClickEvent, type CometChatSearchMessagesListProps, type CometChatSearchProps, type CometChatSearchRootProps, type CometChatSearchScope, CometChatSmartReplies, type CometChatSmartRepliesContextValue, type CometChatSmartRepliesEmptyProps, type CometChatSmartRepliesErrorProps, type CometChatSmartRepliesHeaderProps, type CometChatSmartRepliesItemProps, type CometChatSmartRepliesLoadingProps, type CometChatSmartRepliesRootProps, type CometChatSmartRepliesState, CometChatSoundManager, type CometChatSoundType, CometChatStickerBubble, type CometChatStickerBubbleProps, CometChatStickersPlugin, CometChatStreamMessageBubble, type CometChatStreamMessageBubbleProps, type CometChatStreamState, CometChatTextBubble, type CometChatTextBubbleProps, CometChatTextFormatter, CometChatTextPlugin, type CometChatTheme, type CometChatThemeContextValue, type CometChatThemeProviderProps, CometChatThreadHeader, type CometChatThreadHeaderCloseButtonProps, type CometChatThreadHeaderContextValue, type CometChatThreadHeaderConvenienceProps, type CometChatThreadHeaderParentBubbleProps, type CometChatThreadHeaderProps, type CometChatThreadHeaderReplyCountProps, type CometChatThreadHeaderRootProps, type CometChatThreadHeaderSenderNameProps, type CometChatThreadHeaderTitleProps, type CometChatThreadHeaderTopBarProps, CometChatToolCallArgumentBubble, type CometChatToolCallArgumentBubbleProps, CometChatToolCallResultBubble, type CometChatToolCallResultBubbleProps, type CometChatTypingDisplay, type CometChatUIEvent, CometChatUIKit, CometChatUIKitCalls, CometChatUIKitUtility, CometChatUrlFormatter, type CometChatUseCometChatConversationsOptions, type CometChatUseCometChatConversationsReturn, type CometChatUseCometChatGroupMembersOptions, type CometChatUseCometChatGroupMembersReturn, type CometChatUseCometChatGroupsOptions, type CometChatUseCometChatGroupsReturn, type CometChatUseCometChatUsersOptions, type CometChatUseCometChatUsersReturn, type CometChatUseMessageListOptions, type CometChatUseMessageListReturn, type CometChatUserOption, type CometChatUserReceiptInfo, type CometChatUserStatus, CometChatUsers, type CometChatUsersContextValue, type CometChatUsersEmptyStateProps, type CometChatUsersErrorStateProps, type CometChatUsersHeaderProps, type CometChatUsersItemProps, type CometChatUsersListProps, type CometChatUsersLoadingStateProps, type CometChatUsersProps, type CometChatUsersRootProps, type CometChatUsersSearchBarProps, type CometChatUsersSectionHeaderProps, type CometChatUsersSelectedPreviewProps, type CometChatUsersSelectionMode, CometChatVideoBubble, type CometChatVideoBubbleProps, CometChatVideoPlugin, CometChatVideosBubble, type CometChatVideosBubbleProps, CometChatVoiceNoteBubble, type CometChatVoiceNoteBubbleProps, type LocalizationSettings, LogLevel, type MissingKeyHandler, type NotificationCategory, type NotificationFeedItem, type ScreenState, type SessionSettings, type SupportedLanguage, type TimestampGroup, type TranslationContextValue, type TrayItemGroup, UIKitSettings, UIKitSettingsBuilder, type UseCometChatCallButtonsOptions, type UseCometChatDateOptions, type UseCometChatDateResult, type UseOngoingCallOptions, type UseOngoingCallReturn, VERSION, clearTranslationCache, clone, computeBatchPosition, createActionMessage, defaultPlugins, extractExtensionUrl, getAIAssistantTools, getCachedTranslation, getInitials, getMessageBatchId, getMessageError, getReceiptStatus, getStreamSpeed, getStreamState, groupAndOrderTrayItems, handleWebsocketMessage, hasMessageError, initCallsSDK, initialMessageListState, isMessageModerated, isMessagePendingModeration, isMissedCall, isPermissionDeniedError, isSentByMe, isStreaming, loadCallsSDK, preloadAIAssistantChat, preloadAIAssistantPanel, setAIAssistantTools, setStreamError, setStreamSpeed, startStreamingMessage, stopStreamingMessage, subscribeToStreamState, translateMessage, useCometChatActionSheetContext, useCometChatAvatarContext, useCometChatButtonContext, useCometChatCallButtons, useCometChatChangeScopeContext, useCometChatConfirmDialogContext, useCometChatContextMenuContext, useCometChatConversationStarterContext, useCometChatConversationSummaryContext, useCometChatConversations, useCometChatConversationsContext, useCometChatDate, useCometChatDateContext, useCometChatErrorBoundaryContext, useCometChatEvents, useCometChatFlagMessageDialogContext, useCometChatFrameContext, useCometChatFullScreenViewerContext, useCometChatGroupMembers, useCometChatGroupMembersContext, useCometChatGroups, useCometChatGroupsContext, useCometChatMessageComposerContext, useCometChatMessageHeaderContext, useCometChatMessageInformationContext, useCometChatMessageList, useCometChatMessageListContext, useCometChatNotificationFeed, useCometChatNotificationFeedContext, useCometChatReactionList, useCometChatReactionListContext, useCometChatReactionsContext, useCometChatSearchBarContext, useCometChatSearchContext, useCometChatSmartRepliesContext, useCometChatThreadHeaderContext, useCometChatUsers, useCometChatUsersContext, useDefaultMessageCategories, useDefaultMessageTypes, useLocale, useLoggedInUser, useNotificationUnreadCount, useOngoingCall, usePluginRegistry, usePublishEvent, useTheme, verifyCallUser };
