import { z } from 'zod';
import { type InferProvider } from './capability-definition.js';
import { DeviceType } from '../device/device-type.js';
/**
 * Motion-trigger toggle for accessory devices.
 *
 * "Motion trigger" means: when the parent camera detects motion, the
 * accessory activates automatically. The cap exposes a single boolean
 * — `enabled` — that drivers map to the vendor-specific firmware
 * action (Reolink: `setSirenOnMotion`, `setFloodlightOnMotion`; ONVIF
 * relay: schedule binding; …).
 *
 * The accessory still has its own `switch` cap for direct on/off; this
 * cap is independent. Toggling motion-trigger on does NOT necessarily
 * toggle the switch on — it just instructs the firmware to flip the
 * switch when motion fires.
 *
 * Driver-specific knobs (motion duration window, brightness while
 * triggered, schedule windows) live in the device's
 * `getSettingsUISchema()` instead of bloating this cap — same
 * principle as `switch` and `brightness` keeping their surface
 * minimal.
 */
export declare const MotionTriggerStatusSchema: z.ZodObject<{
    enabled: z.ZodBoolean;
    lastChangedAt: z.ZodNumber;
}, z.core.$strip>;
export type MotionTriggerStatus = z.infer<typeof MotionTriggerStatusSchema>;
/**
 * Persistent slice mirrored across restarts. The provider writes here
 * on every successful firmware fetch / setMotionTrigger push; the cap
 * router and admin-ui hero read straight from this snapshot via
 * `device.state.motionTrigger.value` instead of re-issuing a firmware
 * round-trip on every UI mount. `lastFetchedAt` lets the framework
 * helper (`createRuntimeStateBridge`) stale-check before deciding
 * whether to refresh from the camera.
 */
export declare const MotionTriggerRuntimeStateSchema: z.ZodObject<{
    enabled: z.ZodBoolean;
    lastChangedAt: z.ZodNumber;
    lastFetchedAt: z.ZodNumber;
}, z.core.$strip>;
export type MotionTriggerRuntimeState = z.infer<typeof MotionTriggerRuntimeStateSchema>;
export declare const motionTriggerCapability: {
    readonly name: "motion-trigger";
    readonly scope: "device";
    readonly mode: "singleton";
    readonly deviceTypes: readonly [DeviceType.Light, DeviceType.Siren, DeviceType.Switch];
    readonly methods: {
        readonly setMotionTrigger: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
            deviceId: z.ZodNumber;
            enabled: z.ZodBoolean;
        }, z.core.$strip>, z.ZodVoid, "mutation">;
    };
    readonly events: {
        readonly onMotionTriggerChanged: {
            readonly data: z.ZodObject<{
                deviceId: z.ZodNumber;
                enabled: z.ZodBoolean;
                lastChangedAt: z.ZodNumber;
            }, z.core.$strip>;
        };
    };
    readonly status: {
        readonly schema: z.ZodObject<{
            enabled: z.ZodBoolean;
            lastChangedAt: z.ZodNumber;
        }, z.core.$strip>;
        readonly kind: "command-driven";
    };
    readonly runtimeState: z.ZodObject<{
        enabled: z.ZodBoolean;
        lastChangedAt: z.ZodNumber;
        lastFetchedAt: z.ZodNumber;
    }, z.core.$strip>;
};
export type IMotionTriggerProvider = InferProvider<typeof motionTriggerCapability>;
//# sourceMappingURL=motion-trigger.cap.d.ts.map