import type { AnyTicket } from './types';
import type { TicketDetailDrawerProps } from './ticket-detail-drawer';
export interface TicketReplyComposerProps {
    ticket: AnyTicket;
    busy: boolean;
    supportSystemDown: boolean;
    onSendMessage: TicketDetailDrawerProps['onSendMessage'];
    onClose: TicketDetailDrawerProps['onClose'];
}
/**
 * Open-ticket reply composer — REUSES the exact same layout as the global
 * Ask-AI chat composer (`embeddable-chat.tsx`): the shared `<ChatInput>` with
 * the staged-file chip strip above it and the attachment `+` button in a
 * controls row BELOW the input (identical placement to the global chat), plus
 * the destructive close-confirm `AlertDialog`.
 *
 * Replaces the former `OpenActions` raw-`<Textarea>` composer. The text lives
 * inside `ChatInput`; this component owns only the attachment bag + the close
 * dialog. Send semantics:
 *   - `sending={busy || hasInflightUploads}` disables the input while sending
 *     OR uploading (same as the global chat); `allowEmptySend` lets an
 *     attachments-only reply send once uploads finish;
 *   - the typed draft + staged files survive a FAILED send: `handleSend`
 *     returns `false`, so `ChatInput` keeps the text and we only `clear()` the
 *     attachments on success;
 *   - close does NOT collapse the drawer (no `onActionCollapsed`).
 *
 * `disabled={supportSystemDown}` is the only flag that drives the "Connection
 * lost…" placeholder. The `+` attach gate stays `!supportSystemDown` (same gate
 * the old composer used).
 */
export declare function TicketReplyComposer({ ticket, busy, supportSystemDown, onSendMessage, onClose, }: TicketReplyComposerProps): import("react").JSX.Element;
//# sourceMappingURL=ticket-reply-composer.d.ts.map