import type { ArkmeRecordingSpeakerCandidate } from '../types.js'; import type { UnmarkedSpeakerRow } from './recognized-speaker-order.js'; export interface SpeakerEntrySnapshot { total?: number; newCount?: number; checkedAt: number; } type LocalStorage = Pick; export declare function markedSpeakerKeys(options: readonly ArkmeRecordingSpeakerCandidate[]): string[]; /** Only complete identity snapshots can establish a baseline or produce a precise delta. * A removed identity may be a merge/recluster; without lineage we suppress ambiguous * additions for that transition rather than presenting a false "new person". */ export declare class RecognizedSpeakerTracker { private readonly getStorage; private readonly records; private readonly snapshots; private readonly listeners; constructor(getStorage?: () => LocalStorage | undefined); subscribe: (listener: () => void) => (() => void); get: (account: string | undefined) => SpeakerEntrySnapshot; private emit; private read; private save; setTotal(account: string, total: number): void; uncertain(account: string): void; acknowledge(account: string): void; observe(account: string, options: readonly ArkmeRecordingSpeakerCandidate[], candidates: readonly UnmarkedSpeakerRow[], viewed?: boolean): void; clearSession(): void; } export declare const recognizedSpeakerTracker: RecognizedSpeakerTracker; export {}; //# sourceMappingURL=recognized-speaker-tracker.d.ts.map