export declare function composerDraftOverflows(contentLines: number, visibleRows: number): boolean; export declare function composerOwnsWheel(contentLines: number): boolean; export declare function nextComposerScrollOffset(opts: { readonly offsetY: number; readonly viewportHeight: number; readonly totalLines: number; readonly direction: "up" | "down" | string; readonly delta?: number | undefined; readonly lineStep?: number | undefined; }): number | undefined; export interface ComposerWheelEditor { readonly lineCount?: number; readonly virtualLineCount?: number; readonly plainText?: string; readonly editorView: { getViewport(): { offsetY: number; offsetX: number; height: number; width: number; }; getTotalVirtualLineCount?: () => number; setViewport(x: number, y: number, width: number, height: number, moveCursor?: boolean): void; }; moveCursorUp(): unknown; moveCursorDown(): unknown; } export declare function measureComposerLines(editor: ComposerWheelEditor | null | undefined, contentLinesFallback: number): number; export declare function tryScrollComposerDraft(editor: ComposerWheelEditor, opts: { readonly contentLines: number; readonly visibleRows: number; readonly direction: "up" | "down" | string; readonly delta?: number | undefined; }): boolean; export declare function wheelChatDelta(direction: "up" | "down" | string, delta?: number): number; export declare function resolveComposerWheelTarget(opts: { readonly composerFocused: boolean; readonly editor: ComposerWheelEditor | null | undefined; readonly contentLines: number; readonly visibleRows: number; }): "draft" | "chat";