// This file is auto-generated by @hey-api/openapi-ts

import type { CancelablePromise } from "./core/CancelablePromise";
import type { BaseHttpRequest } from "./core/BaseHttpRequest";
import type {
  MetricsResponse,
  V1RoomsListData,
  V1RoomsListResponse,
  V1RoomsCreateData,
  V1RoomsCreateResponse,
  V1RoomsUpdateData,
  V1RoomsUpdateResponse,
  V1RoomsDeleteData,
  V1RoomsDeleteResponse,
  V1RoomsCreateMeetingData,
  V1RoomsCreateMeetingResponse,
  V1TranscriptsListData,
  V1TranscriptsListResponse,
  V1TranscriptsCreateData,
  V1TranscriptsCreateResponse,
  V1TranscriptGetData,
  V1TranscriptGetResponse,
  V1TranscriptUpdateData,
  V1TranscriptUpdateResponse,
  V1TranscriptDeleteData,
  V1TranscriptDeleteResponse,
  V1TranscriptGetTopicsData,
  V1TranscriptGetTopicsResponse,
  V1TranscriptGetTopicsWithWordsData,
  V1TranscriptGetTopicsWithWordsResponse,
  V1TranscriptGetTopicsWithWordsPerSpeakerData,
  V1TranscriptGetTopicsWithWordsPerSpeakerResponse,
  V1TranscriptPostToZulipData,
  V1TranscriptPostToZulipResponse,
  V1TranscriptHeadAudioMp3Data,
  V1TranscriptHeadAudioMp3Response,
  V1TranscriptGetAudioMp3Data,
  V1TranscriptGetAudioMp3Response,
  V1TranscriptGetAudioWaveformData,
  V1TranscriptGetAudioWaveformResponse,
  V1TranscriptGetParticipantsData,
  V1TranscriptGetParticipantsResponse,
  V1TranscriptAddParticipantData,
  V1TranscriptAddParticipantResponse,
  V1TranscriptGetParticipantData,
  V1TranscriptGetParticipantResponse,
  V1TranscriptUpdateParticipantData,
  V1TranscriptUpdateParticipantResponse,
  V1TranscriptDeleteParticipantData,
  V1TranscriptDeleteParticipantResponse,
  V1TranscriptAssignSpeakerData,
  V1TranscriptAssignSpeakerResponse,
  V1TranscriptMergeSpeakerData,
  V1TranscriptMergeSpeakerResponse,
  V1TranscriptRecordUploadData,
  V1TranscriptRecordUploadResponse,
  V1TranscriptGetWebsocketEventsData,
  V1TranscriptGetWebsocketEventsResponse,
  V1TranscriptRecordWebrtcData,
  V1TranscriptRecordWebrtcResponse,
  V1TranscriptProcessData,
  V1TranscriptProcessResponse,
  V1UserMeResponse,
  V1ZulipGetStreamsResponse,
  V1ZulipGetTopicsData,
  V1ZulipGetTopicsResponse,
} from "./types.gen";

export class DefaultService {
  constructor(public readonly httpRequest: BaseHttpRequest) {}

  /**
   * Metrics
   * Endpoint that serves Prometheus metrics.
   * @returns unknown Successful Response
   * @throws ApiError
   */
  public metrics(): CancelablePromise<MetricsResponse> {
    return this.httpRequest.request({
      method: "GET",
      url: "/metrics",
    });
  }

  /**
   * Rooms List
   * @param data The data for the request.
   * @param data.page Page number
   * @param data.size Page size
   * @returns Page_Room_ Successful Response
   * @throws ApiError
   */
  public v1RoomsList(
    data: V1RoomsListData = {},
  ): CancelablePromise<V1RoomsListResponse> {
    return this.httpRequest.request({
      method: "GET",
      url: "/v1/rooms",
      query: {
        page: data.page,
        size: data.size,
      },
      errors: {
        422: "Validation Error",
      },
    });
  }

  /**
   * Rooms Create
   * @param data The data for the request.
   * @param data.requestBody
   * @returns Room Successful Response
   * @throws ApiError
   */
  public v1RoomsCreate(
    data: V1RoomsCreateData,
  ): CancelablePromise<V1RoomsCreateResponse> {
    return this.httpRequest.request({
      method: "POST",
      url: "/v1/rooms",
      body: data.requestBody,
      mediaType: "application/json",
      errors: {
        422: "Validation Error",
      },
    });
  }

  /**
   * Rooms Update
   * @param data The data for the request.
   * @param data.roomId
   * @param data.requestBody
   * @returns Room Successful Response
   * @throws ApiError
   */
  public v1RoomsUpdate(
    data: V1RoomsUpdateData,
  ): CancelablePromise<V1RoomsUpdateResponse> {
    return this.httpRequest.request({
      method: "PATCH",
      url: "/v1/rooms/{room_id}",
      path: {
        room_id: data.roomId,
      },
      body: data.requestBody,
      mediaType: "application/json",
      errors: {
        422: "Validation Error",
      },
    });
  }

  /**
   * Rooms Delete
   * @param data The data for the request.
   * @param data.roomId
   * @returns DeletionStatus Successful Response
   * @throws ApiError
   */
  public v1RoomsDelete(
    data: V1RoomsDeleteData,
  ): CancelablePromise<V1RoomsDeleteResponse> {
    return this.httpRequest.request({
      method: "DELETE",
      url: "/v1/rooms/{room_id}",
      path: {
        room_id: data.roomId,
      },
      errors: {
        422: "Validation Error",
      },
    });
  }

  /**
   * Rooms Create Meeting
   * @param data The data for the request.
   * @param data.roomName
   * @returns Meeting Successful Response
   * @throws ApiError
   */
  public v1RoomsCreateMeeting(
    data: V1RoomsCreateMeetingData,
  ): CancelablePromise<V1RoomsCreateMeetingResponse> {
    return this.httpRequest.request({
      method: "POST",
      url: "/v1/rooms/{room_name}/meeting",
      path: {
        room_name: data.roomName,
      },
      errors: {
        422: "Validation Error",
      },
    });
  }

  /**
   * Transcripts List
   * @param data The data for the request.
   * @param data.page Page number
   * @param data.size Page size
   * @returns Page_GetTranscript_ Successful Response
   * @throws ApiError
   */
  public v1TranscriptsList(
    data: V1TranscriptsListData = {},
  ): CancelablePromise<V1TranscriptsListResponse> {
    return this.httpRequest.request({
      method: "GET",
      url: "/v1/transcripts",
      query: {
        page: data.page,
        size: data.size,
      },
      errors: {
        422: "Validation Error",
      },
    });
  }

  /**
   * Transcripts Create
   * @param data The data for the request.
   * @param data.requestBody
   * @returns GetTranscript Successful Response
   * @throws ApiError
   */
  public v1TranscriptsCreate(
    data: V1TranscriptsCreateData,
  ): CancelablePromise<V1TranscriptsCreateResponse> {
    return this.httpRequest.request({
      method: "POST",
      url: "/v1/transcripts",
      body: data.requestBody,
      mediaType: "application/json",
      errors: {
        422: "Validation Error",
      },
    });
  }

  /**
   * Transcript Get
   * @param data The data for the request.
   * @param data.transcriptId
   * @returns GetTranscript Successful Response
   * @throws ApiError
   */
  public v1TranscriptGet(
    data: V1TranscriptGetData,
  ): CancelablePromise<V1TranscriptGetResponse> {
    return this.httpRequest.request({
      method: "GET",
      url: "/v1/transcripts/{transcript_id}",
      path: {
        transcript_id: data.transcriptId,
      },
      errors: {
        422: "Validation Error",
      },
    });
  }

  /**
   * Transcript Update
   * @param data The data for the request.
   * @param data.transcriptId
   * @param data.requestBody
   * @returns GetTranscript Successful Response
   * @throws ApiError
   */
  public v1TranscriptUpdate(
    data: V1TranscriptUpdateData,
  ): CancelablePromise<V1TranscriptUpdateResponse> {
    return this.httpRequest.request({
      method: "PATCH",
      url: "/v1/transcripts/{transcript_id}",
      path: {
        transcript_id: data.transcriptId,
      },
      body: data.requestBody,
      mediaType: "application/json",
      errors: {
        422: "Validation Error",
      },
    });
  }

  /**
   * Transcript Delete
   * @param data The data for the request.
   * @param data.transcriptId
   * @returns DeletionStatus Successful Response
   * @throws ApiError
   */
  public v1TranscriptDelete(
    data: V1TranscriptDeleteData,
  ): CancelablePromise<V1TranscriptDeleteResponse> {
    return this.httpRequest.request({
      method: "DELETE",
      url: "/v1/transcripts/{transcript_id}",
      path: {
        transcript_id: data.transcriptId,
      },
      errors: {
        422: "Validation Error",
      },
    });
  }

  /**
   * Transcript Get Topics
   * @param data The data for the request.
   * @param data.transcriptId
   * @returns GetTranscriptTopic Successful Response
   * @throws ApiError
   */
  public v1TranscriptGetTopics(
    data: V1TranscriptGetTopicsData,
  ): CancelablePromise<V1TranscriptGetTopicsResponse> {
    return this.httpRequest.request({
      method: "GET",
      url: "/v1/transcripts/{transcript_id}/topics",
      path: {
        transcript_id: data.transcriptId,
      },
      errors: {
        422: "Validation Error",
      },
    });
  }

  /**
   * Transcript Get Topics With Words
   * @param data The data for the request.
   * @param data.transcriptId
   * @returns GetTranscriptTopicWithWords Successful Response
   * @throws ApiError
   */
  public v1TranscriptGetTopicsWithWords(
    data: V1TranscriptGetTopicsWithWordsData,
  ): CancelablePromise<V1TranscriptGetTopicsWithWordsResponse> {
    return this.httpRequest.request({
      method: "GET",
      url: "/v1/transcripts/{transcript_id}/topics/with-words",
      path: {
        transcript_id: data.transcriptId,
      },
      errors: {
        422: "Validation Error",
      },
    });
  }

  /**
   * Transcript Get Topics With Words Per Speaker
   * @param data The data for the request.
   * @param data.transcriptId
   * @param data.topicId
   * @returns GetTranscriptTopicWithWordsPerSpeaker Successful Response
   * @throws ApiError
   */
  public v1TranscriptGetTopicsWithWordsPerSpeaker(
    data: V1TranscriptGetTopicsWithWordsPerSpeakerData,
  ): CancelablePromise<V1TranscriptGetTopicsWithWordsPerSpeakerResponse> {
    return this.httpRequest.request({
      method: "GET",
      url: "/v1/transcripts/{transcript_id}/topics/{topic_id}/words-per-speaker",
      path: {
        transcript_id: data.transcriptId,
        topic_id: data.topicId,
      },
      errors: {
        422: "Validation Error",
      },
    });
  }

  /**
   * Transcript Post To Zulip
   * @param data The data for the request.
   * @param data.transcriptId
   * @param data.stream
   * @param data.topic
   * @param data.includeTopics
   * @returns unknown Successful Response
   * @throws ApiError
   */
  public v1TranscriptPostToZulip(
    data: V1TranscriptPostToZulipData,
  ): CancelablePromise<V1TranscriptPostToZulipResponse> {
    return this.httpRequest.request({
      method: "POST",
      url: "/v1/transcripts/{transcript_id}/zulip",
      path: {
        transcript_id: data.transcriptId,
      },
      query: {
        stream: data.stream,
        topic: data.topic,
        include_topics: data.includeTopics,
      },
      errors: {
        422: "Validation Error",
      },
    });
  }

  /**
   * Transcript Get Audio Mp3
   * @param data The data for the request.
   * @param data.transcriptId
   * @param data.token
   * @returns unknown Successful Response
   * @throws ApiError
   */
  public v1TranscriptHeadAudioMp3(
    data: V1TranscriptHeadAudioMp3Data,
  ): CancelablePromise<V1TranscriptHeadAudioMp3Response> {
    return this.httpRequest.request({
      method: "HEAD",
      url: "/v1/transcripts/{transcript_id}/audio/mp3",
      path: {
        transcript_id: data.transcriptId,
      },
      query: {
        token: data.token,
      },
      errors: {
        422: "Validation Error",
      },
    });
  }

  /**
   * Transcript Get Audio Mp3
   * @param data The data for the request.
   * @param data.transcriptId
   * @param data.token
   * @returns unknown Successful Response
   * @throws ApiError
   */
  public v1TranscriptGetAudioMp3(
    data: V1TranscriptGetAudioMp3Data,
  ): CancelablePromise<V1TranscriptGetAudioMp3Response> {
    return this.httpRequest.request({
      method: "GET",
      url: "/v1/transcripts/{transcript_id}/audio/mp3",
      path: {
        transcript_id: data.transcriptId,
      },
      query: {
        token: data.token,
      },
      errors: {
        422: "Validation Error",
      },
    });
  }

  /**
   * Transcript Get Audio Waveform
   * @param data The data for the request.
   * @param data.transcriptId
   * @returns AudioWaveform Successful Response
   * @throws ApiError
   */
  public v1TranscriptGetAudioWaveform(
    data: V1TranscriptGetAudioWaveformData,
  ): CancelablePromise<V1TranscriptGetAudioWaveformResponse> {
    return this.httpRequest.request({
      method: "GET",
      url: "/v1/transcripts/{transcript_id}/audio/waveform",
      path: {
        transcript_id: data.transcriptId,
      },
      errors: {
        422: "Validation Error",
      },
    });
  }

  /**
   * Transcript Get Participants
   * @param data The data for the request.
   * @param data.transcriptId
   * @returns Participant Successful Response
   * @throws ApiError
   */
  public v1TranscriptGetParticipants(
    data: V1TranscriptGetParticipantsData,
  ): CancelablePromise<V1TranscriptGetParticipantsResponse> {
    return this.httpRequest.request({
      method: "GET",
      url: "/v1/transcripts/{transcript_id}/participants",
      path: {
        transcript_id: data.transcriptId,
      },
      errors: {
        422: "Validation Error",
      },
    });
  }

  /**
   * Transcript Add Participant
   * @param data The data for the request.
   * @param data.transcriptId
   * @param data.requestBody
   * @returns Participant Successful Response
   * @throws ApiError
   */
  public v1TranscriptAddParticipant(
    data: V1TranscriptAddParticipantData,
  ): CancelablePromise<V1TranscriptAddParticipantResponse> {
    return this.httpRequest.request({
      method: "POST",
      url: "/v1/transcripts/{transcript_id}/participants",
      path: {
        transcript_id: data.transcriptId,
      },
      body: data.requestBody,
      mediaType: "application/json",
      errors: {
        422: "Validation Error",
      },
    });
  }

  /**
   * Transcript Get Participant
   * @param data The data for the request.
   * @param data.transcriptId
   * @param data.participantId
   * @returns Participant Successful Response
   * @throws ApiError
   */
  public v1TranscriptGetParticipant(
    data: V1TranscriptGetParticipantData,
  ): CancelablePromise<V1TranscriptGetParticipantResponse> {
    return this.httpRequest.request({
      method: "GET",
      url: "/v1/transcripts/{transcript_id}/participants/{participant_id}",
      path: {
        transcript_id: data.transcriptId,
        participant_id: data.participantId,
      },
      errors: {
        422: "Validation Error",
      },
    });
  }

  /**
   * Transcript Update Participant
   * @param data The data for the request.
   * @param data.transcriptId
   * @param data.participantId
   * @param data.requestBody
   * @returns Participant Successful Response
   * @throws ApiError
   */
  public v1TranscriptUpdateParticipant(
    data: V1TranscriptUpdateParticipantData,
  ): CancelablePromise<V1TranscriptUpdateParticipantResponse> {
    return this.httpRequest.request({
      method: "PATCH",
      url: "/v1/transcripts/{transcript_id}/participants/{participant_id}",
      path: {
        transcript_id: data.transcriptId,
        participant_id: data.participantId,
      },
      body: data.requestBody,
      mediaType: "application/json",
      errors: {
        422: "Validation Error",
      },
    });
  }

  /**
   * Transcript Delete Participant
   * @param data The data for the request.
   * @param data.transcriptId
   * @param data.participantId
   * @returns DeletionStatus Successful Response
   * @throws ApiError
   */
  public v1TranscriptDeleteParticipant(
    data: V1TranscriptDeleteParticipantData,
  ): CancelablePromise<V1TranscriptDeleteParticipantResponse> {
    return this.httpRequest.request({
      method: "DELETE",
      url: "/v1/transcripts/{transcript_id}/participants/{participant_id}",
      path: {
        transcript_id: data.transcriptId,
        participant_id: data.participantId,
      },
      errors: {
        422: "Validation Error",
      },
    });
  }

  /**
   * Transcript Assign Speaker
   * @param data The data for the request.
   * @param data.transcriptId
   * @param data.requestBody
   * @returns SpeakerAssignmentStatus Successful Response
   * @throws ApiError
   */
  public v1TranscriptAssignSpeaker(
    data: V1TranscriptAssignSpeakerData,
  ): CancelablePromise<V1TranscriptAssignSpeakerResponse> {
    return this.httpRequest.request({
      method: "PATCH",
      url: "/v1/transcripts/{transcript_id}/speaker/assign",
      path: {
        transcript_id: data.transcriptId,
      },
      body: data.requestBody,
      mediaType: "application/json",
      errors: {
        422: "Validation Error",
      },
    });
  }

  /**
   * Transcript Merge Speaker
   * @param data The data for the request.
   * @param data.transcriptId
   * @param data.requestBody
   * @returns SpeakerAssignmentStatus Successful Response
   * @throws ApiError
   */
  public v1TranscriptMergeSpeaker(
    data: V1TranscriptMergeSpeakerData,
  ): CancelablePromise<V1TranscriptMergeSpeakerResponse> {
    return this.httpRequest.request({
      method: "PATCH",
      url: "/v1/transcripts/{transcript_id}/speaker/merge",
      path: {
        transcript_id: data.transcriptId,
      },
      body: data.requestBody,
      mediaType: "application/json",
      errors: {
        422: "Validation Error",
      },
    });
  }

  /**
   * Transcript Record Upload
   * @param data The data for the request.
   * @param data.transcriptId
   * @param data.chunkNumber
   * @param data.totalChunks
   * @param data.formData
   * @returns unknown Successful Response
   * @throws ApiError
   */
  public v1TranscriptRecordUpload(
    data: V1TranscriptRecordUploadData,
  ): CancelablePromise<V1TranscriptRecordUploadResponse> {
    return this.httpRequest.request({
      method: "POST",
      url: "/v1/transcripts/{transcript_id}/record/upload",
      path: {
        transcript_id: data.transcriptId,
      },
      query: {
        chunk_number: data.chunkNumber,
        total_chunks: data.totalChunks,
      },
      formData: data.formData,
      mediaType: "multipart/form-data",
      errors: {
        422: "Validation Error",
      },
    });
  }

  /**
   * Transcript Get Websocket Events
   * @param data The data for the request.
   * @param data.transcriptId
   * @returns unknown Successful Response
   * @throws ApiError
   */
  public v1TranscriptGetWebsocketEvents(
    data: V1TranscriptGetWebsocketEventsData,
  ): CancelablePromise<V1TranscriptGetWebsocketEventsResponse> {
    return this.httpRequest.request({
      method: "GET",
      url: "/v1/transcripts/{transcript_id}/events",
      path: {
        transcript_id: data.transcriptId,
      },
      errors: {
        422: "Validation Error",
      },
    });
  }

  /**
   * Transcript Record Webrtc
   * @param data The data for the request.
   * @param data.transcriptId
   * @param data.requestBody
   * @returns unknown Successful Response
   * @throws ApiError
   */
  public v1TranscriptRecordWebrtc(
    data: V1TranscriptRecordWebrtcData,
  ): CancelablePromise<V1TranscriptRecordWebrtcResponse> {
    return this.httpRequest.request({
      method: "POST",
      url: "/v1/transcripts/{transcript_id}/record/webrtc",
      path: {
        transcript_id: data.transcriptId,
      },
      body: data.requestBody,
      mediaType: "application/json",
      errors: {
        422: "Validation Error",
      },
    });
  }

  /**
   * Transcript Process
   * @param data The data for the request.
   * @param data.transcriptId
   * @returns unknown Successful Response
   * @throws ApiError
   */
  public v1TranscriptProcess(
    data: V1TranscriptProcessData,
  ): CancelablePromise<V1TranscriptProcessResponse> {
    return this.httpRequest.request({
      method: "POST",
      url: "/v1/transcripts/{transcript_id}/process",
      path: {
        transcript_id: data.transcriptId,
      },
      errors: {
        422: "Validation Error",
      },
    });
  }

  /**
   * User Me
   * @returns unknown Successful Response
   * @throws ApiError
   */
  public v1UserMe(): CancelablePromise<V1UserMeResponse> {
    return this.httpRequest.request({
      method: "GET",
      url: "/v1/me",
    });
  }

  /**
   * Zulip Get Streams
   * Get all Zulip streams.
   * @returns Stream Successful Response
   * @throws ApiError
   */
  public v1ZulipGetStreams(): CancelablePromise<V1ZulipGetStreamsResponse> {
    return this.httpRequest.request({
      method: "GET",
      url: "/v1/zulip/streams",
    });
  }

  /**
   * Zulip Get Topics
   * Get all topics for a specific Zulip stream.
   * @param data The data for the request.
   * @param data.streamId
   * @returns Topic Successful Response
   * @throws ApiError
   */
  public v1ZulipGetTopics(
    data: V1ZulipGetTopicsData,
  ): CancelablePromise<V1ZulipGetTopicsResponse> {
    return this.httpRequest.request({
      method: "GET",
      url: "/v1/zulip/streams/{stream_id}/topics",
      path: {
        stream_id: data.streamId,
      },
      errors: {
        422: "Validation Error",
      },
    });
  }
}
