import { PropsWithChildren } from 'react';
import { ThreadData } from '@liveblocks/client';
import { ThreadMetadata } from './CollaborationTypes';
export interface RoomEntityThreadsValue {
    isLoading: boolean;
    threads: ThreadData<ThreadMetadata>[];
}
/**
 * Threads for a single dashboard entity from **room-scoped** `useThreads` inside
 * `dashboard_${companyId}` — not from app-level `ThreadsContext` / `useFilteredThreads`.
 */
export declare function useRoomEntityThreads(): RoomEntityThreadsValue;
/**
 * Room-scoped `useThreads` (must run under `RoomProvider` for `dashboard_${companyId}`).
 * Pass any `Partial<ThreadMetadata>` supported by Liveblocks for `query.metadata` — e.g.
 * detail pages include `entityId`; list drawer may omit `entityId` until a row is selected.
 *
 * **Do not** mount one subscription per list row — use `useFilteredThreads` for row
 * badges. Memoize `filter` when its fields are stable to avoid redundant fetches.
 */
export declare function useRoomEntityThreadsQuery({ filter, }: {
    filter: Partial<ThreadMetadata>;
}): RoomEntityThreadsValue;
export type RoomEntityThreadsGateProps = PropsWithChildren<{
    filter: Partial<ThreadMetadata>;
    roomId: string;
}>;
/**
 * Wraps children in `RoomProvider` + room `useThreads` for `filter` and exposes results
 * via `useRoomEntityThreads()`. Callers that should not connect should not mount this gate
 * (e.g. early-return and render content without it).
 */
export declare function RoomEntityThreadsGate({ roomId, filter, children, }: RoomEntityThreadsGateProps): import("react/jsx-runtime").JSX.Element;
