import type { ArkmeFilePolicy, ArkmeLocalFile } from '../file-transfer-contract.js'; import { type ArkmeComposerAttachment } from './composer-draft-store.js'; export interface AttachmentPreparationPort { get(): readonly ArkmeComposerAttachment[]; update(change: (items: readonly ArkmeComposerAttachment[]) => readonly ArkmeComposerAttachment[]): void; current(): boolean; policy(signal: AbortSignal): Promise; stage(file: File, signal: AbortSignal): Promise; discard(file: ArkmeLocalFile): Promise; imagesOnly?: boolean; } /** File selection is synchronous; only preparation is queued. No File/blob URL is persisted. */ export declare class AttachmentPreparationQueue { private readonly port; private jobs; private tail; private disposed; constructor(port: AttachmentPreparationPort); add(files: readonly File[]): void; private present; private state; private enqueue; private retry; private cancel; dispose(): void; settled(): Promise; } export declare function prepareComposerAttachments(key: string, userId: number, files: readonly File[], imagesOnly?: boolean): void; export declare function attachmentPreparationHint(attachments: readonly ArkmeComposerAttachment[]): string | undefined; //# sourceMappingURL=attachment-preparation.d.ts.map