"""Domain models — pure Pydantic v2, zero proto dependency.

All enums and models are importable from their domain-grouped submodules:

    from radiens_core.models.stim import StimParams, StimShape
    from radiens_core.models.signals import SignalType, SigSelect
    from radiens_core.models.status import RecordMode, StreamMode
"""

from radiens_core.models.channels import (
    AreaUnits,
    ChannelInfo,
    ChannelMetadata,
    KeyIdxs,
    SignalUnits,
    SitePosition,
)
from radiens_core.models.common import ClientType, ServiceEndpoint
from radiens_core.models.core_config import CableDelay, CoreConfig, SetCoreConfigRequest
from radiens_core.models.dac import AnalogOutChannel, AnalogOutRegister, DACHighPass
from radiens_core.models.dataset import (
    BandParams,
    BulkSinkParams,
    BulkSourceParams,
    CARParams,
    DatasetMetadata,
    DownsampleParams,
    HighLowPassParams,
    NotchParams,
    PairedRefParams,
    RadiensFileType,
    SinkParams,
    SliceChannelsParams,
    SliceTimeParams,
    SourceParams,
    TransformEdge,
    TransformNode,
    TransformNodeType,
    TrsMode,
    VirtualRefParams,
)
from radiens_core.models.dio import DigitalOutChannelRegister, DigitalOutRegister, DIOMode
from radiens_core.models.dsp import DSPGroup, DSPParams, DSPType, FilterStage
from radiens_core.models.kpi import KpiMetric, KpiMetricId, KpiMetricsResult, KpiMode, KpiStatus
from radiens_core.models.ports import GPIOChannelCount, Port, PortChannelCount
from radiens_core.models.signals import KeyIndex, SignalArrays, SignalType, SigSelect
from radiens_core.models.spikes import ChannelSpikeData, NeuronInfo, NeuronSpikeData, NeuronsResult, SpikesSpec
from radiens_core.models.status import (
    BackboneMode,
    BackboneStatus,
    DataRecordingType,
    RecordingConfig,
    RecordingStatus,
    RecordMode,
    RecordStateRequest,
    RestartRequest,
    SinapsStatusRegisters,
    StreamingStatus,
    StreamMode,
    StreamStateRequest,
)
from radiens_core.models.stim import (
    StimKeypressIndex,
    StimParams,
    StimPolarity,
    StimPulseMode,
    StimShape,
    StimStep,
    StimStepRequest,
    StimStepState,
    StimTriggerEdgeOrLevel,
    StimTriggerHighOrLow,
)
from radiens_core.models.time_range import TimeRange
from radiens_core.models.triggers import (
    ManualStimTriggerRequest,
    ManualStimTriggerToggleRequest,
    SetTriggerStateRequest,
    TriggerChannel,
    TriggerState,
)

__all__ = [
    "AnalogOutChannel",
    "AnalogOutRegister",
    "AreaUnits",
    "BackboneMode",
    "BackboneStatus",
    "BandParams",
    "BulkSinkParams",
    "BulkSourceParams",
    "CARParams",
    "CableDelay",
    "ChannelInfo",
    "ChannelMetadata",
    "ChannelSpikeData",
    "ClientType",
    "CoreConfig",
    "DACHighPass",
    "DIOMode",
    "DSPGroup",
    "DSPParams",
    "DSPType",
    "DataRecordingType",
    "DatasetMetadata",
    "DigitalOutChannelRegister",
    "DigitalOutRegister",
    "DownsampleParams",
    "FilterStage",
    "GPIOChannelCount",
    "HighLowPassParams",
    "KeyIdxs",
    "KeyIndex",
    "KpiMetric",
    "KpiMetricId",
    "KpiMetricsResult",
    "KpiMode",
    "KpiStatus",
    "ManualStimTriggerRequest",
    "ManualStimTriggerToggleRequest",
    "NeuronInfo",
    "NeuronSpikeData",
    "NeuronsResult",
    "NotchParams",
    "PairedRefParams",
    "Port",
    "PortChannelCount",
    "RadiensFileType",
    "RecordMode",
    "RecordStateRequest",
    "RecordingConfig",
    "RecordingStatus",
    "RestartRequest",
    "ServiceEndpoint",
    "SetCoreConfigRequest",
    "SetTriggerStateRequest",
    "SigSelect",
    "SignalArrays",
    "SignalType",
    "SignalUnits",
    "SinapsStatusRegisters",
    "SinkParams",
    "SitePosition",
    "SliceChannelsParams",
    "SliceTimeParams",
    "SourceParams",
    "SpikesSpec",
    "StimKeypressIndex",
    "StimParams",
    "StimPolarity",
    "StimPulseMode",
    "StimShape",
    "StimStep",
    "StimStepRequest",
    "StimStepState",
    "StimTriggerEdgeOrLevel",
    "StimTriggerHighOrLow",
    "StreamMode",
    "StreamStateRequest",
    "StreamingStatus",
    "TimeRange",
    "TransformEdge",
    "TransformNode",
    "TransformNodeType",
    "TriggerChannel",
    "TriggerState",
    "TrsMode",
    "VirtualRefParams",
]
