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

import { internalCreateDeployment } from "../funcs/internalCreateDeployment.js";
import { internalGetDeployment } from "../funcs/internalGetDeployment.js";
import { ClientSDK, RequestOptions } from "../lib/sdks.js";
import * as components from "../models/components/index.js";
import { unwrapAsync } from "../types/fp.js";

export class Internal extends ClientSDK {
  /**
   * Create deployment
   *
   * @remarks
   * **INTERNAL** - This endpoint is internal and may change without notice.
   * Not recommended for production use.
   *
   * Creates a new deployment for a project using either a pre-built Docker image or build context.
   *
   * **Authentication**: Requires a valid root key with appropriate permissions.
   */
  async createDeployment(
    request: components.V2DeployCreateDeploymentRequestBody,
    options?: RequestOptions,
  ): Promise<components.V2DeployCreateDeploymentResponseBody> {
    return unwrapAsync(internalCreateDeployment(
      this,
      request,
      options,
    ));
  }

  /**
   * Get deployment
   *
   * @remarks
   * **INTERNAL** - This endpoint is internal and may change without notice.
   * Not recommended for production use.
   *
   * Retrieves deployment information including status, error messages, and steps.
   *
   * **Authentication**: Requires a valid root key with appropriate permissions.
   */
  async getDeployment(
    request: components.V2DeployGetDeploymentRequestBody,
    options?: RequestOptions,
  ): Promise<components.V2DeployGetDeploymentResponseBody> {
    return unwrapAsync(internalGetDeployment(
      this,
      request,
      options,
    ));
  }
}
