package com.l7tech.server.policy;

import com.l7tech.objectmodel.Goid;
import com.l7tech.objectmodel.folder.Folder;
import com.l7tech.policy.CircularPolicyException;
import com.l7tech.policy.Policy;
import com.l7tech.policy.PolicyDeletionForbiddenException;
import com.l7tech.policy.PolicyType;
import java.util.List;
import java.util.Map;
import java.util.Set;

public interface PolicyCache {
   ServerPolicyHandle getServerPolicy(Policy var1);

   ServerPolicyHandle getServerPolicy(Goid var1);

   ServerPolicyHandle getServerPolicy(String var1);

   void validate(Policy var1) throws CircularPolicyException;

   void validateRemove(Goid var1) throws PolicyDeletionForbiddenException;

   void update(Policy var1);

   boolean remove(Goid var1);

   Set<String> getPoliciesByTypeAndTag(PolicyType var1, String var2);

   String registerGlobalPolicy(String var1, PolicyType var2, String var3, String var4);

   void unregisterGlobalPolicy(String var1);

   Set<Policy> findUsages(Goid var1);

   Map<Goid, Integer> getDependentVersions(Goid var1);

   String getUniquePolicyVersionIdentifer(Goid var1);

   PolicyMetadata getPolicyMetadata(Policy var1);

   PolicyMetadata getPolicyMetadata(Goid var1);

   PolicyMetadata getPolicyMetadataByGuid(String var1);

   boolean isStarted();

   List<Folder> getFolderPath(Goid var1);
}
