import { AssistantAttachment, AttachmentRejection, AttachmentSendBlocker } from './attachments'; export interface UseAssistantAttachmentsResult { /** Files being read/downscaled — no chip of their own yet. See below. */ preparingCount: number; attachments: AssistantAttachment[]; /** True while any attachment is still being prepared or uploaded. */ isBusy: boolean; /** * Why the current attachments block sending, or `null` when they do not. * Strictly wider than `isBusy`: it also reports the terminal 'failed' state, * which is not busy but must still stop a send. See * `getAttachmentSendBlocker`. */ sendBlocker: AttachmentSendBlocker | null; /** Most recent rejection, for a transient inline message. */ rejection: AttachmentRejection | null; addFiles: (files: FileList | File[] | null | undefined) => void; remove: (id: string) => void; /** Re-upload a single failed attachment, reusing the bytes already prepared. */ retry: (id: string) => void; clear: () => void; clearRejection: () => void; canAddMore: boolean; } export interface UseAssistantAttachmentsOptions { /** * How many characters of a text or document file to keep when it is attached * (BOFF-7334). Pass `largestInlineCharsPerFile(availableModes)`: the send cuts * each file again to the SENDING mode's limit, so keeping the largest is what * lets a file attached in one mode be sent in another without having been cut * to the smaller limit first. Absent: the shared default, * `MAX_INLINE_CHARS_PER_FILE`. Bounded like a mode's own limit. */ perFileChars?: number; } export declare function useAssistantAttachments(options?: UseAssistantAttachmentsOptions): UseAssistantAttachmentsResult; //# sourceMappingURL=useAssistantAttachments.d.ts.map