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

package com.google.protobuf;

import java.util.Map;
import java.util.List;
import java.io.IOException;

@CheckReturnValue
interface Reader
{
    public static final int READ_DONE = Integer.MAX_VALUE;
    public static final int TAG_UNKNOWN = 0;
    
    boolean shouldDiscardUnknownFields();
    
    int getFieldNumber() throws IOException;
    
    int getTag();
    
    boolean skipField() throws IOException;
    
    double readDouble() throws IOException;
    
    float readFloat() throws IOException;
    
    long readUInt64() throws IOException;
    
    long readInt64() throws IOException;
    
    int readInt32() throws IOException;
    
    long readFixed64() throws IOException;
    
    int readFixed32() throws IOException;
    
    boolean readBool() throws IOException;
    
    String readString() throws IOException;
    
    String readStringRequireUtf8() throws IOException;
    
     <T> T readMessageBySchemaWithCheck(final Schema<T> schema, final ExtensionRegistryLite extensionRegistry) throws IOException;
    
     <T> T readMessage(final Class<T> clazz, final ExtensionRegistryLite extensionRegistry) throws IOException;
    
    @Deprecated
     <T> T readGroup(final Class<T> clazz, final ExtensionRegistryLite extensionRegistry) throws IOException;
    
    @Deprecated
     <T> T readGroupBySchemaWithCheck(final Schema<T> schema, final ExtensionRegistryLite extensionRegistry) throws IOException;
    
     <T> void mergeMessageField(final T target, final Schema<T> schema, final ExtensionRegistryLite extensionRegistry) throws IOException;
    
     <T> void mergeGroupField(final T target, final Schema<T> schema, final ExtensionRegistryLite extensionRegistry) throws IOException;
    
    ByteString readBytes() throws IOException;
    
    int readUInt32() throws IOException;
    
    int readEnum() throws IOException;
    
    int readSFixed32() throws IOException;
    
    long readSFixed64() throws IOException;
    
    int readSInt32() throws IOException;
    
    long readSInt64() throws IOException;
    
    void readDoubleList(final List<Double> target) throws IOException;
    
    void readFloatList(final List<Float> target) throws IOException;
    
    void readUInt64List(final List<Long> target) throws IOException;
    
    void readInt64List(final List<Long> target) throws IOException;
    
    void readInt32List(final List<Integer> target) throws IOException;
    
    void readFixed64List(final List<Long> target) throws IOException;
    
    void readFixed32List(final List<Integer> target) throws IOException;
    
    void readBoolList(final List<Boolean> target) throws IOException;
    
    void readStringList(final List<String> target) throws IOException;
    
    void readStringListRequireUtf8(final List<String> target) throws IOException;
    
     <T> void readMessageList(final List<T> target, final Schema<T> schema, final ExtensionRegistryLite extensionRegistry) throws IOException;
    
     <T> void readMessageList(final List<T> target, final Class<T> targetType, final ExtensionRegistryLite extensionRegistry) throws IOException;
    
    @Deprecated
     <T> void readGroupList(final List<T> target, final Class<T> targetType, final ExtensionRegistryLite extensionRegistry) throws IOException;
    
    @Deprecated
     <T> void readGroupList(final List<T> target, final Schema<T> targetType, final ExtensionRegistryLite extensionRegistry) throws IOException;
    
    void readBytesList(final List<ByteString> target) throws IOException;
    
    void readUInt32List(final List<Integer> target) throws IOException;
    
    void readEnumList(final List<Integer> target) throws IOException;
    
    void readSFixed32List(final List<Integer> target) throws IOException;
    
    void readSFixed64List(final List<Long> target) throws IOException;
    
    void readSInt32List(final List<Integer> target) throws IOException;
    
    void readSInt64List(final List<Long> target) throws IOException;
    
     <K, V> void readMap(final Map<K, V> target, final MapEntryLite.Metadata<K, V> mapDefaultEntry, final ExtensionRegistryLite extensionRegistry) throws IOException;
}
