/**
 * @license
 * Copyright 2022-2025 Matter.js Authors
 * SPDX-License-Identifier: Apache-2.0
 */
/*** THIS FILE IS GENERATED, DO NOT EDIT ***/
import { MutableCluster } from "../cluster/mutation/MutableCluster.js";
import { Attribute, OptionalWritableAttribute } from "../cluster/Cluster.js";
import { BitFlag } from "../schema/BitmapSchema.js";
import { Identity } from "#general";
export declare namespace OccupancySensing {
    /**
     * @see {@link MatterSpecification.v13.Cluster} § 2.7.4.1
     */
    const Occupancy: {
        /**
         * Indicates the sensed occupancy state
         *
         * If this bit is set, it shall indicate the occupied state else if the bit if not set, it shall indicate the
         * unoccupied state.
         *
         * @see {@link MatterSpecification.v13.Cluster} § 2.7.4.1.1
         */
        occupied: BitFlag;
    };
    /**
     * @see {@link MatterSpecification.v13.Cluster} § 2.7.4.3
     */
    enum OccupancySensorType {
        /**
         * Indicates a passive infrared sensor.
         */
        Pir = 0,
        /**
         * Indicates a ultrasonic sensor.
         */
        Ultrasonic = 1,
        /**
         * Indicates a passive infrared and ultrasonic sensor.
         */
        PirAndUltrasonic = 2,
        /**
         * Indicates a physical contact sensor.
         */
        PhysicalContact = 3
    }
    /**
     * @see {@link MatterSpecification.v13.Cluster} § 2.7.4.2
     */
    const OccupancySensorTypeBitmap: {
        /**
         * Indicates a passive infrared sensor.
         */
        pir: BitFlag;
        /**
         * Indicates a ultrasonic sensor.
         */
        ultrasonic: BitFlag;
        /**
         * Indicates a physical contact sensor.
         */
        physicalContact: BitFlag;
    };
    /**
     * @see {@link Cluster}
     */
    const ClusterInstance: MutableCluster<{
        readonly id: 1030;
        readonly name: "OccupancySensing";
        readonly revision: 4;
        readonly attributes: {
            /**
             * This attribute indicates the sensed (processed) status of occupancy.
             *
             * @see {@link MatterSpecification.v13.Cluster} § 2.7.5.1
             */
            readonly occupancy: Attribute<import("../schema/BitmapSchema.js").TypeFromPartialBitSchema<{
                /**
                 * Indicates the sensed occupancy state
                 *
                 * If this bit is set, it shall indicate the occupied state else if the bit if not set, it shall indicate the
                 * unoccupied state.
                 *
                 * @see {@link MatterSpecification.v13.Cluster} § 2.7.4.1.1
                 */
                occupied: BitFlag;
            }>, any>;
            /**
             * This attribute specifies the type of the occupancy sensor.
             *
             * @see {@link MatterSpecification.v13.Cluster} § 2.7.5.2
             */
            readonly occupancySensorType: Attribute<OccupancySensorType, any>;
            /**
             * This attribute specifies the types of the occupancy sensor. Each bit position, if set, indicates the
             * corresponding sensing capability is implemented.
             *
             * The value of the OccupancySensorType shall be aligned to the value of the OccupancySensorTypeBitmap
             * attribute as defined below.
             *
             * @see {@link MatterSpecification.v13.Cluster} § 2.7.5.3
             */
            readonly occupancySensorTypeBitmap: Attribute<import("../schema/BitmapSchema.js").TypeFromPartialBitSchema<{
                /**
                 * Indicates a passive infrared sensor.
                 */
                pir: BitFlag;
                /**
                 * Indicates a ultrasonic sensor.
                 */
                ultrasonic: BitFlag;
                /**
                 * Indicates a physical contact sensor.
                 */
                physicalContact: BitFlag;
            }>, any>;
            /**
             * This attribute specifies the time delay, in seconds, before the PIR sensor changes to its unoccupied
             * state after the last detection of movement in the sensed area.
             *
             * @see {@link MatterSpecification.v13.Cluster} § 2.7.5.4
             */
            readonly pirOccupiedToUnoccupiedDelay: OptionalWritableAttribute<number, any>;
            /**
             * This attribute specifies the time delay, in seconds, before the PIR sensor changes to its occupied state
             * after the detection of movement in the sensed area.
             *
             * @see {@link MatterSpecification.v13.Cluster} § 2.7.5.5
             */
            readonly pirUnoccupiedToOccupiedDelay: OptionalWritableAttribute<number, any>;
            /**
             * This attribute specifies the number of movement detection events that must occur in the period
             * PIRUnoccupiedToOccupiedDelay, before the PIR sensor changes to its occupied state.
             *
             * @see {@link MatterSpecification.v13.Cluster} § 2.7.5.6
             */
            readonly pirUnoccupiedToOccupiedThreshold: OptionalWritableAttribute<number, any>;
            /**
             * This attribute specifies the time delay, in seconds, before the Ultrasonic sensor changes to its
             * unoccupied state after the last detection of movement in the sensed area.
             *
             * @see {@link MatterSpecification.v13.Cluster} § 2.7.5.7
             */
            readonly ultrasonicOccupiedToUnoccupiedDelay: OptionalWritableAttribute<number, any>;
            /**
             * This attribute specifies the time delay, in seconds, before the Ultrasonic sensor changes to its
             * occupied state after the detection of movement in the sensed area.
             *
             * @see {@link MatterSpecification.v13.Cluster} § 2.7.5.8
             */
            readonly ultrasonicUnoccupiedToOccupiedDelay: OptionalWritableAttribute<number, any>;
            /**
             * This attribute specifies the number of movement detection events that must occur in the period
             * UltrasonicUnoccupiedToOccupiedDelay, before the Ultrasonic sensor changes to its occupied state.
             *
             * @see {@link MatterSpecification.v13.Cluster} § 2.7.5.9
             */
            readonly ultrasonicUnoccupiedToOccupiedThreshold: OptionalWritableAttribute<number, any>;
            /**
             * This attribute specifies the time delay, in seconds, before the physical contact occupancy sensor
             * changes to its unoccupied state after detecting the unoccupied event.
             *
             * @see {@link MatterSpecification.v13.Cluster} § 2.7.5.10
             */
            readonly physicalContactOccupiedToUnoccupiedDelay: OptionalWritableAttribute<number, any>;
            /**
             * This attribute specifies the time delay, in seconds, before the physical contact sensor changes to its
             * occupied state after the detection of the occupied event.
             *
             * @see {@link MatterSpecification.v13.Cluster} § 2.7.5.11
             */
            readonly physicalContactUnoccupiedToOccupiedDelay: OptionalWritableAttribute<number, any>;
            /**
             * This attribute specifies the number of movement detection events that must occur in the period
             * PhysicalContactUnoccupiedToOccupiedDelay, before the PhysicalContact sensor changes to its occupied
             * state.
             *
             * @see {@link MatterSpecification.v13.Cluster} § 2.7.5.12
             */
            readonly physicalContactUnoccupiedToOccupiedThreshold: OptionalWritableAttribute<number, any>;
        };
    }, []>;
    /**
     * The server cluster provides an interface to occupancy sensing functionality, including configuration and
     * provision of notifications of occupancy status.
     *
     * @see {@link MatterSpecification.v13.Cluster} § 2.7
     */
    interface Cluster extends Identity<typeof ClusterInstance> {
    }
    const Cluster: Cluster;
    const Complete: Cluster;
}
export type OccupancySensingCluster = OccupancySensing.Cluster;
export declare const OccupancySensingCluster: OccupancySensing.Cluster;
//# sourceMappingURL=occupancy-sensing.d.ts.map