/**
 * @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, OptionalAttribute, Command, Event, OptionalEvent } from "../cluster/Cluster.js";
import { OperationalState } from "./operational-state.js";
import { TypeFromSchema } from "../tlv/TlvSchema.js";
import { Identity } from "#general";
export declare namespace OvenCavityOperationalState {
    /**
     * @see {@link MatterSpecification.v142.Cluster} § 8.10.5
     */
    const TlvOperationalCommandResponse: import("../tlv/TlvObject.js").ObjectSchema<{
        /**
         * This shall indicate the success or otherwise of the attempted command invocation. On a successful invocation
         * of the attempted command, the ErrorStateID shall be populated with NoError. See the individual command
         * sections for additional specific requirements on population.
         *
         * @see {@link MatterSpecification.v142.Cluster} § 1.14.6.5.1
         */
        commandResponseState: import("../tlv/TlvObject.js").FieldType<import("../tlv/TlvObject.js").TypeFromFields<{
            errorStateId: import("../tlv/TlvObject.js").FieldType<OperationalState.ErrorState>;
            errorStateLabel: import("../tlv/TlvObject.js").OptionalFieldType<string>;
            errorStateDetails: import("../tlv/TlvObject.js").OptionalFieldType<string>;
        }>>;
    }>;
    /**
     * @see {@link MatterSpecification.v142.Cluster} § 8.10.5
     */
    interface OperationalCommandResponse extends TypeFromSchema<typeof TlvOperationalCommandResponse> {
    }
    /**
     * @see {@link Cluster}
     */
    const ClusterInstance: MutableCluster<{
        readonly id: 72;
        readonly name: "OvenCavityOperationalState";
        readonly revision: 2;
        readonly attributes: {
            /**
             * Indicates a list of names of different phases that the device can go through for the selected function or
             * mode. The list may not be in sequence order. For example in a washing machine this could include items
             * such as "pre-soak", "rinse", and "spin". These phases are manufacturer specific and may change when a
             * different function or mode is selected.
             *
             * A null value indicates that the device does not present phases during its operation. When this
             * attribute’s value is null, the CurrentPhase attribute shall also be set to null.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 1.14.5.1
             */
            readonly phaseList: Attribute<string[] | null, any>;
            /**
             * This attribute represents the current phase of operation being performed by the server. This shall be the
             * positional index representing the value from the set provided in the PhaseList Attribute, where the first
             * item in that list is an index of 0. Thus, this attribute shall have a maximum value that is
             * "length(PhaseList) - 1".
             *
             * Null if the PhaseList attribute is null or if the PhaseList attribute is an empty list.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 1.14.5.2
             */
            readonly currentPhase: Attribute<number | null, any>;
            /**
             * Indicates the estimated time left before the operation is completed, in seconds.
             *
             * A value of 0 (zero) means that the operation has completed.
             *
             * A value of null represents that there is no time currently defined until operation completion. This may
             * happen, for example, because no operation is in progress or because the completion time is unknown.
             *
             * Changes to this attribute shall only be marked as reportable in the following cases:
             *
             *   - If it has changed due to a change in the CurrentPhase or OperationalState attributes, or
             *
             *   - When it changes from 0 to any other value and vice versa, or
             *
             *   - When it changes from null to any other value and vice versa, or
             *
             *   - When it increases, or
             *
             *   - When there is any increase or decrease in the estimated time remaining that was due to progressing
             *     insight of the server’s control logic, or
             *
             *   - When it changes at a rate significantly different from one unit per second.
             *
             * Changes to this attribute merely due to the normal passage of time with no other dynamic change of device
             * state shall NOT be reported.
             *
             * As this attribute is not being reported during a regular countdown, clients SHOULD NOT rely on the
             * reporting of this attribute in order to keep track of the remaining duration.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 1.14.5.3
             */
            readonly countdownTime: OptionalAttribute<number | null, any>;
            /**
             * This attribute describes the set of possible operational states that the device exposes. An operational
             * state is a fundamental device state such as Running or Error. Details of the phase of a device when, for
             * example, in a state of Running are provided by the CurrentPhase attribute.
             *
             * All devices shall, at a minimum, expose the set of states matching the commands that are also supported
             * by the cluster instance, in addition to Error. The set of possible device states are defined in the
             * OperationalStateEnum. A device type requiring implementation of this cluster shall define the set of
             * states that are applicable to that specific device type.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 1.14.5.4
             */
            readonly operationalStateList: Attribute<import("../tlv/TlvObject.js").TypeFromFields<{
                operationalStateId: import("../tlv/TlvObject.js").FieldType<OperationalState.OperationalStateEnum>;
                operationalStateLabel: import("../tlv/TlvObject.js").OptionalFieldType<string>;
            }>[], any>;
            /**
             * This attribute specifies the current operational state of a device. This shall be populated with a valid
             * OperationalStateID from the set of values in the OperationalStateList Attribute.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 1.14.5.5
             */
            readonly operationalState: Attribute<OperationalState.OperationalStateEnum, any>;
            /**
             * This attribute shall specify the details of any current error condition being experienced on the device
             * when the OperationalState attribute is populated with Error. See Section 1.14.4.4, “ErrorStateStruct
             * Type” for general requirements on the population of this attribute.
             *
             * When there is no error detected, this shall have an ErrorStateID of NoError.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 1.14.5.6
             */
            readonly operationalError: Attribute<import("../tlv/TlvObject.js").TypeFromFields<{
                errorStateId: import("../tlv/TlvObject.js").FieldType<OperationalState.ErrorState>;
                errorStateLabel: import("../tlv/TlvObject.js").OptionalFieldType<string>;
                errorStateDetails: import("../tlv/TlvObject.js").OptionalFieldType<string>;
            }>, any>;
        };
        readonly commands: {
            /**
             * @see {@link MatterSpecification.v142.Cluster} § 8.10.5
             */
            readonly stop: Command<void, import("../tlv/TlvObject.js").TypeFromFields<{
                /**
                 * This shall indicate the success or otherwise of the attempted command invocation. On a successful invocation
                 * of the attempted command, the ErrorStateID shall be populated with NoError. See the individual command
                 * sections for additional specific requirements on population.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 1.14.6.5.1
                 */
                commandResponseState: import("../tlv/TlvObject.js").FieldType<import("../tlv/TlvObject.js").TypeFromFields<{
                    errorStateId: import("../tlv/TlvObject.js").FieldType<OperationalState.ErrorState>;
                    errorStateLabel: import("../tlv/TlvObject.js").OptionalFieldType<string>;
                    errorStateDetails: import("../tlv/TlvObject.js").OptionalFieldType<string>;
                }>>;
            }>, any>;
            /**
             * @see {@link MatterSpecification.v142.Cluster} § 8.10.5
             */
            readonly start: Command<void, import("../tlv/TlvObject.js").TypeFromFields<{
                /**
                 * This shall indicate the success or otherwise of the attempted command invocation. On a successful invocation
                 * of the attempted command, the ErrorStateID shall be populated with NoError. See the individual command
                 * sections for additional specific requirements on population.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 1.14.6.5.1
                 */
                commandResponseState: import("../tlv/TlvObject.js").FieldType<import("../tlv/TlvObject.js").TypeFromFields<{
                    errorStateId: import("../tlv/TlvObject.js").FieldType<OperationalState.ErrorState>;
                    errorStateLabel: import("../tlv/TlvObject.js").OptionalFieldType<string>;
                    errorStateDetails: import("../tlv/TlvObject.js").OptionalFieldType<string>;
                }>>;
            }>, any>;
        };
        readonly events: {
            /**
             * This event is generated when a reportable error condition is detected. A device that generates this event
             * shall also set the OperationalState attribute to Error, indicating an error condition.
             *
             * This event shall contain the following fields:
             *
             * @see {@link MatterSpecification.v142.Cluster} § 1.14.7.1
             */
            readonly operationalError: Event<import("../tlv/TlvObject.js").TypeFromFields<{
                errorState: import("../tlv/TlvObject.js").FieldType<import("../tlv/TlvObject.js").TypeFromFields<{
                    errorStateId: import("../tlv/TlvObject.js").FieldType<OperationalState.ErrorState>;
                    errorStateLabel: import("../tlv/TlvObject.js").OptionalFieldType<string>;
                    errorStateDetails: import("../tlv/TlvObject.js").OptionalFieldType<string>;
                }>>;
            }>, any>;
            /**
             * This event SHOULD be generated when the overall operation ends, successfully or otherwise. For example,
             * the completion of a cleaning operation in a Robot Vacuum Cleaner, or the completion of a wash cycle in a
             * Washing Machine.
             *
             * It is highly recommended that appliances device types employing the Operational State cluster support
             * this event, even if it is optional. This assists clients in executing automations or issuing
             * notifications at critical points in the device operation cycles.
             *
             * This event shall contain the following fields:
             *
             * @see {@link MatterSpecification.v142.Cluster} § 1.14.7.2
             */
            readonly operationCompletion: OptionalEvent<import("../tlv/TlvObject.js").TypeFromFields<{
                completionErrorCode: import("../tlv/TlvObject.js").FieldType<number>;
                totalOperationalTime: import("../tlv/TlvObject.js").OptionalFieldType<number | null>;
                pausedTime: import("../tlv/TlvObject.js").OptionalFieldType<number | null>;
            }>, any>;
        };
    }, []>;
    /**
     * This cluster is derived from the Operational State cluster and provides an interface for monitoring the
     * operational state of an oven.
     *
     * @see {@link MatterSpecification.v142.Cluster} § 8.10
     */
    interface Cluster extends Identity<typeof ClusterInstance> {
    }
    const Cluster: Cluster;
    const Complete: Cluster;
}
export type OvenCavityOperationalStateCluster = OvenCavityOperationalState.Cluster;
export declare const OvenCavityOperationalStateCluster: OvenCavityOperationalState.Cluster;
//# sourceMappingURL=oven-cavity-operational-state.d.ts.map