import type { Logger } from '../../../lib/Sendbird/types';
import type { OpenGlobalModalProps } from '../../../hooks/useModal';
import type { StringSet } from '../../Label/stringSet';
export interface PendingFile {
    id: string;
    file: File;
    /** Object URL for image previews. Undefined for non-image files. Revoked on remove/unmount. */
    previewUrl?: string;
    isImage: boolean;
}
export interface UsePendingFilesParams {
    uikitUploadSizeLimit: number;
    uikitMultipleFilesMessageLimit: number;
    acceptableMimeTypes?: string[];
    openModal: (props: OpenGlobalModalProps) => void;
    stringSet: StringSet;
    logger?: Logger;
}
export interface UsePendingFilesReturn {
    pendingFiles: PendingFile[];
    /**
     * Adds files to the staging list. Validates combined-count + per-file size.
     * On count/size violation, opens the standard modal and rejects the batch.
     */
    addFiles: (files: File[]) => void;
    removeFile: (id: string) => void;
    clear: () => void;
    hasPendingFiles: boolean;
}
/**
 * Holds files staged for the message composer before send. Producers (file
 * picker, drag-and-drop, clipboard paste) all call addFiles. The owning
 * wrapper drains pendingFiles on submit and calls clear().
 */
export declare const usePendingFiles: ({ uikitUploadSizeLimit, uikitMultipleFilesMessageLimit, acceptableMimeTypes, openModal, stringSet, logger, }: UsePendingFilesParams) => UsePendingFilesReturn;
