import type { ControlPlaneSessionDetail, ControlPlaneSessionMessage, ControlPlaneSessionTurn } from '../../api/types.js';
import type { ConversationTurnPresentationTimelineItem } from '../../../core/chat/types.js';
export type ClientSharedSessionTurnPresentationItem = {
    id: string;
    turnId: string;
    turnPrompt: string;
    activity: ConversationTurnPresentationTimelineItem;
};
export type ClientSharedConversationTimelineMessageItem = {
    type: 'message';
    id: string;
    message: ControlPlaneSessionMessage;
};
export type ClientSharedConversationTimelineActivityGroupItem = {
    type: 'turn_activity_group';
    id: string;
    turnId: string;
    turnPrompt: string;
    activities: ConversationTurnPresentationTimelineItem[];
};
export type ClientSharedConversationTimelineItem = ClientSharedConversationTimelineMessageItem | ClientSharedConversationTimelineActivityGroupItem;
/**
 * Owns frontend-neutral projection of persisted turn presentation metadata.
 *
 * Core owns which tool facts become durable turn presentation metadata. This
 * service owns the shared client-side shape that web-v2 and cli-v2 can render
 * differently. It does not parse raw traces, inspect tool payloads, or decide
 * host-specific layout, keyboard shortcuts, or collapse state.
 */
export declare class ClientSharedSessionTurnPresentationService {
    static projectConversationTimeline(session: ControlPlaneSessionDetail | undefined | null): ClientSharedConversationTimelineItem[];
    static projectTurnActivities(session: ControlPlaneSessionDetail | undefined | null): ClientSharedSessionTurnPresentationItem[];
    static projectTurnActivityItems(turn: ControlPlaneSessionTurn): ClientSharedSessionTurnPresentationItem[];
    private static projectConversationActivityGroup;
    private static findUnplacedTurnForPrompt;
}
//# sourceMappingURL=session-turn-presentation-service.d.ts.map