package com.l7tech.gateway.common;

import com.l7tech.gateway.common.admin.Administrative;
import com.l7tech.gateway.common.security.rbac.MethodStereotype;
import com.l7tech.gateway.common.security.rbac.Secured;
import com.l7tech.util.DeserializeSafe;
import com.l7tech.util.HexUtils;
import java.io.Serializable;
import java.util.Arrays;

@DeserializeSafe
public interface AsyncAdminMethods {
   @Administrative(licensed = false)
   @Secured(stereotype = MethodStereotype.UNCHECKED_WIDE_OPEN)
   <OUT extends Serializable> String getJobStatus(AsyncAdminMethods.JobId<OUT> var1);

   @Administrative(licensed = false)
   @Secured(stereotype = MethodStereotype.UNCHECKED_WIDE_OPEN)
   <OUT extends Serializable> AsyncAdminMethods.JobResult<OUT> getJobResult(AsyncAdminMethods.JobId<OUT> var1) throws AsyncAdminMethods.UnknownJobException, AsyncAdminMethods.JobStillActiveException;

   @Administrative(licensed = false)
   @Secured(stereotype = MethodStereotype.UNCHECKED_WIDE_OPEN)
   default AsyncAdminMethods.JobResult<String> getJobResultAsString(AsyncAdminMethods.JobId<String> var1) throws AsyncAdminMethods.UnknownJobException, AsyncAdminMethods.JobStillActiveException {
      return null;
   }

   @Administrative(licensed = false)
   @Secured(stereotype = MethodStereotype.UNCHECKED_WIDE_OPEN)
   <OUT extends Serializable> void cancelJob(AsyncAdminMethods.JobId<OUT> var1, boolean var2);

   final class JobId<OUT extends Serializable> implements Serializable {
      private static final long serialVersionUID = 8292671249057242870L;
      private final byte[] bytes;
      private final String resultClassname;
      private static final String[] a;

      public JobId(byte[] var1, Class<? extends OUT> var2) {
         if (var1 == null) {
            throw new NullPointerException();
         }

         this.bytes = var1;
         this.resultClassname = var2.getName();
      }

      public String getResultClassname() {
         return this.resultClassname;
      }

      @Override
      public boolean equals(Object param1) {
         // $VF: Couldn't be decompiled
         // Please report this to the Vineflower issue tracker, at https://github.com/Vineflower/vineflower/issues with a copy of the class file (if you have the rights to distribute it!)
         // java.lang.RuntimeException: parsing failure!
         //   at org.jetbrains.java.decompiler.modules.decompiler.decompose.DomHelper.parseGraph(DomHelper.java:211)
         //   at org.jetbrains.java.decompiler.main.rels.MethodProcessor.codeToJava(MethodProcessor.java:174)
         //
         // Bytecode:
         // 00: aload 0
         // 01: aload 1
         // 02: if_acmpne 0b
         // 05: bipush 1
         // 06: ireturn
         // 07: invokestatic com/l7tech/gateway/common/AsyncAdminMethods$JobId.a (Ljava/lang/NullPointerException;)Ljava/lang/NullPointerException;
         // 0a: athrow
         // 0b: aload 1
         // 0c: ifnull 21
         // 0f: aload 0
         // 10: invokevirtual java/lang/Object.getClass ()Ljava/lang/Class;
         // 13: aload 1
         // 14: invokevirtual java/lang/Object.getClass ()Ljava/lang/Class;
         // 17: if_acmpeq 27
         // 1a: goto 21
         // 1d: invokestatic com/l7tech/gateway/common/AsyncAdminMethods$JobId.a (Ljava/lang/NullPointerException;)Ljava/lang/NullPointerException;
         // 20: athrow
         // 21: bipush 0
         // 22: ireturn
         // 23: invokestatic com/l7tech/gateway/common/AsyncAdminMethods$JobId.a (Ljava/lang/NullPointerException;)Ljava/lang/NullPointerException;
         // 26: athrow
         // 27: aload 1
         // 28: checkcast com/l7tech/gateway/common/AsyncAdminMethods$JobId
         // 2b: astore 2
         // 2c: aload 0
         // 2d: getfield com/l7tech/gateway/common/AsyncAdminMethods$JobId.bytes [B
         // 30: aload 2
         // 31: getfield com/l7tech/gateway/common/AsyncAdminMethods$JobId.bytes [B
         // 34: invokestatic java/util/Arrays.equals ([B[B)Z
         // 37: ireturn
         // try (0 -> 5): 5 java/lang/NullPointerException
         // try (7 -> 14): 15 java/lang/NullPointerException
         // try (9 -> 19): 19 java/lang/NullPointerException
      }

      @Override
      public int hashCode() {
         return Arrays.hashCode(this.bytes);
      }

      @Override
      public String toString() {
         String var10000 = this.resultClassname;
         String var10001 = HexUtils.hexDump(this.bytes);
         String[] var1 = a;
         return var1[1] + var10000 + var1[0] + var10001;
      }

      private static NullPointerException a(NullPointerException var0) {
         return var0;
      }

      static {
         String[] var5 = new String[2];
         int var3 = 0;
         String var2 = "\u0013j\u0006g?r\u00025U";
         int var4 = "\u0013j\u0006g?r\u00025U".length();
         char var1 = 2;
         int var0 = -1;

         while (true) {
            String var10002 = a(29, a(var2.substring(++var0, var0 + var1)));
            byte var10001 = -1;
            var5[var3++] = var10002;
            if ((var0 += var1) >= var4) {
               a = var5;
               return;
            }

            var1 = var2.charAt(var0);
         }
      }

      private static char[] a(String var0) {
         char[] var10000 = var0.toCharArray();
         if (var10000.length < 2) {
            var10000[0] = (char)(var10000[0] ^ 62);
         }

         return var10000;
      }

      private static String a(int var0, char[] var1) {
         int var10003 = var1.length;
         int var10002 = var0;
         char[] var10001 = var1;
         int var10000 = var10003;

         for (int var2 = 0; var10000 > var2; var2++) {
            var10001[var2] = (char)(var10001[var2] ^ var10002 ^ switch (var2 % 7) {
               case 0 -> 48;
               case 1 -> 77;
               case 2 -> 13;
               case 3 -> 86;
               case 4 -> 76;
               case 5 -> 116;
               default -> 62;
            });
         }

         return new String(var10001).intern();
      }
   }

   final class JobResult<OUT extends Serializable> implements Serializable {
      private static final long serialVersionUID = 6452392466733202138L;
      public final String status;
      public final OUT result;
      public final String throwableClassname;
      public final String throwableMessage;

      public JobResult(String var1, OUT var2, String var3, String var4) {
         this.status = var1;
         this.result = (OUT)var2;
         this.throwableClassname = var3;
         this.throwableMessage = var4;
      }
   }

   final class JobStillActiveException extends Exception {
      private static final long serialVersionUID = 2462587258125876234L;

      public JobStillActiveException() {
      }

      public JobStillActiveException(String var1) {
         super(var1);
      }

      public JobStillActiveException(String var1, Throwable var2) {
         super(var1, var2);
      }

      public JobStillActiveException(Throwable var1) {
         super(var1);
      }
   }

   final class UnknownJobException extends Exception {
      private static final long serialVersionUID = 1234742529058273838L;

      public UnknownJobException() {
      }

      public UnknownJobException(String var1) {
         super(var1);
      }

      public UnknownJobException(String var1, Throwable var2) {
         super(var1, var2);
      }

      public UnknownJobException(Throwable var1) {
         super(var1);
      }
   }
}
