import type { AgentExecution } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/api_pb";
import type { ToolCall } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/message_pb";
import { ApprovalAction } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/enum_pb";
import type { WorkspaceEntry } from "@stigmer/protos/ai/stigmer/agentic/session/v1/workspace_pb";
import type { ResolvedPathAction } from "./file-path-resolver";
/** Props for {@link MessageThread}. */
export interface MessageThreadProps {
    /** Completed executions in chronological order. */
    readonly executions: readonly AgentExecution[];
    /**
     * The currently streaming execution. Appended after `executions` to
     * form a continuous thread. Pass `null` or `undefined` when no
     * execution is actively streaming.
     */
    readonly activeStreamExecution?: AgentExecution | null;
    /**
     * Optimistic user message shown at the end of the thread before the
     * stream delivers the real message. Rendered as a human message with
     * a sending indicator. Clear this prop once the stream delivers its
     * first snapshot.
     */
    readonly pendingUserMessage?: string | null;
    /** Additional CSS class names for the root container. */
    readonly className?: string;
    /**
     * Custom formatter for tool call summary labels. Passed through to
     * each {@link ToolCallGroup}.
     */
    readonly formatToolCallSummary?: (toolCalls: readonly ToolCall[]) => string;
    /**
     * Callback for approval actions. When provided and the active
     * execution has pending approvals, {@link ApprovalCard}s are
     * rendered as thread items. When omitted, no approval UI is
     * shown (backward compatible).
     */
    readonly onApprovalSubmit?: (toolCallId: string, action: ApprovalAction, comment?: string) => void;
    /**
     * Set of tool call IDs currently being submitted for approval.
     * Drives per-card loading state. Only meaningful when
     * `onApprovalSubmit` is provided.
     */
    readonly submittingApprovalIds?: ReadonlySet<string>;
    /**
     * Workspace entries from the session spec. When provided, file
     * paths in tool call rendering become interactive — git-sourced
     * paths open on GitHub, local paths offer copy-to-clipboard.
     *
     * Passed to {@link FilePathContext} for consumption by
     * {@link FilePathLink} components deep in the tree.
     */
    readonly workspaceEntries?: readonly WorkspaceEntry[];
    /**
     * Optional override for file path click behavior. Platform
     * builders use this to integrate their own file viewer or
     * navigation instead of the default open-URL / copy-to-clipboard.
     */
    readonly onFilePathClick?: (path: string, resolved: ResolvedPathAction) => void;
    /**
     * Absolute sandbox workspace root (e.g. `/home/daytona/workspace`).
     * When provided, shell commands and tool output normalize absolute
     * sandbox paths to workspace-relative display paths.
     *
     * Pass an empty string or omit for local sessions where paths are
     * the user's own filesystem (no normalization needed).
     */
    readonly sandboxWorkspaceRoot?: string;
}
/**
 * Renders a continuous conversation thread from one or more
 * {@link AgentExecution} snapshots.
 *
 * Composes {@link MessageEntry}, {@link ToolCallGroup}, and
 * {@link ExecutionPhaseBadge} into a scrollable, auto-scrolling log
 * that follows new content when the user is near the bottom.
 *
 * Renders nothing when no executions are provided.
 *
 * All visual properties flow through `--stgm-*` tokens.
 *
 * @example
 * ```tsx
 * const { executions } = useSessionExecutions(sessionId);
 * const stream = useExecutionStream(activeId);
 *
 * <MessageThread
 *   executions={executions ?? []}
 *   activeStreamExecution={stream.execution}
 * />
 * ```
 */
export declare function MessageThread({ executions, activeStreamExecution, pendingUserMessage, className, formatToolCallSummary, onApprovalSubmit, submittingApprovalIds, workspaceEntries, onFilePathClick, sandboxWorkspaceRoot, }: MessageThreadProps): import("react/jsx-runtime").JSX.Element;
//# sourceMappingURL=MessageThread.d.ts.map