# @generated by generate_proto_mypy_stubs.py.  Do not edit!
from abc import (
    ABCMeta as abc___ABCMeta,
    abstractmethod as abc___abstractmethod,
)

from concurrent.futures import (
    Future as concurrent___futures___Future,
)

from google.protobuf.empty_pb2 import (
    Empty as google___protobuf___empty_pb2___Empty,
)

from google.protobuf.message import (
    Message as google___protobuf___message___Message,
)

from typing import (
    Any as typing___Any,
    Callable as typing___Callable,
    Optional as typing___Optional,
    Text as typing___Text,
)


class SayHelloRequest(google___protobuf___message___Message):
    name = ... # type: typing___Text

    def __init__(self,
        name : typing___Optional[typing___Text] = None,
        ) -> None: ...
    @classmethod
    def FromString(cls, s: bytes) -> SayHelloRequest: ...
    def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
    def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ...

class SayHelloResponse(google___protobuf___message___Message):
    text = ... # type: typing___Text

    def __init__(self,
        text : typing___Optional[typing___Text] = None,
        ) -> None: ...
    @classmethod
    def FromString(cls, s: bytes) -> SayHelloResponse: ...
    def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
    def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ...

class GetNumbersResponse(google___protobuf___message___Message):
    number = ... # type: int

    def __init__(self,
        number : typing___Optional[int] = None,
        ) -> None: ...
    @classmethod
    def FromString(cls, s: bytes) -> GetNumbersResponse: ...
    def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
    def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ...

class MultiplyNumbersRequest(google___protobuf___message___Message):
    number = ... # type: int

    def __init__(self,
        number : typing___Optional[int] = None,
        ) -> None: ...
    @classmethod
    def FromString(cls, s: bytes) -> MultiplyNumbersRequest: ...
    def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
    def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ...

class MultiplyNumbersResponse(google___protobuf___message___Message):
    number = ... # type: int

    def __init__(self,
        number : typing___Optional[int] = None,
        ) -> None: ...
    @classmethod
    def FromString(cls, s: bytes) -> MultiplyNumbersResponse: ...
    def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
    def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ...

class HelloWorld(typing___Any, metaclass=abc___ABCMeta):
    @abc___abstractmethod
    def SayHello(self,
        rpc_controller: typing___Any,
        request: SayHelloRequest,
        done: typing___Optional[typing___Callable[[SayHelloResponse], None]],
    ) -> concurrent___futures___Future[SayHelloResponse]: ...
    @abc___abstractmethod
    def GetNumbers(self,
        rpc_controller: typing___Any,
        request: google___protobuf___empty_pb2___Empty,
        done: typing___Optional[typing___Callable[[GetNumbersResponse], None]],
    ) -> concurrent___futures___Future[GetNumbersResponse]: ...
    @abc___abstractmethod
    def MultiplyNumbers(self,
        rpc_controller: typing___Any,
        request: MultiplyNumbersRequest,
        done: typing___Optional[typing___Callable[[MultiplyNumbersResponse], None]],
    ) -> concurrent___futures___Future[MultiplyNumbersResponse]: ...
class HelloWorld_Stub(HelloWorld):
    def __init__(self, rpc_channel: typing___Any) -> None: ...
    def SayHello(self,
        rpc_controller: typing___Any,
        request: SayHelloRequest,
        done: typing___Optional[typing___Callable[[SayHelloResponse], None]],
    ) -> concurrent___futures___Future[SayHelloResponse]: ...
    def GetNumbers(self,
        rpc_controller: typing___Any,
        request: google___protobuf___empty_pb2___Empty,
        done: typing___Optional[typing___Callable[[GetNumbersResponse], None]],
    ) -> concurrent___futures___Future[GetNumbersResponse]: ...
    def MultiplyNumbers(self,
        rpc_controller: typing___Any,
        request: MultiplyNumbersRequest,
        done: typing___Optional[typing___Callable[[MultiplyNumbersResponse], None]],
    ) -> concurrent___futures___Future[MultiplyNumbersResponse]: ...