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

import { storageCreateStorageStoresBlob } from "../funcs/storageCreateStorageStoresBlob.js";
import { storageDeleteStorageStoresBlobById } from "../funcs/storageDeleteStorageStoresBlobById.js";
import { storageGetStorageStoresById } from "../funcs/storageGetStorageStoresById.js";
import { ClientSDK, RequestOptions } from "../lib/sdks.js";
import {
  CreateStorageStoresBlobRequestBody,
  CreateStorageStoresBlobResponseBody,
} from "../models/createstoragestoresblobop.js";
import {
  DeleteStorageStoresBlobByIdRequest,
  DeleteStorageStoresBlobByIdResponseBody,
} from "../models/deletestoragestoresblobbyidop.js";
import {
  GetStorageStoresByIdRequest,
  GetStorageStoresByIdResponseBody,
} from "../models/getstoragestoresbyidop.js";
import { unwrapAsync } from "../types/fp.js";

export class Storage extends ClientSDK {
  /**
   * Get a store
   */
  async getStorageStoresById(
    request: GetStorageStoresByIdRequest,
    options?: RequestOptions,
  ): Promise<GetStorageStoresByIdResponseBody> {
    return unwrapAsync(storageGetStorageStoresById(
      this,
      request,
      options,
    ));
  }

  /**
   * Create a Blob store
   */
  async createStorageStoresBlob(
    request?: CreateStorageStoresBlobRequestBody | undefined,
    options?: RequestOptions,
  ): Promise<CreateStorageStoresBlobResponseBody> {
    return unwrapAsync(storageCreateStorageStoresBlob(
      this,
      request,
      options,
    ));
  }

  /**
   * Delete a Blob store
   */
  async deleteStorageStoresBlobById(
    request: DeleteStorageStoresBlobByIdRequest,
    options?: RequestOptions,
  ): Promise<DeleteStorageStoresBlobByIdResponseBody> {
    return unwrapAsync(storageDeleteStorageStoresBlobById(
      this,
      request,
      options,
    ));
  }
}
