import type { ArkmeConversationDirectoryVisibility, ArkmeSourceItem } from '../types.js'; import { type ConversationListPreferenceEntry, type ConversationListPreferencePort } from './conversation-list-preference-service.js'; export interface ConversationDirectoryChatEntryPort { chatConversationListPreferenceEntry(sourceRef: string, signal?: AbortSignal): Promise; } export interface ConversationDirectoryBotEntryPort { botConversationListPreferenceEntry(botRef: string): Promise; openBotChat(botRef: string, options?: { signal?: AbortSignal; }): Promise; } export interface ConversationDirectoryVisibilityInvalidationPort { invalidateConversationListPreferenceForCurrentSession(): Promise; } /** Sidebar application service; raw source and Bot APIs remain unfiltered owner projections. */ export declare class ConversationDirectoryVisibilityService { private readonly preference; private readonly source; private readonly bot; private readonly invalidation; constructor(preference: ConversationListPreferencePort, source: ConversationDirectoryChatEntryPort, bot: ConversationDirectoryBotEntryPort, invalidation: ConversationDirectoryVisibilityInvalidationPort); query(sourceRefs: readonly string[], botRefs: readonly string[], signal?: AbortSignal): Promise; /** Host-only targeting metadata must never be returned by the public visibility query. */ queryAffected(sourceRefs: readonly string[], botRefs: readonly string[], expected: ReadonlyMap, signal: AbortSignal): Promise; private read; setVisibility(entryKind: 'source' | 'bot', entryRef: string, hidden: boolean, signal?: AbortSignal): Promise; restoreSource(source: ArkmeSourceItem, signal?: AbortSignal): Promise; openBotContactConversation(botRef: string, options?: { signal?: AbortSignal; }): Promise; /** Restores the exact owner identities when a Bot directory entry resolves from direct Bot to Chat. */ restoreBotConversation(previous: ConversationListPreferenceEntry, source: ArkmeSourceItem, signal?: AbortSignal): Promise; private restoreEntries; private resolveEntry; private invalidateBestEffort; } //# sourceMappingURL=conversation-directory-visibility-service.d.ts.map