import { i as OpenClawConfig } from "./types.openclaw-DrqwJL_y.js";

//#region src/meeting-notes/provider-types.d.ts
type MeetingNotesSourceKind = "live-audio" | "live-caption" | "posthoc-transcript" | "recording-stt";
type MeetingNotesSourceLocator = {
  providerId: string;
  kind?: MeetingNotesSourceKind;
  accountId?: string;
  guildId?: string;
  channelId?: string;
  meetingUrl?: string;
  threadTs?: string;
  fileId?: string;
  [key: string]: string | undefined;
};
type MeetingNotesParticipant = {
  id?: string;
  label: string;
};
type MeetingNotesUtterance = {
  id?: string;
  sessionId?: string;
  startedAt?: string;
  endedAt?: string;
  speaker?: MeetingNotesParticipant;
  text: string;
  final?: boolean;
  metadata?: Record<string, unknown>;
};
type MeetingNotesSessionDescriptor = {
  sessionId: string;
  title?: string;
  source: MeetingNotesSourceLocator;
  startedAt: string;
  stoppedAt?: string;
  metadata?: Record<string, unknown>;
};
type MeetingNotesStartRequest = {
  cfg?: OpenClawConfig;
  session: MeetingNotesSessionDescriptor;
  abortSignal?: AbortSignal;
  startupWaitMs?: number;
  onUtterance: (utterance: MeetingNotesUtterance) => void | Promise<void>;
  onStatus?: (status: MeetingNotesSourceStatus) => void | Promise<void>;
};
type MeetingNotesStartResult = {
  ok: true;
  session: MeetingNotesSessionDescriptor;
} | {
  ok: false;
  error: string;
};
type MeetingNotesStopRequest = {
  cfg?: OpenClawConfig;
  sessionId: string;
  source: MeetingNotesSourceLocator;
  reason?: string;
};
type MeetingNotesStopResult = {
  ok: true;
  sessionId: string;
  stoppedAt?: string;
} | {
  ok: false;
  error: string;
};
type MeetingNotesSourceStatus = {
  sessionId?: string;
  active: boolean;
  message?: string;
  source?: MeetingNotesSourceLocator;
};
type MeetingNotesImportRequest = {
  cfg?: OpenClawConfig;
  session: MeetingNotesSessionDescriptor;
  text: string;
  speakerLabel?: string;
};
type MeetingNotesSourceProviderPlugin = {
  id: string;
  aliases?: readonly string[];
  name: string;
  sourceKinds: readonly MeetingNotesSourceKind[];
  start?: (request: MeetingNotesStartRequest) => Promise<MeetingNotesStartResult>;
  stop?: (request: MeetingNotesStopRequest) => Promise<MeetingNotesStopResult>;
  status?: (source: MeetingNotesSourceLocator, cfg?: OpenClawConfig) => Promise<MeetingNotesSourceStatus[]>;
  importTranscript?: (request: MeetingNotesImportRequest) => Promise<MeetingNotesUtterance[]>;
};
//#endregion
export { MeetingNotesSourceLocator as a, MeetingNotesStartRequest as c, MeetingNotesStopResult as d, MeetingNotesUtterance as f, MeetingNotesSourceKind as i, MeetingNotesStartResult as l, MeetingNotesParticipant as n, MeetingNotesSourceProviderPlugin as o, MeetingNotesSessionDescriptor as r, MeetingNotesSourceStatus as s, MeetingNotesImportRequest as t, MeetingNotesStopRequest as u };