/**
 * TurnGroupCard
 *
 * One user-turn card in the chat timeline. Each card has exactly two
 * visual states: **open** (header + body) and **closed** (header only).
 *
 * - **Completed** cards default to CLOSED. Click the chevron to open
 *   and reveal the `details` slot (raw bubbles: user message + tool
 *   events + assistant replies).
 * - **In-progress** cards default to OPEN showing the `condensed`
 *   slot (user request + friendly streaming indicator — never raw
 *   tool events, per `CLAUDE.md`'s layered rule). Clicking the
 *   chevron FULLY collapses the card to header-only.
 *
 * When a card transitions from in-progress to completed (agent
 * finishes), the body auto-closes so the timeline doesn't suddenly
 * sprout a bunch of raw-bubble tails across every finished turn.
 */
import { type ReactNode } from 'react';
export interface TurnGroupCardProps {
    /** Stable id for React keys / aria-controls. */
    id: string;
    /** Human-readable title, e.g. "Working on: Fix login bug". */
    title: string;
    /** Number of assistant replies collected inside the turn. */
    assistantMessageCount: number;
    /** Render mode — see file header. */
    status: 'completed' | 'in-progress';
    /** Body content for in-progress cards (user message + friendly
     *  streaming indicator). Only used when `status === 'in-progress'`. */
    condensed?: ReactNode;
    /** Body content for completed cards — raw bubbles, tool events,
     *  full history. Falls back to `children` if not provided. */
    details?: ReactNode;
    /** Legacy slot used by completed cards — equivalent to `details`. */
    children?: ReactNode;
}
export declare function TurnGroupCard({ id, title, assistantMessageCount, status, condensed, details, children, }: TurnGroupCardProps): import("react/jsx-runtime").JSX.Element;
//# sourceMappingURL=turn-group-card.d.ts.map