public abstract class kotlinx/serialization/protobuf/ProtoBuf : kotlinx/serialization/BinaryFormat {
	public static final field Default Lkotlinx/serialization/protobuf/ProtoBuf$Default;
	public synthetic fun <init> (ZLkotlinx/serialization/modules/SerializersModule;Lkotlin/jvm/internal/DefaultConstructorMarker;)V
	public fun decodeFromByteArray (Lkotlinx/serialization/DeserializationStrategy;[B)Ljava/lang/Object;
	public fun encodeToByteArray (Lkotlinx/serialization/SerializationStrategy;Ljava/lang/Object;)[B
	public fun getSerializersModule ()Lkotlinx/serialization/modules/SerializersModule;
}

public final class kotlinx/serialization/protobuf/ProtoBuf$Default : kotlinx/serialization/protobuf/ProtoBuf {
}

public final class kotlinx/serialization/protobuf/ProtoBufBuilder {
	public final fun getEncodeDefaults ()Z
	public final fun getSerializersModule ()Lkotlinx/serialization/modules/SerializersModule;
	public final fun setEncodeDefaults (Z)V
	public final fun setSerializersModule (Lkotlinx/serialization/modules/SerializersModule;)V
}

public final class kotlinx/serialization/protobuf/ProtoBufKt {
	public static final fun ProtoBuf (Lkotlinx/serialization/protobuf/ProtoBuf;Lkotlin/jvm/functions/Function1;)Lkotlinx/serialization/protobuf/ProtoBuf;
	public static synthetic fun ProtoBuf$default (Lkotlinx/serialization/protobuf/ProtoBuf;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)Lkotlinx/serialization/protobuf/ProtoBuf;
}

public final class kotlinx/serialization/protobuf/ProtoIntegerType : java/lang/Enum {
	public static final field DEFAULT Lkotlinx/serialization/protobuf/ProtoIntegerType;
	public static final field FIXED Lkotlinx/serialization/protobuf/ProtoIntegerType;
	public static final field SIGNED Lkotlinx/serialization/protobuf/ProtoIntegerType;
	public static fun getEntries ()Lkotlin/enums/EnumEntries;
	public static fun valueOf (Ljava/lang/String;)Lkotlinx/serialization/protobuf/ProtoIntegerType;
	public static fun values ()[Lkotlinx/serialization/protobuf/ProtoIntegerType;
}

public abstract interface annotation class kotlinx/serialization/protobuf/ProtoNumber : java/lang/annotation/Annotation {
	public abstract fun number ()I
}

public synthetic class kotlinx/serialization/protobuf/ProtoNumber$Impl : kotlinx/serialization/protobuf/ProtoNumber {
	public fun <init> (I)V
	public final synthetic fun number ()I
}

public abstract interface annotation class kotlinx/serialization/protobuf/ProtoOneOf : java/lang/annotation/Annotation {
}

public synthetic class kotlinx/serialization/protobuf/ProtoOneOf$Impl : kotlinx/serialization/protobuf/ProtoOneOf {
	public fun <init> ()V
}

public abstract interface annotation class kotlinx/serialization/protobuf/ProtoPacked : java/lang/annotation/Annotation {
}

public synthetic class kotlinx/serialization/protobuf/ProtoPacked$Impl : kotlinx/serialization/protobuf/ProtoPacked {
	public fun <init> ()V
}

public abstract interface annotation class kotlinx/serialization/protobuf/ProtoType : java/lang/annotation/Annotation {
	public abstract fun type ()Lkotlinx/serialization/protobuf/ProtoIntegerType;
}

public synthetic class kotlinx/serialization/protobuf/ProtoType$Impl : kotlinx/serialization/protobuf/ProtoType {
	public fun <init> (Lkotlinx/serialization/protobuf/ProtoIntegerType;)V
	public final synthetic fun type ()Lkotlinx/serialization/protobuf/ProtoIntegerType;
}

public final class kotlinx/serialization/protobuf/schema/ProtoBufSchemaGenerator {
	public static final field INSTANCE Lkotlinx/serialization/protobuf/schema/ProtoBufSchemaGenerator;
	public final fun generateSchemaText (Ljava/util/List;Ljava/lang/String;Ljava/util/Map;)Ljava/lang/String;
	public final fun generateSchemaText (Lkotlinx/serialization/descriptors/SerialDescriptor;Ljava/lang/String;Ljava/util/Map;)Ljava/lang/String;
	public static synthetic fun generateSchemaText$default (Lkotlinx/serialization/protobuf/schema/ProtoBufSchemaGenerator;Ljava/util/List;Ljava/lang/String;Ljava/util/Map;ILjava/lang/Object;)Ljava/lang/String;
	public static synthetic fun generateSchemaText$default (Lkotlinx/serialization/protobuf/schema/ProtoBufSchemaGenerator;Lkotlinx/serialization/descriptors/SerialDescriptor;Ljava/lang/String;Ljava/util/Map;ILjava/lang/Object;)Ljava/lang/String;
}

