/*
 * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
 */

import { classifiersClassify } from "../funcs/classifiersClassify.js";
import { classifiersClassifyChat } from "../funcs/classifiersClassifyChat.js";
import { classifiersModerate } from "../funcs/classifiersModerate.js";
import { classifiersModerateChat } from "../funcs/classifiersModerateChat.js";
import { ClientSDK, RequestOptions } from "../lib/sdks.js";
import * as components from "../models/components/index.js";
import { unwrapAsync } from "../types/fp.js";

export class Classifiers extends ClientSDK {
  /**
   * Moderations
   */
  async moderate(
    request: components.ClassificationRequest,
    options?: RequestOptions,
  ): Promise<components.ModerationResponse> {
    return unwrapAsync(classifiersModerate(
      this,
      request,
      options,
    ));
  }

  /**
   * Chat Moderations
   */
  async moderateChat(
    request: components.ChatModerationRequest,
    options?: RequestOptions,
  ): Promise<components.ModerationResponse> {
    return unwrapAsync(classifiersModerateChat(
      this,
      request,
      options,
    ));
  }

  /**
   * Classifications
   */
  async classify(
    request: components.ClassificationRequest,
    options?: RequestOptions,
  ): Promise<components.ClassificationResponse> {
    return unwrapAsync(classifiersClassify(
      this,
      request,
      options,
    ));
  }

  /**
   * Chat Classifications
   */
  async classifyChat(
    request: components.ChatClassificationRequest,
    options?: RequestOptions,
  ): Promise<components.ClassificationResponse> {
    return unwrapAsync(classifiersClassifyChat(
      this,
      request,
      options,
    ));
  }
}
