/**
 * @license
 * Copyright 2022-2025 Matter.js Authors
 * SPDX-License-Identifier: Apache-2.0
 */
import { MutableCluster } from "../cluster/mutation/MutableCluster.js";
import { FixedAttribute, Command } from "../cluster/Cluster.js";
import { TlvArray } from "../tlv/TlvArray.js";
import { TlvField, TlvObject } from "../tlv/TlvObject.js";
import { TlvNodeId } from "../datatype/NodeId.js";
import { TlvNoArguments } from "../tlv/TlvNoArguments.js";
import { ClusterRegistry } from "../cluster/ClusterRegistry.js";
var ValidProxies;
((ValidProxies2) => {
  ValidProxies2.TlvValidProxy = TlvObject({ nodeId: TlvField(1, TlvNodeId) });
  ValidProxies2.TlvGetValidProxiesResponse = TlvObject({ proxyNodeIdList: TlvField(0, TlvArray(TlvNodeId)) });
  ValidProxies2.ClusterInstance = MutableCluster({
    id: 68,
    name: "ValidProxies",
    revision: 1,
    attributes: {
      /**
       * List of valid proxies that can proxy this Node. Each entry in this list is fabric-scoped.
       *
       * @see {@link MatterSpecification.v13.Core} § 9.15.14.5.1
       */
      validProxyList: FixedAttribute(0, TlvArray(ValidProxies2.TlvValidProxy), { persistent: true, default: [] })
    },
    commands: {
      /**
       * This command is used during proxy discovery, as specified in Section 9.15.7, “Proxy Discovery &
       * Assignment Flow”.
       *
       * @see {@link MatterSpecification.v13.Core} § 9.15.14.6.1
       */
      getValidProxiesRequest: Command(0, TlvNoArguments, 1, ValidProxies2.TlvGetValidProxiesResponse)
    }
  });
  ValidProxies2.Cluster = ValidProxies2.ClusterInstance;
  ValidProxies2.Complete = ValidProxies2.Cluster;
})(ValidProxies || (ValidProxies = {}));
const ValidProxiesCluster = ValidProxies.Cluster;
ClusterRegistry.register(ValidProxies.Complete);
export {
  ValidProxies,
  ValidProxiesCluster
};
//# sourceMappingURL=valid-proxies.js.map
