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

package io.sentry.rrweb;

import io.sentry.util.Objects;
import io.sentry.ObjectReader;
import io.sentry.JsonDeserializer;
import java.io.IOException;
import io.sentry.ILogger;
import io.sentry.ObjectWriter;
import io.sentry.JsonSerializable;
import org.jetbrains.annotations.NotNull;

public abstract class RRWebIncrementalSnapshotEvent extends RRWebEvent
{
    private IncrementalSource source;
    
    public RRWebIncrementalSnapshotEvent(@NotNull final IncrementalSource source) {
        super(RRWebEventType.IncrementalSnapshot);
        this.source = source;
    }
    
    public IncrementalSource getSource() {
        return this.source;
    }
    
    public void setSource(final IncrementalSource source) {
        this.source = source;
    }
    
    public enum IncrementalSource implements JsonSerializable
    {
        Mutation, 
        MouseMove, 
        MouseInteraction, 
        Scroll, 
        ViewportResize, 
        Input, 
        TouchMove, 
        MediaInteraction, 
        StyleSheetRule, 
        CanvasMutation, 
        Font, 
        Log, 
        Drag, 
        StyleDeclaration, 
        Selection, 
        AdoptedStyleSheet, 
        CustomElement;
        
        @Override
        public void serialize(@NotNull final ObjectWriter writer, @NotNull final ILogger logger) throws IOException {
            writer.value(this.ordinal());
        }
        
        public static final class Deserializer implements JsonDeserializer<IncrementalSource>
        {
            @NotNull
            @Override
            public IncrementalSource deserialize(@NotNull final ObjectReader reader, @NotNull final ILogger logger) throws Exception {
                return IncrementalSource.values()[reader.nextInt()];
            }
        }
    }
    
    public static final class JsonKeys
    {
        public static final String SOURCE = "source";
    }
    
    public static final class Serializer
    {
        public void serialize(@NotNull final RRWebIncrementalSnapshotEvent baseEvent, @NotNull final ObjectWriter writer, @NotNull final ILogger logger) throws IOException {
            writer.name("source").value(logger, baseEvent.source);
        }
    }
    
    public static final class Deserializer
    {
        public boolean deserializeValue(@NotNull final RRWebIncrementalSnapshotEvent baseEvent, @NotNull final String nextName, @NotNull final ObjectReader reader, @NotNull final ILogger logger) throws Exception {
            if (nextName.equals("source")) {
                baseEvent.source = Objects.requireNonNull((IncrementalSource)reader.nextOrNull(logger, (JsonDeserializer<T>)new IncrementalSource.Deserializer()), "");
                return true;
            }
            return false;
        }
    }
}
