// These are global .matter idl linter rules
// First load data from XML definitions

load "../src/app/zap-templates/zcl/data-model/chip/access-control-cluster.xml";
load "../src/app/zap-templates/zcl/data-model/chip/access-control-definitions.xml";
load "../src/app/zap-templates/zcl/data-model/chip/account-login-cluster.xml";
load "../src/app/zap-templates/zcl/data-model/chip/administrator-commissioning-cluster.xml";
load "../src/app/zap-templates/zcl/data-model/chip/application-basic-cluster.xml";
load "../src/app/zap-templates/zcl/data-model/chip/application-launcher-cluster.xml";
load "../src/app/zap-templates/zcl/data-model/chip/audio-output-cluster.xml";
load "../src/app/zap-templates/zcl/data-model/chip/ballast-configuration-cluster.xml";
load "../src/app/zap-templates/zcl/data-model/chip/basic-information-cluster.xml";
load "../src/app/zap-templates/zcl/data-model/chip/binding-cluster.xml";
load "../src/app/zap-templates/zcl/data-model/chip/boolean-state-cluster.xml";
load "../src/app/zap-templates/zcl/data-model/chip/actions-cluster.xml";
load "../src/app/zap-templates/zcl/data-model/chip/bridged-device-basic-information.xml";
load "../src/app/zap-templates/zcl/data-model/chip/channel-cluster.xml";
load "../src/app/zap-templates/zcl/data-model/chip/chip-ota.xml";
load "../src/app/zap-templates/zcl/data-model/chip/chip-types.xml";
load "../src/app/zap-templates/zcl/data-model/chip/clusters-extensions.xml";
load "../src/app/zap-templates/zcl/data-model/chip/color-control-cluster.xml";
load "../src/app/zap-templates/zcl/data-model/chip/content-launch-cluster.xml";
load "../src/app/zap-templates/zcl/data-model/chip/descriptor-cluster.xml";
load "../src/app/zap-templates/zcl/data-model/chip/diagnostic-logs-cluster.xml";
load "../src/app/zap-templates/zcl/data-model/chip/door-lock-cluster.xml";
load "../src/app/zap-templates/zcl/data-model/chip/ethernet-network-diagnostics-cluster.xml";
load "../src/app/zap-templates/zcl/data-model/chip/fan-control-cluster.xml";
load "../src/app/zap-templates/zcl/data-model/chip/fixed-label-cluster.xml";
load "../src/app/zap-templates/zcl/data-model/chip/flow-measurement-cluster.xml";
load "../src/app/zap-templates/zcl/data-model/chip/general-commissioning-cluster.xml";
load "../src/app/zap-templates/zcl/data-model/chip/general-diagnostics-cluster.xml";
load "../src/app/zap-templates/zcl/data-model/chip/global-attributes.xml";
load "../src/app/zap-templates/zcl/data-model/chip/groups-cluster.xml";
load "../src/app/zap-templates/zcl/data-model/chip/group-key-mgmt-cluster.xml";
load "../src/app/zap-templates/zcl/data-model/chip/identify-cluster.xml";
load "../src/app/zap-templates/zcl/data-model/chip/illuminance-measurement-cluster.xml";
load "../src/app/zap-templates/zcl/data-model/chip/keypad-input-cluster.xml";
load "../src/app/zap-templates/zcl/data-model/chip/level-control-cluster.xml";
load "../src/app/zap-templates/zcl/data-model/chip/localization-configuration-cluster.xml";
load "../src/app/zap-templates/zcl/data-model/chip/low-power-cluster.xml";
load "../src/app/zap-templates/zcl/data-model/chip/matter-devices.xml";
load "../src/app/zap-templates/zcl/data-model/chip/media-input-cluster.xml";
load "../src/app/zap-templates/zcl/data-model/chip/media-playback-cluster.xml";
load "../src/app/zap-templates/zcl/data-model/chip/mode-select-cluster.xml";
load "../src/app/zap-templates/zcl/data-model/chip/network-commissioning-cluster.xml";
load "../src/app/zap-templates/zcl/data-model/chip/occupancy-sensing-cluster.xml";
load "../src/app/zap-templates/zcl/data-model/chip/onoff-cluster.xml";
load "../src/app/zap-templates/zcl/data-model/chip/operational-credentials-cluster.xml";
load "../src/app/zap-templates/zcl/data-model/chip/power-source-cluster.xml";
load "../src/app/zap-templates/zcl/data-model/chip/power-source-configuration-cluster.xml";
load "../src/app/zap-templates/zcl/data-model/chip/pressure-measurement-cluster.xml";
load "../src/app/zap-templates/zcl/data-model/chip/proxy-configuration-cluster.xml";
load "../src/app/zap-templates/zcl/data-model/chip/proxy-discovery-cluster.xml";
load "../src/app/zap-templates/zcl/data-model/chip/proxy-valid-cluster.xml";
load "../src/app/zap-templates/zcl/data-model/chip/pump-configuration-and-control-cluster.xml";
load "../src/app/zap-templates/zcl/data-model/chip/pwm-cluster.xml";
load "../src/app/zap-templates/zcl/data-model/chip/relative-humidity-measurement-cluster.xml";
load "../src/app/zap-templates/zcl/data-model/chip/scene.xml";
load "../src/app/zap-templates/zcl/data-model/chip/software-diagnostics-cluster.xml";
load "../src/app/zap-templates/zcl/data-model/chip/switch-cluster.xml";
load "../src/app/zap-templates/zcl/data-model/chip/target-navigator-cluster.xml";
load "../src/app/zap-templates/zcl/data-model/chip/temperature-measurement-cluster.xml";
load "../src/app/zap-templates/zcl/data-model/chip/test-cluster.xml";
load "../src/app/zap-templates/zcl/data-model/chip/thermostat-user-interface-configuration-cluster.xml";
load "../src/app/zap-templates/zcl/data-model/chip/thermostat-cluster.xml";
load "../src/app/zap-templates/zcl/data-model/chip/thread-network-diagnostics-cluster.xml";
load "../src/app/zap-templates/zcl/data-model/chip/time-format-localization-cluster.xml";
load "../src/app/zap-templates/zcl/data-model/chip/time-synchronization-cluster.xml";
load "../src/app/zap-templates/zcl/data-model/chip/unit-localization-cluster.xml";
load "../src/app/zap-templates/zcl/data-model/chip/user-label-cluster.xml";
load "../src/app/zap-templates/zcl/data-model/chip/wake-on-lan-cluster.xml";
load "../src/app/zap-templates/zcl/data-model/chip/wifi-network-diagnostics-cluster.xml";
load "../src/app/zap-templates/zcl/data-model/chip/window-covering.xml";
load "../src/app/zap-templates/zcl/data-model/draft/barrier-control-cluster.xml";
load "../src/app/zap-templates/zcl/data-model/draft/electrical-measurement-cluster.xml";
load "../src/app/zap-templates/zcl/data-model/draft/input-output-value-clusters.xml";
load "../src/app/zap-templates/zcl/data-model/draft/onoff-switch-configuration-cluster.xml";

all endpoints {
    // These attributes follow a different code path and do not have to be
    // present in the .matter file
    //
    // require global attribute generatedCommandList = 65528;
    // require global attribute acceptedCommandList = 65529;
    // require global attribute attributeList = 65531;

    require global attribute featureMap = 65532;
    require global attribute clusterRevision = 65533;
}

endpoint 0 {
  // Identifiers for clusters are loaded from XML files
  // The required clusters are from the spec for RootNode (section 2.1.5 at the moment):

  require server cluster Basic;
  require server cluster AccessControl;
  require server cluster GroupKeyManagement;
  require server cluster GeneralCommissioning;
  require server cluster AdministratorCommissioning;
  require server cluster OperationalCredentials;
  require server cluster GeneralDiagnostics;

  // Required only if !CustomNetworkConfig. 
  // require server cluster NetworkCommissioning;

  // If Ethernet
  // require server cluster EthernetNetworkDiagnostics;

  // If WiFi
  // require server cluster WiFiNetworkDiagnostics;

  // If Thread
  // require server cluster ThreadNetworkDiagnostics;
}
