from __future__ import annotations

import flatbuffers

import typing

uoffset: typing.TypeAlias = flatbuffers.number_types.UOffsetTFlags.py_type

class HelloRequest(object):
  @classmethod
  def GetRootAs(cls, buf: bytes, offset: int) -> HelloRequest: ...
  @classmethod
  def GetRootAsHelloRequest(cls, buf: bytes, offset: int) -> HelloRequest: ...
  def Init(self, buf: bytes, pos: int) -> None: ...
def HelloRequestStart(builder: flatbuffers.Builder) -> None: ...
def HelloRequestEnd(builder: flatbuffers.Builder) -> uoffset: ...
class HelloResponse(object):
  @classmethod
  def GetRootAs(cls, buf: bytes, offset: int) -> HelloResponse: ...
  @classmethod
  def GetRootAsHelloResponse(cls, buf: bytes, offset: int) -> HelloResponse: ...
  def Init(self, buf: bytes, pos: int) -> None: ...
def HelloResponseStart(builder: flatbuffers.Builder) -> None: ...
def HelloResponseEnd(builder: flatbuffers.Builder) -> uoffset: ...

