// 
// Decompiled by Procyon v0.6.0
// 

package io.sentry;

import java.util.Locale;
import java.io.IOException;
import org.jetbrains.annotations.NotNull;
import io.sentry.clientreport.ClientReport;
import io.sentry.protocol.SentryTransaction;
import org.jetbrains.annotations.ApiStatus;

@ApiStatus.Internal
public enum SentryItemType implements JsonSerializable
{
    Session("session"), 
    Event("event"), 
    UserFeedback("user_report"), 
    Attachment("attachment"), 
    Transaction("transaction"), 
    Profile("profile"), 
    ProfileChunk("profile_chunk"), 
    ClientReport("client_report"), 
    ReplayEvent("replay_event"), 
    ReplayRecording("replay_recording"), 
    ReplayVideo("replay_video"), 
    CheckIn("check_in"), 
    Feedback("feedback"), 
    Log("log"), 
    TraceMetric("trace_metric"), 
    Span("span"), 
    Unknown("__unknown__");
    
    private final String itemType;
    
    public static SentryItemType resolve(final Object item) {
        if (item instanceof SentryEvent) {
            return (((SentryEvent)item).getContexts().getFeedback() == null) ? SentryItemType.Event : SentryItemType.Feedback;
        }
        if (item instanceof SentryTransaction) {
            return SentryItemType.Transaction;
        }
        if (item instanceof Session) {
            return SentryItemType.Session;
        }
        if (item instanceof ClientReport) {
            return SentryItemType.ClientReport;
        }
        return SentryItemType.Attachment;
    }
    
    private SentryItemType(final String itemType) {
        this.itemType = itemType;
    }
    
    public String getItemType() {
        return this.itemType;
    }
    
    @NotNull
    public static SentryItemType valueOfLabel(final String itemType) {
        for (final SentryItemType sentryItemType : values()) {
            if (sentryItemType.itemType.equals(itemType)) {
                return sentryItemType;
            }
        }
        return SentryItemType.Unknown;
    }
    
    @Override
    public void serialize(@NotNull final ObjectWriter writer, @NotNull final ILogger logger) throws IOException {
        writer.value(this.itemType);
    }
    
    public static final class Deserializer implements JsonDeserializer<SentryItemType>
    {
        @NotNull
        @Override
        public SentryItemType deserialize(@NotNull final ObjectReader reader, @NotNull final ILogger logger) throws Exception {
            return SentryItemType.valueOfLabel(reader.nextString().toLowerCase(Locale.ROOT));
        }
    }
}
