package com.l7tech.server;

import com.l7tech.gateway.common.security.rbac.MethodStereotype;
import com.l7tech.gateway.common.security.rbac.Secured;
import com.l7tech.objectmodel.DeleteException;
import com.l7tech.objectmodel.Entity;
import com.l7tech.objectmodel.EntityHeader;
import com.l7tech.objectmodel.EntityHeaderSet;
import com.l7tech.objectmodel.EntityType;
import com.l7tech.objectmodel.FindException;
import com.l7tech.objectmodel.Goid;
import com.l7tech.objectmodel.ReadOnlyEntityManager;
import com.l7tech.objectmodel.SaveException;
import com.l7tech.objectmodel.SecurityZoneEntityManager;
import com.l7tech.objectmodel.UpdateException;
import java.io.Serializable;
import java.util.List;
import java.util.Map;
import org.jetbrains.annotations.NotNull;

public interface EntityCrud extends EntityFinder, SecurityZoneEntityManager {
   String f;

   @Secured(stereotype = MethodStereotype.SAVE)
   Serializable save(Entity var1) throws SaveException;

   @Secured(stereotype = MethodStereotype.SAVE)
   void save(Goid var1, Entity var2) throws SaveException;

   @Secured(stereotype = MethodStereotype.UPDATE)
   void update(Entity var1) throws UpdateException;

   @Secured(stereotype = MethodStereotype.DELETE_ENTITY)
   void delete(Entity var1) throws DeleteException;

   @Secured(stereotype = MethodStereotype.NONE)
   default void addEntityManagers(List<ReadOnlyEntityManager<? extends Entity, ? extends EntityHeader>> var1) {
      throw new RuntimeException(f);
   }

   @Secured(stereotype = MethodStereotype.FIND_HEADERS)
   @Override
   EntityHeaderSet<EntityHeader> findAll(Class<? extends Entity> var1) throws FindException;

   @Secured(stereotype = MethodStereotype.FIND_HEADERS)
   EntityHeaderSet<EntityHeader> findAll(Class<? extends Entity> var1, Map<String, String> var2, int var3, int var4) throws FindException;

   @Secured(stereotype = MethodStereotype.FIND_ENTITIES)
   <ET extends Entity> List<ET> findAll(Class<ET> var1, Map<String, List<Object>> var2, int var3, int var4, Boolean var5, String var6) throws FindException;

   @Secured(stereotype = MethodStereotype.FIND_HEADERS)
   EntityHeaderSet<EntityHeader> findAllInScope(Class<? extends Entity> var1, EntityHeader var2, Map<String, String> var3, int var4, int var5) throws FindException;

   @Secured(stereotype = MethodStereotype.FIND_ENTITIES)
   @Override
   Entity find(@NotNull EntityHeader var1) throws FindException;

   @Secured(stereotype = MethodStereotype.FIND_ENTITIES)
   @Override
   <ET extends Entity> ET find(Class<ET> var1, Serializable var2) throws FindException;

   @Secured(stereotype = MethodStereotype.FIND_HEADERS)
   @Override
   EntityHeader findHeader(EntityType var1, Serializable var2) throws FindException;

   void evict(Entity var1);

   static {
      char[] var10003 = "x)[\u000b\u0016?nY\"ZS\u0005;aAgJ\u001cF;iI\u0002P\u0007\u000f.t`&P\u0012\u0001?\u007f^gQ\u001dF\u001fcY.J\n%(xIgJ\u001b\u0007.-I([\u0000F4bYg[\u000b\u0012?cIgX\u0001\t7-h)J\u001a\u0012#N_2Z:\u000b*a"
         .toCharArray();
      int var10004 = var10003.length;
      byte var5 = 6;
      char[] var10002 = var10003;
      int var1 = var10004;

      for (int var0 = 0; var1 > var0; var0++) {
         var10002[var0] = (char)(var10002[var0] ^ var5 ^ switch (var0 % 7) {
            case 0 -> 43;
            case 1 -> 65;
            case 2 -> 56;
            case 3 -> 117;
            case 4 -> 96;
            case 5 -> 92;
            default -> 11;
         });
      }

      String var7 = new String(var10002).intern();
      byte var3 = -1;
      f = var7;
   }
}
