import type { ChatAttachment, ChatAttachmentUpload } from '../../../hooks/useChatAgent';
import type { AttachmentCallback } from '../../../contexts/ChatSettingsContext';
import type { ChatInputAttachment } from '../components/ChatInput';
export interface PendingAttachment {
    id: string;
    file: File;
    dataUrl?: string;
    sourceUrl?: string;
}
export interface UseAttachmentManagerOptions {
    cacheAttachment: (attachment: ChatAttachment) => void;
    removeAttachment: (attachmentId: string) => void;
    attachmentCallback?: AttachmentCallback;
}
export interface UseAttachmentManagerResult {
    pendingAttachments: PendingAttachment[];
    chatInputAttachments: ChatInputAttachment[];
    isAttachmentCallbackPending: boolean;
    addAttachments: (files: File[]) => void;
    removeAttachment: (attachmentId: string) => void;
    clearAttachments: () => void;
    restoreAttachments: (attachments: ReadonlyArray<PendingAttachment>) => void;
    runAttachmentCallback: (attachment: ChatAttachment) => Promise<{
        sourceUrl?: string;
    } | undefined>;
    createUploads: (attachments: ReadonlyArray<PendingAttachment>) => Promise<ChatAttachmentUpload[]>;
}
export declare const useAttachmentManager: ({ cacheAttachment, removeAttachment, attachmentCallback }: UseAttachmentManagerOptions) => UseAttachmentManagerResult;
//# sourceMappingURL=useAttachmentManager.d.ts.map