import { ExternalConversation, SlackThreadGroup } from '../types/wire';
/**
 * Polling cadence for the linked-conversation refetch. Currently a
 * stopgap until VS's websocket setup lands ([[plan-slack-m1-phase-X]]
 * — Cross-repo dependency #10) — events don't push into the UI yet,
 * so we pull on a timer to keep inbound Slack messages visible. The
 * 5s default is chosen to be perceptually "live" without hammering
 * the backend; set this constant (or override via `refetchIntervalMs`
 * arg to `useLinkedConversation`) when ws ships and we want to drop
 * the timer.
 */
export declare const LINKED_CONV_POLL_INTERVAL_MS = 5000;
/**
 * Reads the linked Slack thread for a Hiver conversation, if any.
 * Returns `null` on 404 (no link yet) and surfaces other errors
 * normally so the panel can render the left-channel / 502 states.
 *
 * Used by SlackEmptyState (UI-1) to branch between the "Start" CTAs
 * and the LinkedConversationPanel (UI-5). Polls every
 * LINKED_CONV_POLL_INTERVAL_MS while the tab is mounted so inbound
 * Slack messages surface without a websocket — react-query pauses
 * the timer automatically when the tab is in the background, so
 * idle conversations don't burn requests.
 */
export declare function useLinkedConversation(hiverConvId: string, enabled?: boolean, refetchIntervalMs?: number): import('@tanstack/react-query').UseQueryResult<ExternalConversation | null, Error>;
/**
 * Channel mode (B4): lazily fetch a single thread's messages (root +
 * replies) when the user drills into it from the channel list. Enabled
 * only while a thread is open, so the channel list view never pays for
 * replies. Polls on the same cadence so live replies surface.
 */
export declare function useThread(hiverConvId: string, threadTs: string | null): import('@tanstack/react-query').UseQueryResult<SlackThreadGroup, Error>;
//# sourceMappingURL=linked-conv.d.ts.map