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

package io.sentry;

import io.sentry.vendor.gson.stream.JsonToken;
import java.util.TimeZone;
import java.io.IOException;
import java.util.List;
import java.util.Map;
import java.util.Date;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.io.Closeable;

public interface ObjectReader extends Closeable
{
    @Nullable
    default Date dateOrNull(@Nullable final String dateString, @NotNull final ILogger logger) {
        if (dateString == null) {
            return null;
        }
        try {
            return DateUtils.getDateTime(dateString);
        }
        catch (final Exception ignored) {
            try {
                return DateUtils.getDateTimeWithMillisPrecision(dateString);
            }
            catch (final Exception e) {
                logger.log(SentryLevel.ERROR, "Error when deserializing millis timestamp format.", e);
                return null;
            }
        }
    }
    
    void nextUnknown(final ILogger p0, final Map<String, Object> p1, final String p2);
    
    @Nullable
     <T> List<T> nextListOrNull(@NotNull final ILogger p0, @NotNull final JsonDeserializer<T> p1) throws IOException;
    
    @Nullable
     <T> Map<String, T> nextMapOrNull(@NotNull final ILogger p0, @NotNull final JsonDeserializer<T> p1) throws IOException;
    
    @Nullable
     <T> Map<String, List<T>> nextMapOfListOrNull(@NotNull final ILogger p0, @NotNull final JsonDeserializer<T> p1) throws IOException;
    
    @Nullable
     <T> T nextOrNull(@NotNull final ILogger p0, @NotNull final JsonDeserializer<T> p1) throws Exception;
    
    @Nullable
    Date nextDateOrNull(final ILogger p0) throws IOException;
    
    @Nullable
    TimeZone nextTimeZoneOrNull(final ILogger p0) throws IOException;
    
    @Nullable
    Object nextObjectOrNull() throws IOException;
    
    @NotNull
    JsonToken peek() throws IOException;
    
    @NotNull
    String nextName() throws IOException;
    
    void beginObject() throws IOException;
    
    void endObject() throws IOException;
    
    void beginArray() throws IOException;
    
    void endArray() throws IOException;
    
    boolean hasNext() throws IOException;
    
    int nextInt() throws IOException;
    
    @Nullable
    Integer nextIntegerOrNull() throws IOException;
    
    long nextLong() throws IOException;
    
    @Nullable
    Long nextLongOrNull() throws IOException;
    
    String nextString() throws IOException;
    
    @Nullable
    String nextStringOrNull() throws IOException;
    
    boolean nextBoolean() throws IOException;
    
    @Nullable
    Boolean nextBooleanOrNull() throws IOException;
    
    double nextDouble() throws IOException;
    
    @Nullable
    Double nextDoubleOrNull() throws IOException;
    
    float nextFloat() throws IOException;
    
    @Nullable
    Float nextFloatOrNull() throws IOException;
    
    void nextNull() throws IOException;
    
    void setLenient(final boolean p0);
    
    void skipValue() throws IOException;
}
