content: package org.alien4cloud.tosca.catalog.repository;
  
  import java.nio.file.Path;
  
  import org.alien4cloud.tosca.model.Csar;
  
  /**
   * Interface for all CSAR repositories
   */
  public interface ICsarRepositry {
      /**
       * Store a new csar in the repository from the content of the TOSCA yaml file.
       *
       * @param csar The archive to store.
       * @param yaml The content of the TOSCA yaml file.
       */
      void storeCSAR(Csar csar, String yaml);
  
      /**
       * Store an CSAR into the repository. This method will perform a move of the temporary file to save IO disk operations
       *
       * @param csar The archive to store.
       * @param tmpPath the path to the temporary directory where the CSAR is located. The file will be moved to its new location inside the repository.
       */
      void storeCSAR(Csar csar, Path tmpPath);
  
      /**
       * Get a CSAR stored into the repository
       *
       * @param name The name of the csar.
       * @param version The version of the CSAR
       * @return The path to the zipped csar file.
       */
      Path getCSAR(String name, String version);
  
      /**
       * Get the path of the expanded directory in which the CSAR is stored.
       *
       * @param name The name of the csar.
       * @param version The version of the CSAR
       * @return The path to the expended csar file.
       */
      Path getExpandedCSAR(String name, String version);
  
      /**
       * Update the content of zip and json content file from the actual content of the expanded directory.
       * 
       * @param name The name of the archive.
       * @param version The version of the archive.
       */
      void updateFromExpanded(String name, String version);
  
      /**
       * Delete an archive from the local repository.
       *
       * @param name The archive to delete.
       * @param version The version of the archive to delete.
       */
      void removeCSAR(String name, String version);
  }