@kusinta/iot-schema 0.2.0-beta.1 → 0.2.0-beta.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. package/package.json +7 -1
  2. package/src/kusinta/iot/access/v1/acl_pb.d.ts +130 -0
  3. package/src/kusinta/iot/access/v1/acl_pb.js +19 -5
  4. package/src/kusinta/iot/access/v1/roles_pb.d.ts +80 -14
  5. package/src/kusinta/iot/access/v1/roles_pb.js +33 -1
  6. package/src/kusinta/iot/common/v1/pairing_pb.d.ts +201 -0
  7. package/src/kusinta/iot/common/v1/pairing_pb.js +50 -0
  8. package/src/kusinta/iot/connector/v1/connector_pb.d.ts +423 -6
  9. package/src/kusinta/iot/connector/v1/connector_pb.js +70 -12
  10. package/src/kusinta/iot/device/v1/cluster_state_pb.d.ts +25 -0
  11. package/src/kusinta/iot/device/v1/cluster_state_pb.js +1 -1
  12. package/src/kusinta/iot/device/v1/descriptor_pb.d.ts +16 -1
  13. package/src/kusinta/iot/device/v1/descriptor_pb.js +2 -1
  14. package/src/kusinta/iot/device/v1/device_pb.d.ts +34 -3
  15. package/src/kusinta/iot/device/v1/device_pb.js +1 -1
  16. package/src/kusinta/iot/device/v1/matter_options_pb.d.ts +26 -0
  17. package/src/kusinta/iot/device/v1/matter_options_pb.js +31 -4
  18. package/src/kusinta/iot/device/v1/properties_pb.d.ts +14 -0
  19. package/src/kusinta/iot/device/v1/properties_pb.js +1 -1
  20. package/src/kusinta/iot/link/v1/link_pb.d.ts +419 -0
  21. package/src/kusinta/iot/link/v1/link_pb.js +121 -0
  22. package/src/kusinta/iot/vendor/homematic/v1/homematic_pb.d.ts +162 -13
  23. package/src/kusinta/iot/vendor/homematic/v1/homematic_pb.js +8 -1
  24. package/src/kusinta/iot/vendor/v1/vendor_options_pb.d.ts +21 -0
  25. package/src/kusinta/iot/vendor/v1/vendor_options_pb.js +24 -2
  26. package/src/kusinta/iot/webrtc/v1/command_pb.d.ts +14 -6
  27. package/src/kusinta/iot/webrtc/v1/command_pb.js +2 -1
  28. package/src/kusinta/iot/webrtc/v1/device_state_pb.d.ts +12 -6
  29. package/src/kusinta/iot/webrtc/v1/device_state_pb.js +5 -5
  30. package/src/kusinta/iot/webrtc/v1/envelope_pb.d.ts +236 -5
  31. package/src/kusinta/iot/webrtc/v1/envelope_pb.js +34 -3
  32. package/src/kusinta/iot/webrtc/v1/management_pb.d.ts +178 -2
  33. package/src/kusinta/iot/webrtc/v1/management_pb.js +31 -2
  34. package/src/kusinta/iot/webrtc/v1/permission_push_pb.js +2 -2
  35. package/src/kusinta/iot/webrtc/v1/setpoint_mode_pb.d.ts +63 -0
  36. package/src/kusinta/iot/webrtc/v1/setpoint_mode_pb.js +45 -0
@@ -4,18 +4,20 @@
4
4
 
5
5
  import { fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv2";
6
6
  import { file_google_protobuf_timestamp } from "@bufbuild/protobuf/wkt";
7
+ import { file_kusinta_iot_common_v1_pairing } from "../../common/v1/pairing_pb.js";
7
8
  import { file_kusinta_iot_common_v1_types } from "../../common/v1/types_pb.js";
8
- import { file_kusinta_iot_identity_v1_identity } from "../../identity/v1/identity_pb.js";
9
9
  import { file_kusinta_iot_device_v1_device } from "../../device/v1/device_pb.js";
10
10
  import { file_kusinta_iot_device_v1_device_event } from "../../device/v1/device_event_pb.js";
11
11
  import { file_kusinta_iot_device_v1_property_update } from "../../device/v1/property_update_pb.js";
12
+ import { file_kusinta_iot_identity_v1_identity } from "../../identity/v1/identity_pb.js";
13
+ import { file_kusinta_iot_link_v1_link } from "../../link/v1/link_pb.js";
12
14
  import { file_kusinta_iot_webrtc_v1_command } from "../../webrtc/v1/command_pb.js";
13
15
 
14
16
  /**
15
17
  * Describes the file kusinta/iot/connector/v1/connector.proto.
16
18
  */
17
19
  export const file_kusinta_iot_connector_v1_connector = /*@__PURE__*/
18
- fileDesc("CihrdXNpbnRhL2lvdC9jb25uZWN0b3IvdjEvY29ubmVjdG9yLnByb3RvEhhrdXNpbnRhLmlvdC5jb25uZWN0b3IudjEi5QEKDUNvbm5lY3RvckluZm8SOgoMY29ubmVjdG9yX2lkGAEgASgLMiQua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuQ29ubmVjdG9ySWQSFAoMZGlzcGxheV9uYW1lGAIgASgJEg8KB3ZlcnNpb24YAyABKAkSPAoJdHJhbnNwb3J0GAQgASgOMikua3VzaW50YS5pb3QuY29tbW9uLnYxLkNvbm5lY3RvclRyYW5zcG9ydBIQCghlbmRwb2ludBgFIAEoCRIhChlzdXBwb3J0ZWRfZGV2aWNlX3R5cGVfaWRzGAYgAygNIoEBChJDb25uZWN0b3JIYW5kc2hha2USNQoEaW5mbxgBIAEoCzInLmt1c2ludGEuaW90LmNvbm5lY3Rvci52MS5Db25uZWN0b3JJbmZvEjQKDWtub3duX2RldmljZXMYAiADKAsyHS5rdXNpbnRhLmlvdC5kZXZpY2UudjEuRGV2aWNlImgKDEhhbmRzaGFrZUFjaxIQCghhY2NlcHRlZBgBIAEoCBIOCgZyZWFzb24YAiABKAkSNgoKZ2F0ZXdheV9pZBgDIAEoCzIiLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLkdhdGV3YXlJZCJVChJEZXZpY2VBbm5vdW5jZW1lbnQSLQoGZGV2aWNlGAIgASgLMh0ua3VzaW50YS5pb3QuZGV2aWNlLnYxLkRldmljZUoECAEQAlIKZGVzY3JpcHRvciJVCg1EZXZpY2VSZW1vdmFsEjQKCWRldmljZV9pZBgBIAEoCzIhLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLkRldmljZUlkEg4KBnJlYXNvbhgCIAEoCSILCglIZWFydEJlYXQiRwoPU3Vic2NyaWJlRGV2aWNlEjQKCWRldmljZV9pZBgBIAEoCzIhLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLkRldmljZUlkIkkKEVVuc3Vic2NyaWJlRGV2aWNlEjQKCWRldmljZV9pZBgBIAEoCzIhLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLkRldmljZUlkIkEKDEdhdGV3YXlFcnJvchIMCgRjb2RlGAEgASgJEg8KB21lc3NhZ2UYAiABKAkSEgoKcmVxdWVzdF9pZBgDIAEoCSKmAQoWQ29ubmVjdG9yQ29tbWFuZFJlc3VsdBISCgpyZXF1ZXN0X2lkGAEgASgJEg8KB3N1Y2Nlc3MYAiABKAgSNQoFZXJyb3IYAyABKAsyJi5rdXNpbnRhLmlvdC5jb25uZWN0b3IudjEuR2F0ZXdheUVycm9yEjAKDGNvbXBsZXRlZF9hdBgEIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAiuwQKDlNlc3Npb25SZXF1ZXN0EhIKCm1lc3NhZ2VfaWQYASABKAkSKwoHc2VudF9hdBgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASQQoJaGFuZHNoYWtlGAMgASgLMiwua3VzaW50YS5pb3QuY29ubmVjdG9yLnYxLkNvbm5lY3RvckhhbmRzaGFrZUgAEkUKD3Byb3BlcnR5X3VwZGF0ZRgEIAEoCzIqLmt1c2ludGEuaW90LmRldmljZS52MS5Qcm9wZXJ0eVVwZGF0ZUJhdGNoSAASSAoQZGV2aWNlX2Fubm91bmNlZBgFIAEoCzIsLmt1c2ludGEuaW90LmNvbm5lY3Rvci52MS5EZXZpY2VBbm5vdW5jZW1lbnRIABJBCg5kZXZpY2VfcmVtb3ZlZBgGIAEoCzInLmt1c2ludGEuaW90LmNvbm5lY3Rvci52MS5EZXZpY2VSZW1vdmFsSAASSgoOY29tbWFuZF9yZXN1bHQYByABKAsyMC5rdXNpbnRhLmlvdC5jb25uZWN0b3IudjEuQ29ubmVjdG9yQ29tbWFuZFJlc3VsdEgAEjgKCWhlYXJ0YmVhdBgIIAEoCzIjLmt1c2ludGEuaW90LmNvbm5lY3Rvci52MS5IZWFydEJlYXRIABJACg1kZXZpY2VfZXZlbnRzGAkgASgLMicua3VzaW50YS5pb3QuZGV2aWNlLnYxLkRldmljZUV2ZW50QmF0Y2hIAEIJCgdwYXlsb2FkIvMDCg9TZXNzaW9uUmVzcG9uc2USEgoKbWVzc2FnZV9pZBgBIAEoCRIrCgdzZW50X2F0GAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBI/Cg1oYW5kc2hha2VfYWNrGAMgASgLMiYua3VzaW50YS5pb3QuY29ubmVjdG9yLnYxLkhhbmRzaGFrZUFja0gAEj4KCXN1YnNjcmliZRgFIAEoCzIpLmt1c2ludGEuaW90LmNvbm5lY3Rvci52MS5TdWJzY3JpYmVEZXZpY2VIABJCCgt1bnN1YnNjcmliZRgGIAEoCzIrLmt1c2ludGEuaW90LmNvbm5lY3Rvci52MS5VbnN1YnNjcmliZURldmljZUgAEjcKBWVycm9yGAcgASgLMiYua3VzaW50YS5pb3QuY29ubmVjdG9yLnYxLkdhdGV3YXlFcnJvckgAEj8KD2V4ZWN1dGVfY29tbWFuZBgIIAEoCzIkLmt1c2ludGEuaW90LndlYnJ0Yy52MS5EZXZpY2VDb21tYW5kSAASTwoXZXhlY3V0ZV9hdHRyaWJ1dGVfd3JpdGUYCSABKAsyLC5rdXNpbnRhLmlvdC53ZWJydGMudjEuQXR0cmlidXRlV3JpdGVSZXF1ZXN0SABCCQoHcGF5bG9hZEoECAQQBUICSAFiBnByb3RvMw", [file_google_protobuf_timestamp, file_kusinta_iot_common_v1_types, file_kusinta_iot_identity_v1_identity, file_kusinta_iot_device_v1_device, file_kusinta_iot_device_v1_device_event, file_kusinta_iot_device_v1_property_update, file_kusinta_iot_webrtc_v1_command]);
20
+ fileDesc("CihrdXNpbnRhL2lvdC9jb25uZWN0b3IvdjEvY29ubmVjdG9yLnByb3RvEhhrdXNpbnRhLmlvdC5jb25uZWN0b3IudjEi5QEKDUNvbm5lY3RvckluZm8SOgoMY29ubmVjdG9yX2lkGAEgASgLMiQua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuQ29ubmVjdG9ySWQSFAoMZGlzcGxheV9uYW1lGAIgASgJEg8KB3ZlcnNpb24YAyABKAkSPAoJdHJhbnNwb3J0GAQgASgOMikua3VzaW50YS5pb3QuY29tbW9uLnYxLkNvbm5lY3RvclRyYW5zcG9ydBIQCghlbmRwb2ludBgFIAEoCRIhChlzdXBwb3J0ZWRfZGV2aWNlX3R5cGVfaWRzGAYgAygNIrcBChJDb25uZWN0b3JIYW5kc2hha2USNQoEaW5mbxgBIAEoCzInLmt1c2ludGEuaW90LmNvbm5lY3Rvci52MS5Db25uZWN0b3JJbmZvEjQKDWtub3duX2RldmljZXMYAiADKAsyHS5rdXNpbnRhLmlvdC5kZXZpY2UudjEuRGV2aWNlEjQKC2tub3duX2xpbmtzGAMgAygLMh8ua3VzaW50YS5pb3QubGluay52MS5EZXZpY2VMaW5rIroBCgpDcmVhdGVMaW5rEg8KB2xpbmtfaWQYASABKAkSMQoGc2VuZGVyGAIgASgLMiEua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuRGV2aWNlSWQSMwoIcmVjZWl2ZXIYAyABKAsyIS5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5EZXZpY2VJZBIzCghmdW5jdGlvbhgEIAEoDjIhLmt1c2ludGEuaW90LmxpbmsudjEuTGlua0Z1bmN0aW9uIroBCgpSZW1vdmVMaW5rEg8KB2xpbmtfaWQYASABKAkSMQoGc2VuZGVyGAIgASgLMiEua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuRGV2aWNlSWQSMwoIcmVjZWl2ZXIYAyABKAsyIS5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5EZXZpY2VJZBIzCghmdW5jdGlvbhgEIAEoDjIhLmt1c2ludGEuaW90LmxpbmsudjEuTGlua0Z1bmN0aW9uIkEKCUxpc3RMaW5rcxI0CglkZXZpY2VfaWQYASABKAsyIS5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5EZXZpY2VJZCJtCgpMaW5rUmVzdWx0Eg8KB2xpbmtfaWQYASABKAkSDwoHc3VjY2VzcxgCIAEoCBItCgVzdGF0ZRgDIAEoDjIeLmt1c2ludGEuaW90LmxpbmsudjEuTGlua1N0YXRlEg4KBmRldGFpbBgEIAEoCSI/Cg1MaW5rc1JlcG9ydGVkEi4KBWxpbmtzGAEgAygLMh8ua3VzaW50YS5pb3QubGluay52MS5EZXZpY2VMaW5rImgKDEhhbmRzaGFrZUFjaxIQCghhY2NlcHRlZBgBIAEoCBIOCgZyZWFzb24YAiABKAkSNgoKZ2F0ZXdheV9pZBgDIAEoCzIiLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLkdhdGV3YXlJZCJxChJEZXZpY2VBbm5vdW5jZW1lbnQSLQoGZGV2aWNlGAIgASgLMh0ua3VzaW50YS5pb3QuZGV2aWNlLnYxLkRldmljZRIaChJwYWlyaW5nX3JlcXVlc3RfaWQYAyABKAlKBAgBEAJSCmRlc2NyaXB0b3IiVQoNRGV2aWNlUmVtb3ZhbBI0CglkZXZpY2VfaWQYASABKAsyIS5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5EZXZpY2VJZBIOCgZyZWFzb24YAiABKAkiCwoJSGVhcnRCZWF0IkcKD1N1YnNjcmliZURldmljZRI0CglkZXZpY2VfaWQYASABKAsyIS5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5EZXZpY2VJZCJJChFVbnN1YnNjcmliZURldmljZRI0CglkZXZpY2VfaWQYASABKAsyIS5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5EZXZpY2VJZCJBCgxHYXRld2F5RXJyb3ISDAoEY29kZRgBIAEoCRIPCgdtZXNzYWdlGAIgASgJEhIKCnJlcXVlc3RfaWQYAyABKAki7QEKFkNvbm5lY3RvckNvbW1hbmRSZXN1bHQSEgoKcmVxdWVzdF9pZBgBIAEoCRIPCgdzdWNjZXNzGAIgASgIEjAKDGNvbXBsZXRlZF9hdBgEIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASMgoFZXJyb3IYBSABKAsyIy5rdXNpbnRhLmlvdC53ZWJydGMudjEuQ29tbWFuZEVycm9yEjMKCnNldHRsZXNfYnkYBiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSACIAQFCDQoLX3NldHRsZXNfYnlKBAgDEAQiXAoQRW50ZXJQYWlyaW5nTW9kZRISCgpyZXF1ZXN0X2lkGAEgASgJEjQKBndpbmRvdxgCIAEoCzIkLmt1c2ludGEuaW90LmNvbW1vbi52MS5QYWlyaW5nV2luZG93IqMBChFQYWlyaW5nTW9kZVJlc3VsdBISCgpyZXF1ZXN0X2lkGAEgASgJEhAKCGFjY2VwdGVkGAIgASgIEjgKBWVycm9yGAMgASgLMikua3VzaW50YS5pb3QuY29tbW9uLnYxLlBhaXJpbmdFcnJvckRldGFpbBIuCgpleHBpcmVzX2F0GAQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCJ8ChBQYWlyaW5nTW9kZUVuZGVkEhIKCnJlcXVlc3RfaWQYASABKAkSGgoSZGV2aWNlc19hdHRyaWJ1dGVkGAIgASgNEjgKBWVycm9yGAMgASgLMikua3VzaW50YS5pb3QuY29tbW9uLnYxLlBhaXJpbmdFcnJvckRldGFpbCLRBgoOU2Vzc2lvblJlcXVlc3QSEgoKbWVzc2FnZV9pZBgBIAEoCRIrCgdzZW50X2F0GAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBJBCgloYW5kc2hha2UYAyABKAsyLC5rdXNpbnRhLmlvdC5jb25uZWN0b3IudjEuQ29ubmVjdG9ySGFuZHNoYWtlSAASRQoPcHJvcGVydHlfdXBkYXRlGAQgASgLMioua3VzaW50YS5pb3QuZGV2aWNlLnYxLlByb3BlcnR5VXBkYXRlQmF0Y2hIABJIChBkZXZpY2VfYW5ub3VuY2VkGAUgASgLMiwua3VzaW50YS5pb3QuY29ubmVjdG9yLnYxLkRldmljZUFubm91bmNlbWVudEgAEkEKDmRldmljZV9yZW1vdmVkGAYgASgLMicua3VzaW50YS5pb3QuY29ubmVjdG9yLnYxLkRldmljZVJlbW92YWxIABJKCg5jb21tYW5kX3Jlc3VsdBgHIAEoCzIwLmt1c2ludGEuaW90LmNvbm5lY3Rvci52MS5Db25uZWN0b3JDb21tYW5kUmVzdWx0SAASOAoJaGVhcnRiZWF0GAggASgLMiMua3VzaW50YS5pb3QuY29ubmVjdG9yLnYxLkhlYXJ0QmVhdEgAEkAKDWRldmljZV9ldmVudHMYCSABKAsyJy5rdXNpbnRhLmlvdC5kZXZpY2UudjEuRGV2aWNlRXZlbnRCYXRjaEgAEkoKE3BhaXJpbmdfbW9kZV9yZXN1bHQYCiABKAsyKy5rdXNpbnRhLmlvdC5jb25uZWN0b3IudjEuUGFpcmluZ01vZGVSZXN1bHRIABJIChJwYWlyaW5nX21vZGVfZW5kZWQYCyABKAsyKi5rdXNpbnRhLmlvdC5jb25uZWN0b3IudjEuUGFpcmluZ01vZGVFbmRlZEgAEjsKC2xpbmtfcmVzdWx0GAwgASgLMiQua3VzaW50YS5pb3QuY29ubmVjdG9yLnYxLkxpbmtSZXN1bHRIABJBCg5saW5rc19yZXBvcnRlZBgNIAEoCzInLmt1c2ludGEuaW90LmNvbm5lY3Rvci52MS5MaW5rc1JlcG9ydGVkSABCCQoHcGF5bG9hZCLyBQoPU2Vzc2lvblJlc3BvbnNlEhIKCm1lc3NhZ2VfaWQYASABKAkSKwoHc2VudF9hdBgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASPwoNaGFuZHNoYWtlX2FjaxgDIAEoCzImLmt1c2ludGEuaW90LmNvbm5lY3Rvci52MS5IYW5kc2hha2VBY2tIABI+CglzdWJzY3JpYmUYBSABKAsyKS5rdXNpbnRhLmlvdC5jb25uZWN0b3IudjEuU3Vic2NyaWJlRGV2aWNlSAASQgoLdW5zdWJzY3JpYmUYBiABKAsyKy5rdXNpbnRhLmlvdC5jb25uZWN0b3IudjEuVW5zdWJzY3JpYmVEZXZpY2VIABI3CgVlcnJvchgHIAEoCzImLmt1c2ludGEuaW90LmNvbm5lY3Rvci52MS5HYXRld2F5RXJyb3JIABI/Cg9leGVjdXRlX2NvbW1hbmQYCCABKAsyJC5rdXNpbnRhLmlvdC53ZWJydGMudjEuRGV2aWNlQ29tbWFuZEgAEk8KF2V4ZWN1dGVfYXR0cmlidXRlX3dyaXRlGAkgASgLMiwua3VzaW50YS5pb3Qud2VicnRjLnYxLkF0dHJpYnV0ZVdyaXRlUmVxdWVzdEgAEkgKEmVudGVyX3BhaXJpbmdfbW9kZRgKIAEoCzIqLmt1c2ludGEuaW90LmNvbm5lY3Rvci52MS5FbnRlclBhaXJpbmdNb2RlSAASOwoLY3JlYXRlX2xpbmsYCyABKAsyJC5rdXNpbnRhLmlvdC5jb25uZWN0b3IudjEuQ3JlYXRlTGlua0gAEjsKC3JlbW92ZV9saW5rGAwgASgLMiQua3VzaW50YS5pb3QuY29ubmVjdG9yLnYxLlJlbW92ZUxpbmtIABI5CgpsaXN0X2xpbmtzGA0gASgLMiMua3VzaW50YS5pb3QuY29ubmVjdG9yLnYxLkxpc3RMaW5rc0gAQgkKB3BheWxvYWRKBAgEEAVCAkgBYgZwcm90bzM", [file_google_protobuf_timestamp, file_kusinta_iot_common_v1_pairing, file_kusinta_iot_common_v1_types, file_kusinta_iot_device_v1_device, file_kusinta_iot_device_v1_device_event, file_kusinta_iot_device_v1_property_update, file_kusinta_iot_identity_v1_identity, file_kusinta_iot_link_v1_link, file_kusinta_iot_webrtc_v1_command]);
19
21
 
20
22
  /**
21
23
  * Describes the message kusinta.iot.connector.v1.ConnectorInfo.
@@ -31,73 +33,129 @@ export const ConnectorInfoSchema = /*@__PURE__*/
31
33
  export const ConnectorHandshakeSchema = /*@__PURE__*/
32
34
  messageDesc(file_kusinta_iot_connector_v1_connector, 1);
33
35
 
36
+ /**
37
+ * Describes the message kusinta.iot.connector.v1.CreateLink.
38
+ * Use `create(CreateLinkSchema)` to create a new message.
39
+ */
40
+ export const CreateLinkSchema = /*@__PURE__*/
41
+ messageDesc(file_kusinta_iot_connector_v1_connector, 2);
42
+
43
+ /**
44
+ * Describes the message kusinta.iot.connector.v1.RemoveLink.
45
+ * Use `create(RemoveLinkSchema)` to create a new message.
46
+ */
47
+ export const RemoveLinkSchema = /*@__PURE__*/
48
+ messageDesc(file_kusinta_iot_connector_v1_connector, 3);
49
+
50
+ /**
51
+ * Describes the message kusinta.iot.connector.v1.ListLinks.
52
+ * Use `create(ListLinksSchema)` to create a new message.
53
+ */
54
+ export const ListLinksSchema = /*@__PURE__*/
55
+ messageDesc(file_kusinta_iot_connector_v1_connector, 4);
56
+
57
+ /**
58
+ * Describes the message kusinta.iot.connector.v1.LinkResult.
59
+ * Use `create(LinkResultSchema)` to create a new message.
60
+ */
61
+ export const LinkResultSchema = /*@__PURE__*/
62
+ messageDesc(file_kusinta_iot_connector_v1_connector, 5);
63
+
64
+ /**
65
+ * Describes the message kusinta.iot.connector.v1.LinksReported.
66
+ * Use `create(LinksReportedSchema)` to create a new message.
67
+ */
68
+ export const LinksReportedSchema = /*@__PURE__*/
69
+ messageDesc(file_kusinta_iot_connector_v1_connector, 6);
70
+
34
71
  /**
35
72
  * Describes the message kusinta.iot.connector.v1.HandshakeAck.
36
73
  * Use `create(HandshakeAckSchema)` to create a new message.
37
74
  */
38
75
  export const HandshakeAckSchema = /*@__PURE__*/
39
- messageDesc(file_kusinta_iot_connector_v1_connector, 2);
76
+ messageDesc(file_kusinta_iot_connector_v1_connector, 7);
40
77
 
41
78
  /**
42
79
  * Describes the message kusinta.iot.connector.v1.DeviceAnnouncement.
43
80
  * Use `create(DeviceAnnouncementSchema)` to create a new message.
44
81
  */
45
82
  export const DeviceAnnouncementSchema = /*@__PURE__*/
46
- messageDesc(file_kusinta_iot_connector_v1_connector, 3);
83
+ messageDesc(file_kusinta_iot_connector_v1_connector, 8);
47
84
 
48
85
  /**
49
86
  * Describes the message kusinta.iot.connector.v1.DeviceRemoval.
50
87
  * Use `create(DeviceRemovalSchema)` to create a new message.
51
88
  */
52
89
  export const DeviceRemovalSchema = /*@__PURE__*/
53
- messageDesc(file_kusinta_iot_connector_v1_connector, 4);
90
+ messageDesc(file_kusinta_iot_connector_v1_connector, 9);
54
91
 
55
92
  /**
56
93
  * Describes the message kusinta.iot.connector.v1.HeartBeat.
57
94
  * Use `create(HeartBeatSchema)` to create a new message.
58
95
  */
59
96
  export const HeartBeatSchema = /*@__PURE__*/
60
- messageDesc(file_kusinta_iot_connector_v1_connector, 5);
97
+ messageDesc(file_kusinta_iot_connector_v1_connector, 10);
61
98
 
62
99
  /**
63
100
  * Describes the message kusinta.iot.connector.v1.SubscribeDevice.
64
101
  * Use `create(SubscribeDeviceSchema)` to create a new message.
65
102
  */
66
103
  export const SubscribeDeviceSchema = /*@__PURE__*/
67
- messageDesc(file_kusinta_iot_connector_v1_connector, 6);
104
+ messageDesc(file_kusinta_iot_connector_v1_connector, 11);
68
105
 
69
106
  /**
70
107
  * Describes the message kusinta.iot.connector.v1.UnsubscribeDevice.
71
108
  * Use `create(UnsubscribeDeviceSchema)` to create a new message.
72
109
  */
73
110
  export const UnsubscribeDeviceSchema = /*@__PURE__*/
74
- messageDesc(file_kusinta_iot_connector_v1_connector, 7);
111
+ messageDesc(file_kusinta_iot_connector_v1_connector, 12);
75
112
 
76
113
  /**
77
114
  * Describes the message kusinta.iot.connector.v1.GatewayError.
78
115
  * Use `create(GatewayErrorSchema)` to create a new message.
79
116
  */
80
117
  export const GatewayErrorSchema = /*@__PURE__*/
81
- messageDesc(file_kusinta_iot_connector_v1_connector, 8);
118
+ messageDesc(file_kusinta_iot_connector_v1_connector, 13);
82
119
 
83
120
  /**
84
121
  * Describes the message kusinta.iot.connector.v1.ConnectorCommandResult.
85
122
  * Use `create(ConnectorCommandResultSchema)` to create a new message.
86
123
  */
87
124
  export const ConnectorCommandResultSchema = /*@__PURE__*/
88
- messageDesc(file_kusinta_iot_connector_v1_connector, 9);
125
+ messageDesc(file_kusinta_iot_connector_v1_connector, 14);
126
+
127
+ /**
128
+ * Describes the message kusinta.iot.connector.v1.EnterPairingMode.
129
+ * Use `create(EnterPairingModeSchema)` to create a new message.
130
+ */
131
+ export const EnterPairingModeSchema = /*@__PURE__*/
132
+ messageDesc(file_kusinta_iot_connector_v1_connector, 15);
133
+
134
+ /**
135
+ * Describes the message kusinta.iot.connector.v1.PairingModeResult.
136
+ * Use `create(PairingModeResultSchema)` to create a new message.
137
+ */
138
+ export const PairingModeResultSchema = /*@__PURE__*/
139
+ messageDesc(file_kusinta_iot_connector_v1_connector, 16);
140
+
141
+ /**
142
+ * Describes the message kusinta.iot.connector.v1.PairingModeEnded.
143
+ * Use `create(PairingModeEndedSchema)` to create a new message.
144
+ */
145
+ export const PairingModeEndedSchema = /*@__PURE__*/
146
+ messageDesc(file_kusinta_iot_connector_v1_connector, 17);
89
147
 
90
148
  /**
91
149
  * Describes the message kusinta.iot.connector.v1.SessionRequest.
92
150
  * Use `create(SessionRequestSchema)` to create a new message.
93
151
  */
94
152
  export const SessionRequestSchema = /*@__PURE__*/
95
- messageDesc(file_kusinta_iot_connector_v1_connector, 10);
153
+ messageDesc(file_kusinta_iot_connector_v1_connector, 18);
96
154
 
97
155
  /**
98
156
  * Describes the message kusinta.iot.connector.v1.SessionResponse.
99
157
  * Use `create(SessionResponseSchema)` to create a new message.
100
158
  */
101
159
  export const SessionResponseSchema = /*@__PURE__*/
102
- messageDesc(file_kusinta_iot_connector_v1_connector, 11);
160
+ messageDesc(file_kusinta_iot_connector_v1_connector, 19);
103
161
 
@@ -228,6 +228,31 @@ export declare type ClusterState = Message<"kusinta.iot.device.v1.ClusterState">
228
228
  * @generated from field: repeated uint32 accepted_command_ids = 5;
229
229
  */
230
230
  acceptedCommandIds: number[];
231
+
232
+ /**
233
+ * Matter's AttributeList (0xFFFB): which attributes this cluster instance actually
234
+ * implements HERE, on this endpoint of this device.
235
+ *
236
+ * It answers the question presence cannot. A typed field that is absent means "never
237
+ * reported" — and a device that will never report it, because it does not have the
238
+ * hardware, looks exactly the same. A wall thermostat drives no valve, so it has no
239
+ * PIHeatingDemand; a radiator valve has one it has not sent yet. Listed here with no
240
+ * value in the properties message = implemented, not yet reported. Absent from this
241
+ * list = the device does not have it.
242
+ *
243
+ * Distinct from feature_map, which is per-feature rather than per-attribute, and from
244
+ * (matter_attribute_capabilities), which says what the attribute IS — readable,
245
+ * writable, reportable — uniformly for every device, at compile time. Neither
246
+ * substitutes for the other: an app needs both to decide whether to draw a control,
247
+ * draw a value, or draw nothing.
248
+ *
249
+ * An empty list is "not stated", not "implements nothing". A producer that does not
250
+ * know its device's attribute list leaves it empty; one that does SHOULD fill it at
251
+ * announcement, where it costs nothing per update.
252
+ *
253
+ * @generated from field: repeated uint32 attribute_ids = 6;
254
+ */
255
+ attributeIds: number[];
231
256
  };
232
257
 
233
258
  /**
@@ -8,7 +8,7 @@ import { fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv2";
8
8
  * Describes the file kusinta/iot/device/v1/cluster_state.proto.
9
9
  */
10
10
  export const file_kusinta_iot_device_v1_cluster_state = /*@__PURE__*/
11
- fileDesc("CilrdXNpbnRhL2lvdC9kZXZpY2UvdjEvY2x1c3Rlcl9zdGF0ZS5wcm90bxIVa3VzaW50YS5pb3QuZGV2aWNlLnYxIgsKCU51bGxWYWx1ZSLfAgoOQXR0cmlidXRlVmFsdWUSFAoKYm9vbF92YWx1ZRgBIAEoCEgAEhMKCWludF92YWx1ZRgCIAEoEkgAEhQKCnVpbnRfdmFsdWUYAyABKARIABIWCgxkb3VibGVfdmFsdWUYBCABKAFIABIWCgxzdHJpbmdfdmFsdWUYBSABKAlIABIVCgtieXRlc192YWx1ZRgGIAEoDEgAEj8KCmxpc3RfdmFsdWUYByABKAsyKS5rdXNpbnRhLmlvdC5kZXZpY2UudjEuQXR0cmlidXRlVmFsdWVMaXN0SAASQwoMc3RydWN0X3ZhbHVlGAggASgLMisua3VzaW50YS5pb3QuZGV2aWNlLnYxLkF0dHJpYnV0ZVZhbHVlU3RydWN0SAASNgoKbnVsbF92YWx1ZRgJIAEoCzIgLmt1c2ludGEuaW90LmRldmljZS52MS5OdWxsVmFsdWVIAEIHCgV2YWx1ZSJLChJBdHRyaWJ1dGVWYWx1ZUxpc3QSNQoGdmFsdWVzGAEgAygLMiUua3VzaW50YS5pb3QuZGV2aWNlLnYxLkF0dHJpYnV0ZVZhbHVlIrUBChRBdHRyaWJ1dGVWYWx1ZVN0cnVjdBJHCgZmaWVsZHMYASADKAsyNy5rdXNpbnRhLmlvdC5kZXZpY2UudjEuQXR0cmlidXRlVmFsdWVTdHJ1Y3QuRmllbGRzRW50cnkaVAoLRmllbGRzRW50cnkSCwoDa2V5GAEgASgNEjQKBXZhbHVlGAIgASgLMiUua3VzaW50YS5pb3QuZGV2aWNlLnYxLkF0dHJpYnV0ZVZhbHVlOgI4ASJcCg5BdHRyaWJ1dGVTdGF0ZRIUCgxhdHRyaWJ1dGVfaWQYASABKA0SNAoFdmFsdWUYAiABKAsyJS5rdXNpbnRhLmlvdC5kZXZpY2UudjEuQXR0cmlidXRlVmFsdWUi2QEKDENsdXN0ZXJTdGF0ZRISCgpjbHVzdGVyX2lkGAEgASgNEh0KEGNsdXN0ZXJfcmV2aXNpb24YAiABKA1IAIgBARIYCgtmZWF0dXJlX21hcBgDIAEoDUgBiAEBEjkKCmF0dHJpYnV0ZXMYBCADKAsyJS5rdXNpbnRhLmlvdC5kZXZpY2UudjEuQXR0cmlidXRlU3RhdGUSHAoUYWNjZXB0ZWRfY29tbWFuZF9pZHMYBSADKA1CEwoRX2NsdXN0ZXJfcmV2aXNpb25CDgoMX2ZlYXR1cmVfbWFwQgJIAWIGcHJvdG8z");
11
+ fileDesc("CilrdXNpbnRhL2lvdC9kZXZpY2UvdjEvY2x1c3Rlcl9zdGF0ZS5wcm90bxIVa3VzaW50YS5pb3QuZGV2aWNlLnYxIgsKCU51bGxWYWx1ZSLfAgoOQXR0cmlidXRlVmFsdWUSFAoKYm9vbF92YWx1ZRgBIAEoCEgAEhMKCWludF92YWx1ZRgCIAEoEkgAEhQKCnVpbnRfdmFsdWUYAyABKARIABIWCgxkb3VibGVfdmFsdWUYBCABKAFIABIWCgxzdHJpbmdfdmFsdWUYBSABKAlIABIVCgtieXRlc192YWx1ZRgGIAEoDEgAEj8KCmxpc3RfdmFsdWUYByABKAsyKS5rdXNpbnRhLmlvdC5kZXZpY2UudjEuQXR0cmlidXRlVmFsdWVMaXN0SAASQwoMc3RydWN0X3ZhbHVlGAggASgLMisua3VzaW50YS5pb3QuZGV2aWNlLnYxLkF0dHJpYnV0ZVZhbHVlU3RydWN0SAASNgoKbnVsbF92YWx1ZRgJIAEoCzIgLmt1c2ludGEuaW90LmRldmljZS52MS5OdWxsVmFsdWVIAEIHCgV2YWx1ZSJLChJBdHRyaWJ1dGVWYWx1ZUxpc3QSNQoGdmFsdWVzGAEgAygLMiUua3VzaW50YS5pb3QuZGV2aWNlLnYxLkF0dHJpYnV0ZVZhbHVlIrUBChRBdHRyaWJ1dGVWYWx1ZVN0cnVjdBJHCgZmaWVsZHMYASADKAsyNy5rdXNpbnRhLmlvdC5kZXZpY2UudjEuQXR0cmlidXRlVmFsdWVTdHJ1Y3QuRmllbGRzRW50cnkaVAoLRmllbGRzRW50cnkSCwoDa2V5GAEgASgNEjQKBXZhbHVlGAIgASgLMiUua3VzaW50YS5pb3QuZGV2aWNlLnYxLkF0dHJpYnV0ZVZhbHVlOgI4ASJcCg5BdHRyaWJ1dGVTdGF0ZRIUCgxhdHRyaWJ1dGVfaWQYASABKA0SNAoFdmFsdWUYAiABKAsyJS5rdXNpbnRhLmlvdC5kZXZpY2UudjEuQXR0cmlidXRlVmFsdWUi8AEKDENsdXN0ZXJTdGF0ZRISCgpjbHVzdGVyX2lkGAEgASgNEh0KEGNsdXN0ZXJfcmV2aXNpb24YAiABKA1IAIgBARIYCgtmZWF0dXJlX21hcBgDIAEoDUgBiAEBEjkKCmF0dHJpYnV0ZXMYBCADKAsyJS5rdXNpbnRhLmlvdC5kZXZpY2UudjEuQXR0cmlidXRlU3RhdGUSHAoUYWNjZXB0ZWRfY29tbWFuZF9pZHMYBSADKA0SFQoNYXR0cmlidXRlX2lkcxgGIAMoDUITChFfY2x1c3Rlcl9yZXZpc2lvbkIOCgxfZmVhdHVyZV9tYXBCAkgBYgZwcm90bzM");
12
12
 
13
13
  /**
14
14
  * Describes the message kusinta.iot.device.v1.NullValue.
@@ -7,6 +7,7 @@ import type { Message } from "@bufbuild/protobuf";
7
7
  import type { ConnectorId, DeviceId, SpaceId, UserId } from "../../identity/v1/identity_pb.js";
8
8
  import type { DeviceLifecycleState, DeviceOwnershipType } from "../../common/v1/types_pb.js";
9
9
  import type { Timestamp } from "@bufbuild/protobuf/wkt";
10
+ import type { LinkCapability } from "../../link/v1/link_pb.js";
10
11
  import type { HomematicDeviceIdentity } from "../../vendor/homematic/v1/homematic_pb.js";
11
12
 
12
13
  /**
@@ -19,7 +20,9 @@ export declare const file_kusinta_iot_device_v1_descriptor: GenFile;
19
20
  * device IS, not what it reports. The device types it presents are one per endpoint, in
20
21
  * Device.endpoints.
21
22
  *
22
- * Fields 1-19 are stable Matter-aligned fields. Fields 20+ are ownership/lifecycle.
23
+ * Field bands: 1-2 identity, 3-10 Matter BasicInformation, 11-12 placement,
24
+ * 13-16 ownership and lifecycle, 18-19 vendor identity and bridging.
25
+ * 2 and 17 are burned; the next free number is 20.
23
26
  *
24
27
  * @generated from message kusinta.iot.device.v1.DeviceDescriptor
25
28
  */
@@ -124,6 +127,18 @@ export declare type DeviceDescriptor = Message<"kusinta.iot.device.v1.DeviceDesc
124
127
  */
125
128
  bridgedBy?: DeviceId | undefined;
126
129
 
130
+ /**
131
+ * What this device can be linked as, if anything — see link.v1.LinkCapability.
132
+ *
133
+ * Declared by the connector that models the device, because only it knows
134
+ * which of a device's connections can lead, which can follow, and what a hub
135
+ * will actually broker. Empty means "states nothing", never "cannot be
136
+ * linked": a connector that does not model linking says nothing here.
137
+ *
138
+ * @generated from field: repeated kusinta.iot.link.v1.LinkCapability link_capabilities = 20;
139
+ */
140
+ linkCapabilities: LinkCapability[];
141
+
127
142
  /**
128
143
  * @generated from oneof kusinta.iot.device.v1.DeviceDescriptor.vendor_identity
129
144
  */
@@ -6,13 +6,14 @@ import { fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv2";
6
6
  import { file_google_protobuf_timestamp } from "@bufbuild/protobuf/wkt";
7
7
  import { file_kusinta_iot_common_v1_types } from "../../common/v1/types_pb.js";
8
8
  import { file_kusinta_iot_identity_v1_identity } from "../../identity/v1/identity_pb.js";
9
+ import { file_kusinta_iot_link_v1_link } from "../../link/v1/link_pb.js";
9
10
  import { file_kusinta_iot_vendor_homematic_v1_homematic } from "../../vendor/homematic/v1/homematic_pb.js";
10
11
 
11
12
  /**
12
13
  * Describes the file kusinta/iot/device/v1/descriptor.proto.
13
14
  */
14
15
  export const file_kusinta_iot_device_v1_descriptor = /*@__PURE__*/
15
- fileDesc("CiZrdXNpbnRhL2lvdC9kZXZpY2UvdjEvZGVzY3JpcHRvci5wcm90bxIVa3VzaW50YS5pb3QuZGV2aWNlLnYxIrkGChBEZXZpY2VEZXNjcmlwdG9yEjQKCWRldmljZV9pZBgBIAEoCzIhLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLkRldmljZUlkEhMKC3ZlbmRvcl9uYW1lGAMgASgJEhQKDHByb2R1Y3RfbmFtZRgEIAEoCRIVCg1zZXJpYWxfbnVtYmVyGAUgASgJEhIKCm5vZGVfbGFiZWwYBiABKAkSEQoJdmVuZG9yX2lkGAcgASgNEhIKCnByb2R1Y3RfaWQYCCABKA0SHwoXaGFyZHdhcmVfdmVyc2lvbl9zdHJpbmcYCSABKAkSHwoXc29mdHdhcmVfdmVyc2lvbl9zdHJpbmcYCiABKAkSOgoMY29ubmVjdG9yX2lkGAsgASgLMiQua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuQ29ubmVjdG9ySWQSMgoIc3BhY2VfaWQYDCABKAsyIC5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5TcGFjZUlkEj0KCW93bmVyc2hpcBgNIAEoDjIqLmt1c2ludGEuaW90LmNvbW1vbi52MS5EZXZpY2VPd25lcnNoaXBUeXBlEj4KCWxpZmVjeWNsZRgOIAEoDjIrLmt1c2ludGEuaW90LmNvbW1vbi52MS5EZXZpY2VMaWZlY3ljbGVTdGF0ZRI2Cg1vd25lcl91c2VyX2lkGA8gASgLMh8ua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuVXNlcklkEi4KCmNsYWltZWRfYXQYECABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjoKCmJyaWRnZWRfYnkYEyABKAsyIS5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5EZXZpY2VJZEgBiAEBEk0KCWhvbWVtYXRpYxgSIAEoCzI4Lmt1c2ludGEuaW90LnZlbmRvci5ob21lbWF0aWMudjEuSG9tZW1hdGljRGV2aWNlSWRlbnRpdHlIAEIRCg92ZW5kb3JfaWRlbnRpdHlCDQoLX2JyaWRnZWRfYnlKBAgCEANKBAgREBJSFW1hdHRlcl9kZXZpY2VfdHlwZV9pZFIJZW5kcG9pbnRzQgJIAWIGcHJvdG8z", [file_google_protobuf_timestamp, file_kusinta_iot_common_v1_types, file_kusinta_iot_identity_v1_identity, file_kusinta_iot_vendor_homematic_v1_homematic]);
16
+ fileDesc("CiZrdXNpbnRhL2lvdC9kZXZpY2UvdjEvZGVzY3JpcHRvci5wcm90bxIVa3VzaW50YS5pb3QuZGV2aWNlLnYxIvkGChBEZXZpY2VEZXNjcmlwdG9yEjQKCWRldmljZV9pZBgBIAEoCzIhLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLkRldmljZUlkEhMKC3ZlbmRvcl9uYW1lGAMgASgJEhQKDHByb2R1Y3RfbmFtZRgEIAEoCRIVCg1zZXJpYWxfbnVtYmVyGAUgASgJEhIKCm5vZGVfbGFiZWwYBiABKAkSEQoJdmVuZG9yX2lkGAcgASgNEhIKCnByb2R1Y3RfaWQYCCABKA0SHwoXaGFyZHdhcmVfdmVyc2lvbl9zdHJpbmcYCSABKAkSHwoXc29mdHdhcmVfdmVyc2lvbl9zdHJpbmcYCiABKAkSOgoMY29ubmVjdG9yX2lkGAsgASgLMiQua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuQ29ubmVjdG9ySWQSMgoIc3BhY2VfaWQYDCABKAsyIC5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5TcGFjZUlkEj0KCW93bmVyc2hpcBgNIAEoDjIqLmt1c2ludGEuaW90LmNvbW1vbi52MS5EZXZpY2VPd25lcnNoaXBUeXBlEj4KCWxpZmVjeWNsZRgOIAEoDjIrLmt1c2ludGEuaW90LmNvbW1vbi52MS5EZXZpY2VMaWZlY3ljbGVTdGF0ZRI2Cg1vd25lcl91c2VyX2lkGA8gASgLMh8ua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuVXNlcklkEi4KCmNsYWltZWRfYXQYECABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjoKCmJyaWRnZWRfYnkYEyABKAsyIS5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5EZXZpY2VJZEgBiAEBEj4KEWxpbmtfY2FwYWJpbGl0aWVzGBQgAygLMiMua3VzaW50YS5pb3QubGluay52MS5MaW5rQ2FwYWJpbGl0eRJNCglob21lbWF0aWMYEiABKAsyOC5rdXNpbnRhLmlvdC52ZW5kb3IuaG9tZW1hdGljLnYxLkhvbWVtYXRpY0RldmljZUlkZW50aXR5SABCEQoPdmVuZG9yX2lkZW50aXR5Qg0KC19icmlkZ2VkX2J5SgQIAhADSgQIERASUhVtYXR0ZXJfZGV2aWNlX3R5cGVfaWRSCWVuZHBvaW50c0ICSAFiBnByb3RvMw", [file_google_protobuf_timestamp, file_kusinta_iot_common_v1_types, file_kusinta_iot_identity_v1_identity, file_kusinta_iot_link_v1_link, file_kusinta_iot_vendor_homematic_v1_homematic]);
16
17
 
17
18
  /**
18
19
  * Describes the message kusinta.iot.device.v1.DeviceDescriptor.
@@ -5,7 +5,7 @@
5
5
  import type { GenFile, GenMessage } from "@bufbuild/protobuf/codegenv2";
6
6
  import type { Message } from "@bufbuild/protobuf";
7
7
  import type { ColorTemperatureLightProperties, ContactSensorProperties, DimmableLightProperties, DoorLockProperties, EnergySensorProperties, HumiditySensorProperties, OccupancySensorProperties, OnOffLightProperties, PowerSourceProperties, PressureSensorProperties, TemperatureSensorProperties, ThermostatProperties, WindowCoveringProperties } from "./properties_pb.js";
8
- import type { HmThermostatProps } from "../../vendor/homematic/v1/homematic_pb.js";
8
+ import type { HmMaintenanceProps, HmThermostatProps } from "../../vendor/homematic/v1/homematic_pb.js";
9
9
  import type { ClusterState } from "./cluster_state_pb.js";
10
10
  import type { DeviceDescriptor } from "./descriptor_pb.js";
11
11
  import type { Timestamp } from "@bufbuild/protobuf/wkt";
@@ -173,6 +173,12 @@ export declare type Endpoint = Message<"kusinta.iot.device.v1.Endpoint"> & {
173
173
  */
174
174
  value: HmThermostatProps;
175
175
  case: "hmThermostat";
176
+ } | {
177
+ /**
178
+ * @generated from field: kusinta.iot.vendor.homematic.v1.HmMaintenanceProps hm_maintenance = 51;
179
+ */
180
+ value: HmMaintenanceProps;
181
+ case: "hmMaintenance";
176
182
  } | { case: undefined; value?: undefined };
177
183
 
178
184
  /**
@@ -187,6 +193,28 @@ export declare type Endpoint = Message<"kusinta.iot.device.v1.Endpoint"> & {
187
193
  * @generated from field: repeated kusinta.iot.device.v1.ClusterState clusters = 16;
188
194
  */
189
195
  clusters: ClusterState[];
196
+
197
+ /**
198
+ * Which vendor parameters this endpoint's vendor extension actually implements, in the
199
+ * vendor's own spelling — "SABOTAGE", matching (vendor_attribute) byte for byte.
200
+ *
201
+ * The vendor mirror of ClusterState.attribute_ids, and it needs its own field because a
202
+ * vendor parameter has no cluster and so no ClusterState to be listed in. A name list
203
+ * rather than an id list because the vendor branch addresses by name, and a bare list
204
+ * rather than a per-extension map because an endpoint carries at most one vendor
205
+ * extension.
206
+ *
207
+ * Same reading as the Matter side: named here with no value = implemented, not yet
208
+ * reported. Absent from the list = this device does not have it. Empty = not stated,
209
+ * which is not a claim that the device implements nothing.
210
+ *
211
+ * This is what separates "no tamper detected" from "cannot detect tamper" — presence
212
+ * alone cannot, and for SABOTAGE the difference is a safety claim. A connector fills it
213
+ * at announcement from the parameter description its upstream system already holds.
214
+ *
215
+ * @generated from field: repeated string vendor_attribute_names = 17;
216
+ */
217
+ vendorAttributeNames: string[];
190
218
  };
191
219
 
192
220
  /**
@@ -225,8 +253,11 @@ export declare type Device = Message<"kusinta.iot.device.v1.Device"> & {
225
253
  endpoints: Endpoint[];
226
254
 
227
255
  /**
228
- * When the gateway last had evidence this device exists and is reachable — the
229
- * most recent PropertyUpdate, announcement, or command result concerning it.
256
+ * When the gateway last had evidence this device itself — the
257
+ * most recent PropertyUpdate (wheter or not the property changed) or command
258
+ * result concerning it. Should not be advanced on a device announcement: a
259
+ * connector typically re-announces from its own device list, so a device with a
260
+ * flat battery would otherwise keep looking freshly seen.
230
261
  * Gateway-observed, not connector-reported: no message on either leg carries a
231
262
  * per-device liveness timestamp, so this is as precise as the device's own report
232
263
  * interval. A device that reports every 15 minutes looks stale for 15 minutes.
@@ -13,7 +13,7 @@ import { file_kusinta_iot_vendor_homematic_v1_homematic } from "../../vendor/hom
13
13
  * Describes the file kusinta/iot/device/v1/device.proto.
14
14
  */
15
15
  export const file_kusinta_iot_device_v1_device = /*@__PURE__*/
16
- fileDesc("CiJrdXNpbnRhL2lvdC9kZXZpY2UvdjEvZGV2aWNlLnByb3RvEhVrdXNpbnRhLmlvdC5kZXZpY2UudjEirgkKCEVuZHBvaW50EhMKC2VuZHBvaW50X2lkGAEgASgNEh0KFW1hdHRlcl9kZXZpY2VfdHlwZV9pZBgCIAEoDRJBCgp0aGVybW9zdGF0GAMgASgLMisua3VzaW50YS5pb3QuZGV2aWNlLnYxLlRoZXJtb3N0YXRQcm9wZXJ0aWVzSAASUAoSdGVtcGVyYXR1cmVfc2Vuc29yGAQgASgLMjIua3VzaW50YS5pb3QuZGV2aWNlLnYxLlRlbXBlcmF0dXJlU2Vuc29yUHJvcGVydGllc0gAEkoKD2h1bWlkaXR5X3NlbnNvchgFIAEoCzIvLmt1c2ludGEuaW90LmRldmljZS52MS5IdW1pZGl0eVNlbnNvclByb3BlcnRpZXNIABJMChBvY2N1cGFuY3lfc2Vuc29yGAYgASgLMjAua3VzaW50YS5pb3QuZGV2aWNlLnYxLk9jY3VwYW5jeVNlbnNvclByb3BlcnRpZXNIABJICg5jb250YWN0X3NlbnNvchgHIAEoCzIuLmt1c2ludGEuaW90LmRldmljZS52MS5Db250YWN0U2Vuc29yUHJvcGVydGllc0gAEkoKD3dpbmRvd19jb3ZlcmluZxgIIAEoCzIvLmt1c2ludGEuaW90LmRldmljZS52MS5XaW5kb3dDb3ZlcmluZ1Byb3BlcnRpZXNIABI+Cglkb29yX2xvY2sYCSABKAsyKS5rdXNpbnRhLmlvdC5kZXZpY2UudjEuRG9vckxvY2tQcm9wZXJ0aWVzSAASQwoMb25fb2ZmX2xpZ2h0GAogASgLMisua3VzaW50YS5pb3QuZGV2aWNlLnYxLk9uT2ZmTGlnaHRQcm9wZXJ0aWVzSAASSAoOZGltbWFibGVfbGlnaHQYCyABKAsyLi5rdXNpbnRhLmlvdC5kZXZpY2UudjEuRGltbWFibGVMaWdodFByb3BlcnRpZXNIABJSChBjb2xvcl90ZW1wX2xpZ2h0GAwgASgLMjYua3VzaW50YS5pb3QuZGV2aWNlLnYxLkNvbG9yVGVtcGVyYXR1cmVMaWdodFByb3BlcnRpZXNIABJGCg1lbmVyZ3lfc2Vuc29yGA0gASgLMi0ua3VzaW50YS5pb3QuZGV2aWNlLnYxLkVuZXJneVNlbnNvclByb3BlcnRpZXNIABJKCg9wcmVzc3VyZV9zZW5zb3IYDiABKAsyLy5rdXNpbnRhLmlvdC5kZXZpY2UudjEuUHJlc3N1cmVTZW5zb3JQcm9wZXJ0aWVzSAASRAoMcG93ZXJfc291cmNlGA8gASgLMiwua3VzaW50YS5pb3QuZGV2aWNlLnYxLlBvd2VyU291cmNlUHJvcGVydGllc0gAEksKDWhtX3RoZXJtb3N0YXQYMiABKAsyMi5rdXNpbnRhLmlvdC52ZW5kb3IuaG9tZW1hdGljLnYxLkhtVGhlcm1vc3RhdFByb3BzSAESNQoIY2x1c3RlcnMYECADKAsyIy5rdXNpbnRhLmlvdC5kZXZpY2UudjEuQ2x1c3RlclN0YXRlQhMKEW1hdHRlcl9wcm9wZXJ0aWVzQhMKEXZlbmRvcl9wcm9wZXJ0aWVzIrADCgZEZXZpY2USOwoKZGVzY3JpcHRvchgBIAEoCzInLmt1c2ludGEuaW90LmRldmljZS52MS5EZXZpY2VEZXNjcmlwdG9yEjIKCWVuZHBvaW50cxgOIAMoCzIfLmt1c2ludGEuaW90LmRldmljZS52MS5FbmRwb2ludBItCglsYXN0X3NlZW4YFCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjAKDGxhc3RfdXBkYXRlZBgVIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBKBAgCEA5KBAgyEDNSCnRoZXJtb3N0YXRSEnRlbXBlcmF0dXJlX3NlbnNvclIPaHVtaWRpdHlfc2Vuc29yUhBvY2N1cGFuY3lfc2Vuc29yUg5jb250YWN0X3NlbnNvclIPd2luZG93X2NvdmVyaW5nUglkb29yX2xvY2tSDG9uX29mZl9saWdodFIOZGltbWFibGVfbGlnaHRSEGNvbG9yX3RlbXBfbGlnaHRSDWVuZXJneV9zZW5zb3JSD3ByZXNzdXJlX3NlbnNvclIJaG9tZW1hdGljQgJIAWIGcHJvdG8z", [file_google_protobuf_timestamp, file_kusinta_iot_device_v1_cluster_state, file_kusinta_iot_device_v1_descriptor, file_kusinta_iot_device_v1_properties, file_kusinta_iot_vendor_homematic_v1_homematic]);
16
+ fileDesc("CiJrdXNpbnRhL2lvdC9kZXZpY2UvdjEvZGV2aWNlLnByb3RvEhVrdXNpbnRhLmlvdC5kZXZpY2UudjEinQoKCEVuZHBvaW50EhMKC2VuZHBvaW50X2lkGAEgASgNEh0KFW1hdHRlcl9kZXZpY2VfdHlwZV9pZBgCIAEoDRJBCgp0aGVybW9zdGF0GAMgASgLMisua3VzaW50YS5pb3QuZGV2aWNlLnYxLlRoZXJtb3N0YXRQcm9wZXJ0aWVzSAASUAoSdGVtcGVyYXR1cmVfc2Vuc29yGAQgASgLMjIua3VzaW50YS5pb3QuZGV2aWNlLnYxLlRlbXBlcmF0dXJlU2Vuc29yUHJvcGVydGllc0gAEkoKD2h1bWlkaXR5X3NlbnNvchgFIAEoCzIvLmt1c2ludGEuaW90LmRldmljZS52MS5IdW1pZGl0eVNlbnNvclByb3BlcnRpZXNIABJMChBvY2N1cGFuY3lfc2Vuc29yGAYgASgLMjAua3VzaW50YS5pb3QuZGV2aWNlLnYxLk9jY3VwYW5jeVNlbnNvclByb3BlcnRpZXNIABJICg5jb250YWN0X3NlbnNvchgHIAEoCzIuLmt1c2ludGEuaW90LmRldmljZS52MS5Db250YWN0U2Vuc29yUHJvcGVydGllc0gAEkoKD3dpbmRvd19jb3ZlcmluZxgIIAEoCzIvLmt1c2ludGEuaW90LmRldmljZS52MS5XaW5kb3dDb3ZlcmluZ1Byb3BlcnRpZXNIABI+Cglkb29yX2xvY2sYCSABKAsyKS5rdXNpbnRhLmlvdC5kZXZpY2UudjEuRG9vckxvY2tQcm9wZXJ0aWVzSAASQwoMb25fb2ZmX2xpZ2h0GAogASgLMisua3VzaW50YS5pb3QuZGV2aWNlLnYxLk9uT2ZmTGlnaHRQcm9wZXJ0aWVzSAASSAoOZGltbWFibGVfbGlnaHQYCyABKAsyLi5rdXNpbnRhLmlvdC5kZXZpY2UudjEuRGltbWFibGVMaWdodFByb3BlcnRpZXNIABJSChBjb2xvcl90ZW1wX2xpZ2h0GAwgASgLMjYua3VzaW50YS5pb3QuZGV2aWNlLnYxLkNvbG9yVGVtcGVyYXR1cmVMaWdodFByb3BlcnRpZXNIABJGCg1lbmVyZ3lfc2Vuc29yGA0gASgLMi0ua3VzaW50YS5pb3QuZGV2aWNlLnYxLkVuZXJneVNlbnNvclByb3BlcnRpZXNIABJKCg9wcmVzc3VyZV9zZW5zb3IYDiABKAsyLy5rdXNpbnRhLmlvdC5kZXZpY2UudjEuUHJlc3N1cmVTZW5zb3JQcm9wZXJ0aWVzSAASRAoMcG93ZXJfc291cmNlGA8gASgLMiwua3VzaW50YS5pb3QuZGV2aWNlLnYxLlBvd2VyU291cmNlUHJvcGVydGllc0gAEksKDWhtX3RoZXJtb3N0YXQYMiABKAsyMi5rdXNpbnRhLmlvdC52ZW5kb3IuaG9tZW1hdGljLnYxLkhtVGhlcm1vc3RhdFByb3BzSAESTQoOaG1fbWFpbnRlbmFuY2UYMyABKAsyMy5rdXNpbnRhLmlvdC52ZW5kb3IuaG9tZW1hdGljLnYxLkhtTWFpbnRlbmFuY2VQcm9wc0gBEjUKCGNsdXN0ZXJzGBAgAygLMiMua3VzaW50YS5pb3QuZGV2aWNlLnYxLkNsdXN0ZXJTdGF0ZRIeChZ2ZW5kb3JfYXR0cmlidXRlX25hbWVzGBEgAygJQhMKEW1hdHRlcl9wcm9wZXJ0aWVzQhMKEXZlbmRvcl9wcm9wZXJ0aWVzIrADCgZEZXZpY2USOwoKZGVzY3JpcHRvchgBIAEoCzInLmt1c2ludGEuaW90LmRldmljZS52MS5EZXZpY2VEZXNjcmlwdG9yEjIKCWVuZHBvaW50cxgOIAMoCzIfLmt1c2ludGEuaW90LmRldmljZS52MS5FbmRwb2ludBItCglsYXN0X3NlZW4YFCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjAKDGxhc3RfdXBkYXRlZBgVIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBKBAgCEA5KBAgyEDNSCnRoZXJtb3N0YXRSEnRlbXBlcmF0dXJlX3NlbnNvclIPaHVtaWRpdHlfc2Vuc29yUhBvY2N1cGFuY3lfc2Vuc29yUg5jb250YWN0X3NlbnNvclIPd2luZG93X2NvdmVyaW5nUglkb29yX2xvY2tSDG9uX29mZl9saWdodFIOZGltbWFibGVfbGlnaHRSEGNvbG9yX3RlbXBfbGlnaHRSDWVuZXJneV9zZW5zb3JSD3ByZXNzdXJlX3NlbnNvclIJaG9tZW1hdGljQgJIAWIGcHJvdG8z", [file_google_protobuf_timestamp, file_kusinta_iot_device_v1_cluster_state, file_kusinta_iot_device_v1_descriptor, file_kusinta_iot_device_v1_properties, file_kusinta_iot_vendor_homematic_v1_homematic]);
17
17
 
18
18
  /**
19
19
  * Describes the message kusinta.iot.device.v1.Endpoint.
@@ -46,6 +46,32 @@ export declare const matter_attribute: GenExtension<FieldOptions, string>;
46
46
  */
47
47
  export declare const matter_attribute_id: GenExtension<FieldOptions, number>;
48
48
 
49
+ /**
50
+ * What the Matter specification says this attribute supports, as a bitmask:
51
+ * READ = 1, WRITE = 2, REPORT = 4. So a read-only reportable attribute is 5, a
52
+ * writable one 7, a write-only one 2.
53
+ *
54
+ * Two things this is NOT.
55
+ *
56
+ * It is not PERMISSION. access/v1/acl.proto's PermissionAction and allowed_actions
57
+ * say what a given user may do; this says what the attribute is capable of. They are
58
+ * orthogonal — a user can hold WRITE on an attribute no device will ever accept a
59
+ * write for, and the schema would be lying if either could be read off the other.
60
+ *
61
+ * It is not the IMPLEMENTED SET either. This is uniform for every device that reports
62
+ * the attribute, because it comes from the specification. Whether one particular
63
+ * device implements it at all is a runtime fact, carried per endpoint by
64
+ * ClusterState.attribute_ids — Matter's own AttributeList. A device may implement
65
+ * less than the specification allows; it may not implement more.
66
+ *
67
+ * Bit 4 is Matter's subscribable/reportable quality. Named REPORT rather than EVENT
68
+ * because Matter spends "event" on a separate concept; the vendor branch's
69
+ * equivalent bit means the same thing under its own name.
70
+ *
71
+ * @generated from extension: uint32 matter_attribute_capabilities = 50009;
72
+ */
73
+ export declare const matter_attribute_capabilities: GenExtension<FieldOptions, number>;
74
+
49
75
  /**
50
76
  * The Matter device type IDs this properties message models, e.g. 0x0301 for
51
77
  * Thermostat. Repeated because one shape of properties can serve several device
@@ -9,7 +9,7 @@ import { file_google_protobuf_descriptor } from "@bufbuild/protobuf/wkt";
9
9
  * Describes the file kusinta/iot/device/v1/matter_options.proto.
10
10
  */
11
11
  export const file_kusinta_iot_device_v1_matter_options = /*@__PURE__*/
12
- fileDesc("CiprdXNpbnRhL2lvdC9kZXZpY2UvdjEvbWF0dGVyX29wdGlvbnMucHJvdG8SFWt1c2ludGEuaW90LmRldmljZS52MTpLChFtYXR0ZXJfY2x1c3Rlcl9pZBIdLmdvb2dsZS5wcm90b2J1Zi5GaWVsZE9wdGlvbnMY0YYDIAEoDVIPbWF0dGVyQ2x1c3RlcklkOkoKEG1hdHRlcl9hdHRyaWJ1dGUSHS5nb29nbGUucHJvdG9idWYuRmllbGRPcHRpb25zGNKGAyABKAlSD21hdHRlckF0dHJpYnV0ZTpPChNtYXR0ZXJfYXR0cmlidXRlX2lkEh0uZ29vZ2xlLnByb3RvYnVmLkZpZWxkT3B0aW9ucxjWhgMgASgNUhFtYXR0ZXJBdHRyaWJ1dGVJZDpPChJtYXR0ZXJfZGV2aWNlX3R5cGUSHy5nb29nbGUucHJvdG9idWYuTWVzc2FnZU9wdGlvbnMY04YDIAMoDVIQbWF0dGVyRGV2aWNlVHlwZTpXChZtYXR0ZXJfY29tbWFuZF9jbHVzdGVyEh8uZ29vZ2xlLnByb3RvYnVmLk1lc3NhZ2VPcHRpb25zGNeGAyABKA1SFG1hdHRlckNvbW1hbmRDbHVzdGVyOlAKEW1hdHRlcl9jb21tYW5kX2lkEh8uZ29vZ2xlLnByb3RvYnVmLk1lc3NhZ2VPcHRpb25zGNiGAyABKA1SD21hdHRlckNvbW1hbmRJZIgBAUICSAFiBnByb3RvMw", [file_google_protobuf_descriptor]);
12
+ fileDesc("CiprdXNpbnRhL2lvdC9kZXZpY2UvdjEvbWF0dGVyX29wdGlvbnMucHJvdG8SFWt1c2ludGEuaW90LmRldmljZS52MTpLChFtYXR0ZXJfY2x1c3Rlcl9pZBIdLmdvb2dsZS5wcm90b2J1Zi5GaWVsZE9wdGlvbnMY0YYDIAEoDVIPbWF0dGVyQ2x1c3RlcklkOkoKEG1hdHRlcl9hdHRyaWJ1dGUSHS5nb29nbGUucHJvdG9idWYuRmllbGRPcHRpb25zGNKGAyABKAlSD21hdHRlckF0dHJpYnV0ZTpPChNtYXR0ZXJfYXR0cmlidXRlX2lkEh0uZ29vZ2xlLnByb3RvYnVmLkZpZWxkT3B0aW9ucxjWhgMgASgNUhFtYXR0ZXJBdHRyaWJ1dGVJZDpjCh1tYXR0ZXJfYXR0cmlidXRlX2NhcGFiaWxpdGllcxIdLmdvb2dsZS5wcm90b2J1Zi5GaWVsZE9wdGlvbnMY2YYDIAEoDVIbbWF0dGVyQXR0cmlidXRlQ2FwYWJpbGl0aWVzOk8KEm1hdHRlcl9kZXZpY2VfdHlwZRIfLmdvb2dsZS5wcm90b2J1Zi5NZXNzYWdlT3B0aW9ucxjThgMgAygNUhBtYXR0ZXJEZXZpY2VUeXBlOlcKFm1hdHRlcl9jb21tYW5kX2NsdXN0ZXISHy5nb29nbGUucHJvdG9idWYuTWVzc2FnZU9wdGlvbnMY14YDIAEoDVIUbWF0dGVyQ29tbWFuZENsdXN0ZXI6UAoRbWF0dGVyX2NvbW1hbmRfaWQSHy5nb29nbGUucHJvdG9idWYuTWVzc2FnZU9wdGlvbnMY2IYDIAEoDVIPbWF0dGVyQ29tbWFuZElkiAEBQgJIAWIGcHJvdG8z", [file_google_protobuf_descriptor]);
13
13
 
14
14
  /**
15
15
  * The Matter cluster this attribute belongs to, e.g. 0x0201 for Thermostat.
@@ -50,6 +50,33 @@ export const matter_attribute = /*@__PURE__*/
50
50
  export const matter_attribute_id = /*@__PURE__*/
51
51
  extDesc(file_kusinta_iot_device_v1_matter_options, 2);
52
52
 
53
+ /**
54
+ * What the Matter specification says this attribute supports, as a bitmask:
55
+ * READ = 1, WRITE = 2, REPORT = 4. So a read-only reportable attribute is 5, a
56
+ * writable one 7, a write-only one 2.
57
+ *
58
+ * Two things this is NOT.
59
+ *
60
+ * It is not PERMISSION. access/v1/acl.proto's PermissionAction and allowed_actions
61
+ * say what a given user may do; this says what the attribute is capable of. They are
62
+ * orthogonal — a user can hold WRITE on an attribute no device will ever accept a
63
+ * write for, and the schema would be lying if either could be read off the other.
64
+ *
65
+ * It is not the IMPLEMENTED SET either. This is uniform for every device that reports
66
+ * the attribute, because it comes from the specification. Whether one particular
67
+ * device implements it at all is a runtime fact, carried per endpoint by
68
+ * ClusterState.attribute_ids — Matter's own AttributeList. A device may implement
69
+ * less than the specification allows; it may not implement more.
70
+ *
71
+ * Bit 4 is Matter's subscribable/reportable quality. Named REPORT rather than EVENT
72
+ * because Matter spends "event" on a separate concept; the vendor branch's
73
+ * equivalent bit means the same thing under its own name.
74
+ *
75
+ * @generated from extension: uint32 matter_attribute_capabilities = 50009;
76
+ */
77
+ export const matter_attribute_capabilities = /*@__PURE__*/
78
+ extDesc(file_kusinta_iot_device_v1_matter_options, 3);
79
+
53
80
  /**
54
81
  * The Matter device type IDs this properties message models, e.g. 0x0301 for
55
82
  * Thermostat. Repeated because one shape of properties can serve several device
@@ -62,7 +89,7 @@ export const matter_attribute_id = /*@__PURE__*/
62
89
  * @generated from extension: repeated uint32 matter_device_type = 50003;
63
90
  */
64
91
  export const matter_device_type = /*@__PURE__*/
65
- extDesc(file_kusinta_iot_device_v1_matter_options, 3);
92
+ extDesc(file_kusinta_iot_device_v1_matter_options, 4);
66
93
 
67
94
  /**
68
95
  * The Matter cluster a command-parameters message belongs to, e.g. 0x0006 for On/Off.
@@ -71,7 +98,7 @@ export const matter_device_type = /*@__PURE__*/
71
98
  * @generated from extension: uint32 matter_command_cluster = 50007;
72
99
  */
73
100
  export const matter_command_cluster = /*@__PURE__*/
74
- extDesc(file_kusinta_iot_device_v1_matter_options, 4);
101
+ extDesc(file_kusinta_iot_device_v1_matter_options, 5);
75
102
 
76
103
  /**
77
104
  * The Matter command ID this parameters message carries arguments for, e.g. 0x00 for
@@ -87,5 +114,5 @@ export const matter_command_cluster = /*@__PURE__*/
87
114
  * @generated from extension: optional uint32 matter_command_id = 50008;
88
115
  */
89
116
  export const matter_command_id = /*@__PURE__*/
90
- extDesc(file_kusinta_iot_device_v1_matter_options, 5);
117
+ extDesc(file_kusinta_iot_device_v1_matter_options, 6);
91
118
 
@@ -71,6 +71,16 @@ export declare type ThermostatProperties = Message<"kusinta.iot.device.v1.Thermo
71
71
  * @generated from field: optional uint32 thermostat_running_mode = 10;
72
72
  */
73
73
  thermostatRunningMode?: number | undefined;
74
+
75
+ /**
76
+ * Heating demanded by the control loop, 0-100 %, which is the percentage the valve is
77
+ * open. A radiator valve's own position belongs here and not in a vendor extension: the
78
+ * Matter attribute is specified as exactly this quantity. A thermostat that drives no
79
+ * valve of its own does not implement it — see ClusterState.attribute_ids.
80
+ *
81
+ * @generated from field: optional uint32 pi_heating_demand = 11;
82
+ */
83
+ piHeatingDemand?: number | undefined;
74
84
  };
75
85
 
76
86
  /**
@@ -389,6 +399,10 @@ export declare type DimmableLightProperties = Message<"kusinta.iot.device.v1.Dim
389
399
  startUpCurrentLevel?: number | undefined;
390
400
 
391
401
  /**
402
+ * READ only: the Matter data model marks RemainingTime changes-omitted, so it is
403
+ * readable but never reported — it counts down continuously and reporting it would be
404
+ * a subscription storm.
405
+ *
392
406
  * @generated from field: optional uint32 remaining_time = 7;
393
407
  */
394
408
  remainingTime?: number | undefined;
@@ -9,7 +9,7 @@ import { file_kusinta_iot_device_v1_matter_options } from "./matter_options_pb.j
9
9
  * Describes the file kusinta/iot/device/v1/properties.proto.
10
10
  */
11
11
  export const file_kusinta_iot_device_v1_properties = /*@__PURE__*/
12
- fileDesc("CiZrdXNpbnRhL2lvdC9kZXZpY2UvdjEvcHJvcGVydGllcy5wcm90bxIVa3VzaW50YS5pb3QuZGV2aWNlLnYxIv8HChRUaGVybW9zdGF0UHJvcGVydGllcxI9ChFsb2NhbF90ZW1wZXJhdHVyZRgBIAEoEUIdiLUYgQSStRgQTG9jYWxUZW1wZXJhdHVyZbC1GABIAIgBARJMChlvY2N1cGllZF9oZWF0aW5nX3NldHBvaW50GAIgASgRQiSItRiBBJK1GBdPY2N1cGllZEhlYXRpbmdTZXRwb2ludLC1GBJIAYgBARJMChlvY2N1cGllZF9jb29saW5nX3NldHBvaW50GAMgASgRQiSItRiBBJK1GBdPY2N1cGllZENvb2xpbmdTZXRwb2ludLC1GBFIAogBARJHChdtaW5faGVhdF9zZXRwb2ludF9saW1pdBgEIAEoEUIhiLUYgQSStRgUTWluSGVhdFNldHBvaW50TGltaXSwtRgVSAOIAQESRwoXbWF4X2hlYXRfc2V0cG9pbnRfbGltaXQYBSABKBFCIYi1GIEEkrUYFE1heEhlYXRTZXRwb2ludExpbWl0sLUYFkgEiAEBEkcKF21pbl9jb29sX3NldHBvaW50X2xpbWl0GAYgASgRQiGItRiBBJK1GBRNaW5Db29sU2V0cG9pbnRMaW1pdLC1GBdIBYgBARJHChdtYXhfY29vbF9zZXRwb2ludF9saW1pdBgHIAEoEUIhiLUYgQSStRgUTWF4Q29vbFNldHBvaW50TGltaXSwtRgYSAaIAQESUwodY29udHJvbF9zZXF1ZW5jZV9vZl9vcGVyYXRpb24YCCABKA1CJ4i1GIEEkrUYGkNvbnRyb2xTZXF1ZW5jZU9mT3BlcmF0aW9usLUYG0gHiAEBEjEKC3N5c3RlbV9tb2RlGAkgASgNQheItRiBBJK1GApTeXN0ZW1Nb2RlsLUYHEgIiAEBEkgKF3RoZXJtb3N0YXRfcnVubmluZ19tb2RlGAogASgNQiKItRiBBJK1GBVUaGVybW9zdGF0UnVubmluZ01vZGWwtRgeSAmIAQE6Bpq1GAKBBkIUChJfbG9jYWxfdGVtcGVyYXR1cmVCHAoaX29jY3VwaWVkX2hlYXRpbmdfc2V0cG9pbnRCHAoaX29jY3VwaWVkX2Nvb2xpbmdfc2V0cG9pbnRCGgoYX21pbl9oZWF0X3NldHBvaW50X2xpbWl0QhoKGF9tYXhfaGVhdF9zZXRwb2ludF9saW1pdEIaChhfbWluX2Nvb2xfc2V0cG9pbnRfbGltaXRCGgoYX21heF9jb29sX3NldHBvaW50X2xpbWl0QiAKHl9jb250cm9sX3NlcXVlbmNlX29mX29wZXJhdGlvbkIOCgxfc3lzdGVtX21vZGVCGgoYX3RoZXJtb3N0YXRfcnVubmluZ19tb2RlIt0CChtUZW1wZXJhdHVyZVNlbnNvclByb3BlcnRpZXMSNwoObWVhc3VyZWRfdmFsdWUYASABKBFCGoi1GIIIkrUYDU1lYXN1cmVkVmFsdWWwtRgASACIAQESPgoSbWluX21lYXN1cmVkX3ZhbHVlGAIgASgRQh2ItRiCCJK1GBBNaW5NZWFzdXJlZFZhbHVlsLUYAUgBiAEBEj4KEm1heF9tZWFzdXJlZF92YWx1ZRgDIAEoEUIdiLUYggiStRgQTWF4TWVhc3VyZWRWYWx1ZbC1GAJIAogBARIuCgl0b2xlcmFuY2UYBCABKA1CFoi1GIIIkrUYCVRvbGVyYW5jZbC1GANIA4gBAToGmrUYAoIGQhEKD19tZWFzdXJlZF92YWx1ZUIVChNfbWluX21lYXN1cmVkX3ZhbHVlQhUKE19tYXhfbWVhc3VyZWRfdmFsdWVCDAoKX3RvbGVyYW5jZSLaAgoYSHVtaWRpdHlTZW5zb3JQcm9wZXJ0aWVzEjcKDm1lYXN1cmVkX3ZhbHVlGAEgASgNQhqItRiFCJK1GA1NZWFzdXJlZFZhbHVlsLUYAEgAiAEBEj4KEm1pbl9tZWFzdXJlZF92YWx1ZRgCIAEoDUIdiLUYhQiStRgQTWluTWVhc3VyZWRWYWx1ZbC1GAFIAYgBARI+ChJtYXhfbWVhc3VyZWRfdmFsdWUYAyABKA1CHYi1GIUIkrUYEE1heE1lYXN1cmVkVmFsdWWwtRgCSAKIAQESLgoJdG9sZXJhbmNlGAQgASgNQhaItRiFCJK1GAlUb2xlcmFuY2WwtRgDSAOIAQE6Bpq1GAKHBkIRCg9fbWVhc3VyZWRfdmFsdWVCFQoTX21pbl9tZWFzdXJlZF92YWx1ZUIVChNfbWF4X21lYXN1cmVkX3ZhbHVlQgwKCl90b2xlcmFuY2Ui4wQKGU9jY3VwYW5jeVNlbnNvclByb3BlcnRpZXMSLgoJb2NjdXBhbmN5GAEgASgNQhaItRiGCJK1GAlPY2N1cGFuY3mwtRgASACIAQESRAoVb2NjdXBhbmN5X3NlbnNvcl90eXBlGAIgASgNQiCItRiGCJK1GBNPY2N1cGFuY3lTZW5zb3JUeXBlsLUYAUgBiAEBElEKHG9jY3VwYW5jeV9zZW5zb3JfdHlwZV9iaXRtYXAYAyABKA1CJoi1GIYIkrUYGU9jY3VwYW5jeVNlbnNvclR5cGVCaXRtYXCwtRgCSAKIAQESWAogcGlyX29jY3VwaWVkX3RvX3Vub2NjdXBpZWRfZGVsYXkYBCABKA1CKYi1GIYIkrUYHFBJUk9jY3VwaWVkVG9Vbm9jY3VwaWVkRGVsYXmwtRgQSAOIAQESWAogcGlyX3Vub2NjdXBpZWRfdG9fb2NjdXBpZWRfZGVsYXkYBSABKA1CKYi1GIYIkrUYHFBJUlVub2NjdXBpZWRUb09jY3VwaWVkRGVsYXmwtRgRSASIAQE6Bpq1GAKHAkIMCgpfb2NjdXBhbmN5QhgKFl9vY2N1cGFuY3lfc2Vuc29yX3R5cGVCHwodX29jY3VwYW5jeV9zZW5zb3JfdHlwZV9iaXRtYXBCIwohX3Bpcl9vY2N1cGllZF90b191bm9jY3VwaWVkX2RlbGF5QiMKIV9waXJfdW5vY2N1cGllZF90b19vY2N1cGllZF9kZWxheVIWcGlyX29jY190b191bm9jY19kZWxheVIWcGlyX3Vub2NjX3RvX29jY19kZWxheSJiChdDb250YWN0U2Vuc29yUHJvcGVydGllcxIwCgtzdGF0ZV92YWx1ZRgBIAEoCEIWiLUYRZK1GApTdGF0ZVZhbHVlsLUYAEgAiAEBOgWatRgBFUIOCgxfc3RhdGVfdmFsdWUi2QYKGFdpbmRvd0NvdmVyaW5nUHJvcGVydGllcxItCg1jb3ZlcmluZ190eXBlGAEgASgNQhGItRiCApK1GARUeXBlsLUYAEgAiAEBEl8KI2N1cnJlbnRfcG9zaXRpb25fbGlmdF9wZXJjZW50MTAwdGhzGAIgASgNQi2ItRiCApK1GCBDdXJyZW50UG9zaXRpb25MaWZ0UGVyY2VudDEwMHRoc7C1GA5IAYgBARJfCiNjdXJyZW50X3Bvc2l0aW9uX3RpbHRfcGVyY2VudDEwMHRocxgDIAEoDUItiLUYggKStRggQ3VycmVudFBvc2l0aW9uVGlsdFBlcmNlbnQxMDB0aHOwtRgPSAKIAQESXQoidGFyZ2V0X3Bvc2l0aW9uX2xpZnRfcGVyY2VudDEwMHRocxgEIAEoDUIsiLUYggKStRgfVGFyZ2V0UG9zaXRpb25MaWZ0UGVyY2VudDEwMHRoc7C1GAtIA4gBARJdCiJ0YXJnZXRfcG9zaXRpb25fdGlsdF9wZXJjZW50MTAwdGhzGAUgASgNQiyItRiCApK1GB9UYXJnZXRQb3NpdGlvblRpbHRQZXJjZW50MTAwdGhzsLUYDEgEiAEBEj8KEm9wZXJhdGlvbmFsX3N0YXR1cxgGIAEoDUIeiLUYggKStRgRT3BlcmF0aW9uYWxTdGF0dXOwtRgKSAWIAQESOgoQZW5kX3Byb2R1Y3RfdHlwZRgHIAEoDUIbiLUYggKStRgORW5kUHJvZHVjdFR5cGWwtRgNSAaIAQESJAoEbW9kZRgIIAEoDUIRiLUYggKStRgETW9kZbC1GBdIB4gBAToGmrUYAoIEQhAKDl9jb3ZlcmluZ190eXBlQiYKJF9jdXJyZW50X3Bvc2l0aW9uX2xpZnRfcGVyY2VudDEwMHRoc0ImCiRfY3VycmVudF9wb3NpdGlvbl90aWx0X3BlcmNlbnQxMDB0aHNCJQojX3RhcmdldF9wb3NpdGlvbl9saWZ0X3BlcmNlbnQxMDB0aHNCJQojX3RhcmdldF9wb3NpdGlvbl90aWx0X3BlcmNlbnQxMDB0aHNCFQoTX29wZXJhdGlvbmFsX3N0YXR1c0ITChFfZW5kX3Byb2R1Y3RfdHlwZUIHCgVfbW9kZSL2AgoSRG9vckxvY2tQcm9wZXJ0aWVzEi8KCmxvY2tfc3RhdGUYASABKA1CFoi1GIECkrUYCUxvY2tTdGF0ZbC1GABIAIgBARItCglsb2NrX3R5cGUYAiABKA1CFYi1GIECkrUYCExvY2tUeXBlsLUYAUgBiAEBEjsKEGFjdHVhdG9yX2VuYWJsZWQYAyABKAhCHIi1GIECkrUYD0FjdHVhdG9yRW5hYmxlZLC1GAJIAogBARIvCgpkb29yX3N0YXRlGAQgASgNQhaItRiBApK1GAlEb29yU3RhdGWwtRgDSAOIAQESNwoOb3BlcmF0aW5nX21vZGUYBSABKA1CGoi1GIECkrUYDU9wZXJhdGluZ01vZGWwtRglSASIAQE6BZq1GAEKQg0KC19sb2NrX3N0YXRlQgwKCl9sb2NrX3R5cGVCEwoRX2FjdHVhdG9yX2VuYWJsZWRCDQoLX2Rvb3Jfc3RhdGVCEQoPX29wZXJhdGluZ19tb2RlIv4CChRPbk9mZkxpZ2h0UHJvcGVydGllcxImCgZvbl9vZmYYASABKAhCEYi1GAaStRgFT25PZmawtRgASACIAQESQwoUZ2xvYmFsX3NjZW5lX2NvbnRyb2wYAiABKAhCIIi1GAaStRgSR2xvYmFsU2NlbmVDb250cm9ssLUYgIABSAGIAQESKgoHb25fdGltZRgDIAEoDUIUiLUYBpK1GAZPblRpbWWwtRiBgAFIAogBARI1Cg1vZmZfd2FpdF90aW1lGAQgASgNQhmItRgGkrUYC09mZldhaXRUaW1lsLUYgoABSAOIAQESOAoPc3RhcnRfdXBfb25fb2ZmGAUgASgNQhqItRgGkrUYDFN0YXJ0VXBPbk9mZrC1GIOAAUgEiAEBOgaatRgCgAJCCQoHX29uX29mZkIXChVfZ2xvYmFsX3NjZW5lX2NvbnRyb2xCCgoIX29uX3RpbWVCEAoOX29mZl93YWl0X3RpbWVCEgoQX3N0YXJ0X3VwX29uX29mZiL7AwoXRGltbWFibGVMaWdodFByb3BlcnRpZXMSJgoGb25fb2ZmGAEgASgIQhGItRgGkrUYBU9uT2ZmsLUYAEgAiAEBEjQKDWN1cnJlbnRfbGV2ZWwYAiABKA1CGIi1GAiStRgMQ3VycmVudExldmVssLUYAEgBiAEBEiwKCW1pbl9sZXZlbBgDIAEoDUIUiLUYCJK1GAhNaW5MZXZlbLC1GAJIAogBARIsCgltYXhfbGV2ZWwYBCABKA1CFIi1GAiStRgITWF4TGV2ZWywtRgDSAOIAQESKgoIb25fbGV2ZWwYBSABKA1CE4i1GAiStRgHT25MZXZlbLC1GBFIBIgBARJGChZzdGFydF91cF9jdXJyZW50X2xldmVsGAYgASgNQiGItRgIkrUYE1N0YXJ0VXBDdXJyZW50TGV2ZWywtRiAgAFIBYgBARI2Cg5yZW1haW5pbmdfdGltZRgHIAEoDUIZiLUYCJK1GA1SZW1haW5pbmdUaW1lsLUYAUgGiAEBOgaatRgCgQJCCQoHX29uX29mZkIQCg5fY3VycmVudF9sZXZlbEIMCgpfbWluX2xldmVsQgwKCl9tYXhfbGV2ZWxCCwoJX29uX2xldmVsQhkKF19zdGFydF91cF9jdXJyZW50X2xldmVsQhEKD19yZW1haW5pbmdfdGltZSLFBQofQ29sb3JUZW1wZXJhdHVyZUxpZ2h0UHJvcGVydGllcxImCgZvbl9vZmYYASABKAhCEYi1GAaStRgFT25PZmawtRgASACIAQESNAoNY3VycmVudF9sZXZlbBgCIAEoDUIYiLUYCJK1GAxDdXJyZW50TGV2ZWywtRgASAGIAQESSgoYY29sb3JfdGVtcGVyYXR1cmVfbWlyZWRzGAMgASgNQiOItRiABpK1GBZDb2xvclRlbXBlcmF0dXJlTWlyZWRzsLUYB0gCiAEBElYKHmNvbG9yX3RlbXBfcGh5c2ljYWxfbWluX21pcmVkcxgEIAEoDUIpiLUYgAaStRgaQ29sb3JUZW1wUGh5c2ljYWxNaW5NaXJlZHOwtRiLgAFIA4gBARJWCh5jb2xvcl90ZW1wX3BoeXNpY2FsX21heF9taXJlZHMYBSABKA1CKYi1GIAGkrUYGkNvbG9yVGVtcFBoeXNpY2FsTWF4TWlyZWRzsLUYjIABSASIAQESWwogc3RhcnR1cF9jb2xvcl90ZW1wZXJhdHVyZV9taXJlZHMYBiABKA1CLIi1GIAGkrUYHVN0YXJ0VXBDb2xvclRlbXBlcmF0dXJlTWlyZWRzsLUYkIABSAWIAQESLwoKY29sb3JfbW9kZRgHIAEoDUIWiLUYgAaStRgJQ29sb3JNb2RlsLUYCEgGiAEBOgaatRgCjAJCCQoHX29uX29mZkIQCg5fY3VycmVudF9sZXZlbEIbChlfY29sb3JfdGVtcGVyYXR1cmVfbWlyZWRzQiEKH19jb2xvcl90ZW1wX3BoeXNpY2FsX21pbl9taXJlZHNCIQofX2NvbG9yX3RlbXBfcGh5c2ljYWxfbWF4X21pcmVkc0IjCiFfc3RhcnR1cF9jb2xvcl90ZW1wZXJhdHVyZV9taXJlZHNCDQoLX2NvbG9yX21vZGUi6AIKFkVuZXJneVNlbnNvclByb3BlcnRpZXMSMwoMYWN0aXZlX3Bvd2VyGAUgASgSQhiItRiQAZK1GAtBY3RpdmVQb3dlcrC1GAhIAIgBARIqCgd2b2x0YWdlGAYgASgSQhSItRiQAZK1GAdWb2x0YWdlsLUYBEgBiAEBEjcKDmFjdGl2ZV9jdXJyZW50GAcgASgSQhqItRiQAZK1GA1BY3RpdmVDdXJyZW50sLUYBUgCiAEBEi4KCWZyZXF1ZW5jeRgIIAEoEkIWiLUYkAGStRgJRnJlcXVlbmN5sLUYDkgDiAEBOgaatRgCkApCDwoNX2FjdGl2ZV9wb3dlckIKCghfdm9sdGFnZUIRCg9fYWN0aXZlX2N1cnJlbnRCDAoKX2ZyZXF1ZW5jeUoECAEQAkoECAIQA0oECAMQBEoECAQQBVILcm1zX3ZvbHRhZ2VSC3Jtc19jdXJyZW50UgxhY19mcmVxdWVuY3ki2gIKGFByZXNzdXJlU2Vuc29yUHJvcGVydGllcxI3Cg5tZWFzdXJlZF92YWx1ZRgBIAEoEUIaiLUYgwiStRgNTWVhc3VyZWRWYWx1ZbC1GABIAIgBARI+ChJtaW5fbWVhc3VyZWRfdmFsdWUYAiABKBFCHYi1GIMIkrUYEE1pbk1lYXN1cmVkVmFsdWWwtRgBSAGIAQESPgoSbWF4X21lYXN1cmVkX3ZhbHVlGAMgASgRQh2ItRiDCJK1GBBNYXhNZWFzdXJlZFZhbHVlsLUYAkgCiAEBEi4KCXRvbGVyYW5jZRgEIAEoDUIWiLUYgwiStRgJVG9sZXJhbmNlsLUYA0gDiAEBOgaatRgChQZCEQoPX21lYXN1cmVkX3ZhbHVlQhUKE19taW5fbWVhc3VyZWRfdmFsdWVCFQoTX21heF9tZWFzdXJlZF92YWx1ZUIMCgpfdG9sZXJhbmNlIqUDChVQb3dlclNvdXJjZVByb3BlcnRpZXMSQwoVYmF0X3BlcmNlbnRfcmVtYWluaW5nGAEgASgNQh+ItRgvkrUYE0JhdFBlcmNlbnRSZW1haW5pbmewtRgMSACIAQESOQoQYmF0X2NoYXJnZV9sZXZlbBgCIAEoDUIaiLUYL5K1GA5CYXRDaGFyZ2VMZXZlbLC1GA5IAYgBARJFChZiYXRfcmVwbGFjZW1lbnRfbmVlZGVkGAMgASgIQiCItRgvkrUYFEJhdFJlcGxhY2VtZW50TmVlZGVksLUYD0gCiAEBEjAKC2JhdF92b2x0YWdlGAQgASgNQhaItRgvkrUYCkJhdFZvbHRhZ2WwtRgLSAOIAQESJwoGc3RhdHVzGAUgASgNQhKItRgvkrUYBlN0YXR1c7C1GABIBIgBAToFmrUYARFCGAoWX2JhdF9wZXJjZW50X3JlbWFpbmluZ0ITChFfYmF0X2NoYXJnZV9sZXZlbEIZChdfYmF0X3JlcGxhY2VtZW50X25lZWRlZEIOCgxfYmF0X3ZvbHRhZ2VCCQoHX3N0YXR1c0ICSAFiBnByb3RvMw", [file_kusinta_iot_device_v1_matter_options]);
12
+ fileDesc("CiZrdXNpbnRhL2lvdC9kZXZpY2UvdjEvcHJvcGVydGllcy5wcm90bxIVa3VzaW50YS5pb3QuZGV2aWNlLnYxIv8IChRUaGVybW9zdGF0UHJvcGVydGllcxJBChFsb2NhbF90ZW1wZXJhdHVyZRgBIAEoEUIhiLUYgQSStRgQTG9jYWxUZW1wZXJhdHVyZbC1GADItRgFSACIAQESUAoZb2NjdXBpZWRfaGVhdGluZ19zZXRwb2ludBgCIAEoEUIoiLUYgQSStRgXT2NjdXBpZWRIZWF0aW5nU2V0cG9pbnSwtRgSyLUYB0gBiAEBElAKGW9jY3VwaWVkX2Nvb2xpbmdfc2V0cG9pbnQYAyABKBFCKIi1GIEEkrUYF09jY3VwaWVkQ29vbGluZ1NldHBvaW50sLUYEci1GAdIAogBARJLChdtaW5faGVhdF9zZXRwb2ludF9saW1pdBgEIAEoEUIliLUYgQSStRgUTWluSGVhdFNldHBvaW50TGltaXSwtRgVyLUYB0gDiAEBEksKF21heF9oZWF0X3NldHBvaW50X2xpbWl0GAUgASgRQiWItRiBBJK1GBRNYXhIZWF0U2V0cG9pbnRMaW1pdLC1GBbItRgHSASIAQESSwoXbWluX2Nvb2xfc2V0cG9pbnRfbGltaXQYBiABKBFCJYi1GIEEkrUYFE1pbkNvb2xTZXRwb2ludExpbWl0sLUYF8i1GAdIBYgBARJLChdtYXhfY29vbF9zZXRwb2ludF9saW1pdBgHIAEoEUIliLUYgQSStRgUTWF4Q29vbFNldHBvaW50TGltaXSwtRgYyLUYB0gGiAEBElcKHWNvbnRyb2xfc2VxdWVuY2Vfb2Zfb3BlcmF0aW9uGAggASgNQiuItRiBBJK1GBpDb250cm9sU2VxdWVuY2VPZk9wZXJhdGlvbrC1GBvItRgHSAeIAQESNQoLc3lzdGVtX21vZGUYCSABKA1CG4i1GIEEkrUYClN5c3RlbU1vZGWwtRgcyLUYB0gIiAEBEkwKF3RoZXJtb3N0YXRfcnVubmluZ19tb2RlGAogASgNQiaItRiBBJK1GBVUaGVybW9zdGF0UnVubmluZ01vZGWwtRgeyLUYBUgJiAEBEkAKEXBpX2hlYXRpbmdfZGVtYW5kGAsgASgNQiCItRiBBJK1GA9QSUhlYXRpbmdEZW1hbmSwtRgIyLUYBUgKiAEBOgaatRgCgQZCFAoSX2xvY2FsX3RlbXBlcmF0dXJlQhwKGl9vY2N1cGllZF9oZWF0aW5nX3NldHBvaW50QhwKGl9vY2N1cGllZF9jb29saW5nX3NldHBvaW50QhoKGF9taW5faGVhdF9zZXRwb2ludF9saW1pdEIaChhfbWF4X2hlYXRfc2V0cG9pbnRfbGltaXRCGgoYX21pbl9jb29sX3NldHBvaW50X2xpbWl0QhoKGF9tYXhfY29vbF9zZXRwb2ludF9saW1pdEIgCh5fY29udHJvbF9zZXF1ZW5jZV9vZl9vcGVyYXRpb25CDgoMX3N5c3RlbV9tb2RlQhoKGF90aGVybW9zdGF0X3J1bm5pbmdfbW9kZUIUChJfcGlfaGVhdGluZ19kZW1hbmQi7QIKG1RlbXBlcmF0dXJlU2Vuc29yUHJvcGVydGllcxI7Cg5tZWFzdXJlZF92YWx1ZRgBIAEoEUIeiLUYggiStRgNTWVhc3VyZWRWYWx1ZbC1GADItRgFSACIAQESQgoSbWluX21lYXN1cmVkX3ZhbHVlGAIgASgRQiGItRiCCJK1GBBNaW5NZWFzdXJlZFZhbHVlsLUYAci1GAVIAYgBARJCChJtYXhfbWVhc3VyZWRfdmFsdWUYAyABKBFCIYi1GIIIkrUYEE1heE1lYXN1cmVkVmFsdWWwtRgCyLUYBUgCiAEBEjIKCXRvbGVyYW5jZRgEIAEoDUIaiLUYggiStRgJVG9sZXJhbmNlsLUYA8i1GAVIA4gBAToGmrUYAoIGQhEKD19tZWFzdXJlZF92YWx1ZUIVChNfbWluX21lYXN1cmVkX3ZhbHVlQhUKE19tYXhfbWVhc3VyZWRfdmFsdWVCDAoKX3RvbGVyYW5jZSLqAgoYSHVtaWRpdHlTZW5zb3JQcm9wZXJ0aWVzEjsKDm1lYXN1cmVkX3ZhbHVlGAEgASgNQh6ItRiFCJK1GA1NZWFzdXJlZFZhbHVlsLUYAMi1GAVIAIgBARJCChJtaW5fbWVhc3VyZWRfdmFsdWUYAiABKA1CIYi1GIUIkrUYEE1pbk1lYXN1cmVkVmFsdWWwtRgByLUYBUgBiAEBEkIKEm1heF9tZWFzdXJlZF92YWx1ZRgDIAEoDUIhiLUYhQiStRgQTWF4TWVhc3VyZWRWYWx1ZbC1GALItRgFSAKIAQESMgoJdG9sZXJhbmNlGAQgASgNQhqItRiFCJK1GAlUb2xlcmFuY2WwtRgDyLUYBUgDiAEBOgaatRgChwZCEQoPX21lYXN1cmVkX3ZhbHVlQhUKE19taW5fbWVhc3VyZWRfdmFsdWVCFQoTX21heF9tZWFzdXJlZF92YWx1ZUIMCgpfdG9sZXJhbmNlIvcEChlPY2N1cGFuY3lTZW5zb3JQcm9wZXJ0aWVzEjIKCW9jY3VwYW5jeRgBIAEoDUIaiLUYhgiStRgJT2NjdXBhbmN5sLUYAMi1GAVIAIgBARJIChVvY2N1cGFuY3lfc2Vuc29yX3R5cGUYAiABKA1CJIi1GIYIkrUYE09jY3VwYW5jeVNlbnNvclR5cGWwtRgByLUYBUgBiAEBElUKHG9jY3VwYW5jeV9zZW5zb3JfdHlwZV9iaXRtYXAYAyABKA1CKoi1GIYIkrUYGU9jY3VwYW5jeVNlbnNvclR5cGVCaXRtYXCwtRgCyLUYBUgCiAEBElwKIHBpcl9vY2N1cGllZF90b191bm9jY3VwaWVkX2RlbGF5GAQgASgNQi2ItRiGCJK1GBxQSVJPY2N1cGllZFRvVW5vY2N1cGllZERlbGF5sLUYEMi1GAdIA4gBARJcCiBwaXJfdW5vY2N1cGllZF90b19vY2N1cGllZF9kZWxheRgFIAEoDUItiLUYhgiStRgcUElSVW5vY2N1cGllZFRvT2NjdXBpZWREZWxhebC1GBHItRgHSASIAQE6Bpq1GAKHAkIMCgpfb2NjdXBhbmN5QhgKFl9vY2N1cGFuY3lfc2Vuc29yX3R5cGVCHwodX29jY3VwYW5jeV9zZW5zb3JfdHlwZV9iaXRtYXBCIwohX3Bpcl9vY2N1cGllZF90b191bm9jY3VwaWVkX2RlbGF5QiMKIV9waXJfdW5vY2N1cGllZF90b19vY2N1cGllZF9kZWxheVIWcGlyX29jY190b191bm9jY19kZWxheVIWcGlyX3Vub2NjX3RvX29jY19kZWxheSJmChdDb250YWN0U2Vuc29yUHJvcGVydGllcxI0CgtzdGF0ZV92YWx1ZRgBIAEoCEIaiLUYRZK1GApTdGF0ZVZhbHVlsLUYAMi1GAVIAIgBAToFmrUYARVCDgoMX3N0YXRlX3ZhbHVlIvkGChhXaW5kb3dDb3ZlcmluZ1Byb3BlcnRpZXMSMQoNY292ZXJpbmdfdHlwZRgBIAEoDUIViLUYggKStRgEVHlwZbC1GADItRgFSACIAQESYwojY3VycmVudF9wb3NpdGlvbl9saWZ0X3BlcmNlbnQxMDB0aHMYAiABKA1CMYi1GIICkrUYIEN1cnJlbnRQb3NpdGlvbkxpZnRQZXJjZW50MTAwdGhzsLUYDsi1GAVIAYgBARJjCiNjdXJyZW50X3Bvc2l0aW9uX3RpbHRfcGVyY2VudDEwMHRocxgDIAEoDUIxiLUYggKStRggQ3VycmVudFBvc2l0aW9uVGlsdFBlcmNlbnQxMDB0aHOwtRgPyLUYBUgCiAEBEmEKInRhcmdldF9wb3NpdGlvbl9saWZ0X3BlcmNlbnQxMDB0aHMYBCABKA1CMIi1GIICkrUYH1RhcmdldFBvc2l0aW9uTGlmdFBlcmNlbnQxMDB0aHOwtRgLyLUYBUgDiAEBEmEKInRhcmdldF9wb3NpdGlvbl90aWx0X3BlcmNlbnQxMDB0aHMYBSABKA1CMIi1GIICkrUYH1RhcmdldFBvc2l0aW9uVGlsdFBlcmNlbnQxMDB0aHOwtRgMyLUYBUgEiAEBEkMKEm9wZXJhdGlvbmFsX3N0YXR1cxgGIAEoDUIiiLUYggKStRgRT3BlcmF0aW9uYWxTdGF0dXOwtRgKyLUYBUgFiAEBEj4KEGVuZF9wcm9kdWN0X3R5cGUYByABKA1CH4i1GIICkrUYDkVuZFByb2R1Y3RUeXBlsLUYDci1GAVIBogBARIoCgRtb2RlGAggASgNQhWItRiCApK1GARNb2RlsLUYF8i1GAdIB4gBAToGmrUYAoIEQhAKDl9jb3ZlcmluZ190eXBlQiYKJF9jdXJyZW50X3Bvc2l0aW9uX2xpZnRfcGVyY2VudDEwMHRoc0ImCiRfY3VycmVudF9wb3NpdGlvbl90aWx0X3BlcmNlbnQxMDB0aHNCJQojX3RhcmdldF9wb3NpdGlvbl9saWZ0X3BlcmNlbnQxMDB0aHNCJQojX3RhcmdldF9wb3NpdGlvbl90aWx0X3BlcmNlbnQxMDB0aHNCFQoTX29wZXJhdGlvbmFsX3N0YXR1c0ITChFfZW5kX3Byb2R1Y3RfdHlwZUIHCgVfbW9kZSKKAwoSRG9vckxvY2tQcm9wZXJ0aWVzEjMKCmxvY2tfc3RhdGUYASABKA1CGoi1GIECkrUYCUxvY2tTdGF0ZbC1GADItRgFSACIAQESMQoJbG9ja190eXBlGAIgASgNQhmItRiBApK1GAhMb2NrVHlwZbC1GAHItRgFSAGIAQESPwoQYWN0dWF0b3JfZW5hYmxlZBgDIAEoCEIgiLUYgQKStRgPQWN0dWF0b3JFbmFibGVksLUYAsi1GAVIAogBARIzCgpkb29yX3N0YXRlGAQgASgNQhqItRiBApK1GAlEb29yU3RhdGWwtRgDyLUYBUgDiAEBEjsKDm9wZXJhdGluZ19tb2RlGAUgASgNQh6ItRiBApK1GA1PcGVyYXRpbmdNb2RlsLUYJci1GAdIBIgBAToFmrUYAQpCDQoLX2xvY2tfc3RhdGVCDAoKX2xvY2tfdHlwZUITChFfYWN0dWF0b3JfZW5hYmxlZEINCgtfZG9vcl9zdGF0ZUIRCg9fb3BlcmF0aW5nX21vZGUikgMKFE9uT2ZmTGlnaHRQcm9wZXJ0aWVzEioKBm9uX29mZhgBIAEoCEIViLUYBpK1GAVPbk9mZrC1GADItRgFSACIAQESRwoUZ2xvYmFsX3NjZW5lX2NvbnRyb2wYAiABKAhCJIi1GAaStRgSR2xvYmFsU2NlbmVDb250cm9ssLUYgIAByLUYBUgBiAEBEi4KB29uX3RpbWUYAyABKA1CGIi1GAaStRgGT25UaW1lsLUYgYAByLUYB0gCiAEBEjkKDW9mZl93YWl0X3RpbWUYBCABKA1CHYi1GAaStRgLT2ZmV2FpdFRpbWWwtRiCgAHItRgHSAOIAQESPAoPc3RhcnRfdXBfb25fb2ZmGAUgASgNQh6ItRgGkrUYDFN0YXJ0VXBPbk9mZrC1GIOAAci1GAdIBIgBAToGmrUYAoACQgkKB19vbl9vZmZCFwoVX2dsb2JhbF9zY2VuZV9jb250cm9sQgoKCF9vbl90aW1lQhAKDl9vZmZfd2FpdF90aW1lQhIKEF9zdGFydF91cF9vbl9vZmYilwQKF0RpbW1hYmxlTGlnaHRQcm9wZXJ0aWVzEioKBm9uX29mZhgBIAEoCEIViLUYBpK1GAVPbk9mZrC1GADItRgFSACIAQESOAoNY3VycmVudF9sZXZlbBgCIAEoDUIciLUYCJK1GAxDdXJyZW50TGV2ZWywtRgAyLUYBUgBiAEBEjAKCW1pbl9sZXZlbBgDIAEoDUIYiLUYCJK1GAhNaW5MZXZlbLC1GALItRgFSAKIAQESMAoJbWF4X2xldmVsGAQgASgNQhiItRgIkrUYCE1heExldmVssLUYA8i1GAVIA4gBARIuCghvbl9sZXZlbBgFIAEoDUIXiLUYCJK1GAdPbkxldmVssLUYEci1GAdIBIgBARJKChZzdGFydF91cF9jdXJyZW50X2xldmVsGAYgASgNQiWItRgIkrUYE1N0YXJ0VXBDdXJyZW50TGV2ZWywtRiAgAHItRgHSAWIAQESOgoOcmVtYWluaW5nX3RpbWUYByABKA1CHYi1GAiStRgNUmVtYWluaW5nVGltZbC1GAHItRgBSAaIAQE6Bpq1GAKBAkIJCgdfb25fb2ZmQhAKDl9jdXJyZW50X2xldmVsQgwKCl9taW5fbGV2ZWxCDAoKX21heF9sZXZlbEILCglfb25fbGV2ZWxCGQoXX3N0YXJ0X3VwX2N1cnJlbnRfbGV2ZWxCEQoPX3JlbWFpbmluZ190aW1lIuEFCh9Db2xvclRlbXBlcmF0dXJlTGlnaHRQcm9wZXJ0aWVzEioKBm9uX29mZhgBIAEoCEIViLUYBpK1GAVPbk9mZrC1GADItRgFSACIAQESOAoNY3VycmVudF9sZXZlbBgCIAEoDUIciLUYCJK1GAxDdXJyZW50TGV2ZWywtRgAyLUYBUgBiAEBEk4KGGNvbG9yX3RlbXBlcmF0dXJlX21pcmVkcxgDIAEoDUIniLUYgAaStRgWQ29sb3JUZW1wZXJhdHVyZU1pcmVkc7C1GAfItRgFSAKIAQESWgoeY29sb3JfdGVtcF9waHlzaWNhbF9taW5fbWlyZWRzGAQgASgNQi2ItRiABpK1GBpDb2xvclRlbXBQaHlzaWNhbE1pbk1pcmVkc7C1GIuAAci1GAVIA4gBARJaCh5jb2xvcl90ZW1wX3BoeXNpY2FsX21heF9taXJlZHMYBSABKA1CLYi1GIAGkrUYGkNvbG9yVGVtcFBoeXNpY2FsTWF4TWlyZWRzsLUYjIAByLUYBUgEiAEBEl8KIHN0YXJ0dXBfY29sb3JfdGVtcGVyYXR1cmVfbWlyZWRzGAYgASgNQjCItRiABpK1GB1TdGFydFVwQ29sb3JUZW1wZXJhdHVyZU1pcmVkc7C1GJCAAci1GAdIBYgBARIzCgpjb2xvcl9tb2RlGAcgASgNQhqItRiABpK1GAlDb2xvck1vZGWwtRgIyLUYBUgGiAEBOgaatRgCjAJCCQoHX29uX29mZkIQCg5fY3VycmVudF9sZXZlbEIbChlfY29sb3JfdGVtcGVyYXR1cmVfbWlyZWRzQiEKH19jb2xvcl90ZW1wX3BoeXNpY2FsX21pbl9taXJlZHNCIQofX2NvbG9yX3RlbXBfcGh5c2ljYWxfbWF4X21pcmVkc0IjCiFfc3RhcnR1cF9jb2xvcl90ZW1wZXJhdHVyZV9taXJlZHNCDQoLX2NvbG9yX21vZGUi+AIKFkVuZXJneVNlbnNvclByb3BlcnRpZXMSNwoMYWN0aXZlX3Bvd2VyGAUgASgSQhyItRiQAZK1GAtBY3RpdmVQb3dlcrC1GAjItRgFSACIAQESLgoHdm9sdGFnZRgGIAEoEkIYiLUYkAGStRgHVm9sdGFnZbC1GATItRgFSAGIAQESOwoOYWN0aXZlX2N1cnJlbnQYByABKBJCHoi1GJABkrUYDUFjdGl2ZUN1cnJlbnSwtRgFyLUYBUgCiAEBEjIKCWZyZXF1ZW5jeRgIIAEoEkIaiLUYkAGStRgJRnJlcXVlbmN5sLUYDsi1GAVIA4gBAToGmrUYApAKQg8KDV9hY3RpdmVfcG93ZXJCCgoIX3ZvbHRhZ2VCEQoPX2FjdGl2ZV9jdXJyZW50QgwKCl9mcmVxdWVuY3lKBAgBEAJKBAgCEANKBAgDEARKBAgEEAVSC3Jtc192b2x0YWdlUgtybXNfY3VycmVudFIMYWNfZnJlcXVlbmN5IuoCChhQcmVzc3VyZVNlbnNvclByb3BlcnRpZXMSOwoObWVhc3VyZWRfdmFsdWUYASABKBFCHoi1GIMIkrUYDU1lYXN1cmVkVmFsdWWwtRgAyLUYBUgAiAEBEkIKEm1pbl9tZWFzdXJlZF92YWx1ZRgCIAEoEUIhiLUYgwiStRgQTWluTWVhc3VyZWRWYWx1ZbC1GAHItRgFSAGIAQESQgoSbWF4X21lYXN1cmVkX3ZhbHVlGAMgASgRQiGItRiDCJK1GBBNYXhNZWFzdXJlZFZhbHVlsLUYAsi1GAVIAogBARIyCgl0b2xlcmFuY2UYBCABKA1CGoi1GIMIkrUYCVRvbGVyYW5jZbC1GAPItRgFSAOIAQE6Bpq1GAKFBkIRCg9fbWVhc3VyZWRfdmFsdWVCFQoTX21pbl9tZWFzdXJlZF92YWx1ZUIVChNfbWF4X21lYXN1cmVkX3ZhbHVlQgwKCl90b2xlcmFuY2UiuQMKFVBvd2VyU291cmNlUHJvcGVydGllcxJHChViYXRfcGVyY2VudF9yZW1haW5pbmcYASABKA1CI4i1GC+StRgTQmF0UGVyY2VudFJlbWFpbmluZ7C1GAzItRgFSACIAQESPQoQYmF0X2NoYXJnZV9sZXZlbBgCIAEoDUIeiLUYL5K1GA5CYXRDaGFyZ2VMZXZlbLC1GA7ItRgFSAGIAQESSQoWYmF0X3JlcGxhY2VtZW50X25lZWRlZBgDIAEoCEIkiLUYL5K1GBRCYXRSZXBsYWNlbWVudE5lZWRlZLC1GA/ItRgFSAKIAQESNAoLYmF0X3ZvbHRhZ2UYBCABKA1CGoi1GC+StRgKQmF0Vm9sdGFnZbC1GAvItRgFSAOIAQESKwoGc3RhdHVzGAUgASgNQhaItRgvkrUYBlN0YXR1c7C1GADItRgFSASIAQE6BZq1GAERQhgKFl9iYXRfcGVyY2VudF9yZW1haW5pbmdCEwoRX2JhdF9jaGFyZ2VfbGV2ZWxCGQoXX2JhdF9yZXBsYWNlbWVudF9uZWVkZWRCDgoMX2JhdF92b2x0YWdlQgkKB19zdGF0dXNCAkgBYgZwcm90bzM", [file_kusinta_iot_device_v1_matter_options]);
13
13
 
14
14
  /**
15
15
  * Describes the message kusinta.iot.device.v1.ThermostatProperties.