import { z } from 'zod';
import { type InferProvider } from './capability-definition.js';
/**
 * Generic device-level status snapshot. Auto-registered by `BaseDevice`
 * for every device, regardless of provider — the kernel needs a uniform
 * cap-keyed slice for the basic device flags every consumer expects to
 * read across processes (the `online` flag in particular). Driver-specific
 * caps (`battery`, `doorbell`, …) carry their domain-specific state on
 * their own slices.
 *
 * Pattern is identical to `battery`: schema-bearing `runtimeState`,
 * empty `methods`, single change event. Reads land at
 * `runtimeState.getCapState('device-status')`; writes at
 * `runtimeState.setCapState('device-status', …)`. Cross-process
 * consumers reach the same data via the `device-state` cap router
 * (`getCapSlice({deviceId, capName: 'device-status'})`).
 */
export declare const DeviceStatusSchema: z.ZodObject<{
    online: z.ZodBoolean;
    lastChangedAt: z.ZodNumber;
}, z.core.$strip>;
export type DeviceStatus = z.infer<typeof DeviceStatusSchema>;
export declare const deviceStatusCapability: {
    readonly name: "device-status";
    readonly scope: "device";
    readonly mode: "singleton";
    readonly methods: {};
    readonly events: {
        /** Emitted when `online` transitions. Mirrors the semantics of
         *  `battery.onStatusChanged`. */
        readonly onStatusChanged: {
            readonly data: z.ZodObject<{
                deviceId: z.ZodNumber;
                status: z.ZodObject<{
                    online: z.ZodBoolean;
                    lastChangedAt: z.ZodNumber;
                }, z.core.$strip>;
            }, z.core.$strip>;
        };
    };
    readonly status: {
        readonly schema: z.ZodObject<{
            online: z.ZodBoolean;
            lastChangedAt: z.ZodNumber;
        }, z.core.$strip>;
        readonly kind: "push";
    };
    readonly runtimeState: z.ZodObject<{
        online: z.ZodBoolean;
        lastChangedAt: z.ZodNumber;
    }, z.core.$strip>;
};
export type IDeviceStatusProvider = InferProvider<typeof deviceStatusCapability>;
//# sourceMappingURL=device-status.cap.d.ts.map