import type { VadAudioPacket } from "./packets.js"; import type { TurnEndOwner } from "./packets.js"; import type { PipelineBus } from "./pipeline-bus.js"; import type { InteractionObservation, InteractionPolicy } from "./interaction-policy.js"; import type { TurnArbiter } from "./turn-arbiter.js"; import { type Scheduler } from "./scheduler.js"; export interface InteractionCaps { readonly emitsBackchannel?: boolean; } export declare class InteractionCoordinator { private readonly deps; private readonly disposers; private readonly pendingTakeTurns; private readonly transcriptsByContext; private readonly interimByContext; private readonly scheduler; constructor(deps: { bus: PipelineBus; policy: InteractionPolicy; executor: TurnArbiter; caps: InteractionCaps; scheduler?: Scheduler; isUserSpeaking?: () => boolean; isTtsActive?: () => boolean; hasCueAsset?: (cueId: string) => boolean; onBackchannelEmitted?: (contextId: string) => void; /** Session's configured endpointing owner — labels every eos this coordinator emits. */ endpointingOwner?: TurnEndOwner; /** True when the STT force-finalize watchdog already fired for this context. */ wasForceFinalized?: (contextId: string) => boolean; }); initialize(): void; dispose(): void; observe(obs: InteractionObservation): void; observeBargeInAudio(pkt: VadAudioPacket): boolean; private apply; private armTakeTurn; private handleSttInterim; private handleSttResult; private tryScheduleTurnComplete; private revokePendingTakeTurn; private applyBackchannel; reset(contextId: string): void; } //# sourceMappingURL=interaction-coordinator.d.ts.map