import { type ReactNode } from "react";
import type { UseGitHubConnectionReturn } from "../github/useGitHubConnection";
import type { WorkspaceFileLister } from "../workspace/WorkspaceFileLister";
import type { ApplyResourceResult } from "../library/useApplyResource";
/** Props for {@link SessionViewer}. */
export interface SessionViewerProps {
    /** Session ID to load and display. */
    readonly sessionId: string;
    /** Organization slug. */
    readonly org: string;
    /**
     * GitHub connection state. Platform-specific — web passes
     * `useGitHubConnection(org)`, desktop passes
     * `useDesktopGitHubConnection(org)`.
     */
    readonly gitHubConnection?: UseGitHubConnectionReturn;
    /**
     * Whether to enable GitHub workspace features in the composer.
     * @default true
     */
    readonly enableGitHub?: boolean;
    /**
     * Whether to enable local workspace features in the composer.
     * Web passes `deploymentMode === "local"`, desktop passes `true`.
     * @default false
     */
    readonly enableLocal?: boolean;
    /**
     * Native folder picker callback for desktop environments.
     *
     * When provided alongside `enableLocal`, the composer renders a
     * "Browse Folder" button that opens the system folder dialog.
     * Without this callback `enableLocal` alone is not sufficient
     * for the UI to render the local option.
     *
     * Desktop apps supply this via Tauri's dialog plugin. Web apps
     * omit it (no native picker available).
     */
    readonly onBrowseLocalFolder?: () => Promise<string | null>;
    /**
     * Platform-injected file lister for workspace entries. When provided,
     * each entry in the Setup tab's workspace section renders an
     * expandable file tree. (DD-004 capability injection, DD-011 opt-in.)
     */
    readonly workspaceFileLister?: WorkspaceFileLister;
    /**
     * Slot for host-injected header actions (e.g., Share button with
     * PermissionGate). Rendered in the top-right corner of the viewer.
     * Keeps the SDK organism unopinionated about Console auth (DD-004).
     */
    readonly headerActions?: ReactNode;
    /** Called after a resource is applied from the Artifacts tab. */
    readonly onApplied?: (result: ApplyResourceResult) => void;
    /** Additional CSS classes for the root container. */
    readonly className?: string;
}
/**
 * Full-featured agent session viewer — the graph-less analog of
 * `WorkflowExecutionViewer`.
 *
 * Owns `useSessionPageFlow` internally and composes:
 * - **Conversation column** (primary): `MessageThread` + error
 *   banners + `SessionComposer`
 * - **SessionInspector** (secondary): tabbed panel with Plan,
 *   Changes, Artifacts, Usage, and Inspect facets
 *
 * Connected via `ResizableSplit` with persisted width.
 *
 * Thread selection is provided via `ThreadSelectionContext` (Phase 2
 * opt-in) for render-isolated per-item selection.
 *
 * Framework-agnostic — no Next.js, no Tauri, no routing deps. Host
 * apps inject platform-specific values via props (DD-004/DD-016).
 *
 * @example
 * ```tsx
 * // Web (cloud execution)
 * <SessionViewer
 *   sessionId={id}
 *   org={org}
 *   gitHubConnection={gitHubConnection}
 *   enableGitHub
 *   headerActions={<ShareButton sessionId={id} />}
 * />
 *
 * // Desktop (local execution with native picker)
 * <SessionViewer
 *   sessionId={id}
 *   org={org}
 *   enableLocal
 *   onBrowseLocalFolder={browseLocalFolder}
 *   headerActions={<ShareButton sessionId={id} />}
 * />
 * ```
 */
export declare function SessionViewer({ sessionId, org, gitHubConnection, enableGitHub, enableLocal, onBrowseLocalFolder, workspaceFileLister, headerActions, onApplied, className, }: SessionViewerProps): import("react/jsx-runtime").JSX.Element;
//# sourceMappingURL=SessionViewer.d.ts.map