import typing

import java
import java.chaquopy
import java.io
import java.lang

class ProtoOutputStream(java.lang.Object):
    FIELD_COUNT_MASK: typing.ClassVar[int] = ...
    FIELD_COUNT_PACKED: typing.ClassVar[int] = ...
    FIELD_COUNT_REPEATED: typing.ClassVar[int] = ...
    FIELD_COUNT_SHIFT: typing.ClassVar[int] = ...
    FIELD_COUNT_SINGLE: typing.ClassVar[int] = ...
    FIELD_COUNT_UNKNOWN: typing.ClassVar[int] = ...
    FIELD_ID_SHIFT: typing.ClassVar[int] = ...
    FIELD_TYPE_BOOL: typing.ClassVar[int] = ...
    FIELD_TYPE_BYTES: typing.ClassVar[int] = ...
    FIELD_TYPE_DOUBLE: typing.ClassVar[int] = ...
    FIELD_TYPE_ENUM: typing.ClassVar[int] = ...
    FIELD_TYPE_FIXED32: typing.ClassVar[int] = ...
    FIELD_TYPE_FIXED64: typing.ClassVar[int] = ...
    FIELD_TYPE_FLOAT: typing.ClassVar[int] = ...
    FIELD_TYPE_INT32: typing.ClassVar[int] = ...
    FIELD_TYPE_INT64: typing.ClassVar[int] = ...
    FIELD_TYPE_MASK: typing.ClassVar[int] = ...
    FIELD_TYPE_MESSAGE: typing.ClassVar[int] = ...
    FIELD_TYPE_SFIXED32: typing.ClassVar[int] = ...
    FIELD_TYPE_SFIXED64: typing.ClassVar[int] = ...
    FIELD_TYPE_SHIFT: typing.ClassVar[int] = ...
    FIELD_TYPE_SINT32: typing.ClassVar[int] = ...
    FIELD_TYPE_SINT64: typing.ClassVar[int] = ...
    FIELD_TYPE_STRING: typing.ClassVar[int] = ...
    FIELD_TYPE_UINT32: typing.ClassVar[int] = ...
    FIELD_TYPE_UINT64: typing.ClassVar[int] = ...
    WIRE_TYPE_END_GROUP: typing.ClassVar[int] = ...
    WIRE_TYPE_FIXED32: typing.ClassVar[int] = ...
    WIRE_TYPE_FIXED64: typing.ClassVar[int] = ...
    WIRE_TYPE_LENGTH_DELIMITED: typing.ClassVar[int] = ...
    WIRE_TYPE_MASK: typing.ClassVar[int] = ...
    WIRE_TYPE_START_GROUP: typing.ClassVar[int] = ...
    WIRE_TYPE_VARINT: typing.ClassVar[int] = ...
    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, chunkSize: int | java.jint | java.lang.Integer, /) -> None: ...
    @typing.overload
    def __init__(self, stream: java.io.OutputStream, /) -> None: ...
    @staticmethod
    def checkFieldId(fieldId: int | java.jlong | java.lang.Long, expectedFlags: int | java.jlong | java.lang.Long, /) -> int: ...
    def dump(self, tag: str | java.lang.String, /) -> None: ...
    def end(self, token: int | java.jlong | java.lang.Long, /) -> None: ...
    def flush(self) -> None: ...
    def getBytes(self) -> java.chaquopy.JavaArrayJByte: ...
    @staticmethod
    def getFieldCountString(fieldCount: int | java.jlong | java.lang.Long, /) -> str: ...
    @staticmethod
    def getFieldIdString(fieldId: int | java.jlong | java.lang.Long, /) -> str: ...
    @staticmethod
    def getFieldTypeString(fieldType: int | java.jlong | java.lang.Long, /) -> str: ...
    def getRawSize(self) -> int: ...
    @staticmethod
    def getWireTypeString(wireType: int | java.jint | java.lang.Integer, /) -> str: ...
    @staticmethod
    def makeFieldId(id: int | java.jint | java.lang.Integer, fieldFlags: int | java.jlong | java.lang.Long, /) -> int: ...
    @staticmethod
    def makeToken(tagSize: int | java.jint | java.lang.Integer, repeated: bool | java.jboolean | java.lang.Boolean, depth: int | java.jint | java.lang.Integer, objectId: int | java.jint | java.lang.Integer, offset: int | java.jint | java.lang.Integer, /) -> int: ...
    def start(self, fieldId: int | java.jlong | java.lang.Long, /) -> int: ...
    @staticmethod
    def token2String(token: int | java.jlong | java.lang.Long, /) -> str: ...
    @typing.overload
    def write(self, fieldId: int | java.jlong | java.lang.Long, val: float | java.jdouble | java.lang.Double, /) -> None: ...
    @typing.overload
    def write(self, fieldId: int | java.jlong | java.lang.Long, val: float | java.jfloat | java.lang.Float, /) -> None: ...
    @typing.overload
    def write(self, fieldId: int | java.jlong | java.lang.Long, val: int | java.jint | java.lang.Integer, /) -> None: ...
    @typing.overload
    def write(self, fieldId: int | java.jlong | java.lang.Long, val: int | java.jlong | java.lang.Long, /) -> None: ...
    @typing.overload
    def write(self, fieldId: int | java.jlong | java.lang.Long, val: str | java.lang.String, /) -> None: ...
    @typing.overload
    def write(self, fieldId: int | java.jlong | java.lang.Long, val: bool | java.jboolean | java.lang.Boolean, /) -> None: ...
    @typing.overload
    def write(self, fieldId: int | java.jlong | java.lang.Long, val: java.chaquopy.JavaArrayJByte, /) -> None: ...
    def writeTag(self, id: int | java.jint | java.lang.Integer, wireType: int | java.jint | java.lang.Integer, /) -> None: ...
