/**
 * @license
 * Copyright 2022-2026 Matter.js Authors
 * SPDX-License-Identifier: Apache-2.0
 */
/*** THIS FILE IS GENERATED, DO NOT EDIT ***/
import { OccupancySensing } from "@matter/types/clusters/occupancy-sensing";
import { ClusterBehavior } from "../../behavior/cluster/ClusterBehavior.js";
import { ClusterType } from "@matter/types";
import { Identity } from "@matter/general";
/**
 * OccupancySensingBehavior is the base class for objects that support interaction with
 * {@link OccupancySensing.Cluster}.
 *
 * OccupancySensing.Cluster requires you to enable one or more optional features. You can do so using
 * {@link OccupancySensingBehavior.with}.
 */
export declare const OccupancySensingBehaviorConstructor: ClusterBehavior.Type<ClusterType.Of<{
    readonly id: 1030;
    readonly name: "OccupancySensing";
    readonly revision: 5;
    readonly features: {
        readonly other: import("@matter/types").BitFlag;
        readonly passiveInfrared: import("@matter/types").BitFlag;
        readonly ultrasonic: import("@matter/types").BitFlag;
        readonly physicalContact: import("@matter/types").BitFlag;
        readonly activeInfrared: import("@matter/types").BitFlag;
        readonly radar: import("@matter/types").BitFlag;
        readonly rfSensing: import("@matter/types").BitFlag;
        readonly vision: import("@matter/types").BitFlag;
    };
    readonly attributes: {
        readonly occupancy: import("@matter/types").Attribute<import("@matter/types").TypeFromPartialBitSchema<{
            occupied: import("@matter/types").BitFlag;
        }>, any>;
        readonly occupancySensorType: import("@matter/types").FixedAttribute<OccupancySensing.OccupancySensorType, any>;
        readonly occupancySensorTypeBitmap: import("@matter/types").FixedAttribute<import("@matter/types").TypeFromPartialBitSchema<{
            pir: import("@matter/types").BitFlag;
            ultrasonic: import("@matter/types").BitFlag;
            physicalContact: import("@matter/types").BitFlag;
        }>, any>;
        readonly holdTime: import("@matter/types").OptionalWritableAttribute<number, any>;
        readonly holdTimeLimits: import("@matter/types").OptionalFixedAttribute<import("@matter/types").TypeFromFields<{
            holdTimeMin: import("@matter/types").FieldType<number>;
            holdTimeMax: import("@matter/types").FieldType<number>;
            holdTimeDefault: import("@matter/types").FieldType<number>;
        }>, any>;
    };
    readonly events: {
        readonly occupancyChanged: import("@matter/types").OptionalEvent<import("@matter/types").TypeFromFields<{
            occupancy: import("@matter/types").FieldType<import("@matter/types").TypeFromPartialBitSchema<{
                occupied: import("@matter/types").BitFlag;
            }>>;
        }>, any>;
    };
    readonly extensions: readonly [{
        readonly flags: {
            readonly passiveInfrared: true;
        };
        readonly component: {
            readonly attributes: {
                readonly pirOccupiedToUnoccupiedDelay: import("@matter/types").OptionalWritableAttribute<number, any>;
                readonly pirUnoccupiedToOccupiedDelay: import("@matter/types").OptionalWritableAttribute<number, any>;
                readonly pirUnoccupiedToOccupiedThreshold: import("@matter/types").OptionalWritableAttribute<number, any>;
            };
        };
    }, {
        readonly flags: {
            readonly ultrasonic: true;
        };
        readonly component: {
            readonly attributes: {
                readonly ultrasonicOccupiedToUnoccupiedDelay: import("@matter/types").OptionalWritableAttribute<number, any>;
                readonly ultrasonicUnoccupiedToOccupiedDelay: import("@matter/types").OptionalWritableAttribute<number, any>;
                readonly ultrasonicUnoccupiedToOccupiedThreshold: import("@matter/types").OptionalWritableAttribute<number, any>;
            };
        };
    }, {
        readonly flags: {
            readonly physicalContact: true;
        };
        readonly component: {
            readonly attributes: {
                readonly physicalContactOccupiedToUnoccupiedDelay: import("@matter/types").OptionalWritableAttribute<number, any>;
                readonly physicalContactUnoccupiedToOccupiedDelay: import("@matter/types").OptionalWritableAttribute<number, any>;
                readonly physicalContactUnoccupiedToOccupiedThreshold: import("@matter/types").OptionalWritableAttribute<number, any>;
            };
        };
    }, {
        readonly flags: {
            readonly other: false;
            readonly passiveInfrared: false;
            readonly ultrasonic: false;
            readonly physicalContact: false;
            readonly activeInfrared: false;
            readonly radar: false;
            readonly rfSensing: false;
            readonly vision: false;
        };
        readonly component: false;
    }];
}>, typeof ClusterBehavior, {
    components: never[];
}>;
export interface OccupancySensingBehaviorConstructor extends Identity<typeof OccupancySensingBehaviorConstructor> {
}
export declare const OccupancySensingBehavior: OccupancySensingBehaviorConstructor;
export interface OccupancySensingBehavior extends InstanceType<OccupancySensingBehaviorConstructor> {
}
export declare namespace OccupancySensingBehavior {
    interface State extends InstanceType<typeof OccupancySensingBehavior.State> {
    }
}
//# sourceMappingURL=OccupancySensingBehavior.d.ts.map