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;