@kusinta/iot-schema 0.1.0-beta.9 → 0.2.0-beta.2

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 (46) hide show
  1. package/package.json +13 -2
  2. package/src/kusinta/iot/access/v1/acl_pb.d.ts +230 -11
  3. package/src/kusinta/iot/access/v1/acl_pb.js +25 -4
  4. package/src/kusinta/iot/access/v1/roles_pb.d.ts +95 -2
  5. package/src/kusinta/iot/access/v1/roles_pb.js +37 -1
  6. package/src/kusinta/iot/connector/v1/connector_pb.d.ts +60 -30
  7. package/src/kusinta/iot/connector/v1/connector_pb.js +12 -11
  8. package/src/kusinta/iot/connector/v1/connector_service_pb.d.ts +5 -5
  9. package/src/kusinta/iot/connector/v1/connector_service_pb.js +1 -1
  10. package/src/kusinta/iot/device/v1/cluster_state_pb.d.ts +238 -0
  11. package/src/kusinta/iot/device/v1/cluster_state_pb.js +54 -0
  12. package/src/kusinta/iot/device/v1/descriptor_pb.d.ts +37 -8
  13. package/src/kusinta/iot/device/v1/descriptor_pb.js +2 -1
  14. package/src/kusinta/iot/device/v1/device_event_pb.d.ts +162 -0
  15. package/src/kusinta/iot/device/v1/device_event_pb.js +45 -0
  16. package/src/kusinta/iot/device/v1/device_pb.d.ts +154 -28
  17. package/src/kusinta/iot/device/v1/device_pb.js +10 -2
  18. package/src/kusinta/iot/device/v1/matter_options_pb.d.ts +84 -0
  19. package/src/kusinta/iot/device/v1/matter_options_pb.js +91 -0
  20. package/src/kusinta/iot/device/v1/properties_pb.d.ts +228 -207
  21. package/src/kusinta/iot/device/v1/properties_pb.js +9 -1
  22. package/src/kusinta/iot/device/v1/property_update_pb.d.ts +197 -8
  23. package/src/kusinta/iot/device/v1/property_update_pb.js +20 -2
  24. package/src/kusinta/iot/registration/v1/registration_pb.d.ts +170 -0
  25. package/src/kusinta/iot/registration/v1/registration_pb.js +61 -0
  26. package/src/kusinta/iot/registration/v1/registration_service_pb.d.ts +34 -0
  27. package/src/kusinta/iot/registration/v1/registration_service_pb.js +19 -0
  28. package/src/kusinta/iot/signaling/v1/signaling_pb.d.ts +320 -0
  29. package/src/kusinta/iot/signaling/v1/signaling_pb.js +83 -0
  30. package/src/kusinta/iot/signaling/v1/signaling_service_pb.d.ts +34 -0
  31. package/src/kusinta/iot/signaling/v1/signaling_service_pb.js +19 -0
  32. package/src/kusinta/iot/vendor/homematic/v1/homematic_pb.d.ts +65 -47
  33. package/src/kusinta/iot/vendor/homematic/v1/homematic_pb.js +8 -7
  34. package/src/kusinta/iot/vendor/v1/vendor_options_pb.d.ts +50 -0
  35. package/src/kusinta/iot/vendor/v1/vendor_options_pb.js +53 -0
  36. package/src/kusinta/iot/webrtc/v1/app_token_pb.d.ts +152 -0
  37. package/src/kusinta/iot/webrtc/v1/app_token_pb.js +28 -0
  38. package/src/kusinta/iot/webrtc/v1/command_pb.d.ts +276 -39
  39. package/src/kusinta/iot/webrtc/v1/command_pb.js +28 -2
  40. package/src/kusinta/iot/webrtc/v1/device_state_pb.d.ts +76 -7
  41. package/src/kusinta/iot/webrtc/v1/device_state_pb.js +19 -4
  42. package/src/kusinta/iot/webrtc/v1/envelope_pb.d.ts +371 -24
  43. package/src/kusinta/iot/webrtc/v1/envelope_pb.js +68 -5
  44. package/src/kusinta/iot/webrtc/v1/management_pb.d.ts +451 -0
  45. package/src/kusinta/iot/webrtc/v1/management_pb.js +106 -0
  46. package/src/kusinta/iot/webrtc/v1/permission_push_pb.d.ts +7 -1
@@ -3,12 +3,13 @@
3
3
  /* eslint-disable */
4
4
 
5
5
  import { fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv2";
6
+ import { file_kusinta_iot_device_v1_matter_options } from "./matter_options_pb.js";
6
7
 
7
8
  /**
8
9
  * Describes the file kusinta/iot/device/v1/properties.proto.
9
10
  */
10
11
  export const file_kusinta_iot_device_v1_properties = /*@__PURE__*/
11
- fileDesc("CiZrdXNpbnRhL2lvdC9kZXZpY2UvdjEvcHJvcGVydGllcy5wcm90bxIVa3VzaW50YS5pb3QuZGV2aWNlLnYxItgCChRUaGVybW9zdGF0UHJvcGVydGllcxIZChFsb2NhbF90ZW1wZXJhdHVyZRgBIAEoERIhChlvY2N1cGllZF9oZWF0aW5nX3NldHBvaW50GAIgASgREiEKGW9jY3VwaWVkX2Nvb2xpbmdfc2V0cG9pbnQYAyABKBESHwoXbWluX2hlYXRfc2V0cG9pbnRfbGltaXQYBCABKBESHwoXbWF4X2hlYXRfc2V0cG9pbnRfbGltaXQYBSABKBESHwoXbWluX2Nvb2xfc2V0cG9pbnRfbGltaXQYBiABKBESHwoXbWF4X2Nvb2xfc2V0cG9pbnRfbGltaXQYByABKBESJQodY29udHJvbF9zZXF1ZW5jZV9vZl9vcGVyYXRpb24YCCABKA0SEwoLc3lzdGVtX21vZGUYCSABKA0SHwoXdGhlcm1vc3RhdF9ydW5uaW5nX21vZGUYCiABKA0igAEKG1RlbXBlcmF0dXJlU2Vuc29yUHJvcGVydGllcxIWCg5tZWFzdXJlZF92YWx1ZRgBIAEoERIaChJtaW5fbWVhc3VyZWRfdmFsdWUYAiABKBESGgoSbWF4X21lYXN1cmVkX3ZhbHVlGAMgASgREhEKCXRvbGVyYW5jZRgEIAEoDSJ9ChhIdW1pZGl0eVNlbnNvclByb3BlcnRpZXMSFgoObWVhc3VyZWRfdmFsdWUYASABKA0SGgoSbWluX21lYXN1cmVkX3ZhbHVlGAIgASgNEhoKEm1heF9tZWFzdXJlZF92YWx1ZRgDIAEoDRIRCgl0b2xlcmFuY2UYBCABKA0iswEKGU9jY3VwYW5jeVNlbnNvclByb3BlcnRpZXMSEQoJb2NjdXBhbmN5GAEgASgNEh0KFW9jY3VwYW5jeV9zZW5zb3JfdHlwZRgCIAEoDRIkChxvY2N1cGFuY3lfc2Vuc29yX3R5cGVfYml0bWFwGAMgASgNEh4KFnBpcl9vY2NfdG9fdW5vY2NfZGVsYXkYBCABKA0SHgoWcGlyX3Vub2NjX3RvX29jY19kZWxheRgFIAEoDSIuChdDb250YWN0U2Vuc29yUHJvcGVydGllcxITCgtzdGF0ZV92YWx1ZRgBIAEoCCKnAgoYV2luZG93Q292ZXJpbmdQcm9wZXJ0aWVzEhUKDWNvdmVyaW5nX3R5cGUYASABKA0SKwojY3VycmVudF9wb3NpdGlvbl9saWZ0X3BlcmNlbnQxMDB0aHMYAiABKA0SKwojY3VycmVudF9wb3NpdGlvbl90aWx0X3BlcmNlbnQxMDB0aHMYAyABKA0SKgoidGFyZ2V0X3Bvc2l0aW9uX2xpZnRfcGVyY2VudDEwMHRocxgEIAEoDRIqCiJ0YXJnZXRfcG9zaXRpb25fdGlsdF9wZXJjZW50MTAwdGhzGAUgASgNEhoKEm9wZXJhdGlvbmFsX3N0YXR1cxgGIAEoDRIYChBlbmRfcHJvZHVjdF90eXBlGAcgASgNEgwKBG1vZGUYCCABKA0igQEKEkRvb3JMb2NrUHJvcGVydGllcxISCgpsb2NrX3N0YXRlGAEgASgNEhEKCWxvY2tfdHlwZRgCIAEoDRIYChBhY3R1YXRvcl9lbmFibGVkGAMgASgIEhIKCmRvb3Jfc3RhdGUYBCABKA0SFgoOb3BlcmF0aW5nX21vZGUYBSABKA0ihQEKFE9uT2ZmTGlnaHRQcm9wZXJ0aWVzEg4KBm9uX29mZhgBIAEoCBIcChRnbG9iYWxfc2NlbmVfY29udHJvbBgCIAEoCBIPCgdvbl90aW1lGAMgASgNEhUKDW9mZl93YWl0X3RpbWUYBCABKA0SFwoPc3RhcnRfdXBfb25fb2ZmGAUgASgNIrABChdEaW1tYWJsZUxpZ2h0UHJvcGVydGllcxIOCgZvbl9vZmYYASABKAgSFQoNY3VycmVudF9sZXZlbBgCIAEoDRIRCgltaW5fbGV2ZWwYAyABKA0SEQoJbWF4X2xldmVsGAQgASgNEhAKCG9uX2xldmVsGAUgASgNEh4KFnN0YXJ0X3VwX2N1cnJlbnRfbGV2ZWwYBiABKA0SFgoOcmVtYWluaW5nX3RpbWUYByABKA0i+AEKH0NvbG9yVGVtcGVyYXR1cmVMaWdodFByb3BlcnRpZXMSDgoGb25fb2ZmGAEgASgIEhUKDWN1cnJlbnRfbGV2ZWwYAiABKA0SIAoYY29sb3JfdGVtcGVyYXR1cmVfbWlyZWRzGAMgASgNEiYKHmNvbG9yX3RlbXBfcGh5c2ljYWxfbWluX21pcmVkcxgEIAEoDRImCh5jb2xvcl90ZW1wX3BoeXNpY2FsX21heF9taXJlZHMYBSABKA0SKAogc3RhcnR1cF9jb2xvcl90ZW1wZXJhdHVyZV9taXJlZHMYBiABKA0SEgoKY29sb3JfbW9kZRgHIAEoDSJuChZFbmVyZ3lTZW5zb3JQcm9wZXJ0aWVzEhQKDGFjdGl2ZV9wb3dlchgBIAEoBRITCgtybXNfdm9sdGFnZRgCIAEoDRITCgtybXNfY3VycmVudBgDIAEoDRIUCgxhY19mcmVxdWVuY3kYBCABKA0ifQoYUHJlc3N1cmVTZW5zb3JQcm9wZXJ0aWVzEhYKDm1lYXN1cmVkX3ZhbHVlGAEgASgREhoKEm1pbl9tZWFzdXJlZF92YWx1ZRgCIAEoERIaChJtYXhfbWVhc3VyZWRfdmFsdWUYAyABKBESEQoJdG9sZXJhbmNlGAQgASgNQgJIAWIGcHJvdG8z");
12
+ fileDesc("CiZrdXNpbnRhL2lvdC9kZXZpY2UvdjEvcHJvcGVydGllcy5wcm90bxIVa3VzaW50YS5pb3QuZGV2aWNlLnYxIv8HChRUaGVybW9zdGF0UHJvcGVydGllcxI9ChFsb2NhbF90ZW1wZXJhdHVyZRgBIAEoEUIdiLUYgQSStRgQTG9jYWxUZW1wZXJhdHVyZbC1GABIAIgBARJMChlvY2N1cGllZF9oZWF0aW5nX3NldHBvaW50GAIgASgRQiSItRiBBJK1GBdPY2N1cGllZEhlYXRpbmdTZXRwb2ludLC1GBJIAYgBARJMChlvY2N1cGllZF9jb29saW5nX3NldHBvaW50GAMgASgRQiSItRiBBJK1GBdPY2N1cGllZENvb2xpbmdTZXRwb2ludLC1GBFIAogBARJHChdtaW5faGVhdF9zZXRwb2ludF9saW1pdBgEIAEoEUIhiLUYgQSStRgUTWluSGVhdFNldHBvaW50TGltaXSwtRgVSAOIAQESRwoXbWF4X2hlYXRfc2V0cG9pbnRfbGltaXQYBSABKBFCIYi1GIEEkrUYFE1heEhlYXRTZXRwb2ludExpbWl0sLUYFkgEiAEBEkcKF21pbl9jb29sX3NldHBvaW50X2xpbWl0GAYgASgRQiGItRiBBJK1GBRNaW5Db29sU2V0cG9pbnRMaW1pdLC1GBdIBYgBARJHChdtYXhfY29vbF9zZXRwb2ludF9saW1pdBgHIAEoEUIhiLUYgQSStRgUTWF4Q29vbFNldHBvaW50TGltaXSwtRgYSAaIAQESUwodY29udHJvbF9zZXF1ZW5jZV9vZl9vcGVyYXRpb24YCCABKA1CJ4i1GIEEkrUYGkNvbnRyb2xTZXF1ZW5jZU9mT3BlcmF0aW9usLUYG0gHiAEBEjEKC3N5c3RlbV9tb2RlGAkgASgNQheItRiBBJK1GApTeXN0ZW1Nb2RlsLUYHEgIiAEBEkgKF3RoZXJtb3N0YXRfcnVubmluZ19tb2RlGAogASgNQiKItRiBBJK1GBVUaGVybW9zdGF0UnVubmluZ01vZGWwtRgeSAmIAQE6Bpq1GAKBBkIUChJfbG9jYWxfdGVtcGVyYXR1cmVCHAoaX29jY3VwaWVkX2hlYXRpbmdfc2V0cG9pbnRCHAoaX29jY3VwaWVkX2Nvb2xpbmdfc2V0cG9pbnRCGgoYX21pbl9oZWF0X3NldHBvaW50X2xpbWl0QhoKGF9tYXhfaGVhdF9zZXRwb2ludF9saW1pdEIaChhfbWluX2Nvb2xfc2V0cG9pbnRfbGltaXRCGgoYX21heF9jb29sX3NldHBvaW50X2xpbWl0QiAKHl9jb250cm9sX3NlcXVlbmNlX29mX29wZXJhdGlvbkIOCgxfc3lzdGVtX21vZGVCGgoYX3RoZXJtb3N0YXRfcnVubmluZ19tb2RlIt0CChtUZW1wZXJhdHVyZVNlbnNvclByb3BlcnRpZXMSNwoObWVhc3VyZWRfdmFsdWUYASABKBFCGoi1GIIIkrUYDU1lYXN1cmVkVmFsdWWwtRgASACIAQESPgoSbWluX21lYXN1cmVkX3ZhbHVlGAIgASgRQh2ItRiCCJK1GBBNaW5NZWFzdXJlZFZhbHVlsLUYAUgBiAEBEj4KEm1heF9tZWFzdXJlZF92YWx1ZRgDIAEoEUIdiLUYggiStRgQTWF4TWVhc3VyZWRWYWx1ZbC1GAJIAogBARIuCgl0b2xlcmFuY2UYBCABKA1CFoi1GIIIkrUYCVRvbGVyYW5jZbC1GANIA4gBAToGmrUYAoIGQhEKD19tZWFzdXJlZF92YWx1ZUIVChNfbWluX21lYXN1cmVkX3ZhbHVlQhUKE19tYXhfbWVhc3VyZWRfdmFsdWVCDAoKX3RvbGVyYW5jZSLaAgoYSHVtaWRpdHlTZW5zb3JQcm9wZXJ0aWVzEjcKDm1lYXN1cmVkX3ZhbHVlGAEgASgNQhqItRiFCJK1GA1NZWFzdXJlZFZhbHVlsLUYAEgAiAEBEj4KEm1pbl9tZWFzdXJlZF92YWx1ZRgCIAEoDUIdiLUYhQiStRgQTWluTWVhc3VyZWRWYWx1ZbC1GAFIAYgBARI+ChJtYXhfbWVhc3VyZWRfdmFsdWUYAyABKA1CHYi1GIUIkrUYEE1heE1lYXN1cmVkVmFsdWWwtRgCSAKIAQESLgoJdG9sZXJhbmNlGAQgASgNQhaItRiFCJK1GAlUb2xlcmFuY2WwtRgDSAOIAQE6Bpq1GAKHBkIRCg9fbWVhc3VyZWRfdmFsdWVCFQoTX21pbl9tZWFzdXJlZF92YWx1ZUIVChNfbWF4X21lYXN1cmVkX3ZhbHVlQgwKCl90b2xlcmFuY2Ui4wQKGU9jY3VwYW5jeVNlbnNvclByb3BlcnRpZXMSLgoJb2NjdXBhbmN5GAEgASgNQhaItRiGCJK1GAlPY2N1cGFuY3mwtRgASACIAQESRAoVb2NjdXBhbmN5X3NlbnNvcl90eXBlGAIgASgNQiCItRiGCJK1GBNPY2N1cGFuY3lTZW5zb3JUeXBlsLUYAUgBiAEBElEKHG9jY3VwYW5jeV9zZW5zb3JfdHlwZV9iaXRtYXAYAyABKA1CJoi1GIYIkrUYGU9jY3VwYW5jeVNlbnNvclR5cGVCaXRtYXCwtRgCSAKIAQESWAogcGlyX29jY3VwaWVkX3RvX3Vub2NjdXBpZWRfZGVsYXkYBCABKA1CKYi1GIYIkrUYHFBJUk9jY3VwaWVkVG9Vbm9jY3VwaWVkRGVsYXmwtRgQSAOIAQESWAogcGlyX3Vub2NjdXBpZWRfdG9fb2NjdXBpZWRfZGVsYXkYBSABKA1CKYi1GIYIkrUYHFBJUlVub2NjdXBpZWRUb09jY3VwaWVkRGVsYXmwtRgRSASIAQE6Bpq1GAKHAkIMCgpfb2NjdXBhbmN5QhgKFl9vY2N1cGFuY3lfc2Vuc29yX3R5cGVCHwodX29jY3VwYW5jeV9zZW5zb3JfdHlwZV9iaXRtYXBCIwohX3Bpcl9vY2N1cGllZF90b191bm9jY3VwaWVkX2RlbGF5QiMKIV9waXJfdW5vY2N1cGllZF90b19vY2N1cGllZF9kZWxheVIWcGlyX29jY190b191bm9jY19kZWxheVIWcGlyX3Vub2NjX3RvX29jY19kZWxheSJiChdDb250YWN0U2Vuc29yUHJvcGVydGllcxIwCgtzdGF0ZV92YWx1ZRgBIAEoCEIWiLUYRZK1GApTdGF0ZVZhbHVlsLUYAEgAiAEBOgWatRgBFUIOCgxfc3RhdGVfdmFsdWUi2QYKGFdpbmRvd0NvdmVyaW5nUHJvcGVydGllcxItCg1jb3ZlcmluZ190eXBlGAEgASgNQhGItRiCApK1GARUeXBlsLUYAEgAiAEBEl8KI2N1cnJlbnRfcG9zaXRpb25fbGlmdF9wZXJjZW50MTAwdGhzGAIgASgNQi2ItRiCApK1GCBDdXJyZW50UG9zaXRpb25MaWZ0UGVyY2VudDEwMHRoc7C1GA5IAYgBARJfCiNjdXJyZW50X3Bvc2l0aW9uX3RpbHRfcGVyY2VudDEwMHRocxgDIAEoDUItiLUYggKStRggQ3VycmVudFBvc2l0aW9uVGlsdFBlcmNlbnQxMDB0aHOwtRgPSAKIAQESXQoidGFyZ2V0X3Bvc2l0aW9uX2xpZnRfcGVyY2VudDEwMHRocxgEIAEoDUIsiLUYggKStRgfVGFyZ2V0UG9zaXRpb25MaWZ0UGVyY2VudDEwMHRoc7C1GAtIA4gBARJdCiJ0YXJnZXRfcG9zaXRpb25fdGlsdF9wZXJjZW50MTAwdGhzGAUgASgNQiyItRiCApK1GB9UYXJnZXRQb3NpdGlvblRpbHRQZXJjZW50MTAwdGhzsLUYDEgEiAEBEj8KEm9wZXJhdGlvbmFsX3N0YXR1cxgGIAEoDUIeiLUYggKStRgRT3BlcmF0aW9uYWxTdGF0dXOwtRgKSAWIAQESOgoQZW5kX3Byb2R1Y3RfdHlwZRgHIAEoDUIbiLUYggKStRgORW5kUHJvZHVjdFR5cGWwtRgNSAaIAQESJAoEbW9kZRgIIAEoDUIRiLUYggKStRgETW9kZbC1GBdIB4gBAToGmrUYAoIEQhAKDl9jb3ZlcmluZ190eXBlQiYKJF9jdXJyZW50X3Bvc2l0aW9uX2xpZnRfcGVyY2VudDEwMHRoc0ImCiRfY3VycmVudF9wb3NpdGlvbl90aWx0X3BlcmNlbnQxMDB0aHNCJQojX3RhcmdldF9wb3NpdGlvbl9saWZ0X3BlcmNlbnQxMDB0aHNCJQojX3RhcmdldF9wb3NpdGlvbl90aWx0X3BlcmNlbnQxMDB0aHNCFQoTX29wZXJhdGlvbmFsX3N0YXR1c0ITChFfZW5kX3Byb2R1Y3RfdHlwZUIHCgVfbW9kZSL2AgoSRG9vckxvY2tQcm9wZXJ0aWVzEi8KCmxvY2tfc3RhdGUYASABKA1CFoi1GIECkrUYCUxvY2tTdGF0ZbC1GABIAIgBARItCglsb2NrX3R5cGUYAiABKA1CFYi1GIECkrUYCExvY2tUeXBlsLUYAUgBiAEBEjsKEGFjdHVhdG9yX2VuYWJsZWQYAyABKAhCHIi1GIECkrUYD0FjdHVhdG9yRW5hYmxlZLC1GAJIAogBARIvCgpkb29yX3N0YXRlGAQgASgNQhaItRiBApK1GAlEb29yU3RhdGWwtRgDSAOIAQESNwoOb3BlcmF0aW5nX21vZGUYBSABKA1CGoi1GIECkrUYDU9wZXJhdGluZ01vZGWwtRglSASIAQE6BZq1GAEKQg0KC19sb2NrX3N0YXRlQgwKCl9sb2NrX3R5cGVCEwoRX2FjdHVhdG9yX2VuYWJsZWRCDQoLX2Rvb3Jfc3RhdGVCEQoPX29wZXJhdGluZ19tb2RlIv4CChRPbk9mZkxpZ2h0UHJvcGVydGllcxImCgZvbl9vZmYYASABKAhCEYi1GAaStRgFT25PZmawtRgASACIAQESQwoUZ2xvYmFsX3NjZW5lX2NvbnRyb2wYAiABKAhCIIi1GAaStRgSR2xvYmFsU2NlbmVDb250cm9ssLUYgIABSAGIAQESKgoHb25fdGltZRgDIAEoDUIUiLUYBpK1GAZPblRpbWWwtRiBgAFIAogBARI1Cg1vZmZfd2FpdF90aW1lGAQgASgNQhmItRgGkrUYC09mZldhaXRUaW1lsLUYgoABSAOIAQESOAoPc3RhcnRfdXBfb25fb2ZmGAUgASgNQhqItRgGkrUYDFN0YXJ0VXBPbk9mZrC1GIOAAUgEiAEBOgaatRgCgAJCCQoHX29uX29mZkIXChVfZ2xvYmFsX3NjZW5lX2NvbnRyb2xCCgoIX29uX3RpbWVCEAoOX29mZl93YWl0X3RpbWVCEgoQX3N0YXJ0X3VwX29uX29mZiL7AwoXRGltbWFibGVMaWdodFByb3BlcnRpZXMSJgoGb25fb2ZmGAEgASgIQhGItRgGkrUYBU9uT2ZmsLUYAEgAiAEBEjQKDWN1cnJlbnRfbGV2ZWwYAiABKA1CGIi1GAiStRgMQ3VycmVudExldmVssLUYAEgBiAEBEiwKCW1pbl9sZXZlbBgDIAEoDUIUiLUYCJK1GAhNaW5MZXZlbLC1GAJIAogBARIsCgltYXhfbGV2ZWwYBCABKA1CFIi1GAiStRgITWF4TGV2ZWywtRgDSAOIAQESKgoIb25fbGV2ZWwYBSABKA1CE4i1GAiStRgHT25MZXZlbLC1GBFIBIgBARJGChZzdGFydF91cF9jdXJyZW50X2xldmVsGAYgASgNQiGItRgIkrUYE1N0YXJ0VXBDdXJyZW50TGV2ZWywtRiAgAFIBYgBARI2Cg5yZW1haW5pbmdfdGltZRgHIAEoDUIZiLUYCJK1GA1SZW1haW5pbmdUaW1lsLUYAUgGiAEBOgaatRgCgQJCCQoHX29uX29mZkIQCg5fY3VycmVudF9sZXZlbEIMCgpfbWluX2xldmVsQgwKCl9tYXhfbGV2ZWxCCwoJX29uX2xldmVsQhkKF19zdGFydF91cF9jdXJyZW50X2xldmVsQhEKD19yZW1haW5pbmdfdGltZSLFBQofQ29sb3JUZW1wZXJhdHVyZUxpZ2h0UHJvcGVydGllcxImCgZvbl9vZmYYASABKAhCEYi1GAaStRgFT25PZmawtRgASACIAQESNAoNY3VycmVudF9sZXZlbBgCIAEoDUIYiLUYCJK1GAxDdXJyZW50TGV2ZWywtRgASAGIAQESSgoYY29sb3JfdGVtcGVyYXR1cmVfbWlyZWRzGAMgASgNQiOItRiABpK1GBZDb2xvclRlbXBlcmF0dXJlTWlyZWRzsLUYB0gCiAEBElYKHmNvbG9yX3RlbXBfcGh5c2ljYWxfbWluX21pcmVkcxgEIAEoDUIpiLUYgAaStRgaQ29sb3JUZW1wUGh5c2ljYWxNaW5NaXJlZHOwtRiLgAFIA4gBARJWCh5jb2xvcl90ZW1wX3BoeXNpY2FsX21heF9taXJlZHMYBSABKA1CKYi1GIAGkrUYGkNvbG9yVGVtcFBoeXNpY2FsTWF4TWlyZWRzsLUYjIABSASIAQESWwogc3RhcnR1cF9jb2xvcl90ZW1wZXJhdHVyZV9taXJlZHMYBiABKA1CLIi1GIAGkrUYHVN0YXJ0VXBDb2xvclRlbXBlcmF0dXJlTWlyZWRzsLUYkIABSAWIAQESLwoKY29sb3JfbW9kZRgHIAEoDUIWiLUYgAaStRgJQ29sb3JNb2RlsLUYCEgGiAEBOgaatRgCjAJCCQoHX29uX29mZkIQCg5fY3VycmVudF9sZXZlbEIbChlfY29sb3JfdGVtcGVyYXR1cmVfbWlyZWRzQiEKH19jb2xvcl90ZW1wX3BoeXNpY2FsX21pbl9taXJlZHNCIQofX2NvbG9yX3RlbXBfcGh5c2ljYWxfbWF4X21pcmVkc0IjCiFfc3RhcnR1cF9jb2xvcl90ZW1wZXJhdHVyZV9taXJlZHNCDQoLX2NvbG9yX21vZGUi6AIKFkVuZXJneVNlbnNvclByb3BlcnRpZXMSMwoMYWN0aXZlX3Bvd2VyGAUgASgSQhiItRiQAZK1GAtBY3RpdmVQb3dlcrC1GAhIAIgBARIqCgd2b2x0YWdlGAYgASgSQhSItRiQAZK1GAdWb2x0YWdlsLUYBEgBiAEBEjcKDmFjdGl2ZV9jdXJyZW50GAcgASgSQhqItRiQAZK1GA1BY3RpdmVDdXJyZW50sLUYBUgCiAEBEi4KCWZyZXF1ZW5jeRgIIAEoEkIWiLUYkAGStRgJRnJlcXVlbmN5sLUYDkgDiAEBOgaatRgCkApCDwoNX2FjdGl2ZV9wb3dlckIKCghfdm9sdGFnZUIRCg9fYWN0aXZlX2N1cnJlbnRCDAoKX2ZyZXF1ZW5jeUoECAEQAkoECAIQA0oECAMQBEoECAQQBVILcm1zX3ZvbHRhZ2VSC3Jtc19jdXJyZW50UgxhY19mcmVxdWVuY3ki2gIKGFByZXNzdXJlU2Vuc29yUHJvcGVydGllcxI3Cg5tZWFzdXJlZF92YWx1ZRgBIAEoEUIaiLUYgwiStRgNTWVhc3VyZWRWYWx1ZbC1GABIAIgBARI+ChJtaW5fbWVhc3VyZWRfdmFsdWUYAiABKBFCHYi1GIMIkrUYEE1pbk1lYXN1cmVkVmFsdWWwtRgBSAGIAQESPgoSbWF4X21lYXN1cmVkX3ZhbHVlGAMgASgRQh2ItRiDCJK1GBBNYXhNZWFzdXJlZFZhbHVlsLUYAkgCiAEBEi4KCXRvbGVyYW5jZRgEIAEoDUIWiLUYgwiStRgJVG9sZXJhbmNlsLUYA0gDiAEBOgaatRgChQZCEQoPX21lYXN1cmVkX3ZhbHVlQhUKE19taW5fbWVhc3VyZWRfdmFsdWVCFQoTX21heF9tZWFzdXJlZF92YWx1ZUIMCgpfdG9sZXJhbmNlIqUDChVQb3dlclNvdXJjZVByb3BlcnRpZXMSQwoVYmF0X3BlcmNlbnRfcmVtYWluaW5nGAEgASgNQh+ItRgvkrUYE0JhdFBlcmNlbnRSZW1haW5pbmewtRgMSACIAQESOQoQYmF0X2NoYXJnZV9sZXZlbBgCIAEoDUIaiLUYL5K1GA5CYXRDaGFyZ2VMZXZlbLC1GA5IAYgBARJFChZiYXRfcmVwbGFjZW1lbnRfbmVlZGVkGAMgASgIQiCItRgvkrUYFEJhdFJlcGxhY2VtZW50TmVlZGVksLUYD0gCiAEBEjAKC2JhdF92b2x0YWdlGAQgASgNQhaItRgvkrUYCkJhdFZvbHRhZ2WwtRgLSAOIAQESJwoGc3RhdHVzGAUgASgNQhKItRgvkrUYBlN0YXR1c7C1GABIBIgBAToFmrUYARFCGAoWX2JhdF9wZXJjZW50X3JlbWFpbmluZ0ITChFfYmF0X2NoYXJnZV9sZXZlbEIZChdfYmF0X3JlcGxhY2VtZW50X25lZWRlZEIOCgxfYmF0X3ZvbHRhZ2VCCQoHX3N0YXR1c0ICSAFiBnByb3RvMw", [file_kusinta_iot_device_v1_matter_options]);
12
13
 
13
14
  /**
14
15
  * Describes the message kusinta.iot.device.v1.ThermostatProperties.
@@ -94,3 +95,10 @@ export const EnergySensorPropertiesSchema = /*@__PURE__*/
94
95
  export const PressureSensorPropertiesSchema = /*@__PURE__*/
95
96
  messageDesc(file_kusinta_iot_device_v1_properties, 11);
96
97
 
98
+ /**
99
+ * Describes the message kusinta.iot.device.v1.PowerSourceProperties.
100
+ * Use `create(PowerSourcePropertiesSchema)` to create a new message.
101
+ */
102
+ export const PowerSourcePropertiesSchema = /*@__PURE__*/
103
+ messageDesc(file_kusinta_iot_device_v1_properties, 12);
104
+
@@ -2,7 +2,7 @@
2
2
  // @generated from file kusinta/iot/device/v1/property_update.proto (package kusinta.iot.device.v1, syntax proto3)
3
3
  /* eslint-disable */
4
4
 
5
- import type { GenFile, GenMessage } from "@bufbuild/protobuf/codegenv2";
5
+ import type { GenEnum, GenFile, GenMessage } from "@bufbuild/protobuf/codegenv2";
6
6
  import type { Message } from "@bufbuild/protobuf";
7
7
  import type { DeviceId } from "../../identity/v1/identity_pb.js";
8
8
  import type { Timestamp } from "@bufbuild/protobuf/wkt";
@@ -14,9 +14,76 @@ export declare const file_kusinta_iot_device_v1_property_update: GenFile;
14
14
 
15
15
  /**
16
16
  * PropertyUpdate carries a single attribute change from connector to gateway,
17
- * or from gateway to Flutter app.
18
- * attribute_name uses PascalCase Matter attribute naming (e.g. "OccupiedHeatingSetpoint").
19
- * cluster_id_hex is the Matter cluster ID as a 4-char hex string (e.g. "0201" for Thermostat).
17
+ * or from gateway to app.
18
+ *
19
+ * Resolution rule (normative)
20
+ *
21
+ * A consumer storing an update into a device.v1.Device resolves it in three steps, all by
22
+ * reading options off the descriptor. No step involves transforming a name.
23
+ *
24
+ * 1. Pick the endpoint: the Device.endpoints entry whose endpoint_id equals the update's
25
+ * endpoint_id.
26
+ * 2. Pick the message. Two branches, chosen by whether vendor_extension is set:
27
+ * - absent (Matter): the Endpoint.matter_properties case whose message type declares
28
+ * (matter_device_type) == Endpoint.matter_device_type_id.
29
+ * - present (vendor): the Endpoint.vendor_properties case whose message type declares
30
+ * (vendor_extension) == the update's vendor_extension.
31
+ * 3. Pick the field:
32
+ * - Matter branch: the one field whose (matter_cluster_id) equals cluster_id AND
33
+ * whose (matter_attribute_id) equals attribute_id.
34
+ * - Vendor branch: the one field whose (vendor_attribute) equals attribute_name.
35
+ * cluster_id and attribute_id play no part; a vendor parameter has no Matter
36
+ * cluster.
37
+ *
38
+ * Both branches are the same shape: pick a message by a message option, then one field by
39
+ * a field option. Nothing nests, and nothing is searched recursively.
40
+ *
41
+ * Steps 2 and 3 depend only on the schema, never on the update: both maps are fixed at
42
+ * compile time. Build them ONCE at startup — a device-type-to-case map and a
43
+ * vendor-key-to-case map, plus a (cluster_id, attribute_id) map per message — and resolve
44
+ * with lookups. Only step 1 reads per-device data.
45
+ *
46
+ * Falling through to the generic carrier
47
+ *
48
+ * On the MATTER branch, failing step 2 or 3 is NOT a miss. It means the schema does not
49
+ * model this device type, or models it without this attribute — both legitimate, and both
50
+ * have a home: store the value into the endpoint's ClusterState for cluster_id, as an
51
+ * AttributeState with this attribute_id. See cluster_state.proto.
52
+ *
53
+ * This is the one-value-one-place rule in force. An attribute with a typed field is
54
+ * stored there and MUST NOT also appear in ClusterState.attributes; an attribute without
55
+ * one is stored generically and appears nowhere else. A consumer reading a value looks in
56
+ * the typed field first and the cluster carrier second, and never has to reconcile two
57
+ * answers.
58
+ *
59
+ * Cluster metadata is not subject to that rule: a ClusterState entry may exist for a fully
60
+ * modelled cluster in order to carry its cluster_revision, feature_map and
61
+ * accepted_command_ids.
62
+ *
63
+ * What remains a miss
64
+ *
65
+ * An update naming an endpoint the device does not have, or a vendor extension or vendor
66
+ * attribute that resolves to nothing. Those are not storable and MUST NOT be dropped
67
+ * silently: log at warning with device_id, endpoint_id, cluster_id and attribute_id, and
68
+ * count it. A miss now means a real disagreement about the device's shape, rather than
69
+ * merely an attribute this schema has not got around to modelling.
70
+ *
71
+ * Advancing Device.last_seen on a miss is correct; the update is still evidence of life.
72
+ *
73
+ * Addressing
74
+ *
75
+ * Matter addresses attributes numerically and so does this schema: cluster_id and
76
+ * attribute_id are what resolution matches on, and both are required on the Matter branch.
77
+ * Numeric because the generic carrier must address attributes of clusters this schema does
78
+ * not model, and a vendor-defined cluster has no specification name to address it by — two
79
+ * addressing schemes would be worse than one.
80
+ *
81
+ * attribute_name is the attribute's own spelling, carried for logs and for anything
82
+ * rendering to a human. On the Matter branch it is optional and plays no part in
83
+ * resolution. On the VENDOR branch it is required and is what resolution matches, because
84
+ * a vendor parameter has no numeric ID in any specification — there, it is the vendor's own
85
+ * spelling exactly ("LEVEL", not "level").
86
+ *
20
87
  *
21
88
  * @generated from message kusinta.iot.device.v1.PropertyUpdate
22
89
  */
@@ -27,9 +94,14 @@ export declare type PropertyUpdate = Message<"kusinta.iot.device.v1.PropertyUpda
27
94
  deviceId?: DeviceId | undefined;
28
95
 
29
96
  /**
30
- * @generated from field: string attribute_name = 2;
97
+ * The attribute's own spelling. Required on the vendor branch, where it is what
98
+ * resolution matches. Optional on the Matter branch, where attribute_id resolves and this
99
+ * is for logs — but send it there too when it is known: it is what makes an unresolvable
100
+ * update legible to whoever reads the warning.
101
+ *
102
+ * @generated from field: optional string attribute_name = 2;
31
103
  */
32
- attributeName: string;
104
+ attributeName?: string | undefined;
33
105
 
34
106
  /**
35
107
  * @generated from oneof kusinta.iot.device.v1.PropertyUpdate.value
@@ -78,9 +150,73 @@ export declare type PropertyUpdate = Message<"kusinta.iot.device.v1.PropertyUpda
78
150
  timestamp?: Timestamp | undefined;
79
151
 
80
152
  /**
81
- * @generated from field: string cluster_id_hex = 10;
153
+ * How much the producer believes this value. Unset means no claim, which is how every
154
+ * producer written before this field behaved, so a consumer that ignores it and a
155
+ * producer that never sets it both behave exactly as they did.
156
+ *
157
+ * Snapshots carry no provenance. Endpoint.matter_properties is a typed message whose fields
158
+ * hold a value and nothing else, so a gateway MUST NOT store an OPTIMISTIC value into
159
+ * its registry: an app reconnecting mid-window would receive it restated as plain
160
+ * fact. A snapshot is a statement of what has been confirmed. A reconnect during an
161
+ * optimistic window therefore shows the last confirmed value, and the correction or
162
+ * confirmation arrives on the live path as it would have anyway.
163
+ *
164
+ * @generated from field: kusinta.iot.device.v1.ValueProvenance provenance = 11;
165
+ */
166
+ provenance: ValueProvenance;
167
+
168
+ /**
169
+ * Which endpoint of the device this attribute belongs to. Required by rule — proto3 has
170
+ * no `required`, and `optional` is what makes "not stated" representable so a consumer
171
+ * can reject it. An update that names no endpoint is a miss, logged like any other
172
+ * unresolvable update.
173
+ *
174
+ * Not defaulted to the primary endpoint. That fallback passes every test on a
175
+ * single-endpoint device and misroutes on the day one grows a second, which is
176
+ * precisely the class of silent failure this rule exists to prevent. Explicit presence
177
+ * rather than treating 0 as "unset": 0 is the Matter root node, and a reserved-zero
178
+ * sentinel is the pattern this schema has been removing, not adding.
179
+ *
180
+ * @generated from field: optional uint32 endpoint_id = 12;
181
+ */
182
+ endpointId?: number | undefined;
183
+
184
+ /**
185
+ * Set to route this update down the vendor branch of step 2, naming the extension by
186
+ * its (vendor_extension) key — e.g. "homematic.thermostat". Absent means the Matter
187
+ * branch, which
188
+ * is what every update carried before this field existed.
189
+ *
190
+ * A vendor parameter has no Matter cluster, so cluster_id stays unset here.
191
+ *
192
+ * @generated from field: optional string vendor_extension = 13;
193
+ */
194
+ vendorExtension?: string | undefined;
195
+
196
+ /**
197
+ * The Matter cluster this attribute belongs to, e.g. 0x0201 for Thermostat. Compared
198
+ * directly against (matter_cluster_id), which is a uint32 too — a hex string on the
199
+ * wire meant every consumer parsed it on every update just to compare it with a number
200
+ * the descriptor already held, and it invented questions the wire should not ask
201
+ * ("0201" vs "201" vs "0x0201", upper or lower case).
202
+ *
203
+ * Required on the Matter branch, unset on the vendor branch: a vendor parameter has no
204
+ * Matter cluster.
205
+ *
206
+ * @generated from field: optional uint32 cluster_id = 14;
207
+ */
208
+ clusterId?: number | undefined;
209
+
210
+ /**
211
+ * The Matter attribute ID within that cluster, e.g. 0x0012 for OccupiedHeatingSetpoint.
212
+ * What step 3 matches against (matter_attribute_id) on the Matter branch, and what
213
+ * addresses an attribute of a cluster this schema does not model.
214
+ *
215
+ * Required on the Matter branch, unset on the vendor branch.
216
+ *
217
+ * @generated from field: optional uint32 attribute_id = 15;
82
218
  */
83
- clusterIdHex: string;
219
+ attributeId?: number | undefined;
84
220
  };
85
221
 
86
222
  /**
@@ -110,3 +246,56 @@ export declare type PropertyUpdateBatch = Message<"kusinta.iot.device.v1.Propert
110
246
  */
111
247
  export declare const PropertyUpdateBatchSchema: GenMessage<PropertyUpdateBatch>;
112
248
 
249
+ /**
250
+ * ValueProvenance says where a reported value came from and how much its producer
251
+ * believes it. Without it an optimistically-applied value and a genuine device reading
252
+ * are indistinguishable, and a consumer's only options are to present an unconfirmed
253
+ * value as settled or to hardcode a settle window chasing a rollback timer in someone
254
+ * else's codebase.
255
+ *
256
+ * @generated from enum kusinta.iot.device.v1.ValueProvenance
257
+ */
258
+ export enum ValueProvenance {
259
+ /**
260
+ * No claim. This is what a producer that says nothing means, and it is the meaning
261
+ * every update carried before this field existed — treat it as "unknown", not as
262
+ * "confirmed".
263
+ *
264
+ * @generated from enum value: VALUE_PROVENANCE_UNSPECIFIED = 0;
265
+ */
266
+ UNSPECIFIED = 0,
267
+
268
+ /**
269
+ * The device itself reported this value. The default for any connector whose upstream
270
+ * only publishes what it has actually read.
271
+ *
272
+ * @generated from enum value: VALUE_PROVENANCE_CONFIRMED = 1;
273
+ */
274
+ CONFIRMED = 1,
275
+
276
+ /**
277
+ * Written and accepted, not yet confirmed by the device. An upstream system applied
278
+ * the value optimistically and started its own rollback timer; the device may be
279
+ * asleep and may never take it. A consumer SHOULD render this as provisional.
280
+ *
281
+ * @generated from enum value: VALUE_PROVENANCE_OPTIMISTIC = 2;
282
+ */
283
+ OPTIMISTIC = 2,
284
+
285
+ /**
286
+ * An optimistic value that did not hold: the device never confirmed and the upstream
287
+ * system restored the previous value. Deliberately distinct from CONFIRMED — a
288
+ * restored value is the producer's belief, not a fresh device reading, and conflating
289
+ * the two rebuilds the same ambiguity one level down. It is what lets a consumer show
290
+ * a rollback as a rollback rather than as a value that inexplicably moved.
291
+ *
292
+ * @generated from enum value: VALUE_PROVENANCE_CORRECTED = 3;
293
+ */
294
+ CORRECTED = 3,
295
+ }
296
+
297
+ /**
298
+ * Describes the enum kusinta.iot.device.v1.ValueProvenance.
299
+ */
300
+ export declare const ValueProvenanceSchema: GenEnum<ValueProvenance>;
301
+
@@ -2,7 +2,7 @@
2
2
  // @generated from file kusinta/iot/device/v1/property_update.proto (package kusinta.iot.device.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
6
  import { file_google_protobuf_timestamp } from "@bufbuild/protobuf/wkt";
7
7
  import { file_kusinta_iot_identity_v1_identity } from "../../identity/v1/identity_pb.js";
8
8
 
@@ -10,7 +10,7 @@ import { file_kusinta_iot_identity_v1_identity } from "../../identity/v1/identit
10
10
  * Describes the file kusinta/iot/device/v1/property_update.proto.
11
11
  */
12
12
  export const file_kusinta_iot_device_v1_property_update = /*@__PURE__*/
13
- fileDesc("CitrdXNpbnRhL2lvdC9kZXZpY2UvdjEvcHJvcGVydHlfdXBkYXRlLnByb3RvEhVrdXNpbnRhLmlvdC5kZXZpY2UudjEitQIKDlByb3BlcnR5VXBkYXRlEjQKCWRldmljZV9pZBgBIAEoCzIhLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLkRldmljZUlkEhYKDmF0dHJpYnV0ZV9uYW1lGAIgASgJEhMKCWludF92YWx1ZRgDIAEoEUgAEhQKCnVpbnRfdmFsdWUYBCABKA1IABIUCgpib29sX3ZhbHVlGAUgASgISAASFQoLZmxvYXRfdmFsdWUYBiABKAJIABIWCgxzdHJpbmdfdmFsdWUYByABKAlIABIVCgtieXRlc192YWx1ZRgIIAEoDEgAEi0KCXRpbWVzdGFtcBgJIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASFgoOY2x1c3Rlcl9pZF9oZXgYCiABKAlCBwoFdmFsdWUiggEKE1Byb3BlcnR5VXBkYXRlQmF0Y2gSNgoHdXBkYXRlcxgBIAMoCzIlLmt1c2ludGEuaW90LmRldmljZS52MS5Qcm9wZXJ0eVVwZGF0ZRIzCg9iYXRjaF90aW1lc3RhbXAYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQgJIAWIGcHJvdG8z", [file_google_protobuf_timestamp, file_kusinta_iot_identity_v1_identity]);
13
+ fileDesc("CitrdXNpbnRhL2lvdC9kZXZpY2UvdjEvcHJvcGVydHlfdXBkYXRlLnByb3RvEhVrdXNpbnRhLmlvdC5kZXZpY2UudjEiuQQKDlByb3BlcnR5VXBkYXRlEjQKCWRldmljZV9pZBgBIAEoCzIhLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLkRldmljZUlkEhsKDmF0dHJpYnV0ZV9uYW1lGAIgASgJSAGIAQESEwoJaW50X3ZhbHVlGAMgASgRSAASFAoKdWludF92YWx1ZRgEIAEoDUgAEhQKCmJvb2xfdmFsdWUYBSABKAhIABIVCgtmbG9hdF92YWx1ZRgGIAEoAkgAEhYKDHN0cmluZ192YWx1ZRgHIAEoCUgAEhUKC2J5dGVzX3ZhbHVlGAggASgMSAASLQoJdGltZXN0YW1wGAkgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBI6Cgpwcm92ZW5hbmNlGAsgASgOMiYua3VzaW50YS5pb3QuZGV2aWNlLnYxLlZhbHVlUHJvdmVuYW5jZRIYCgtlbmRwb2ludF9pZBgMIAEoDUgCiAEBEh0KEHZlbmRvcl9leHRlbnNpb24YDSABKAlIA4gBARIXCgpjbHVzdGVyX2lkGA4gASgNSASIAQESGQoMYXR0cmlidXRlX2lkGA8gASgNSAWIAQFCBwoFdmFsdWVCEQoPX2F0dHJpYnV0ZV9uYW1lQg4KDF9lbmRwb2ludF9pZEITChFfdmVuZG9yX2V4dGVuc2lvbkINCgtfY2x1c3Rlcl9pZEIPCg1fYXR0cmlidXRlX2lkSgQIChALUg5jbHVzdGVyX2lkX2hleCKCAQoTUHJvcGVydHlVcGRhdGVCYXRjaBI2Cgd1cGRhdGVzGAEgAygLMiUua3VzaW50YS5pb3QuZGV2aWNlLnYxLlByb3BlcnR5VXBkYXRlEjMKD2JhdGNoX3RpbWVzdGFtcBgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAqlAEKD1ZhbHVlUHJvdmVuYW5jZRIgChxWQUxVRV9QUk9WRU5BTkNFX1VOU1BFQ0lGSUVEEAASHgoaVkFMVUVfUFJPVkVOQU5DRV9DT05GSVJNRUQQARIfChtWQUxVRV9QUk9WRU5BTkNFX09QVElNSVNUSUMQAhIeChpWQUxVRV9QUk9WRU5BTkNFX0NPUlJFQ1RFRBADQgJIAWIGcHJvdG8z", [file_google_protobuf_timestamp, file_kusinta_iot_identity_v1_identity]);
14
14
 
15
15
  /**
16
16
  * Describes the message kusinta.iot.device.v1.PropertyUpdate.
@@ -26,3 +26,21 @@ export const PropertyUpdateSchema = /*@__PURE__*/
26
26
  export const PropertyUpdateBatchSchema = /*@__PURE__*/
27
27
  messageDesc(file_kusinta_iot_device_v1_property_update, 1);
28
28
 
29
+ /**
30
+ * Describes the enum kusinta.iot.device.v1.ValueProvenance.
31
+ */
32
+ export const ValueProvenanceSchema = /*@__PURE__*/
33
+ enumDesc(file_kusinta_iot_device_v1_property_update, 0);
34
+
35
+ /**
36
+ * ValueProvenance says where a reported value came from and how much its producer
37
+ * believes it. Without it an optimistically-applied value and a genuine device reading
38
+ * are indistinguishable, and a consumer's only options are to present an unconfirmed
39
+ * value as settled or to hardcode a settle window chasing a rollback timer in someone
40
+ * else's codebase.
41
+ *
42
+ * @generated from enum kusinta.iot.device.v1.ValueProvenance
43
+ */
44
+ export const ValueProvenance = /*@__PURE__*/
45
+ tsEnum(ValueProvenanceSchema);
46
+
@@ -0,0 +1,170 @@
1
+ // @generated by protoc-gen-es v2.12.0 with parameter "target=js+dts,import_extension=js"
2
+ // @generated from file kusinta/iot/registration/v1/registration.proto (package kusinta.iot.registration.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/registration/v1/registration.proto.
10
+ */
11
+ export declare const file_kusinta_iot_registration_v1_registration: GenFile;
12
+
13
+ /**
14
+ * @generated from message kusinta.iot.registration.v1.RegistrationRequest
15
+ */
16
+ export declare type RegistrationRequest = Message<"kusinta.iot.registration.v1.RegistrationRequest"> & {
17
+ /**
18
+ * @generated from field: string registration_token = 1;
19
+ */
20
+ registrationToken: string;
21
+
22
+ /**
23
+ * @generated from field: string external_ip = 2;
24
+ */
25
+ externalIp: string;
26
+
27
+ /**
28
+ * @generated from field: string csr_pem = 3;
29
+ */
30
+ csrPem: string;
31
+ };
32
+
33
+ /**
34
+ * Describes the message kusinta.iot.registration.v1.RegistrationRequest.
35
+ * Use `create(RegistrationRequestSchema)` to create a new message.
36
+ */
37
+ export declare const RegistrationRequestSchema: GenMessage<RegistrationRequest>;
38
+
39
+ /**
40
+ * @generated from message kusinta.iot.registration.v1.RegistrationProgress
41
+ */
42
+ export declare type RegistrationProgress = Message<"kusinta.iot.registration.v1.RegistrationProgress"> & {
43
+ /**
44
+ * @generated from field: string step = 1;
45
+ */
46
+ step: string;
47
+ };
48
+
49
+ /**
50
+ * Describes the message kusinta.iot.registration.v1.RegistrationProgress.
51
+ * Use `create(RegistrationProgressSchema)` to create a new message.
52
+ */
53
+ export declare const RegistrationProgressSchema: GenMessage<RegistrationProgress>;
54
+
55
+ /**
56
+ * @generated from message kusinta.iot.registration.v1.RegistrationComplete
57
+ */
58
+ export declare type RegistrationComplete = Message<"kusinta.iot.registration.v1.RegistrationComplete"> & {
59
+ /**
60
+ * @generated from field: string certificate_pem = 1;
61
+ */
62
+ certificatePem: string;
63
+
64
+ /**
65
+ * @generated from field: string ca_bundle_pem = 2;
66
+ */
67
+ caBundlePem: string;
68
+ };
69
+
70
+ /**
71
+ * Describes the message kusinta.iot.registration.v1.RegistrationComplete.
72
+ * Use `create(RegistrationCompleteSchema)` to create a new message.
73
+ */
74
+ export declare const RegistrationCompleteSchema: GenMessage<RegistrationComplete>;
75
+
76
+ /**
77
+ * @generated from message kusinta.iot.registration.v1.RegistrationError
78
+ */
79
+ export declare type RegistrationError = Message<"kusinta.iot.registration.v1.RegistrationError"> & {
80
+ /**
81
+ * @generated from field: string code = 1;
82
+ */
83
+ code: string;
84
+
85
+ /**
86
+ * @generated from field: string message = 2;
87
+ */
88
+ message: string;
89
+ };
90
+
91
+ /**
92
+ * Describes the message kusinta.iot.registration.v1.RegistrationError.
93
+ * Use `create(RegistrationErrorSchema)` to create a new message.
94
+ */
95
+ export declare const RegistrationErrorSchema: GenMessage<RegistrationError>;
96
+
97
+ /**
98
+ * Streamed response: server sends zero or more RegistrationProgress messages,
99
+ * then exactly one RegistrationComplete or RegistrationError, then closes.
100
+ *
101
+ * @generated from message kusinta.iot.registration.v1.RegistrationResponse
102
+ */
103
+ export declare type RegistrationResponse = Message<"kusinta.iot.registration.v1.RegistrationResponse"> & {
104
+ /**
105
+ * @generated from oneof kusinta.iot.registration.v1.RegistrationResponse.event
106
+ */
107
+ event: {
108
+ /**
109
+ * @generated from field: kusinta.iot.registration.v1.RegistrationProgress progress = 1;
110
+ */
111
+ value: RegistrationProgress;
112
+ case: "progress";
113
+ } | {
114
+ /**
115
+ * @generated from field: kusinta.iot.registration.v1.RegistrationComplete complete = 2;
116
+ */
117
+ value: RegistrationComplete;
118
+ case: "complete";
119
+ } | {
120
+ /**
121
+ * @generated from field: kusinta.iot.registration.v1.RegistrationError error = 3;
122
+ */
123
+ value: RegistrationError;
124
+ case: "error";
125
+ } | { case: undefined; value?: undefined };
126
+ };
127
+
128
+ /**
129
+ * Describes the message kusinta.iot.registration.v1.RegistrationResponse.
130
+ * Use `create(RegistrationResponseSchema)` to create a new message.
131
+ */
132
+ export declare const RegistrationResponseSchema: GenMessage<RegistrationResponse>;
133
+
134
+ /**
135
+ * @generated from message kusinta.iot.registration.v1.CertRenewalRequest
136
+ */
137
+ export declare type CertRenewalRequest = Message<"kusinta.iot.registration.v1.CertRenewalRequest"> & {
138
+ /**
139
+ * @generated from field: string csr_pem = 1;
140
+ */
141
+ csrPem: string;
142
+ };
143
+
144
+ /**
145
+ * Describes the message kusinta.iot.registration.v1.CertRenewalRequest.
146
+ * Use `create(CertRenewalRequestSchema)` to create a new message.
147
+ */
148
+ export declare const CertRenewalRequestSchema: GenMessage<CertRenewalRequest>;
149
+
150
+ /**
151
+ * @generated from message kusinta.iot.registration.v1.CertRenewalResponse
152
+ */
153
+ export declare type CertRenewalResponse = Message<"kusinta.iot.registration.v1.CertRenewalResponse"> & {
154
+ /**
155
+ * @generated from field: string certificate_pem = 1;
156
+ */
157
+ certificatePem: string;
158
+
159
+ /**
160
+ * @generated from field: string ca_bundle_pem = 2;
161
+ */
162
+ caBundlePem: string;
163
+ };
164
+
165
+ /**
166
+ * Describes the message kusinta.iot.registration.v1.CertRenewalResponse.
167
+ * Use `create(CertRenewalResponseSchema)` to create a new message.
168
+ */
169
+ export declare const CertRenewalResponseSchema: GenMessage<CertRenewalResponse>;
170
+
@@ -0,0 +1,61 @@
1
+ // @generated by protoc-gen-es v2.12.0 with parameter "target=js+dts,import_extension=js"
2
+ // @generated from file kusinta/iot/registration/v1/registration.proto (package kusinta.iot.registration.v1, syntax proto3)
3
+ /* eslint-disable */
4
+
5
+ import { fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv2";
6
+
7
+ /**
8
+ * Describes the file kusinta/iot/registration/v1/registration.proto.
9
+ */
10
+ export const file_kusinta_iot_registration_v1_registration = /*@__PURE__*/
11
+ fileDesc("Ci5rdXNpbnRhL2lvdC9yZWdpc3RyYXRpb24vdjEvcmVnaXN0cmF0aW9uLnByb3RvEhtrdXNpbnRhLmlvdC5yZWdpc3RyYXRpb24udjEiVwoTUmVnaXN0cmF0aW9uUmVxdWVzdBIaChJyZWdpc3RyYXRpb25fdG9rZW4YASABKAkSEwoLZXh0ZXJuYWxfaXAYAiABKAkSDwoHY3NyX3BlbRgDIAEoCSIkChRSZWdpc3RyYXRpb25Qcm9ncmVzcxIMCgRzdGVwGAEgASgJIkYKFFJlZ2lzdHJhdGlvbkNvbXBsZXRlEhcKD2NlcnRpZmljYXRlX3BlbRgBIAEoCRIVCg1jYV9idW5kbGVfcGVtGAIgASgJIjIKEVJlZ2lzdHJhdGlvbkVycm9yEgwKBGNvZGUYASABKAkSDwoHbWVzc2FnZRgCIAEoCSLuAQoUUmVnaXN0cmF0aW9uUmVzcG9uc2USRQoIcHJvZ3Jlc3MYASABKAsyMS5rdXNpbnRhLmlvdC5yZWdpc3RyYXRpb24udjEuUmVnaXN0cmF0aW9uUHJvZ3Jlc3NIABJFCghjb21wbGV0ZRgCIAEoCzIxLmt1c2ludGEuaW90LnJlZ2lzdHJhdGlvbi52MS5SZWdpc3RyYXRpb25Db21wbGV0ZUgAEj8KBWVycm9yGAMgASgLMi4ua3VzaW50YS5pb3QucmVnaXN0cmF0aW9uLnYxLlJlZ2lzdHJhdGlvbkVycm9ySABCBwoFZXZlbnQiJQoSQ2VydFJlbmV3YWxSZXF1ZXN0Eg8KB2Nzcl9wZW0YASABKAkiRQoTQ2VydFJlbmV3YWxSZXNwb25zZRIXCg9jZXJ0aWZpY2F0ZV9wZW0YASABKAkSFQoNY2FfYnVuZGxlX3BlbRgCIAEoCUICSAFiBnByb3RvMw");
12
+
13
+ /**
14
+ * Describes the message kusinta.iot.registration.v1.RegistrationRequest.
15
+ * Use `create(RegistrationRequestSchema)` to create a new message.
16
+ */
17
+ export const RegistrationRequestSchema = /*@__PURE__*/
18
+ messageDesc(file_kusinta_iot_registration_v1_registration, 0);
19
+
20
+ /**
21
+ * Describes the message kusinta.iot.registration.v1.RegistrationProgress.
22
+ * Use `create(RegistrationProgressSchema)` to create a new message.
23
+ */
24
+ export const RegistrationProgressSchema = /*@__PURE__*/
25
+ messageDesc(file_kusinta_iot_registration_v1_registration, 1);
26
+
27
+ /**
28
+ * Describes the message kusinta.iot.registration.v1.RegistrationComplete.
29
+ * Use `create(RegistrationCompleteSchema)` to create a new message.
30
+ */
31
+ export const RegistrationCompleteSchema = /*@__PURE__*/
32
+ messageDesc(file_kusinta_iot_registration_v1_registration, 2);
33
+
34
+ /**
35
+ * Describes the message kusinta.iot.registration.v1.RegistrationError.
36
+ * Use `create(RegistrationErrorSchema)` to create a new message.
37
+ */
38
+ export const RegistrationErrorSchema = /*@__PURE__*/
39
+ messageDesc(file_kusinta_iot_registration_v1_registration, 3);
40
+
41
+ /**
42
+ * Describes the message kusinta.iot.registration.v1.RegistrationResponse.
43
+ * Use `create(RegistrationResponseSchema)` to create a new message.
44
+ */
45
+ export const RegistrationResponseSchema = /*@__PURE__*/
46
+ messageDesc(file_kusinta_iot_registration_v1_registration, 4);
47
+
48
+ /**
49
+ * Describes the message kusinta.iot.registration.v1.CertRenewalRequest.
50
+ * Use `create(CertRenewalRequestSchema)` to create a new message.
51
+ */
52
+ export const CertRenewalRequestSchema = /*@__PURE__*/
53
+ messageDesc(file_kusinta_iot_registration_v1_registration, 5);
54
+
55
+ /**
56
+ * Describes the message kusinta.iot.registration.v1.CertRenewalResponse.
57
+ * Use `create(CertRenewalResponseSchema)` to create a new message.
58
+ */
59
+ export const CertRenewalResponseSchema = /*@__PURE__*/
60
+ messageDesc(file_kusinta_iot_registration_v1_registration, 6);
61
+
@@ -0,0 +1,34 @@
1
+ // @generated by protoc-gen-es v2.12.0 with parameter "target=js+dts,import_extension=js"
2
+ // @generated from file kusinta/iot/registration/v1/registration_service.proto (package kusinta.iot.registration.v1, syntax proto3)
3
+ /* eslint-disable */
4
+
5
+ import type { GenFile, GenService } from "@bufbuild/protobuf/codegenv2";
6
+ import type { CertRenewalRequestSchema, CertRenewalResponseSchema, RegistrationRequestSchema, RegistrationResponseSchema } from "./registration_pb.js";
7
+
8
+ /**
9
+ * Describes the file kusinta/iot/registration/v1/registration_service.proto.
10
+ */
11
+ export declare const file_kusinta_iot_registration_v1_registration_service: GenFile;
12
+
13
+ /**
14
+ * @generated from service kusinta.iot.registration.v1.GatewayRegistrationService
15
+ */
16
+ export declare const GatewayRegistrationService: GenService<{
17
+ /**
18
+ * @generated from rpc kusinta.iot.registration.v1.GatewayRegistrationService.Registration
19
+ */
20
+ registration: {
21
+ methodKind: "server_streaming";
22
+ input: typeof RegistrationRequestSchema;
23
+ output: typeof RegistrationResponseSchema;
24
+ },
25
+ /**
26
+ * @generated from rpc kusinta.iot.registration.v1.GatewayRegistrationService.CertRenewal
27
+ */
28
+ certRenewal: {
29
+ methodKind: "unary";
30
+ input: typeof CertRenewalRequestSchema;
31
+ output: typeof CertRenewalResponseSchema;
32
+ },
33
+ }>;
34
+
@@ -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/registration/v1/registration_service.proto (package kusinta.iot.registration.v1, syntax proto3)
3
+ /* eslint-disable */
4
+
5
+ import { fileDesc, serviceDesc } from "@bufbuild/protobuf/codegenv2";
6
+ import { file_kusinta_iot_registration_v1_registration } from "./registration_pb.js";
7
+
8
+ /**
9
+ * Describes the file kusinta/iot/registration/v1/registration_service.proto.
10
+ */
11
+ export const file_kusinta_iot_registration_v1_registration_service = /*@__PURE__*/
12
+ fileDesc("CjZrdXNpbnRhL2lvdC9yZWdpc3RyYXRpb24vdjEvcmVnaXN0cmF0aW9uX3NlcnZpY2UucHJvdG8SG2t1c2ludGEuaW90LnJlZ2lzdHJhdGlvbi52MTKFAgoaR2F0ZXdheVJlZ2lzdHJhdGlvblNlcnZpY2USdQoMUmVnaXN0cmF0aW9uEjAua3VzaW50YS5pb3QucmVnaXN0cmF0aW9uLnYxLlJlZ2lzdHJhdGlvblJlcXVlc3QaMS5rdXNpbnRhLmlvdC5yZWdpc3RyYXRpb24udjEuUmVnaXN0cmF0aW9uUmVzcG9uc2UwARJwCgtDZXJ0UmVuZXdhbBIvLmt1c2ludGEuaW90LnJlZ2lzdHJhdGlvbi52MS5DZXJ0UmVuZXdhbFJlcXVlc3QaMC5rdXNpbnRhLmlvdC5yZWdpc3RyYXRpb24udjEuQ2VydFJlbmV3YWxSZXNwb25zZUICSAFiBnByb3RvMw", [file_kusinta_iot_registration_v1_registration]);
13
+
14
+ /**
15
+ * @generated from service kusinta.iot.registration.v1.GatewayRegistrationService
16
+ */
17
+ export const GatewayRegistrationService = /*@__PURE__*/
18
+ serviceDesc(file_kusinta_iot_registration_v1_registration_service, 0);
19
+