"""
@generated by mypy-protobuf.  Do not edit manually!
isort:skip_file
"""

import abc
from . import allegoserver_pb2
from . import biointerface_pb2
import collections.abc
from . import common_pb2
from . import datasource_pb2
import grpc
import grpc.aio
from . import spikesorter_pb2
import typing

_T = typing.TypeVar("_T")

class _MaybeAsyncIterator(collections.abc.AsyncIterator[_T], collections.abc.Iterator[_T], metaclass=abc.ABCMeta): ...

class _ServicerContext(grpc.ServicerContext, grpc.aio.ServicerContext):  # type: ignore[misc, type-arg]
    ...

class AllegoLifecycleStub:
    """AllegoLifecycle service is for interactions with AllegoServer that don't require an instance of backbone, spikesorter, etc"""

    def __init__(self, channel: typing.Union[grpc.Channel, grpc.aio.Channel]) -> None: ...
    Healthcheck: grpc.UnaryUnaryMultiCallable[
        common_pb2.StandardRequest,
        common_pb2.StandardReply,
    ]
    """Lifecycle"""

    LaunchSummaService: grpc.UnaryUnaryMultiCallable[
        common_pb2.StandardRequest,
        common_pb2.StandardReply,
    ]

    GetStartupStatus: grpc.UnaryUnaryMultiCallable[
        common_pb2.StandardRequest,
        common_pb2.StartupStatus,
    ]

    GetRadiensServers: grpc.UnaryUnaryMultiCallable[
        common_pb2.GetRadiensServersRequest,
        common_pb2.RadiensServersReply,
    ]

    GetOfflineLicenseStatus: grpc.UnaryUnaryMultiCallable[
        common_pb2.StandardRequest,
        common_pb2.OfflineLicenseStatus,
    ]

class AllegoLifecycleAsyncStub:
    """AllegoLifecycle service is for interactions with AllegoServer that don't require an instance of backbone, spikesorter, etc"""

    Healthcheck: grpc.aio.UnaryUnaryMultiCallable[
        common_pb2.StandardRequest,
        common_pb2.StandardReply,
    ]
    """Lifecycle"""

    LaunchSummaService: grpc.aio.UnaryUnaryMultiCallable[
        common_pb2.StandardRequest,
        common_pb2.StandardReply,
    ]

    GetStartupStatus: grpc.aio.UnaryUnaryMultiCallable[
        common_pb2.StandardRequest,
        common_pb2.StartupStatus,
    ]

    GetRadiensServers: grpc.aio.UnaryUnaryMultiCallable[
        common_pb2.GetRadiensServersRequest,
        common_pb2.RadiensServersReply,
    ]

    GetOfflineLicenseStatus: grpc.aio.UnaryUnaryMultiCallable[
        common_pb2.StandardRequest,
        common_pb2.OfflineLicenseStatus,
    ]

class AllegoLifecycleServicer(metaclass=abc.ABCMeta):
    """AllegoLifecycle service is for interactions with AllegoServer that don't require an instance of backbone, spikesorter, etc"""

    @abc.abstractmethod
    def Healthcheck(
        self,
        request: common_pb2.StandardRequest,
        context: _ServicerContext,
    ) -> typing.Union[common_pb2.StandardReply, collections.abc.Awaitable[common_pb2.StandardReply]]:
        """Lifecycle"""

    @abc.abstractmethod
    def LaunchSummaService(
        self,
        request: common_pb2.StandardRequest,
        context: _ServicerContext,
    ) -> typing.Union[common_pb2.StandardReply, collections.abc.Awaitable[common_pb2.StandardReply]]: ...

    @abc.abstractmethod
    def GetStartupStatus(
        self,
        request: common_pb2.StandardRequest,
        context: _ServicerContext,
    ) -> typing.Union[common_pb2.StartupStatus, collections.abc.Awaitable[common_pb2.StartupStatus]]: ...

    @abc.abstractmethod
    def GetRadiensServers(
        self,
        request: common_pb2.GetRadiensServersRequest,
        context: _ServicerContext,
    ) -> typing.Union[common_pb2.RadiensServersReply, collections.abc.Awaitable[common_pb2.RadiensServersReply]]: ...

    @abc.abstractmethod
    def GetOfflineLicenseStatus(
        self,
        request: common_pb2.StandardRequest,
        context: _ServicerContext,
    ) -> typing.Union[common_pb2.OfflineLicenseStatus, collections.abc.Awaitable[common_pb2.OfflineLicenseStatus]]: ...

def add_AllegoLifecycleServicer_to_server(servicer: AllegoLifecycleServicer, server: typing.Union[grpc.Server, grpc.aio.Server]) -> None: ...

class AllegoCoreStub:
    def __init__(self, channel: typing.Union[grpc.Channel, grpc.aio.Channel]) -> None: ...
    Healthcheck: grpc.UnaryUnaryMultiCallable[
        common_pb2.StandardRequest,
        common_pb2.StandardReply,
    ]

    Restart: grpc.UnaryUnaryMultiCallable[
        allegoserver_pb2.RestartRequest,
        common_pb2.StandardReply,
    ]

    Close: grpc.UnaryUnaryMultiCallable[
        common_pb2.StandardRequest,
        common_pb2.StandardReply,
    ]

    GetRadixEnvironment: grpc.UnaryUnaryMultiCallable[
        common_pb2.StandardRequest,
        common_pb2.RadixEnvironment,
    ]

    WorkspaceControl: grpc.UnaryUnaryMultiCallable[
        common_pb2.WorkspaceControlRequest,
        common_pb2.StandardReply,
    ]

    GetStatusPollFieldsToUpdate: grpc.UnaryUnaryMultiCallable[
        common_pb2.StatusPollFieldsToUpdateRequest,
        common_pb2.StatusPollFieldsToUpdate,
    ]

    GetHardwareUUID: grpc.UnaryUnaryMultiCallable[
        common_pb2.StandardRequest,
        common_pb2.HardwareUUIDResponse,
    ]

    SetConfigCore: grpc.UnaryUnaryMultiCallable[
        allegoserver_pb2.SetConfigCoreRequest,
        common_pb2.StandardReply,
    ]
    """Setters"""

    SetProfileState: grpc.UnaryUnaryMultiCallable[
        allegoserver_pb2.SetProfileRequest,
        common_pb2.StandardReply,
    ]

    SetConfigRecording: grpc.UnaryUnaryMultiCallable[
        allegoserver_pb2.ConfigRecording,
        common_pb2.StandardReply,
    ]

    SetStreamState: grpc.UnaryUnaryMultiCallable[
        allegoserver_pb2.SetStreamRequest,
        common_pb2.StandardReply,
    ]

    SetRecordState: grpc.UnaryUnaryMultiCallable[
        allegoserver_pb2.SetRecordRequest,
        common_pb2.StandardReply,
    ]

    SetDIOEvents: grpc.UnaryUnaryMultiCallable[
        allegoserver_pb2.DIOModeEventsRequest,
        common_pb2.StandardReply,
    ]

    SetDIOManual: grpc.UnaryUnaryMultiCallable[
        allegoserver_pb2.DIOModeManualRequest,
        common_pb2.StandardReply,
    ]

    SetDIOGated: grpc.UnaryUnaryMultiCallable[
        allegoserver_pb2.DIOModeGatedRequest,
        common_pb2.StandardReply,
    ]

    SetDIOPulse: grpc.UnaryUnaryMultiCallable[
        allegoserver_pb2.DIOModePulseRequest,
        common_pb2.StandardReply,
    ]

    SetDACGain: grpc.UnaryUnaryMultiCallable[
        allegoserver_pb2.DACGainRequest,
        common_pb2.StandardReply,
    ]

    SetDACStream: grpc.UnaryUnaryMultiCallable[
        common_pb2.DACStreamRequest,
        common_pb2.StandardReply,
    ]

    SetDACOff: grpc.UnaryUnaryMultiCallable[
        common_pb2.DACOffRequest,
        common_pb2.StandardReply,
    ]

    SetDACHighPass: grpc.UnaryUnaryMultiCallable[
        allegoserver_pb2.DACHighPassRegister,
        common_pb2.StandardReply,
    ]

    SetSimPorts: grpc.UnaryUnaryMultiCallable[
        allegoserver_pb2.SetSimPortsRequest,
        common_pb2.StandardReply,
    ]

    SetHasBNCBreakout: grpc.UnaryUnaryMultiCallable[
        allegoserver_pb2.SetHasBNCBreakoutRequest,
        common_pb2.StandardReply,
    ]

    SetMuxChannel: grpc.UnaryUnaryMultiCallable[
        allegoserver_pb2.SetMuxChannelRequest,
        common_pb2.StandardReply,
    ]

    SetTriggerState: grpc.UnaryUnaryMultiCallable[
        allegoserver_pb2.SetTriggerRequest,
        common_pb2.StandardReply,
    ]

    SetPotVoltage: grpc.UnaryUnaryMultiCallable[
        allegoserver_pb2.SetPotVoltageRequest,
        common_pb2.StandardReply,
    ]

    SetPotRange: grpc.UnaryUnaryMultiCallable[
        allegoserver_pb2.SetPotRangeRequest,
        common_pb2.StandardReply,
    ]

    SetPotMode: grpc.UnaryUnaryMultiCallable[
        allegoserver_pb2.SetPotModeRequest,
        common_pb2.StandardReply,
    ]

    SetPotCellEnable: grpc.UnaryUnaryMultiCallable[
        allegoserver_pb2.SetPotCellEnableRequest,
        common_pb2.StandardReply,
    ]

    SetDSPGroup: grpc.UnaryUnaryMultiCallable[
        common_pb2.SetDSPGroupRequest,
        common_pb2.StandardReply,
    ]

    SetStimParams: grpc.UnaryUnaryMultiCallable[
        allegoserver_pb2.StimParams,
        common_pb2.StandardReply,
    ]

    GetStimParams: grpc.UnaryUnaryMultiCallable[
        common_pb2.StandardRequest,
        allegoserver_pb2.StimParamsReply,
    ]

    SetStimStep: grpc.UnaryUnaryMultiCallable[
        allegoserver_pb2.StimStepMessage,
        common_pb2.StandardReply,
    ]

    GetStimStep: grpc.UnaryUnaryMultiCallable[
        common_pb2.StandardRequest,
        allegoserver_pb2.StimStepMessage,
    ]

    ManualStimTrigger: grpc.UnaryUnaryMultiCallable[
        allegoserver_pb2.ManualStimTriggerRequest,
        common_pb2.StandardReply,
    ]

    ManualStimTriggerToggle: grpc.UnaryUnaryMultiCallable[
        allegoserver_pb2.ManualStimTriggerToggleRequest,
        common_pb2.StandardReply,
    ]

    GetConfig: grpc.UnaryUnaryMultiCallable[
        common_pb2.StandardRequest,
        allegoserver_pb2.ConfigCore,
    ]
    """Getters"""

    GetWorkspace: grpc.UnaryUnaryMultiCallable[
        common_pb2.GetWorkspaceRequest,
        common_pb2.GetWorkspaceReply,
    ]

    GetConfigRecording: grpc.UnaryUnaryMultiCallable[
        common_pb2.StandardRequest,
        allegoserver_pb2.ConfigRecording,
    ]

    GetStatus: grpc.UnaryUnaryMultiCallable[
        common_pb2.StandardRequest,
        allegoserver_pb2.BackboneStatus,
    ]

    GetConfigAndStatus: grpc.UnaryUnaryMultiCallable[
        common_pb2.StandardRequest,
        allegoserver_pb2.ConfigAndStatus,
    ]

    GetDataSourceParams: grpc.UnaryUnaryMultiCallable[
        common_pb2.SignalGroupIDRequest,
        datasource_pb2.DataSourceParams,
    ]

    GetIntanImpedance: grpc.UnaryUnaryMultiCallable[
        datasource_pb2.ImpedanceRequest,
        datasource_pb2.Impedance,
    ]

    GetDSPGroup: grpc.UnaryUnaryMultiCallable[
        common_pb2.SignalGroupIDRequest,
        common_pb2.DSPGroup,
    ]

    GetDIOReg: grpc.UnaryUnaryMultiCallable[
        common_pb2.StandardRequest,
        allegoserver_pb2.DigitalOutRegister,
    ]

    GetDACReg: grpc.UnaryUnaryMultiCallable[
        common_pb2.StandardRequest,
        allegoserver_pb2.AnalogOutRegister,
    ]

    GetSerial: grpc.UnaryUnaryMultiCallable[
        common_pb2.StandardRequest,
        allegoserver_pb2.SerialNumber,
    ]

    GetTriggerState: grpc.UnaryUnaryMultiCallable[
        common_pb2.StandardRequest,
        allegoserver_pb2.TriggerState,
    ]

    GetADCLevel: grpc.UnaryUnaryMultiCallable[
        common_pb2.StandardRequest,
        allegoserver_pb2.GetADCLevelReply,
    ]

    ReadWireOut: grpc.UnaryUnaryMultiCallable[
        allegoserver_pb2.ReadWireOutRequest,
        allegoserver_pb2.ReadWireOutReply,
    ]

    ListSensorSpecs: grpc.UnaryUnaryMultiCallable[
        common_pb2.ListSensorSpecsRequest,
        common_pb2.ListSensorSpecsReply,
    ]
    """Selection Groups and Sensors"""

    GetSignalGroupIDs: grpc.UnaryUnaryMultiCallable[
        common_pb2.StandardRequest,
        common_pb2.GetSignalGroupIDsReply,
    ]

    GetSorterIDMap: grpc.UnaryUnaryMultiCallable[
        common_pb2.StandardRequest,
        common_pb2.GetSorterIDMapReply,
    ]

    GetSpikeSorterIDs: grpc.UnaryUnaryMultiCallable[
        common_pb2.StandardRequest,
        spikesorter_pb2.GetSpikeSorterIDsReply,
    ]

    GetSignalGroup: grpc.UnaryUnaryMultiCallable[
        common_pb2.SignalGroupIDRequest,
        common_pb2.SignalGroup,
    ]

    UpdateSignalGroup: grpc.UnaryUnaryMultiCallable[
        common_pb2.UpdateSignalGroupRequest,
        common_pb2.StandardReply,
    ]

    ScanPorts: grpc.UnaryUnaryMultiCallable[
        common_pb2.StandardRequest,
        common_pb2.SignalGroup,
    ]

    SetSensor: grpc.UnaryUnaryMultiCallable[
        common_pb2.SetSensorRequest,
        common_pb2.StandardReply,
    ]

    SetSensorPositionTcs: grpc.UnaryUnaryMultiCallable[
        common_pb2.SetSensorPositionTcsRequest,
        common_pb2.StandardReply,
    ]

    SetSitePositionsTcs: grpc.UnaryUnaryMultiCallable[
        common_pb2.SetSitePositionsTcsRequest,
        common_pb2.StandardReply,
    ]

    GetDataSourceStatus: grpc.UnaryUnaryMultiCallable[
        common_pb2.SignalGroupIDRequest,
        common_pb2.DataSourceStatus,
    ]

    FeatureStart: grpc.UnaryUnaryMultiCallable[
        common_pb2.FeatureStartStopRequest,
        common_pb2.StandardReply,
    ]
    """Licensing and analytics"""

    FeatureStop: grpc.UnaryUnaryMultiCallable[
        common_pb2.FeatureStartStopRequest,
        common_pb2.StandardReply,
    ]

    GetPrivacy: grpc.UnaryUnaryMultiCallable[
        common_pb2.StandardRequest,
        common_pb2.PrivacyReply,
    ]

    SetPrivacy: grpc.UnaryUnaryMultiCallable[
        common_pb2.SetPrivacyRequest,
        common_pb2.StandardReply,
    ]

    LoadAllMosi: grpc.UnaryUnaryMultiCallable[
        allegoserver_pb2.LoadAllMosiRequest,
        common_pb2.StandardReply,
    ]
    """MOSI functions for sinaps"""

    TransmitMosi: grpc.UnaryUnaryMultiCallable[
        allegoserver_pb2.TransmitMosiRequest,
        common_pb2.StandardReply,
    ]

    DumpMiso: grpc.UnaryUnaryMultiCallable[
        allegoserver_pb2.DumpMisoRequest,
        common_pb2.StandardReply,
    ]

    GetSinapsStatusRegisters: grpc.UnaryUnaryMultiCallable[
        common_pb2.StandardRequest,
        allegoserver_pb2.SinapsStatusRegisters,
    ]

    FlashSinaps: grpc.UnaryUnaryMultiCallable[
        allegoserver_pb2.FlashSinapsRequest,
        common_pb2.StandardReply,
    ]

    GetOrCreateEventViewer: grpc.UnaryUnaryMultiCallable[
        common_pb2.EventViewerID,
        common_pb2.EventViewerConfig,
    ]
    """EventViewer"""

    UpdateEventViewer: grpc.UnaryUnaryMultiCallable[
        common_pb2.EventViewerConfig,
        common_pb2.StandardReply,
    ]

    ListEventViewerEvents: grpc.UnaryUnaryMultiCallable[
        common_pb2.EventViewerID,
        common_pb2.ListEventViewerEventsReply,
    ]

    GetEventViewerEvent: grpc.UnaryUnaryMultiCallable[
        common_pb2.GetEventViewerEventRequest,
        common_pb2.EventViewerEvent,
    ]

    ListEventViewers: grpc.UnaryUnaryMultiCallable[
        common_pb2.StandardRequest,
        common_pb2.ListEventViewersReply,
    ]

    GetHALdashboard: grpc.UnaryUnaryMultiCallable[
        common_pb2.StandardRequest,
        allegoserver_pb2.HALdashboard,
    ]
    """HAL"""

class AllegoCoreAsyncStub:
    Healthcheck: grpc.aio.UnaryUnaryMultiCallable[
        common_pb2.StandardRequest,
        common_pb2.StandardReply,
    ]

    Restart: grpc.aio.UnaryUnaryMultiCallable[
        allegoserver_pb2.RestartRequest,
        common_pb2.StandardReply,
    ]

    Close: grpc.aio.UnaryUnaryMultiCallable[
        common_pb2.StandardRequest,
        common_pb2.StandardReply,
    ]

    GetRadixEnvironment: grpc.aio.UnaryUnaryMultiCallable[
        common_pb2.StandardRequest,
        common_pb2.RadixEnvironment,
    ]

    WorkspaceControl: grpc.aio.UnaryUnaryMultiCallable[
        common_pb2.WorkspaceControlRequest,
        common_pb2.StandardReply,
    ]

    GetStatusPollFieldsToUpdate: grpc.aio.UnaryUnaryMultiCallable[
        common_pb2.StatusPollFieldsToUpdateRequest,
        common_pb2.StatusPollFieldsToUpdate,
    ]

    GetHardwareUUID: grpc.aio.UnaryUnaryMultiCallable[
        common_pb2.StandardRequest,
        common_pb2.HardwareUUIDResponse,
    ]

    SetConfigCore: grpc.aio.UnaryUnaryMultiCallable[
        allegoserver_pb2.SetConfigCoreRequest,
        common_pb2.StandardReply,
    ]
    """Setters"""

    SetProfileState: grpc.aio.UnaryUnaryMultiCallable[
        allegoserver_pb2.SetProfileRequest,
        common_pb2.StandardReply,
    ]

    SetConfigRecording: grpc.aio.UnaryUnaryMultiCallable[
        allegoserver_pb2.ConfigRecording,
        common_pb2.StandardReply,
    ]

    SetStreamState: grpc.aio.UnaryUnaryMultiCallable[
        allegoserver_pb2.SetStreamRequest,
        common_pb2.StandardReply,
    ]

    SetRecordState: grpc.aio.UnaryUnaryMultiCallable[
        allegoserver_pb2.SetRecordRequest,
        common_pb2.StandardReply,
    ]

    SetDIOEvents: grpc.aio.UnaryUnaryMultiCallable[
        allegoserver_pb2.DIOModeEventsRequest,
        common_pb2.StandardReply,
    ]

    SetDIOManual: grpc.aio.UnaryUnaryMultiCallable[
        allegoserver_pb2.DIOModeManualRequest,
        common_pb2.StandardReply,
    ]

    SetDIOGated: grpc.aio.UnaryUnaryMultiCallable[
        allegoserver_pb2.DIOModeGatedRequest,
        common_pb2.StandardReply,
    ]

    SetDIOPulse: grpc.aio.UnaryUnaryMultiCallable[
        allegoserver_pb2.DIOModePulseRequest,
        common_pb2.StandardReply,
    ]

    SetDACGain: grpc.aio.UnaryUnaryMultiCallable[
        allegoserver_pb2.DACGainRequest,
        common_pb2.StandardReply,
    ]

    SetDACStream: grpc.aio.UnaryUnaryMultiCallable[
        common_pb2.DACStreamRequest,
        common_pb2.StandardReply,
    ]

    SetDACOff: grpc.aio.UnaryUnaryMultiCallable[
        common_pb2.DACOffRequest,
        common_pb2.StandardReply,
    ]

    SetDACHighPass: grpc.aio.UnaryUnaryMultiCallable[
        allegoserver_pb2.DACHighPassRegister,
        common_pb2.StandardReply,
    ]

    SetSimPorts: grpc.aio.UnaryUnaryMultiCallable[
        allegoserver_pb2.SetSimPortsRequest,
        common_pb2.StandardReply,
    ]

    SetHasBNCBreakout: grpc.aio.UnaryUnaryMultiCallable[
        allegoserver_pb2.SetHasBNCBreakoutRequest,
        common_pb2.StandardReply,
    ]

    SetMuxChannel: grpc.aio.UnaryUnaryMultiCallable[
        allegoserver_pb2.SetMuxChannelRequest,
        common_pb2.StandardReply,
    ]

    SetTriggerState: grpc.aio.UnaryUnaryMultiCallable[
        allegoserver_pb2.SetTriggerRequest,
        common_pb2.StandardReply,
    ]

    SetPotVoltage: grpc.aio.UnaryUnaryMultiCallable[
        allegoserver_pb2.SetPotVoltageRequest,
        common_pb2.StandardReply,
    ]

    SetPotRange: grpc.aio.UnaryUnaryMultiCallable[
        allegoserver_pb2.SetPotRangeRequest,
        common_pb2.StandardReply,
    ]

    SetPotMode: grpc.aio.UnaryUnaryMultiCallable[
        allegoserver_pb2.SetPotModeRequest,
        common_pb2.StandardReply,
    ]

    SetPotCellEnable: grpc.aio.UnaryUnaryMultiCallable[
        allegoserver_pb2.SetPotCellEnableRequest,
        common_pb2.StandardReply,
    ]

    SetDSPGroup: grpc.aio.UnaryUnaryMultiCallable[
        common_pb2.SetDSPGroupRequest,
        common_pb2.StandardReply,
    ]

    SetStimParams: grpc.aio.UnaryUnaryMultiCallable[
        allegoserver_pb2.StimParams,
        common_pb2.StandardReply,
    ]

    GetStimParams: grpc.aio.UnaryUnaryMultiCallable[
        common_pb2.StandardRequest,
        allegoserver_pb2.StimParamsReply,
    ]

    SetStimStep: grpc.aio.UnaryUnaryMultiCallable[
        allegoserver_pb2.StimStepMessage,
        common_pb2.StandardReply,
    ]

    GetStimStep: grpc.aio.UnaryUnaryMultiCallable[
        common_pb2.StandardRequest,
        allegoserver_pb2.StimStepMessage,
    ]

    ManualStimTrigger: grpc.aio.UnaryUnaryMultiCallable[
        allegoserver_pb2.ManualStimTriggerRequest,
        common_pb2.StandardReply,
    ]

    ManualStimTriggerToggle: grpc.aio.UnaryUnaryMultiCallable[
        allegoserver_pb2.ManualStimTriggerToggleRequest,
        common_pb2.StandardReply,
    ]

    GetConfig: grpc.aio.UnaryUnaryMultiCallable[
        common_pb2.StandardRequest,
        allegoserver_pb2.ConfigCore,
    ]
    """Getters"""

    GetWorkspace: grpc.aio.UnaryUnaryMultiCallable[
        common_pb2.GetWorkspaceRequest,
        common_pb2.GetWorkspaceReply,
    ]

    GetConfigRecording: grpc.aio.UnaryUnaryMultiCallable[
        common_pb2.StandardRequest,
        allegoserver_pb2.ConfigRecording,
    ]

    GetStatus: grpc.aio.UnaryUnaryMultiCallable[
        common_pb2.StandardRequest,
        allegoserver_pb2.BackboneStatus,
    ]

    GetConfigAndStatus: grpc.aio.UnaryUnaryMultiCallable[
        common_pb2.StandardRequest,
        allegoserver_pb2.ConfigAndStatus,
    ]

    GetDataSourceParams: grpc.aio.UnaryUnaryMultiCallable[
        common_pb2.SignalGroupIDRequest,
        datasource_pb2.DataSourceParams,
    ]

    GetIntanImpedance: grpc.aio.UnaryUnaryMultiCallable[
        datasource_pb2.ImpedanceRequest,
        datasource_pb2.Impedance,
    ]

    GetDSPGroup: grpc.aio.UnaryUnaryMultiCallable[
        common_pb2.SignalGroupIDRequest,
        common_pb2.DSPGroup,
    ]

    GetDIOReg: grpc.aio.UnaryUnaryMultiCallable[
        common_pb2.StandardRequest,
        allegoserver_pb2.DigitalOutRegister,
    ]

    GetDACReg: grpc.aio.UnaryUnaryMultiCallable[
        common_pb2.StandardRequest,
        allegoserver_pb2.AnalogOutRegister,
    ]

    GetSerial: grpc.aio.UnaryUnaryMultiCallable[
        common_pb2.StandardRequest,
        allegoserver_pb2.SerialNumber,
    ]

    GetTriggerState: grpc.aio.UnaryUnaryMultiCallable[
        common_pb2.StandardRequest,
        allegoserver_pb2.TriggerState,
    ]

    GetADCLevel: grpc.aio.UnaryUnaryMultiCallable[
        common_pb2.StandardRequest,
        allegoserver_pb2.GetADCLevelReply,
    ]

    ReadWireOut: grpc.aio.UnaryUnaryMultiCallable[
        allegoserver_pb2.ReadWireOutRequest,
        allegoserver_pb2.ReadWireOutReply,
    ]

    ListSensorSpecs: grpc.aio.UnaryUnaryMultiCallable[
        common_pb2.ListSensorSpecsRequest,
        common_pb2.ListSensorSpecsReply,
    ]
    """Selection Groups and Sensors"""

    GetSignalGroupIDs: grpc.aio.UnaryUnaryMultiCallable[
        common_pb2.StandardRequest,
        common_pb2.GetSignalGroupIDsReply,
    ]

    GetSorterIDMap: grpc.aio.UnaryUnaryMultiCallable[
        common_pb2.StandardRequest,
        common_pb2.GetSorterIDMapReply,
    ]

    GetSpikeSorterIDs: grpc.aio.UnaryUnaryMultiCallable[
        common_pb2.StandardRequest,
        spikesorter_pb2.GetSpikeSorterIDsReply,
    ]

    GetSignalGroup: grpc.aio.UnaryUnaryMultiCallable[
        common_pb2.SignalGroupIDRequest,
        common_pb2.SignalGroup,
    ]

    UpdateSignalGroup: grpc.aio.UnaryUnaryMultiCallable[
        common_pb2.UpdateSignalGroupRequest,
        common_pb2.StandardReply,
    ]

    ScanPorts: grpc.aio.UnaryUnaryMultiCallable[
        common_pb2.StandardRequest,
        common_pb2.SignalGroup,
    ]

    SetSensor: grpc.aio.UnaryUnaryMultiCallable[
        common_pb2.SetSensorRequest,
        common_pb2.StandardReply,
    ]

    SetSensorPositionTcs: grpc.aio.UnaryUnaryMultiCallable[
        common_pb2.SetSensorPositionTcsRequest,
        common_pb2.StandardReply,
    ]

    SetSitePositionsTcs: grpc.aio.UnaryUnaryMultiCallable[
        common_pb2.SetSitePositionsTcsRequest,
        common_pb2.StandardReply,
    ]

    GetDataSourceStatus: grpc.aio.UnaryUnaryMultiCallable[
        common_pb2.SignalGroupIDRequest,
        common_pb2.DataSourceStatus,
    ]

    FeatureStart: grpc.aio.UnaryUnaryMultiCallable[
        common_pb2.FeatureStartStopRequest,
        common_pb2.StandardReply,
    ]
    """Licensing and analytics"""

    FeatureStop: grpc.aio.UnaryUnaryMultiCallable[
        common_pb2.FeatureStartStopRequest,
        common_pb2.StandardReply,
    ]

    GetPrivacy: grpc.aio.UnaryUnaryMultiCallable[
        common_pb2.StandardRequest,
        common_pb2.PrivacyReply,
    ]

    SetPrivacy: grpc.aio.UnaryUnaryMultiCallable[
        common_pb2.SetPrivacyRequest,
        common_pb2.StandardReply,
    ]

    LoadAllMosi: grpc.aio.UnaryUnaryMultiCallable[
        allegoserver_pb2.LoadAllMosiRequest,
        common_pb2.StandardReply,
    ]
    """MOSI functions for sinaps"""

    TransmitMosi: grpc.aio.UnaryUnaryMultiCallable[
        allegoserver_pb2.TransmitMosiRequest,
        common_pb2.StandardReply,
    ]

    DumpMiso: grpc.aio.UnaryUnaryMultiCallable[
        allegoserver_pb2.DumpMisoRequest,
        common_pb2.StandardReply,
    ]

    GetSinapsStatusRegisters: grpc.aio.UnaryUnaryMultiCallable[
        common_pb2.StandardRequest,
        allegoserver_pb2.SinapsStatusRegisters,
    ]

    FlashSinaps: grpc.aio.UnaryUnaryMultiCallable[
        allegoserver_pb2.FlashSinapsRequest,
        common_pb2.StandardReply,
    ]

    GetOrCreateEventViewer: grpc.aio.UnaryUnaryMultiCallable[
        common_pb2.EventViewerID,
        common_pb2.EventViewerConfig,
    ]
    """EventViewer"""

    UpdateEventViewer: grpc.aio.UnaryUnaryMultiCallable[
        common_pb2.EventViewerConfig,
        common_pb2.StandardReply,
    ]

    ListEventViewerEvents: grpc.aio.UnaryUnaryMultiCallable[
        common_pb2.EventViewerID,
        common_pb2.ListEventViewerEventsReply,
    ]

    GetEventViewerEvent: grpc.aio.UnaryUnaryMultiCallable[
        common_pb2.GetEventViewerEventRequest,
        common_pb2.EventViewerEvent,
    ]

    ListEventViewers: grpc.aio.UnaryUnaryMultiCallable[
        common_pb2.StandardRequest,
        common_pb2.ListEventViewersReply,
    ]

    GetHALdashboard: grpc.aio.UnaryUnaryMultiCallable[
        common_pb2.StandardRequest,
        allegoserver_pb2.HALdashboard,
    ]
    """HAL"""

class AllegoCoreServicer(metaclass=abc.ABCMeta):
    @abc.abstractmethod
    def Healthcheck(
        self,
        request: common_pb2.StandardRequest,
        context: _ServicerContext,
    ) -> typing.Union[common_pb2.StandardReply, collections.abc.Awaitable[common_pb2.StandardReply]]: ...

    @abc.abstractmethod
    def Restart(
        self,
        request: allegoserver_pb2.RestartRequest,
        context: _ServicerContext,
    ) -> typing.Union[common_pb2.StandardReply, collections.abc.Awaitable[common_pb2.StandardReply]]: ...

    @abc.abstractmethod
    def Close(
        self,
        request: common_pb2.StandardRequest,
        context: _ServicerContext,
    ) -> typing.Union[common_pb2.StandardReply, collections.abc.Awaitable[common_pb2.StandardReply]]: ...

    @abc.abstractmethod
    def GetRadixEnvironment(
        self,
        request: common_pb2.StandardRequest,
        context: _ServicerContext,
    ) -> typing.Union[common_pb2.RadixEnvironment, collections.abc.Awaitable[common_pb2.RadixEnvironment]]: ...

    @abc.abstractmethod
    def WorkspaceControl(
        self,
        request: common_pb2.WorkspaceControlRequest,
        context: _ServicerContext,
    ) -> typing.Union[common_pb2.StandardReply, collections.abc.Awaitable[common_pb2.StandardReply]]: ...

    @abc.abstractmethod
    def GetStatusPollFieldsToUpdate(
        self,
        request: common_pb2.StatusPollFieldsToUpdateRequest,
        context: _ServicerContext,
    ) -> typing.Union[common_pb2.StatusPollFieldsToUpdate, collections.abc.Awaitable[common_pb2.StatusPollFieldsToUpdate]]: ...

    @abc.abstractmethod
    def GetHardwareUUID(
        self,
        request: common_pb2.StandardRequest,
        context: _ServicerContext,
    ) -> typing.Union[common_pb2.HardwareUUIDResponse, collections.abc.Awaitable[common_pb2.HardwareUUIDResponse]]: ...

    @abc.abstractmethod
    def SetConfigCore(
        self,
        request: allegoserver_pb2.SetConfigCoreRequest,
        context: _ServicerContext,
    ) -> typing.Union[common_pb2.StandardReply, collections.abc.Awaitable[common_pb2.StandardReply]]:
        """Setters"""

    @abc.abstractmethod
    def SetProfileState(
        self,
        request: allegoserver_pb2.SetProfileRequest,
        context: _ServicerContext,
    ) -> typing.Union[common_pb2.StandardReply, collections.abc.Awaitable[common_pb2.StandardReply]]: ...

    @abc.abstractmethod
    def SetConfigRecording(
        self,
        request: allegoserver_pb2.ConfigRecording,
        context: _ServicerContext,
    ) -> typing.Union[common_pb2.StandardReply, collections.abc.Awaitable[common_pb2.StandardReply]]: ...

    @abc.abstractmethod
    def SetStreamState(
        self,
        request: allegoserver_pb2.SetStreamRequest,
        context: _ServicerContext,
    ) -> typing.Union[common_pb2.StandardReply, collections.abc.Awaitable[common_pb2.StandardReply]]: ...

    @abc.abstractmethod
    def SetRecordState(
        self,
        request: allegoserver_pb2.SetRecordRequest,
        context: _ServicerContext,
    ) -> typing.Union[common_pb2.StandardReply, collections.abc.Awaitable[common_pb2.StandardReply]]: ...

    @abc.abstractmethod
    def SetDIOEvents(
        self,
        request: allegoserver_pb2.DIOModeEventsRequest,
        context: _ServicerContext,
    ) -> typing.Union[common_pb2.StandardReply, collections.abc.Awaitable[common_pb2.StandardReply]]: ...

    @abc.abstractmethod
    def SetDIOManual(
        self,
        request: allegoserver_pb2.DIOModeManualRequest,
        context: _ServicerContext,
    ) -> typing.Union[common_pb2.StandardReply, collections.abc.Awaitable[common_pb2.StandardReply]]: ...

    @abc.abstractmethod
    def SetDIOGated(
        self,
        request: allegoserver_pb2.DIOModeGatedRequest,
        context: _ServicerContext,
    ) -> typing.Union[common_pb2.StandardReply, collections.abc.Awaitable[common_pb2.StandardReply]]: ...

    @abc.abstractmethod
    def SetDIOPulse(
        self,
        request: allegoserver_pb2.DIOModePulseRequest,
        context: _ServicerContext,
    ) -> typing.Union[common_pb2.StandardReply, collections.abc.Awaitable[common_pb2.StandardReply]]: ...

    @abc.abstractmethod
    def SetDACGain(
        self,
        request: allegoserver_pb2.DACGainRequest,
        context: _ServicerContext,
    ) -> typing.Union[common_pb2.StandardReply, collections.abc.Awaitable[common_pb2.StandardReply]]: ...

    @abc.abstractmethod
    def SetDACStream(
        self,
        request: common_pb2.DACStreamRequest,
        context: _ServicerContext,
    ) -> typing.Union[common_pb2.StandardReply, collections.abc.Awaitable[common_pb2.StandardReply]]: ...

    @abc.abstractmethod
    def SetDACOff(
        self,
        request: common_pb2.DACOffRequest,
        context: _ServicerContext,
    ) -> typing.Union[common_pb2.StandardReply, collections.abc.Awaitable[common_pb2.StandardReply]]: ...

    @abc.abstractmethod
    def SetDACHighPass(
        self,
        request: allegoserver_pb2.DACHighPassRegister,
        context: _ServicerContext,
    ) -> typing.Union[common_pb2.StandardReply, collections.abc.Awaitable[common_pb2.StandardReply]]: ...

    @abc.abstractmethod
    def SetSimPorts(
        self,
        request: allegoserver_pb2.SetSimPortsRequest,
        context: _ServicerContext,
    ) -> typing.Union[common_pb2.StandardReply, collections.abc.Awaitable[common_pb2.StandardReply]]: ...

    @abc.abstractmethod
    def SetHasBNCBreakout(
        self,
        request: allegoserver_pb2.SetHasBNCBreakoutRequest,
        context: _ServicerContext,
    ) -> typing.Union[common_pb2.StandardReply, collections.abc.Awaitable[common_pb2.StandardReply]]: ...

    @abc.abstractmethod
    def SetMuxChannel(
        self,
        request: allegoserver_pb2.SetMuxChannelRequest,
        context: _ServicerContext,
    ) -> typing.Union[common_pb2.StandardReply, collections.abc.Awaitable[common_pb2.StandardReply]]: ...

    @abc.abstractmethod
    def SetTriggerState(
        self,
        request: allegoserver_pb2.SetTriggerRequest,
        context: _ServicerContext,
    ) -> typing.Union[common_pb2.StandardReply, collections.abc.Awaitable[common_pb2.StandardReply]]: ...

    @abc.abstractmethod
    def SetPotVoltage(
        self,
        request: allegoserver_pb2.SetPotVoltageRequest,
        context: _ServicerContext,
    ) -> typing.Union[common_pb2.StandardReply, collections.abc.Awaitable[common_pb2.StandardReply]]: ...

    @abc.abstractmethod
    def SetPotRange(
        self,
        request: allegoserver_pb2.SetPotRangeRequest,
        context: _ServicerContext,
    ) -> typing.Union[common_pb2.StandardReply, collections.abc.Awaitable[common_pb2.StandardReply]]: ...

    @abc.abstractmethod
    def SetPotMode(
        self,
        request: allegoserver_pb2.SetPotModeRequest,
        context: _ServicerContext,
    ) -> typing.Union[common_pb2.StandardReply, collections.abc.Awaitable[common_pb2.StandardReply]]: ...

    @abc.abstractmethod
    def SetPotCellEnable(
        self,
        request: allegoserver_pb2.SetPotCellEnableRequest,
        context: _ServicerContext,
    ) -> typing.Union[common_pb2.StandardReply, collections.abc.Awaitable[common_pb2.StandardReply]]: ...

    @abc.abstractmethod
    def SetDSPGroup(
        self,
        request: common_pb2.SetDSPGroupRequest,
        context: _ServicerContext,
    ) -> typing.Union[common_pb2.StandardReply, collections.abc.Awaitable[common_pb2.StandardReply]]: ...

    @abc.abstractmethod
    def SetStimParams(
        self,
        request: allegoserver_pb2.StimParams,
        context: _ServicerContext,
    ) -> typing.Union[common_pb2.StandardReply, collections.abc.Awaitable[common_pb2.StandardReply]]: ...

    @abc.abstractmethod
    def GetStimParams(
        self,
        request: common_pb2.StandardRequest,
        context: _ServicerContext,
    ) -> typing.Union[allegoserver_pb2.StimParamsReply, collections.abc.Awaitable[allegoserver_pb2.StimParamsReply]]: ...

    @abc.abstractmethod
    def SetStimStep(
        self,
        request: allegoserver_pb2.StimStepMessage,
        context: _ServicerContext,
    ) -> typing.Union[common_pb2.StandardReply, collections.abc.Awaitable[common_pb2.StandardReply]]: ...

    @abc.abstractmethod
    def GetStimStep(
        self,
        request: common_pb2.StandardRequest,
        context: _ServicerContext,
    ) -> typing.Union[allegoserver_pb2.StimStepMessage, collections.abc.Awaitable[allegoserver_pb2.StimStepMessage]]: ...

    @abc.abstractmethod
    def ManualStimTrigger(
        self,
        request: allegoserver_pb2.ManualStimTriggerRequest,
        context: _ServicerContext,
    ) -> typing.Union[common_pb2.StandardReply, collections.abc.Awaitable[common_pb2.StandardReply]]: ...

    @abc.abstractmethod
    def ManualStimTriggerToggle(
        self,
        request: allegoserver_pb2.ManualStimTriggerToggleRequest,
        context: _ServicerContext,
    ) -> typing.Union[common_pb2.StandardReply, collections.abc.Awaitable[common_pb2.StandardReply]]: ...

    @abc.abstractmethod
    def GetConfig(
        self,
        request: common_pb2.StandardRequest,
        context: _ServicerContext,
    ) -> typing.Union[allegoserver_pb2.ConfigCore, collections.abc.Awaitable[allegoserver_pb2.ConfigCore]]:
        """Getters"""

    @abc.abstractmethod
    def GetWorkspace(
        self,
        request: common_pb2.GetWorkspaceRequest,
        context: _ServicerContext,
    ) -> typing.Union[common_pb2.GetWorkspaceReply, collections.abc.Awaitable[common_pb2.GetWorkspaceReply]]: ...

    @abc.abstractmethod
    def GetConfigRecording(
        self,
        request: common_pb2.StandardRequest,
        context: _ServicerContext,
    ) -> typing.Union[allegoserver_pb2.ConfigRecording, collections.abc.Awaitable[allegoserver_pb2.ConfigRecording]]: ...

    @abc.abstractmethod
    def GetStatus(
        self,
        request: common_pb2.StandardRequest,
        context: _ServicerContext,
    ) -> typing.Union[allegoserver_pb2.BackboneStatus, collections.abc.Awaitable[allegoserver_pb2.BackboneStatus]]: ...

    @abc.abstractmethod
    def GetConfigAndStatus(
        self,
        request: common_pb2.StandardRequest,
        context: _ServicerContext,
    ) -> typing.Union[allegoserver_pb2.ConfigAndStatus, collections.abc.Awaitable[allegoserver_pb2.ConfigAndStatus]]: ...

    @abc.abstractmethod
    def GetDataSourceParams(
        self,
        request: common_pb2.SignalGroupIDRequest,
        context: _ServicerContext,
    ) -> typing.Union[datasource_pb2.DataSourceParams, collections.abc.Awaitable[datasource_pb2.DataSourceParams]]: ...

    @abc.abstractmethod
    def GetIntanImpedance(
        self,
        request: datasource_pb2.ImpedanceRequest,
        context: _ServicerContext,
    ) -> typing.Union[datasource_pb2.Impedance, collections.abc.Awaitable[datasource_pb2.Impedance]]: ...

    @abc.abstractmethod
    def GetDSPGroup(
        self,
        request: common_pb2.SignalGroupIDRequest,
        context: _ServicerContext,
    ) -> typing.Union[common_pb2.DSPGroup, collections.abc.Awaitable[common_pb2.DSPGroup]]: ...

    @abc.abstractmethod
    def GetDIOReg(
        self,
        request: common_pb2.StandardRequest,
        context: _ServicerContext,
    ) -> typing.Union[allegoserver_pb2.DigitalOutRegister, collections.abc.Awaitable[allegoserver_pb2.DigitalOutRegister]]: ...

    @abc.abstractmethod
    def GetDACReg(
        self,
        request: common_pb2.StandardRequest,
        context: _ServicerContext,
    ) -> typing.Union[allegoserver_pb2.AnalogOutRegister, collections.abc.Awaitable[allegoserver_pb2.AnalogOutRegister]]: ...

    @abc.abstractmethod
    def GetSerial(
        self,
        request: common_pb2.StandardRequest,
        context: _ServicerContext,
    ) -> typing.Union[allegoserver_pb2.SerialNumber, collections.abc.Awaitable[allegoserver_pb2.SerialNumber]]: ...

    @abc.abstractmethod
    def GetTriggerState(
        self,
        request: common_pb2.StandardRequest,
        context: _ServicerContext,
    ) -> typing.Union[allegoserver_pb2.TriggerState, collections.abc.Awaitable[allegoserver_pb2.TriggerState]]: ...

    @abc.abstractmethod
    def GetADCLevel(
        self,
        request: common_pb2.StandardRequest,
        context: _ServicerContext,
    ) -> typing.Union[allegoserver_pb2.GetADCLevelReply, collections.abc.Awaitable[allegoserver_pb2.GetADCLevelReply]]: ...

    @abc.abstractmethod
    def ReadWireOut(
        self,
        request: allegoserver_pb2.ReadWireOutRequest,
        context: _ServicerContext,
    ) -> typing.Union[allegoserver_pb2.ReadWireOutReply, collections.abc.Awaitable[allegoserver_pb2.ReadWireOutReply]]: ...

    @abc.abstractmethod
    def ListSensorSpecs(
        self,
        request: common_pb2.ListSensorSpecsRequest,
        context: _ServicerContext,
    ) -> typing.Union[common_pb2.ListSensorSpecsReply, collections.abc.Awaitable[common_pb2.ListSensorSpecsReply]]:
        """Selection Groups and Sensors"""

    @abc.abstractmethod
    def GetSignalGroupIDs(
        self,
        request: common_pb2.StandardRequest,
        context: _ServicerContext,
    ) -> typing.Union[common_pb2.GetSignalGroupIDsReply, collections.abc.Awaitable[common_pb2.GetSignalGroupIDsReply]]: ...

    @abc.abstractmethod
    def GetSorterIDMap(
        self,
        request: common_pb2.StandardRequest,
        context: _ServicerContext,
    ) -> typing.Union[common_pb2.GetSorterIDMapReply, collections.abc.Awaitable[common_pb2.GetSorterIDMapReply]]: ...

    @abc.abstractmethod
    def GetSpikeSorterIDs(
        self,
        request: common_pb2.StandardRequest,
        context: _ServicerContext,
    ) -> typing.Union[spikesorter_pb2.GetSpikeSorterIDsReply, collections.abc.Awaitable[spikesorter_pb2.GetSpikeSorterIDsReply]]: ...

    @abc.abstractmethod
    def GetSignalGroup(
        self,
        request: common_pb2.SignalGroupIDRequest,
        context: _ServicerContext,
    ) -> typing.Union[common_pb2.SignalGroup, collections.abc.Awaitable[common_pb2.SignalGroup]]: ...

    @abc.abstractmethod
    def UpdateSignalGroup(
        self,
        request: common_pb2.UpdateSignalGroupRequest,
        context: _ServicerContext,
    ) -> typing.Union[common_pb2.StandardReply, collections.abc.Awaitable[common_pb2.StandardReply]]: ...

    @abc.abstractmethod
    def ScanPorts(
        self,
        request: common_pb2.StandardRequest,
        context: _ServicerContext,
    ) -> typing.Union[common_pb2.SignalGroup, collections.abc.Awaitable[common_pb2.SignalGroup]]: ...

    @abc.abstractmethod
    def SetSensor(
        self,
        request: common_pb2.SetSensorRequest,
        context: _ServicerContext,
    ) -> typing.Union[common_pb2.StandardReply, collections.abc.Awaitable[common_pb2.StandardReply]]: ...

    @abc.abstractmethod
    def SetSensorPositionTcs(
        self,
        request: common_pb2.SetSensorPositionTcsRequest,
        context: _ServicerContext,
    ) -> typing.Union[common_pb2.StandardReply, collections.abc.Awaitable[common_pb2.StandardReply]]: ...

    @abc.abstractmethod
    def SetSitePositionsTcs(
        self,
        request: common_pb2.SetSitePositionsTcsRequest,
        context: _ServicerContext,
    ) -> typing.Union[common_pb2.StandardReply, collections.abc.Awaitable[common_pb2.StandardReply]]: ...

    @abc.abstractmethod
    def GetDataSourceStatus(
        self,
        request: common_pb2.SignalGroupIDRequest,
        context: _ServicerContext,
    ) -> typing.Union[common_pb2.DataSourceStatus, collections.abc.Awaitable[common_pb2.DataSourceStatus]]: ...

    @abc.abstractmethod
    def FeatureStart(
        self,
        request: common_pb2.FeatureStartStopRequest,
        context: _ServicerContext,
    ) -> typing.Union[common_pb2.StandardReply, collections.abc.Awaitable[common_pb2.StandardReply]]:
        """Licensing and analytics"""

    @abc.abstractmethod
    def FeatureStop(
        self,
        request: common_pb2.FeatureStartStopRequest,
        context: _ServicerContext,
    ) -> typing.Union[common_pb2.StandardReply, collections.abc.Awaitable[common_pb2.StandardReply]]: ...

    @abc.abstractmethod
    def GetPrivacy(
        self,
        request: common_pb2.StandardRequest,
        context: _ServicerContext,
    ) -> typing.Union[common_pb2.PrivacyReply, collections.abc.Awaitable[common_pb2.PrivacyReply]]: ...

    @abc.abstractmethod
    def SetPrivacy(
        self,
        request: common_pb2.SetPrivacyRequest,
        context: _ServicerContext,
    ) -> typing.Union[common_pb2.StandardReply, collections.abc.Awaitable[common_pb2.StandardReply]]: ...

    @abc.abstractmethod
    def LoadAllMosi(
        self,
        request: allegoserver_pb2.LoadAllMosiRequest,
        context: _ServicerContext,
    ) -> typing.Union[common_pb2.StandardReply, collections.abc.Awaitable[common_pb2.StandardReply]]:
        """MOSI functions for sinaps"""

    @abc.abstractmethod
    def TransmitMosi(
        self,
        request: allegoserver_pb2.TransmitMosiRequest,
        context: _ServicerContext,
    ) -> typing.Union[common_pb2.StandardReply, collections.abc.Awaitable[common_pb2.StandardReply]]: ...

    @abc.abstractmethod
    def DumpMiso(
        self,
        request: allegoserver_pb2.DumpMisoRequest,
        context: _ServicerContext,
    ) -> typing.Union[common_pb2.StandardReply, collections.abc.Awaitable[common_pb2.StandardReply]]: ...

    @abc.abstractmethod
    def GetSinapsStatusRegisters(
        self,
        request: common_pb2.StandardRequest,
        context: _ServicerContext,
    ) -> typing.Union[allegoserver_pb2.SinapsStatusRegisters, collections.abc.Awaitable[allegoserver_pb2.SinapsStatusRegisters]]: ...

    @abc.abstractmethod
    def FlashSinaps(
        self,
        request: allegoserver_pb2.FlashSinapsRequest,
        context: _ServicerContext,
    ) -> typing.Union[common_pb2.StandardReply, collections.abc.Awaitable[common_pb2.StandardReply]]: ...

    @abc.abstractmethod
    def GetOrCreateEventViewer(
        self,
        request: common_pb2.EventViewerID,
        context: _ServicerContext,
    ) -> typing.Union[common_pb2.EventViewerConfig, collections.abc.Awaitable[common_pb2.EventViewerConfig]]:
        """EventViewer"""

    @abc.abstractmethod
    def UpdateEventViewer(
        self,
        request: common_pb2.EventViewerConfig,
        context: _ServicerContext,
    ) -> typing.Union[common_pb2.StandardReply, collections.abc.Awaitable[common_pb2.StandardReply]]: ...

    @abc.abstractmethod
    def ListEventViewerEvents(
        self,
        request: common_pb2.EventViewerID,
        context: _ServicerContext,
    ) -> typing.Union[common_pb2.ListEventViewerEventsReply, collections.abc.Awaitable[common_pb2.ListEventViewerEventsReply]]: ...

    @abc.abstractmethod
    def GetEventViewerEvent(
        self,
        request: common_pb2.GetEventViewerEventRequest,
        context: _ServicerContext,
    ) -> typing.Union[common_pb2.EventViewerEvent, collections.abc.Awaitable[common_pb2.EventViewerEvent]]: ...

    @abc.abstractmethod
    def ListEventViewers(
        self,
        request: common_pb2.StandardRequest,
        context: _ServicerContext,
    ) -> typing.Union[common_pb2.ListEventViewersReply, collections.abc.Awaitable[common_pb2.ListEventViewersReply]]: ...

    @abc.abstractmethod
    def GetHALdashboard(
        self,
        request: common_pb2.StandardRequest,
        context: _ServicerContext,
    ) -> typing.Union[allegoserver_pb2.HALdashboard, collections.abc.Awaitable[allegoserver_pb2.HALdashboard]]:
        """HAL"""

def add_AllegoCoreServicer_to_server(servicer: AllegoCoreServicer, server: typing.Union[grpc.Server, grpc.aio.Server]) -> None: ...

class Pcache1Stub:
    """The Pcache1 service definition.
    This is interface for getting data from the primary cache
    """

    def __init__(self, channel: typing.Union[grpc.Channel, grpc.aio.Channel]) -> None: ...
    Healthcheck: grpc.UnaryUnaryMultiCallable[
        common_pb2.StandardRequest,
        common_pb2.StandardReply,
    ]

    GetHDSnapshot: grpc.UnaryUnaryMultiCallable[
        common_pb2.HDSnapshotRequest,
        common_pb2.HDSnapshot,
    ]
    """rpc GetPCacheStatus(StandardRequest) returns (StandardReply) {}"""

    GetHDSnapshotFromHead: grpc.UnaryUnaryMultiCallable[
        common_pb2.HDSnapshotRequest2,
        common_pb2.HDSnapshot2,
    ]

    GetSignals: grpc.UnaryUnaryMultiCallable[
        common_pb2.GetSignalsRequest,
        common_pb2.RawSignals,
    ]

    SetTimeRangeToHead: grpc.UnaryUnaryMultiCallable[
        common_pb2.SignalGroupIDRequest,
        common_pb2.StandardReply,
    ]

class Pcache1AsyncStub:
    """The Pcache1 service definition.
    This is interface for getting data from the primary cache
    """

    Healthcheck: grpc.aio.UnaryUnaryMultiCallable[
        common_pb2.StandardRequest,
        common_pb2.StandardReply,
    ]

    GetHDSnapshot: grpc.aio.UnaryUnaryMultiCallable[
        common_pb2.HDSnapshotRequest,
        common_pb2.HDSnapshot,
    ]
    """rpc GetPCacheStatus(StandardRequest) returns (StandardReply) {}"""

    GetHDSnapshotFromHead: grpc.aio.UnaryUnaryMultiCallable[
        common_pb2.HDSnapshotRequest2,
        common_pb2.HDSnapshot2,
    ]

    GetSignals: grpc.aio.UnaryUnaryMultiCallable[
        common_pb2.GetSignalsRequest,
        common_pb2.RawSignals,
    ]

    SetTimeRangeToHead: grpc.aio.UnaryUnaryMultiCallable[
        common_pb2.SignalGroupIDRequest,
        common_pb2.StandardReply,
    ]

class Pcache1Servicer(metaclass=abc.ABCMeta):
    """The Pcache1 service definition.
    This is interface for getting data from the primary cache
    """

    @abc.abstractmethod
    def Healthcheck(
        self,
        request: common_pb2.StandardRequest,
        context: _ServicerContext,
    ) -> typing.Union[common_pb2.StandardReply, collections.abc.Awaitable[common_pb2.StandardReply]]: ...

    @abc.abstractmethod
    def GetHDSnapshot(
        self,
        request: common_pb2.HDSnapshotRequest,
        context: _ServicerContext,
    ) -> typing.Union[common_pb2.HDSnapshot, collections.abc.Awaitable[common_pb2.HDSnapshot]]:
        """rpc GetPCacheStatus(StandardRequest) returns (StandardReply) {}"""

    @abc.abstractmethod
    def GetHDSnapshotFromHead(
        self,
        request: common_pb2.HDSnapshotRequest2,
        context: _ServicerContext,
    ) -> typing.Union[common_pb2.HDSnapshot2, collections.abc.Awaitable[common_pb2.HDSnapshot2]]: ...

    @abc.abstractmethod
    def GetSignals(
        self,
        request: common_pb2.GetSignalsRequest,
        context: _ServicerContext,
    ) -> typing.Union[common_pb2.RawSignals, collections.abc.Awaitable[common_pb2.RawSignals]]: ...

    @abc.abstractmethod
    def SetTimeRangeToHead(
        self,
        request: common_pb2.SignalGroupIDRequest,
        context: _ServicerContext,
    ) -> typing.Union[common_pb2.StandardReply, collections.abc.Awaitable[common_pb2.StandardReply]]: ...

def add_Pcache1Servicer_to_server(servicer: Pcache1Servicer, server: typing.Union[grpc.Server, grpc.aio.Server]) -> None: ...

class Kpi1Stub:
    """The Kpi1 service definition.
    This is interface for getting data from the KPI stream service
    """

    def __init__(self, channel: typing.Union[grpc.Channel, grpc.aio.Channel]) -> None: ...
    Healthcheck: grpc.UnaryUnaryMultiCallable[
        common_pb2.StandardRequest,
        common_pb2.StandardReply,
    ]

    KpiGetMetrics: grpc.UnaryUnaryMultiCallable[
        common_pb2.KpiMetricsReq,
        common_pb2.SignalMetricsPacketReply,
    ]

    GetKpiStatus: grpc.UnaryUnaryMultiCallable[
        common_pb2.GetKpiStatusRequest,
        common_pb2.KpiStatusReply,
    ]

    GetKpiMetadata: grpc.UnaryUnaryMultiCallable[
        datasource_pb2.DataSourceRequest,
        common_pb2.KpiFileMetadata,
    ]

    SetKpiUpdatePeriod: grpc.UnaryUnaryMultiCallable[
        common_pb2.SetKpiParamRequest,
        common_pb2.StandardReply,
    ]

    SetKpiPacketDur: grpc.UnaryUnaryMultiCallable[
        common_pb2.SetKpiParamRequest,
        common_pb2.StandardReply,
    ]

class Kpi1AsyncStub:
    """The Kpi1 service definition.
    This is interface for getting data from the KPI stream service
    """

    Healthcheck: grpc.aio.UnaryUnaryMultiCallable[
        common_pb2.StandardRequest,
        common_pb2.StandardReply,
    ]

    KpiGetMetrics: grpc.aio.UnaryUnaryMultiCallable[
        common_pb2.KpiMetricsReq,
        common_pb2.SignalMetricsPacketReply,
    ]

    GetKpiStatus: grpc.aio.UnaryUnaryMultiCallable[
        common_pb2.GetKpiStatusRequest,
        common_pb2.KpiStatusReply,
    ]

    GetKpiMetadata: grpc.aio.UnaryUnaryMultiCallable[
        datasource_pb2.DataSourceRequest,
        common_pb2.KpiFileMetadata,
    ]

    SetKpiUpdatePeriod: grpc.aio.UnaryUnaryMultiCallable[
        common_pb2.SetKpiParamRequest,
        common_pb2.StandardReply,
    ]

    SetKpiPacketDur: grpc.aio.UnaryUnaryMultiCallable[
        common_pb2.SetKpiParamRequest,
        common_pb2.StandardReply,
    ]

class Kpi1Servicer(metaclass=abc.ABCMeta):
    """The Kpi1 service definition.
    This is interface for getting data from the KPI stream service
    """

    @abc.abstractmethod
    def Healthcheck(
        self,
        request: common_pb2.StandardRequest,
        context: _ServicerContext,
    ) -> typing.Union[common_pb2.StandardReply, collections.abc.Awaitable[common_pb2.StandardReply]]: ...

    @abc.abstractmethod
    def KpiGetMetrics(
        self,
        request: common_pb2.KpiMetricsReq,
        context: _ServicerContext,
    ) -> typing.Union[common_pb2.SignalMetricsPacketReply, collections.abc.Awaitable[common_pb2.SignalMetricsPacketReply]]: ...

    @abc.abstractmethod
    def GetKpiStatus(
        self,
        request: common_pb2.GetKpiStatusRequest,
        context: _ServicerContext,
    ) -> typing.Union[common_pb2.KpiStatusReply, collections.abc.Awaitable[common_pb2.KpiStatusReply]]: ...

    @abc.abstractmethod
    def GetKpiMetadata(
        self,
        request: datasource_pb2.DataSourceRequest,
        context: _ServicerContext,
    ) -> typing.Union[common_pb2.KpiFileMetadata, collections.abc.Awaitable[common_pb2.KpiFileMetadata]]: ...

    @abc.abstractmethod
    def SetKpiUpdatePeriod(
        self,
        request: common_pb2.SetKpiParamRequest,
        context: _ServicerContext,
    ) -> typing.Union[common_pb2.StandardReply, collections.abc.Awaitable[common_pb2.StandardReply]]: ...

    @abc.abstractmethod
    def SetKpiPacketDur(
        self,
        request: common_pb2.SetKpiParamRequest,
        context: _ServicerContext,
    ) -> typing.Union[common_pb2.StandardReply, collections.abc.Awaitable[common_pb2.StandardReply]]: ...

def add_Kpi1Servicer_to_server(servicer: Kpi1Servicer, server: typing.Union[grpc.Server, grpc.aio.Server]) -> None: ...

class Neurons1Stub:
    def __init__(self, channel: typing.Union[grpc.Channel, grpc.aio.Channel]) -> None: ...
    Healthcheck: grpc.UnaryUnaryMultiCallable[
        common_pb2.StandardRequest,
        common_pb2.StandardReply,
    ]

    SpikeSorterCommand: grpc.UnaryUnaryMultiCallable[
        spikesorter_pb2.SpikeSorterCommandRequest,
        common_pb2.StandardReply,
    ]

    SpikeSorterSetParam: grpc.UnaryUnaryMultiCallable[
        common_pb2.SpikeSorterSetParamRequest,
        common_pb2.StandardReply,
    ]

    SpikeSorterSetParams: grpc.UnaryUnaryMultiCallable[
        common_pb2.SpikeSorterSetParamsRequest,
        common_pb2.StandardReply,
    ]

    SpikeSorterGetParam: grpc.UnaryUnaryMultiCallable[
        spikesorter_pb2.SpikeSorterStandardRequest,
        spikesorter_pb2.GetSpikeSorterParamCommandReply,
    ]

    SpikeSorterIsAnyActive: grpc.UnaryUnaryMultiCallable[
        spikesorter_pb2.SpikeSorterIsAnyActiveRequest,
        spikesorter_pb2.SpikeSorterIsAnyActiveReply,
    ]

    SpikeSorterGetState: grpc.UnaryUnaryMultiCallable[
        spikesorter_pb2.SpikeSorterStandardRequest,
        spikesorter_pb2.SpikeSorterState,
    ]

    SpikeSorterGetDashboard: grpc.UnaryUnaryMultiCallable[
        spikesorter_pb2.SpikeSorterDashboardRequest,
        spikesorter_pb2.SpikeSorterDashboardReply,
    ]

    SpikeSorterGetRasterData: grpc.UnaryUnaryMultiCallable[
        spikesorter_pb2.SpikeSorterGetRasterDataRequest,
        spikesorter_pb2.SpikeSorterRasterDataReply,
    ]

    SpikeSorterGetFeatureParams: grpc.UnaryUnaryMultiCallable[
        spikesorter_pb2.SpikeSorterStandardRequest,
        spikesorter_pb2.SpikeSorterFeatureParamsReply,
    ]

    BiointerfaceGetSpikesDense: grpc.UnaryUnaryMultiCallable[
        biointerface_pb2.SpikesGetSpikesRequest,
        biointerface_pb2.SpikesSpikeDataDenseReply,
    ]

    BiointerfaceGetNeurons: grpc.UnaryUnaryMultiCallable[
        biointerface_pb2.BiointerfaceGetNeuronsRequest,
        biointerface_pb2.BiointerfaceGetNeuronsReply,
    ]

    BiointerfaceSeekEndSpikeTimestamps: grpc.UnaryUnaryMultiCallable[
        biointerface_pb2.BiointerfaceSeekEndSpikeTimestampsRequest,
        common_pb2.TimeRange,
    ]

    SpikesGetSpec: grpc.UnaryUnaryMultiCallable[
        spikesorter_pb2.SpikeSorterStandardRequest,
        biointerface_pb2.SpikesSpecReply,
    ]

    BiointerfaceViz: grpc.UnaryUnaryMultiCallable[
        biointerface_pb2.BiointerfaceVizRequest,
        biointerface_pb2.BiointerfaceVizReply,
    ]

    GetSpikeTrainAnalytic: grpc.UnaryUnaryMultiCallable[
        biointerface_pb2.SpikesGetSpikeTrainAnalyticsRequest,
        biointerface_pb2.SpikesGetSpikeTrainAnalyticsReply,
    ]

class Neurons1AsyncStub:
    Healthcheck: grpc.aio.UnaryUnaryMultiCallable[
        common_pb2.StandardRequest,
        common_pb2.StandardReply,
    ]

    SpikeSorterCommand: grpc.aio.UnaryUnaryMultiCallable[
        spikesorter_pb2.SpikeSorterCommandRequest,
        common_pb2.StandardReply,
    ]

    SpikeSorterSetParam: grpc.aio.UnaryUnaryMultiCallable[
        common_pb2.SpikeSorterSetParamRequest,
        common_pb2.StandardReply,
    ]

    SpikeSorterSetParams: grpc.aio.UnaryUnaryMultiCallable[
        common_pb2.SpikeSorterSetParamsRequest,
        common_pb2.StandardReply,
    ]

    SpikeSorterGetParam: grpc.aio.UnaryUnaryMultiCallable[
        spikesorter_pb2.SpikeSorterStandardRequest,
        spikesorter_pb2.GetSpikeSorterParamCommandReply,
    ]

    SpikeSorterIsAnyActive: grpc.aio.UnaryUnaryMultiCallable[
        spikesorter_pb2.SpikeSorterIsAnyActiveRequest,
        spikesorter_pb2.SpikeSorterIsAnyActiveReply,
    ]

    SpikeSorterGetState: grpc.aio.UnaryUnaryMultiCallable[
        spikesorter_pb2.SpikeSorterStandardRequest,
        spikesorter_pb2.SpikeSorterState,
    ]

    SpikeSorterGetDashboard: grpc.aio.UnaryUnaryMultiCallable[
        spikesorter_pb2.SpikeSorterDashboardRequest,
        spikesorter_pb2.SpikeSorterDashboardReply,
    ]

    SpikeSorterGetRasterData: grpc.aio.UnaryUnaryMultiCallable[
        spikesorter_pb2.SpikeSorterGetRasterDataRequest,
        spikesorter_pb2.SpikeSorterRasterDataReply,
    ]

    SpikeSorterGetFeatureParams: grpc.aio.UnaryUnaryMultiCallable[
        spikesorter_pb2.SpikeSorterStandardRequest,
        spikesorter_pb2.SpikeSorterFeatureParamsReply,
    ]

    BiointerfaceGetSpikesDense: grpc.aio.UnaryUnaryMultiCallable[
        biointerface_pb2.SpikesGetSpikesRequest,
        biointerface_pb2.SpikesSpikeDataDenseReply,
    ]

    BiointerfaceGetNeurons: grpc.aio.UnaryUnaryMultiCallable[
        biointerface_pb2.BiointerfaceGetNeuronsRequest,
        biointerface_pb2.BiointerfaceGetNeuronsReply,
    ]

    BiointerfaceSeekEndSpikeTimestamps: grpc.aio.UnaryUnaryMultiCallable[
        biointerface_pb2.BiointerfaceSeekEndSpikeTimestampsRequest,
        common_pb2.TimeRange,
    ]

    SpikesGetSpec: grpc.aio.UnaryUnaryMultiCallable[
        spikesorter_pb2.SpikeSorterStandardRequest,
        biointerface_pb2.SpikesSpecReply,
    ]

    BiointerfaceViz: grpc.aio.UnaryUnaryMultiCallable[
        biointerface_pb2.BiointerfaceVizRequest,
        biointerface_pb2.BiointerfaceVizReply,
    ]

    GetSpikeTrainAnalytic: grpc.aio.UnaryUnaryMultiCallable[
        biointerface_pb2.SpikesGetSpikeTrainAnalyticsRequest,
        biointerface_pb2.SpikesGetSpikeTrainAnalyticsReply,
    ]

class Neurons1Servicer(metaclass=abc.ABCMeta):
    @abc.abstractmethod
    def Healthcheck(
        self,
        request: common_pb2.StandardRequest,
        context: _ServicerContext,
    ) -> typing.Union[common_pb2.StandardReply, collections.abc.Awaitable[common_pb2.StandardReply]]: ...

    @abc.abstractmethod
    def SpikeSorterCommand(
        self,
        request: spikesorter_pb2.SpikeSorterCommandRequest,
        context: _ServicerContext,
    ) -> typing.Union[common_pb2.StandardReply, collections.abc.Awaitable[common_pb2.StandardReply]]: ...

    @abc.abstractmethod
    def SpikeSorterSetParam(
        self,
        request: common_pb2.SpikeSorterSetParamRequest,
        context: _ServicerContext,
    ) -> typing.Union[common_pb2.StandardReply, collections.abc.Awaitable[common_pb2.StandardReply]]: ...

    @abc.abstractmethod
    def SpikeSorterSetParams(
        self,
        request: common_pb2.SpikeSorterSetParamsRequest,
        context: _ServicerContext,
    ) -> typing.Union[common_pb2.StandardReply, collections.abc.Awaitable[common_pb2.StandardReply]]: ...

    @abc.abstractmethod
    def SpikeSorterGetParam(
        self,
        request: spikesorter_pb2.SpikeSorterStandardRequest,
        context: _ServicerContext,
    ) -> typing.Union[spikesorter_pb2.GetSpikeSorterParamCommandReply, collections.abc.Awaitable[spikesorter_pb2.GetSpikeSorterParamCommandReply]]: ...

    @abc.abstractmethod
    def SpikeSorterIsAnyActive(
        self,
        request: spikesorter_pb2.SpikeSorterIsAnyActiveRequest,
        context: _ServicerContext,
    ) -> typing.Union[spikesorter_pb2.SpikeSorterIsAnyActiveReply, collections.abc.Awaitable[spikesorter_pb2.SpikeSorterIsAnyActiveReply]]: ...

    @abc.abstractmethod
    def SpikeSorterGetState(
        self,
        request: spikesorter_pb2.SpikeSorterStandardRequest,
        context: _ServicerContext,
    ) -> typing.Union[spikesorter_pb2.SpikeSorterState, collections.abc.Awaitable[spikesorter_pb2.SpikeSorterState]]: ...

    @abc.abstractmethod
    def SpikeSorterGetDashboard(
        self,
        request: spikesorter_pb2.SpikeSorterDashboardRequest,
        context: _ServicerContext,
    ) -> typing.Union[spikesorter_pb2.SpikeSorterDashboardReply, collections.abc.Awaitable[spikesorter_pb2.SpikeSorterDashboardReply]]: ...

    @abc.abstractmethod
    def SpikeSorterGetRasterData(
        self,
        request: spikesorter_pb2.SpikeSorterGetRasterDataRequest,
        context: _ServicerContext,
    ) -> typing.Union[spikesorter_pb2.SpikeSorterRasterDataReply, collections.abc.Awaitable[spikesorter_pb2.SpikeSorterRasterDataReply]]: ...

    @abc.abstractmethod
    def SpikeSorterGetFeatureParams(
        self,
        request: spikesorter_pb2.SpikeSorterStandardRequest,
        context: _ServicerContext,
    ) -> typing.Union[spikesorter_pb2.SpikeSorterFeatureParamsReply, collections.abc.Awaitable[spikesorter_pb2.SpikeSorterFeatureParamsReply]]: ...

    @abc.abstractmethod
    def BiointerfaceGetSpikesDense(
        self,
        request: biointerface_pb2.SpikesGetSpikesRequest,
        context: _ServicerContext,
    ) -> typing.Union[biointerface_pb2.SpikesSpikeDataDenseReply, collections.abc.Awaitable[biointerface_pb2.SpikesSpikeDataDenseReply]]: ...

    @abc.abstractmethod
    def BiointerfaceGetNeurons(
        self,
        request: biointerface_pb2.BiointerfaceGetNeuronsRequest,
        context: _ServicerContext,
    ) -> typing.Union[biointerface_pb2.BiointerfaceGetNeuronsReply, collections.abc.Awaitable[biointerface_pb2.BiointerfaceGetNeuronsReply]]: ...

    @abc.abstractmethod
    def BiointerfaceSeekEndSpikeTimestamps(
        self,
        request: biointerface_pb2.BiointerfaceSeekEndSpikeTimestampsRequest,
        context: _ServicerContext,
    ) -> typing.Union[common_pb2.TimeRange, collections.abc.Awaitable[common_pb2.TimeRange]]: ...

    @abc.abstractmethod
    def SpikesGetSpec(
        self,
        request: spikesorter_pb2.SpikeSorterStandardRequest,
        context: _ServicerContext,
    ) -> typing.Union[biointerface_pb2.SpikesSpecReply, collections.abc.Awaitable[biointerface_pb2.SpikesSpecReply]]: ...

    @abc.abstractmethod
    def BiointerfaceViz(
        self,
        request: biointerface_pb2.BiointerfaceVizRequest,
        context: _ServicerContext,
    ) -> typing.Union[biointerface_pb2.BiointerfaceVizReply, collections.abc.Awaitable[biointerface_pb2.BiointerfaceVizReply]]: ...

    @abc.abstractmethod
    def GetSpikeTrainAnalytic(
        self,
        request: biointerface_pb2.SpikesGetSpikeTrainAnalyticsRequest,
        context: _ServicerContext,
    ) -> typing.Union[biointerface_pb2.SpikesGetSpikeTrainAnalyticsReply, collections.abc.Awaitable[biointerface_pb2.SpikesGetSpikeTrainAnalyticsReply]]: ...

def add_Neurons1Servicer_to_server(servicer: Neurons1Servicer, server: typing.Union[grpc.Server, grpc.aio.Server]) -> None: ...
