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

import builtins
import collections.abc
from . import common_pb2
import google.protobuf.descriptor
import google.protobuf.internal.containers
import google.protobuf.internal.enum_type_wrapper
import google.protobuf.message
import sys
import typing

if sys.version_info >= (3, 10):
    import typing as typing_extensions
else:
    import typing_extensions

DESCRIPTOR: google.protobuf.descriptor.FileDescriptor

class _BiointerfaceType:
    ValueType = typing.NewType("ValueType", builtins.int)
    V: typing_extensions.TypeAlias = ValueType

class _BiointerfaceTypeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_BiointerfaceType.ValueType], builtins.type):
    DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
    BIO_SPIKETRAINS: _BiointerfaceType.ValueType  # 0
    BIO_SPIKES_CACHE: _BiointerfaceType.ValueType  # 1
    BIO_SPIKES_STREAM: _BiointerfaceType.ValueType  # 2

class BiointerfaceType(_BiointerfaceType, metaclass=_BiointerfaceTypeEnumTypeWrapper): ...

BIO_SPIKETRAINS: BiointerfaceType.ValueType  # 0
BIO_SPIKES_CACHE: BiointerfaceType.ValueType  # 1
BIO_SPIKES_STREAM: BiointerfaceType.ValueType  # 2
global___BiointerfaceType = BiointerfaceType

class _SpikesImportSchema:
    ValueType = typing.NewType("ValueType", builtins.int)
    V: typing_extensions.TypeAlias = ValueType

class _SpikesImportSchemaEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_SpikesImportSchema.ValueType], builtins.type):
    DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
    NI_SIM: _SpikesImportSchema.ValueType  # 0

class SpikesImportSchema(_SpikesImportSchema, metaclass=_SpikesImportSchemaEnumTypeWrapper): ...

NI_SIM: SpikesImportSchema.ValueType  # 0
global___SpikesImportSchema = SpikesImportSchema

class _BiointerfaceCommand:
    ValueType = typing.NewType("ValueType", builtins.int)
    V: typing_extensions.TypeAlias = ValueType

class _BiointerfaceCommandEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_BiointerfaceCommand.ValueType], builtins.type):
    DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
    BIO_CMD_SAVE_ON: _BiointerfaceCommand.ValueType  # 0
    BIO_CMD_SAVE_OFF: _BiointerfaceCommand.ValueType  # 1

class BiointerfaceCommand(_BiointerfaceCommand, metaclass=_BiointerfaceCommandEnumTypeWrapper): ...

BIO_CMD_SAVE_ON: BiointerfaceCommand.ValueType  # 0
BIO_CMD_SAVE_OFF: BiointerfaceCommand.ValueType  # 1
global___BiointerfaceCommand = BiointerfaceCommand

class _BiointerfaceState:
    ValueType = typing.NewType("ValueType", builtins.int)
    V: typing_extensions.TypeAlias = ValueType

class _BiointerfaceStateEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_BiointerfaceState.ValueType], builtins.type):
    DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
    BIO_SAVE_ON: _BiointerfaceState.ValueType  # 0
    BIO_SAVE_OFF: _BiointerfaceState.ValueType  # 1
    BIO_CONFIGURED: _BiointerfaceState.ValueType  # 2

class BiointerfaceState(_BiointerfaceState, metaclass=_BiointerfaceStateEnumTypeWrapper): ...

BIO_SAVE_ON: BiointerfaceState.ValueType  # 0
BIO_SAVE_OFF: BiointerfaceState.ValueType  # 1
BIO_CONFIGURED: BiointerfaceState.ValueType  # 2
global___BiointerfaceState = BiointerfaceState

class _SpikeTrainAnalytic:
    ValueType = typing.NewType("ValueType", builtins.int)
    V: typing_extensions.TypeAlias = ValueType

class _SpikeTrainAnalyticEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_SpikeTrainAnalytic.ValueType], builtins.type):
    DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
    ISI: _SpikeTrainAnalytic.ValueType  # 0
    AVG_WFM: _SpikeTrainAnalytic.ValueType  # 1

class SpikeTrainAnalytic(_SpikeTrainAnalytic, metaclass=_SpikeTrainAnalyticEnumTypeWrapper): ...

ISI: SpikeTrainAnalytic.ValueType  # 0
AVG_WFM: SpikeTrainAnalytic.ValueType  # 1
global___SpikeTrainAnalytic = SpikeTrainAnalytic

class _NeuronSortBy:
    ValueType = typing.NewType("ValueType", builtins.int)
    V: typing_extensions.TypeAlias = ValueType

class _NeuronSortByEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_NeuronSortBy.ValueType], builtins.type):
    DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
    SB_MONITOR_MATCH: _NeuronSortBy.ValueType  # 0
    SB_SPIKE_RATE: _NeuronSortBy.ValueType  # 1
    SB_SNR: _NeuronSortBy.ValueType  # 2

class NeuronSortBy(_NeuronSortBy, metaclass=_NeuronSortByEnumTypeWrapper): ...

SB_MONITOR_MATCH: NeuronSortBy.ValueType  # 0
SB_SPIKE_RATE: NeuronSortBy.ValueType  # 1
SB_SNR: NeuronSortBy.ValueType  # 2
global___NeuronSortBy = NeuronSortBy

class _NeuronSortMode:
    ValueType = typing.NewType("ValueType", builtins.int)
    V: typing_extensions.TypeAlias = ValueType

class _NeuronSortModeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_NeuronSortMode.ValueType], builtins.type):
    DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
    SM_ASCENDING: _NeuronSortMode.ValueType  # 0
    SM_DESCENDING: _NeuronSortMode.ValueType  # 1

class NeuronSortMode(_NeuronSortMode, metaclass=_NeuronSortModeEnumTypeWrapper): ...

SM_ASCENDING: NeuronSortMode.ValueType  # 0
SM_DESCENDING: NeuronSortMode.ValueType  # 1
global___NeuronSortMode = NeuronSortMode

class _NeuronsSignalMode:
    ValueType = typing.NewType("ValueType", builtins.int)
    V: typing_extensions.TypeAlias = ValueType

class _NeuronsSignalModeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_NeuronsSignalMode.ValueType], builtins.type):
    DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
    Spikes: _NeuronsSignalMode.ValueType  # 0
    SpikeTimestamps: _NeuronsSignalMode.ValueType  # 1
    SpikeTimes: _NeuronsSignalMode.ValueType  # 2
    SpikeWaveforms: _NeuronsSignalMode.ValueType  # 3

class NeuronsSignalMode(_NeuronsSignalMode, metaclass=_NeuronsSignalModeEnumTypeWrapper): ...

Spikes: NeuronsSignalMode.ValueType  # 0
SpikeTimestamps: NeuronsSignalMode.ValueType  # 1
SpikeTimes: NeuronsSignalMode.ValueType  # 2
SpikeWaveforms: NeuronsSignalMode.ValueType  # 3
global___NeuronsSignalMode = NeuronsSignalMode

class _SpikeDescriptorComponent:
    ValueType = typing.NewType("ValueType", builtins.int)
    V: typing_extensions.TypeAlias = ValueType

class _SpikeDescriptorComponentEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_SpikeDescriptorComponent.ValueType], builtins.type):
    DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
    CTimestamp: _SpikeDescriptorComponent.ValueType  # 0
    CLabel: _SpikeDescriptorComponent.ValueType  # 1
    CWaveform: _SpikeDescriptorComponent.ValueType  # 2
    CFeature: _SpikeDescriptorComponent.ValueType  # 3
    CDecFeature: _SpikeDescriptorComponent.ValueType  # 4
    CZscore: _SpikeDescriptorComponent.ValueType  # 5

class SpikeDescriptorComponent(_SpikeDescriptorComponent, metaclass=_SpikeDescriptorComponentEnumTypeWrapper): ...

CTimestamp: SpikeDescriptorComponent.ValueType  # 0
CLabel: SpikeDescriptorComponent.ValueType  # 1
CWaveform: SpikeDescriptorComponent.ValueType  # 2
CFeature: SpikeDescriptorComponent.ValueType  # 3
CDecFeature: SpikeDescriptorComponent.ValueType  # 4
CZscore: SpikeDescriptorComponent.ValueType  # 5
global___SpikeDescriptorComponent = SpikeDescriptorComponent

class _HistScalingMode:
    ValueType = typing.NewType("ValueType", builtins.int)
    V: typing_extensions.TypeAlias = ValueType

class _HistScalingModeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_HistScalingMode.ValueType], builtins.type):
    DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
    AsSpikes: _HistScalingMode.ValueType  # 0
    AsSpikeRate: _HistScalingMode.ValueType  # 1
    AsNorm: _HistScalingMode.ValueType  # 2
    AsProb: _HistScalingMode.ValueType  # 3
    AsRaw: _HistScalingMode.ValueType  # 4

class HistScalingMode(_HistScalingMode, metaclass=_HistScalingModeEnumTypeWrapper): ...

AsSpikes: HistScalingMode.ValueType  # 0
AsSpikeRate: HistScalingMode.ValueType  # 1
AsNorm: HistScalingMode.ValueType  # 2
AsProb: HistScalingMode.ValueType  # 3
AsRaw: HistScalingMode.ValueType  # 4
global___HistScalingMode = HistScalingMode

@typing.final
class SpikesStdReq(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    DSOURCEID_FIELD_NUMBER: builtins.int
    dsourceID: builtins.str
    def __init__(
        self,
        *,
        dsourceID: builtins.str | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["dsourceID", b"dsourceID"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["dsourceID", b"dsourceID"]) -> None: ...

global___SpikesStdReq = SpikesStdReq

@typing.final
class SpikesExportReq(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    FORMAT_FIELD_NUMBER: builtins.int
    NIPATH_FIELD_NUMBER: builtins.int
    NIBASENAME_FIELD_NUMBER: builtins.int
    OUTPATH_FIELD_NUMBER: builtins.int
    FORCEREPLACE_FIELD_NUMBER: builtins.int
    format: common_pb2.DataExportFormat.ValueType
    niPath: builtins.str
    niBaseName: builtins.str
    outPath: builtins.str
    forceReplace: builtins.bool
    def __init__(
        self,
        *,
        format: common_pb2.DataExportFormat.ValueType | None = ...,
        niPath: builtins.str | None = ...,
        niBaseName: builtins.str | None = ...,
        outPath: builtins.str | None = ...,
        forceReplace: builtins.bool | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["forceReplace", b"forceReplace", "format", b"format", "niBaseName", b"niBaseName", "niPath", b"niPath", "outPath", b"outPath"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["forceReplace", b"forceReplace", "format", b"format", "niBaseName", b"niBaseName", "niPath", b"niPath", "outPath", b"outPath"]) -> None: ...

global___SpikesExportReq = SpikesExportReq

@typing.final
class SpikesNewLoadReply(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    def __init__(
        self,
    ) -> None: ...

global___SpikesNewLoadReply = SpikesNewLoadReply

@typing.final
class SpikesRenameReq(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    DSOURCEID_FIELD_NUMBER: builtins.int
    ISFORCEREPLACE_FIELD_NUMBER: builtins.int
    dsourceID: builtins.str
    isForceReplace: builtins.bool
    def __init__(
        self,
        *,
        dsourceID: builtins.str | None = ...,
        isForceReplace: builtins.bool | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["dsourceID", b"dsourceID", "isForceReplace", b"isForceReplace"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["dsourceID", b"dsourceID", "isForceReplace", b"isForceReplace"]) -> None: ...

global___SpikesRenameReq = SpikesRenameReq

@typing.final
class SpikesGetIDsReply(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    def __init__(
        self,
    ) -> None: ...

global___SpikesGetIDsReply = SpikesGetIDsReply

@typing.final
class NeuronColorGroupData(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    COLORGROUPIDXNEURON_FIELD_NUMBER: builtins.int
    COLORGROUPIDXCHANNEL_FIELD_NUMBER: builtins.int
    POSCOLORGROUP_FIELD_NUMBER: builtins.int
    SIZECOLORGROUP_FIELD_NUMBER: builtins.int
    colorGroupIdxNeuron: builtins.int
    colorGroupIdxChannel: builtins.int
    posColorGroup: builtins.int
    sizeColorGroup: builtins.int
    def __init__(
        self,
        *,
        colorGroupIdxNeuron: builtins.int | None = ...,
        colorGroupIdxChannel: builtins.int | None = ...,
        posColorGroup: builtins.int | None = ...,
        sizeColorGroup: builtins.int | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["colorGroupIdxChannel", b"colorGroupIdxChannel", "colorGroupIdxNeuron", b"colorGroupIdxNeuron", "posColorGroup", b"posColorGroup", "sizeColorGroup", b"sizeColorGroup"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["colorGroupIdxChannel", b"colorGroupIdxChannel", "colorGroupIdxNeuron", b"colorGroupIdxNeuron", "posColorGroup", b"posColorGroup", "sizeColorGroup", b"sizeColorGroup"]) -> None: ...

global___NeuronColorGroupData = NeuronColorGroupData

@typing.final
class SpikeTrainAnalyticsData(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    X_FIELD_NUMBER: builtins.int
    Y_FIELD_NUMBER: builtins.int
    NTVIDX_FIELD_NUMBER: builtins.int
    LABEL_FIELD_NUMBER: builtins.int
    YRANGE_FIELD_NUMBER: builtins.int
    NEURONCOLORGROUPDATA_FIELD_NUMBER: builtins.int
    ntvIdx: builtins.int
    label: builtins.str
    @property
    def x(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.float]: ...
    @property
    def y(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.float]: ...
    @property
    def yRange(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int]: ...
    @property
    def neuronColorGroupData(self) -> global___NeuronColorGroupData: ...
    def __init__(
        self,
        *,
        x: collections.abc.Iterable[builtins.float] | None = ...,
        y: collections.abc.Iterable[builtins.float] | None = ...,
        ntvIdx: builtins.int | None = ...,
        label: builtins.str | None = ...,
        yRange: collections.abc.Iterable[builtins.int] | None = ...,
        neuronColorGroupData: global___NeuronColorGroupData | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["label", b"label", "neuronColorGroupData", b"neuronColorGroupData", "ntvIdx", b"ntvIdx"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["label", b"label", "neuronColorGroupData", b"neuronColorGroupData", "ntvIdx", b"ntvIdx", "x", b"x", "y", b"y", "yRange", b"yRange"]) -> None: ...

global___SpikeTrainAnalyticsData = SpikeTrainAnalyticsData

@typing.final
class SpikesGetSpikeTrainAnalyticsReply(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    SPIKETRAINANALYTICSDATA_FIELD_NUMBER: builtins.int
    NUMNEURONSTOTAL_FIELD_NUMBER: builtins.int
    numNeuronsTotal: builtins.int
    @property
    def spikeTrainAnalyticsData(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___SpikeTrainAnalyticsData]: ...
    def __init__(
        self,
        *,
        spikeTrainAnalyticsData: collections.abc.Iterable[global___SpikeTrainAnalyticsData] | None = ...,
        numNeuronsTotal: builtins.int | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["numNeuronsTotal", b"numNeuronsTotal"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["numNeuronsTotal", b"numNeuronsTotal", "spikeTrainAnalyticsData", b"spikeTrainAnalyticsData"]) -> None: ...

global___SpikesGetSpikeTrainAnalyticsReply = SpikesGetSpikeTrainAnalyticsReply

@typing.final
class SpikesGetSpikeTrainAnalyticsRequest(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    SPIKESORTERID_FIELD_NUMBER: builtins.int
    TIMERANGE_FIELD_NUMBER: builtins.int
    BINRANGE_FIELD_NUMBER: builtins.int
    NUMBINS_FIELD_NUMBER: builtins.int
    ANALYTIC_FIELD_NUMBER: builtins.int
    CLEARHISTORY_FIELD_NUMBER: builtins.int
    NEURONSTARTIDX_FIELD_NUMBER: builtins.int
    SORTBY_FIELD_NUMBER: builtins.int
    SORTMODE_FIELD_NUMBER: builtins.int
    MAXNEURONS_FIELD_NUMBER: builtins.int
    spikeSorterID: builtins.str
    numBins: builtins.int
    analytic: global___SpikeTrainAnalytic.ValueType
    clearHistory: builtins.bool
    neuronStartIdx: builtins.int
    sortBy: global___NeuronSortBy.ValueType
    sortMode: global___NeuronSortMode.ValueType
    maxNeurons: builtins.int
    @property
    def timeRange(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.float]: ...
    @property
    def binRange(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.float]: ...
    def __init__(
        self,
        *,
        spikeSorterID: builtins.str | None = ...,
        timeRange: collections.abc.Iterable[builtins.float] | None = ...,
        binRange: collections.abc.Iterable[builtins.float] | None = ...,
        numBins: builtins.int | None = ...,
        analytic: global___SpikeTrainAnalytic.ValueType | None = ...,
        clearHistory: builtins.bool | None = ...,
        neuronStartIdx: builtins.int | None = ...,
        sortBy: global___NeuronSortBy.ValueType | None = ...,
        sortMode: global___NeuronSortMode.ValueType | None = ...,
        maxNeurons: builtins.int | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["analytic", b"analytic", "clearHistory", b"clearHistory", "maxNeurons", b"maxNeurons", "neuronStartIdx", b"neuronStartIdx", "numBins", b"numBins", "sortBy", b"sortBy", "sortMode", b"sortMode", "spikeSorterID", b"spikeSorterID"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["analytic", b"analytic", "binRange", b"binRange", "clearHistory", b"clearHistory", "maxNeurons", b"maxNeurons", "neuronStartIdx", b"neuronStartIdx", "numBins", b"numBins", "sortBy", b"sortBy", "sortMode", b"sortMode", "spikeSorterID", b"spikeSorterID", "timeRange", b"timeRange"]) -> None: ...

global___SpikesGetSpikeTrainAnalyticsRequest = SpikesGetSpikeTrainAnalyticsRequest

@typing.final
class SpikesSpecReply(google.protobuf.message.Message):
    """===========================
    primary data types 
    ===========================
    """

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    BIOINTERFACEID_FIELD_NUMBER: builtins.int
    DATASETUID_FIELD_NUMBER: builtins.int
    CHECKSUM_FIELD_NUMBER: builtins.int
    PROVENANCEUID_FIELD_NUMBER: builtins.int
    PERSISTDUR_FIELD_NUMBER: builtins.int
    NUMNEURONS_FIELD_NUMBER: builtins.int
    NUMSITES_FIELD_NUMBER: builtins.int
    SIZEBYTES_FIELD_NUMBER: builtins.int
    ENABLEDSITENTVCHANIDX_FIELD_NUMBER: builtins.int
    SITE_FIELD_NUMBER: builtins.int
    SITESTATS_FIELD_NUMBER: builtins.int
    SENSOREXT_FIELD_NUMBER: builtins.int
    PROJECT_FIELD_NUMBER: builtins.int
    BIOTYPE_FIELD_NUMBER: builtins.int
    REQNUMNEIGHBORS_FIELD_NUMBER: builtins.int
    NEIGHBORHOODRADIUSUM_FIELD_NUMBER: builtins.int
    TR_FIELD_NUMBER: builtins.int
    SPIKETR_FIELD_NUMBER: builtins.int
    biointerfaceID: builtins.str
    datasetUID: builtins.str
    checksum: builtins.str
    persistDur: builtins.float
    numNeurons: builtins.int
    numSites: builtins.int
    sizeBytes: builtins.int
    bioType: global___BiointerfaceType.ValueType
    reqNumNeighbors: builtins.int
    neighborhoodRadiusUm: builtins.float
    @property
    def provenanceUID(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: ...
    @property
    def enabledSiteNtvChanIdx(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int]:
        """sorted"""

    @property
    def site(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___SpikesSiteSpec]:
        """repeated double timeRange = 11; // to be deprecated by tR
        repeated int64 timestampRange = 12; // to be deprecated by tR
        required string wallTimeStart = 13; // to be deprecated by tR
        may be nil or all sites, orderded in ascending order
        """

    @property
    def siteStats(self) -> global___SpikesSiteStats: ...
    @property
    def sensorExt(self) -> common_pb2.SensorExtendedMetadata: ...
    @property
    def project(self) -> common_pb2.ProjectMetadata: ...
    @property
    def tR(self) -> common_pb2.TimeRange:
        """prefered time range parameter"""

    @property
    def spikeTR(self) -> common_pb2.TimeRange: ...
    def __init__(
        self,
        *,
        biointerfaceID: builtins.str | None = ...,
        datasetUID: builtins.str | None = ...,
        checksum: builtins.str | None = ...,
        provenanceUID: collections.abc.Iterable[builtins.str] | None = ...,
        persistDur: builtins.float | None = ...,
        numNeurons: builtins.int | None = ...,
        numSites: builtins.int | None = ...,
        sizeBytes: builtins.int | None = ...,
        enabledSiteNtvChanIdx: collections.abc.Iterable[builtins.int] | None = ...,
        site: collections.abc.Iterable[global___SpikesSiteSpec] | None = ...,
        siteStats: global___SpikesSiteStats | None = ...,
        sensorExt: common_pb2.SensorExtendedMetadata | None = ...,
        project: common_pb2.ProjectMetadata | None = ...,
        bioType: global___BiointerfaceType.ValueType | None = ...,
        reqNumNeighbors: builtins.int | None = ...,
        neighborhoodRadiusUm: builtins.float | None = ...,
        tR: common_pb2.TimeRange | None = ...,
        spikeTR: common_pb2.TimeRange | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["bioType", b"bioType", "biointerfaceID", b"biointerfaceID", "checksum", b"checksum", "datasetUID", b"datasetUID", "neighborhoodRadiusUm", b"neighborhoodRadiusUm", "numNeurons", b"numNeurons", "numSites", b"numSites", "persistDur", b"persistDur", "project", b"project", "reqNumNeighbors", b"reqNumNeighbors", "sensorExt", b"sensorExt", "siteStats", b"siteStats", "sizeBytes", b"sizeBytes", "spikeTR", b"spikeTR", "tR", b"tR"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["bioType", b"bioType", "biointerfaceID", b"biointerfaceID", "checksum", b"checksum", "datasetUID", b"datasetUID", "enabledSiteNtvChanIdx", b"enabledSiteNtvChanIdx", "neighborhoodRadiusUm", b"neighborhoodRadiusUm", "numNeurons", b"numNeurons", "numSites", b"numSites", "persistDur", b"persistDur", "project", b"project", "provenanceUID", b"provenanceUID", "reqNumNeighbors", b"reqNumNeighbors", "sensorExt", b"sensorExt", "site", b"site", "siteStats", b"siteStats", "sizeBytes", b"sizeBytes", "spikeTR", b"spikeTR", "tR", b"tR"]) -> None: ...

global___SpikesSpecReply = SpikesSpecReply

@typing.final
class SpikesSiteSpec(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    NTVCHANIDX_FIELD_NUMBER: builtins.int
    NEIGHBOR_FIELD_NUMBER: builtins.int
    ISENABLED_FIELD_NUMBER: builtins.int
    POSPROBE_FIELD_NUMBER: builtins.int
    POSTISSUE_FIELD_NUMBER: builtins.int
    SPIKECOUNTSITE_FIELD_NUMBER: builtins.int
    SPIKERATESITE_FIELD_NUMBER: builtins.int
    NOISELEVELSD_FIELD_NUMBER: builtins.int
    SNRSITE_FIELD_NUMBER: builtins.int
    NEURON_FIELD_NUMBER: builtins.int
    NUMNEURONS_FIELD_NUMBER: builtins.int
    COMPLEN_FIELD_NUMBER: builtins.int
    TR_FIELD_NUMBER: builtins.int
    SPIKETR_FIELD_NUMBER: builtins.int
    POSTHRESHOLDUV_FIELD_NUMBER: builtins.int
    NEGTHRESHOLDUV_FIELD_NUMBER: builtins.int
    POSTHRESHOLDSD_FIELD_NUMBER: builtins.int
    NEGTHRESHOLDSD_FIELD_NUMBER: builtins.int
    ntvChanIdx: builtins.int
    isEnabled: builtins.bool
    noiseLevelSd: builtins.float
    snrSite: builtins.float
    numNeurons: builtins.int
    posThresholdUv: builtins.float
    negThresholdUv: builtins.float
    posThresholdSd: builtins.float
    negThresholdSd: builtins.float
    @property
    def neighbor(self) -> global___NeighborDescriptor: ...
    @property
    def posProbe(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.float]:
        """x, y, z  probe coordinate system,"""

    @property
    def posTissue(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.float]:
        """x, y, z  tissue coordinate system"""

    @property
    def spikeCountSite(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.float]:
        """required double sampFreq = 6;
        required string wallTimeStart = 7;
        repeated double timeRange = 8;
        repeated int64 timestampRange = 9;
        repeated double spikeTimeRange = 10;
        repeated int64 spikeTimestampRange = 11;  
        repeated double spikeTimeRangeMemory = 12; // !! deprecate
        repeated int64 spikeTimestampRangeMemory = 13; // !! deprecate
        optional int64 spikeCountSiteMemory = 14;  // !! deprecate, cache length
        labeled, unlabeled, bad,  total=labeled+unlabeled
        """

    @property
    def spikeRateSite(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.float]:
        """labeled, unlabeled, total=labeled+unlabeled"""

    @property
    def neuron(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___NeuronDescriptor]:
        """ordered by spike label"""

    @property
    def compLen(self) -> global___SpikeComponentShape: ...
    @property
    def tR(self) -> common_pb2.TimeRange: ...
    @property
    def spikeTR(self) -> common_pb2.TimeRange: ...
    def __init__(
        self,
        *,
        ntvChanIdx: builtins.int | None = ...,
        neighbor: global___NeighborDescriptor | None = ...,
        isEnabled: builtins.bool | None = ...,
        posProbe: collections.abc.Iterable[builtins.float] | None = ...,
        posTissue: collections.abc.Iterable[builtins.float] | None = ...,
        spikeCountSite: collections.abc.Iterable[builtins.float] | None = ...,
        spikeRateSite: collections.abc.Iterable[builtins.float] | None = ...,
        noiseLevelSd: builtins.float | None = ...,
        snrSite: builtins.float | None = ...,
        neuron: collections.abc.Iterable[global___NeuronDescriptor] | None = ...,
        numNeurons: builtins.int | None = ...,
        compLen: global___SpikeComponentShape | None = ...,
        tR: common_pb2.TimeRange | None = ...,
        spikeTR: common_pb2.TimeRange | None = ...,
        posThresholdUv: builtins.float | None = ...,
        negThresholdUv: builtins.float | None = ...,
        posThresholdSd: builtins.float | None = ...,
        negThresholdSd: builtins.float | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["compLen", b"compLen", "isEnabled", b"isEnabled", "negThresholdSd", b"negThresholdSd", "negThresholdUv", b"negThresholdUv", "neighbor", b"neighbor", "noiseLevelSd", b"noiseLevelSd", "ntvChanIdx", b"ntvChanIdx", "numNeurons", b"numNeurons", "posThresholdSd", b"posThresholdSd", "posThresholdUv", b"posThresholdUv", "snrSite", b"snrSite", "spikeTR", b"spikeTR", "tR", b"tR"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["compLen", b"compLen", "isEnabled", b"isEnabled", "negThresholdSd", b"negThresholdSd", "negThresholdUv", b"negThresholdUv", "neighbor", b"neighbor", "neuron", b"neuron", "noiseLevelSd", b"noiseLevelSd", "ntvChanIdx", b"ntvChanIdx", "numNeurons", b"numNeurons", "posProbe", b"posProbe", "posThresholdSd", b"posThresholdSd", "posThresholdUv", b"posThresholdUv", "posTissue", b"posTissue", "snrSite", b"snrSite", "spikeCountSite", b"spikeCountSite", "spikeRateSite", b"spikeRateSite", "spikeTR", b"spikeTR", "tR", b"tR"]) -> None: ...

global___SpikesSiteSpec = SpikesSiteSpec

@typing.final
class SpikeMatrix(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    NUMSPIKES_FIELD_NUMBER: builtins.int
    TIMESTAMPSBYTES_FIELD_NUMBER: builtins.int
    LABELS_FIELD_NUMBER: builtins.int
    WAVEFORMBYTES_FIELD_NUMBER: builtins.int
    WAVEFORMLEN_FIELD_NUMBER: builtins.int
    FEATURESBYTES_FIELD_NUMBER: builtins.int
    FEATURESLEN_FIELD_NUMBER: builtins.int
    FEATURES2BYTES_FIELD_NUMBER: builtins.int
    FEATURES2LEN_FIELD_NUMBER: builtins.int
    ZSCOREBYTES_FIELD_NUMBER: builtins.int
    ZSCORELEN_FIELD_NUMBER: builtins.int
    SITEIDX_FIELD_NUMBER: builtins.int
    SPIKEPOS_FIELD_NUMBER: builtins.int
    numSpikes: builtins.int
    timestampsBytes: builtins.bytes
    waveformBytes: builtins.bytes
    waveformLen: builtins.int
    featuresBytes: builtins.bytes
    featuresLen: builtins.int
    features2Bytes: builtins.bytes
    features2Len: builtins.int
    zscoreBytes: builtins.bytes
    zscoreLen: builtins.int
    siteIdx: builtins.int
    @property
    def labels(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: ...
    @property
    def spikePos(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int]: ...
    def __init__(
        self,
        *,
        numSpikes: builtins.int | None = ...,
        timestampsBytes: builtins.bytes | None = ...,
        labels: collections.abc.Iterable[builtins.str] | None = ...,
        waveformBytes: builtins.bytes | None = ...,
        waveformLen: builtins.int | None = ...,
        featuresBytes: builtins.bytes | None = ...,
        featuresLen: builtins.int | None = ...,
        features2Bytes: builtins.bytes | None = ...,
        features2Len: builtins.int | None = ...,
        zscoreBytes: builtins.bytes | None = ...,
        zscoreLen: builtins.int | None = ...,
        siteIdx: builtins.int | None = ...,
        spikePos: collections.abc.Iterable[builtins.int] | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["features2Bytes", b"features2Bytes", "features2Len", b"features2Len", "featuresBytes", b"featuresBytes", "featuresLen", b"featuresLen", "numSpikes", b"numSpikes", "siteIdx", b"siteIdx", "timestampsBytes", b"timestampsBytes", "waveformBytes", b"waveformBytes", "waveformLen", b"waveformLen", "zscoreBytes", b"zscoreBytes", "zscoreLen", b"zscoreLen"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["features2Bytes", b"features2Bytes", "features2Len", b"features2Len", "featuresBytes", b"featuresBytes", "featuresLen", b"featuresLen", "labels", b"labels", "numSpikes", b"numSpikes", "siteIdx", b"siteIdx", "spikePos", b"spikePos", "timestampsBytes", b"timestampsBytes", "waveformBytes", b"waveformBytes", "waveformLen", b"waveformLen", "zscoreBytes", b"zscoreBytes", "zscoreLen", b"zscoreLen"]) -> None: ...

global___SpikeMatrix = SpikeMatrix

@typing.final
class SpikeMatrixSet(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    UID_FIELD_NUMBER: builtins.int
    SITEIDX_FIELD_NUMBER: builtins.int
    TIMESTAMPRANGE_FIELD_NUMBER: builtins.int
    SAMPFREQ_FIELD_NUMBER: builtins.int
    SPKMTX_FIELD_NUMBER: builtins.int
    uID: builtins.str
    sampFreq: builtins.float
    @property
    def siteIdx(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int]: ...
    @property
    def timestampRange(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int]: ...
    @property
    def spkMtx(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___SpikeMatrix]: ...
    def __init__(
        self,
        *,
        uID: builtins.str | None = ...,
        siteIdx: collections.abc.Iterable[builtins.int] | None = ...,
        timestampRange: collections.abc.Iterable[builtins.int] | None = ...,
        sampFreq: builtins.float | None = ...,
        spkMtx: collections.abc.Iterable[global___SpikeMatrix] | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["sampFreq", b"sampFreq", "uID", b"uID"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["sampFreq", b"sampFreq", "siteIdx", b"siteIdx", "spkMtx", b"spkMtx", "timestampRange", b"timestampRange", "uID", b"uID"]) -> None: ...

global___SpikeMatrixSet = SpikeMatrixSet

@typing.final
class NeuronSpikeMatrixSet(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    LABELS_FIELD_NUMBER: builtins.int
    SAMPFREQ_FIELD_NUMBER: builtins.int
    SITEIDX_FIELD_NUMBER: builtins.int
    SPKMTX_FIELD_NUMBER: builtins.int
    TIMESTAMPRANGE_FIELD_NUMBER: builtins.int
    UID_FIELD_NUMBER: builtins.int
    sampFreq: builtins.float
    uID: builtins.str
    @property
    def labels(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: ...
    @property
    def siteIdx(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int]: ...
    @property
    def spkMtx(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___SpikeMatrix]: ...
    @property
    def timestampRange(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int]: ...
    def __init__(
        self,
        *,
        labels: collections.abc.Iterable[builtins.str] | None = ...,
        sampFreq: builtins.float | None = ...,
        siteIdx: collections.abc.Iterable[builtins.int] | None = ...,
        spkMtx: collections.abc.Iterable[global___SpikeMatrix] | None = ...,
        timestampRange: collections.abc.Iterable[builtins.int] | None = ...,
        uID: builtins.str | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["sampFreq", b"sampFreq", "uID", b"uID"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["labels", b"labels", "sampFreq", b"sampFreq", "siteIdx", b"siteIdx", "spkMtx", b"spkMtx", "timestampRange", b"timestampRange", "uID", b"uID"]) -> None: ...

global___NeuronSpikeMatrixSet = NeuronSpikeMatrixSet

@typing.final
class SpikesGetSpikesRequest(google.protobuf.message.Message):
    """================================
    API messages
    ================================
    """

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    DSOURCEID_FIELD_NUMBER: builtins.int
    MODE_FIELD_NUMBER: builtins.int
    NTVCHANIDX_FIELD_NUMBER: builtins.int
    TIMESTART_FIELD_NUMBER: builtins.int
    TIMESTOP_FIELD_NUMBER: builtins.int
    SPIKELABELS_FIELD_NUMBER: builtins.int
    MAXSPIKESPERCHANNEL_FIELD_NUMBER: builtins.int
    SPIKECOMP_FIELD_NUMBER: builtins.int
    SPKSORTID_FIELD_NUMBER: builtins.int
    dsourceID: builtins.str
    mode: global___NeuronsSignalMode.ValueType
    """deprecated"""
    timeStart: builtins.float
    timeStop: builtins.float
    maxSpikesPerChannel: builtins.int
    spkSortID: builtins.str
    @property
    def ntvChanIdx(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int]: ...
    @property
    def spikeLabels(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int]: ...
    @property
    def spikeComp(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[global___SpikeDescriptorComponent.ValueType]: ...
    def __init__(
        self,
        *,
        dsourceID: builtins.str | None = ...,
        mode: global___NeuronsSignalMode.ValueType | None = ...,
        ntvChanIdx: collections.abc.Iterable[builtins.int] | None = ...,
        timeStart: builtins.float | None = ...,
        timeStop: builtins.float | None = ...,
        spikeLabels: collections.abc.Iterable[builtins.int] | None = ...,
        maxSpikesPerChannel: builtins.int | None = ...,
        spikeComp: collections.abc.Iterable[global___SpikeDescriptorComponent.ValueType] | None = ...,
        spkSortID: builtins.str | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["dsourceID", b"dsourceID", "maxSpikesPerChannel", b"maxSpikesPerChannel", "mode", b"mode", "spkSortID", b"spkSortID", "timeStart", b"timeStart", "timeStop", b"timeStop"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["dsourceID", b"dsourceID", "maxSpikesPerChannel", b"maxSpikesPerChannel", "mode", b"mode", "ntvChanIdx", b"ntvChanIdx", "spikeComp", b"spikeComp", "spikeLabels", b"spikeLabels", "spkSortID", b"spkSortID", "timeStart", b"timeStart", "timeStop", b"timeStop"]) -> None: ...

global___SpikesGetSpikesRequest = SpikesGetSpikesRequest

@typing.final
class BiointerfaceGetHistRequest(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    DSOURCEID_FIELD_NUMBER: builtins.int
    MODE_FIELD_NUMBER: builtins.int
    NTVCHANIDX_FIELD_NUMBER: builtins.int
    SPIKELABELS_FIELD_NUMBER: builtins.int
    dsourceID: builtins.str
    mode: global___HistScalingMode.ValueType
    @property
    def ntvChanIdx(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int]: ...
    @property
    def spikeLabels(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int]: ...
    def __init__(
        self,
        *,
        dsourceID: builtins.str | None = ...,
        mode: global___HistScalingMode.ValueType | None = ...,
        ntvChanIdx: collections.abc.Iterable[builtins.int] | None = ...,
        spikeLabels: collections.abc.Iterable[builtins.int] | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["dsourceID", b"dsourceID", "mode", b"mode"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["dsourceID", b"dsourceID", "mode", b"mode", "ntvChanIdx", b"ntvChanIdx", "spikeLabels", b"spikeLabels"]) -> None: ...

global___BiointerfaceGetHistRequest = BiointerfaceGetHistRequest

@typing.final
class BiointerfaceGetSpikeTimestampsRequest(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    DSOURCEID_FIELD_NUMBER: builtins.int
    NTVCHANIDX_FIELD_NUMBER: builtins.int
    TIMERANGE_FIELD_NUMBER: builtins.int
    SPIKELABELS_FIELD_NUMBER: builtins.int
    dsourceID: builtins.str
    @property
    def ntvChanIdx(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int]: ...
    @property
    def timeRange(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.float]: ...
    @property
    def spikeLabels(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int]: ...
    def __init__(
        self,
        *,
        dsourceID: builtins.str | None = ...,
        ntvChanIdx: collections.abc.Iterable[builtins.int] | None = ...,
        timeRange: collections.abc.Iterable[builtins.float] | None = ...,
        spikeLabels: collections.abc.Iterable[builtins.int] | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["dsourceID", b"dsourceID"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["dsourceID", b"dsourceID", "ntvChanIdx", b"ntvChanIdx", "spikeLabels", b"spikeLabels", "timeRange", b"timeRange"]) -> None: ...

global___BiointerfaceGetSpikeTimestampsRequest = BiointerfaceGetSpikeTimestampsRequest

@typing.final
class BiointerfaceSpikeTimestampsReply(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    SPIKETIMESTAMPSBYCHANNEL_FIELD_NUMBER: builtins.int
    TIMERANGE_FIELD_NUMBER: builtins.int
    TIMESTAMPRANGE_FIELD_NUMBER: builtins.int
    @property
    def spikeTimestampsByChannel(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___SpikeTimestampData]: ...
    @property
    def timeRange(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.float]: ...
    @property
    def timeStampRange(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int]: ...
    def __init__(
        self,
        *,
        spikeTimestampsByChannel: collections.abc.Iterable[global___SpikeTimestampData] | None = ...,
        timeRange: collections.abc.Iterable[builtins.float] | None = ...,
        timeStampRange: collections.abc.Iterable[builtins.int] | None = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing.Literal["spikeTimestampsByChannel", b"spikeTimestampsByChannel", "timeRange", b"timeRange", "timeStampRange", b"timeStampRange"]) -> None: ...

global___BiointerfaceSpikeTimestampsReply = BiointerfaceSpikeTimestampsReply

@typing.final
class BiointerfaceSeekEndSpikeTimestampsRequest(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    DSOURCEID_FIELD_NUMBER: builtins.int
    COMPONENTID_FIELD_NUMBER: builtins.int
    dsourceID: builtins.str
    componentID: builtins.str
    def __init__(
        self,
        *,
        dsourceID: builtins.str | None = ...,
        componentID: builtins.str | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["componentID", b"componentID", "dsourceID", b"dsourceID"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["componentID", b"componentID", "dsourceID", b"dsourceID"]) -> None: ...

global___BiointerfaceSeekEndSpikeTimestampsRequest = BiointerfaceSeekEndSpikeTimestampsRequest

@typing.final
class BiointerfaceGetNeuronsRequest(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    DSOURCEID_FIELD_NUMBER: builtins.int
    NTVCHANIDX_FIELD_NUMBER: builtins.int
    TIMERANGE_FIELD_NUMBER: builtins.int
    dsourceID: builtins.str
    @property
    def ntvChanIdx(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int]: ...
    @property
    def timeRange(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.float]:
        """[]float64{} ==> available time range"""

    def __init__(
        self,
        *,
        dsourceID: builtins.str | None = ...,
        ntvChanIdx: collections.abc.Iterable[builtins.int] | None = ...,
        timeRange: collections.abc.Iterable[builtins.float] | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["dsourceID", b"dsourceID"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["dsourceID", b"dsourceID", "ntvChanIdx", b"ntvChanIdx", "timeRange", b"timeRange"]) -> None: ...

global___BiointerfaceGetNeuronsRequest = BiointerfaceGetNeuronsRequest

@typing.final
class BiointerfaceGetNeuronsReply(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    @typing.final
    class SpikeRateChunk(google.protobuf.message.Message):
        DESCRIPTOR: google.protobuf.descriptor.Descriptor

        TIMERANGE_FIELD_NUMBER: builtins.int
        SPIKERATE_FIELD_NUMBER: builtins.int
        @property
        def timeRange(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.float]: ...
        @property
        def spikeRate(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.float]:
            """ordered same as Neuron field"""

        def __init__(
            self,
            *,
            timeRange: collections.abc.Iterable[builtins.float] | None = ...,
            spikeRate: collections.abc.Iterable[builtins.float] | None = ...,
        ) -> None: ...
        def ClearField(self, field_name: typing.Literal["spikeRate", b"spikeRate", "timeRange", b"timeRange"]) -> None: ...

    @typing.final
    class NeuronL(google.protobuf.message.Message):
        DESCRIPTOR: google.protobuf.descriptor.Descriptor

        NEURON_FIELD_NUMBER: builtins.int
        NEURONCOLORGROUPDATA_FIELD_NUMBER: builtins.int
        CHUNK_FIELD_NUMBER: builtins.int
        @property
        def neuron(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___NeuronDescriptor]:
            """all neuron labels, ordered by label"""

        @property
        def neuronColorGroupData(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___NeuronColorGroupData]: ...
        @property
        def chunk(self) -> global___BiointerfaceGetNeuronsReply.SpikeRateChunk: ...
        def __init__(
            self,
            *,
            neuron: collections.abc.Iterable[global___NeuronDescriptor] | None = ...,
            neuronColorGroupData: collections.abc.Iterable[global___NeuronColorGroupData] | None = ...,
            chunk: global___BiointerfaceGetNeuronsReply.SpikeRateChunk | None = ...,
        ) -> None: ...
        def HasField(self, field_name: typing.Literal["chunk", b"chunk"]) -> builtins.bool: ...
        def ClearField(self, field_name: typing.Literal["chunk", b"chunk", "neuron", b"neuron", "neuronColorGroupData", b"neuronColorGroupData"]) -> None: ...

    @typing.final
    class SiteEntry(google.protobuf.message.Message):
        DESCRIPTOR: google.protobuf.descriptor.Descriptor

        KEY_FIELD_NUMBER: builtins.int
        VALUE_FIELD_NUMBER: builtins.int
        key: builtins.int
        @property
        def value(self) -> global___BiointerfaceGetNeuronsReply.NeuronL: ...
        def __init__(
            self,
            *,
            key: builtins.int | None = ...,
            value: global___BiointerfaceGetNeuronsReply.NeuronL | None = ...,
        ) -> None: ...
        def HasField(self, field_name: typing.Literal["key", b"key", "value", b"value"]) -> builtins.bool: ...
        def ClearField(self, field_name: typing.Literal["key", b"key", "value", b"value"]) -> None: ...

    SITE_FIELD_NUMBER: builtins.int
    @property
    def site(self) -> google.protobuf.internal.containers.MessageMap[builtins.int, global___BiointerfaceGetNeuronsReply.NeuronL]:
        """key: ntvChanIdx"""

    def __init__(
        self,
        *,
        site: collections.abc.Mapping[builtins.int, global___BiointerfaceGetNeuronsReply.NeuronL] | None = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing.Literal["site", b"site"]) -> None: ...

global___BiointerfaceGetNeuronsReply = BiointerfaceGetNeuronsReply

@typing.final
class SpikesSiteStats(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    SPIKECOUNTSTATS_FIELD_NUMBER: builtins.int
    LABELEDSPIKECOUNTSTATS_FIELD_NUMBER: builtins.int
    UNLABELEDSPIKECOUNTSTATS_FIELD_NUMBER: builtins.int
    SPIKERATESTATS_FIELD_NUMBER: builtins.int
    LABELEDSPIKERATESTATS_FIELD_NUMBER: builtins.int
    UNLABELEDSPIKERATESTATS_FIELD_NUMBER: builtins.int
    SITENOISESTATS_FIELD_NUMBER: builtins.int
    SITESNRSTATS_FIELD_NUMBER: builtins.int
    NEURONSTATS_FIELD_NUMBER: builtins.int
    @property
    def spikeCountStats(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.float]:
        """min, max, mean, sd, Q1, Q2 (median), Q3"""

    @property
    def labeledSpikeCountStats(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.float]: ...
    @property
    def unlabeledSpikeCountStats(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.float]: ...
    @property
    def spikeRateStats(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.float]: ...
    @property
    def labeledSpikeRateStats(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.float]: ...
    @property
    def unlabeledSpikeRateStats(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.float]: ...
    @property
    def siteNoiseStats(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.float]: ...
    @property
    def siteSnrStats(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.float]: ...
    @property
    def neuronStats(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.float]:
        """neurons/site statistics: min, max, mean, sd, mode, count"""

    def __init__(
        self,
        *,
        spikeCountStats: collections.abc.Iterable[builtins.float] | None = ...,
        labeledSpikeCountStats: collections.abc.Iterable[builtins.float] | None = ...,
        unlabeledSpikeCountStats: collections.abc.Iterable[builtins.float] | None = ...,
        spikeRateStats: collections.abc.Iterable[builtins.float] | None = ...,
        labeledSpikeRateStats: collections.abc.Iterable[builtins.float] | None = ...,
        unlabeledSpikeRateStats: collections.abc.Iterable[builtins.float] | None = ...,
        siteNoiseStats: collections.abc.Iterable[builtins.float] | None = ...,
        siteSnrStats: collections.abc.Iterable[builtins.float] | None = ...,
        neuronStats: collections.abc.Iterable[builtins.float] | None = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing.Literal["labeledSpikeCountStats", b"labeledSpikeCountStats", "labeledSpikeRateStats", b"labeledSpikeRateStats", "neuronStats", b"neuronStats", "siteNoiseStats", b"siteNoiseStats", "siteSnrStats", b"siteSnrStats", "spikeCountStats", b"spikeCountStats", "spikeRateStats", b"spikeRateStats", "unlabeledSpikeCountStats", b"unlabeledSpikeCountStats", "unlabeledSpikeRateStats", b"unlabeledSpikeRateStats"]) -> None: ...

global___SpikesSiteStats = SpikesSiteStats

@typing.final
class SpikeComponentShape(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    WAVEFORM_FIELD_NUMBER: builtins.int
    FEATURE_FIELD_NUMBER: builtins.int
    FEATURE2_FIELD_NUMBER: builtins.int
    POS_FIELD_NUMBER: builtins.int
    @property
    def waveform(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int]:
        """total composite len"""

    @property
    def feature(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int]:
        """total composite len"""

    @property
    def feature2(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int]:
        """usually dec feature vector"""

    @property
    def pos(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int]:
        """usually len = len(feature2)"""

    def __init__(
        self,
        *,
        waveform: collections.abc.Iterable[builtins.int] | None = ...,
        feature: collections.abc.Iterable[builtins.int] | None = ...,
        feature2: collections.abc.Iterable[builtins.int] | None = ...,
        pos: collections.abc.Iterable[builtins.int] | None = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing.Literal["feature", b"feature", "feature2", b"feature2", "pos", b"pos", "waveform", b"waveform"]) -> None: ...

global___SpikeComponentShape = SpikeComponentShape

@typing.final
class NeighborDescriptor(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    RADIUS_FIELD_NUMBER: builtins.int
    NTVCHANIDX_FIELD_NUMBER: builtins.int
    DISTANCE_FIELD_NUMBER: builtins.int
    THETADEG_FIELD_NUMBER: builtins.int
    PHIDEG_FIELD_NUMBER: builtins.int
    NUM_FIELD_NUMBER: builtins.int
    SITECENTERUM_FIELD_NUMBER: builtins.int
    SITECENTERTCSUM_FIELD_NUMBER: builtins.int
    radius: builtins.float
    num: builtins.int
    @property
    def ntvChanIdx(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int]: ...
    @property
    def distance(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.float]: ...
    @property
    def thetaDeg(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.float]: ...
    @property
    def phiDeg(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.float]: ...
    @property
    def SiteCenterUm(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.float]: ...
    @property
    def SiteCenterTcsUm(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.float]: ...
    def __init__(
        self,
        *,
        radius: builtins.float | None = ...,
        ntvChanIdx: collections.abc.Iterable[builtins.int] | None = ...,
        distance: collections.abc.Iterable[builtins.float] | None = ...,
        thetaDeg: collections.abc.Iterable[builtins.float] | None = ...,
        phiDeg: collections.abc.Iterable[builtins.float] | None = ...,
        num: builtins.int | None = ...,
        SiteCenterUm: collections.abc.Iterable[builtins.float] | None = ...,
        SiteCenterTcsUm: collections.abc.Iterable[builtins.float] | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["num", b"num", "radius", b"radius"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["SiteCenterTcsUm", b"SiteCenterTcsUm", "SiteCenterUm", b"SiteCenterUm", "distance", b"distance", "ntvChanIdx", b"ntvChanIdx", "num", b"num", "phiDeg", b"phiDeg", "radius", b"radius", "thetaDeg", b"thetaDeg"]) -> None: ...

global___NeighborDescriptor = NeighborDescriptor

@typing.final
class NeuronDescriptor(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    NEURONID_FIELD_NUMBER: builtins.int
    SITENTVCHANIDX_FIELD_NUMBER: builtins.int
    SPIKELABEL_FIELD_NUMBER: builtins.int
    POSPROBE_FIELD_NUMBER: builtins.int
    POSTISSUE_FIELD_NUMBER: builtins.int
    SPIKECOUNT_FIELD_NUMBER: builtins.int
    SPIKERATE_FIELD_NUMBER: builtins.int
    MEANABSPEAKWFM_FIELD_NUMBER: builtins.int
    SNR_FIELD_NUMBER: builtins.int
    METADATA_FIELD_NUMBER: builtins.int
    neuronID: builtins.str
    siteNtvChanIdx: builtins.int
    spikeLabel: builtins.str
    spikeCount: builtins.int
    spikeRate: builtins.float
    meanAbsPeakWfm: builtins.float
    snr: builtins.float
    @property
    def posProbe(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.float]:
        """x, y, z probe coordinate system,"""

    @property
    def posTissue(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.float]:
        """x, y, z tissue coordinate system,"""

    @property
    def metaData(self) -> global___NeuronExtendedMetadata: ...
    def __init__(
        self,
        *,
        neuronID: builtins.str | None = ...,
        siteNtvChanIdx: builtins.int | None = ...,
        spikeLabel: builtins.str | None = ...,
        posProbe: collections.abc.Iterable[builtins.float] | None = ...,
        posTissue: collections.abc.Iterable[builtins.float] | None = ...,
        spikeCount: builtins.int | None = ...,
        spikeRate: builtins.float | None = ...,
        meanAbsPeakWfm: builtins.float | None = ...,
        snr: builtins.float | None = ...,
        metaData: global___NeuronExtendedMetadata | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["meanAbsPeakWfm", b"meanAbsPeakWfm", "metaData", b"metaData", "neuronID", b"neuronID", "siteNtvChanIdx", b"siteNtvChanIdx", "snr", b"snr", "spikeCount", b"spikeCount", "spikeLabel", b"spikeLabel", "spikeRate", b"spikeRate"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["meanAbsPeakWfm", b"meanAbsPeakWfm", "metaData", b"metaData", "neuronID", b"neuronID", "posProbe", b"posProbe", "posTissue", b"posTissue", "siteNtvChanIdx", b"siteNtvChanIdx", "snr", b"snr", "spikeCount", b"spikeCount", "spikeLabel", b"spikeLabel", "spikeRate", b"spikeRate"]) -> None: ...

global___NeuronDescriptor = NeuronDescriptor

@typing.final
class NeuronExtendedMetadata(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    NEURONCATALOGUID_FIELD_NUMBER: builtins.int
    ENSEMBLEUID_FIELD_NUMBER: builtins.int
    FUNCASSEMBLYUID_FIELD_NUMBER: builtins.int
    DATASETUID_FIELD_NUMBER: builtins.int
    PROBEUID_FIELD_NUMBER: builtins.int
    neuronCatalogUID: builtins.str
    ensembleUID: builtins.str
    datasetUID: builtins.str
    probeUID: builtins.str
    @property
    def funcAssemblyUID(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: ...
    def __init__(
        self,
        *,
        neuronCatalogUID: builtins.str | None = ...,
        ensembleUID: builtins.str | None = ...,
        funcAssemblyUID: collections.abc.Iterable[builtins.str] | None = ...,
        datasetUID: builtins.str | None = ...,
        probeUID: builtins.str | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["datasetUID", b"datasetUID", "ensembleUID", b"ensembleUID", "neuronCatalogUID", b"neuronCatalogUID", "probeUID", b"probeUID"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["datasetUID", b"datasetUID", "ensembleUID", b"ensembleUID", "funcAssemblyUID", b"funcAssemblyUID", "neuronCatalogUID", b"neuronCatalogUID", "probeUID", b"probeUID"]) -> None: ...

global___NeuronExtendedMetadata = NeuronExtendedMetadata

@typing.final
class NeuronStatistics(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    WAVEFORMAVGABSAMPL_FIELD_NUMBER: builtins.int
    SNR_FIELD_NUMBER: builtins.int
    SPIKECOUNT_FIELD_NUMBER: builtins.int
    AVGSPIKERATE_FIELD_NUMBER: builtins.int
    ISIH_FIELD_NUMBER: builtins.int
    WaveformAvgAbsAmpl: builtins.float
    Snr: builtins.float
    spikeCount: builtins.int
    avgSpikeRate: builtins.float
    @property
    def isih(self) -> global___NeuronHistData: ...
    def __init__(
        self,
        *,
        WaveformAvgAbsAmpl: builtins.float | None = ...,
        Snr: builtins.float | None = ...,
        spikeCount: builtins.int | None = ...,
        avgSpikeRate: builtins.float | None = ...,
        isih: global___NeuronHistData | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["Snr", b"Snr", "WaveformAvgAbsAmpl", b"WaveformAvgAbsAmpl", "avgSpikeRate", b"avgSpikeRate", "isih", b"isih", "spikeCount", b"spikeCount"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["Snr", b"Snr", "WaveformAvgAbsAmpl", b"WaveformAvgAbsAmpl", "avgSpikeRate", b"avgSpikeRate", "isih", b"isih", "spikeCount", b"spikeCount"]) -> None: ...

global___NeuronStatistics = NeuronStatistics

@typing.final
class SpikeDescriptor(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    TIMESTAMP_FIELD_NUMBER: builtins.int
    LABEL_FIELD_NUMBER: builtins.int
    WAVEFORM_FIELD_NUMBER: builtins.int
    FEATURES_FIELD_NUMBER: builtins.int
    DECFEATURES_FIELD_NUMBER: builtins.int
    ZSCORE_FIELD_NUMBER: builtins.int
    timestamp: builtins.int
    label: builtins.str
    @property
    def waveform(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.float]: ...
    @property
    def features(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.float]: ...
    @property
    def decFeatures(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.float]: ...
    @property
    def zscore(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.float]: ...
    def __init__(
        self,
        *,
        timestamp: builtins.int | None = ...,
        label: builtins.str | None = ...,
        waveform: collections.abc.Iterable[builtins.float] | None = ...,
        features: collections.abc.Iterable[builtins.float] | None = ...,
        decFeatures: collections.abc.Iterable[builtins.float] | None = ...,
        zscore: collections.abc.Iterable[builtins.float] | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["label", b"label", "timestamp", b"timestamp"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["decFeatures", b"decFeatures", "features", b"features", "label", b"label", "timestamp", b"timestamp", "waveform", b"waveform", "zscore", b"zscore"]) -> None: ...

global___SpikeDescriptor = SpikeDescriptor

@typing.final
class SpikeData(google.protobuf.message.Message):
    """one 'chunk' of SpikeDescriptors"""

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    SPIKE_FIELD_NUMBER: builtins.int
    WAVEFORMMAXVALUE_FIELD_NUMBER: builtins.int
    WAVEFORMMINVALUE_FIELD_NUMBER: builtins.int
    waveformMaxValue: builtins.float
    waveformMinValue: builtins.float
    @property
    def spike(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___SpikeDescriptor]: ...
    def __init__(
        self,
        *,
        spike: collections.abc.Iterable[global___SpikeDescriptor] | None = ...,
        waveformMaxValue: builtins.float | None = ...,
        waveformMinValue: builtins.float | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["waveformMaxValue", b"waveformMaxValue", "waveformMinValue", b"waveformMinValue"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["spike", b"spike", "waveformMaxValue", b"waveformMaxValue", "waveformMinValue", b"waveformMinValue"]) -> None: ...

global___SpikeData = SpikeData

@typing.final
class SpikeTimeData(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    SPIKETIME_FIELD_NUMBER: builtins.int
    LABEL_FIELD_NUMBER: builtins.int
    @property
    def spikeTime(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.float]: ...
    @property
    def label(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int]: ...
    def __init__(
        self,
        *,
        spikeTime: collections.abc.Iterable[builtins.float] | None = ...,
        label: collections.abc.Iterable[builtins.int] | None = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing.Literal["label", b"label", "spikeTime", b"spikeTime"]) -> None: ...

global___SpikeTimeData = SpikeTimeData

@typing.final
class SpikeTimestampData(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    NTVCHANIDXARRAY_FIELD_NUMBER: builtins.int
    SPIKETIMESTAMPS_FIELD_NUMBER: builtins.int
    LABELS_FIELD_NUMBER: builtins.int
    @property
    def ntvChanIdxArray(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int]: ...
    @property
    def spikeTimestamps(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int]: ...
    @property
    def labels(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int]: ...
    def __init__(
        self,
        *,
        ntvChanIdxArray: collections.abc.Iterable[builtins.int] | None = ...,
        spikeTimestamps: collections.abc.Iterable[builtins.int] | None = ...,
        labels: collections.abc.Iterable[builtins.int] | None = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing.Literal["labels", b"labels", "ntvChanIdxArray", b"ntvChanIdxArray", "spikeTimestamps", b"spikeTimestamps"]) -> None: ...

global___SpikeTimestampData = SpikeTimestampData

@typing.final
class SpikeTimestamp(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    SPIKETIMESTAMP_FIELD_NUMBER: builtins.int
    NEURONCOLORGROUPDATA_FIELD_NUMBER: builtins.int
    LABEL_FIELD_NUMBER: builtins.int
    DATAIDXS_FIELD_NUMBER: builtins.int
    spikeTimestamp: builtins.int
    label: builtins.int
    @property
    def neuronColorGroupData(self) -> global___NeuronColorGroupData: ...
    @property
    def dataIdxs(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int]: ...
    def __init__(
        self,
        *,
        spikeTimestamp: builtins.int | None = ...,
        neuronColorGroupData: global___NeuronColorGroupData | None = ...,
        label: builtins.int | None = ...,
        dataIdxs: collections.abc.Iterable[builtins.int] | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["label", b"label", "neuronColorGroupData", b"neuronColorGroupData", "spikeTimestamp", b"spikeTimestamp"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["dataIdxs", b"dataIdxs", "label", b"label", "neuronColorGroupData", b"neuronColorGroupData", "spikeTimestamp", b"spikeTimestamp"]) -> None: ...

global___SpikeTimestamp = SpikeTimestamp

@typing.final
class SpikeTemplateDescriptor(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    NEURONID_FIELD_NUMBER: builtins.int
    LABEL_FIELD_NUMBER: builtins.int
    NUMSPIKES_FIELD_NUMBER: builtins.int
    WAVEFORM_FIELD_NUMBER: builtins.int
    WAVEFORMSD_FIELD_NUMBER: builtins.int
    LENWAVEFORM_FIELD_NUMBER: builtins.int
    FEATURES_FIELD_NUMBER: builtins.int
    FEATURESSD_FIELD_NUMBER: builtins.int
    LENFEATURES_FIELD_NUMBER: builtins.int
    FEATURES2_FIELD_NUMBER: builtins.int
    FEATURES2SD_FIELD_NUMBER: builtins.int
    LENFEATURES2_FIELD_NUMBER: builtins.int
    ZSCORE_FIELD_NUMBER: builtins.int
    ZSCORESD_FIELD_NUMBER: builtins.int
    LENZSCORE_FIELD_NUMBER: builtins.int
    neuronID: builtins.str
    label: builtins.str
    numSpikes: builtins.int
    waveform: builtins.bytes
    """encodes []float32"""
    waveformSd: builtins.bytes
    """encodes []float32"""
    lenWaveform: builtins.int
    features: builtins.bytes
    """encodes []float32"""
    featuresSd: builtins.bytes
    """encodes []float32"""
    lenFeatures: builtins.int
    features2: builtins.bytes
    """encodes []float64"""
    features2Sd: builtins.bytes
    """encodes []float64"""
    lenFeatures2: builtins.int
    zscore: builtins.bytes
    """encodes []float32"""
    zscoreSd: builtins.bytes
    """encodes []float32"""
    lenZscore: builtins.int
    def __init__(
        self,
        *,
        neuronID: builtins.str | None = ...,
        label: builtins.str | None = ...,
        numSpikes: builtins.int | None = ...,
        waveform: builtins.bytes | None = ...,
        waveformSd: builtins.bytes | None = ...,
        lenWaveform: builtins.int | None = ...,
        features: builtins.bytes | None = ...,
        featuresSd: builtins.bytes | None = ...,
        lenFeatures: builtins.int | None = ...,
        features2: builtins.bytes | None = ...,
        features2Sd: builtins.bytes | None = ...,
        lenFeatures2: builtins.int | None = ...,
        zscore: builtins.bytes | None = ...,
        zscoreSd: builtins.bytes | None = ...,
        lenZscore: builtins.int | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["features", b"features", "features2", b"features2", "features2Sd", b"features2Sd", "featuresSd", b"featuresSd", "label", b"label", "lenFeatures", b"lenFeatures", "lenFeatures2", b"lenFeatures2", "lenWaveform", b"lenWaveform", "lenZscore", b"lenZscore", "neuronID", b"neuronID", "numSpikes", b"numSpikes", "waveform", b"waveform", "waveformSd", b"waveformSd", "zscore", b"zscore", "zscoreSd", b"zscoreSd"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["features", b"features", "features2", b"features2", "features2Sd", b"features2Sd", "featuresSd", b"featuresSd", "label", b"label", "lenFeatures", b"lenFeatures", "lenFeatures2", b"lenFeatures2", "lenWaveform", b"lenWaveform", "lenZscore", b"lenZscore", "neuronID", b"neuronID", "numSpikes", b"numSpikes", "waveform", b"waveform", "waveformSd", b"waveformSd", "zscore", b"zscore", "zscoreSd", b"zscoreSd"]) -> None: ...

global___SpikeTemplateDescriptor = SpikeTemplateDescriptor

@typing.final
class SiteSpikeTemplates(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    NTVCHANIDX_FIELD_NUMBER: builtins.int
    TEMPLATE_FIELD_NUMBER: builtins.int
    ntvChanIdx: builtins.int
    @property
    def template(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___SpikeTemplateDescriptor]: ...
    def __init__(
        self,
        *,
        ntvChanIdx: builtins.int | None = ...,
        template: collections.abc.Iterable[global___SpikeTemplateDescriptor] | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["ntvChanIdx", b"ntvChanIdx"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["ntvChanIdx", b"ntvChanIdx", "template", b"template"]) -> None: ...

global___SiteSpikeTemplates = SiteSpikeTemplates

@typing.final
class BiointerfaceSpikeTemplatesReply(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    DSOURCEID_FIELD_NUMBER: builtins.int
    SAMPFREQ_FIELD_NUMBER: builtins.int
    TIMERANGE_FIELD_NUMBER: builtins.int
    NTVCHANIDX_FIELD_NUMBER: builtins.int
    SITE_FIELD_NUMBER: builtins.int
    dsourceID: builtins.str
    sampFreq: builtins.float
    @property
    def timeRange(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.float]: ...
    @property
    def ntvChanIdx(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int]: ...
    @property
    def site(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___SiteSpikeTemplates]: ...
    def __init__(
        self,
        *,
        dsourceID: builtins.str | None = ...,
        sampFreq: builtins.float | None = ...,
        timeRange: collections.abc.Iterable[builtins.float] | None = ...,
        ntvChanIdx: collections.abc.Iterable[builtins.int] | None = ...,
        site: collections.abc.Iterable[global___SiteSpikeTemplates] | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["dsourceID", b"dsourceID", "sampFreq", b"sampFreq"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["dsourceID", b"dsourceID", "ntvChanIdx", b"ntvChanIdx", "sampFreq", b"sampFreq", "site", b"site", "timeRange", b"timeRange"]) -> None: ...

global___BiointerfaceSpikeTemplatesReply = BiointerfaceSpikeTemplatesReply

@typing.final
class BiointerfaceMetaData(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    SIGNALGROUP_FIELD_NUMBER: builtins.int
    @property
    def signalGroup(self) -> common_pb2.SignalGroup: ...
    def __init__(
        self,
        *,
        signalGroup: common_pb2.SignalGroup | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["signalGroup", b"signalGroup"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["signalGroup", b"signalGroup"]) -> None: ...

global___BiointerfaceMetaData = BiointerfaceMetaData

@typing.final
class BiointerfaceSpikeDataReply(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    BIOINTERFACEID_FIELD_NUMBER: builtins.int
    SAMPFREQ_FIELD_NUMBER: builtins.int
    TIMERANGE_FIELD_NUMBER: builtins.int
    TIMESTAMPRANGE_FIELD_NUMBER: builtins.int
    NTVCHANIDX_FIELD_NUMBER: builtins.int
    SITE_FIELD_NUMBER: builtins.int
    METADATA_FIELD_NUMBER: builtins.int
    biointerfaceID: builtins.str
    sampFreq: builtins.float
    @property
    def timeRange(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.float]: ...
    @property
    def timestampRange(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int]: ...
    @property
    def ntvChanIdx(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int]:
        """'ntvChanIdx' & 'site' are same length"""

    @property
    def site(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___SpikeData]: ...
    @property
    def metaData(self) -> global___BiointerfaceMetaData: ...
    def __init__(
        self,
        *,
        biointerfaceID: builtins.str | None = ...,
        sampFreq: builtins.float | None = ...,
        timeRange: collections.abc.Iterable[builtins.float] | None = ...,
        timestampRange: collections.abc.Iterable[builtins.int] | None = ...,
        ntvChanIdx: collections.abc.Iterable[builtins.int] | None = ...,
        site: collections.abc.Iterable[global___SpikeData] | None = ...,
        metaData: global___BiointerfaceMetaData | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["biointerfaceID", b"biointerfaceID", "metaData", b"metaData", "sampFreq", b"sampFreq"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["biointerfaceID", b"biointerfaceID", "metaData", b"metaData", "ntvChanIdx", b"ntvChanIdx", "sampFreq", b"sampFreq", "site", b"site", "timeRange", b"timeRange", "timestampRange", b"timestampRange"]) -> None: ...

global___BiointerfaceSpikeDataReply = BiointerfaceSpikeDataReply

@typing.final
class SpikeDataDenseChannelDescriptor(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    NTVCHANIDX_FIELD_NUMBER: builtins.int
    LABELS_FIELD_NUMBER: builtins.int
    NEURONCOLORGROUPDATA_FIELD_NUMBER: builtins.int
    WAVEFORMMAXVALUE_FIELD_NUMBER: builtins.int
    WAVEFORMMINVALUE_FIELD_NUMBER: builtins.int
    ntvChanIdx: builtins.int
    waveformMaxValue: builtins.float
    waveformMinValue: builtins.float
    @property
    def labels(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int]: ...
    @property
    def neuronColorGroupData(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___NeuronColorGroupData]: ...
    def __init__(
        self,
        *,
        ntvChanIdx: builtins.int | None = ...,
        labels: collections.abc.Iterable[builtins.int] | None = ...,
        neuronColorGroupData: collections.abc.Iterable[global___NeuronColorGroupData] | None = ...,
        waveformMaxValue: builtins.float | None = ...,
        waveformMinValue: builtins.float | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["ntvChanIdx", b"ntvChanIdx", "waveformMaxValue", b"waveformMaxValue", "waveformMinValue", b"waveformMinValue"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["labels", b"labels", "neuronColorGroupData", b"neuronColorGroupData", "ntvChanIdx", b"ntvChanIdx", "waveformMaxValue", b"waveformMaxValue", "waveformMinValue", b"waveformMinValue"]) -> None: ...

global___SpikeDataDenseChannelDescriptor = SpikeDataDenseChannelDescriptor

@typing.final
class SpikesSpikeDataDenseReply(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    TIMERANGE_FIELD_NUMBER: builtins.int
    WAVEFORMNPOINTS_FIELD_NUMBER: builtins.int
    TOTALNSPIKES_FIELD_NUMBER: builtins.int
    CHANNELDESCRIPTORS_FIELD_NUMBER: builtins.int
    DATA_FIELD_NUMBER: builtins.int
    waveformNPoints: builtins.int
    totalNSpikes: builtins.int
    data: builtins.bytes
    @property
    def timeRange(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.float]: ...
    @property
    def channelDescriptors(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___SpikeDataDenseChannelDescriptor]: ...
    def __init__(
        self,
        *,
        timeRange: collections.abc.Iterable[builtins.float] | None = ...,
        waveformNPoints: builtins.int | None = ...,
        totalNSpikes: builtins.int | None = ...,
        channelDescriptors: collections.abc.Iterable[global___SpikeDataDenseChannelDescriptor] | None = ...,
        data: builtins.bytes | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["data", b"data", "totalNSpikes", b"totalNSpikes", "waveformNPoints", b"waveformNPoints"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["channelDescriptors", b"channelDescriptors", "data", b"data", "timeRange", b"timeRange", "totalNSpikes", b"totalNSpikes", "waveformNPoints", b"waveformNPoints"]) -> None: ...

global___SpikesSpikeDataDenseReply = SpikesSpikeDataDenseReply

@typing.final
class GroupSpikeTimeDataReply(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    DSOURCEID_FIELD_NUMBER: builtins.int
    SAMPFREQ_FIELD_NUMBER: builtins.int
    TIMERANGE_FIELD_NUMBER: builtins.int
    NTVCHANIDX_FIELD_NUMBER: builtins.int
    SITE_FIELD_NUMBER: builtins.int
    dsourceID: builtins.str
    sampFreq: builtins.float
    @property
    def timeRange(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.float]: ...
    @property
    def ntvChanIdx(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int]: ...
    @property
    def site(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___SpikeTimeData]: ...
    def __init__(
        self,
        *,
        dsourceID: builtins.str | None = ...,
        sampFreq: builtins.float | None = ...,
        timeRange: collections.abc.Iterable[builtins.float] | None = ...,
        ntvChanIdx: collections.abc.Iterable[builtins.int] | None = ...,
        site: collections.abc.Iterable[global___SpikeTimeData] | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["dsourceID", b"dsourceID", "sampFreq", b"sampFreq"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["dsourceID", b"dsourceID", "ntvChanIdx", b"ntvChanIdx", "sampFreq", b"sampFreq", "site", b"site", "timeRange", b"timeRange"]) -> None: ...

global___GroupSpikeTimeDataReply = GroupSpikeTimeDataReply

@typing.final
class BiointerfaceSpiketrain(google.protobuf.message.Message):
    """BiointerfaceSpiketrain, SiteSpiketrain, and Spiketrain comprise a serialized BiointerfaceSpiketrain"""

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    DSOURCEID_FIELD_NUMBER: builtins.int
    TIMERANGE_FIELD_NUMBER: builtins.int
    SAMPFREQ_FIELD_NUMBER: builtins.int
    SITE_FIELD_NUMBER: builtins.int
    dsourceID: builtins.str
    sampFreq: builtins.float
    @property
    def timeRange(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.float]: ...
    @property
    def site(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___SiteSpiketrain]: ...
    def __init__(
        self,
        *,
        dsourceID: builtins.str | None = ...,
        timeRange: collections.abc.Iterable[builtins.float] | None = ...,
        sampFreq: builtins.float | None = ...,
        site: collections.abc.Iterable[global___SiteSpiketrain] | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["dsourceID", b"dsourceID", "sampFreq", b"sampFreq"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["dsourceID", b"dsourceID", "sampFreq", b"sampFreq", "site", b"site", "timeRange", b"timeRange"]) -> None: ...

global___BiointerfaceSpiketrain = BiointerfaceSpiketrain

@typing.final
class SiteSpiketrain(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    NTVCHANIDX_FIELD_NUMBER: builtins.int
    NEURON_FIELD_NUMBER: builtins.int
    SAMPFREQ_FIELD_NUMBER: builtins.int
    NUMNEIGHBORS_FIELD_NUMBER: builtins.int
    ntvChanIdx: builtins.int
    """map key"""
    sampFreq: builtins.float
    numNeighbors: builtins.int
    @property
    def neuron(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___Spiketrain]: ...
    def __init__(
        self,
        *,
        ntvChanIdx: builtins.int | None = ...,
        neuron: collections.abc.Iterable[global___Spiketrain] | None = ...,
        sampFreq: builtins.float | None = ...,
        numNeighbors: builtins.int | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["ntvChanIdx", b"ntvChanIdx", "numNeighbors", b"numNeighbors", "sampFreq", b"sampFreq"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["neuron", b"neuron", "ntvChanIdx", b"ntvChanIdx", "numNeighbors", b"numNeighbors", "sampFreq", b"sampFreq"]) -> None: ...

global___SiteSpiketrain = SiteSpiketrain

@typing.final
class Spiketrain(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    SAMPFREQ_FIELD_NUMBER: builtins.int
    LABEL_FIELD_NUMBER: builtins.int
    SPIKETIMESTAMPS_FIELD_NUMBER: builtins.int
    WAVEFORMDATA_FIELD_NUMBER: builtins.int
    WAVEFORMSHAPE_FIELD_NUMBER: builtins.int
    FEATUREDATA_FIELD_NUMBER: builtins.int
    FEATURESHAPE_FIELD_NUMBER: builtins.int
    ZSCOREDATA_FIELD_NUMBER: builtins.int
    ZSCORESHAPE_FIELD_NUMBER: builtins.int
    NEURONDESC_FIELD_NUMBER: builtins.int
    NUMNEIGHBORS_FIELD_NUMBER: builtins.int
    sampFreq: builtins.float
    label: builtins.int
    """map key"""
    numNeighbors: builtins.int
    @property
    def spikeTimestamps(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int]: ...
    @property
    def waveformData(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.float]: ...
    @property
    def waveformShape(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int]: ...
    @property
    def featureData(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.float]: ...
    @property
    def featureShape(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int]: ...
    @property
    def zscoreData(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.float]: ...
    @property
    def zscoreShape(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int]: ...
    @property
    def neuronDesc(self) -> global___NeuronDescriptor: ...
    def __init__(
        self,
        *,
        sampFreq: builtins.float | None = ...,
        label: builtins.int | None = ...,
        spikeTimestamps: collections.abc.Iterable[builtins.int] | None = ...,
        waveformData: collections.abc.Iterable[builtins.float] | None = ...,
        waveformShape: collections.abc.Iterable[builtins.int] | None = ...,
        featureData: collections.abc.Iterable[builtins.float] | None = ...,
        featureShape: collections.abc.Iterable[builtins.int] | None = ...,
        zscoreData: collections.abc.Iterable[builtins.float] | None = ...,
        zscoreShape: collections.abc.Iterable[builtins.int] | None = ...,
        neuronDesc: global___NeuronDescriptor | None = ...,
        numNeighbors: builtins.int | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["label", b"label", "neuronDesc", b"neuronDesc", "numNeighbors", b"numNeighbors", "sampFreq", b"sampFreq"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["featureData", b"featureData", "featureShape", b"featureShape", "label", b"label", "neuronDesc", b"neuronDesc", "numNeighbors", b"numNeighbors", "sampFreq", b"sampFreq", "spikeTimestamps", b"spikeTimestamps", "waveformData", b"waveformData", "waveformShape", b"waveformShape", "zscoreData", b"zscoreData", "zscoreShape", b"zscoreShape"]) -> None: ...

global___Spiketrain = Spiketrain

@typing.final
class NeuronHistData(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    BINWIDTHSEC_FIELD_NUMBER: builtins.int
    HISTTIMERANGE_FIELD_NUMBER: builtins.int
    MODE_FIELD_NUMBER: builtins.int
    NUMREFEVENTS_FIELD_NUMBER: builtins.int
    NUMSPIKES_FIELD_NUMBER: builtins.int
    NUMPROCESSEDSPIKES_FIELD_NUMBER: builtins.int
    HIST_FIELD_NUMBER: builtins.int
    binWidthSec: builtins.float
    mode: global___HistScalingMode.ValueType
    numRefEvents: builtins.int
    numSpikes: builtins.int
    numProcessedSpikes: builtins.int
    @property
    def histTimeRange(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.float]: ...
    @property
    def hist(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.float]: ...
    def __init__(
        self,
        *,
        binWidthSec: builtins.float | None = ...,
        histTimeRange: collections.abc.Iterable[builtins.float] | None = ...,
        mode: global___HistScalingMode.ValueType | None = ...,
        numRefEvents: builtins.int | None = ...,
        numSpikes: builtins.int | None = ...,
        numProcessedSpikes: builtins.int | None = ...,
        hist: collections.abc.Iterable[builtins.float] | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["binWidthSec", b"binWidthSec", "mode", b"mode", "numProcessedSpikes", b"numProcessedSpikes", "numRefEvents", b"numRefEvents", "numSpikes", b"numSpikes"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["binWidthSec", b"binWidthSec", "hist", b"hist", "histTimeRange", b"histTimeRange", "mode", b"mode", "numProcessedSpikes", b"numProcessedSpikes", "numRefEvents", b"numRefEvents", "numSpikes", b"numSpikes"]) -> None: ...

global___NeuronHistData = NeuronHistData

@typing.final
class SiteHistData(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    SITEPOSPROBE_FIELD_NUMBER: builtins.int
    SITEPOSBRAIN_FIELD_NUMBER: builtins.int
    NEURON_FIELD_NUMBER: builtins.int
    HIST_FIELD_NUMBER: builtins.int
    TIMERANGE_FIELD_NUMBER: builtins.int
    @property
    def sitePosProbe(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.float]:
        """x, y, z coordinates"""

    @property
    def sitePosBrain(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.float]:
        """x, y, z coordinates"""

    @property
    def neuron(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___NeuronDescriptor]: ...
    @property
    def hist(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___NeuronHistData]: ...
    @property
    def timeRange(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.float]: ...
    def __init__(
        self,
        *,
        sitePosProbe: collections.abc.Iterable[builtins.float] | None = ...,
        sitePosBrain: collections.abc.Iterable[builtins.float] | None = ...,
        neuron: collections.abc.Iterable[global___NeuronDescriptor] | None = ...,
        hist: collections.abc.Iterable[global___NeuronHistData] | None = ...,
        timeRange: collections.abc.Iterable[builtins.float] | None = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing.Literal["hist", b"hist", "neuron", b"neuron", "sitePosBrain", b"sitePosBrain", "sitePosProbe", b"sitePosProbe", "timeRange", b"timeRange"]) -> None: ...

global___SiteHistData = SiteHistData

@typing.final
class BiointerfaceHistDataReply(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    DSOURCEID_FIELD_NUMBER: builtins.int
    SAMPFREQ_FIELD_NUMBER: builtins.int
    TIMERANGE_FIELD_NUMBER: builtins.int
    NTVCHANIDX_FIELD_NUMBER: builtins.int
    SITE_FIELD_NUMBER: builtins.int
    dsourceID: builtins.str
    sampFreq: builtins.float
    @property
    def timeRange(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.float]: ...
    @property
    def ntvChanIdx(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int]: ...
    @property
    def site(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___SiteHistData]: ...
    def __init__(
        self,
        *,
        dsourceID: builtins.str | None = ...,
        sampFreq: builtins.float | None = ...,
        timeRange: collections.abc.Iterable[builtins.float] | None = ...,
        ntvChanIdx: collections.abc.Iterable[builtins.int] | None = ...,
        site: collections.abc.Iterable[global___SiteHistData] | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["dsourceID", b"dsourceID", "sampFreq", b"sampFreq"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["dsourceID", b"dsourceID", "ntvChanIdx", b"ntvChanIdx", "sampFreq", b"sampFreq", "site", b"site", "timeRange", b"timeRange"]) -> None: ...

global___BiointerfaceHistDataReply = BiointerfaceHistDataReply

@typing.final
class BiointerfaceSaveRequest(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    DSOURCEID_FIELD_NUMBER: builtins.int
    PATH_FIELD_NUMBER: builtins.int
    BASENAME_FIELD_NUMBER: builtins.int
    TIMERANGE_FIELD_NUMBER: builtins.int
    SPIKECOMP_FIELD_NUMBER: builtins.int
    INCLUDENEURONTEMPLATES_FIELD_NUMBER: builtins.int
    dsourceID: builtins.str
    path: builtins.str
    baseName: builtins.str
    includeNeuronTemplates: builtins.bool
    @property
    def timeRange(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.float]: ...
    @property
    def spikeComp(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[global___SpikeDescriptorComponent.ValueType]: ...
    def __init__(
        self,
        *,
        dsourceID: builtins.str | None = ...,
        path: builtins.str | None = ...,
        baseName: builtins.str | None = ...,
        timeRange: collections.abc.Iterable[builtins.float] | None = ...,
        spikeComp: collections.abc.Iterable[global___SpikeDescriptorComponent.ValueType] | None = ...,
        includeNeuronTemplates: builtins.bool | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["baseName", b"baseName", "dsourceID", b"dsourceID", "includeNeuronTemplates", b"includeNeuronTemplates", "path", b"path"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["baseName", b"baseName", "dsourceID", b"dsourceID", "includeNeuronTemplates", b"includeNeuronTemplates", "path", b"path", "spikeComp", b"spikeComp", "timeRange", b"timeRange"]) -> None: ...

global___BiointerfaceSaveRequest = BiointerfaceSaveRequest

@typing.final
class BiointerfaceLoadRequest(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    DSOURCEID_FIELD_NUMBER: builtins.int
    PATH_FIELD_NUMBER: builtins.int
    BASENAME_FIELD_NUMBER: builtins.int
    UIDFRAGMENT_FIELD_NUMBER: builtins.int
    SPIKECOMP_FIELD_NUMBER: builtins.int
    FORCEREPLACE_FIELD_NUMBER: builtins.int
    dsourceID: builtins.str
    path: builtins.str
    baseName: builtins.str
    uidFragment: builtins.str
    forceReplace: builtins.bool
    @property
    def spikeComp(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[global___SpikeDescriptorComponent.ValueType]: ...
    def __init__(
        self,
        *,
        dsourceID: builtins.str | None = ...,
        path: builtins.str | None = ...,
        baseName: builtins.str | None = ...,
        uidFragment: builtins.str | None = ...,
        spikeComp: collections.abc.Iterable[global___SpikeDescriptorComponent.ValueType] | None = ...,
        forceReplace: builtins.bool | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["baseName", b"baseName", "dsourceID", b"dsourceID", "forceReplace", b"forceReplace", "path", b"path", "uidFragment", b"uidFragment"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["baseName", b"baseName", "dsourceID", b"dsourceID", "forceReplace", b"forceReplace", "path", b"path", "spikeComp", b"spikeComp", "uidFragment", b"uidFragment"]) -> None: ...

global___BiointerfaceLoadRequest = BiointerfaceLoadRequest

@typing.final
class BiointerfaceSaveLoadReply(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    DSOURCEID_FIELD_NUMBER: builtins.int
    PATH_FIELD_NUMBER: builtins.int
    BASENAME_FIELD_NUMBER: builtins.int
    UID_FIELD_NUMBER: builtins.int
    BIOINTERFACEMETAFILE_FIELD_NUMBER: builtins.int
    NEURONTEMPLATEFILE_FIELD_NUMBER: builtins.int
    dsourceID: builtins.str
    path: builtins.str
    baseName: builtins.str
    uid: builtins.str
    biointerfaceMetaFile: builtins.str
    neuronTemplateFile: builtins.str
    def __init__(
        self,
        *,
        dsourceID: builtins.str | None = ...,
        path: builtins.str | None = ...,
        baseName: builtins.str | None = ...,
        uid: builtins.str | None = ...,
        biointerfaceMetaFile: builtins.str | None = ...,
        neuronTemplateFile: builtins.str | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["baseName", b"baseName", "biointerfaceMetaFile", b"biointerfaceMetaFile", "dsourceID", b"dsourceID", "neuronTemplateFile", b"neuronTemplateFile", "path", b"path", "uid", b"uid"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["baseName", b"baseName", "biointerfaceMetaFile", b"biointerfaceMetaFile", "dsourceID", b"dsourceID", "neuronTemplateFile", b"neuronTemplateFile", "path", b"path", "uid", b"uid"]) -> None: ...

global___BiointerfaceSaveLoadReply = BiointerfaceSaveLoadReply

@typing.final
class BiointerfaceGetIDsReply(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    BIOINTERFACEIDS_FIELD_NUMBER: builtins.int
    @property
    def biointerfaceIDs(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: ...
    def __init__(
        self,
        *,
        biointerfaceIDs: collections.abc.Iterable[builtins.str] | None = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing.Literal["biointerfaceIDs", b"biointerfaceIDs"]) -> None: ...

global___BiointerfaceGetIDsReply = BiointerfaceGetIDsReply

@typing.final
class BiointerfaceVizRequest(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    class _VType:
        ValueType = typing.NewType("ValueType", builtins.int)
        V: typing_extensions.TypeAlias = ValueType

    class _VTypeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[BiointerfaceVizRequest._VType.ValueType], builtins.type):
        DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
        VIZ_BIO_TEMPLATES: BiointerfaceVizRequest._VType.ValueType  # 0
        VIZ_BIO_DEV: BiointerfaceVizRequest._VType.ValueType  # 1

    class VType(_VType, metaclass=_VTypeEnumTypeWrapper): ...
    VIZ_BIO_TEMPLATES: BiointerfaceVizRequest.VType.ValueType  # 0
    VIZ_BIO_DEV: BiointerfaceVizRequest.VType.ValueType  # 1

    DSOURCEID_FIELD_NUMBER: builtins.int
    VIZTYPE_FIELD_NUMBER: builtins.int
    NUMSAMPLES_FIELD_NUMBER: builtins.int
    ISYAUTOSCALE_FIELD_NUMBER: builtins.int
    YLIM_FIELD_NUMBER: builtins.int
    FIGDIR_FIELD_NUMBER: builtins.int
    ISAUTOOPEN_FIELD_NUMBER: builtins.int
    dsourceID: builtins.str
    vizType: global___BiointerfaceVizRequest.VType.ValueType
    numSamples: builtins.int
    isYAutoScale: builtins.bool
    figDir: builtins.str
    isAutoOpen: builtins.bool
    @property
    def yLim(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.float]: ...
    def __init__(
        self,
        *,
        dsourceID: builtins.str | None = ...,
        vizType: global___BiointerfaceVizRequest.VType.ValueType | None = ...,
        numSamples: builtins.int | None = ...,
        isYAutoScale: builtins.bool | None = ...,
        yLim: collections.abc.Iterable[builtins.float] | None = ...,
        figDir: builtins.str | None = ...,
        isAutoOpen: builtins.bool | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["dsourceID", b"dsourceID", "figDir", b"figDir", "isAutoOpen", b"isAutoOpen", "isYAutoScale", b"isYAutoScale", "numSamples", b"numSamples", "vizType", b"vizType"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["dsourceID", b"dsourceID", "figDir", b"figDir", "isAutoOpen", b"isAutoOpen", "isYAutoScale", b"isYAutoScale", "numSamples", b"numSamples", "vizType", b"vizType", "yLim", b"yLim"]) -> None: ...

global___BiointerfaceVizRequest = BiointerfaceVizRequest

@typing.final
class BiointerfaceVizReply(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    PNGPATHANDFILENAME_FIELD_NUMBER: builtins.int
    pngPathAndFileName: builtins.str
    def __init__(
        self,
        *,
        pngPathAndFileName: builtins.str | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["pngPathAndFileName", b"pngPathAndFileName"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["pngPathAndFileName", b"pngPathAndFileName"]) -> None: ...

global___BiointerfaceVizReply = BiointerfaceVizReply
