import * as React from 'react'; import { type AutocompleteOption } from './autocomplete'; export interface TakeOverStatusOption extends AutocompleteOption { color: string; } export interface TakeOverAssigneeOption extends AutocompleteOption { /** Full (already resolved) avatar URL. */ imageUrl?: string; } export interface TakeOverTicketSelection { statusId: string; assigneeId: string; } export interface TakeOverTicketModalProps { isOpen: boolean; onClose: () => void; /** Highlighted ticket reference in the description, e.g. "1003: Email client synchronization issues". */ ticketRef: string; /** Allowed target statuses, in display order (consumer decides grouping, e.g. custom statuses first). */ statusOptions: TakeOverStatusOption[]; /** Assignable users, in display order (consumer decides ordering, e.g. signed-in user first). */ assigneeOptions: TakeOverAssigneeOption[]; assigneesLoading?: boolean; /** Pre-selected status; falls back to the first status option. */ initialStatusId?: string | null; /** Pre-selected assignee; no fallback — pass the signed-in user id for the design default. */ initialAssigneeId?: string | null; /** Confirm in-flight: buttons lock and the modal refuses to close. */ isPending?: boolean; onConfirm: (selection: TakeOverTicketSelection) => void; } /** Status row with color swatch — shared by the ticket lifecycle modals * (Take Over / Reopen), which present the same Status + Assigned pair. */ export declare function renderTicketStatusOption(option: AutocompleteOption, isSelected: boolean): React.ReactNode; /** Assignee row with round avatar — shared by the ticket lifecycle modals. */ export declare function renderTicketAssigneeOption(option: AutocompleteOption, isSelected: boolean): React.ReactNode; /** * Take Over Ticket confirmation dialog (Figma openframe---tickets 8482-112154 / * 8482-112169): shown when a technician takes a ticket over from the AI * assistant. Presentational — the consumer supplies the option lists, their * ordering and default selections, and performs the actual take-over in * `onConfirm` (status transition + assignment + switching the dialog to direct * mode, or an atomic backend mutation once available). * * Desktop footer shows only the accent Take Over button (X closes); mobile * bottom-sheet adds a Cancel button, per design. */ export declare function TakeOverTicketModal({ isOpen, onClose, ticketRef, statusOptions, assigneeOptions, assigneesLoading, initialStatusId, initialAssigneeId, isPending, onConfirm, }: TakeOverTicketModalProps): React.JSX.Element; //# sourceMappingURL=take-over-ticket-modal.d.ts.map