import { z } from 'zod';
import { type InferProvider } from './capability-definition.js';
import { DeviceType } from '../device/device-type.js';
/**
 * Generic on/off switch cap for accessory children (siren, floodlight,
 * spotlight, PIR toggle, chime silencer, autotrack enable, …). The cap
 * owns ONLY the boolean state — driver-specific settings (brightness,
 * sensitivity, schedule, duration) live on the device's own
 * `getSettingsUISchema()` surface.
 */
export declare const SwitchStatusSchema: z.ZodObject<{
    on: z.ZodBoolean;
    lastChangedAt: z.ZodNumber;
}, z.core.$strip>;
export type SwitchStatus = z.infer<typeof SwitchStatusSchema>;
export declare const switchCapability: {
    readonly name: "switch";
    readonly scope: "device";
    readonly mode: "singleton";
    readonly deviceTypes: readonly [DeviceType.Switch, DeviceType.Siren, DeviceType.Light];
    readonly methods: {
        readonly setState: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
            deviceId: z.ZodNumber;
            on: z.ZodBoolean;
        }, z.core.$strip>, z.ZodVoid, "mutation">;
    };
    readonly events: {
        readonly onStateChanged: {
            readonly data: z.ZodObject<{
                deviceId: z.ZodNumber;
                on: z.ZodBoolean;
                lastChangedAt: z.ZodNumber;
            }, z.core.$strip>;
        };
    };
    readonly status: {
        readonly schema: z.ZodObject<{
            on: z.ZodBoolean;
            lastChangedAt: z.ZodNumber;
        }, z.core.$strip>;
        readonly kind: "command-driven";
    };
    /**
     * Runtime-state slice — the last applied on/off state, mirrored by
     * the kernel. Read via `device.state.switch.value`; UI toggles do
     * not need to re-query the provider after a setState mutation.
     */
    readonly runtimeState: z.ZodObject<{
        on: z.ZodBoolean;
        lastChangedAt: z.ZodNumber;
    }, z.core.$strip>;
    readonly settings: {
        readonly bindings: readonly [{
            readonly kind: "scalar";
            readonly statusPath: "on";
            readonly method: "setState";
            readonly valueArg: "on";
            readonly field: {
                readonly label: "On";
                readonly kind: "boolean";
            };
        }];
    };
};
export type ISwitchProvider = InferProvider<typeof switchCapability>;
//# sourceMappingURL=switch.cap.d.ts.map