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

import { tagsGetTags } from "../funcs/tagsGetTags.js";
import { tagsGetTagTypes } from "../funcs/tagsGetTagTypes.js";
import { ClientSDK, RequestOptions } from "../lib/sdks.js";
import * as operations from "../models/operations/index.js";
import { unwrapAsync } from "../types/fp.js";

export class Tags extends ClientSDK {
  /**
   * Tags Search
   *
   * @remarks
   * Search for tags that are supported by the `filter.tags`, `exclude.tags`, and `signal.interests.tags parameters`.
   */
  async getTags(
    request?: operations.GetTagsRequest | undefined,
    options?: RequestOptions,
  ): Promise<operations.GetTagsResponse> {
    return unwrapAsync(tagsGetTags(
      this,
      request,
      options,
    ));
  }

  /**
   * Tag Types
   *
   * @remarks
   * Returns a list of tag types supported by each entity type. You can leverage this data with the Tags API to filter results by specific tag types.
   */
  async getTagTypes(
    request?: operations.GetTagTypesRequest | undefined,
    options?: RequestOptions,
  ): Promise<operations.GetTagTypesResponse> {
    return unwrapAsync(tagsGetTagTypes(
      this,
      request,
      options,
    ));
  }
}
