"""
@generated by mypy-protobuf.  Do not edit manually!
isort:skip_file
"""
import abc
import collections.abc
import grpc
import prodvana.proto.prodvana.agent.agent_interaction_pb2

class AgentInteractionStub:
    def __init__(self, channel: grpc.Channel) -> None: ...
    Heartbeat: grpc.UnaryUnaryMultiCallable[
        prodvana.proto.prodvana.agent.agent_interaction_pb2.HeartbeatReq,
        prodvana.proto.prodvana.agent.agent_interaction_pb2.HeartbeatResp,
    ]
    ConfirmPushApproval: grpc.UnaryUnaryMultiCallable[
        prodvana.proto.prodvana.agent.agent_interaction_pb2.ConfirmPushApprovalReq,
        prodvana.proto.prodvana.agent.agent_interaction_pb2.ConfirmPushApprovalResp,
    ]
    RecordNewUnknownPush: grpc.UnaryUnaryMultiCallable[
        prodvana.proto.prodvana.agent.agent_interaction_pb2.RecordNewUnknownPushReq,
        prodvana.proto.prodvana.agent.agent_interaction_pb2.RecordNewUnknownPushResp,
    ]
    RecordPushStart: grpc.UnaryUnaryMultiCallable[
        prodvana.proto.prodvana.agent.agent_interaction_pb2.RecordPushStartReq,
        prodvana.proto.prodvana.agent.agent_interaction_pb2.RecordPushStartResp,
    ]
    RecordPushOngoing: grpc.UnaryUnaryMultiCallable[
        prodvana.proto.prodvana.agent.agent_interaction_pb2.RecordPushOngoingReq,
        prodvana.proto.prodvana.agent.agent_interaction_pb2.RecordPushOngoingResp,
    ]
    RecordPushComplete: grpc.UnaryUnaryMultiCallable[
        prodvana.proto.prodvana.agent.agent_interaction_pb2.RecordPushCompleteReq,
        prodvana.proto.prodvana.agent.agent_interaction_pb2.RecordPushCompleteResp,
    ]
    RecordPod: grpc.UnaryUnaryMultiCallable[
        prodvana.proto.prodvana.agent.agent_interaction_pb2.RecordPodReq,
        prodvana.proto.prodvana.agent.agent_interaction_pb2.RecordPodResp,
    ]
    RecordPods: grpc.UnaryUnaryMultiCallable[
        prodvana.proto.prodvana.agent.agent_interaction_pb2.RecordPodsReq,
        prodvana.proto.prodvana.agent.agent_interaction_pb2.RecordPodsResp,
    ]
    """Dump a snapshot of all pods for a service. Can potentially contain multiple services, or all services.
    Guaranteed to contain all pods for one service.
    """
    RecordDeployment: grpc.UnaryUnaryMultiCallable[
        prodvana.proto.prodvana.agent.agent_interaction_pb2.RecordDeploymentReq,
        prodvana.proto.prodvana.agent.agent_interaction_pb2.RecordDeploymentResp,
    ]
    RecordRollout: grpc.UnaryUnaryMultiCallable[
        prodvana.proto.prodvana.agent.agent_interaction_pb2.RecordRolloutReq,
        prodvana.proto.prodvana.agent.agent_interaction_pb2.RecordRolloutResp,
    ]
    ProxyAPIServer: grpc.StreamStreamMultiCallable[
        prodvana.proto.prodvana.agent.agent_interaction_pb2.ProxyAPIServerReq,
        prodvana.proto.prodvana.agent.agent_interaction_pb2.ProxyAPIServerResp,
    ]
    ReportDebugInfo: grpc.UnaryUnaryMultiCallable[
        prodvana.proto.prodvana.agent.agent_interaction_pb2.ReportDebugInfoReq,
        prodvana.proto.prodvana.agent.agent_interaction_pb2.ReportDebugInfoResp,
    ]
    ReportClusterMetadata: grpc.UnaryUnaryMultiCallable[
        prodvana.proto.prodvana.agent.agent_interaction_pb2.ReportClusterMetadataReq,
        prodvana.proto.prodvana.agent.agent_interaction_pb2.ReportClusterMetadataResp,
    ]

class AgentInteractionServicer(metaclass=abc.ABCMeta):
    @abc.abstractmethod
    def Heartbeat(
        self,
        request: prodvana.proto.prodvana.agent.agent_interaction_pb2.HeartbeatReq,
        context: grpc.ServicerContext,
    ) -> prodvana.proto.prodvana.agent.agent_interaction_pb2.HeartbeatResp: ...
    @abc.abstractmethod
    def ConfirmPushApproval(
        self,
        request: prodvana.proto.prodvana.agent.agent_interaction_pb2.ConfirmPushApprovalReq,
        context: grpc.ServicerContext,
    ) -> prodvana.proto.prodvana.agent.agent_interaction_pb2.ConfirmPushApprovalResp: ...
    @abc.abstractmethod
    def RecordNewUnknownPush(
        self,
        request: prodvana.proto.prodvana.agent.agent_interaction_pb2.RecordNewUnknownPushReq,
        context: grpc.ServicerContext,
    ) -> prodvana.proto.prodvana.agent.agent_interaction_pb2.RecordNewUnknownPushResp: ...
    @abc.abstractmethod
    def RecordPushStart(
        self,
        request: prodvana.proto.prodvana.agent.agent_interaction_pb2.RecordPushStartReq,
        context: grpc.ServicerContext,
    ) -> prodvana.proto.prodvana.agent.agent_interaction_pb2.RecordPushStartResp: ...
    @abc.abstractmethod
    def RecordPushOngoing(
        self,
        request: prodvana.proto.prodvana.agent.agent_interaction_pb2.RecordPushOngoingReq,
        context: grpc.ServicerContext,
    ) -> prodvana.proto.prodvana.agent.agent_interaction_pb2.RecordPushOngoingResp: ...
    @abc.abstractmethod
    def RecordPushComplete(
        self,
        request: prodvana.proto.prodvana.agent.agent_interaction_pb2.RecordPushCompleteReq,
        context: grpc.ServicerContext,
    ) -> prodvana.proto.prodvana.agent.agent_interaction_pb2.RecordPushCompleteResp: ...
    @abc.abstractmethod
    def RecordPod(
        self,
        request: prodvana.proto.prodvana.agent.agent_interaction_pb2.RecordPodReq,
        context: grpc.ServicerContext,
    ) -> prodvana.proto.prodvana.agent.agent_interaction_pb2.RecordPodResp: ...
    @abc.abstractmethod
    def RecordPods(
        self,
        request: prodvana.proto.prodvana.agent.agent_interaction_pb2.RecordPodsReq,
        context: grpc.ServicerContext,
    ) -> prodvana.proto.prodvana.agent.agent_interaction_pb2.RecordPodsResp:
        """Dump a snapshot of all pods for a service. Can potentially contain multiple services, or all services.
        Guaranteed to contain all pods for one service.
        """
    @abc.abstractmethod
    def RecordDeployment(
        self,
        request: prodvana.proto.prodvana.agent.agent_interaction_pb2.RecordDeploymentReq,
        context: grpc.ServicerContext,
    ) -> prodvana.proto.prodvana.agent.agent_interaction_pb2.RecordDeploymentResp: ...
    @abc.abstractmethod
    def RecordRollout(
        self,
        request: prodvana.proto.prodvana.agent.agent_interaction_pb2.RecordRolloutReq,
        context: grpc.ServicerContext,
    ) -> prodvana.proto.prodvana.agent.agent_interaction_pb2.RecordRolloutResp: ...
    @abc.abstractmethod
    def ProxyAPIServer(
        self,
        request_iterator: collections.abc.Iterator[prodvana.proto.prodvana.agent.agent_interaction_pb2.ProxyAPIServerReq],
        context: grpc.ServicerContext,
    ) -> collections.abc.Iterator[prodvana.proto.prodvana.agent.agent_interaction_pb2.ProxyAPIServerResp]: ...
    @abc.abstractmethod
    def ReportDebugInfo(
        self,
        request: prodvana.proto.prodvana.agent.agent_interaction_pb2.ReportDebugInfoReq,
        context: grpc.ServicerContext,
    ) -> prodvana.proto.prodvana.agent.agent_interaction_pb2.ReportDebugInfoResp: ...
    @abc.abstractmethod
    def ReportClusterMetadata(
        self,
        request: prodvana.proto.prodvana.agent.agent_interaction_pb2.ReportClusterMetadataReq,
        context: grpc.ServicerContext,
    ) -> prodvana.proto.prodvana.agent.agent_interaction_pb2.ReportClusterMetadataResp: ...

def add_AgentInteractionServicer_to_server(servicer: AgentInteractionServicer, server: grpc.Server) -> None: ...
