/** * Clipboard-image paste and user-input assembly extracted from interactive-mode. * * `handleClipboardImagePaste` reads an image off the clipboard, labels it, and * queues it for the next submission; `takeClipboardImagesForText` drains the * queued images whose labels survive in the submitted text; and * `buildUserInputSubmission` pairs the text with those images. They mutate the * pending-image queue/counter through a `ClipboardInputHost` seam; * interactive-mode keeps thin wrappers. */ import type { ImageContent } from "@caupulican/pi-ai"; import type { EditorComponent, TUI } from "@caupulican/pi-tui"; import type { SessionImageStore } from "../../core/session-image-store.ts"; export type UserInputSubmission = { text: string; images?: ImageContent[]; }; export type PendingClipboardImage = { label: string; content: ImageContent; }; export interface ClipboardQueueState { pendingClipboardImages: PendingClipboardImage[]; clipboardImageCounter: number; } export interface ClipboardQueueHost extends ClipboardQueueState { readonly clipboardImageStore?: Pick; } export interface ClipboardInputHost extends ClipboardQueueHost { readonly editor: Pick; readonly ui: Pick; readonly autoResizeImages: boolean; readonly blockImages: boolean; readonly blockImagesReason?: string; readonly imageStore?: Pick; showStatus(message: string): void; showWarning(message: string): void; } export interface BuildSubmissionHost { takeClipboardImagesForText(text: string): ImageContent[] | undefined; } export declare function bindClipboardQueue(state: ClipboardQueueState, controls: Omit): ClipboardInputHost; export declare function bindClipboardQueue(state: ClipboardQueueState, controls: TControls): ClipboardQueueHost & TControls; export declare function handleClipboardImagePaste(host: ClipboardInputHost): Promise; export declare function takeClipboardImagesForText(host: ClipboardQueueHost, text: string): ImageContent[] | undefined; export declare function buildUserInputSubmission(host: BuildSubmissionHost, text: string): UserInputSubmission; //# sourceMappingURL=clipboard-input.d.ts.map