import React from 'react';
import type { Attachment } from '../pm-node-types.js';
export type PromptInputAreaProps = {
    busy?: boolean;
    readonly?: boolean;
    placeholder?: string;
    hasSelectedNode?: boolean;
    maxLength: number;
    onChange: (value: string) => void;
    onSubmit: () => void;
    onRemoveAttachment?: (id: string) => void;
    value: string;
    busyValue?: string;
    onCancel?: () => void;
    onClose?: () => void;
    zIndex: number;
    dataHook: string;
    minHeight?: string;
    forceMultiline?: boolean;
    attachments?: Attachment[];
    className?: string;
    style?: React.CSSProperties;
    presetBarComponent?: React.ReactNode;
    actionBarComponent?: React.ReactNode;
    fileUploadFn?: () => Promise<void>;
};
export type PromptInputAreaRef = {
    focus: () => void;
};
export declare function useAutoHeight({ inputRef, value, forceMultiline, baseLineHeight, minHeight }: {
    inputRef: React.RefObject<HTMLTextAreaElement | null>;
    value: string;
    forceMultiline: boolean;
    baseLineHeight: number;
    minHeight?: string;
}): {
    isMultiline: boolean;
    hiddenInputRef: React.RefObject<HTMLTextAreaElement>;
};
export declare function useKeyboardHandler({ busy, onEsc, onEnter }: {
    busy?: boolean;
    onEsc?: () => void;
    onEnter: () => void;
}): {
    onKeyDown: (e: React.KeyboardEvent<HTMLTextAreaElement>) => void;
};
export declare function useFocusCallback(inputRef: React.RefObject<HTMLTextAreaElement | null>): {
    focus: (retries?: number) => void;
};
//# sourceMappingURL=prompt-input-area-common.d.ts.map