// Signature format: 3.0
package @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) androidx.serialization.runtime.internal {

  public interface CollectionFactory<C extends java.util.Collection<?>> {
    method public C create(int);
  }

  public interface DecoderV1 {
    method public boolean decodeBool();
    method public byte[] decodeBytes();
    method public double decodeDouble();
    method public <T extends java.lang.Enum<T>> T decodeEnum(androidx.serialization.runtime.internal.EnumSerializerV1<T!>);
    method public int decodeFixed32();
    method public long decodeFixed64();
    method public float decodeFloat();
    method public int decodeInt32();
    method public long decodeInt64();
    method public <T> T decodeMessage(androidx.serialization.runtime.internal.SerializerV1<T!>, T?);
    method public boolean[] decodeRepeatedBool(boolean[]?);
    method public <C extends java.util.Collection<java.lang.Boolean>> C decodeRepeatedBool(C?, androidx.serialization.runtime.internal.CollectionFactory<C!>);
    method public <C extends java.util.Collection<byte[]>> C decodeRepeatedBytes(C?, androidx.serialization.runtime.internal.CollectionFactory<C!>);
    method public double[] decodeRepeatedDouble(double[]?);
    method public <C extends java.util.Collection<java.lang.Double>> C decodeRepeatedDouble(C?, androidx.serialization.runtime.internal.CollectionFactory<C!>);
    method public <T extends java.lang.Enum<T>, C extends java.util.Collection<T>> C decodeRepeatedEnum(androidx.serialization.runtime.internal.EnumSerializerV1<T!>, C?, androidx.serialization.runtime.internal.CollectionFactory<C!>);
    method public int[] decodeRepeatedFixed32(int[]?);
    method public <C extends java.util.Collection<java.lang.Integer>> C decodeRepeatedFixed32(C?, androidx.serialization.runtime.internal.CollectionFactory<C!>);
    method public long[] decodeRepeatedFixed64(long[]?);
    method public <C extends java.util.Collection<java.lang.Long>> C decodeRepeatedFixed64(C?, androidx.serialization.runtime.internal.CollectionFactory<C!>);
    method public float[] decodeRepeatedFloat(float[]?);
    method public <C extends java.util.Collection<java.lang.Float>> C decodeRepeatedFloat(C?, androidx.serialization.runtime.internal.CollectionFactory<C!>);
    method public int[] decodeRepeatedInt32(int[]?);
    method public <C extends java.util.Collection<java.lang.Integer>> C decodeRepeatedInt32(C?, androidx.serialization.runtime.internal.CollectionFactory<C!>);
    method public long[] decodeRepeatedInt64(long[]?);
    method public <C extends java.util.Collection<java.lang.Long>> C decodeRepeatedInt64(C?, androidx.serialization.runtime.internal.CollectionFactory<C!>);
    method public <T, C extends java.util.Collection<T>> C decodeRepeatedMessage(androidx.serialization.runtime.internal.SerializerV1<T!>, C?, androidx.serialization.runtime.internal.CollectionFactory<C!>);
    method public int[] decodeRepeatedSInt32(int[]?);
    method public <C extends java.util.Collection<java.lang.Integer>> C decodeRepeatedSInt32(C?, androidx.serialization.runtime.internal.CollectionFactory<C!>);
    method public long[] decodeRepeatedSInt64(long[]?);
    method public <C extends java.util.Collection<java.lang.Long>> C decodeRepeatedSInt64(C?, androidx.serialization.runtime.internal.CollectionFactory<C!>);
    method public String![] decodeRepeatedString(String![]?);
    method public <C extends java.util.Collection<java.lang.String>> C decodeRepeatedString(C?, androidx.serialization.runtime.internal.CollectionFactory<C!>);
    method public int[] decodeRepeatedUInt32(int[]?);
    method public <C extends java.util.Collection<java.lang.Integer>> C decodeRepeatedUInt32(C?, androidx.serialization.runtime.internal.CollectionFactory<C!>);
    method public long[] decodeRepeatedUInt64(long[]?);
    method public <C extends java.util.Collection<java.lang.Long>> C decodeRepeatedUInt64(C?, androidx.serialization.runtime.internal.CollectionFactory<C!>);
    method public int decodeSInt32();
    method public long decodeSInt64();
    method public String decodeString();
    method public int decodeUInt32();
    method public long decodeUInt64();
    method public boolean hasNextField();
    method public int nextFieldId();
  }

  public interface EncoderV1 {
    method public void encodeBool(int, boolean);
    method public void encodeBytes(int, byte[]?);
    method public void encodeDouble(int, double);
    method public <T extends java.lang.Enum<T>> void encodeEnum(int, androidx.serialization.runtime.internal.EnumSerializerV1<T!>, T?);
    method public void encodeFixed32(int, int);
    method public void encodeFixed64(int, long);
    method public void encodeFloat(int, float);
    method public void encodeInt32(int, int);
    method public void encodeInt64(int, long);
    method public <T> void encodeMessage(int, androidx.serialization.runtime.internal.SerializerV1<T!>, T?);
    method public void encodeRepeatedBool(int, boolean[]?);
    method public void encodeRepeatedBool(int, Iterable<java.lang.Boolean!>?);
    method public void encodeRepeatedBytes(int, Iterable<byte[]!>?);
    method public void encodeRepeatedDouble(int, double[]?);
    method public void encodeRepeatedDouble(int, Iterable<java.lang.Double!>?);
    method public <T extends java.lang.Enum<T>> void encodeRepeatedEnum(int, androidx.serialization.runtime.internal.EnumSerializerV1<T!>, Iterable<T!>?);
    method public void encodeRepeatedFixed32(int, int[]?);
    method public void encodeRepeatedFixed32(int, Iterable<java.lang.Integer!>?);
    method public void encodeRepeatedFixed64(int, long[]?);
    method public void encodeRepeatedFixed64(int, Iterable<java.lang.Long!>?);
    method public void encodeRepeatedFloat(int, float[]?);
    method public void encodeRepeatedFloat(int, Iterable<java.lang.Float!>?);
    method public void encodeRepeatedInt32(int, int[]?);
    method public void encodeRepeatedInt32(int, Iterable<java.lang.Integer!>?);
    method public void encodeRepeatedInt64(int, long[]?);
    method public void encodeRepeatedInt64(int, Iterable<java.lang.Long!>?);
    method public <T> void encodeRepeatedMessage(int, androidx.serialization.runtime.internal.SerializerV1<T!>, Iterable<T!>?);
    method public void encodeRepeatedSInt32(int, int[]?);
    method public void encodeRepeatedSInt32(int, Iterable<java.lang.Integer!>?);
    method public void encodeRepeatedSInt64(int, long[]?);
    method public void encodeRepeatedSInt64(int, Iterable<java.lang.Long!>?);
    method public void encodeRepeatedString(int, String![]?);
    method public void encodeRepeatedString(int, Iterable<java.lang.String!>?);
    method public void encodeRepeatedUInt32(int, int[]?);
    method public void encodeRepeatedUInt32(int, Iterable<java.lang.Integer!>?);
    method public void encodeRepeatedUInt64(int, long[]?);
    method public void encodeRepeatedUInt64(int, Iterable<java.lang.Long!>?);
    method public void encodeSInt32(int, int);
    method public void encodeSInt64(int, long);
    method public void encodeString(int, String?);
    method public void encodeUInt32(int, int);
    method public void encodeUInt64(int, long);
  }

  public interface EnumSerializerV1<T extends java.lang.Enum<T>> {
    method public T decode(int);
    method public int encode(T);
  }

  public final class SerializationRuntime {
    method public static <T> T defaultInstanceOf(androidx.serialization.runtime.internal.SerializerV1<T!>);
    method public static <T> androidx.serialization.runtime.internal.CollectionFactory<java.util.List<T!>!> getListFactory();
    method public static <T> androidx.serialization.runtime.internal.CollectionFactory<java.util.Set<T!>!> getSetFactory();
  }

  public interface SerializerV1<T> {
    method public T decode(androidx.serialization.runtime.internal.DecoderV1, T?);
    method public void encode(androidx.serialization.runtime.internal.EncoderV1, T);
  }

}

