/**
 * @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 { WritableAttribute, Attribute, FixedAttribute, Command } from "../cluster/Cluster.js";
import { TypeFromSchema } from "../tlv/TlvSchema.js";
import { Identity } from "#general";
export declare namespace ThreadNetworkDirectory {
    /**
     * Represents the data associated with a Thread Network.
     *
     * @see {@link MatterSpecification.v142.Cluster} § 10.4.4.1
     */
    const TlvThreadNetwork: import("../tlv/TlvObject.js").ObjectSchema<{
        /**
         * This field shall indicate the Extended PAN ID from the OperationalDataset for the given Thread network.
         *
         * @see {@link MatterSpecification.v142.Cluster} § 10.4.4.1.1
         */
        extendedPanId: import("../tlv/TlvObject.js").FieldType<AllowSharedBufferSource>;
        /**
         * This field shall indicate the Network Name from the OperationalDataset for the given Thread network.
         *
         * @see {@link MatterSpecification.v142.Cluster} § 10.4.4.1.2
         */
        networkName: import("../tlv/TlvObject.js").FieldType<string>;
        /**
         * This field shall indicate the Channel from the OperationalDataset for the given Thread network.
         *
         * @see {@link MatterSpecification.v142.Cluster} § 10.4.4.1.3
         */
        channel: import("../tlv/TlvObject.js").FieldType<number>;
        /**
         * This field shall indicate the Active Timestamp from the OperationalDataset for the given Thread network.
         *
         * @see {@link MatterSpecification.v142.Cluster} § 10.4.4.1.4
         */
        activeTimestamp: import("../tlv/TlvObject.js").FieldType<number | bigint>;
    }>;
    /**
     * Represents the data associated with a Thread Network.
     *
     * @see {@link MatterSpecification.v142.Cluster} § 10.4.4.1
     */
    interface ThreadNetwork extends TypeFromSchema<typeof TlvThreadNetwork> {
    }
    /**
     * Input to the ThreadNetworkDirectory addNetwork command
     *
     * @see {@link MatterSpecification.v142.Cluster} § 10.4.6.1
     */
    const TlvAddNetworkRequest: import("../tlv/TlvObject.js").ObjectSchema<{
        /**
         * This field shall represent the Operational Dataset for the network, using the encoding defined in the Thread
         * specification. It shall contain at least the following sub-TLVs: Active Timestamp, Channel, Channel Mask,
         * Extended PAN ID, Network Key, Network Mesh-Local Prefix, Network Name, PAN ID, PSKc, and Security Policy.
         *
         * @see {@link MatterSpecification.v142.Cluster} § 10.4.6.1.1
         */
        operationalDataset: import("../tlv/TlvObject.js").FieldType<AllowSharedBufferSource>;
    }>;
    /**
     * Input to the ThreadNetworkDirectory addNetwork command
     *
     * @see {@link MatterSpecification.v142.Cluster} § 10.4.6.1
     */
    interface AddNetworkRequest extends TypeFromSchema<typeof TlvAddNetworkRequest> {
    }
    /**
     * Input to the ThreadNetworkDirectory removeNetwork command
     *
     * @see {@link MatterSpecification.v142.Cluster} § 10.4.6.2
     */
    const TlvRemoveNetworkRequest: import("../tlv/TlvObject.js").ObjectSchema<{
        extendedPanId: import("../tlv/TlvObject.js").FieldType<AllowSharedBufferSource>;
    }>;
    /**
     * Input to the ThreadNetworkDirectory removeNetwork command
     *
     * @see {@link MatterSpecification.v142.Cluster} § 10.4.6.2
     */
    interface RemoveNetworkRequest extends TypeFromSchema<typeof TlvRemoveNetworkRequest> {
    }
    /**
     * Input to the ThreadNetworkDirectory getOperationalDataset command
     *
     * @see {@link MatterSpecification.v142.Cluster} § 10.4.6.3
     */
    const TlvGetOperationalDatasetRequest: import("../tlv/TlvObject.js").ObjectSchema<{
        extendedPanId: import("../tlv/TlvObject.js").FieldType<AllowSharedBufferSource>;
    }>;
    /**
     * Input to the ThreadNetworkDirectory getOperationalDataset command
     *
     * @see {@link MatterSpecification.v142.Cluster} § 10.4.6.3
     */
    interface GetOperationalDatasetRequest extends TypeFromSchema<typeof TlvGetOperationalDatasetRequest> {
    }
    /**
     * Contains the Thread Operational Dataset for the Extended PAN specified in GetOperationalDataset.
     *
     * @see {@link MatterSpecification.v142.Cluster} § 10.4.6.4
     */
    const TlvOperationalDatasetResponse: import("../tlv/TlvObject.js").ObjectSchema<{
        operationalDataset: import("../tlv/TlvObject.js").FieldType<AllowSharedBufferSource>;
    }>;
    /**
     * Contains the Thread Operational Dataset for the Extended PAN specified in GetOperationalDataset.
     *
     * @see {@link MatterSpecification.v142.Cluster} § 10.4.6.4
     */
    interface OperationalDatasetResponse extends TypeFromSchema<typeof TlvOperationalDatasetResponse> {
    }
    /**
     * @see {@link Cluster}
     */
    const ClusterInstance: MutableCluster<{
        readonly id: 1107;
        readonly name: "ThreadNetworkDirectory";
        readonly revision: 1;
        readonly attributes: {
            /**
             * Indicates the Thread Extended PAN ID value for the Thread network designated by the user to be their
             * preferred network for commissioning of Thread devices. If not null, the value of this attribute shall
             * match the ExtendedPanID of a network in the ThreadNetworks attribute. A write operation with a non-null
             * value that does not match any network in the ThreadNetworks list shall be rejected with a status of
             * CONSTRAINT_ERROR.
             *
             * The purpose of designating one Thread network as preferred is to help a commissioner to select a Thread
             * network when a Thread device is within suitable range of more than one Thread network which appears in
             * the ThreadNetworks list. A value of null indicates that there is no current preferred network: All
             * networks may be treated as equally preferred by a commissioner with access to this cluster.
             *
             * This attribute may be automatically set to the ExtendedPanID of the first Thread network added to the
             * ThreadNetworks list.
             *
             * A client shall obtain user consent before changing the value of this attribute from a non-null value.
             *
             * On a factory reset this attribute shall be reset to null.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 10.4.5.1
             */
            readonly preferredExtendedPanId: WritableAttribute<AllowSharedBufferSource | null, any>;
            /**
             * Indicates the list of Thread Networks known about by this cluster. If the node hosting this cluster
             * includes a Thread Border Router, then an entry for its Thread Network shall be included in this list.
             *
             * The list can be modified via the AddNetwork and RemoveNetwork commands.
             *
             * For each entry in the list, the cluster server also stores a Thread Operational Dataset. Clients use the
             * GetOperationalDataset command to obtain the Operational Dataset for an entry in this list.
             *
             * On a factory reset this list shall be cleared, and any Thread Operational datasets previously stored
             * shall be removed from the Node.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 10.4.5.2
             */
            readonly threadNetworks: Attribute<import("../tlv/TlvObject.js").TypeFromFields<{
                /**
                 * This field shall indicate the Extended PAN ID from the OperationalDataset for the given Thread network.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 10.4.4.1.1
                 */
                extendedPanId: import("../tlv/TlvObject.js").FieldType<AllowSharedBufferSource>;
                /**
                 * This field shall indicate the Network Name from the OperationalDataset for the given Thread network.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 10.4.4.1.2
                 */
                networkName: import("../tlv/TlvObject.js").FieldType<string>;
                /**
                 * This field shall indicate the Channel from the OperationalDataset for the given Thread network.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 10.4.4.1.3
                 */
                channel: import("../tlv/TlvObject.js").FieldType<number>;
                /**
                 * This field shall indicate the Active Timestamp from the OperationalDataset for the given Thread network.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 10.4.4.1.4
                 */
                activeTimestamp: import("../tlv/TlvObject.js").FieldType<number | bigint>;
            }>[], any>;
            /**
             * Indicates the maximum number of entries that can be held in the ThreadNetworks list; it shall be at least
             * 2 times the number of SupportedFabrics advertised in the Operational Credentials Cluster on the root
             * endpoint of this node.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 10.4.5.3
             */
            readonly threadNetworkTableSize: FixedAttribute<number, any>;
        };
        readonly commands: {
            /**
             * Adds an entry to the ThreadNetworks attribute with the specified Thread Operational Dataset.
             *
             * If there is an existing entry with the Extended PAN ID then the Thread Operational Dataset for that entry
             * is replaced. As a result, changes to the network parameters (e.g. Channel, Network Name, PSKc, …) of an
             * existing entry with a given Extended PAN ID can be made using this command.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 10.4.6.1
             */
            readonly addNetwork: Command<import("../tlv/TlvObject.js").TypeFromFields<{
                /**
                 * This field shall represent the Operational Dataset for the network, using the encoding defined in the Thread
                 * specification. It shall contain at least the following sub-TLVs: Active Timestamp, Channel, Channel Mask,
                 * Extended PAN ID, Network Key, Network Mesh-Local Prefix, Network Name, PAN ID, PSKc, and Security Policy.
                 *
                 * @see {@link MatterSpecification.v142.Cluster} § 10.4.6.1.1
                 */
                operationalDataset: import("../tlv/TlvObject.js").FieldType<AllowSharedBufferSource>;
            }>, void, any>;
            /**
             * Removes the network with the given Extended PAN ID from the ThreadNetworks attribute.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 10.4.6.2
             */
            readonly removeNetwork: Command<import("../tlv/TlvObject.js").TypeFromFields<{
                extendedPanId: import("../tlv/TlvObject.js").FieldType<AllowSharedBufferSource>;
            }>, void, any>;
            /**
             * Retrieves the Thread Operational Dataset with the given Extended PAN ID.
             *
             * @see {@link MatterSpecification.v142.Cluster} § 10.4.6.3
             */
            readonly getOperationalDataset: Command<import("../tlv/TlvObject.js").TypeFromFields<{
                extendedPanId: import("../tlv/TlvObject.js").FieldType<AllowSharedBufferSource>;
            }>, import("../tlv/TlvObject.js").TypeFromFields<{
                operationalDataset: import("../tlv/TlvObject.js").FieldType<AllowSharedBufferSource>;
            }>, any>;
        };
    }, []>;
    /**
     * This cluster stores a list of Thread networks (including the credentials required to access each network), as
     * well as a designation of the user’s preferred network, to facilitate the sharing of Thread networks across
     * fabrics.
     *
     * @see {@link MatterSpecification.v142.Cluster} § 10.4
     */
    interface Cluster extends Identity<typeof ClusterInstance> {
    }
    const Cluster: Cluster;
    const Complete: Cluster;
}
export type ThreadNetworkDirectoryCluster = ThreadNetworkDirectory.Cluster;
export declare const ThreadNetworkDirectoryCluster: ThreadNetworkDirectory.Cluster;
//# sourceMappingURL=thread-network-directory.d.ts.map