package com.l7tech.server.search;

import com.l7tech.objectmodel.Entity;
import com.l7tech.objectmodel.EntityHeader;
import com.l7tech.objectmodel.FindException;
import com.l7tech.server.search.exceptions.CannotReplaceDependenciesException;
import com.l7tech.server.search.exceptions.CannotRetrieveDependenciesException;
import com.l7tech.server.search.objects.DependencySearchResults;
import java.util.List;
import java.util.Map;
import org.jetbrains.annotations.NotNull;

public interface DependencyAnalyzer {
   String SearchDepthOptionKey = "searchDepth";
   String SearchEntityTypeOptionKey = "searchEntityType";
   String ReturnAssertionsAsDependenciesOptionKey = "returnAssertionsAsDependencies";
   String ReturnServicePoliciesAsDependencies = "returnServicePoliciesAsDependencies";
   String IgnoreSearchOptionKey = "Ignore";
   String IgnoreDependenciesSearchOptionKey = "IgnoreDependencies";
   String FindSecurePasswordDependencyFromContextVariablePlaintextOptionKey = "findSecurePasswordDependencyFromContextVariablePlaintext";
   String IncludeSolutionKitsOptionKey = "includeSolutionKits";
   String EncassAsPolicyDependencyOptionKey = "encassAsPolicyDependency";

   @NotNull
   DependencySearchResults getDependencies(@NotNull EntityHeader var1) throws FindException, CannotRetrieveDependenciesException;

   @NotNull
   DependencySearchResults getDependencies(@NotNull EntityHeader var1, @NotNull Map<String, Object> var2) throws FindException, CannotRetrieveDependenciesException;

   @NotNull
   List<DependencySearchResults> getDependencies(@NotNull List<EntityHeader> var1) throws FindException, CannotRetrieveDependenciesException;

   @NotNull
   List<DependencySearchResults> getDependencies(@NotNull List<EntityHeader> var1, @NotNull Map<String, Object> var2) throws FindException, CannotRetrieveDependenciesException;

   <E extends Entity> void replaceDependencies(@NotNull E var1, @NotNull Map<EntityHeader, EntityHeader> var2, boolean var3) throws CannotReplaceDependenciesException;
}
