package com.l7tech.server.policy.module;

import com.l7tech.gateway.common.custom.CustomAssertionDescriptor;
import com.l7tech.policy.assertion.Assertion;
import com.l7tech.policy.assertion.ext.ServiceFinder;
import java.util.Set;
import org.jetbrains.annotations.NotNull;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationEvent;

public interface ScannerCallbacks {
   void publishEvent(@NotNull ApplicationEvent var1);

   interface CustomAssertion extends ScannerCallbacks {
      void registerAssertion(@NotNull CustomAssertionDescriptor var1) throws ModuleException;

      void unregisterAssertion(@NotNull CustomAssertionDescriptor var1);

      ServiceFinder getServiceFinder();
   }

   interface ModularAssertion extends ScannerCallbacks {
      void registerClusterProps(@NotNull Set<? extends Assertion> var1);

      void registerAssertion(@NotNull Class<? extends Assertion> var1);

      void unregisterAssertion(@NotNull Assertion var1);

      @NotNull
      ApplicationContext getApplicationContext();

      boolean isAssertionRegistered(@NotNull String var1);
   }
}
