/**
 * Right now, a11y in ChatView does one thing: it provides correct ARIA
 * relationships for tabs.
 *
 * Specifically:
 * - ChatView.Selector is role="tablist".
 * - Each selector button is role="tab" with:
 *   - unique id
 *   - aria-controls=<panel-id>
 *   - aria-selected
 *   - tabIndex=0 (all tabs tabbable)
 * - Active panel container is role="tabpanel" with:
 *   - id=<panel-id>
 *   - aria-labelledby=<tab-id>
 *
 * The a11y helper module exists to generate and share those tab/panel IDs per
 * ChatView instance, so tab ↔ tabpanel linkage stays correct and collision-safe
 * when multiple ChatViews exist.
 */
export type ChatViewA11yContextValue = {
    chatViewPanelIds: Record<'channels' | 'threads', string>;
    chatViewTabIds: Record<'channels' | 'threads', string>;
};
export declare const DEFAULT_CHAT_VIEW_A11Y_CONTEXT_VALUE: ChatViewA11yContextValue;
export declare const createChatViewA11yContextValue: (chatViewId: string) => ChatViewA11yContextValue;
//# sourceMappingURL=ChatView.a11y.utility.d.ts.map