package com.l7tech.server.licensing;

import com.l7tech.gateway.common.InvalidLicenseException;
import com.l7tech.gateway.common.licensing.CompositeLicense;
import com.l7tech.gateway.common.licensing.CompositeLicenseManager;
import com.l7tech.gateway.common.licensing.FeatureLicense;
import com.l7tech.gateway.common.licensing.LicenseDocument;
import com.l7tech.gateway.common.licensing.LicenseInstallationException;
import com.l7tech.gateway.common.licensing.LicenseRemovalException;
import org.springframework.transaction.annotation.Transactional;

public interface UpdatableCompositeLicenseManager extends CompositeLicenseManager {
   @Transactional(readOnly = true)
   CompositeLicense getCurrentCompositeLicense();

   FeatureLicense createFeatureLicense(LicenseDocument var1) throws InvalidLicenseException;

   void validateLicense(FeatureLicense var1) throws InvalidLicenseException;

   void installLicense(FeatureLicense var1) throws LicenseInstallationException;

   void uninstallLicense(LicenseDocument var1) throws LicenseRemovalException;
}
