/**
 * @license
 * Copyright 2022-2026 Matter.js Authors
 * SPDX-License-Identifier: Apache-2.0
 */
import { AccessLevel } from "@matter/model";
import { AttributeId } from "../datatype/AttributeId.js";
import { CommandId } from "../datatype/CommandId.js";
import { EventId } from "../datatype/EventId.js";
const Attribute = (id, schema, {
  scene = false,
  persistent = false,
  omitChanges = false,
  default: conformanceValue,
  readAcl = AccessLevel.View,
  timed = false
} = {}) => ({
  id: AttributeId(id),
  schema,
  optional: false,
  writable: false,
  fixed: false,
  scene,
  persistent,
  timed,
  fabricScoped: false,
  omitChanges,
  default: conformanceValue,
  readAcl,
  unknown: false
});
const OptionalAttribute = (id, schema, {
  scene = false,
  persistent = false,
  omitChanges = false,
  default: conformanceValue,
  readAcl = AccessLevel.View,
  timed = false
} = {}) => ({
  id: AttributeId(id),
  schema,
  optional: true,
  writable: false,
  fixed: false,
  scene,
  persistent,
  fabricScoped: false,
  omitChanges,
  default: conformanceValue,
  readAcl,
  timed,
  unknown: false
});
const WritableAttribute = (id, schema, {
  scene = false,
  persistent = true,
  omitChanges = false,
  default: conformanceValue,
  readAcl = AccessLevel.View,
  writeAcl = AccessLevel.View,
  timed = false
} = {}) => ({
  id: AttributeId(id),
  schema,
  optional: false,
  writable: true,
  fixed: false,
  scene,
  persistent,
  fabricScoped: false,
  omitChanges,
  default: conformanceValue,
  readAcl,
  timed,
  writeAcl,
  unknown: false
});
const OptionalWritableAttribute = (id, schema, {
  scene = false,
  persistent = true,
  omitChanges = false,
  default: conformanceValue,
  readAcl = AccessLevel.View,
  writeAcl = AccessLevel.View,
  timed = false
} = {}) => ({
  id: AttributeId(id),
  schema,
  optional: true,
  writable: true,
  fixed: false,
  scene,
  persistent,
  fabricScoped: false,
  omitChanges,
  default: conformanceValue,
  readAcl,
  timed,
  writeAcl,
  unknown: false
});
const FabricScopedAttribute = (id, schema, {
  scene = false,
  persistent = true,
  omitChanges = false,
  default: conformanceValue,
  readAcl = AccessLevel.View,
  timed = false
} = {}) => ({
  id: AttributeId(id),
  schema,
  optional: false,
  writable: false,
  fixed: false,
  scene,
  persistent,
  fabricScoped: true,
  omitChanges,
  default: conformanceValue,
  readAcl,
  timed,
  unknown: false
});
const WritableFabricScopedAttribute = (id, schema, {
  scene = false,
  persistent = true,
  omitChanges = false,
  default: conformanceValue,
  readAcl = AccessLevel.View,
  writeAcl = AccessLevel.View,
  timed = false
} = {}) => ({
  id: AttributeId(id),
  schema,
  optional: false,
  writable: true,
  fixed: false,
  scene,
  persistent,
  fabricScoped: true,
  omitChanges,
  default: conformanceValue,
  readAcl,
  timed,
  writeAcl,
  unknown: false
});
const OptionalWritableFabricScopedAttribute = (id, schema, {
  scene = false,
  persistent = true,
  omitChanges = false,
  default: conformanceValue,
  readAcl = AccessLevel.View,
  writeAcl = AccessLevel.View,
  timed = false
} = {}) => ({
  id: AttributeId(id),
  schema,
  optional: true,
  writable: true,
  fixed: false,
  scene,
  persistent,
  fabricScoped: true,
  omitChanges,
  default: conformanceValue,
  readAcl,
  timed,
  writeAcl,
  unknown: false
});
const FixedAttribute = (id, schema, {
  scene = false,
  persistent = false,
  omitChanges = false,
  default: conformanceValue,
  readAcl = AccessLevel.View,
  timed = false
} = {}) => ({
  id: AttributeId(id),
  schema,
  optional: false,
  writable: false,
  fixed: true,
  scene,
  persistent,
  fabricScoped: false,
  omitChanges,
  default: conformanceValue,
  readAcl,
  timed,
  unknown: false
});
const WritableFixedAttribute = (id, schema, {
  scene = false,
  persistent = false,
  omitChanges = false,
  default: conformanceValue,
  readAcl = AccessLevel.View,
  timed = false
} = {}) => ({
  id: AttributeId(id),
  schema,
  optional: false,
  writable: true,
  fixed: true,
  scene,
  persistent,
  fabricScoped: false,
  omitChanges,
  default: conformanceValue,
  readAcl,
  timed,
  unknown: false
});
const OptionalFixedAttribute = (id, schema, {
  scene = false,
  persistent = false,
  omitChanges = false,
  default: conformanceValue,
  readAcl = AccessLevel.View,
  timed = false
} = {}) => ({
  id: AttributeId(id),
  schema,
  optional: true,
  writable: false,
  fixed: true,
  scene,
  persistent,
  fabricScoped: false,
  omitChanges,
  default: conformanceValue,
  readAcl,
  timed,
  unknown: false
});
const Command = (requestId, requestSchema, responseId, responseSchema, { invokeAcl = AccessLevel.Operate, timed = false } = {}) => ({
  optional: false,
  requestId: CommandId(requestId),
  requestSchema,
  responseId: CommandId(responseId),
  responseSchema,
  invokeAcl,
  timed
});
const OptionalCommand = (requestId, requestSchema, responseId, responseSchema, { invokeAcl = AccessLevel.Operate, timed = false } = {}) => ({
  optional: true,
  requestId: CommandId(requestId),
  requestSchema,
  responseId: CommandId(responseId),
  responseSchema,
  invokeAcl,
  timed
});
const Event = (id, priority, schema, { readAcl = AccessLevel.View } = {}) => ({
  id: EventId(id),
  schema,
  priority,
  optional: false,
  readAcl,
  unknown: false
});
const OptionalEvent = (id, priority, schema, { readAcl = AccessLevel.View } = {}) => ({
  id: EventId(id),
  schema,
  priority,
  optional: true,
  readAcl,
  unknown: false
});
export {
  Attribute,
  Command,
  Event,
  FabricScopedAttribute,
  FixedAttribute,
  OptionalAttribute,
  OptionalCommand,
  OptionalEvent,
  OptionalFixedAttribute,
  OptionalWritableAttribute,
  OptionalWritableFabricScopedAttribute,
  WritableAttribute,
  WritableFabricScopedAttribute,
  WritableFixedAttribute
};
//# sourceMappingURL=RetiredElements.js.map
