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

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

export class Track extends ClientSDK {
  /**
   * Track a lead
   *
   * @remarks
   * Track a lead for a short link.
   */
  async lead(
    request?: operations.TrackLeadRequestBody | undefined,
    options?: RequestOptions,
  ): Promise<operations.TrackLeadResponseBody> {
    return unwrapAsync(trackLead(
      this,
      request,
      options,
    ));
  }

  /**
   * Track a sale
   *
   * @remarks
   * Track a sale for a short link.
   */
  async sale(
    request?: operations.TrackSaleRequestBody | undefined,
    options?: RequestOptions,
  ): Promise<operations.TrackSaleResponseBody> {
    return unwrapAsync(trackSale(
      this,
      request,
      options,
    ));
  }
}
