import { z } from 'zod';
import { type InferProvider } from './capability-definition.js';
import { DeviceType } from '../device/device-type.js';
/**
 * Battery status snapshot. Emitted by providers whose device is
 * battery-operated (cameras with `DeviceFeature.BatteryOperated`,
 * future sensor/button accessories). Consumers build their own "low
 * battery" alerting on top — the cap deliberately does NOT enforce a
 * threshold.
 */
export declare const BatteryStatusSchema: z.ZodObject<{
    percentage: z.ZodNumber;
    charging: z.ZodEnum<{
        none: "none";
        dc: "dc";
        solar: "solar";
    }>;
    sleeping: z.ZodBoolean;
    lastUpdated: z.ZodNumber;
}, z.core.$strip>;
export type BatteryStatus = z.infer<typeof BatteryStatusSchema>;
export declare const batteryCapability: {
    readonly name: "battery";
    readonly scope: "device";
    readonly mode: "singleton";
    readonly deviceTypes: readonly [DeviceType.Camera, DeviceType.Sensor, DeviceType.Button, DeviceType.Switch];
    readonly methods: {};
    readonly events: {
        /**
         * Emitted whenever the cached status changes (firmware push OR
         * poll observes a delta). The DeviceEventPropagator mirrors this
         * event on the parent chain — subscribing to a camera's source
         * receives battery events from child accessories automatically.
         */
        readonly onStatusChanged: {
            readonly data: z.ZodObject<{
                deviceId: z.ZodNumber;
                status: z.ZodObject<{
                    percentage: z.ZodNumber;
                    charging: z.ZodEnum<{
                        none: "none";
                        dc: "dc";
                        solar: "solar";
                    }>;
                    sleeping: z.ZodBoolean;
                    lastUpdated: z.ZodNumber;
                }, z.core.$strip>;
            }, z.core.$strip>;
        };
    };
    readonly status: {
        readonly schema: z.ZodObject<{
            percentage: z.ZodNumber;
            charging: z.ZodEnum<{
                none: "none";
                dc: "dc";
                solar: "solar";
            }>;
            sleeping: z.ZodBoolean;
            lastUpdated: z.ZodNumber;
        }, z.core.$strip>;
        readonly kind: "push";
    };
    /**
     * Runtime-state slice — every provider that registers this cap
     * stores the same shape under `device.runtimeState[battery]`.
     * Cross-provider uniformity: a Reolink Argus, a Frigate sensor
     * proxy, an ONVIF battery cam all read/write the same keys.
     * Consumers (BatteryBadge, snapshot wrapper sleep gate) read once
     * via `device.runtimeState.getCapState('battery')` regardless of
     * the underlying driver.
     */
    readonly runtimeState: z.ZodObject<{
        percentage: z.ZodNumber;
        charging: z.ZodEnum<{
            none: "none";
            dc: "dc";
            solar: "solar";
        }>;
        sleeping: z.ZodBoolean;
        lastUpdated: z.ZodNumber;
    }, z.core.$strip>;
};
export type IBatteryProvider = InferProvider<typeof batteryCapability>;
//# sourceMappingURL=battery.cap.d.ts.map