/**
 * @license
 * Copyright 2022-2026 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, OptionalFixedAttribute, WritableAttribute, OptionalAttribute, Command, OptionalEvent } from "../cluster/Cluster.js";
import { BitFlag } from "../schema/BitmapSchema.js";
import { TypeFromSchema } from "../tlv/TlvSchema.js";
import { StatusResponseError } from "../common/StatusResponseError.js";
import { Status } from "../globals/Status.js";
import { Identity } from "#general";
export declare namespace ValveConfigurationAndControl {
    /**
     * These are optional features supported by ValveConfigurationAndControlCluster.
     *
     * @see {@link MatterSpecification.v142.Cluster} § 4.6.4
     */
    enum Feature {
        /**
         * TimeSync (TS)
         *
         * This feature shall indicate that the valve uses Time Synchronization and UTC time to indicate duration and
         * auto close time.
         *
         * This feature shall NOT be supported unless the device supports the Time Synchronization cluster.
         *
         * @see {@link MatterSpecification.v142.Cluster} § 4.6.4.1
         */
        TimeSync = "TimeSync",
        /**
         * Level (LVL)
         *
         * This feature shall indicate that the valve is capable of being adjusted to a specific position, as a
         * percentage, of its full range of motion.
         *
         * @see {@link MatterSpecification.v142.Cluster} § 4.6.4.2
         */
        Level = "Level"
    }
    /**
     * @see {@link MatterSpecification.v142.Cluster} § 4.6.5.2
     */
    enum ValveState {
        /**
         * Valve is in closed position
         */
        Closed = 0,
        /**
         * Valve is in open position
         */
        Open = 1,
        /**
         * Valve is transitioning between closed and open positions or between levels
         */
        Transitioning = 2
    }
    /**
     * @see {@link MatterSpecification.v142.Cluster} § 4.6.5.1
     */
    const ValveFault: {
        /**
         * Unspecified fault detected
         */
        generalFault: BitFlag;
        /**
         * Valve is blocked
         */
        blocked: BitFlag;
        /**
         * Valve has detected a leak
         */
        leaking: BitFlag;
        /**
         * No valve is connected to controller
         */
        notConnected: BitFlag;
        /**
         * Short circuit is detected
         */
        shortCircuit: BitFlag;
        /**
         * The available current has been exceeded
         */
        currentExceeded: BitFlag;
    };
    /**
     * Input to the ValveConfigurationAndControl open command
     *
     * @see {@link MatterSpecification.v142.Cluster} § 4.6.8.1
     */
    const TlvOpenRequest: import("../tlv/TlvObject.js").ObjectSchema<{
        /**
         * This field shall indicate the duration that the valve will remain open for this specific Open command.
         *
         * A value of null shall indicate the duration is not set, meaning that the valve will remain open until closed
         * by the user or some other automation.
         *
         * @see {@link MatterSpecification.v142.Cluster} § 4.6.8.1.1
         */
        openDuration: import("../tlv/TlvObject.js").OptionalFieldType<number | null>;
        /**
         * This field shall indicate the target level used for this specific Open command.
         *
         * @see {@link MatterSpecification.v142.Cluster} § 4.6.8.1.2
         */
        targetLevel: import("../tlv/TlvObject.js").OptionalFieldType<number>;
    }>;
    /**
     * Input to the ValveConfigurationAndControl open command
     *
     * @see {@link MatterSpecification.v142.Cluster} § 4.6.8.1
     */
    interface OpenRequest extends TypeFromSchema<typeof TlvOpenRequest> {
    }
    /**
     * Body of the ValveConfigurationAndControl valveStateChanged event
     *
     * @see {@link MatterSpecification.v142.Cluster} § 4.6.9.1
     */
    const TlvValveStateChangedEvent: import("../tlv/TlvObject.js").ObjectSchema<{
        /**
         * This field shall indicate the new state of the valve.
         *
         * @see {@link MatterSpecification.v142.Cluster} § 4.6.9.1.1
         */
        valveState: import("../tlv/TlvObject.js").FieldType<ValveState>;
        /**
         * This field shall indicate the new level of the valve.
         *
         * @see {@link MatterSpecification.v142.Cluster} § 4.6.9.1.2
         */
        valveLevel: import("../tlv/TlvObject.js").OptionalFieldType<number>;
    }>;
    /**
     * Body of the ValveConfigurationAndControl valveStateChanged event
     *
     * @see {@link MatterSpecification.v142.Cluster} § 4.6.9.1
     */
    interface ValveStateChangedEvent extends TypeFromSchema<typeof TlvValveStateChangedEvent> {
    }
    /**
     * Body of the ValveConfigurationAndControl valveFault event
     *
     * @see {@link MatterSpecification.v142.Cluster} § 4.6.9.2
     */
    const TlvValveFaultEvent: import("../tlv/TlvObject.js").ObjectSchema<{
        /**
         * This field shall indicate the value of the ValveFault attribute, at the time this event is generated.
         *
         * @see {@link MatterSpecification.v142.Cluster} § 4.6.9.2.1
         */
        valveFault: import("../tlv/TlvObject.js").FieldType<import("../schema/BitmapSchema.js").TypeFromPartialBitSchema<{
            /**
             * Unspecified fault detected
             */
            generalFault: BitFlag;
            /**
             * Valve is blocked
             */
            blocked: BitFlag;
            /**
             * Valve has detected a leak
             */
            leaking: BitFlag;
            /**
             * No valve is connected to controller
             */
            notConnected: BitFlag;
            /**
             * Short circuit is detected
             */
            shortCircuit: BitFlag;
            /**
             * The available current has been exceeded
             */
            currentExceeded: BitFlag;
        }>>;
    }>;
    /**
     * Body of the ValveConfigurationAndControl valveFault event
     *
     * @see {@link MatterSpecification.v142.Cluster} § 4.6.9.2
     */
    interface ValveFaultEvent extends TypeFromSchema<typeof TlvValveFaultEvent> {
    }
    /**
     * @see {@link MatterSpecification.v142.Cluster} § 4.6.6.1
     */
    enum StatusCode {
        /**
         * The requested action could not be performed due to a fault on the valve.
         */
        FailureDueToFault = 2
    }
    /**
     * Thrown for cluster status code {@link StatusCode.FailureDueToFault}.
     *
     * @see {@link MatterSpecification.v142.Cluster} § 4.6.6.1
     */
    class FailureDueToFaultError extends StatusResponseError {
        constructor(message?: string, code?: Status, clusterCode?: StatusCode);
    }
    /**
     * A ValveConfigurationAndControlCluster supports these elements if it supports feature TimeSync.
     */
    const TimeSyncComponent: {
        readonly attributes: {
            /**
             * Indicates the UTC time when the valve will close, depending on value of the OpenDuration attribute.
             *
             * Null:
             *
             *   - When OpenDuration is null, or
             *
             *   - When the valve does not have a synchronized UTCTime in the Time Synchronization cluster, or
             *
             *   - When the valve is closed.
             *
             * When the value of this attribute is earlier or equal to the current UTC time, the valve shall
             * automatically transition to its closed position. The behavior of transitioning to the closed position,
             * shall match the behavior described in the Close command.
             *
             * If this attribute is not null and the Time Synchronization cluster receives a SetUTCTime command,
             * modifying the current UTC time of the device, the value of this attribute shall be adjusted to match the
             * new UTC time plus the value of the RemainingDuration attribute.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 4.6.7.3
             */
            readonly autoCloseTime: Attribute<number | bigint | null, any>;
        };
    };
    /**
     * A ValveConfigurationAndControlCluster supports these elements if it supports feature Level.
     */
    const LevelComponent: {
        readonly attributes: {
            /**
             * Indicates the current level of the valve as a percentage value, between fully closed and fully open.
             * During a transition from one level to another level, the valve SHOULD keep this attribute updated to the
             * best of its ability, in order to represent the actual level of the valve during the movement.
             *
             * A value of 100 percent shall indicate the fully open position.
             *
             * A value of 0 percent shall indicate the fully closed position.
             *
             * A value of null shall indicate that the current state is not known.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 4.6.7.7
             */
            readonly currentLevel: Attribute<number | null, any>;
            /**
             * Indicates the target level of the valve as a percentage value, between fully closed and fully open.
             *
             * The interpretation of the percentage value is the same as for the CurrentLevel attribute.
             *
             * A value of null shall indicate that no target position is set, since the change of level is either done
             * or failed.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 4.6.7.8
             */
            readonly targetLevel: Attribute<number | null, any>;
            /**
             * Indicates the default value used for the TargetLevel attribute, when a valve transitions from the closed
             * to the open state, caused by an Open command, if a TargetLevel field is not present in the Open command.
             *
             * If the LevelStep attribute is present and the value of a write interaction to this attribute field is not
             * 100, the value shall be a supported value as defined by the LevelStep attribute, such that (Value
             * received in the write interaction) % (Value of LevelStep attribute) equals 0. If the resulting value is
             * not 0, the requested DefaultOpenLevel value is considered an unsupported value and a CONSTRAINT_ERROR
             * status shall be returned.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 4.6.7.9
             */
            readonly defaultOpenLevel: OptionalWritableAttribute<number, any>;
            /**
             * Indicates the step size the valve can support.
             *
             * The step size defined by this attribute is counted from 0 and the final step towards 100 may be different
             * than what is defined in this attribute. For example, if the value of this attribute is 15, it results in
             * these target values being supported; 0, 15, 30, 45, 60, 75, 90 and 100.
             *
             * The values of 0 and 100 shall always be supported, regardless of the value of this attribute.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 4.6.7.11
             */
            readonly levelStep: OptionalFixedAttribute<number, any>;
        };
    };
    /**
     * These elements and properties are present in all ValveConfigurationAndControl clusters.
     */
    const Base: {
        readonly id: 129;
        readonly name: "ValveConfigurationAndControl";
        readonly revision: 1;
        readonly features: {
            /**
             * This feature shall indicate that the valve uses Time Synchronization and UTC time to indicate duration
             * and auto close time.
             *
             * This feature shall NOT be supported unless the device supports the Time Synchronization cluster.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 4.6.4.1
             */
            readonly timeSync: BitFlag;
            /**
             * This feature shall indicate that the valve is capable of being adjusted to a specific position, as a
             * percentage, of its full range of motion.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 4.6.4.2
             */
            readonly level: BitFlag;
        };
        readonly attributes: {
            /**
             * Indicates the total duration, in seconds, for which the valve will remain open for this current opening.
             *
             * A value of null shall indicate the duration is not set, meaning that the valve will remain open until
             * closed by the user or some other automation.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 4.6.7.1
             */
            readonly openDuration: Attribute<number | null, any>;
            /**
             * Indicates the default duration, in seconds, for which the valve will remain open, if the OpenDuration
             * field is not present in the Open command.
             *
             * A value of null shall indicate the duration is not set, meaning that the valve will remain open until
             * closed by the user or some other automation.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 4.6.7.2
             */
            readonly defaultOpenDuration: WritableAttribute<number | null, any>;
            /**
             * Indicates the remaining duration, in seconds, until the valve closes.
             *
             * Null:
             *
             *   - When OpenDuration is null, or
             *
             *   - When the valve is closed.
             *
             * The value of this attribute shall only be reported in the following cases:
             *
             *   - When it changes from null to any other value and vice versa, or
             *
             *   - When it changes to 0, or
             *
             *   - When it increases, or
             *
             *   - When the closing time changes.
             *
             * Meaning that clients SHOULD NOT rely on the reporting of this attribute in order to keep track of the
             * remaining duration, due to this attribute not being reported during regular countdown.
             *
             * When reading this attribute it shall return the remaining duration, in seconds, until the valve closes.
             *
             * When the value of this attribute counts down to 0, the valve shall automatically transition to its closed
             * position. The behavior of transitioning to the closed position shall match the behavior described in the
             * Close command.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 4.6.7.4
             */
            readonly remainingDuration: Attribute<number | null, any>;
            /**
             * Indicates the current state of the valve.
             *
             * A value of null shall indicate that the current state is not known.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 4.6.7.5
             */
            readonly currentState: Attribute<ValveState | null, any>;
            /**
             * Indicates the target state, while changing the state, of the valve.
             *
             * A value of null shall indicate that no target position is set, since the change in state is either done
             * or failed.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 4.6.7.6
             */
            readonly targetState: Attribute<ValveState | null, any>;
            /**
             * Indicates any faults registered by the valve.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 4.6.7.10
             */
            readonly valveFault: OptionalAttribute<import("../schema/BitmapSchema.js").TypeFromPartialBitSchema<{
                /**
                 * Unspecified fault detected
                 */
                generalFault: BitFlag;
                /**
                 * Valve is blocked
                 */
                blocked: BitFlag;
                /**
                 * Valve has detected a leak
                 */
                leaking: BitFlag;
                /**
                 * No valve is connected to controller
                 */
                notConnected: BitFlag;
                /**
                 * Short circuit is detected
                 */
                shortCircuit: BitFlag;
                /**
                 * The available current has been exceeded
                 */
                currentExceeded: BitFlag;
            }>, any>;
        };
        readonly commands: {
            /**
             * This command is used to set the valve to its open position.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 4.6.8.1
             */
            readonly open: Command<import("../tlv/TlvObject.js").TypeFromFields<{
                /**
                 * This field shall indicate the duration that the valve will remain open for this specific Open command.
                 *
                 * A value of null shall indicate the duration is not set, meaning that the valve will remain open until closed
                 * by the user or some other automation.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 4.6.8.1.1
                 */
                openDuration: import("../tlv/TlvObject.js").OptionalFieldType<number | null>;
                /**
                 * This field shall indicate the target level used for this specific Open command.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 4.6.8.1.2
                 */
                targetLevel: import("../tlv/TlvObject.js").OptionalFieldType<number>;
            }>, void, any>;
            /**
             * This command is used to set the valve to its closed position.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 4.6.8.2
             */
            readonly close: Command<void, void, any>;
        };
        readonly events: {
            /**
             * This event shall be generated when the valve state changed. For level changes, after the end of movement,
             * for state changes when the new state has been reached.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 4.6.9.1
             */
            readonly valveStateChanged: OptionalEvent<import("../tlv/TlvObject.js").TypeFromFields<{
                /**
                 * This field shall indicate the new state of the valve.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 4.6.9.1.1
                 */
                valveState: import("../tlv/TlvObject.js").FieldType<ValveState>;
                /**
                 * This field shall indicate the new level of the valve.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 4.6.9.1.2
                 */
                valveLevel: import("../tlv/TlvObject.js").OptionalFieldType<number>;
            }>, any>;
            /**
             * This event shall be generated when the valve registers or clears a fault, e.g. not being able to
             * transition to the requested target level or state.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 4.6.9.2
             */
            readonly valveFault: OptionalEvent<import("../tlv/TlvObject.js").TypeFromFields<{
                /**
                 * This field shall indicate the value of the ValveFault attribute, at the time this event is generated.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 4.6.9.2.1
                 */
                valveFault: import("../tlv/TlvObject.js").FieldType<import("../schema/BitmapSchema.js").TypeFromPartialBitSchema<{
                    /**
                     * Unspecified fault detected
                     */
                    generalFault: BitFlag;
                    /**
                     * Valve is blocked
                     */
                    blocked: BitFlag;
                    /**
                     * Valve has detected a leak
                     */
                    leaking: BitFlag;
                    /**
                     * No valve is connected to controller
                     */
                    notConnected: BitFlag;
                    /**
                     * Short circuit is detected
                     */
                    shortCircuit: BitFlag;
                    /**
                     * The available current has been exceeded
                     */
                    currentExceeded: BitFlag;
                }>>;
            }>, any>;
        };
        /**
         * This metadata controls which ValveConfigurationAndControlCluster elements matter.js activates for specific
         * feature combinations.
         */
        readonly extensions: readonly [{
            readonly flags: {
                readonly timeSync: true;
            };
            readonly component: {
                readonly attributes: {
                    /**
                     * Indicates the UTC time when the valve will close, depending on value of the OpenDuration attribute.
                     *
                     * Null:
                     *
                     *   - When OpenDuration is null, or
                     *
                     *   - When the valve does not have a synchronized UTCTime in the Time Synchronization cluster, or
                     *
                     *   - When the valve is closed.
                     *
                     * When the value of this attribute is earlier or equal to the current UTC time, the valve shall
                     * automatically transition to its closed position. The behavior of transitioning to the closed position,
                     * shall match the behavior described in the Close command.
                     *
                     * If this attribute is not null and the Time Synchronization cluster receives a SetUTCTime command,
                     * modifying the current UTC time of the device, the value of this attribute shall be adjusted to match the
                     * new UTC time plus the value of the RemainingDuration attribute.
                     *
                     * @see {@link MatterSpecification.v142.Cluster} § 4.6.7.3
                     */
                    readonly autoCloseTime: Attribute<number | bigint | null, any>;
                };
            };
        }, {
            readonly flags: {
                readonly level: true;
            };
            readonly component: {
                readonly attributes: {
                    /**
                     * Indicates the current level of the valve as a percentage value, between fully closed and fully open.
                     * During a transition from one level to another level, the valve SHOULD keep this attribute updated to the
                     * best of its ability, in order to represent the actual level of the valve during the movement.
                     *
                     * A value of 100 percent shall indicate the fully open position.
                     *
                     * A value of 0 percent shall indicate the fully closed position.
                     *
                     * A value of null shall indicate that the current state is not known.
                     *
                     * @see {@link MatterSpecification.v142.Cluster} § 4.6.7.7
                     */
                    readonly currentLevel: Attribute<number | null, any>;
                    /**
                     * Indicates the target level of the valve as a percentage value, between fully closed and fully open.
                     *
                     * The interpretation of the percentage value is the same as for the CurrentLevel attribute.
                     *
                     * A value of null shall indicate that no target position is set, since the change of level is either done
                     * or failed.
                     *
                     * @see {@link MatterSpecification.v142.Cluster} § 4.6.7.8
                     */
                    readonly targetLevel: Attribute<number | null, any>;
                    /**
                     * Indicates the default value used for the TargetLevel attribute, when a valve transitions from the closed
                     * to the open state, caused by an Open command, if a TargetLevel field is not present in the Open command.
                     *
                     * If the LevelStep attribute is present and the value of a write interaction to this attribute field is not
                     * 100, the value shall be a supported value as defined by the LevelStep attribute, such that (Value
                     * received in the write interaction) % (Value of LevelStep attribute) equals 0. If the resulting value is
                     * not 0, the requested DefaultOpenLevel value is considered an unsupported value and a CONSTRAINT_ERROR
                     * status shall be returned.
                     *
                     * @see {@link MatterSpecification.v142.Cluster} § 4.6.7.9
                     */
                    readonly defaultOpenLevel: OptionalWritableAttribute<number, any>;
                    /**
                     * Indicates the step size the valve can support.
                     *
                     * The step size defined by this attribute is counted from 0 and the final step towards 100 may be different
                     * than what is defined in this attribute. For example, if the value of this attribute is 15, it results in
                     * these target values being supported; 0, 15, 30, 45, 60, 75, 90 and 100.
                     *
                     * The values of 0 and 100 shall always be supported, regardless of the value of this attribute.
                     *
                     * @see {@link MatterSpecification.v142.Cluster} § 4.6.7.11
                     */
                    readonly levelStep: OptionalFixedAttribute<number, any>;
                };
            };
        }];
    };
    /**
     * @see {@link Cluster}
     */
    const ClusterInstance: MutableCluster<{
        readonly id: 129;
        readonly name: "ValveConfigurationAndControl";
        readonly revision: 1;
        readonly features: {
            /**
             * This feature shall indicate that the valve uses Time Synchronization and UTC time to indicate duration
             * and auto close time.
             *
             * This feature shall NOT be supported unless the device supports the Time Synchronization cluster.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 4.6.4.1
             */
            readonly timeSync: BitFlag;
            /**
             * This feature shall indicate that the valve is capable of being adjusted to a specific position, as a
             * percentage, of its full range of motion.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 4.6.4.2
             */
            readonly level: BitFlag;
        };
        readonly attributes: {
            /**
             * Indicates the total duration, in seconds, for which the valve will remain open for this current opening.
             *
             * A value of null shall indicate the duration is not set, meaning that the valve will remain open until
             * closed by the user or some other automation.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 4.6.7.1
             */
            readonly openDuration: Attribute<number | null, any>;
            /**
             * Indicates the default duration, in seconds, for which the valve will remain open, if the OpenDuration
             * field is not present in the Open command.
             *
             * A value of null shall indicate the duration is not set, meaning that the valve will remain open until
             * closed by the user or some other automation.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 4.6.7.2
             */
            readonly defaultOpenDuration: WritableAttribute<number | null, any>;
            /**
             * Indicates the remaining duration, in seconds, until the valve closes.
             *
             * Null:
             *
             *   - When OpenDuration is null, or
             *
             *   - When the valve is closed.
             *
             * The value of this attribute shall only be reported in the following cases:
             *
             *   - When it changes from null to any other value and vice versa, or
             *
             *   - When it changes to 0, or
             *
             *   - When it increases, or
             *
             *   - When the closing time changes.
             *
             * Meaning that clients SHOULD NOT rely on the reporting of this attribute in order to keep track of the
             * remaining duration, due to this attribute not being reported during regular countdown.
             *
             * When reading this attribute it shall return the remaining duration, in seconds, until the valve closes.
             *
             * When the value of this attribute counts down to 0, the valve shall automatically transition to its closed
             * position. The behavior of transitioning to the closed position shall match the behavior described in the
             * Close command.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 4.6.7.4
             */
            readonly remainingDuration: Attribute<number | null, any>;
            /**
             * Indicates the current state of the valve.
             *
             * A value of null shall indicate that the current state is not known.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 4.6.7.5
             */
            readonly currentState: Attribute<ValveState | null, any>;
            /**
             * Indicates the target state, while changing the state, of the valve.
             *
             * A value of null shall indicate that no target position is set, since the change in state is either done
             * or failed.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 4.6.7.6
             */
            readonly targetState: Attribute<ValveState | null, any>;
            /**
             * Indicates any faults registered by the valve.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 4.6.7.10
             */
            readonly valveFault: OptionalAttribute<import("../schema/BitmapSchema.js").TypeFromPartialBitSchema<{
                /**
                 * Unspecified fault detected
                 */
                generalFault: BitFlag;
                /**
                 * Valve is blocked
                 */
                blocked: BitFlag;
                /**
                 * Valve has detected a leak
                 */
                leaking: BitFlag;
                /**
                 * No valve is connected to controller
                 */
                notConnected: BitFlag;
                /**
                 * Short circuit is detected
                 */
                shortCircuit: BitFlag;
                /**
                 * The available current has been exceeded
                 */
                currentExceeded: BitFlag;
            }>, any>;
        };
        readonly commands: {
            /**
             * This command is used to set the valve to its open position.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 4.6.8.1
             */
            readonly open: Command<import("../tlv/TlvObject.js").TypeFromFields<{
                /**
                 * This field shall indicate the duration that the valve will remain open for this specific Open command.
                 *
                 * A value of null shall indicate the duration is not set, meaning that the valve will remain open until closed
                 * by the user or some other automation.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 4.6.8.1.1
                 */
                openDuration: import("../tlv/TlvObject.js").OptionalFieldType<number | null>;
                /**
                 * This field shall indicate the target level used for this specific Open command.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 4.6.8.1.2
                 */
                targetLevel: import("../tlv/TlvObject.js").OptionalFieldType<number>;
            }>, void, any>;
            /**
             * This command is used to set the valve to its closed position.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 4.6.8.2
             */
            readonly close: Command<void, void, any>;
        };
        readonly events: {
            /**
             * This event shall be generated when the valve state changed. For level changes, after the end of movement,
             * for state changes when the new state has been reached.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 4.6.9.1
             */
            readonly valveStateChanged: OptionalEvent<import("../tlv/TlvObject.js").TypeFromFields<{
                /**
                 * This field shall indicate the new state of the valve.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 4.6.9.1.1
                 */
                valveState: import("../tlv/TlvObject.js").FieldType<ValveState>;
                /**
                 * This field shall indicate the new level of the valve.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 4.6.9.1.2
                 */
                valveLevel: import("../tlv/TlvObject.js").OptionalFieldType<number>;
            }>, any>;
            /**
             * This event shall be generated when the valve registers or clears a fault, e.g. not being able to
             * transition to the requested target level or state.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 4.6.9.2
             */
            readonly valveFault: OptionalEvent<import("../tlv/TlvObject.js").TypeFromFields<{
                /**
                 * This field shall indicate the value of the ValveFault attribute, at the time this event is generated.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 4.6.9.2.1
                 */
                valveFault: import("../tlv/TlvObject.js").FieldType<import("../schema/BitmapSchema.js").TypeFromPartialBitSchema<{
                    /**
                     * Unspecified fault detected
                     */
                    generalFault: BitFlag;
                    /**
                     * Valve is blocked
                     */
                    blocked: BitFlag;
                    /**
                     * Valve has detected a leak
                     */
                    leaking: BitFlag;
                    /**
                     * No valve is connected to controller
                     */
                    notConnected: BitFlag;
                    /**
                     * Short circuit is detected
                     */
                    shortCircuit: BitFlag;
                    /**
                     * The available current has been exceeded
                     */
                    currentExceeded: BitFlag;
                }>>;
            }>, any>;
        };
        /**
         * This metadata controls which ValveConfigurationAndControlCluster elements matter.js activates for specific
         * feature combinations.
         */
        readonly extensions: readonly [{
            readonly flags: {
                readonly timeSync: true;
            };
            readonly component: {
                readonly attributes: {
                    /**
                     * Indicates the UTC time when the valve will close, depending on value of the OpenDuration attribute.
                     *
                     * Null:
                     *
                     *   - When OpenDuration is null, or
                     *
                     *   - When the valve does not have a synchronized UTCTime in the Time Synchronization cluster, or
                     *
                     *   - When the valve is closed.
                     *
                     * When the value of this attribute is earlier or equal to the current UTC time, the valve shall
                     * automatically transition to its closed position. The behavior of transitioning to the closed position,
                     * shall match the behavior described in the Close command.
                     *
                     * If this attribute is not null and the Time Synchronization cluster receives a SetUTCTime command,
                     * modifying the current UTC time of the device, the value of this attribute shall be adjusted to match the
                     * new UTC time plus the value of the RemainingDuration attribute.
                     *
                     * @see {@link MatterSpecification.v142.Cluster} § 4.6.7.3
                     */
                    readonly autoCloseTime: Attribute<number | bigint | null, any>;
                };
            };
        }, {
            readonly flags: {
                readonly level: true;
            };
            readonly component: {
                readonly attributes: {
                    /**
                     * Indicates the current level of the valve as a percentage value, between fully closed and fully open.
                     * During a transition from one level to another level, the valve SHOULD keep this attribute updated to the
                     * best of its ability, in order to represent the actual level of the valve during the movement.
                     *
                     * A value of 100 percent shall indicate the fully open position.
                     *
                     * A value of 0 percent shall indicate the fully closed position.
                     *
                     * A value of null shall indicate that the current state is not known.
                     *
                     * @see {@link MatterSpecification.v142.Cluster} § 4.6.7.7
                     */
                    readonly currentLevel: Attribute<number | null, any>;
                    /**
                     * Indicates the target level of the valve as a percentage value, between fully closed and fully open.
                     *
                     * The interpretation of the percentage value is the same as for the CurrentLevel attribute.
                     *
                     * A value of null shall indicate that no target position is set, since the change of level is either done
                     * or failed.
                     *
                     * @see {@link MatterSpecification.v142.Cluster} § 4.6.7.8
                     */
                    readonly targetLevel: Attribute<number | null, any>;
                    /**
                     * Indicates the default value used for the TargetLevel attribute, when a valve transitions from the closed
                     * to the open state, caused by an Open command, if a TargetLevel field is not present in the Open command.
                     *
                     * If the LevelStep attribute is present and the value of a write interaction to this attribute field is not
                     * 100, the value shall be a supported value as defined by the LevelStep attribute, such that (Value
                     * received in the write interaction) % (Value of LevelStep attribute) equals 0. If the resulting value is
                     * not 0, the requested DefaultOpenLevel value is considered an unsupported value and a CONSTRAINT_ERROR
                     * status shall be returned.
                     *
                     * @see {@link MatterSpecification.v142.Cluster} § 4.6.7.9
                     */
                    readonly defaultOpenLevel: OptionalWritableAttribute<number, any>;
                    /**
                     * Indicates the step size the valve can support.
                     *
                     * The step size defined by this attribute is counted from 0 and the final step towards 100 may be different
                     * than what is defined in this attribute. For example, if the value of this attribute is 15, it results in
                     * these target values being supported; 0, 15, 30, 45, 60, 75, 90 and 100.
                     *
                     * The values of 0 and 100 shall always be supported, regardless of the value of this attribute.
                     *
                     * @see {@link MatterSpecification.v142.Cluster} § 4.6.7.11
                     */
                    readonly levelStep: OptionalFixedAttribute<number, any>;
                };
            };
        }];
    }, []>;
    /**
     * This cluster is used to configure a valve.
     *
     * ValveConfigurationAndControlCluster supports optional features that you can enable with the
     * ValveConfigurationAndControlCluster.with() factory method.
     *
     * @see {@link MatterSpecification.v142.Cluster} § 4.6
     */
    interface Cluster extends Identity<typeof ClusterInstance> {
    }
    const Cluster: Cluster;
    /**
     * @see {@link Complete}
     */
    const CompleteInstance: MutableCluster<{
        readonly id: import("#general").Branded<129, "ClusterId">;
        readonly name: "ValveConfigurationAndControl";
        readonly revision: 1;
        readonly features: {
            /**
             * This feature shall indicate that the valve uses Time Synchronization and UTC time to indicate duration
             * and auto close time.
             *
             * This feature shall NOT be supported unless the device supports the Time Synchronization cluster.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 4.6.4.1
             */
            readonly timeSync: BitFlag;
            /**
             * This feature shall indicate that the valve is capable of being adjusted to a specific position, as a
             * percentage, of its full range of motion.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 4.6.4.2
             */
            readonly level: BitFlag;
        };
        readonly attributes: {
            readonly autoCloseTime: Attribute<number | bigint | null, any> & {
                readonly optional: true;
                readonly isConditional: true;
                readonly optionalIf: [] | import("../cluster/Cluster.js").ConditionalFeatureList<import("../schema/BitmapSchema.js").BitSchema>;
                readonly mandatoryIf: [] | [{
                    timeSync: boolean;
                }];
            };
            readonly currentLevel: Attribute<number | null, any> & {
                readonly optional: true;
                readonly isConditional: true;
                readonly optionalIf: [] | import("../cluster/Cluster.js").ConditionalFeatureList<import("../schema/BitmapSchema.js").BitSchema>;
                readonly mandatoryIf: [] | [{
                    level: boolean;
                }];
            };
            readonly targetLevel: Attribute<number | null, any> & {
                readonly optional: true;
                readonly isConditional: true;
                readonly optionalIf: [] | import("../cluster/Cluster.js").ConditionalFeatureList<import("../schema/BitmapSchema.js").BitSchema>;
                readonly mandatoryIf: [] | [{
                    level: boolean;
                }];
            };
            readonly defaultOpenLevel: OptionalWritableAttribute<number, any> & {
                readonly optional: true;
                readonly isConditional: true;
                readonly optionalIf: [] | [{
                    level: boolean;
                }];
                readonly mandatoryIf: [] | import("../cluster/Cluster.js").ConditionalFeatureList<import("../schema/BitmapSchema.js").BitSchema>;
            };
            readonly levelStep: OptionalFixedAttribute<number, any> & {
                readonly optional: true;
                readonly isConditional: true;
                readonly optionalIf: [] | [{
                    level: boolean;
                }];
                readonly mandatoryIf: [] | import("../cluster/Cluster.js").ConditionalFeatureList<import("../schema/BitmapSchema.js").BitSchema>;
            };
            readonly openDuration: Attribute<number | null, any>;
            readonly defaultOpenDuration: WritableAttribute<number | null, any>;
            readonly remainingDuration: Attribute<number | null, any>;
            readonly currentState: Attribute<ValveState | null, any>;
            readonly targetState: Attribute<ValveState | null, any>;
            readonly valveFault: OptionalAttribute<import("../schema/BitmapSchema.js").TypeFromPartialBitSchema<{
                /**
                 * Unspecified fault detected
                 */
                generalFault: BitFlag;
                /**
                 * Valve is blocked
                 */
                blocked: BitFlag;
                /**
                 * Valve has detected a leak
                 */
                leaking: BitFlag;
                /**
                 * No valve is connected to controller
                 */
                notConnected: BitFlag;
                /**
                 * Short circuit is detected
                 */
                shortCircuit: BitFlag;
                /**
                 * The available current has been exceeded
                 */
                currentExceeded: BitFlag;
            }>, any>;
            readonly clusterRevision: Attribute<number, never>;
            readonly featureMap: Attribute<import("../schema/BitmapSchema.js").TypeFromPartialBitSchema<{
                /**
                 * This feature shall indicate that the valve uses Time Synchronization and UTC time to indicate duration
                 * and auto close time.
                 *
                 * This feature shall NOT be supported unless the device supports the Time Synchronization cluster.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 4.6.4.1
                 */
                readonly timeSync: BitFlag;
                /**
                 * This feature shall indicate that the valve is capable of being adjusted to a specific position, as a
                 * percentage, of its full range of motion.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 4.6.4.2
                 */
                readonly level: BitFlag;
            }>, never>;
            readonly attributeList: Attribute<import("../index.js").AttributeId[], never>;
            readonly acceptedCommandList: Attribute<import("../index.js").CommandId[], never>;
            readonly generatedCommandList: Attribute<import("../index.js").CommandId[], never>;
        };
        readonly commands: {
            /**
             * This command is used to set the valve to its open position.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 4.6.8.1
             */
            readonly open: Command<import("../tlv/TlvObject.js").TypeFromFields<{
                /**
                 * This field shall indicate the duration that the valve will remain open for this specific Open command.
                 *
                 * A value of null shall indicate the duration is not set, meaning that the valve will remain open until closed
                 * by the user or some other automation.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 4.6.8.1.1
                 */
                openDuration: import("../tlv/TlvObject.js").OptionalFieldType<number | null>;
                /**
                 * This field shall indicate the target level used for this specific Open command.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 4.6.8.1.2
                 */
                targetLevel: import("../tlv/TlvObject.js").OptionalFieldType<number>;
            }>, void, any>;
            /**
             * This command is used to set the valve to its closed position.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 4.6.8.2
             */
            readonly close: Command<void, void, any>;
        };
        readonly events: {
            /**
             * This event shall be generated when the valve state changed. For level changes, after the end of movement,
             * for state changes when the new state has been reached.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 4.6.9.1
             */
            readonly valveStateChanged: OptionalEvent<import("../tlv/TlvObject.js").TypeFromFields<{
                /**
                 * This field shall indicate the new state of the valve.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 4.6.9.1.1
                 */
                valveState: import("../tlv/TlvObject.js").FieldType<ValveState>;
                /**
                 * This field shall indicate the new level of the valve.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 4.6.9.1.2
                 */
                valveLevel: import("../tlv/TlvObject.js").OptionalFieldType<number>;
            }>, any>;
            /**
             * This event shall be generated when the valve registers or clears a fault, e.g. not being able to
             * transition to the requested target level or state.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 4.6.9.2
             */
            readonly valveFault: OptionalEvent<import("../tlv/TlvObject.js").TypeFromFields<{
                /**
                 * This field shall indicate the value of the ValveFault attribute, at the time this event is generated.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 4.6.9.2.1
                 */
                valveFault: import("../tlv/TlvObject.js").FieldType<import("../schema/BitmapSchema.js").TypeFromPartialBitSchema<{
                    /**
                     * Unspecified fault detected
                     */
                    generalFault: BitFlag;
                    /**
                     * Valve is blocked
                     */
                    blocked: BitFlag;
                    /**
                     * Valve has detected a leak
                     */
                    leaking: BitFlag;
                    /**
                     * No valve is connected to controller
                     */
                    notConnected: BitFlag;
                    /**
                     * Short circuit is detected
                     */
                    shortCircuit: BitFlag;
                    /**
                     * The available current has been exceeded
                     */
                    currentExceeded: BitFlag;
                }>>;
            }>, any>;
        };
    }, []>;
    /**
     * This cluster supports all ValveConfigurationAndControl features. It may support illegal feature combinations.
     *
     * If you use this cluster you must manually specify which features are active and ensure the set of active features
     * is legal per the Matter specification.
     */
    interface Complete extends Identity<typeof CompleteInstance> {
    }
    const Complete: Complete;
}
export type ValveConfigurationAndControlCluster = ValveConfigurationAndControl.Cluster;
export declare const ValveConfigurationAndControlCluster: ValveConfigurationAndControl.Cluster;
//# sourceMappingURL=valve-configuration-and-control.d.ts.map