import type React from 'react';
import type { ChannelState, LocalMessage, MessageResponse } from 'stream-chat';
import { IconProps } from '../../src/icons/utils/base';
import type { EmojiSearchIndex } from '../contexts/messageInputContext/MessageInputContext';
import type { TableRowJoinedUser } from '../store/types';
import { FileTypes, ValueOf } from '../types/types';
export type ReactionData = {
    Icon: React.ComponentType<IconProps>;
    type: string;
};
export declare const FileState: Readonly<{
    FINISHED: "finished";
    NOT_SUPPORTED: "not_supported";
    UPLOAD_FAILED: "upload_failed";
    UPLOADED: "uploaded";
    UPLOADING: "uploading";
}>;
export declare const ProgressIndicatorTypes: {
    IN_PROGRESS: 'in_progress';
    INACTIVE: 'inactive';
    NOT_SUPPORTED: 'not_supported';
    RETRY: 'retry';
};
export declare const MessageStatusTypes: {
    FAILED: string;
    RECEIVED: string;
    SENDING: string;
};
export type FileStateValue = (typeof FileState)[keyof typeof FileState];
type Progress = ValueOf<typeof ProgressIndicatorTypes>;
export declare const getIndicatorTypeForFileState: (fileState: FileStateValue, enableOfflineSupport: boolean) => Progress | null;
/**
 * Utility to check if the message is a Blocked message.
 * @param message
 * @returns boolean
 */
export declare const isBlockedMessage: (message: LocalMessage | TableRowJoinedUser<"messages">) => boolean | "" | undefined;
/**
 *  Utility to check if the message is a Bounced message.
 * @param message
 * @returns boolean
 */
export declare const isBouncedMessage: (message: LocalMessage) => boolean;
/**
 * Utility to check if the message is a edited message.
 * @param message
 * @returns boolean
 */
export declare const isEditedMessage: (message: LocalMessage) => boolean;
/**
 * Default emoji search index for auto complete text input
 */
export declare const defaultEmojiSearchIndex: EmojiSearchIndex;
export declare const makeImageCompatibleUrl: (url: string) => string;
export declare const getUrlWithoutParams: (url?: string) => string | undefined;
export declare const isLocalUrl: (url: string) => boolean;
export declare const generateRandomId: (a?: string) => string;
export declare const hasOnlyEmojis: (text: string) => boolean;
/**
 * Stringifies a message object
 * @param {LocalMessage} message - the message object to be stringified
 * @returns {string} The stringified message
 */
export declare const stringifyMessage: (message: MessageResponse | LocalMessage) => string;
/**
 * Reduces a list of messages to strings that are used in useEffect & useMemo
 * @param {messages} messages - the array of messages to be compared
 * @returns {string} The mapped message string
 */
export declare const reduceMessagesToString: (messages: LocalMessage[]) => string;
/**
 * Utility to get the file name from the path using regex.
 * `[^/]+` matches one or more characters that are not a slash (/), ensuring we capture the filename part.
 * `\.` matches the period before the file extension.
 * `[^/]+$` matches one or more characters that are not a slash (/) until the end of the string, capturing the file extension.
 * @param path string
 * @returns string
 */
export declare const getFileNameFromPath: (path: string) => string;
export declare const getFileTypeFromMimeType: (mimeType: string) => FileTypes.Audio | FileTypes.File | FileTypes.Image | FileTypes.Video;
/**
 * Utility to get the duration label from the duration in seconds.
 * @param duration number
 * @returns string
 */
export declare const getDurationLabelFromDuration: (duration: number) => string;
/**
 * Utility to escape special characters in a string.
 * @param text
 * @returns string
 */
export declare function escapeRegExp(text: string): string;
/**
 * Utility to find the index of a message in the messages array by id.
 * @param messages
 * @param targetId
 * @returns number
 */
export declare const findInMessagesById: (messages: ChannelState["messages"], targetId: string) => number;
/**
 * Utility to find the index of a message in the messages array by date.
 * @param messages
 * @param targetDate
 * @returns an object with the index and the message object
 */
export declare const findInMessagesByDate: (messages: MessageResponse[] | ChannelState["messages"], targetDate: Date) => {
    index: number;
    message: LocalMessage | MessageResponse;
} | {
    index: number;
    message?: undefined;
};
export {};
//# sourceMappingURL=utils.d.ts.map