import type { CapabilityDefinition, InferRuntimeState } from '../capabilities/capability-definition.js';
import { audioMetricsCapability } from '../capabilities/audio-metrics.cap.js';
import { batteryCapability } from '../capabilities/battery.cap.js';
import { brightnessCapability } from '../capabilities/brightness.cap.js';
import { cameraStreamsCapability } from '../capabilities/camera-streams.cap.js';
import { deviceDiscoveryCapability } from '../capabilities/device-discovery.cap.js';
import { deviceStatusCapability } from '../capabilities/device-status.cap.js';
import { doorbellCapability } from '../capabilities/doorbell.cap.js';
import { featureProbeCapability } from '../capabilities/feature-probe.cap.js';
import { motionCapability } from '../capabilities/motion.cap.js';
import { motionTriggerCapability } from '../capabilities/motion-trigger.cap.js';
import { ptzAutotrackCapability } from '../capabilities/ptz-autotrack.cap.js';
import { switchCapability } from '../capabilities/switch.cap.js';
import { zoneAnalyticsCapability } from '../capabilities/zone-analytics.cap.js';
import { zoneRulesCapability } from '../capabilities/zone-rules.cap.js';
import { zonesCapability } from '../capabilities/zones.cap.js';
/**
 * Server-side, write-capable per-cap state shape for any device that
 * extends `BaseDevice`. One entry per cap with `runtimeState:` declared.
 *
 * Drivers access via `this.state.<capName>.<field>` — both reads and
 * writes route through the device's runtime-state slice (validate,
 * persist, fire `<cap>.onChanged`). No string keys, no manual generic.
 *
 * Adding a new cap with `runtimeState:` auto-extends this interface —
 * regenerate with `npm run codegen`.
 */
export interface DeviceLocalState {
    audioMetrics: InferRuntimeState<typeof audioMetricsCapability>;
    battery: InferRuntimeState<typeof batteryCapability>;
    brightness: InferRuntimeState<typeof brightnessCapability>;
    cameraStreams: InferRuntimeState<typeof cameraStreamsCapability>;
    deviceDiscovery: InferRuntimeState<typeof deviceDiscoveryCapability>;
    deviceStatus: InferRuntimeState<typeof deviceStatusCapability>;
    doorbell: InferRuntimeState<typeof doorbellCapability>;
    featureProbe: InferRuntimeState<typeof featureProbeCapability>;
    motion: InferRuntimeState<typeof motionCapability>;
    motionTrigger: InferRuntimeState<typeof motionTriggerCapability>;
    ptzAutotrack: InferRuntimeState<typeof ptzAutotrackCapability>;
    switch: InferRuntimeState<typeof switchCapability>;
    zoneAnalytics: InferRuntimeState<typeof zoneAnalyticsCapability>;
    zoneRules: InferRuntimeState<typeof zoneRulesCapability>;
    zones: InferRuntimeState<typeof zonesCapability>;
}
/**
 * Runtime registry: cap-property-name → cap definition. `BaseDevice`'s
 * `state` getter looks up the cap definition here to construct a
 * `sliceProxy()` lazily on first access. Generated alongside the type
 * so type and runtime registry can never drift apart.
 */
export declare const DEVICE_LOCAL_STATE_CAPS: Record<keyof DeviceLocalState, CapabilityDefinition>;
/**
 * Cap-name keyed runtime-state map (kebab-case keys, e.g. `'battery'`,
 * `'device-discovery'`). Companion to `DeviceLocalState` (which uses
 * camelCase property keys). Consumed by the
 * `IDeviceRuntimeState.getCapState` overload so callers passing a
 * cap-name literal get the typed slice back without an explicit
 * generic argument:
 *
 *   const slice = this.runtimeState.getCapState('battery')
 *   //    ^^^^^ inferred as InferRuntimeState<typeof batteryCapability>
 *
 * Eliminates the `as`-cast at every `getCapState<X>('cap-name')` site.
 */
export interface CapNameToRuntimeStateMap {
    'audio-metrics': InferRuntimeState<typeof audioMetricsCapability>;
    'battery': InferRuntimeState<typeof batteryCapability>;
    'brightness': InferRuntimeState<typeof brightnessCapability>;
    'camera-streams': InferRuntimeState<typeof cameraStreamsCapability>;
    'device-discovery': InferRuntimeState<typeof deviceDiscoveryCapability>;
    'device-status': InferRuntimeState<typeof deviceStatusCapability>;
    'doorbell': InferRuntimeState<typeof doorbellCapability>;
    'feature-probe': InferRuntimeState<typeof featureProbeCapability>;
    'motion': InferRuntimeState<typeof motionCapability>;
    'motion-trigger': InferRuntimeState<typeof motionTriggerCapability>;
    'ptz-autotrack': InferRuntimeState<typeof ptzAutotrackCapability>;
    'switch': InferRuntimeState<typeof switchCapability>;
    'zone-analytics': InferRuntimeState<typeof zoneAnalyticsCapability>;
    'zone-rules': InferRuntimeState<typeof zoneRulesCapability>;
    'zones': InferRuntimeState<typeof zonesCapability>;
}
//# sourceMappingURL=device-local-state.d.ts.map