package com.l7tech.server.otel;

import com.l7tech.policy.assertion.Assertion;
import com.l7tech.policy.assertion.AssertionStatus;
import com.l7tech.server.message.PolicyEnforcementContext;
import com.l7tech.util.BuildInfo;
import com.l7tech.util.mdc.JulMdc;
import io.opentelemetry.api.baggage.Baggage;
import io.opentelemetry.api.common.Attributes;
import io.opentelemetry.api.trace.Span;
import io.opentelemetry.api.trace.SpanKind;
import java.util.concurrent.Callable;

public interface OtelContext {
   String OTEL_SCOPE_NAME;
   String OTEL_SCOPE_VERSION;
   String OTEL_RESOURCE_ATTRIBUTES;
   String OTEL_SERVICE_NAME;
   String OTEL_ID_MDC_KEY;
   String[] C;

   default void recordCounter(String var1, String var2, String var3, long var4, Attributes var6) {
   }

   default void recordHistogram(String var1, String var2, String var3, long var4, Attributes var6) {
   }

   default void recordGauge(String var1, String var2, String var3, long var4, Attributes var6) {
   }

   default void recordUpDownCounter(String var1, String var2, String var3, double var4, Attributes var6) {
   }

   default Span startSpan(String var1, SpanKind var2, Attributes var3, PolicyEnforcementContext var4) {
      return Span.getInvalid();
   }

   default Span startAssertionSpan(Assertion var1, PolicyEnforcementContext var2) {
      return Span.getInvalid();
   }

   default Span getCurrentSpan() {
      return Span.getInvalid();
   }

   default void endAssertionSpan(Span var1, Assertion var2, PolicyEnforcementContext var3) {
   }

   default void addEvent(String var1) {
   }

   default void addEvent(String var1, Attributes var2) {
   }

   default Span startServiceSpan(PolicyEnforcementContext var1) {
      JulMdc.remove(C[0]);
      return Span.getInvalid();
   }

   default void endServiceSpan(Span var1, AssertionStatus var2, PolicyEnforcementContext var3) {
   }

   default Baggage createBaggage() {
      return Baggage.empty();
   }

   default <T> Callable<T> wrap(Callable<T> var1) {
      return var1;
   }

   static {
      String[] var5 = new String[5];
      int var3 = 0;
      String var2 = "Y\u000fl\u0002L?W\u0012u4D`\u007f\u0017js)\u001e`t\u0017gs,H7\u0007Y\u000fl\u0002L?W";
      int var4 = "Y\u000fl\u0002L?W\u0012u4D`\u007f\u0017js)\u001e`t\u0017gs,H7\u0007Y\u000fl\u0002L?W".length();
      char var1 = 7;
      int var8 = -1;

      label43:
      while (true) {
         byte var10000 = 2;
         String var10001 = var2.substring(++var8, var8 + var1);
         byte var10002 = -1;

         while (true) {
            char[] var21 = var10001.toCharArray();
            int var10004 = var21.length;
            byte var22 = var10000;
            char[] var17 = var21;
            int var13 = var10004;

            for (int var6 = 0; var13 > var6; var6++) {
               var17[var6] = (char)(var17[var6] ^ var22 ^ switch (var6 % 7) {
                  case 0 -> 20;
                  case 1 -> 89;
                  case 2 -> 43;
                  case 3 -> 76;
                  case 4 -> 17;
                  case 5 -> 116;
                  default -> 17;
               });
            }

            String var24 = new String(var17).intern();
            switch (var10002) {
               case 0:
                  var5[var3++] = var24;
                  if ((var8 += var1) >= var4) {
                     C = var5;
                     String[] var10 = C;
                     OTEL_RESOURCE_ATTRIBUTES = C[3];
                     OTEL_SCOPE_NAME = var10[1];
                     OTEL_ID_MDC_KEY = var10[2];
                     OTEL_SERVICE_NAME = var10[4];
                     OTEL_SCOPE_VERSION = BuildInfo.getProductVersion();
                     return;
                  }

                  var1 = var2.charAt(var8);
                  break;
               default:
                  var5[var3++] = var24;
                  if ((var8 += var1) < var4) {
                     var1 = var2.charAt(var8);
                     continue label43;
                  }

                  var2 = "k=^0~\u0016dw&N.b\u0001~e=O.h\u0006tp,H\u0011k=^0~\u0017dv?R?d\u001boe$^";
                  var4 = "k=^0~\u0016dw&N.b\u0001~e=O.h\u0006tp,H\u0011k=^0~\u0017dv?R?d\u001boe$^".length();
                  var1 = 24;
                  var8 = -1;
            }

            var10000 = 48;
            var10001 = var2.substring(++var8, var8 + var1);
            var10002 = 0;
         }
      }
   }
}
