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

import { betaObservabilityLogsFetchOptions } from "../funcs/betaObservabilityLogsFetchOptions.js";
import { betaObservabilityLogsList } from "../funcs/betaObservabilityLogsList.js";
import { betaObservabilityLogsSearch } from "../funcs/betaObservabilityLogsSearch.js";
import { ClientSDK, RequestOptions } from "../lib/sdks.js";
import * as components from "../models/components/index.js";
import * as operations from "../models/operations/index.js";
import { unwrapAsync } from "../types/fp.js";

export class Logs extends ClientSDK {
  /**
   * Search logs
   */
  async search(
    request: operations.SearchLogsV1ObservabilityLogsSearchPostRequest,
    options?: RequestOptions,
  ): Promise<components.GetLogs> {
    return unwrapAsync(betaObservabilityLogsSearch(
      this,
      request,
      options,
    ));
  }

  /**
   * Get log field definitions
   */
  async list(
    options?: RequestOptions,
  ): Promise<components.GetLogFields> {
    return unwrapAsync(betaObservabilityLogsList(
      this,
      options,
    ));
  }

  /**
   * Get options for a log field
   */
  async fetchOptions(
    request:
      operations.GetLogFieldOptionsV1ObservabilityLogsFieldsFieldNameOptionsGetRequest,
    options?: RequestOptions,
  ): Promise<components.GetLogFieldOptions> {
    return unwrapAsync(betaObservabilityLogsFetchOptions(
      this,
      request,
      options,
    ));
  }
}
