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

import abc
from . import biointerface_pb2
import collections.abc
from . import common_pb2
from . import datasource_pb2
import grpc
import grpc.aio
from . import radiens_dev_pb2
from . import radiensserver_pb2
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 RadiensLifecycleStub:
    """RadiensLifecycle service is for interactions with RadiensServer 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[
        radiensserver_pb2.RadiensHealthcheckRequest,
        radiensserver_pb2.RadiensHealthcheckSpec,
    ]
    """Lifecycle"""

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

    ClientConnect: grpc.UnaryUnaryMultiCallable[
        radiensserver_pb2.RadiensClientId,
        common_pb2.StandardReply,
    ]

    ClientDisconnect: grpc.UnaryUnaryMultiCallable[
        radiensserver_pb2.RadiensClientId,
        common_pb2.StandardReply,
    ]

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

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

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

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

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

class RadiensLifecycleAsyncStub:
    """RadiensLifecycle service is for interactions with RadiensServer that don't require an instance of backbone, spikesorter, etc"""

    Healthcheck: grpc.aio.UnaryUnaryMultiCallable[
        radiensserver_pb2.RadiensHealthcheckRequest,
        radiensserver_pb2.RadiensHealthcheckSpec,
    ]
    """Lifecycle"""

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

    ClientConnect: grpc.aio.UnaryUnaryMultiCallable[
        radiensserver_pb2.RadiensClientId,
        common_pb2.StandardReply,
    ]

    ClientDisconnect: grpc.aio.UnaryUnaryMultiCallable[
        radiensserver_pb2.RadiensClientId,
        common_pb2.StandardReply,
    ]

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

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

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

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

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

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

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

    @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 ClientConnect(
        self,
        request: radiensserver_pb2.RadiensClientId,
        context: _ServicerContext,
    ) -> typing.Union[common_pb2.StandardReply, collections.abc.Awaitable[common_pb2.StandardReply]]: ...

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

    @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 GetRadiensServers(
        self,
        request: common_pb2.GetRadiensServersRequest,
        context: _ServicerContext,
    ) -> typing.Union[common_pb2.RadiensServersReply, collections.abc.Awaitable[common_pb2.RadiensServersReply]]: ...

    @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 GetOfflineLicenseStatus(
        self,
        request: common_pb2.StandardRequest,
        context: _ServicerContext,
    ) -> typing.Union[common_pb2.OfflineLicenseStatus, collections.abc.Awaitable[common_pb2.OfflineLicenseStatus]]: ...

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

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

class RadiensCoreStub:
    def __init__(self, channel: typing.Union[grpc.Channel, grpc.aio.Channel]) -> None: ...
    Healthcheck: grpc.UnaryUnaryMultiCallable[
        radiensserver_pb2.RadiensHealthcheckRequest,
        radiensserver_pb2.RadiensHealthcheckSpec,
    ]

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

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

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

    ListDirectory: grpc.UnaryUnaryMultiCallable[
        common_pb2.ListDataSourcesRequest,
        datasource_pb2.CpRmMvLsReply,
    ]
    """===================
    Radiens file system operations
    ===================

    time-series data sources
    """

    CopyDataSourceFile: grpc.UnaryUnaryMultiCallable[
        datasource_pb2.CopyRemoveDataSourceFileRequest,
        datasource_pb2.CpRmMvLsReply,
    ]

    RemoveDataSourceFile: grpc.UnaryUnaryMultiCallable[
        datasource_pb2.CopyRemoveDataSourceFileRequest,
        datasource_pb2.CpRmMvLsReply,
    ]

    MoveDataSourceFile: grpc.UnaryUnaryMultiCallable[
        datasource_pb2.MoveDataSourceFileRequest,
        datasource_pb2.CpRmMvLsReply,
    ]

    ExportDataSource: grpc.UnaryUnaryMultiCallable[
        datasource_pb2.ExportDataSourceFileRequest,
        common_pb2.StandardReply,
    ]

    SpikesListDirectory: grpc.UnaryUnaryMultiCallable[
        common_pb2.ListDataSourcesRequest,
        datasource_pb2.CpRmMvLsReply,
    ]
    """spikes/Biointerface data sources"""

    SpikesCopyFile: grpc.UnaryUnaryMultiCallable[
        datasource_pb2.CopyRemoveDataSourceFileRequest,
        datasource_pb2.CpRmMvLsReply,
    ]

    SpikesRemoveFile: grpc.UnaryUnaryMultiCallable[
        datasource_pb2.CopyRemoveDataSourceFileRequest,
        datasource_pb2.CpRmMvLsReply,
    ]

    SpikesMoveFile: grpc.UnaryUnaryMultiCallable[
        datasource_pb2.MoveDataSourceFileRequest,
        datasource_pb2.CpRmMvLsReply,
    ]

    ManageNodeOrganization: grpc.UnaryUnaryMultiCallable[
        common_pb2.ManageNodeOrgRequest,
        common_pb2.ManageNodeOrgReply,
    ]
    """!! experimental API functions to manage user profiles
    rpc ManageSession (ManageSessionRequest) returns (ManageSessionReply) {}
    rpc GetAllProfiles (StandardRequest) returns (GetAllProfilesReply) {}
    rpc GetProfile (StandardRequest) returns (GetCurrentProfileReply) {}
    rpc GetCurrentProfile (StandardRequest) returns (GetCurrentProfileReply) {}
    rpc SetCurrentProfile (SetCurrentProfileRequest) returns (StandardReply) {}

    !!experimental API functions for managing the Redis graph database
    Session, lab, and user API functions to interact with the radiens world database
    """

    ManageNodeLab: grpc.UnaryUnaryMultiCallable[
        common_pb2.ManageNodeLabRequest,
        common_pb2.ManageNodeLabReply,
    ]

    ManageNodeUser: grpc.UnaryUnaryMultiCallable[
        common_pb2.ManageNodeUserRequest,
        common_pb2.ManageNodeUserReply,
    ]

    ManageNodeProbe: grpc.UnaryUnaryMultiCallable[
        common_pb2.ProbeNodeRequest,
        common_pb2.ProbeNodeReply,
    ]

    ManageEdges: grpc.UnaryUnaryMultiCallable[
        common_pb2.WorldEdgeRequest,
        common_pb2.WorldEdgeReply,
    ]

    QueryWorld: grpc.UnaryUnaryMultiCallable[
        common_pb2.QueryWorldRequest,
        common_pb2.QueryWorldReply,
    ]

    GetWarehouseSensorComponent: grpc.UnaryUnaryMultiCallable[
        common_pb2.SensorCompRequest,
        common_pb2.GetSensorCompReply,
    ]
    """Sensor API functions"""

    ListSensorSpecs: grpc.UnaryUnaryMultiCallable[
        common_pb2.ListSensorSpecsRequest,
        common_pb2.ListSensorSpecsReply,
    ]
    """===================
    TIME-SERIES DATASOURCE API functions
    ===================

    functions common with allegoserver
    """

    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,
    ]

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

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

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

    GetSpikeSorterIDs: grpc.UnaryUnaryMultiCallable[
        spikesorter_pb2.GetSpikeSorterIDsRequest,
        spikesorter_pb2.GetSpikeSorterIDsReply,
    ]

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

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

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

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

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

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

    GetHDSnapshot: grpc.UnaryUnaryMultiCallable[
        common_pb2.HDSnapshotRequest,
        common_pb2.HDSnapshot,
    ]

    GetPSD: grpc.UnaryUnaryMultiCallable[
        common_pb2.PSDRequest,
        common_pb2.PSD,
    ]

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

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

    ListDataSource: grpc.UnaryUnaryMultiCallable[
        datasource_pb2.DataSourceRequest,
        datasource_pb2.DataSourceStatusMap,
    ]
    """data source functions"""

    ListDataSourceIDs: grpc.UnaryUnaryMultiCallable[
        datasource_pb2.DataSourceRequest,
        datasource_pb2.DataSourceIDReply,
    ]

    SetDataSourceFromFile: grpc.UnaryUnaryMultiCallable[
        datasource_pb2.DataSourceSetSaveRequest,
        datasource_pb2.DataSourceSetSaveReply,
    ]

    ClearDataSource: grpc.UnaryUnaryMultiCallable[
        datasource_pb2.DataSourceRequest,
        datasource_pb2.DataSourceIDReply,
    ]

    RenameDataSource: grpc.UnaryUnaryMultiCallable[
        datasource_pb2.DataSourceRequest,
        datasource_pb2.DataSourceIDReply,
    ]

    GetDataSourceKpiFileStatus: grpc.UnaryUnaryMultiCallable[
        datasource_pb2.DataSourceRequest,
        common_pb2.KpiFileStatus,
    ]

    GetDataSourceKpiFileStatus2: grpc.UnaryUnaryMultiCallable[
        datasource_pb2.DataSourceRequest,
        common_pb2.KpiFileStatus2,
    ]

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

    KpiClear: grpc.UnaryUnaryMultiCallable[
        common_pb2.KpiStandardRequest,
        common_pb2.StandardReply,
    ]
    """time series data source KPI functions"""

    KpiCalculate: grpc.UnaryUnaryMultiCallable[
        common_pb2.KpiStandardRequest,
        common_pb2.StandardReply,
    ]

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

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

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

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

    SpikesSetFromFile: grpc.UnaryUnaryMultiCallable[
        datasource_pb2.DataSourceSetSaveRequest,
        datasource_pb2.DataSourceSetSaveReply,
    ]
    """===================
    SPIKES- and BIOINTERFACE-related API functions
    ===================

    == properties
    rpc SpikesSaveToFile(DataSourceSetSaveRequest) returns (DataSourceFileSetStat) {}
    """

    SpikesGetIDs: grpc.UnaryUnaryMultiCallable[
        datasource_pb2.DataSourceRequest,
        datasource_pb2.DataSourceIDReply,
    ]

    SpikesRenameID: grpc.UnaryUnaryMultiCallable[
        datasource_pb2.DataSourceRequest,
        datasource_pb2.DataSourceIDReply,
    ]

    SpikesGetAllSummaryInfo: grpc.UnaryUnaryMultiCallable[
        datasource_pb2.DataSourceRequest,
        datasource_pb2.DataSourceStatusMap,
    ]

    SpikesGetSpec: grpc.UnaryUnaryMultiCallable[
        datasource_pb2.DataSourceRequest,
        biointerface_pb2.SpikesSpecReply,
    ]

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

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

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

    SpikesExportAs: grpc.UnaryUnaryMultiCallable[
        biointerface_pb2.SpikesExportReq,
        common_pb2.StandardReply,
    ]

    SpikesDeleteIDs: grpc.UnaryUnaryMultiCallable[
        datasource_pb2.DataSourceRequest,
        datasource_pb2.DataSourceIDReply,
    ]
    """== lifecycle functions"""

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

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

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

    BiointerfaceListSensorSpecs: grpc.UnaryUnaryMultiCallable[
        common_pb2.SignalGroupIDRequest,
        common_pb2.ListSensorSpecsReply,
    ]
    """!! implement these functions"""

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

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

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

    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,
    ]

    DeleteSignalGroup: grpc.UnaryUnaryMultiCallable[
        common_pb2.SignalGroupIDRequest,
        common_pb2.StandardReply,
    ]
    """functions specific to radiensserver"""

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

    SetProtocol: grpc.UnaryUnaryMultiCallable[
        common_pb2.Protocol,
        common_pb2.Protocol,
    ]
    """Protocols functions"""

    GetProtocol: grpc.UnaryUnaryMultiCallable[
        common_pb2.ProtocolRequest,
        common_pb2.Protocol,
    ]

    RenameProtocol: grpc.UnaryUnaryMultiCallable[
        common_pb2.RenameProtocolRequest,
        common_pb2.Protocol,
    ]

    GetAllProtocols: grpc.UnaryUnaryMultiCallable[
        common_pb2.StandardRequest,
        common_pb2.GetAllProtocolsReply,
    ]

    ApplyProtocol: grpc.UnaryStreamMultiCallable[
        common_pb2.ProtocolRequest,
        common_pb2.ApplyProtocolProgress,
    ]

class RadiensCoreAsyncStub:
    Healthcheck: grpc.aio.UnaryUnaryMultiCallable[
        radiensserver_pb2.RadiensHealthcheckRequest,
        radiensserver_pb2.RadiensHealthcheckSpec,
    ]

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

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

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

    ListDirectory: grpc.aio.UnaryUnaryMultiCallable[
        common_pb2.ListDataSourcesRequest,
        datasource_pb2.CpRmMvLsReply,
    ]
    """===================
    Radiens file system operations
    ===================

    time-series data sources
    """

    CopyDataSourceFile: grpc.aio.UnaryUnaryMultiCallable[
        datasource_pb2.CopyRemoveDataSourceFileRequest,
        datasource_pb2.CpRmMvLsReply,
    ]

    RemoveDataSourceFile: grpc.aio.UnaryUnaryMultiCallable[
        datasource_pb2.CopyRemoveDataSourceFileRequest,
        datasource_pb2.CpRmMvLsReply,
    ]

    MoveDataSourceFile: grpc.aio.UnaryUnaryMultiCallable[
        datasource_pb2.MoveDataSourceFileRequest,
        datasource_pb2.CpRmMvLsReply,
    ]

    ExportDataSource: grpc.aio.UnaryUnaryMultiCallable[
        datasource_pb2.ExportDataSourceFileRequest,
        common_pb2.StandardReply,
    ]

    SpikesListDirectory: grpc.aio.UnaryUnaryMultiCallable[
        common_pb2.ListDataSourcesRequest,
        datasource_pb2.CpRmMvLsReply,
    ]
    """spikes/Biointerface data sources"""

    SpikesCopyFile: grpc.aio.UnaryUnaryMultiCallable[
        datasource_pb2.CopyRemoveDataSourceFileRequest,
        datasource_pb2.CpRmMvLsReply,
    ]

    SpikesRemoveFile: grpc.aio.UnaryUnaryMultiCallable[
        datasource_pb2.CopyRemoveDataSourceFileRequest,
        datasource_pb2.CpRmMvLsReply,
    ]

    SpikesMoveFile: grpc.aio.UnaryUnaryMultiCallable[
        datasource_pb2.MoveDataSourceFileRequest,
        datasource_pb2.CpRmMvLsReply,
    ]

    ManageNodeOrganization: grpc.aio.UnaryUnaryMultiCallable[
        common_pb2.ManageNodeOrgRequest,
        common_pb2.ManageNodeOrgReply,
    ]
    """!! experimental API functions to manage user profiles
    rpc ManageSession (ManageSessionRequest) returns (ManageSessionReply) {}
    rpc GetAllProfiles (StandardRequest) returns (GetAllProfilesReply) {}
    rpc GetProfile (StandardRequest) returns (GetCurrentProfileReply) {}
    rpc GetCurrentProfile (StandardRequest) returns (GetCurrentProfileReply) {}
    rpc SetCurrentProfile (SetCurrentProfileRequest) returns (StandardReply) {}

    !!experimental API functions for managing the Redis graph database
    Session, lab, and user API functions to interact with the radiens world database
    """

    ManageNodeLab: grpc.aio.UnaryUnaryMultiCallable[
        common_pb2.ManageNodeLabRequest,
        common_pb2.ManageNodeLabReply,
    ]

    ManageNodeUser: grpc.aio.UnaryUnaryMultiCallable[
        common_pb2.ManageNodeUserRequest,
        common_pb2.ManageNodeUserReply,
    ]

    ManageNodeProbe: grpc.aio.UnaryUnaryMultiCallable[
        common_pb2.ProbeNodeRequest,
        common_pb2.ProbeNodeReply,
    ]

    ManageEdges: grpc.aio.UnaryUnaryMultiCallable[
        common_pb2.WorldEdgeRequest,
        common_pb2.WorldEdgeReply,
    ]

    QueryWorld: grpc.aio.UnaryUnaryMultiCallable[
        common_pb2.QueryWorldRequest,
        common_pb2.QueryWorldReply,
    ]

    GetWarehouseSensorComponent: grpc.aio.UnaryUnaryMultiCallable[
        common_pb2.SensorCompRequest,
        common_pb2.GetSensorCompReply,
    ]
    """Sensor API functions"""

    ListSensorSpecs: grpc.aio.UnaryUnaryMultiCallable[
        common_pb2.ListSensorSpecsRequest,
        common_pb2.ListSensorSpecsReply,
    ]
    """===================
    TIME-SERIES DATASOURCE API functions
    ===================

    functions common with allegoserver
    """

    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,
    ]

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

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

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

    GetSpikeSorterIDs: grpc.aio.UnaryUnaryMultiCallable[
        spikesorter_pb2.GetSpikeSorterIDsRequest,
        spikesorter_pb2.GetSpikeSorterIDsReply,
    ]

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

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

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

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

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

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

    GetHDSnapshot: grpc.aio.UnaryUnaryMultiCallable[
        common_pb2.HDSnapshotRequest,
        common_pb2.HDSnapshot,
    ]

    GetPSD: grpc.aio.UnaryUnaryMultiCallable[
        common_pb2.PSDRequest,
        common_pb2.PSD,
    ]

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

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

    ListDataSource: grpc.aio.UnaryUnaryMultiCallable[
        datasource_pb2.DataSourceRequest,
        datasource_pb2.DataSourceStatusMap,
    ]
    """data source functions"""

    ListDataSourceIDs: grpc.aio.UnaryUnaryMultiCallable[
        datasource_pb2.DataSourceRequest,
        datasource_pb2.DataSourceIDReply,
    ]

    SetDataSourceFromFile: grpc.aio.UnaryUnaryMultiCallable[
        datasource_pb2.DataSourceSetSaveRequest,
        datasource_pb2.DataSourceSetSaveReply,
    ]

    ClearDataSource: grpc.aio.UnaryUnaryMultiCallable[
        datasource_pb2.DataSourceRequest,
        datasource_pb2.DataSourceIDReply,
    ]

    RenameDataSource: grpc.aio.UnaryUnaryMultiCallable[
        datasource_pb2.DataSourceRequest,
        datasource_pb2.DataSourceIDReply,
    ]

    GetDataSourceKpiFileStatus: grpc.aio.UnaryUnaryMultiCallable[
        datasource_pb2.DataSourceRequest,
        common_pb2.KpiFileStatus,
    ]

    GetDataSourceKpiFileStatus2: grpc.aio.UnaryUnaryMultiCallable[
        datasource_pb2.DataSourceRequest,
        common_pb2.KpiFileStatus2,
    ]

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

    KpiClear: grpc.aio.UnaryUnaryMultiCallable[
        common_pb2.KpiStandardRequest,
        common_pb2.StandardReply,
    ]
    """time series data source KPI functions"""

    KpiCalculate: grpc.aio.UnaryUnaryMultiCallable[
        common_pb2.KpiStandardRequest,
        common_pb2.StandardReply,
    ]

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

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

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

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

    SpikesSetFromFile: grpc.aio.UnaryUnaryMultiCallable[
        datasource_pb2.DataSourceSetSaveRequest,
        datasource_pb2.DataSourceSetSaveReply,
    ]
    """===================
    SPIKES- and BIOINTERFACE-related API functions
    ===================

    == properties
    rpc SpikesSaveToFile(DataSourceSetSaveRequest) returns (DataSourceFileSetStat) {}
    """

    SpikesGetIDs: grpc.aio.UnaryUnaryMultiCallable[
        datasource_pb2.DataSourceRequest,
        datasource_pb2.DataSourceIDReply,
    ]

    SpikesRenameID: grpc.aio.UnaryUnaryMultiCallable[
        datasource_pb2.DataSourceRequest,
        datasource_pb2.DataSourceIDReply,
    ]

    SpikesGetAllSummaryInfo: grpc.aio.UnaryUnaryMultiCallable[
        datasource_pb2.DataSourceRequest,
        datasource_pb2.DataSourceStatusMap,
    ]

    SpikesGetSpec: grpc.aio.UnaryUnaryMultiCallable[
        datasource_pb2.DataSourceRequest,
        biointerface_pb2.SpikesSpecReply,
    ]

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

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

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

    SpikesExportAs: grpc.aio.UnaryUnaryMultiCallable[
        biointerface_pb2.SpikesExportReq,
        common_pb2.StandardReply,
    ]

    SpikesDeleteIDs: grpc.aio.UnaryUnaryMultiCallable[
        datasource_pb2.DataSourceRequest,
        datasource_pb2.DataSourceIDReply,
    ]
    """== lifecycle functions"""

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

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

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

    BiointerfaceListSensorSpecs: grpc.aio.UnaryUnaryMultiCallable[
        common_pb2.SignalGroupIDRequest,
        common_pb2.ListSensorSpecsReply,
    ]
    """!! implement these functions"""

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

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

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

    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,
    ]

    DeleteSignalGroup: grpc.aio.UnaryUnaryMultiCallable[
        common_pb2.SignalGroupIDRequest,
        common_pb2.StandardReply,
    ]
    """functions specific to radiensserver"""

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

    SetProtocol: grpc.aio.UnaryUnaryMultiCallable[
        common_pb2.Protocol,
        common_pb2.Protocol,
    ]
    """Protocols functions"""

    GetProtocol: grpc.aio.UnaryUnaryMultiCallable[
        common_pb2.ProtocolRequest,
        common_pb2.Protocol,
    ]

    RenameProtocol: grpc.aio.UnaryUnaryMultiCallable[
        common_pb2.RenameProtocolRequest,
        common_pb2.Protocol,
    ]

    GetAllProtocols: grpc.aio.UnaryUnaryMultiCallable[
        common_pb2.StandardRequest,
        common_pb2.GetAllProtocolsReply,
    ]

    ApplyProtocol: grpc.aio.UnaryStreamMultiCallable[
        common_pb2.ProtocolRequest,
        common_pb2.ApplyProtocolProgress,
    ]

class RadiensCoreServicer(metaclass=abc.ABCMeta):
    @abc.abstractmethod
    def Healthcheck(
        self,
        request: radiensserver_pb2.RadiensHealthcheckRequest,
        context: _ServicerContext,
    ) -> typing.Union[radiensserver_pb2.RadiensHealthcheckSpec, collections.abc.Awaitable[radiensserver_pb2.RadiensHealthcheckSpec]]: ...

    @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 WorkspaceControl(
        self,
        request: common_pb2.WorkspaceControlRequest,
        context: _ServicerContext,
    ) -> typing.Union[common_pb2.StandardReply, collections.abc.Awaitable[common_pb2.StandardReply]]: ...

    @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 ListDirectory(
        self,
        request: common_pb2.ListDataSourcesRequest,
        context: _ServicerContext,
    ) -> typing.Union[datasource_pb2.CpRmMvLsReply, collections.abc.Awaitable[datasource_pb2.CpRmMvLsReply]]:
        """===================
        Radiens file system operations
        ===================

        time-series data sources
        """

    @abc.abstractmethod
    def CopyDataSourceFile(
        self,
        request: datasource_pb2.CopyRemoveDataSourceFileRequest,
        context: _ServicerContext,
    ) -> typing.Union[datasource_pb2.CpRmMvLsReply, collections.abc.Awaitable[datasource_pb2.CpRmMvLsReply]]: ...

    @abc.abstractmethod
    def RemoveDataSourceFile(
        self,
        request: datasource_pb2.CopyRemoveDataSourceFileRequest,
        context: _ServicerContext,
    ) -> typing.Union[datasource_pb2.CpRmMvLsReply, collections.abc.Awaitable[datasource_pb2.CpRmMvLsReply]]: ...

    @abc.abstractmethod
    def MoveDataSourceFile(
        self,
        request: datasource_pb2.MoveDataSourceFileRequest,
        context: _ServicerContext,
    ) -> typing.Union[datasource_pb2.CpRmMvLsReply, collections.abc.Awaitable[datasource_pb2.CpRmMvLsReply]]: ...

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

    @abc.abstractmethod
    def SpikesListDirectory(
        self,
        request: common_pb2.ListDataSourcesRequest,
        context: _ServicerContext,
    ) -> typing.Union[datasource_pb2.CpRmMvLsReply, collections.abc.Awaitable[datasource_pb2.CpRmMvLsReply]]:
        """spikes/Biointerface data sources"""

    @abc.abstractmethod
    def SpikesCopyFile(
        self,
        request: datasource_pb2.CopyRemoveDataSourceFileRequest,
        context: _ServicerContext,
    ) -> typing.Union[datasource_pb2.CpRmMvLsReply, collections.abc.Awaitable[datasource_pb2.CpRmMvLsReply]]: ...

    @abc.abstractmethod
    def SpikesRemoveFile(
        self,
        request: datasource_pb2.CopyRemoveDataSourceFileRequest,
        context: _ServicerContext,
    ) -> typing.Union[datasource_pb2.CpRmMvLsReply, collections.abc.Awaitable[datasource_pb2.CpRmMvLsReply]]: ...

    @abc.abstractmethod
    def SpikesMoveFile(
        self,
        request: datasource_pb2.MoveDataSourceFileRequest,
        context: _ServicerContext,
    ) -> typing.Union[datasource_pb2.CpRmMvLsReply, collections.abc.Awaitable[datasource_pb2.CpRmMvLsReply]]: ...

    @abc.abstractmethod
    def ManageNodeOrganization(
        self,
        request: common_pb2.ManageNodeOrgRequest,
        context: _ServicerContext,
    ) -> typing.Union[common_pb2.ManageNodeOrgReply, collections.abc.Awaitable[common_pb2.ManageNodeOrgReply]]:
        """!! experimental API functions to manage user profiles
        rpc ManageSession (ManageSessionRequest) returns (ManageSessionReply) {}
        rpc GetAllProfiles (StandardRequest) returns (GetAllProfilesReply) {}
        rpc GetProfile (StandardRequest) returns (GetCurrentProfileReply) {}
        rpc GetCurrentProfile (StandardRequest) returns (GetCurrentProfileReply) {}
        rpc SetCurrentProfile (SetCurrentProfileRequest) returns (StandardReply) {}

        !!experimental API functions for managing the Redis graph database
        Session, lab, and user API functions to interact with the radiens world database
        """

    @abc.abstractmethod
    def ManageNodeLab(
        self,
        request: common_pb2.ManageNodeLabRequest,
        context: _ServicerContext,
    ) -> typing.Union[common_pb2.ManageNodeLabReply, collections.abc.Awaitable[common_pb2.ManageNodeLabReply]]: ...

    @abc.abstractmethod
    def ManageNodeUser(
        self,
        request: common_pb2.ManageNodeUserRequest,
        context: _ServicerContext,
    ) -> typing.Union[common_pb2.ManageNodeUserReply, collections.abc.Awaitable[common_pb2.ManageNodeUserReply]]: ...

    @abc.abstractmethod
    def ManageNodeProbe(
        self,
        request: common_pb2.ProbeNodeRequest,
        context: _ServicerContext,
    ) -> typing.Union[common_pb2.ProbeNodeReply, collections.abc.Awaitable[common_pb2.ProbeNodeReply]]: ...

    @abc.abstractmethod
    def ManageEdges(
        self,
        request: common_pb2.WorldEdgeRequest,
        context: _ServicerContext,
    ) -> typing.Union[common_pb2.WorldEdgeReply, collections.abc.Awaitable[common_pb2.WorldEdgeReply]]: ...

    @abc.abstractmethod
    def QueryWorld(
        self,
        request: common_pb2.QueryWorldRequest,
        context: _ServicerContext,
    ) -> typing.Union[common_pb2.QueryWorldReply, collections.abc.Awaitable[common_pb2.QueryWorldReply]]: ...

    @abc.abstractmethod
    def GetWarehouseSensorComponent(
        self,
        request: common_pb2.SensorCompRequest,
        context: _ServicerContext,
    ) -> typing.Union[common_pb2.GetSensorCompReply, collections.abc.Awaitable[common_pb2.GetSensorCompReply]]:
        """Sensor API functions"""

    @abc.abstractmethod
    def ListSensorSpecs(
        self,
        request: common_pb2.ListSensorSpecsRequest,
        context: _ServicerContext,
    ) -> typing.Union[common_pb2.ListSensorSpecsReply, collections.abc.Awaitable[common_pb2.ListSensorSpecsReply]]:
        """===================
        TIME-SERIES DATASOURCE API functions
        ===================

        functions common with allegoserver
        """

    @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 UpdateSignalGroup(
        self,
        request: common_pb2.UpdateSignalGroupRequest,
        context: _ServicerContext,
    ) -> typing.Union[common_pb2.StandardReply, collections.abc.Awaitable[common_pb2.StandardReply]]: ...

    @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: spikesorter_pb2.GetSpikeSorterIDsRequest,
        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 GetDataSourceParams(
        self,
        request: common_pb2.SignalGroupIDRequest,
        context: _ServicerContext,
    ) -> typing.Union[datasource_pb2.DataSourceParams, collections.abc.Awaitable[datasource_pb2.DataSourceParams]]: ...

    @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 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 GetHDSnapshotPy(
        self,
        request: common_pb2.HDSnapshotRequest2,
        context: _ServicerContext,
    ) -> typing.Union[common_pb2.HDSnapshot2, collections.abc.Awaitable[common_pb2.HDSnapshot2]]: ...

    @abc.abstractmethod
    def GetHDSnapshot(
        self,
        request: common_pb2.HDSnapshotRequest,
        context: _ServicerContext,
    ) -> typing.Union[common_pb2.HDSnapshot, collections.abc.Awaitable[common_pb2.HDSnapshot]]: ...

    @abc.abstractmethod
    def GetPSD(
        self,
        request: common_pb2.PSDRequest,
        context: _ServicerContext,
    ) -> typing.Union[common_pb2.PSD, collections.abc.Awaitable[common_pb2.PSD]]: ...

    @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 GetDSPGroup(
        self,
        request: common_pb2.SignalGroupIDRequest,
        context: _ServicerContext,
    ) -> typing.Union[common_pb2.DSPGroup, collections.abc.Awaitable[common_pb2.DSPGroup]]: ...

    @abc.abstractmethod
    def ListDataSource(
        self,
        request: datasource_pb2.DataSourceRequest,
        context: _ServicerContext,
    ) -> typing.Union[datasource_pb2.DataSourceStatusMap, collections.abc.Awaitable[datasource_pb2.DataSourceStatusMap]]:
        """data source functions"""

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

    @abc.abstractmethod
    def SetDataSourceFromFile(
        self,
        request: datasource_pb2.DataSourceSetSaveRequest,
        context: _ServicerContext,
    ) -> typing.Union[datasource_pb2.DataSourceSetSaveReply, collections.abc.Awaitable[datasource_pb2.DataSourceSetSaveReply]]: ...

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

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

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

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

    @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 KpiClear(
        self,
        request: common_pb2.KpiStandardRequest,
        context: _ServicerContext,
    ) -> typing.Union[common_pb2.StandardReply, collections.abc.Awaitable[common_pb2.StandardReply]]:
        """time series data source KPI functions"""

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

    @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 KpiGetMetrics(
        self,
        request: common_pb2.KpiMetricsReq,
        context: _ServicerContext,
    ) -> typing.Union[common_pb2.SignalMetricsPacketReply, collections.abc.Awaitable[common_pb2.SignalMetricsPacketReply]]: ...

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

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

    @abc.abstractmethod
    def SpikesSetFromFile(
        self,
        request: datasource_pb2.DataSourceSetSaveRequest,
        context: _ServicerContext,
    ) -> typing.Union[datasource_pb2.DataSourceSetSaveReply, collections.abc.Awaitable[datasource_pb2.DataSourceSetSaveReply]]:
        """===================
        SPIKES- and BIOINTERFACE-related API functions
        ===================

        == properties
        rpc SpikesSaveToFile(DataSourceSetSaveRequest) returns (DataSourceFileSetStat) {}
        """

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

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

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

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

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

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

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

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

    @abc.abstractmethod
    def SpikesDeleteIDs(
        self,
        request: datasource_pb2.DataSourceRequest,
        context: _ServicerContext,
    ) -> typing.Union[datasource_pb2.DataSourceIDReply, collections.abc.Awaitable[datasource_pb2.DataSourceIDReply]]:
        """== lifecycle functions"""

    @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 BiointerfaceViz(
        self,
        request: biointerface_pb2.BiointerfaceVizRequest,
        context: _ServicerContext,
    ) -> typing.Union[biointerface_pb2.BiointerfaceVizReply, collections.abc.Awaitable[biointerface_pb2.BiointerfaceVizReply]]: ...

    @abc.abstractmethod
    def BiointerfaceListSensorSpecs(
        self,
        request: common_pb2.SignalGroupIDRequest,
        context: _ServicerContext,
    ) -> typing.Union[common_pb2.ListSensorSpecsReply, collections.abc.Awaitable[common_pb2.ListSensorSpecsReply]]:
        """!! implement these functions"""

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

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

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

    @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 DeleteSignalGroup(
        self,
        request: common_pb2.SignalGroupIDRequest,
        context: _ServicerContext,
    ) -> typing.Union[common_pb2.StandardReply, collections.abc.Awaitable[common_pb2.StandardReply]]:
        """functions specific to radiensserver"""

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

    @abc.abstractmethod
    def SetProtocol(
        self,
        request: common_pb2.Protocol,
        context: _ServicerContext,
    ) -> typing.Union[common_pb2.Protocol, collections.abc.Awaitable[common_pb2.Protocol]]:
        """Protocols functions"""

    @abc.abstractmethod
    def GetProtocol(
        self,
        request: common_pb2.ProtocolRequest,
        context: _ServicerContext,
    ) -> typing.Union[common_pb2.Protocol, collections.abc.Awaitable[common_pb2.Protocol]]: ...

    @abc.abstractmethod
    def RenameProtocol(
        self,
        request: common_pb2.RenameProtocolRequest,
        context: _ServicerContext,
    ) -> typing.Union[common_pb2.Protocol, collections.abc.Awaitable[common_pb2.Protocol]]: ...

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

    @abc.abstractmethod
    def ApplyProtocol(
        self,
        request: common_pb2.ProtocolRequest,
        context: _ServicerContext,
    ) -> typing.Union[collections.abc.Iterator[common_pb2.ApplyProtocolProgress], collections.abc.AsyncIterator[common_pb2.ApplyProtocolProgress]]: ...

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

class RadiensSpikeSorter1Stub:
    def __init__(self, channel: typing.Union[grpc.Channel, grpc.aio.Channel]) -> None: ...
    Healthcheck: grpc.UnaryUnaryMultiCallable[
        radiensserver_pb2.RadiensHealthcheckRequest,
        radiensserver_pb2.RadiensHealthcheckSpec,
    ]
    """Lifecycle"""

    SpikeSorterCommand: grpc.UnaryUnaryMultiCallable[
        spikesorter_pb2.SpikeSorterCommandRequest,
        common_pb2.StandardReply,
    ]
    """common with allegoserver"""

    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,
    ]

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

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

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

    SpikeSorterWrangleData: grpc.UnaryUnaryMultiCallable[
        radiens_dev_pb2.WrangleRequest,
        common_pb2.StandardReply,
    ]
    """specific to radiensserver"""

    SpikeSorterLaunch: grpc.UnaryUnaryMultiCallable[
        spikesorter_pb2.SpikeSorterLaunchRequest,
        spikesorter_pb2.SpikeSorterLaunchReply,
    ]

    SpikeSorterDelete: grpc.UnaryUnaryMultiCallable[
        spikesorter_pb2.SpikeSorterStandardRequest,
        common_pb2.StandardReply,
    ]

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

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

    SpikeSorterImportMearec: grpc.UnaryUnaryMultiCallable[
        radiens_dev_pb2.RecgenImport,
        datasource_pb2.FileDescriptors,
    ]

    SpikesExport: grpc.UnaryUnaryMultiCallable[
        spikesorter_pb2.ExportSpikesRequest,
        common_pb2.StandardReply,
    ]

class RadiensSpikeSorter1AsyncStub:
    Healthcheck: grpc.aio.UnaryUnaryMultiCallable[
        radiensserver_pb2.RadiensHealthcheckRequest,
        radiensserver_pb2.RadiensHealthcheckSpec,
    ]
    """Lifecycle"""

    SpikeSorterCommand: grpc.aio.UnaryUnaryMultiCallable[
        spikesorter_pb2.SpikeSorterCommandRequest,
        common_pb2.StandardReply,
    ]
    """common with allegoserver"""

    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,
    ]

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

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

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

    SpikeSorterWrangleData: grpc.aio.UnaryUnaryMultiCallable[
        radiens_dev_pb2.WrangleRequest,
        common_pb2.StandardReply,
    ]
    """specific to radiensserver"""

    SpikeSorterLaunch: grpc.aio.UnaryUnaryMultiCallable[
        spikesorter_pb2.SpikeSorterLaunchRequest,
        spikesorter_pb2.SpikeSorterLaunchReply,
    ]

    SpikeSorterDelete: grpc.aio.UnaryUnaryMultiCallable[
        spikesorter_pb2.SpikeSorterStandardRequest,
        common_pb2.StandardReply,
    ]

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

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

    SpikeSorterImportMearec: grpc.aio.UnaryUnaryMultiCallable[
        radiens_dev_pb2.RecgenImport,
        datasource_pb2.FileDescriptors,
    ]

    SpikesExport: grpc.aio.UnaryUnaryMultiCallable[
        spikesorter_pb2.ExportSpikesRequest,
        common_pb2.StandardReply,
    ]

class RadiensSpikeSorter1Servicer(metaclass=abc.ABCMeta):
    @abc.abstractmethod
    def Healthcheck(
        self,
        request: radiensserver_pb2.RadiensHealthcheckRequest,
        context: _ServicerContext,
    ) -> typing.Union[radiensserver_pb2.RadiensHealthcheckSpec, collections.abc.Awaitable[radiensserver_pb2.RadiensHealthcheckSpec]]:
        """Lifecycle"""

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

    @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 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 SpikeSorterGetFeatureParams(
        self,
        request: spikesorter_pb2.SpikeSorterStandardRequest,
        context: _ServicerContext,
    ) -> typing.Union[spikesorter_pb2.SpikeSorterFeatureParamsReply, collections.abc.Awaitable[spikesorter_pb2.SpikeSorterFeatureParamsReply]]: ...

    @abc.abstractmethod
    def SpikeSorterWrangleData(
        self,
        request: radiens_dev_pb2.WrangleRequest,
        context: _ServicerContext,
    ) -> typing.Union[common_pb2.StandardReply, collections.abc.Awaitable[common_pb2.StandardReply]]:
        """specific to radiensserver"""

    @abc.abstractmethod
    def SpikeSorterLaunch(
        self,
        request: spikesorter_pb2.SpikeSorterLaunchRequest,
        context: _ServicerContext,
    ) -> typing.Union[spikesorter_pb2.SpikeSorterLaunchReply, collections.abc.Awaitable[spikesorter_pb2.SpikeSorterLaunchReply]]: ...

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

    @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 SpikeSorterIsAnyActive(
        self,
        request: spikesorter_pb2.SpikeSorterIsAnyActiveRequest,
        context: _ServicerContext,
    ) -> typing.Union[spikesorter_pb2.SpikeSorterIsAnyActiveReply, collections.abc.Awaitable[spikesorter_pb2.SpikeSorterIsAnyActiveReply]]: ...

    @abc.abstractmethod
    def SpikeSorterImportMearec(
        self,
        request: radiens_dev_pb2.RecgenImport,
        context: _ServicerContext,
    ) -> typing.Union[datasource_pb2.FileDescriptors, collections.abc.Awaitable[datasource_pb2.FileDescriptors]]: ...

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

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

class DashboardsStub:
    def __init__(self, channel: typing.Union[grpc.Channel, grpc.aio.Channel]) -> None: ...
    Healthcheck: grpc.UnaryUnaryMultiCallable[
        radiensserver_pb2.RadiensHealthcheckRequest,
        radiensserver_pb2.RadiensHealthcheckSpec,
    ]

    CommandDashboard: grpc.UnaryUnaryMultiCallable[
        common_pb2.DashboardCommandRequest,
        common_pb2.StandardReply,
    ]

    LaunchSessionAnalysis: grpc.UnaryUnaryMultiCallable[
        radiensserver_pb2.SummaAnalysisRequest,
        radiensserver_pb2.SummaAnalysisReply,
    ]

    GetSessionAnalysis: grpc.UnaryUnaryMultiCallable[
        radiensserver_pb2.SummaAnalysisRequest,
        radiensserver_pb2.SummaAnalysisReply,
    ]

    ListSessions: grpc.UnaryUnaryMultiCallable[
        common_pb2.StandardRequest,
        radiensserver_pb2.SummaSessionsReply,
    ]

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

class DashboardsAsyncStub:
    Healthcheck: grpc.aio.UnaryUnaryMultiCallable[
        radiensserver_pb2.RadiensHealthcheckRequest,
        radiensserver_pb2.RadiensHealthcheckSpec,
    ]

    CommandDashboard: grpc.aio.UnaryUnaryMultiCallable[
        common_pb2.DashboardCommandRequest,
        common_pb2.StandardReply,
    ]

    LaunchSessionAnalysis: grpc.aio.UnaryUnaryMultiCallable[
        radiensserver_pb2.SummaAnalysisRequest,
        radiensserver_pb2.SummaAnalysisReply,
    ]

    GetSessionAnalysis: grpc.aio.UnaryUnaryMultiCallable[
        radiensserver_pb2.SummaAnalysisRequest,
        radiensserver_pb2.SummaAnalysisReply,
    ]

    ListSessions: grpc.aio.UnaryUnaryMultiCallable[
        common_pb2.StandardRequest,
        radiensserver_pb2.SummaSessionsReply,
    ]

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

class DashboardsServicer(metaclass=abc.ABCMeta):
    @abc.abstractmethod
    def Healthcheck(
        self,
        request: radiensserver_pb2.RadiensHealthcheckRequest,
        context: _ServicerContext,
    ) -> typing.Union[radiensserver_pb2.RadiensHealthcheckSpec, collections.abc.Awaitable[radiensserver_pb2.RadiensHealthcheckSpec]]: ...

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

    @abc.abstractmethod
    def LaunchSessionAnalysis(
        self,
        request: radiensserver_pb2.SummaAnalysisRequest,
        context: _ServicerContext,
    ) -> typing.Union[radiensserver_pb2.SummaAnalysisReply, collections.abc.Awaitable[radiensserver_pb2.SummaAnalysisReply]]: ...

    @abc.abstractmethod
    def GetSessionAnalysis(
        self,
        request: radiensserver_pb2.SummaAnalysisRequest,
        context: _ServicerContext,
    ) -> typing.Union[radiensserver_pb2.SummaAnalysisReply, collections.abc.Awaitable[radiensserver_pb2.SummaAnalysisReply]]: ...

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

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

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

class RadiensDev1Stub:
    def __init__(self, channel: typing.Union[grpc.Channel, grpc.aio.Channel]) -> None: ...
    Healthcheck: grpc.UnaryUnaryMultiCallable[
        radiensserver_pb2.RadiensHealthcheckRequest,
        radiensserver_pb2.RadiensHealthcheckSpec,
    ]

    SpkSortTrainerMakeNewModel: grpc.UnaryUnaryMultiCallable[
        radiens_dev_pb2.SpkSortTrainerNewReq,
        common_pb2.StandardReply,
    ]

    SpkSortTrainerLearnHyperParams: grpc.UnaryUnaryMultiCallable[
        radiens_dev_pb2.SpkSortLearnHyperParamsReq,
        common_pb2.StandardReply,
    ]

    SpkSortTrainerProfileModel: grpc.UnaryUnaryMultiCallable[
        radiens_dev_pb2.SpkSortTrainerProfileReq,
        common_pb2.StandardReply,
    ]

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

    SpkSortTrainerListLocalNetworkModels: grpc.UnaryUnaryMultiCallable[
        common_pb2.StandardRequest,
        radiens_dev_pb2.SpkSortTrainerStatusReply,
    ]

    SpkSortTrainerDeleteLocalNetworkModels: grpc.UnaryUnaryMultiCallable[
        radiens_dev_pb2.SpkSortTrainerDeleteModelReq,
        common_pb2.StandardReply,
    ]

    SpkSortTrainerGetStatus: grpc.UnaryUnaryMultiCallable[
        common_pb2.StandardRequest,
        radiens_dev_pb2.SpkSortTrainerStatusReply,
    ]
    """getters"""

class RadiensDev1AsyncStub:
    Healthcheck: grpc.aio.UnaryUnaryMultiCallable[
        radiensserver_pb2.RadiensHealthcheckRequest,
        radiensserver_pb2.RadiensHealthcheckSpec,
    ]

    SpkSortTrainerMakeNewModel: grpc.aio.UnaryUnaryMultiCallable[
        radiens_dev_pb2.SpkSortTrainerNewReq,
        common_pb2.StandardReply,
    ]

    SpkSortTrainerLearnHyperParams: grpc.aio.UnaryUnaryMultiCallable[
        radiens_dev_pb2.SpkSortLearnHyperParamsReq,
        common_pb2.StandardReply,
    ]

    SpkSortTrainerProfileModel: grpc.aio.UnaryUnaryMultiCallable[
        radiens_dev_pb2.SpkSortTrainerProfileReq,
        common_pb2.StandardReply,
    ]

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

    SpkSortTrainerListLocalNetworkModels: grpc.aio.UnaryUnaryMultiCallable[
        common_pb2.StandardRequest,
        radiens_dev_pb2.SpkSortTrainerStatusReply,
    ]

    SpkSortTrainerDeleteLocalNetworkModels: grpc.aio.UnaryUnaryMultiCallable[
        radiens_dev_pb2.SpkSortTrainerDeleteModelReq,
        common_pb2.StandardReply,
    ]

    SpkSortTrainerGetStatus: grpc.aio.UnaryUnaryMultiCallable[
        common_pb2.StandardRequest,
        radiens_dev_pb2.SpkSortTrainerStatusReply,
    ]
    """getters"""

class RadiensDev1Servicer(metaclass=abc.ABCMeta):
    @abc.abstractmethod
    def Healthcheck(
        self,
        request: radiensserver_pb2.RadiensHealthcheckRequest,
        context: _ServicerContext,
    ) -> typing.Union[radiensserver_pb2.RadiensHealthcheckSpec, collections.abc.Awaitable[radiensserver_pb2.RadiensHealthcheckSpec]]: ...

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

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

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

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

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

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

    @abc.abstractmethod
    def SpkSortTrainerGetStatus(
        self,
        request: common_pb2.StandardRequest,
        context: _ServicerContext,
    ) -> typing.Union[radiens_dev_pb2.SpkSortTrainerStatusReply, collections.abc.Awaitable[radiens_dev_pb2.SpkSortTrainerStatusReply]]:
        """getters"""

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