import type { ArkmeDirectoryPage } from '../types.js'; export type RecognizedSpeakerOrder = 'frequent' | 'recent'; export type UnmarkedSpeakerRow = Extract; type PreferenceStorage = Pick; export declare function readRecognizedSpeakerOrder(accountKey: string, storage?: PreferenceStorage | undefined): RecognizedSpeakerOrder; export declare function writeRecognizedSpeakerOrder(accountKey: string, order: RecognizedSpeakerOrder, storage?: PreferenceStorage | undefined): void; export interface SpeakerOrderValue { key: string; name: string; dayCount?: number | undefined; lastSeenAt?: number | undefined; } /** Missing statistics sort last. Ties remain stable across refreshes and filters. */ export declare function compareRecognizedSpeakers(left: SpeakerOrderValue, right: SpeakerOrderValue, order: RecognizedSpeakerOrder): number; export interface SpeakerCandidateSnapshot { items: UnmarkedSpeakerRow[]; complete: boolean; projectionState: ArkmeDirectoryPage['projectionState']; } /** The upstream cursor has a fixed order. Read metadata pages before claiming global order. * Bound reads to the host's 2,000-candidate reference budget; never silently call a partial * traversal complete. No audio or per-speaker detail is loaded here. */ export declare function loadSpeakerCandidateSnapshot(loadPage: (cursor: string, signal: AbortSignal) => Promise, signal: AbortSignal, onProgress: (snapshot: SpeakerCandidateSnapshot) => void): Promise; export {}; //# sourceMappingURL=recognized-speaker-order.d.ts.map