package com.l7tech.gateway.common.custom;

import com.l7tech.gateway.common.admin.Administrative;
import com.l7tech.gateway.common.module.AssertionModuleInfo;
import com.l7tech.gateway.common.module.ServerModuleFileLoader;
import com.l7tech.policy.assertion.CustomAssertionHolder;
import com.l7tech.policy.assertion.ext.Category;
import com.l7tech.policy.assertion.ext.CustomAssertionUI;
import com.l7tech.policy.assertion.ext.action.CustomTaskActionUI;
import com.l7tech.policy.assertion.ext.entity.CustomEntitySerializer;
import com.l7tech.util.DeserializeSafe;
import java.io.Serializable;
import java.util.Collection;

@Administrative
@DeserializeSafe
public interface CustomAssertionsRegistrar extends ServerModuleFileLoader {
   @Administrative(licensed = false)
   byte[] getAssertionClass(String var1);

   @Administrative(licensed = false)
   byte[] getAssertionResourceBytes(String var1);

   @Administrative(licensed = false)
   CustomAssertionsRegistrar.AssertionResourceData getAssertionResourceData(String var1);

   @Administrative(licensed = false)
   byte[] getAssertionResourceDataAsBytes(Collection<String> var1);

   @Administrative(licensed = false)
   CustomAssertionHolder getAssertion(String var1);

   @Administrative(licensed = false)
   default CustomAssertionHolder getAssertionByExternalName(String var1) {
      return null;
   }

   @Administrative(licensed = false)
   Collection<CustomAssertionHolder> getAssertions();

   @Administrative(licensed = false)
   Collection<CustomAssertionHolder> getAssertions(Category var1);

   @Administrative(licensed = false)
   boolean hasCustomCredentialSource();

   @Administrative(licensed = false)
   CustomAssertionDescriptor getDescriptor(Class var1);

   @Administrative(licensed = false)
   Collection<AssertionModuleInfo> getAssertionModuleInfo();

   @Administrative(licensed = false)
   AssertionModuleInfo getModuleInfoForAssertionClass(String var1);

   @Administrative(licensed = false)
   CustomAssertionUI getUI(String var1);

   @Administrative(licensed = false)
   CustomTaskActionUI getTaskActionUI(String var1);

   @Administrative(licensed = false)
   CustomEntitySerializer getExternalEntitySerializer(String var1);

   final class AssertionResourceData implements Serializable {
      private final String resourceName;
      private final boolean gzipTar;
      private final byte[] data;
      static final long serialVersionUID = -934076301208155689L;

      public AssertionResourceData(String var1, boolean var2, byte[] var3) {
         this.resourceName = var1;
         this.gzipTar = var2;
         this.data = var3;
      }

      public String getResourceName() {
         return this.resourceName;
      }

      public boolean isGzipTar() {
         return this.gzipTar;
      }

      public byte[] getData() {
         return this.data;
      }
   }
}
