import {
  CloudStorageConfig,
  FileDeleteResponse,
  FileDownloadResponse,
  FileUploadResponse,
} from "../models/CloudStorageService.models";

abstract class CloudStorageService {
  private config: CloudStorageConfig;

  constructor(config: CloudStorageConfig) {
    this.config = config;
  }

  async uploadFileAsync(
    containerName: string,
    objectName: string
  ): Promise<FileUploadResponse> {
    throw new Error("uploadFileAsync method not implemented.");
  }

  async downloadFileAsync(
    containerName: string,
    objectName: string,
    versionId: string = ""
  ): Promise<FileDownloadResponse> {
    throw new Error("downloadFileAsync method not implemented.");
  }

  async deleteFileAsync(
    containerName: string,
    objectName: string
  ): Promise<FileDeleteResponse> {
    throw new Error("deleteFileAsync method not implemented.");
  }
}

export default CloudStorageService;
