import { type ReactNode } from 'react'; export interface ChatMessageRowProps { /** Display name (bold, top-left). */ displayName: string; /** Avatar image URL. Proxied via `useProxiedImageUrl`; falls back to * initials in a same-sized `rounded-lg` box when absent. */ avatarUrl?: string | null; /** Pre-formatted relative-time label (e.g. "2h ago"). Caller formats it — * Slack passes its server `displayTime`, tickets pass * `formatRelativeTime(createdAt)`. Empty/undefined hides the time. */ timeLabel?: string | null; /** Message body. Empty + no footer renders nothing under the header. */ body: string; /** Per-surface slot under the body: Slack reply badge / ticket attachments. */ footer?: ReactNode; } export declare function ChatMessageRow({ displayName, avatarUrl, timeLabel, body, footer, }: ChatMessageRowProps): import("react").JSX.Element; /** * Skeleton with 1:1 structural parity to `` — SAME wrapper * (`flex gap-2 md:gap-3`), SAME avatar box (`w-8 h-8 md:w-10 md:h-10 * rounded-lg`), SAME header `mb-1`, and bar heights matching the real * name/time/body line-heights so the loading→loaded swap does not reflow. */ export declare function ChatMessageRowSkeleton(): import("react").JSX.Element; //# sourceMappingURL=chat-message-row.d.ts.map