@kusinta/iot-schema 0.2.0-beta.4 → 0.2.0-beta.41

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 (69) hide show
  1. package/package.json +13 -1
  2. package/src/kusinta/iot/access/v1/acl_pb.d.ts +120 -2
  3. package/src/kusinta/iot/access/v1/acl_pb.js +20 -3
  4. package/src/kusinta/iot/access/v1/roles_pb.d.ts +157 -4
  5. package/src/kusinta/iot/access/v1/roles_pb.js +125 -5
  6. package/src/kusinta/iot/accountlink/v1/account_link_pb.d.ts +583 -0
  7. package/src/kusinta/iot/accountlink/v1/account_link_pb.js +160 -0
  8. package/src/kusinta/iot/climate/v1/climate_pb.d.ts +1041 -0
  9. package/src/kusinta/iot/climate/v1/climate_pb.js +206 -0
  10. package/src/kusinta/iot/commissioning/v1/commissioning_pb.d.ts +1280 -0
  11. package/src/kusinta/iot/commissioning/v1/commissioning_pb.js +275 -0
  12. package/src/kusinta/iot/common/v1/pairing_pb.d.ts +217 -0
  13. package/src/kusinta/iot/common/v1/pairing_pb.js +50 -0
  14. package/src/kusinta/iot/common/v1/types_pb.d.ts +232 -0
  15. package/src/kusinta/iot/common/v1/types_pb.js +84 -2
  16. package/src/kusinta/iot/connector/v1/connector_pb.d.ts +691 -2
  17. package/src/kusinta/iot/connector/v1/connector_pb.js +104 -13
  18. package/src/kusinta/iot/device/v1/cluster_state_pb.d.ts +213 -1
  19. package/src/kusinta/iot/device/v1/cluster_state_pb.js +37 -2
  20. package/src/kusinta/iot/device/v1/descriptor_pb.d.ts +33 -3
  21. package/src/kusinta/iot/device/v1/descriptor_pb.js +2 -1
  22. package/src/kusinta/iot/device/v1/device_event_pb.d.ts +87 -5
  23. package/src/kusinta/iot/device/v1/device_event_pb.js +1 -1
  24. package/src/kusinta/iot/device/v1/device_pb.d.ts +164 -11
  25. package/src/kusinta/iot/device/v1/device_pb.js +33 -2
  26. package/src/kusinta/iot/device/v1/properties_pb.d.ts +26 -5
  27. package/src/kusinta/iot/device/v1/properties_pb.js +1 -1
  28. package/src/kusinta/iot/device/v1/property_update_pb.d.ts +28 -2
  29. package/src/kusinta/iot/device/v1/property_update_pb.js +2 -1
  30. package/src/kusinta/iot/heating/v1/heating_pb.d.ts +619 -0
  31. package/src/kusinta/iot/heating/v1/heating_pb.js +118 -0
  32. package/src/kusinta/iot/link/v1/link_pb.d.ts +438 -0
  33. package/src/kusinta/iot/link/v1/link_pb.js +121 -0
  34. package/src/kusinta/iot/registration/v1/registration_pb.d.ts +18 -0
  35. package/src/kusinta/iot/registration/v1/registration_pb.js +1 -1
  36. package/src/kusinta/iot/reporting/v1/reporting_pb.d.ts +1228 -0
  37. package/src/kusinta/iot/reporting/v1/reporting_pb.js +238 -0
  38. package/src/kusinta/iot/reporting/v1/reporting_service_pb.d.ts +63 -0
  39. package/src/kusinta/iot/reporting/v1/reporting_service_pb.js +24 -0
  40. package/src/kusinta/iot/signaling/v1/signaling_pb.d.ts +936 -7
  41. package/src/kusinta/iot/signaling/v1/signaling_pb.js +163 -4
  42. package/src/kusinta/iot/signaling/v1/signaling_service_pb.d.ts +24 -1
  43. package/src/kusinta/iot/signaling/v1/signaling_service_pb.js +1 -1
  44. package/src/kusinta/iot/space/v1/space_pb.d.ts +129 -2
  45. package/src/kusinta/iot/space/v1/space_pb.js +10 -1
  46. package/src/kusinta/iot/vendor/homematic/v1/homematic_pb.d.ts +19 -3
  47. package/src/kusinta/iot/vendor/homematic/v1/homematic_pb.js +1 -1
  48. package/src/kusinta/iot/vendor/lorawan/v1/lorawan_pb.d.ts +69 -0
  49. package/src/kusinta/iot/vendor/lorawan/v1/lorawan_pb.js +19 -0
  50. package/src/kusinta/iot/vendor/v1/vendor_options_pb.d.ts +4 -4
  51. package/src/kusinta/iot/vendor/v1/vendor_options_pb.js +4 -4
  52. package/src/kusinta/iot/webrtc/v1/app_token_pb.d.ts +48 -5
  53. package/src/kusinta/iot/webrtc/v1/app_token_pb.js +1 -1
  54. package/src/kusinta/iot/webrtc/v1/command_pb.d.ts +56 -0
  55. package/src/kusinta/iot/webrtc/v1/command_pb.js +1 -1
  56. package/src/kusinta/iot/webrtc/v1/device_state_pb.d.ts +179 -5
  57. package/src/kusinta/iot/webrtc/v1/device_state_pb.js +35 -6
  58. package/src/kusinta/iot/webrtc/v1/envelope_pb.d.ts +664 -3
  59. package/src/kusinta/iot/webrtc/v1/envelope_pb.js +69 -3
  60. package/src/kusinta/iot/webrtc/v1/household_pb.d.ts +490 -0
  61. package/src/kusinta/iot/webrtc/v1/household_pb.js +120 -0
  62. package/src/kusinta/iot/webrtc/v1/invite_pb.d.ts +502 -0
  63. package/src/kusinta/iot/webrtc/v1/invite_pb.js +108 -0
  64. package/src/kusinta/iot/webrtc/v1/management_pb.d.ts +1944 -76
  65. package/src/kusinta/iot/webrtc/v1/management_pb.js +297 -5
  66. package/src/kusinta/iot/webrtc/v1/members_pb.d.ts +578 -0
  67. package/src/kusinta/iot/webrtc/v1/members_pb.js +113 -0
  68. package/src/kusinta/iot/webrtc/v1/permission_push_pb.d.ts +66 -4
  69. package/src/kusinta/iot/webrtc/v1/permission_push_pb.js +10 -2
@@ -2,14 +2,17 @@
2
2
  // @generated from file kusinta/iot/signaling/v1/signaling.proto (package kusinta.iot.signaling.v1, syntax proto3)
3
3
  /* eslint-disable */
4
4
 
5
- import { fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv2";
5
+ import { enumDesc, fileDesc, messageDesc, tsEnum } from "@bufbuild/protobuf/codegenv2";
6
+ import { file_google_protobuf_timestamp } from "@bufbuild/protobuf/wkt";
7
+ import { file_kusinta_iot_accountlink_v1_account_link } from "../../accountlink/v1/account_link_pb.js";
8
+ import { file_kusinta_iot_common_v1_types } from "../../common/v1/types_pb.js";
6
9
  import { file_kusinta_iot_identity_v1_identity } from "../../identity/v1/identity_pb.js";
7
10
 
8
11
  /**
9
12
  * Describes the file kusinta/iot/signaling/v1/signaling.proto.
10
13
  */
11
14
  export const file_kusinta_iot_signaling_v1_signaling = /*@__PURE__*/
12
- fileDesc("CihrdXNpbnRhL2lvdC9zaWduYWxpbmcvdjEvc2lnbmFsaW5nLnByb3RvEhhrdXNpbnRhLmlvdC5zaWduYWxpbmcudjEiFwoIU2RwT2ZmZXISCwoDc2RwGAEgASgJIhgKCVNkcEFuc3dlchILCgNzZHAYASABKAkiSwoMSWNlQ2FuZGlkYXRlEhEKCWNhbmRpZGF0ZRgBIAEoCRIPCgdzZHBfbWlkGAIgASgJEhcKD3NkcF9tbGluZV9pbmRleBgDIAEoBSILCglIZWFydEJlYXQiTgoNVXNlckhhbmRzaGFrZRI9ChF0YXJnZXRfZ2F0ZXdheV9pZBgBIAEoCzIiLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLkdhdGV3YXlJZCI0ChBVc2VySGFuZHNoYWtlQWNrEhAKCGFjY2VwdGVkGAEgASgIEg4KBnJlYXNvbhgCIAEoCSKhAgoVR2F0ZXdheUNvbm5lY3RSZXF1ZXN0EjcKDnRhcmdldF91c2VyX2lkGAEgASgLMh8ua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuVXNlcklkEhIKCnNlc3Npb25faWQYBSABKAkSNQoGYW5zd2VyGAIgASgLMiMua3VzaW50YS5pb3Quc2lnbmFsaW5nLnYxLlNkcEFuc3dlckgAEj8KDWljZV9jYW5kaWRhdGUYAyABKAsyJi5rdXNpbnRhLmlvdC5zaWduYWxpbmcudjEuSWNlQ2FuZGlkYXRlSAASOAoJaGVhcnRiZWF0GAQgASgLMiMua3VzaW50YS5pb3Quc2lnbmFsaW5nLnYxLkhlYXJ0QmVhdEgAQgkKB3BheWxvYWQi5AEKFkdhdGV3YXlDb25uZWN0UmVzcG9uc2USNQoMZnJvbV91c2VyX2lkGAEgASgLMh8ua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuVXNlcklkEhIKCnNlc3Npb25faWQYBCABKAkSMwoFb2ZmZXIYAiABKAsyIi5rdXNpbnRhLmlvdC5zaWduYWxpbmcudjEuU2RwT2ZmZXJIABI/Cg1pY2VfY2FuZGlkYXRlGAMgASgLMiYua3VzaW50YS5pb3Quc2lnbmFsaW5nLnYxLkljZUNhbmRpZGF0ZUgAQgkKB3BheWxvYWQi5wEKElVzZXJDb25uZWN0UmVxdWVzdBISCgpzZXNzaW9uX2lkGAQgASgJEjwKCWhhbmRzaGFrZRgBIAEoCzInLmt1c2ludGEuaW90LnNpZ25hbGluZy52MS5Vc2VySGFuZHNoYWtlSAASMwoFb2ZmZXIYAiABKAsyIi5rdXNpbnRhLmlvdC5zaWduYWxpbmcudjEuU2RwT2ZmZXJIABI/Cg1pY2VfY2FuZGlkYXRlGAMgASgLMiYua3VzaW50YS5pb3Quc2lnbmFsaW5nLnYxLkljZUNhbmRpZGF0ZUgAQgkKB3BheWxvYWQi8QEKE1VzZXJDb25uZWN0UmVzcG9uc2USEgoKc2Vzc2lvbl9pZBgEIAEoCRJDCg1oYW5kc2hha2VfYWNrGAEgASgLMioua3VzaW50YS5pb3Quc2lnbmFsaW5nLnYxLlVzZXJIYW5kc2hha2VBY2tIABI1CgZhbnN3ZXIYAiABKAsyIy5rdXNpbnRhLmlvdC5zaWduYWxpbmcudjEuU2RwQW5zd2VySAASPwoNaWNlX2NhbmRpZGF0ZRgDIAEoCzImLmt1c2ludGEuaW90LnNpZ25hbGluZy52MS5JY2VDYW5kaWRhdGVIAEIJCgdwYXlsb2FkQgJIAWIGcHJvdG8z", [file_kusinta_iot_identity_v1_identity]);
15
+ fileDesc("CihrdXNpbnRhL2lvdC9zaWduYWxpbmcvdjEvc2lnbmFsaW5nLnByb3RvEhhrdXNpbnRhLmlvdC5zaWduYWxpbmcudjEiFwoIU2RwT2ZmZXISCwoDc2RwGAEgASgJIhgKCVNkcEFuc3dlchILCgNzZHAYASABKAkiSwoMSWNlQ2FuZGlkYXRlEhEKCWNhbmRpZGF0ZRgBIAEoCRIPCgdzZHBfbWlkGAIgASgJEhcKD3NkcF9tbGluZV9pbmRleBgDIAEoBSILCglIZWFydEJlYXQiTgoNVXNlckhhbmRzaGFrZRI9ChF0YXJnZXRfZ2F0ZXdheV9pZBgBIAEoCzIiLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLkdhdGV3YXlJZCJTChBVc2VySGFuZHNoYWtlQWNrEhAKCGFjY2VwdGVkGAEgASgIEg4KBnJlYXNvbhgCIAEoCRIdChVoZWFydGJlYXRfaW50ZXJ2YWxfbXMYAyABKA0isgYKFUdhdGV3YXlDb25uZWN0UmVxdWVzdBI3Cg50YXJnZXRfdXNlcl9pZBgBIAEoCzIfLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLlVzZXJJZBISCgpzZXNzaW9uX2lkGAUgASgJEjUKBmFuc3dlchgCIAEoCzIjLmt1c2ludGEuaW90LnNpZ25hbGluZy52MS5TZHBBbnN3ZXJIABI/Cg1pY2VfY2FuZGlkYXRlGAMgASgLMiYua3VzaW50YS5pb3Quc2lnbmFsaW5nLnYxLkljZUNhbmRpZGF0ZUgAEjgKCWhlYXJ0YmVhdBgEIAEoCzIjLmt1c2ludGEuaW90LnNpZ25hbGluZy52MS5IZWFydEJlYXRIABJMChRyZWRlZW1faW52aXRlX3Jlc3VsdBgGIAEoCzIsLmt1c2ludGEuaW90LnNpZ25hbGluZy52MS5SZWRlZW1JbnZpdGVSZXN1bHRIABJgCh52b3VjaGVkX2FkbWluaXN0cmF0b3JzX2FwcGxpZWQYByABKAsyNi5rdXNpbnRhLmlvdC5zaWduYWxpbmcudjEuVm91Y2hlZEFkbWluaXN0cmF0b3JzQXBwbGllZEgAElQKGHRyYW5zZmVyX291dGNvbWVfYXBwbGllZBgIIAEoCzIwLmt1c2ludGEuaW90LnNpZ25hbGluZy52MS5UcmFuc2Zlck91dGNvbWVBcHBsaWVkSAASNwoFd2lwZWQYCSABKAsyJi5rdXNpbnRhLmlvdC5zaWduYWxpbmcudjEuR2F0ZXdheVdpcGVkSAASTAoTYWNjb3VudF9saW5rX3Jlc3VsdBgKIAEoCzItLmt1c2ludGEuaW90LmFjY291bnRsaW5rLnYxLkFjY291bnRMaW5rUmVzdWx0SAASQQoNcmVmcmVzaF90b2tlbhgLIAEoCzIoLmt1c2ludGEuaW90LmFjY291bnRsaW5rLnYxLlJlZnJlc2hUb2tlbkgAEj8KDHJldm9rZV90b2tlbhgMIAEoCzInLmt1c2ludGEuaW90LmFjY291bnRsaW5rLnYxLlJldm9rZVRva2VuSABCCQoHcGF5bG9hZCLvBgoWR2F0ZXdheUNvbm5lY3RSZXNwb25zZRI1Cgxmcm9tX3VzZXJfaWQYASABKAsyHy5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5Vc2VySWQSEgoKc2Vzc2lvbl9pZBgEIAEoCRIzCgVvZmZlchgCIAEoCzIiLmt1c2ludGEuaW90LnNpZ25hbGluZy52MS5TZHBPZmZlckgAEj8KDWljZV9jYW5kaWRhdGUYAyABKAsyJi5rdXNpbnRhLmlvdC5zaWduYWxpbmcudjEuSWNlQ2FuZGlkYXRlSAASPwoNcmVkZWVtX2ludml0ZRgFIAEoCzImLmt1c2ludGEuaW90LnNpZ25hbGluZy52MS5SZWRlZW1JbnZpdGVIABJRChZ2b3VjaGVkX2FkbWluaXN0cmF0b3JzGAYgASgLMi8ua3VzaW50YS5pb3Quc2lnbmFsaW5nLnYxLlZvdWNoZWRBZG1pbmlzdHJhdG9yc0gAEkUKEHRyYW5zZmVyX291dGNvbWUYByABKAsyKS5rdXNpbnRhLmlvdC5zaWduYWxpbmcudjEuVHJhbnNmZXJPdXRjb21lSAASRgoNc3RyZWFtX29wZW5lZBgIIAEoCzItLmt1c2ludGEuaW90LnNpZ25hbGluZy52MS5HYXRld2F5U3RyZWFtT3BlbmVkSAASQwoPZ2F0ZXdheV9kZWxldGVkGAkgASgLMigua3VzaW50YS5pb3Quc2lnbmFsaW5nLnYxLkdhdGV3YXlEZWxldGVkSAASQwoOYWNjb3VudF9saW5rZWQYCiABKAsyKS5rdXNpbnRhLmlvdC5hY2NvdW50bGluay52MS5BY2NvdW50TGlua2VkSAASRQoPdG9rZW5fcmVmcmVzaGVkGAsgASgLMioua3VzaW50YS5pb3QuYWNjb3VudGxpbmsudjEuVG9rZW5SZWZyZXNoZWRIABJBCg10b2tlbl9yZXZva2VkGAwgASgLMigua3VzaW50YS5pb3QuYWNjb3VudGxpbmsudjEuVG9rZW5SZXZva2VkSAASUgoWYWNjb3VudF9saW5rX2NhbmNlbGxlZBgNIAEoCzIwLmt1c2ludGEuaW90LmFjY291bnRsaW5rLnYxLkFjY291bnRMaW5rQ2FuY2VsbGVkSABCCQoHcGF5bG9hZCJ7CgxSZWRlZW1JbnZpdGUSEgoKcmVxdWVzdF9pZBgBIAEoCRIPCgV0b2tlbhgCIAEoCUgAEg4KBGNvZGUYAyABKAlIABIUCgxkaXNwbGF5X25hbWUYBCABKAkSFgoOdmVyaWZpZWRfZW1haWwYBSABKAlCCAoGc2VjcmV0ImIKElJlZGVlbUludml0ZVJlc3VsdBISCgpyZXF1ZXN0X2lkGAEgASgJEjgKB291dGNvbWUYAiABKA4yJy5rdXNpbnRhLmlvdC5zaWduYWxpbmcudjEuUmVkZWVtT3V0Y29tZSIuChNHYXRld2F5U3RyZWFtT3BlbmVkEhcKD293bmVyc2hpcF9lcG9jaBgBIAEoCSJdCg5HYXRld2F5RGVsZXRlZBIXCg9vd25lcnNoaXBfZXBvY2gYASABKAkSMgoFc2NvcGUYAiABKA4yIy5rdXNpbnRhLmlvdC5zaWduYWxpbmcudjEuV2lwZVNjb3BlIp4BCgxHYXRld2F5V2lwZWQSFwoPb3duZXJzaGlwX2Vwb2NoGAEgASgJEjIKBXNjb3BlGAIgASgOMiMua3VzaW50YS5pb3Quc2lnbmFsaW5nLnYxLldpcGVTY29wZRJBCgtsZWZ0X2JlaGluZBgDIAMoCzIsLmt1c2ludGEuaW90LnNpZ25hbGluZy52MS5QYWlyaW5nc0xlZnRCZWhpbmQiXgoSUGFpcmluZ3NMZWZ0QmVoaW5kEjIKBGtpbmQYASABKA4yJC5rdXNpbnRhLmlvdC5jb21tb24udjEuQ29ubmVjdG9yS2luZBIUCgxkaXNwbGF5X25hbWUYAiABKAkiqwEKFVZvdWNoZWRBZG1pbmlzdHJhdG9ycxIPCgd2ZXJzaW9uGAEgASgEEjcKDmFkbWluaXN0cmF0b3JzGAIgAygLMh8ua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuVXNlcklkEhkKEW9yZ2FuaXNhdGlvbl9uYW1lGAMgASgJEi0KCWlzc3VlZF9hdBgEIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAiLwocVm91Y2hlZEFkbWluaXN0cmF0b3JzQXBwbGllZBIPCgd2ZXJzaW9uGAEgASgEIqsBCg9UcmFuc2Zlck91dGNvbWUSEwoLdHJhbnNmZXJfaWQYASABKAkSRwoOYWRtaW5pc3RyYXRvcnMYAiABKAsyLy5rdXNpbnRhLmlvdC5zaWduYWxpbmcudjEuVm91Y2hlZEFkbWluaXN0cmF0b3JzEjoKCG91dGdvaW5nGAMgAygLMigua3VzaW50YS5pb3Quc2lnbmFsaW5nLnYxLk91dGdvaW5nQ2hvaWNlIrMBCg5PdXRnb2luZ0Nob2ljZRIwCgd1c2VyX2lkGAEgASgLMh8ua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuVXNlcklkEj0KBmNob2ljZRgCIAEoDjItLmt1c2ludGEuaW90LnNpZ25hbGluZy52MS5PdXRnb2luZ1N0YWZmQ2hvaWNlEjAKDGFjY2Vzc191bnRpbBgDIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAiLQoWVHJhbnNmZXJPdXRjb21lQXBwbGllZBITCgt0cmFuc2Zlcl9pZBgBIAEoCSLnAQoSVXNlckNvbm5lY3RSZXF1ZXN0EhIKCnNlc3Npb25faWQYBCABKAkSPAoJaGFuZHNoYWtlGAEgASgLMicua3VzaW50YS5pb3Quc2lnbmFsaW5nLnYxLlVzZXJIYW5kc2hha2VIABIzCgVvZmZlchgCIAEoCzIiLmt1c2ludGEuaW90LnNpZ25hbGluZy52MS5TZHBPZmZlckgAEj8KDWljZV9jYW5kaWRhdGUYAyABKAsyJi5rdXNpbnRhLmlvdC5zaWduYWxpbmcudjEuSWNlQ2FuZGlkYXRlSABCCQoHcGF5bG9hZCKrAgoTVXNlckNvbm5lY3RSZXNwb25zZRISCgpzZXNzaW9uX2lkGAQgASgJEkMKDWhhbmRzaGFrZV9hY2sYASABKAsyKi5rdXNpbnRhLmlvdC5zaWduYWxpbmcudjEuVXNlckhhbmRzaGFrZUFja0gAEjUKBmFuc3dlchgCIAEoCzIjLmt1c2ludGEuaW90LnNpZ25hbGluZy52MS5TZHBBbnN3ZXJIABI/Cg1pY2VfY2FuZGlkYXRlGAMgASgLMiYua3VzaW50YS5pb3Quc2lnbmFsaW5nLnYxLkljZUNhbmRpZGF0ZUgAEjgKCWhlYXJ0YmVhdBgFIAEoCzIjLmt1c2ludGEuaW90LnNpZ25hbGluZy52MS5IZWFydEJlYXRIAEIJCgdwYXlsb2FkIm8KEVVzZXJMaXN0ZW5SZXF1ZXN0EjoKCWhhbmRzaGFrZRgBIAEoCzInLmt1c2ludGEuaW90LnNpZ25hbGluZy52MS5Vc2VySGFuZHNoYWtlEhIKCnNlc3Npb25faWQYBCABKAlKBAgCEANKBAgDEAQiVQoSVXNlckxpc3RlblJlc3BvbnNlEj8KCHJlc3BvbnNlGAEgASgLMi0ua3VzaW50YS5pb3Quc2lnbmFsaW5nLnYxLlVzZXJDb25uZWN0UmVzcG9uc2UitwEKD1VzZXJTZW5kUmVxdWVzdBISCgpzZXNzaW9uX2lkGAQgASgJEjMKBW9mZmVyGAIgASgLMiIua3VzaW50YS5pb3Quc2lnbmFsaW5nLnYxLlNkcE9mZmVySAASPwoNaWNlX2NhbmRpZGF0ZRgDIAEoCzImLmt1c2ludGEuaW90LnNpZ25hbGluZy52MS5JY2VDYW5kaWRhdGVIAEIJCgdwYXlsb2FkSgQIARACUgloYW5kc2hha2UiEgoQVXNlclNlbmRSZXNwb25zZSrOAQoNUmVkZWVtT3V0Y29tZRIeChpSRURFRU1fT1VUQ09NRV9VTlNQRUNJRklFRBAAEhkKFVJFREVFTV9PVVRDT01FX0pPSU5FRBABEiMKH1JFREVFTV9PVVRDT01FX1BFTkRJTkdfQVBQUk9WQUwQAhIaChZSRURFRU1fT1VUQ09NRV9JTlZBTElEEAMSIAocUkVERUVNX09VVENPTUVfV1JPTkdfQUNDT1VOVBAEEh8KG1JFREVFTV9PVVRDT01FX05PVF9FTElHSUJMRRAFKmgKCVdpcGVTY29wZRIaChZXSVBFX1NDT1BFX1VOU1BFQ0lGSUVEEAASIQodV0lQRV9TQ09QRV9QRU9QTEVfQU5EX0hJU1RPUlkQARIcChhXSVBFX1NDT1BFX0ZBQ1RPUllfUkVTRVQQAiqLAQoTT3V0Z29pbmdTdGFmZkNob2ljZRIlCiFPVVRHT0lOR19TVEFGRl9DSE9JQ0VfVU5TUEVDSUZJRUQQABIfChtPVVRHT0lOR19TVEFGRl9DSE9JQ0VfTEVBVkUQARIsCihPVVRHT0lOR19TVEFGRl9DSE9JQ0VfU1RBWV9BU19URUNITklDSUFOEAJCAkgBYgZwcm90bzM", [file_google_protobuf_timestamp, file_kusinta_iot_accountlink_v1_account_link, file_kusinta_iot_common_v1_types, file_kusinta_iot_identity_v1_identity]);
13
16
 
14
17
  /**
15
18
  * Describes the message kusinta.iot.signaling.v1.SdpOffer.
@@ -67,17 +70,173 @@ export const GatewayConnectRequestSchema = /*@__PURE__*/
67
70
  export const GatewayConnectResponseSchema = /*@__PURE__*/
68
71
  messageDesc(file_kusinta_iot_signaling_v1_signaling, 7);
69
72
 
73
+ /**
74
+ * Describes the message kusinta.iot.signaling.v1.RedeemInvite.
75
+ * Use `create(RedeemInviteSchema)` to create a new message.
76
+ */
77
+ export const RedeemInviteSchema = /*@__PURE__*/
78
+ messageDesc(file_kusinta_iot_signaling_v1_signaling, 8);
79
+
80
+ /**
81
+ * Describes the message kusinta.iot.signaling.v1.RedeemInviteResult.
82
+ * Use `create(RedeemInviteResultSchema)` to create a new message.
83
+ */
84
+ export const RedeemInviteResultSchema = /*@__PURE__*/
85
+ messageDesc(file_kusinta_iot_signaling_v1_signaling, 9);
86
+
87
+ /**
88
+ * Describes the message kusinta.iot.signaling.v1.GatewayStreamOpened.
89
+ * Use `create(GatewayStreamOpenedSchema)` to create a new message.
90
+ */
91
+ export const GatewayStreamOpenedSchema = /*@__PURE__*/
92
+ messageDesc(file_kusinta_iot_signaling_v1_signaling, 10);
93
+
94
+ /**
95
+ * Describes the message kusinta.iot.signaling.v1.GatewayDeleted.
96
+ * Use `create(GatewayDeletedSchema)` to create a new message.
97
+ */
98
+ export const GatewayDeletedSchema = /*@__PURE__*/
99
+ messageDesc(file_kusinta_iot_signaling_v1_signaling, 11);
100
+
101
+ /**
102
+ * Describes the message kusinta.iot.signaling.v1.GatewayWiped.
103
+ * Use `create(GatewayWipedSchema)` to create a new message.
104
+ */
105
+ export const GatewayWipedSchema = /*@__PURE__*/
106
+ messageDesc(file_kusinta_iot_signaling_v1_signaling, 12);
107
+
108
+ /**
109
+ * Describes the message kusinta.iot.signaling.v1.PairingsLeftBehind.
110
+ * Use `create(PairingsLeftBehindSchema)` to create a new message.
111
+ */
112
+ export const PairingsLeftBehindSchema = /*@__PURE__*/
113
+ messageDesc(file_kusinta_iot_signaling_v1_signaling, 13);
114
+
115
+ /**
116
+ * Describes the message kusinta.iot.signaling.v1.VouchedAdministrators.
117
+ * Use `create(VouchedAdministratorsSchema)` to create a new message.
118
+ */
119
+ export const VouchedAdministratorsSchema = /*@__PURE__*/
120
+ messageDesc(file_kusinta_iot_signaling_v1_signaling, 14);
121
+
122
+ /**
123
+ * Describes the message kusinta.iot.signaling.v1.VouchedAdministratorsApplied.
124
+ * Use `create(VouchedAdministratorsAppliedSchema)` to create a new message.
125
+ */
126
+ export const VouchedAdministratorsAppliedSchema = /*@__PURE__*/
127
+ messageDesc(file_kusinta_iot_signaling_v1_signaling, 15);
128
+
129
+ /**
130
+ * Describes the message kusinta.iot.signaling.v1.TransferOutcome.
131
+ * Use `create(TransferOutcomeSchema)` to create a new message.
132
+ */
133
+ export const TransferOutcomeSchema = /*@__PURE__*/
134
+ messageDesc(file_kusinta_iot_signaling_v1_signaling, 16);
135
+
136
+ /**
137
+ * Describes the message kusinta.iot.signaling.v1.OutgoingChoice.
138
+ * Use `create(OutgoingChoiceSchema)` to create a new message.
139
+ */
140
+ export const OutgoingChoiceSchema = /*@__PURE__*/
141
+ messageDesc(file_kusinta_iot_signaling_v1_signaling, 17);
142
+
143
+ /**
144
+ * Describes the message kusinta.iot.signaling.v1.TransferOutcomeApplied.
145
+ * Use `create(TransferOutcomeAppliedSchema)` to create a new message.
146
+ */
147
+ export const TransferOutcomeAppliedSchema = /*@__PURE__*/
148
+ messageDesc(file_kusinta_iot_signaling_v1_signaling, 18);
149
+
70
150
  /**
71
151
  * Describes the message kusinta.iot.signaling.v1.UserConnectRequest.
72
152
  * Use `create(UserConnectRequestSchema)` to create a new message.
73
153
  */
74
154
  export const UserConnectRequestSchema = /*@__PURE__*/
75
- messageDesc(file_kusinta_iot_signaling_v1_signaling, 8);
155
+ messageDesc(file_kusinta_iot_signaling_v1_signaling, 19);
76
156
 
77
157
  /**
78
158
  * Describes the message kusinta.iot.signaling.v1.UserConnectResponse.
79
159
  * Use `create(UserConnectResponseSchema)` to create a new message.
80
160
  */
81
161
  export const UserConnectResponseSchema = /*@__PURE__*/
82
- messageDesc(file_kusinta_iot_signaling_v1_signaling, 9);
162
+ messageDesc(file_kusinta_iot_signaling_v1_signaling, 20);
163
+
164
+ /**
165
+ * Describes the message kusinta.iot.signaling.v1.UserListenRequest.
166
+ * Use `create(UserListenRequestSchema)` to create a new message.
167
+ */
168
+ export const UserListenRequestSchema = /*@__PURE__*/
169
+ messageDesc(file_kusinta_iot_signaling_v1_signaling, 21);
170
+
171
+ /**
172
+ * Describes the message kusinta.iot.signaling.v1.UserListenResponse.
173
+ * Use `create(UserListenResponseSchema)` to create a new message.
174
+ */
175
+ export const UserListenResponseSchema = /*@__PURE__*/
176
+ messageDesc(file_kusinta_iot_signaling_v1_signaling, 22);
177
+
178
+ /**
179
+ * Describes the message kusinta.iot.signaling.v1.UserSendRequest.
180
+ * Use `create(UserSendRequestSchema)` to create a new message.
181
+ */
182
+ export const UserSendRequestSchema = /*@__PURE__*/
183
+ messageDesc(file_kusinta_iot_signaling_v1_signaling, 23);
184
+
185
+ /**
186
+ * Describes the message kusinta.iot.signaling.v1.UserSendResponse.
187
+ * Use `create(UserSendResponseSchema)` to create a new message.
188
+ */
189
+ export const UserSendResponseSchema = /*@__PURE__*/
190
+ messageDesc(file_kusinta_iot_signaling_v1_signaling, 24);
191
+
192
+ /**
193
+ * Describes the enum kusinta.iot.signaling.v1.RedeemOutcome.
194
+ */
195
+ export const RedeemOutcomeSchema = /*@__PURE__*/
196
+ enumDesc(file_kusinta_iot_signaling_v1_signaling, 0);
197
+
198
+ /**
199
+ * What redeeming an invite did, as the gateway decided it.
200
+ *
201
+ * A redeem is idempotent for its user: redeemed again by the same user, for as
202
+ * long as its secret would have lasted unused, a used invite answers JOINED if
203
+ * the user is filed on its space by then, and otherwise as it did the first time
204
+ * — so a denied request still answers PENDING_APPROVAL — except that one which
205
+ * filed the user, who has left that space since, answers INVALID. To anyone
206
+ * else it answers INVALID. So a user who never saw the first answer can safely
207
+ * try again.
208
+ *
209
+ * @generated from enum kusinta.iot.signaling.v1.RedeemOutcome
210
+ */
211
+ export const RedeemOutcome = /*@__PURE__*/
212
+ tsEnum(RedeemOutcomeSchema);
213
+
214
+ /**
215
+ * Describes the enum kusinta.iot.signaling.v1.WipeScope.
216
+ */
217
+ export const WipeScopeSchema = /*@__PURE__*/
218
+ enumDesc(file_kusinta_iot_signaling_v1_signaling, 1);
219
+
220
+ /**
221
+ * How much a wipe takes (GatewayDeleted).
222
+ *
223
+ * @generated from enum kusinta.iot.signaling.v1.WipeScope
224
+ */
225
+ export const WipeScope = /*@__PURE__*/
226
+ tsEnum(WipeScopeSchema);
227
+
228
+ /**
229
+ * Describes the enum kusinta.iot.signaling.v1.OutgoingStaffChoice.
230
+ */
231
+ export const OutgoingStaffChoiceSchema = /*@__PURE__*/
232
+ enumDesc(file_kusinta_iot_signaling_v1_signaling, 2);
233
+
234
+ /**
235
+ * Whether an outgoing staff member leaves the gateway or stays on it as a technician. Chosen
236
+ * per person by the sending organisation's administrator who offered the transfer.
237
+ *
238
+ * @generated from enum kusinta.iot.signaling.v1.OutgoingStaffChoice
239
+ */
240
+ export const OutgoingStaffChoice = /*@__PURE__*/
241
+ tsEnum(OutgoingStaffChoiceSchema);
83
242
 
@@ -3,7 +3,7 @@
3
3
  /* eslint-disable */
4
4
 
5
5
  import type { GenFile, GenService } from "@bufbuild/protobuf/codegenv2";
6
- import type { GatewayConnectRequestSchema, GatewayConnectResponseSchema, UserConnectRequestSchema, UserConnectResponseSchema } from "./signaling_pb.js";
6
+ import type { GatewayConnectRequestSchema, GatewayConnectResponseSchema, UserConnectRequestSchema, UserConnectResponseSchema, UserListenRequestSchema, UserListenResponseSchema, UserSendRequestSchema, UserSendResponseSchema } from "./signaling_pb.js";
7
7
 
8
8
  /**
9
9
  * Describes the file kusinta/iot/signaling/v1/signaling_service.proto.
@@ -30,5 +30,28 @@ export declare const GatewaySignalingService: GenService<{
30
30
  input: typeof UserConnectRequestSchema;
31
31
  output: typeof UserConnectResponseSchema;
32
32
  },
33
+ /**
34
+ * Opens the session and its downstream half, for a client whose transport
35
+ * cannot stream a request body and so cannot call UserConnect. The handshake
36
+ * travels in the request; the acknowledgement is the stream's first message.
37
+ *
38
+ * @generated from rpc kusinta.iot.signaling.v1.GatewaySignalingService.UserListen
39
+ */
40
+ userListen: {
41
+ methodKind: "server_streaming";
42
+ input: typeof UserListenRequestSchema;
43
+ output: typeof UserListenResponseSchema;
44
+ },
45
+ /**
46
+ * Delivers one upstream message into a session UserListen has already opened.
47
+ * A call naming a session the relay does not hold is refused, not queued.
48
+ *
49
+ * @generated from rpc kusinta.iot.signaling.v1.GatewaySignalingService.UserSend
50
+ */
51
+ userSend: {
52
+ methodKind: "unary";
53
+ input: typeof UserSendRequestSchema;
54
+ output: typeof UserSendResponseSchema;
55
+ },
33
56
  }>;
34
57
 
@@ -9,7 +9,7 @@ import { file_kusinta_iot_signaling_v1_signaling } from "./signaling_pb.js";
9
9
  * Describes the file kusinta/iot/signaling/v1/signaling_service.proto.
10
10
  */
11
11
  export const file_kusinta_iot_signaling_v1_signaling_service = /*@__PURE__*/
12
- fileDesc("CjBrdXNpbnRhL2lvdC9zaWduYWxpbmcvdjEvc2lnbmFsaW5nX3NlcnZpY2UucHJvdG8SGGt1c2ludGEuaW90LnNpZ25hbGluZy52MTKCAgoXR2F0ZXdheVNpZ25hbGluZ1NlcnZpY2USdwoOR2F0ZXdheUNvbm5lY3QSLy5rdXNpbnRhLmlvdC5zaWduYWxpbmcudjEuR2F0ZXdheUNvbm5lY3RSZXF1ZXN0GjAua3VzaW50YS5pb3Quc2lnbmFsaW5nLnYxLkdhdGV3YXlDb25uZWN0UmVzcG9uc2UoATABEm4KC1VzZXJDb25uZWN0Eiwua3VzaW50YS5pb3Quc2lnbmFsaW5nLnYxLlVzZXJDb25uZWN0UmVxdWVzdBotLmt1c2ludGEuaW90LnNpZ25hbGluZy52MS5Vc2VyQ29ubmVjdFJlc3BvbnNlKAEwAUICSAFiBnByb3RvMw", [file_kusinta_iot_signaling_v1_signaling]);
12
+ fileDesc("CjBrdXNpbnRhL2lvdC9zaWduYWxpbmcvdjEvc2lnbmFsaW5nX3NlcnZpY2UucHJvdG8SGGt1c2ludGEuaW90LnNpZ25hbGluZy52MTLQAwoXR2F0ZXdheVNpZ25hbGluZ1NlcnZpY2USdwoOR2F0ZXdheUNvbm5lY3QSLy5rdXNpbnRhLmlvdC5zaWduYWxpbmcudjEuR2F0ZXdheUNvbm5lY3RSZXF1ZXN0GjAua3VzaW50YS5pb3Quc2lnbmFsaW5nLnYxLkdhdGV3YXlDb25uZWN0UmVzcG9uc2UoATABEm4KC1VzZXJDb25uZWN0Eiwua3VzaW50YS5pb3Quc2lnbmFsaW5nLnYxLlVzZXJDb25uZWN0UmVxdWVzdBotLmt1c2ludGEuaW90LnNpZ25hbGluZy52MS5Vc2VyQ29ubmVjdFJlc3BvbnNlKAEwARJpCgpVc2VyTGlzdGVuEisua3VzaW50YS5pb3Quc2lnbmFsaW5nLnYxLlVzZXJMaXN0ZW5SZXF1ZXN0Giwua3VzaW50YS5pb3Quc2lnbmFsaW5nLnYxLlVzZXJMaXN0ZW5SZXNwb25zZTABEmEKCFVzZXJTZW5kEikua3VzaW50YS5pb3Quc2lnbmFsaW5nLnYxLlVzZXJTZW5kUmVxdWVzdBoqLmt1c2ludGEuaW90LnNpZ25hbGluZy52MS5Vc2VyU2VuZFJlc3BvbnNlQgJIAWIGcHJvdG8z", [file_kusinta_iot_signaling_v1_signaling]);
13
13
 
14
14
  /**
15
15
  * @generated from service kusinta.iot.signaling.v1.GatewaySignalingService
@@ -6,6 +6,8 @@ import type { GenFile, GenMessage } from "@bufbuild/protobuf/codegenv2";
6
6
  import type { Message } from "@bufbuild/protobuf";
7
7
  import type { DeviceId, GatewayId, SpaceId, TenantId, UserId } from "../../identity/v1/identity_pb.js";
8
8
  import type { SpaceType } from "../../common/v1/types_pb.js";
9
+ import type { MembershipRelation } from "../../access/v1/roles_pb.js";
10
+ import type { Timestamp } from "@bufbuild/protobuf/wkt";
9
11
 
10
12
  /**
11
13
  * Describes the file kusinta/iot/space/v1/space.proto.
@@ -27,6 +29,13 @@ export declare type Space = Message<"kusinta.iot.space.v1.Space"> & {
27
29
  spaceType: SpaceType;
28
30
 
29
31
  /**
32
+ * On an apartment, the building's fixed, readable identifier for it — its number, say "Lgh
33
+ * 1102" — given by the property owner or the gateway's administrators when it is created and
34
+ * changed only by them (webrtc.v1.CreateSpace, webrtc.v1.UpdateSpace); never a generated id,
35
+ * and never touched by a household's handover. An apartment created before this rule keeps
36
+ * the name it has, unchanged, as that identifier. The household's own name for the home is
37
+ * home_name.
38
+ *
30
39
  * @generated from field: string name = 3;
31
40
  */
32
41
  name: string;
@@ -51,19 +60,27 @@ export declare type Space = Message<"kusinta.iot.space.v1.Space"> & {
51
60
  parentSpaceId?: SpaceId | undefined;
52
61
 
53
62
  /**
63
+ * Filtered to the spaces the caller reaches, as device_ids is.
64
+ *
54
65
  * @generated from field: repeated kusinta.iot.identity.v1.SpaceId sub_space_ids = 7;
55
66
  */
56
67
  subSpaceIds: SpaceId[];
57
68
 
58
69
  /**
70
+ * Filtered to the devices the caller may see (see webrtc.v1.SpaceTree): for service, no
71
+ * device a resident owns.
72
+ *
59
73
  * @generated from field: repeated kusinta.iot.identity.v1.DeviceId device_ids = 8;
60
74
  */
61
75
  deviceIds: DeviceId[];
62
76
 
63
77
  /**
64
- * only for APARTMENT
78
+ * Superseded by members, which can say that more than one person lives in an apartment,
79
+ * and how each member stands to the space. A gateway leaves it unset, so a client that
80
+ * still reads it sees no resident anywhere; read members instead.
65
81
  *
66
- * @generated from field: kusinta.iot.identity.v1.UserId resident_user_id = 9;
82
+ * @generated from field: kusinta.iot.identity.v1.UserId resident_user_id = 9 [deprecated = true];
83
+ * @deprecated
67
84
  */
68
85
  residentUserId?: UserId | undefined;
69
86
 
@@ -76,6 +93,65 @@ export declare type Space = Message<"kusinta.iot.space.v1.Space"> & {
76
93
  * @generated from field: kusinta.iot.identity.v1.GatewayId gateway_id = 11;
77
94
  */
78
95
  gatewayId?: GatewayId | undefined;
96
+
97
+ /**
98
+ * An IANA time zone name, e.g. "Europe/Stockholm". Written on the building — the
99
+ * top-level space. When listing, a gateway fills it on every space with the effective
100
+ * value, inherited from the nearest ancestor that has one, so every listed space
101
+ * carries it. Empty means unknown, not UTC.
102
+ *
103
+ * @generated from field: string time_zone = 12;
104
+ */
105
+ timeZone: string;
106
+
107
+ /**
108
+ * Who is filed directly on this space, and how each stands to it. Members of a space
109
+ * above it are listed there, not here.
110
+ *
111
+ * Filled according to who asks, since a membership list says who lives where:
112
+ *
113
+ * * a caller holding ROLE_PROPERTY_OWNER or ROLE_GATEWAY_ADMIN who reaches the space
114
+ * sees every member save as below, in a home they see as service too, as the
115
+ * members change;
116
+ * * a resident of an apartment sees every member filed on it or on its rooms — who they
117
+ * live with, and anyone filed on their home as service, since being filed on a home
118
+ * is an act on it its residents should see. Service reach from a building or floor
119
+ * above is not listed; webrtc.v1.PrivacyDisclosure tells them what kinds of party
120
+ * hold it, and who, without saying where anyone lives;
121
+ * * anyone else sees none, residents of a building or floor included.
122
+ *
123
+ * To a caller who does not live in the home, a RESIDENT member is listed under the
124
+ * residency's id (access.v1.MembershipRelation, RESIDENCY IDS) and never by name, so that
125
+ * a home's residents are told apart from one another and from anyone's other memberships
126
+ * without saying who they are. The people of the home see one another under their user
127
+ * ids.
128
+ *
129
+ * @generated from field: repeated kusinta.iot.space.v1.SpaceMember members = 13;
130
+ */
131
+ members: SpaceMember[];
132
+
133
+ /**
134
+ * Set when members are not listed to this caller, so that an empty list is not read as
135
+ * nobody being filed here.
136
+ *
137
+ * @generated from field: bool members_withheld = 14;
138
+ */
139
+ membersWithheld: boolean;
140
+
141
+ /**
142
+ * On an apartment, the name its household gave the home (webrtc.v1.SetHomeName), which may
143
+ * name them ("The Svenssons"). Given to the home's residents only: empty for anyone else,
144
+ * so a client shows it to residents alone and the apartment's name to everyone. Wiped at
145
+ * the home's handover. Empty on every other space.
146
+ *
147
+ * No other field carries it. Wherever the wire names an apartment to anyone — pushes,
148
+ * problems, invites and what is shown of them before redeeming, privacy disclosures, and
149
+ * reporting.v1.ServedSpace.name to the api-server — it is name, never this: the household's
150
+ * own name never leaves the gateway but to the home's residents.
151
+ *
152
+ * @generated from field: string home_name = 15;
153
+ */
154
+ homeName: string;
79
155
  };
80
156
 
81
157
  /**
@@ -84,3 +160,54 @@ export declare type Space = Message<"kusinta.iot.space.v1.Space"> & {
84
160
  */
85
161
  export declare const SpaceSchema: GenMessage<Space>;
86
162
 
163
+ /**
164
+ * One membership of a space.
165
+ *
166
+ * @generated from message kusinta.iot.space.v1.SpaceMember
167
+ */
168
+ export declare type SpaceMember = Message<"kusinta.iot.space.v1.SpaceMember"> & {
169
+ /**
170
+ * The member's user id, or for a RESIDENT member listed to a caller who does not live in
171
+ * the home, the residency's id (Space.members).
172
+ *
173
+ * @generated from field: kusinta.iot.identity.v1.UserId user_id = 1;
174
+ */
175
+ userId?: UserId | undefined;
176
+
177
+ /**
178
+ * @generated from field: kusinta.iot.access.v1.MembershipRelation relation = 2;
179
+ */
180
+ relation: MembershipRelation;
181
+
182
+ /**
183
+ * The name the member gave, self-chosen and not verified, so the app shows it as the name
184
+ * they gave rather than as an identity. Given to a caller who is a resident of the
185
+ * apartment the member is filed on, or on one of its rooms: the people they live with,
186
+ * and anyone filed on their home as service, whom webrtc.v1.PrivacyDisclosure already
187
+ * names to them. Given also, for a member who is staff (access.v1.Role, STAFF), to a
188
+ * caller holding ROLE_PROPERTY_OWNER or ROLE_GATEWAY_ADMIN, as webrtc.v1.MemberDetail.name
189
+ * names them. Empty for every other caller — service, residents of any other home, and a
190
+ * property owner or an administrator for a member who is not staff — and for a member
191
+ * whose name the gateway has not learnt. A caller given names reads an empty one as not
192
+ * known; anyone else is given none. Residents are named only to their own home.
193
+ *
194
+ * @generated from field: string name = 3;
195
+ */
196
+ name: string;
197
+
198
+ /**
199
+ * As webrtc.v1.MemberSpace.since: the start of the day, in the building's time zone, on
200
+ * which this membership began; for a resident, the current unbroken residency. Never finer
201
+ * than a day. Unset where the gateway holds no record of it.
202
+ *
203
+ * @generated from field: google.protobuf.Timestamp since = 4;
204
+ */
205
+ since?: Timestamp | undefined;
206
+ };
207
+
208
+ /**
209
+ * Describes the message kusinta.iot.space.v1.SpaceMember.
210
+ * Use `create(SpaceMemberSchema)` to create a new message.
211
+ */
212
+ export declare const SpaceMemberSchema: GenMessage<SpaceMember>;
213
+
@@ -3,6 +3,8 @@
3
3
  /* eslint-disable */
4
4
 
5
5
  import { fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv2";
6
+ import { file_google_protobuf_timestamp } from "@bufbuild/protobuf/wkt";
7
+ import { file_kusinta_iot_access_v1_roles } from "../../access/v1/roles_pb.js";
6
8
  import { file_kusinta_iot_common_v1_types } from "../../common/v1/types_pb.js";
7
9
  import { file_kusinta_iot_identity_v1_identity } from "../../identity/v1/identity_pb.js";
8
10
 
@@ -10,7 +12,7 @@ import { file_kusinta_iot_identity_v1_identity } from "../../identity/v1/identit
10
12
  * Describes the file kusinta/iot/space/v1/space.proto.
11
13
  */
12
14
  export const file_kusinta_iot_space_v1_space = /*@__PURE__*/
13
- fileDesc("CiBrdXNpbnRhL2lvdC9zcGFjZS92MS9zcGFjZS5wcm90bxIUa3VzaW50YS5pb3Quc3BhY2UudjEi9wMKBVNwYWNlEjIKCHNwYWNlX2lkGAEgASgLMiAua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuU3BhY2VJZBI0CgpzcGFjZV90eXBlGAIgASgOMiAua3VzaW50YS5pb3QuY29tbW9uLnYxLlNwYWNlVHlwZRIMCgRuYW1lGAMgASgJEhMKC2Rlc2NyaXB0aW9uGAQgASgJEg0KBWZsb29yGAUgASgFEjkKD3BhcmVudF9zcGFjZV9pZBgGIAEoCzIgLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLlNwYWNlSWQSNwoNc3ViX3NwYWNlX2lkcxgHIAMoCzIgLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLlNwYWNlSWQSNQoKZGV2aWNlX2lkcxgIIAMoCzIhLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLkRldmljZUlkEjkKEHJlc2lkZW50X3VzZXJfaWQYCSABKAsyHy5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5Vc2VySWQSNAoJdGVuYW50X2lkGAogASgLMiEua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuVGVuYW50SWQSNgoKZ2F0ZXdheV9pZBgLIAEoCzIiLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLkdhdGV3YXlJZEICSAFiBnByb3RvMw", [file_kusinta_iot_common_v1_types, file_kusinta_iot_identity_v1_identity]);
15
+ fileDesc("CiBrdXNpbnRhL2lvdC9zcGFjZS92MS9zcGFjZS5wcm90bxIUa3VzaW50YS5pb3Quc3BhY2UudjEi7wQKBVNwYWNlEjIKCHNwYWNlX2lkGAEgASgLMiAua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuU3BhY2VJZBI0CgpzcGFjZV90eXBlGAIgASgOMiAua3VzaW50YS5pb3QuY29tbW9uLnYxLlNwYWNlVHlwZRIMCgRuYW1lGAMgASgJEhMKC2Rlc2NyaXB0aW9uGAQgASgJEg0KBWZsb29yGAUgASgFEjkKD3BhcmVudF9zcGFjZV9pZBgGIAEoCzIgLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLlNwYWNlSWQSNwoNc3ViX3NwYWNlX2lkcxgHIAMoCzIgLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLlNwYWNlSWQSNQoKZGV2aWNlX2lkcxgIIAMoCzIhLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLkRldmljZUlkEj0KEHJlc2lkZW50X3VzZXJfaWQYCSABKAsyHy5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5Vc2VySWRCAhgBEjQKCXRlbmFudF9pZBgKIAEoCzIhLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLlRlbmFudElkEjYKCmdhdGV3YXlfaWQYCyABKAsyIi5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5HYXRld2F5SWQSEQoJdGltZV96b25lGAwgASgJEjIKB21lbWJlcnMYDSADKAsyIS5rdXNpbnRhLmlvdC5zcGFjZS52MS5TcGFjZU1lbWJlchIYChBtZW1iZXJzX3dpdGhoZWxkGA4gASgIEhEKCWhvbWVfbmFtZRgPIAEoCSK1AQoLU3BhY2VNZW1iZXISMAoHdXNlcl9pZBgBIAEoCzIfLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLlVzZXJJZBI7CghyZWxhdGlvbhgCIAEoDjIpLmt1c2ludGEuaW90LmFjY2Vzcy52MS5NZW1iZXJzaGlwUmVsYXRpb24SDAoEbmFtZRgDIAEoCRIpCgVzaW5jZRgEIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCAkgBYgZwcm90bzM", [file_google_protobuf_timestamp, file_kusinta_iot_access_v1_roles, file_kusinta_iot_common_v1_types, file_kusinta_iot_identity_v1_identity]);
14
16
 
15
17
  /**
16
18
  * Describes the message kusinta.iot.space.v1.Space.
@@ -19,3 +21,10 @@ export const file_kusinta_iot_space_v1_space = /*@__PURE__*/
19
21
  export const SpaceSchema = /*@__PURE__*/
20
22
  messageDesc(file_kusinta_iot_space_v1_space, 0);
21
23
 
24
+ /**
25
+ * Describes the message kusinta.iot.space.v1.SpaceMember.
26
+ * Use `create(SpaceMemberSchema)` to create a new message.
27
+ */
28
+ export const SpaceMemberSchema = /*@__PURE__*/
29
+ messageDesc(file_kusinta_iot_space_v1_space, 1);
30
+
@@ -71,11 +71,12 @@ export declare type HmThermostatProps = Message<"kusinta.iot.vendor.homematic.v1
71
71
  boostMode?: boolean | undefined;
72
72
 
73
73
  /**
74
- * Minutes remaining, 0-2048. Integer on the CCU — it counts whole minutes.
74
+ * Seconds remaining, 0-2048 — the CCU counts boost in whole seconds, not minutes.
75
+ * Default boost is 5 min (300), maximum 30 min (1800).
75
76
  *
76
- * @generated from field: optional uint32 boost_time_period = 2;
77
+ * @generated from field: optional uint32 boost_time_remaining = 2;
77
78
  */
78
- boostTimePeriod?: number | undefined;
79
+ boostTimeRemaining?: number | undefined;
79
80
 
80
81
  /**
81
82
  * Write-only on the CCU: it accepts a ControlMode and never reports one back. Carried
@@ -235,6 +236,21 @@ export declare type HmMaintenanceProps = Message<"kusinta.iot.vendor.homematic.v
235
236
  * @generated from field: optional bool config_pending = 7;
236
237
  */
237
238
  configPending?: boolean | undefined;
239
+
240
+ /**
241
+ * True while the device has spent its share of the radio band's transmit budget and
242
+ * must wait before sending again. The 868 MHz band permits roughly one percent duty
243
+ * cycle, and it regenerates at about that rate per half minute.
244
+ *
245
+ * Worth carrying rather than leaving to the connector, because a spent budget is
246
+ * indistinguishable from a working device that simply has nothing to say: it stays
247
+ * reachable, reports no error, and silently drops what it was asked to do. Anything
248
+ * that writes on a schedule needs to be able to see this before it concludes a device
249
+ * is ignoring it.
250
+ *
251
+ * @generated from field: optional bool duty_cycle = 8;
252
+ */
253
+ dutyCycle?: boolean | undefined;
238
254
  };
239
255
 
240
256
  /**
@@ -9,7 +9,7 @@ import { file_kusinta_iot_vendor_v1_vendor_options } from "../../v1/vendor_optio
9
9
  * Describes the file kusinta/iot/vendor/homematic/v1/homematic.proto.
10
10
  */
11
11
  export const file_kusinta_iot_vendor_homematic_v1_homematic = /*@__PURE__*/
12
- fileDesc("Ci9rdXNpbnRhL2lvdC92ZW5kb3IvaG9tZW1hdGljL3YxL2hvbWVtYXRpYy5wcm90bxIfa3VzaW50YS5pb3QudmVuZG9yLmhvbWVtYXRpYy52MSI4ChdIb21lbWF0aWNEZXZpY2VJZGVudGl0eRIPCgdhZGRyZXNzGAEgASgJEgwKBHR5cGUYAiABKAki5gYKEUhtVGhlcm1vc3RhdFByb3BzEisKCmJvb3N0X21vZGUYASABKAhCEqK1GApCT09TVF9NT0RF0LUYBkgAiAEBEjIKEWJvb3N0X3RpbWVfcGVyaW9kGAIgASgNQhKitRgKQk9PU1RfVElNRdC1GAVIAYgBARIvCgxjb250cm9sX21vZGUYAyABKA1CFKK1GAxDT05UUk9MX01PREXQtRgCSAKIAQESNwoQZnJvc3RfcHJvdGVjdGlvbhgEIAEoCEIYorUYEEZST1NUX1BST1RFQ1RJT07QtRgFSAOIAQESKwoKcGFydHlfbW9kZRgFIAEoCEISorUYClBBUlRZX01PREXQtRgFSASIAQESLwoMd2luZG93X3N0YXRlGAcgASgNQhSitRgMV0lORE9XX1NUQVRF0LUYB0gFiAEBEi0KC3ZhbHZlX3N0YXRlGAggASgNQhOitRgLVkFMVkVfU1RBVEXQtRgFSAaIAQESMwoOc2V0X3BvaW50X21vZGUYCSABKA1CFqK1GA5TRVRfUE9JTlRfTU9ERdC1GAdIB4gBARIzCg5hY3RpdmVfcHJvZmlsZRgKIAEoDUIWorUYDkFDVElWRV9QUk9GSUxF0LUYB0gIiAEBEkkKGWFjdHVhbF90ZW1wZXJhdHVyZV9zdGF0dXMYCyABKA1CIaK1GBlBQ1RVQUxfVEVNUEVSQVRVUkVfU1RBVFVT0LUYBUgJiAEBEjMKDnZhbHZlX2FkYXB0aW9uGAwgASgIQhaitRgOVkFMVkVfQURBUFRJT07QtRgHSAqIAQE6GKq1GBRob21lbWF0aWMudGhlcm1vc3RhdEINCgtfYm9vc3RfbW9kZUIUChJfYm9vc3RfdGltZV9wZXJpb2RCDwoNX2NvbnRyb2xfbW9kZUITChFfZnJvc3RfcHJvdGVjdGlvbkINCgtfcGFydHlfbW9kZUIPCg1fd2luZG93X3N0YXRlQg4KDF92YWx2ZV9zdGF0ZUIRCg9fc2V0X3BvaW50X21vZGVCEQoPX2FjdGl2ZV9wcm9maWxlQhwKGl9hY3R1YWxfdGVtcGVyYXR1cmVfc3RhdHVzQhEKD192YWx2ZV9hZGFwdGlvbkoECAYQB1IFbGV2ZWxSFmN1cnJlbnRfcHJvZmlsZV9wZXJpb2Qi+gMKEkhtTWFpbnRlbmFuY2VQcm9wcxIrCgplcnJvcl9jb2RlGAEgASgNQhKitRgKRVJST1JfQ09ERdC1GAVIAIgBARInCghzYWJvdGFnZRgCIAEoCEIQorUYCFNBQk9UQUdF0LUYBUgBiAEBEi0KC3Jzc2lfZGV2aWNlGAMgASgRQhOitRgLUlNTSV9ERVZJQ0XQtRgFSAKIAQESKQoJcnNzaV9wZWVyGAQgASgRQhGitRgJUlNTSV9QRUVS0LUYBUgDiAEBEkcKGG9wZXJhdGluZ192b2x0YWdlX3N0YXR1cxgFIAEoDUIgorUYGE9QRVJBVElOR19WT0xUQUdFX1NUQVRVU9C1GAVIBIgBARIlCgd1bnJlYWNoGAYgASgIQg+itRgHVU5SRUFDSNC1GAVIBYgBARIzCg5jb25maWdfcGVuZGluZxgHIAEoCEIWorUYDkNPTkZJR19QRU5ESU5H0LUYBUgGiAEBOhmqtRgVaG9tZW1hdGljLm1haW50ZW5hbmNlQg0KC19lcnJvcl9jb2RlQgsKCV9zYWJvdGFnZUIOCgxfcnNzaV9kZXZpY2VCDAoKX3Jzc2lfcGVlckIbChlfb3BlcmF0aW5nX3ZvbHRhZ2Vfc3RhdHVzQgoKCF91bnJlYWNoQhEKD19jb25maWdfcGVuZGluZ0ICSAFiBnByb3RvMw", [file_kusinta_iot_vendor_v1_vendor_options]);
12
+ fileDesc("Ci9rdXNpbnRhL2lvdC92ZW5kb3IvaG9tZW1hdGljL3YxL2hvbWVtYXRpYy5wcm90bxIfa3VzaW50YS5pb3QudmVuZG9yLmhvbWVtYXRpYy52MSI4ChdIb21lbWF0aWNEZXZpY2VJZGVudGl0eRIPCgdhZGRyZXNzGAEgASgJEgwKBHR5cGUYAiABKAki/wYKEUhtVGhlcm1vc3RhdFByb3BzEisKCmJvb3N0X21vZGUYASABKAhCEqK1GApCT09TVF9NT0RF0LUYBkgAiAEBEjUKFGJvb3N0X3RpbWVfcmVtYWluaW5nGAIgASgNQhKitRgKQk9PU1RfVElNRdC1GAVIAYgBARIvCgxjb250cm9sX21vZGUYAyABKA1CFKK1GAxDT05UUk9MX01PREXQtRgCSAKIAQESNwoQZnJvc3RfcHJvdGVjdGlvbhgEIAEoCEIYorUYEEZST1NUX1BST1RFQ1RJT07QtRgFSAOIAQESKwoKcGFydHlfbW9kZRgFIAEoCEISorUYClBBUlRZX01PREXQtRgFSASIAQESLwoMd2luZG93X3N0YXRlGAcgASgNQhSitRgMV0lORE9XX1NUQVRF0LUYB0gFiAEBEi0KC3ZhbHZlX3N0YXRlGAggASgNQhOitRgLVkFMVkVfU1RBVEXQtRgFSAaIAQESMwoOc2V0X3BvaW50X21vZGUYCSABKA1CFqK1GA5TRVRfUE9JTlRfTU9ERdC1GAdIB4gBARIzCg5hY3RpdmVfcHJvZmlsZRgKIAEoDUIWorUYDkFDVElWRV9QUk9GSUxF0LUYB0gIiAEBEkkKGWFjdHVhbF90ZW1wZXJhdHVyZV9zdGF0dXMYCyABKA1CIaK1GBlBQ1RVQUxfVEVNUEVSQVRVUkVfU1RBVFVT0LUYBUgJiAEBEjMKDnZhbHZlX2FkYXB0aW9uGAwgASgIQhaitRgOVkFMVkVfQURBUFRJT07QtRgHSAqIAQE6GKq1GBRob21lbWF0aWMudGhlcm1vc3RhdEINCgtfYm9vc3RfbW9kZUIXChVfYm9vc3RfdGltZV9yZW1haW5pbmdCDwoNX2NvbnRyb2xfbW9kZUITChFfZnJvc3RfcHJvdGVjdGlvbkINCgtfcGFydHlfbW9kZUIPCg1fd2luZG93X3N0YXRlQg4KDF92YWx2ZV9zdGF0ZUIRCg9fc2V0X3BvaW50X21vZGVCEQoPX2FjdGl2ZV9wcm9maWxlQhwKGl9hY3R1YWxfdGVtcGVyYXR1cmVfc3RhdHVzQhEKD192YWx2ZV9hZGFwdGlvbkoECAYQB1IFbGV2ZWxSFmN1cnJlbnRfcHJvZmlsZV9wZXJpb2RSEWJvb3N0X3RpbWVfcGVyaW9kIrYEChJIbU1haW50ZW5hbmNlUHJvcHMSKwoKZXJyb3JfY29kZRgBIAEoDUISorUYCkVSUk9SX0NPREXQtRgFSACIAQESJwoIc2Fib3RhZ2UYAiABKAhCEKK1GAhTQUJPVEFHRdC1GAVIAYgBARItCgtyc3NpX2RldmljZRgDIAEoEUITorUYC1JTU0lfREVWSUNF0LUYBUgCiAEBEikKCXJzc2lfcGVlchgEIAEoEUIRorUYCVJTU0lfUEVFUtC1GAVIA4gBARJHChhvcGVyYXRpbmdfdm9sdGFnZV9zdGF0dXMYBSABKA1CIKK1GBhPUEVSQVRJTkdfVk9MVEFHRV9TVEFUVVPQtRgFSASIAQESJQoHdW5yZWFjaBgGIAEoCEIPorUYB1VOUkVBQ0jQtRgFSAWIAQESMwoOY29uZmlnX3BlbmRpbmcYByABKAhCFqK1GA5DT05GSUdfUEVORElOR9C1GAVIBogBARIrCgpkdXR5X2N5Y2xlGAggASgIQhKitRgKRFVUWV9DWUNMRdC1GAVIB4gBAToZqrUYFWhvbWVtYXRpYy5tYWludGVuYW5jZUINCgtfZXJyb3JfY29kZUILCglfc2Fib3RhZ2VCDgoMX3Jzc2lfZGV2aWNlQgwKCl9yc3NpX3BlZXJCGwoZX29wZXJhdGluZ192b2x0YWdlX3N0YXR1c0IKCghfdW5yZWFjaEIRCg9fY29uZmlnX3BlbmRpbmdCDQoLX2R1dHlfY3ljbGVCAkgBYgZwcm90bzM", [file_kusinta_iot_vendor_v1_vendor_options]);
13
13
 
14
14
  /**
15
15
  * Describes the message kusinta.iot.vendor.homematic.v1.HomematicDeviceIdentity.
@@ -0,0 +1,69 @@
1
+ // @generated by protoc-gen-es v2.12.0 with parameter "target=js+dts,import_extension=js"
2
+ // @generated from file kusinta/iot/vendor/lorawan/v1/lorawan.proto (package kusinta.iot.vendor.lorawan.v1, syntax proto3)
3
+ /* eslint-disable */
4
+
5
+ import type { GenFile, GenMessage } from "@bufbuild/protobuf/codegenv2";
6
+ import type { Message } from "@bufbuild/protobuf";
7
+
8
+ /**
9
+ * Describes the file kusinta/iot/vendor/lorawan/v1/lorawan.proto.
10
+ */
11
+ export declare const file_kusinta_iot_vendor_lorawan_v1_lorawan: GenFile;
12
+
13
+ /**
14
+ * What a LoRaWAN network server needs to admit a device, carried in the `lorawan`
15
+ * arm of webrtc.v1.ProvisionDevice.credentials. A provisioning arm per technology,
16
+ * not a flat set of fields shared across them, so the next technology to be
17
+ * provisioned does not turn a message into a bag of optionals named after this one.
18
+ *
19
+ * These are onboarding credentials, not device readings: this message is never an
20
+ * Endpoint vendor extension and carries no vendor_extension option, unlike the
21
+ * vendor.homematic.v1 property messages.
22
+ *
23
+ * @generated from message kusinta.iot.vendor.lorawan.v1.LorawanProvisioning
24
+ */
25
+ export declare type LorawanProvisioning = Message<"kusinta.iot.vendor.lorawan.v1.LorawanProvisioning"> & {
26
+ /**
27
+ * The device's globally unique identifier, sixteen hex characters as printed on
28
+ * the label. This is also what the device is claimed by — the connector derives
29
+ * the device id from it and reports it as DeviceDescriptor.serial_number — so a
30
+ * device can be claimed by its label before it has ever joined.
31
+ *
32
+ * @generated from field: string dev_eui = 1;
33
+ */
34
+ devEui: string;
35
+
36
+ /**
37
+ * The application root key: the secret every session key is derived from, thirty-
38
+ * two hex characters. Not an identifier, and handled unlike every other field
39
+ * here — carried only over the authenticated app-to-gateway leg, held in the
40
+ * secret store where a key is generated or kept, never logged, never persisted
41
+ * beyond the write that registers the device, and never echoed back in any
42
+ * listing.
43
+ *
44
+ * It is on the wire at all because the first supported devices leave no choice:
45
+ * their key is fixed in the factory and printed on the label, so a network server
46
+ * cannot generate one and have the device adopt it. A device that can be
47
+ * reprogrammed with a server-generated key would leave this empty and have the
48
+ * registry mint it instead.
49
+ *
50
+ * @generated from field: string app_key = 2;
51
+ */
52
+ appKey: string;
53
+
54
+ /**
55
+ * The join identifier (JoinEUI/AppEUI), sixteen hex characters. Optional: many
56
+ * deployments accept the default a device ships with, and only a network server
57
+ * that pins it needs the value stated here.
58
+ *
59
+ * @generated from field: optional string join_eui = 3;
60
+ */
61
+ joinEui?: string | undefined;
62
+ };
63
+
64
+ /**
65
+ * Describes the message kusinta.iot.vendor.lorawan.v1.LorawanProvisioning.
66
+ * Use `create(LorawanProvisioningSchema)` to create a new message.
67
+ */
68
+ export declare const LorawanProvisioningSchema: GenMessage<LorawanProvisioning>;
69
+
@@ -0,0 +1,19 @@
1
+ // @generated by protoc-gen-es v2.12.0 with parameter "target=js+dts,import_extension=js"
2
+ // @generated from file kusinta/iot/vendor/lorawan/v1/lorawan.proto (package kusinta.iot.vendor.lorawan.v1, syntax proto3)
3
+ /* eslint-disable */
4
+
5
+ import { fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv2";
6
+
7
+ /**
8
+ * Describes the file kusinta/iot/vendor/lorawan/v1/lorawan.proto.
9
+ */
10
+ export const file_kusinta_iot_vendor_lorawan_v1_lorawan = /*@__PURE__*/
11
+ fileDesc("CitrdXNpbnRhL2lvdC92ZW5kb3IvbG9yYXdhbi92MS9sb3Jhd2FuLnByb3RvEh1rdXNpbnRhLmlvdC52ZW5kb3IubG9yYXdhbi52MSJbChNMb3Jhd2FuUHJvdmlzaW9uaW5nEg8KB2Rldl9ldWkYASABKAkSDwoHYXBwX2tleRgCIAEoCRIVCghqb2luX2V1aRgDIAEoCUgAiAEBQgsKCV9qb2luX2V1aUICSAFiBnByb3RvMw");
12
+
13
+ /**
14
+ * Describes the message kusinta.iot.vendor.lorawan.v1.LorawanProvisioning.
15
+ * Use `create(LorawanProvisioningSchema)` to create a new message.
16
+ */
17
+ export const LorawanProvisioningSchema = /*@__PURE__*/
18
+ messageDesc(file_kusinta_iot_vendor_lorawan_v1_lorawan, 0);
19
+
@@ -50,11 +50,11 @@ export declare const vendor_attribute_capabilities: GenExtension<FieldOptions, n
50
50
  /**
51
51
  * The stable key identifying a vendor extension message, e.g. "homematic.thermostat".
52
52
  * Matches device.v1.PropertyUpdate.vendor_extension byte for byte, and is what selects
53
- * the Endpoint.vendor_properties case.
53
+ * the Endpoint.vendor_properties case — or Endpoint.radio_link, for "kusinta.radio".
54
54
  *
55
- * One key per message carried in Endpoint.vendor_properties, so the vendor branch of the
56
- * resolution rule is the same shape as the Matter branch: pick a message by a message
57
- * option, then one field by a field option. Nothing nests.
55
+ * One key per message carried in Endpoint.vendor_properties or radio_link, so the vendor
56
+ * branch of the resolution rule is the same shape as the Matter branch: pick a message
57
+ * by a message option, then one field by a field option. Nothing nests.
58
58
  *
59
59
  * Form: "<vendor>.<what the message models>", lower_snake_case on both sides —
60
60
  * "homematic.thermostat", and a humidity one would be "homematic.humidity_sensor". The
@@ -53,11 +53,11 @@ export const vendor_attribute_capabilities = /*@__PURE__*/
53
53
  /**
54
54
  * The stable key identifying a vendor extension message, e.g. "homematic.thermostat".
55
55
  * Matches device.v1.PropertyUpdate.vendor_extension byte for byte, and is what selects
56
- * the Endpoint.vendor_properties case.
56
+ * the Endpoint.vendor_properties case — or Endpoint.radio_link, for "kusinta.radio".
57
57
  *
58
- * One key per message carried in Endpoint.vendor_properties, so the vendor branch of the
59
- * resolution rule is the same shape as the Matter branch: pick a message by a message
60
- * option, then one field by a field option. Nothing nests.
58
+ * One key per message carried in Endpoint.vendor_properties or radio_link, so the vendor
59
+ * branch of the resolution rule is the same shape as the Matter branch: pick a message
60
+ * by a message option, then one field by a field option. Nothing nests.
61
61
  *
62
62
  * Form: "<vendor>.<what the message models>", lower_snake_case on both sides —
63
63
  * "homematic.thermostat", and a humidity one would be "homematic.humidity_sensor". The