/**
 * Copyright IBM Corp. 2024, 2025
 */

import { ChangedApimFile } from '../../apic-mode/models/apic-file-changes.js';

export interface IStudioApimProjectIndexedDbHandler {
  /**
   * Add a changed APIM file to the datastore
   * @param key The key to store the file under
   * @param changedFile The changed file data
   */
  addChangedApimFile(key: string, changedFile: ChangedApimFile): Promise<void>;

  /**
   * Get a changed APIM file from the datastore
   * @param key The key to retrieve the file from
   */
  getChangedApimFile(key: string): Promise<ChangedApimFile | void>;

  /**
   * Delete a changed APIM file from the datastore
   * @param key The key of the file to delete
   */
  deleteChangedApimFile(key: string): Promise<void>;

  /**
   * Get all changed APIM files from the datastore
   */
  getAllChangedApimFiles(): Promise<Record<string, ChangedApimFile>>;
}
