import type { PipelineBus } from "../pipeline-bus.js"; import type { InteractionDecision, InteractionObservation, InteractionPolicy } from "../interaction-policy.js"; import { PrimarySpeakerGate } from "../primary-speaker-gate.js"; import { TtsPlayoutClock } from "../tts-playout-clock.js"; import { TurnArbiter } from "../turn-arbiter.js"; export interface RuleBasedInteractionPolicyDeps { readonly bus: PipelineBus; readonly primarySpeakerGate: PrimarySpeakerGate; readonly ttsPlayout: TtsPlayoutClock; readonly minInterruptionMs: number; /** When true, the underlying TurnArbiter emits duck/resume signals during barge-in evaluation. */ readonly pauseThenResolveBargeIn?: boolean; /** Tenant-level backchannel knobs. Default (undefined) = current behavior (`mm_hmm`). */ readonly backchannel?: { readonly enabled?: boolean; readonly cues?: readonly string[]; }; } export declare class RuleBasedInteractionPolicy implements InteractionPolicy { readonly arbiter: TurnArbiter; private readonly ttsPlayout; private readonly backchannelConfig; private pending; private bargeInAudioConsumed; private delegateGapOpen; private delegateCuePlayed; private userSpeaking; constructor(deps: RuleBasedInteractionPolicyDeps); observe(obs: InteractionObservation): readonly InteractionDecision[]; private handleDelegateState; private depsTtsActive; reset(_contextId: string): void; takeBargeInAudioConsumed(): boolean; } //# sourceMappingURL=rule-based.d.ts.map