import type { NotesService } from '../notes/service.js'; import type { ProjectService } from '../projects/project-service.js'; import type { CreateDiscussionInput, DiscussionCaptureSettings, DiscussionDetail, DiscussionListResult, DiscussionMetrics, DiscussionTranscript, ListDiscussionsQuery } from './types.js'; export declare const DISCUSSION_AUDIO_MAX_BYTES: number; export declare const DISCUSSION_SEGMENT_MAX_BYTES: number; export declare const DISCUSSION_MAX_DURATION_MS: number; export declare class DiscussionServiceError extends Error { readonly code: 'invalid_input' | 'not_found' | 'conflict'; constructor(code: 'invalid_input' | 'not_found' | 'conflict', message: string); } export declare class DiscussionService { private readonly notes; private readonly projects; private readonly emit?; private readonly createsInFlight; private readonly mutationTails; private readonly objectLinks; constructor(notes: NotesService, projects: ProjectService, emit?: (type: string, payload: unknown) => void); settings(): DiscussionCaptureSettings; acknowledgeConsent(policyVersion: number): DiscussionCaptureSettings; create(input: CreateDiscussionInput): Promise; private createOnce; get(id: string): Promise; getByNoteId(noteId: string): Promise; list(query?: ListDiscussionsQuery): DiscussionListResult; metrics(): DiscussionMetrics; transcript(id: string): DiscussionTranscript | null; uploadSegment(input: { discussionId: string; sequence: number; file: { buffer: Buffer; mimeType: string; }; startedAtMs: number; endedAtMs: number; sha256: string; }): DiscussionTranscript; correctSegment(id: string, sequence: number, displayText: string, expectedRevision: number): DiscussionTranscript; uploadRecording(id: string, file: { name: string; buffer: Buffer; mimeType: string; }, durationMs: number): Promise; stop(id: string, lastSequence: number, durationMs: number): Promise; retry(id: string): Promise; cancel(id: string): Promise; deleteAudio(id: string): Promise; unlinkInferredProject(id: string): Promise; private detail; private enqueueMutation; }