import { z } from 'zod';
import { type InferProvider } from './capability-definition.js';
import { DeviceType } from '../device/device-type.js';
/**
 * Doorbell button cap. Installed on a `DeviceType.Button` accessory
 * with `role: DeviceRole.Doorbell`. Emits an `onPressed` event every
 * time the firmware pushes a ring; status tracks the last press and
 * a pressCount since start (diagnostic).
 *
 * The DeviceEventPropagator re-emits `onPressed` on the camera parent
 * — subscribers listening at the camera level receive ring events
 * with `via[]` populated. No code on the parent needed.
 */
export declare const DoorbellStatusSchema: z.ZodObject<{
    lastPressedAt: z.ZodNullable<z.ZodNumber>;
    pressCountSinceStart: z.ZodNumber;
}, z.core.$strip>;
export type DoorbellStatus = z.infer<typeof DoorbellStatusSchema>;
export declare const DoorbellPressEventSchema: z.ZodObject<{
    deviceId: z.ZodNumber;
    timestamp: z.ZodNumber;
}, z.core.$strip>;
export type DoorbellPressEvent = z.infer<typeof DoorbellPressEventSchema>;
export declare const doorbellCapability: {
    readonly name: "doorbell";
    readonly scope: "device";
    readonly mode: "singleton";
    readonly deviceTypes: readonly [DeviceType.Button];
    readonly methods: {};
    readonly events: {
        /**
         * Fires once per physical press. Reolink delivers via Baichuan
         * push (`ReolinkSimpleEvent.type === 'doorbell'`). There is no
         * release/duration — it's a pulse.
         */
        readonly onPressed: {
            readonly data: z.ZodObject<{
                deviceId: z.ZodNumber;
                timestamp: z.ZodNumber;
            }, z.core.$strip>;
        };
    };
    readonly status: {
        readonly schema: z.ZodObject<{
            lastPressedAt: z.ZodNullable<z.ZodNumber>;
            pressCountSinceStart: z.ZodNumber;
        }, z.core.$strip>;
        readonly kind: "push";
    };
    /**
     * Runtime-state slice — last press timestamp + lifetime press count.
     * Mirrored by the kernel and readable via
     * `device.state.doorbell.value`. UIs can show "last ring 5m ago"
     * without subscribing.
     */
    readonly runtimeState: z.ZodObject<{
        lastPressedAt: z.ZodNullable<z.ZodNumber>;
        pressCountSinceStart: z.ZodNumber;
    }, z.core.$strip>;
};
export type IDoorbellProvider = InferProvider<typeof doorbellCapability>;
//# sourceMappingURL=doorbell.cap.d.ts.map