import type { ParsedAlwaysRespondConfig } from './config'; import type { Logger } from './types'; export interface WireAdapter { botUserId: string | null; getChats: (page: number, pageSize: number) => Promise>; getChatByID: (chatId: string) => Promise<{ chatType: number; title: string; } | null>; } export declare function normalizeTitle(raw: string): string; export type ResolverEvent = { kind: 'add'; chatId: string; userId: string; } | { kind: 'remove'; chatId: string; userId: string; } | { kind: 'removeChat'; chatId: string; } | { kind: 'rename'; chatId: string; title: string; } | { kind: 'createGroup'; chatId: string; }; export declare class AlwaysRespondResolver { private readonly wire; private readonly logger; private static readonly GET_CHATS_PAGE_SIZE; private static readonly GET_CHATS_BACKOFF_MS; private readonly configuredChatIds; private readonly configuredTitles; private readonly titleByChatId; private readonly titleResolvedChatIds; private queue; private draining; private buffering; private rebuildInFlight; constructor(parsed: ParsedAlwaysRespondConfig, wire: WireAdapter, logger: Logger); isAlwaysRespond: (chatId: string) => boolean; enqueueEvent(ev: ResolverEvent): void; rebuildFromWire(): Promise; private doRebuildFromWire; private drainQueue; private fetchChatByIDWithRetry; private setTitleAndActivate; private handleEvent; private warnIfDuplicate; private fetchAllChats; private fetchChatsPageWithRetry; private emitStartupWarnings; } //# sourceMappingURL=always-respond.d.ts.map