import builtins
import google.protobuf.any_pb2
import google.protobuf.message
import google.rpc.code_pb2
import typing

class Error(google.protobuf.message.Message):

    def __init__(self, *, message: typing.Optional[builtins.str]=None, details: typing.Sequence[google.protobuf.any_pb2.Any]) -> None:...

    @builtins.property
    def message(self) -> builtins.str:...

    @builtins.property
    def details(self) -> typing.Sequence[google.protobuf.any_pb2.Any]:...

    def HasField(self, field_name: typing.Literal['message']) -> builtins.bool:...

    def WhichOneof(self, oneof_group: typing.NoReturn) -> typing.NoReturn:...

class UnaryRequest(google.protobuf.message.Message):

    def __init__(self, *, uuid: builtins.bytes, payload: google.protobuf.any_pb2.Any) -> None:...

    @builtins.property
    def uuid(self) -> builtins.bytes:...

    @builtins.property
    def payload(self) -> google.protobuf.any_pb2.Any:...

    def HasField(self, field_name: typing.NoReturn) -> typing.NoReturn:...

    def WhichOneof(self, oneof_group: typing.NoReturn) -> typing.NoReturn:...

class UnaryResponse(google.protobuf.message.Message):

    def __init__(self, *, uuid: builtins.bytes, code: google.rpc.code_pb2.Code, payload: typing.Optional[google.protobuf.any_pb2.Any]=None, error: typing.Optional[Error]=None) -> None:...

    @builtins.property
    def uuid(self) -> builtins.bytes:...

    @builtins.property
    def code(self) -> google.rpc.code_pb2.Code:...

    @builtins.property
    def payload(self) -> google.protobuf.any_pb2.Any:...

    @builtins.property
    def error(self) -> Error:...

    def HasField(self, field_name: typing.Literal['payload', 'error']) -> builtins.bool:...

    def WhichOneof(self, oneof_group: typing.NoReturn) -> typing.NoReturn:...

class StreamRequest(google.protobuf.message.Message):

    class Start(google.protobuf.message.Message):

        def __init__(self) -> None:...

        def HasField(self, field_name: typing.NoReturn) -> typing.NoReturn:...

        def WhichOneof(self, oneof_group: typing.NoReturn) -> typing.NoReturn:...

    class Part(google.protobuf.message.Message):

        def __init__(self, *, payloads: typing.Sequence[google.protobuf.any_pb2.Any]) -> None:...

        @builtins.property
        def payloads(self) -> typing.Sequence[google.protobuf.any_pb2.Any]:...

        def HasField(self, field_name: typing.NoReturn) -> typing.NoReturn:...

        def WhichOneof(self, oneof_group: typing.NoReturn) -> typing.NoReturn:...

    class End(google.protobuf.message.Message):

        def __init__(self) -> None:...

        def HasField(self, field_name: typing.NoReturn) -> typing.NoReturn:...

        def WhichOneof(self, oneof_group: typing.NoReturn) -> typing.NoReturn:...

    def __init__(self, *, uuid: builtins.bytes, index: builtins.int, start: typing.Optional[StreamRequest.Start]=None, part: typing.Optional[StreamRequest.Part]=None, end: typing.Optional[StreamRequest.End]=None) -> None:...

    @builtins.property
    def uuid(self) -> builtins.bytes:...

    @builtins.property
    def index(self) -> builtins.int:...

    @builtins.property
    def start(self) -> StreamRequest.Start:...

    @builtins.property
    def part(self) -> StreamRequest.Part:...

    @builtins.property
    def end(self) -> StreamRequest.End:...

    def HasField(self, field_name: typing.NoReturn) -> typing.NoReturn:...

    def WhichOneof(self, oneof_group: typing.Literal['event']) -> typing.Optional[typing.Literal['start', 'part', 'end']]:...

class StreamResponse(google.protobuf.message.Message):

    class Start(google.protobuf.message.Message):

        def __init__(self) -> None:...

        def HasField(self, field_name: typing.NoReturn) -> typing.NoReturn:...

        def WhichOneof(self, oneof_group: typing.NoReturn) -> typing.NoReturn:...

    class Part(google.protobuf.message.Message):

        def __init__(self, *, payloads: typing.Sequence[google.protobuf.any_pb2.Any]) -> None:...

        @builtins.property
        def payloads(self) -> typing.Sequence[google.protobuf.any_pb2.Any]:...

        def HasField(self, field_name: typing.NoReturn) -> typing.NoReturn:...

        def WhichOneof(self, oneof_group: typing.NoReturn) -> typing.NoReturn:...

    class End(google.protobuf.message.Message):

        def __init__(self, *, code: google.rpc.code_pb2.Code, error: typing.Optional[Error]=None) -> None:...

        @builtins.property
        def code(self) -> google.rpc.code_pb2.Code:...

        @builtins.property
        def error(self) -> Error:...

        def HasField(self, field_name: typing.Literal['error']) -> builtins.bool:...

        def WhichOneof(self, oneof_group: typing.NoReturn) -> typing.NoReturn:...

    def __init__(self, *, uuid: builtins.bytes, index: builtins.int, start: typing.Optional[StreamResponse.Start]=None, part: typing.Optional[StreamResponse.Part]=None, end: typing.Optional[StreamResponse.End]=None) -> None:...

    @builtins.property
    def uuid(self) -> builtins.bytes:...

    @builtins.property
    def index(self) -> builtins.int:...

    @builtins.property
    def start(self) -> StreamResponse.Start:...

    @builtins.property
    def part(self) -> StreamResponse.Part:...

    @builtins.property
    def end(self) -> StreamResponse.End:...

    def HasField(self, field_name: typing.NoReturn) -> typing.NoReturn:...

    def WhichOneof(self, oneof_group: typing.Literal['event']) -> typing.Optional[typing.Literal['start', 'part', 'end']]:...