/** * @license * Copyright 2026 Alibaba Group Holding Limited * Copyright 2026 Qwen * SPDX-License-Identifier: Apache-2.0 * Adapted to TypeScript from qwen-omni-realtime-agent; modified for Qwen Live Harness. */ import { type MemoryConfig } from './config.js'; export interface DialogueTurn { turnIdx: number; userText: string; userTs: string; userEpoch: number; asstText: string; asstTs: string; asstEpoch: number; interrupted: boolean; provisionalAnswer: boolean; } export interface DialogueSegment { turns: DialogueTurn[]; cutReason: string; } export interface RecordResult { turn?: DialogueTurn; segment?: DialogueSegment; } export declare function formatTimestamp(moment: Date): string; export declare class DialogueRecorder { private readonly config; private nextTurnIdx; private pending?; private tail; constructor(config?: MemoryConfig['segment'], firstTurnIdx?: number); get pendingTurn(): DialogueTurn | undefined; get tailTurns(): DialogueTurn[]; onUserText(text: unknown, moment?: Date): RecordResult; onAssistantText(text: unknown, options?: { source?: string; interrupted?: boolean; moment?: Date; }): RecordResult; flush(): RecordResult; cutTail(reason?: string): DialogueSegment | undefined; private closePending; private cutReasonFor; }