import type { SelectedThreadItem } from "../internal/store/selection-store.js";
/**
 * Return value of {@link useThreadSelection} when a provider is present.
 *
 * - `isSelected`: whether *this* item is currently selected.
 * - `select`: callback to select/toggle this item.
 *
 * Both are referentially stable (safe as `useEffect`/`useMemo` deps).
 */
export interface ThreadSelectionHandle {
    readonly isSelected: boolean;
    readonly select: () => void;
}
/**
 * Per-item selection hook for thread leaves.
 *
 * Uses `useSyncExternalStore` so only the previously- and
 * newly-selected rows re-render on a selection change (≤2 rows).
 *
 * Returns `null` when `ThreadSelectionContext` is absent (DD-011:
 * opt-in, backward compatible). Callers should guard:
 *
 * ```tsx
 * const selection = useThreadSelection("tool-call", tc.id);
 * // selection is null when no provider → no selection affordance
 * ```
 */
export declare function useThreadSelection(kind: SelectedThreadItem["kind"], id: string): ThreadSelectionHandle | null;
/**
 * Hook to read the full selection from the store (for the InspectTab).
 *
 * Returns `null` when no provider is present or nothing is selected.
 */
export declare function useSelectedThreadItem(): SelectedThreadItem | null;
//# sourceMappingURL=useThreadSelection.d.ts.map