/**
 * @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 { OptionalFixedAttribute, OptionalWritableAttribute, Attribute, OptionalEvent, Event } from "../cluster/Cluster.js";
import { BasicInformation } from "./basic-information.js";
import { TypeFromSchema } from "../tlv/TlvSchema.js";
import { Identity } from "#general";
export declare namespace BridgedDeviceBasicInformation {
    /**
     * Body of the BridgedDeviceBasicInformation startUp event
     *
     * @see {@link MatterSpecification.v13.Core} § 9.13.5
     */
    const TlvStartUpEvent: import("../tlv/TlvObject.js").ObjectSchema<{
        /**
         * This field shall be set to the same value as the one available in the SoftwareVersion attribute.
         *
         * @see {@link MatterSpecification.v13.Core} § 11.1.6.1.1
         */
        softwareVersion: import("../tlv/TlvObject.js").FieldType<number>;
    }>;
    /**
     * Body of the BridgedDeviceBasicInformation startUp event
     *
     * @see {@link MatterSpecification.v13.Core} § 9.13.5
     */
    interface StartUpEvent extends TypeFromSchema<typeof TlvStartUpEvent> {
    }
    /**
     * Body of the BridgedDeviceBasicInformation reachableChanged event
     *
     * @see {@link MatterSpecification.v13.Core} § 9.13.5.2
     */
    const TlvReachableChangedEvent: import("../tlv/TlvObject.js").ObjectSchema<{
        /**
         * This field shall indicate the value of the Reachable attribute after it was changed.
         *
         * @see {@link MatterSpecification.v13.Core} § 11.1.6.4.1
         */
        reachableNewValue: import("../tlv/TlvObject.js").FieldType<boolean>;
    }>;
    /**
     * Body of the BridgedDeviceBasicInformation reachableChanged event
     *
     * @see {@link MatterSpecification.v13.Core} § 9.13.5.2
     */
    interface ReachableChangedEvent extends TypeFromSchema<typeof TlvReachableChangedEvent> {
    }
    /**
     * @see {@link Cluster}
     */
    const ClusterInstance: MutableCluster<{
        readonly id: 57;
        readonly name: "BridgedDeviceBasicInformation";
        readonly revision: 3;
        readonly attributes: {
            /**
             * @see {@link MatterSpecification.v13.Core} § 9.13.4
             */
            readonly vendorName: OptionalFixedAttribute<string, any>;
            /**
             * @see {@link MatterSpecification.v13.Core} § 9.13.4
             */
            readonly vendorId: OptionalFixedAttribute<import("../datatype/VendorId.js").VendorId, any>;
            /**
             * @see {@link MatterSpecification.v13.Core} § 9.13.4
             */
            readonly productName: OptionalFixedAttribute<string, any>;
            /**
             * @see {@link MatterSpecification.v13.Core} § 9.13.4
             */
            readonly nodeLabel: OptionalWritableAttribute<string, any>;
            /**
             * @see {@link MatterSpecification.v13.Core} § 9.13.4
             */
            readonly hardwareVersion: OptionalFixedAttribute<number, any>;
            /**
             * @see {@link MatterSpecification.v13.Core} § 9.13.4
             */
            readonly hardwareVersionString: OptionalFixedAttribute<string, any>;
            /**
             * @see {@link MatterSpecification.v13.Core} § 9.13.4
             */
            readonly softwareVersion: OptionalFixedAttribute<number, any>;
            /**
             * @see {@link MatterSpecification.v13.Core} § 9.13.4
             */
            readonly softwareVersionString: OptionalFixedAttribute<string, any>;
            /**
             * @see {@link MatterSpecification.v13.Core} § 9.13.4
             */
            readonly manufacturingDate: OptionalFixedAttribute<string, any>;
            /**
             * @see {@link MatterSpecification.v13.Core} § 9.13.4
             */
            readonly partNumber: OptionalFixedAttribute<string, any>;
            /**
             * @see {@link MatterSpecification.v13.Core} § 9.13.4
             */
            readonly productUrl: OptionalFixedAttribute<string, any>;
            /**
             * @see {@link MatterSpecification.v13.Core} § 9.13.4
             */
            readonly productLabel: OptionalFixedAttribute<string, any>;
            /**
             * @see {@link MatterSpecification.v13.Core} § 9.13.4
             */
            readonly serialNumber: OptionalFixedAttribute<string, any>;
            /**
             * @see {@link MatterSpecification.v13.Core} § 9.13.4
             */
            readonly reachable: Attribute<boolean, any>;
            /**
             * @see {@link MatterSpecification.v13.Core} § 9.13.4
             */
            readonly uniqueId: OptionalFixedAttribute<string, any>;
            /**
             * @see {@link MatterSpecification.v13.Core} § 9.13.4
             */
            readonly productAppearance: OptionalFixedAttribute<import("../tlv/TlvObject.js").TypeFromFields<{
                finish: import("../tlv/TlvObject.js").FieldType<BasicInformation.ProductFinish>;
                primaryColor: import("../tlv/TlvObject.js").FieldType<BasicInformation.Color | null>;
            }>, any>;
        };
        readonly events: {
            /**
             * @see {@link MatterSpecification.v13.Core} § 9.13.5
             */
            readonly startUp: OptionalEvent<import("../tlv/TlvObject.js").TypeFromFields<{
                /**
                 * This field shall be set to the same value as the one available in the SoftwareVersion attribute.
                 *
                 * @see {@link MatterSpecification.v13.Core} § 11.1.6.1.1
                 */
                softwareVersion: import("../tlv/TlvObject.js").FieldType<number>;
            }>, any>;
            /**
             * @see {@link MatterSpecification.v13.Core} § 9.13.5
             */
            readonly shutDown: OptionalEvent<void, any>;
            /**
             * The Leave event SHOULD be generated by the bridge when it detects that the associated device has left
             * the non-Matter network.
             *
             * NOTE
             *
             * The FabricIndex field has the X conformance, indicating it shall NOT be present. This event, in the
             * context of Bridged Device Basic Information cluster, has no usable fields, but the original Basic
             * Information cluster’s field definition is kept for completeness.
             *
             * @see {@link MatterSpecification.v13.Core} § 9.13.5.1
             */
            readonly leave: OptionalEvent<void, any>;
            /**
             * This event shall be generated when there is a change in the Reachable attribute. Its purpose is to
             * provide an indication towards interested parties that the reachability of a bridged device (over the
             * non-Matter network) has changed, so they may take appropriate action.
             *
             * After (re)start of a bridge this event may be generated.
             *
             * @see {@link MatterSpecification.v13.Core} § 9.13.5.2
             */
            readonly reachableChanged: Event<import("../tlv/TlvObject.js").TypeFromFields<{
                /**
                 * This field shall indicate the value of the Reachable attribute after it was changed.
                 *
                 * @see {@link MatterSpecification.v13.Core} § 11.1.6.4.1
                 */
                reachableNewValue: import("../tlv/TlvObject.js").FieldType<boolean>;
            }>, any>;
        };
    }, []>;
    /**
     * This Cluster serves two purposes towards a Node communicating with a Bridge:
     *
     *   • Indicate that the functionality on the Endpoint where it is placed (and its Parts) is bridged from a
     *     non-Matter technology, and
     *
     *   • Provide a centralized collection of attributes that the Node may collect to aid in conveying information
     *     regarding the Bridged Device to a user, such as the vendor name, the model name, or user-assigned name.
     *
     * This cluster shall be exposed by a Bridge on the Endpoint representing each Bridged Device. When the
     * functionality of a Bridged Device is represented using a set of Endpoints, this cluster shall only be exposed on
     * the Endpoint which is at the top of the hierarchy for the functionality of that Bridged Device.
     *
     * This cluster shall NOT be used on an endpoint that is not in the Descriptor cluster PartsList of an endpoint
     * with an Aggregator device type.
     *
     * This cluster has been derived from the Basic Information Cluster, and provides generic information about the
     * Bridged Device. Not all of the attributes in the Basic Information Cluster are relevant for a Bridged Device
     * (e.g. ProductID since it is not a Matter device). For other attributes, the information which is listed as
     * Mandatory for the Basic Information Cluster, may not be available when the Bridged Device does not provide it to
     * the Bridge, and the Bridge has no other means to determine it. For such cases where the information for a
     * particular attribute is not available, the Bridge SHOULD NOT include the attribute in the cluster for this
     * Bridged Device. See below for Conformance details.
     *
     * @see {@link MatterSpecification.v13.Core} § 9.13
     */
    interface Cluster extends Identity<typeof ClusterInstance> {
    }
    const Cluster: Cluster;
    const Complete: Cluster;
}
export type BridgedDeviceBasicInformationCluster = BridgedDeviceBasicInformation.Cluster;
export declare const BridgedDeviceBasicInformationCluster: BridgedDeviceBasicInformation.Cluster;
//# sourceMappingURL=bridged-device-basic-information.d.ts.map