export interface SpeakerFingerprint { readonly bands: readonly number[]; readonly rms: number; readonly zcr: number; } export interface PrimarySpeakerGateConfig { readonly enabled?: boolean; readonly similarityThreshold?: number; readonly echoDominanceMargin?: number; readonly onDecision?: (decision: PrimarySpeakerGateDecision) => void; } export interface PrimarySpeakerGateDecision { readonly contextId: string; readonly signal: "primary_speaker" | "echo_rejected"; readonly accepted: boolean; readonly frameCount: number; readonly primaryHits: number; readonly echoRejectedFrames: number; } export declare class PrimarySpeakerGate { private readonly enabled; private readonly similarityThreshold; private readonly echoDominanceMargin; private readonly onDecision?; private profile; private enrollFrames; private bargeInFrames; private assistantProfile; constructor(config?: PrimarySpeakerGateConfig); isEnabled(): boolean; hasProfile(): boolean; enrollUserTurnChunk(pcm: Uint8Array): void; lockProfileFromFirstTurn(): void; beginBargeInWindow(): void; observeBargeInChunk(pcm: Uint8Array): void; observeAssistantPlayout(pcm: Uint8Array): void; shouldCommitBargeIn(contextId?: string): boolean; resetBargeInWindow(): void; } export declare function extractSpeakerFingerprint(pcm: Uint8Array): SpeakerFingerprint | null; export declare function fingerprintSimilarity(a: SpeakerFingerprint, b: SpeakerFingerprint): number; //# sourceMappingURL=primary-speaker-gate.d.ts.map