import { z } from 'zod';
import { type InferProvider } from './capability-definition.js';
import { DeviceType } from '../device/device-type.js';
/**
 * Dimmable-light brightness control. Co-exists with `switch` on the
 * same device — the switch toggles on/off, this cap sets the level
 * applied when the light is on. Modeled after Scrypted's `Brightness`
 * interface so drivers can map their per-vendor dim controls cleanly.
 *
 * The cap is intentionally minimal: a single `setBrightness({deviceId,
 * percentage})` mutation plus the auto-injected `getStatus`. Drivers
 * that expose richer controls (color temperature, scenes, schedules)
 * should surface those via the device's `getSettingsUISchema()`
 * instead of bloating this cap.
 */
export declare const BrightnessStatusSchema: z.ZodObject<{
    percentage: z.ZodNumber;
    lastChangedAt: z.ZodNumber;
}, z.core.$strip>;
export type BrightnessStatus = z.infer<typeof BrightnessStatusSchema>;
export declare const brightnessCapability: {
    readonly name: "brightness";
    readonly scope: "device";
    readonly mode: "singleton";
    readonly deviceTypes: readonly [DeviceType.Light];
    readonly methods: {
        readonly setBrightness: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
            deviceId: z.ZodNumber;
            percentage: z.ZodNumber;
        }, z.core.$strip>, z.ZodVoid, "mutation">;
    };
    readonly events: {
        /**
         * Emitted whenever the brightness changes — operator action OR
         * firmware push. Subscribers (UI sliders, automation engines) react
         * without polling.
         */
        readonly onBrightnessChanged: {
            readonly data: z.ZodObject<{
                deviceId: z.ZodNumber;
                percentage: z.ZodNumber;
                lastChangedAt: z.ZodNumber;
            }, z.core.$strip>;
        };
    };
    readonly status: {
        readonly schema: z.ZodObject<{
            percentage: z.ZodNumber;
            lastChangedAt: z.ZodNumber;
        }, z.core.$strip>;
        readonly kind: "command-driven";
    };
    /**
     * Runtime-state slice — the last applied brightness level, mirrored
     * by the kernel. Read via `device.state.brightness.value` so UI
     * sliders surface the current level without polling the provider.
     */
    readonly runtimeState: z.ZodObject<{
        percentage: z.ZodNumber;
        lastChangedAt: z.ZodNumber;
    }, z.core.$strip>;
};
export type IBrightnessProvider = InferProvider<typeof brightnessCapability>;
//# sourceMappingURL=brightness.cap.d.ts.map