@kusinta/iot-schema 0.2.0-beta.6 → 0.2.0-beta.61

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 (73) hide show
  1. package/package.json +44 -29
  2. package/src/kusinta/iot/access/v1/acl_pb.d.ts +146 -2
  3. package/src/kusinta/iot/access/v1/acl_pb.js +19 -2
  4. package/src/kusinta/iot/access/v1/roles_pb.d.ts +160 -4
  5. package/src/kusinta/iot/access/v1/roles_pb.js +128 -5
  6. package/src/kusinta/iot/accountlink/v1/account_link_pb.d.ts +591 -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 +1695 -0
  9. package/src/kusinta/iot/climate/v1/climate_pb.js +292 -0
  10. package/src/kusinta/iot/commissioning/v1/commissioning_pb.d.ts +1643 -0
  11. package/src/kusinta/iot/commissioning/v1/commissioning_pb.js +339 -0
  12. package/src/kusinta/iot/common/v1/pairing_pb.d.ts +24 -4
  13. package/src/kusinta/iot/common/v1/pairing_pb.js +1 -1
  14. package/src/kusinta/iot/common/v1/types_pb.d.ts +235 -0
  15. package/src/kusinta/iot/common/v1/types_pb.js +84 -2
  16. package/src/kusinta/iot/connector/v1/connector_pb.d.ts +713 -3
  17. package/src/kusinta/iot/connector/v1/connector_pb.js +107 -16
  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 +32 -4
  21. package/src/kusinta/iot/device/v1/descriptor_pb.js +2 -1
  22. package/src/kusinta/iot/device/v1/device_event_pb.d.ts +89 -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 +444 -11
  25. package/src/kusinta/iot/device/v1/device_pb.js +74 -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 +46 -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 +659 -0
  31. package/src/kusinta/iot/heating/v1/heating_pb.js +119 -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/planning/v1/planning_pb.d.ts +199 -0
  35. package/src/kusinta/iot/planning/v1/planning_pb.js +48 -0
  36. package/src/kusinta/iot/planning/v1/planning_service_pb.d.ts +121 -0
  37. package/src/kusinta/iot/planning/v1/planning_service_pb.js +38 -0
  38. package/src/kusinta/iot/registration/v1/registration_pb.d.ts +18 -0
  39. package/src/kusinta/iot/registration/v1/registration_pb.js +1 -1
  40. package/src/kusinta/iot/reporting/v1/reporting_pb.d.ts +1263 -0
  41. package/src/kusinta/iot/reporting/v1/reporting_pb.js +238 -0
  42. package/src/kusinta/iot/reporting/v1/reporting_service_pb.d.ts +63 -0
  43. package/src/kusinta/iot/reporting/v1/reporting_service_pb.js +24 -0
  44. package/src/kusinta/iot/signaling/v1/signaling_pb.d.ts +939 -7
  45. package/src/kusinta/iot/signaling/v1/signaling_pb.js +163 -4
  46. package/src/kusinta/iot/signaling/v1/signaling_service_pb.d.ts +24 -1
  47. package/src/kusinta/iot/signaling/v1/signaling_service_pb.js +1 -1
  48. package/src/kusinta/iot/space/v1/space_pb.d.ts +218 -3
  49. package/src/kusinta/iot/space/v1/space_pb.js +25 -2
  50. package/src/kusinta/iot/vendor/homematic/v1/homematic_pb.d.ts +15 -0
  51. package/src/kusinta/iot/vendor/homematic/v1/homematic_pb.js +1 -1
  52. package/src/kusinta/iot/vendor/lorawan/v1/lorawan_pb.d.ts +69 -0
  53. package/src/kusinta/iot/vendor/lorawan/v1/lorawan_pb.js +19 -0
  54. package/src/kusinta/iot/vendor/v1/vendor_options_pb.d.ts +5 -4
  55. package/src/kusinta/iot/vendor/v1/vendor_options_pb.js +5 -4
  56. package/src/kusinta/iot/webrtc/v1/app_token_pb.d.ts +48 -5
  57. package/src/kusinta/iot/webrtc/v1/app_token_pb.js +1 -1
  58. package/src/kusinta/iot/webrtc/v1/command_pb.d.ts +56 -0
  59. package/src/kusinta/iot/webrtc/v1/command_pb.js +1 -1
  60. package/src/kusinta/iot/webrtc/v1/device_state_pb.d.ts +179 -5
  61. package/src/kusinta/iot/webrtc/v1/device_state_pb.js +34 -5
  62. package/src/kusinta/iot/webrtc/v1/envelope_pb.d.ts +603 -13
  63. package/src/kusinta/iot/webrtc/v1/envelope_pb.js +61 -4
  64. package/src/kusinta/iot/webrtc/v1/household_pb.d.ts +613 -0
  65. package/src/kusinta/iot/webrtc/v1/household_pb.js +134 -0
  66. package/src/kusinta/iot/webrtc/v1/invite_pb.d.ts +502 -0
  67. package/src/kusinta/iot/webrtc/v1/invite_pb.js +108 -0
  68. package/src/kusinta/iot/webrtc/v1/management_pb.d.ts +2595 -75
  69. package/src/kusinta/iot/webrtc/v1/management_pb.js +382 -5
  70. package/src/kusinta/iot/webrtc/v1/members_pb.d.ts +582 -0
  71. package/src/kusinta/iot/webrtc/v1/members_pb.js +113 -0
  72. package/src/kusinta/iot/webrtc/v1/permission_push_pb.d.ts +66 -4
  73. package/src/kusinta/iot/webrtc/v1/permission_push_pb.js +9 -1
@@ -0,0 +1,119 @@
1
+ // @generated by protoc-gen-es v2.12.0 with parameter "target=js+dts,import_extension=js"
2
+ // @generated from file kusinta/iot/heating/v1/heating.proto (package kusinta.iot.heating.v1, syntax proto3)
3
+ /* eslint-disable */
4
+
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_access_v1_acl } from "../../access/v1/acl_pb.js";
8
+ import { file_kusinta_iot_device_v1_cluster_state } from "../../device/v1/cluster_state_pb.js";
9
+ import { file_kusinta_iot_identity_v1_identity } from "../../identity/v1/identity_pb.js";
10
+
11
+ /**
12
+ * Describes the file kusinta/iot/heating/v1/heating.proto.
13
+ */
14
+ export const file_kusinta_iot_heating_v1_heating = /*@__PURE__*/
15
+ fileDesc("CiRrdXNpbnRhL2lvdC9oZWF0aW5nL3YxL2hlYXRpbmcucHJvdG8SFmt1c2ludGEuaW90LmhlYXRpbmcudjEifwoPRGV2aWNlQXR0cmlidXRlEjQKCWRldmljZV9pZBgBIAEoCzIhLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLkRldmljZUlkEjYKCWF0dHJpYnV0ZRgCIAEoCzIjLmt1c2ludGEuaW90LmFjY2Vzcy52MS5BdHRyaWJ1dGVSZWYihgEKDkNvbnRhY3RCaW5kaW5nEjcKBm91dHB1dBgBIAEoCzInLmt1c2ludGEuaW90LmhlYXRpbmcudjEuRGV2aWNlQXR0cmlidXRlEjsKDGNsb3NlZF92YWx1ZRgCIAEoCzIlLmt1c2ludGEuaW90LmRldmljZS52MS5BdHRyaWJ1dGVWYWx1ZSLsAgoMSGVhdGluZ1BsYW50EhAKCHBsYW50X2lkGAEgASgJEjIKCHNwYWNlX2lkGAIgASgLMiAua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuU3BhY2VJZBIMCgRuYW1lGAMgASgJEjYKBnNvdXJjZRgEIAEoDjImLmt1c2ludGEuaW90LmhlYXRpbmcudjEuSGVhdFNvdXJjZUtpbmQSPQoScmVhZGluZ3NfZGV2aWNlX2lkGAUgASgLMiEua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuRGV2aWNlSWQSPAoJaGVhdF9wdW1wGAYgASgLMicua3VzaW50YS5pb3QuaGVhdGluZy52MS5IZWF0UHVtcENvbnRyb2xIABI2CgVtZXRlchgHIAEoCzInLmt1c2ludGEuaW90LmhlYXRpbmcudjEuRGV2aWNlQXR0cmlidXRlEhAKCHJldmlzaW9uGAggASgEQgkKB2NvbnRyb2wi1gEKD0hlYXRQdW1wQ29udHJvbBI+Cg5zZ19yZWFkeV9ibG9jaxgBIAEoCzImLmt1c2ludGEuaW90LmhlYXRpbmcudjEuQ29udGFjdEJpbmRpbmcSPgoOc2dfcmVhZHlfYm9vc3QYAiABKAsyJi5rdXNpbnRhLmlvdC5oZWF0aW5nLnYxLkNvbnRhY3RCaW5kaW5nEkMKE2FkZF9vbl9oZWF0ZXJfYmxvY2sYAyABKAsyJi5rdXNpbnRhLmlvdC5oZWF0aW5nLnYxLkNvbnRhY3RCaW5kaW5nItoBCg5IZWF0aW5nQ2lyY3VpdBISCgpjaXJjdWl0X2lkGAEgASgJEhAKCHBsYW50X2lkGAIgASgJEgwKBG5hbWUYAyABKAkSOwoIcmFkaWF0b3IYBCABKAsyJy5rdXNpbnRhLmlvdC5oZWF0aW5nLnYxLlJhZGlhdG9yQ2lyY3VpdEgAEjUKBWZsb29yGAUgASgLMiQua3VzaW50YS5pb3QuaGVhdGluZy52MS5GbG9vckNpcmN1aXRIABIQCghyZXZpc2lvbhgGIAEoBEIOCgxkaXN0cmlidXRpb24iEQoPUmFkaWF0b3JDaXJjdWl0IuQBCgxGbG9vckNpcmN1aXQSFAoMbWl4aW5nX3ZhbHZlGAEgASgIEiQKF3N1cHBseV9jYXBfY2VudGlkZWdyZWVzGAIgASgRSACIAQESPQoMc3VwcGx5X3Byb2JlGAMgASgLMicua3VzaW50YS5pb3QuaGVhdGluZy52MS5EZXZpY2VBdHRyaWJ1dGUSPQoMcmV0dXJuX3Byb2JlGAQgASgLMicua3VzaW50YS5pb3QuaGVhdGluZy52MS5EZXZpY2VBdHRyaWJ1dGVCGgoYX3N1cHBseV9jYXBfY2VudGlkZWdyZWVzIusCCglGbG9vclpvbmUSDwoHem9uZV9pZBgBIAEoCRISCgpjaXJjdWl0X2lkGAIgASgJEgwKBG5hbWUYAyABKAkSNgoGb3V0cHV0GAQgASgLMiYua3VzaW50YS5pb3QuaGVhdGluZy52MS5Db250YWN0QmluZGluZxI0CgVyb29tcxgFIAMoCzIlLmt1c2ludGEuaW90LmhlYXRpbmcudjEuRmxvb3Jab25lUm9vbRI5Cg9jb250cm9sX3Jvb21faWQYBiABKAsyIC5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5TcGFjZUlkEhAKCHJldmlzaW9uGAcgASgEEjYKEnVuY29udHJvbGxlZF9zaW5jZRgIIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASOAoPdW5jb250cm9sbGVkX2J5GAkgASgLMh8ua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuVXNlcklkIl8KDUZsb29yWm9uZVJvb20SMQoHcm9vbV9pZBgBIAEoCzIgLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLlNwYWNlSWQSGwoTYXJlYV9zaGFyZV9wZXJtaWxsZRgCIAEoDSKdAgoLQ29tZm9ydExvYWQSFwoPY29tZm9ydF9sb2FkX2lkGAEgASgJEjEKB3Jvb21faWQYAiABKAsyIC5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5TcGFjZUlkEgwKBG5hbWUYAyABKAkSNgoGb3V0cHV0GAQgASgLMiYua3VzaW50YS5pb3QuaGVhdGluZy52MS5Db250YWN0QmluZGluZxI2Cgd3aW5kb3dzGAUgAygLMiUua3VzaW50YS5pb3QuaGVhdGluZy52MS5Db21mb3J0V2luZG93EhAKCHJldmlzaW9uGAYgASgEEhgKEHdpbmRvd3NfcmV2aXNpb24YByABKAQSGAoQd2luZG93c193aXRoaGVsZBgIIAEoCCJLCg1Db21mb3J0V2luZG93EhAKCHdlZWtkYXlzGAEgASgNEhQKDHN0YXJ0X21pbnV0ZRgCIAEoDRISCgplbmRfbWludXRlGAMgASgNIvMBCg1IZWF0aW5nTGF5b3V0EjQKBnBsYW50cxgBIAMoCzIkLmt1c2ludGEuaW90LmhlYXRpbmcudjEuSGVhdGluZ1BsYW50EjgKCGNpcmN1aXRzGAIgAygLMiYua3VzaW50YS5pb3QuaGVhdGluZy52MS5IZWF0aW5nQ2lyY3VpdBI2CgtmbG9vcl96b25lcxgDIAMoCzIhLmt1c2ludGEuaW90LmhlYXRpbmcudjEuRmxvb3Jab25lEjoKDWNvbWZvcnRfbG9hZHMYBCADKAsyIy5rdXNpbnRhLmlvdC5oZWF0aW5nLnYxLkNvbWZvcnRMb2FkIoECCg1IZWF0aW5nUmVjb3JkEjUKBXBsYW50GAEgASgLMiQua3VzaW50YS5pb3QuaGVhdGluZy52MS5IZWF0aW5nUGxhbnRIABI5CgdjaXJjdWl0GAIgASgLMiYua3VzaW50YS5pb3QuaGVhdGluZy52MS5IZWF0aW5nQ2lyY3VpdEgAEjcKCmZsb29yX3pvbmUYAyABKAsyIS5rdXNpbnRhLmlvdC5oZWF0aW5nLnYxLkZsb29yWm9uZUgAEjsKDGNvbWZvcnRfbG9hZBgEIAEoCzIjLmt1c2ludGEuaW90LmhlYXRpbmcudjEuQ29tZm9ydExvYWRIAEIICgZyZWNvcmQqpQIKDkhlYXRTb3VyY2VLaW5kEiAKHEhFQVRfU09VUkNFX0tJTkRfVU5TUEVDSUZJRUQQABIqCiZIRUFUX1NPVVJDRV9LSU5EX0VYSEFVU1RfQUlSX0hFQVRfUFVNUBABEiwKKEhFQVRfU09VUkNFX0tJTkRfR1JPVU5EX1NPVVJDRV9IRUFUX1BVTVAQAhIoCiRIRUFUX1NPVVJDRV9LSU5EX0FJUl9XQVRFUl9IRUFUX1BVTVAQAxIlCiFIRUFUX1NPVVJDRV9LSU5EX0RJU1RSSUNUX0hFQVRJTkcQBBIkCiBIRUFUX1NPVVJDRV9LSU5EX0VMRUNUUklDX0JPSUxFUhAFEiAKHEhFQVRfU09VUkNFX0tJTkRfRlVFTF9CT0lMRVIQBkICSAFiBnByb3RvMw", [file_google_protobuf_timestamp, file_kusinta_iot_access_v1_acl, file_kusinta_iot_device_v1_cluster_state, file_kusinta_iot_identity_v1_identity]);
16
+
17
+ /**
18
+ * Describes the message kusinta.iot.heating.v1.DeviceAttribute.
19
+ * Use `create(DeviceAttributeSchema)` to create a new message.
20
+ */
21
+ export const DeviceAttributeSchema = /*@__PURE__*/
22
+ messageDesc(file_kusinta_iot_heating_v1_heating, 0);
23
+
24
+ /**
25
+ * Describes the message kusinta.iot.heating.v1.ContactBinding.
26
+ * Use `create(ContactBindingSchema)` to create a new message.
27
+ */
28
+ export const ContactBindingSchema = /*@__PURE__*/
29
+ messageDesc(file_kusinta_iot_heating_v1_heating, 1);
30
+
31
+ /**
32
+ * Describes the message kusinta.iot.heating.v1.HeatingPlant.
33
+ * Use `create(HeatingPlantSchema)` to create a new message.
34
+ */
35
+ export const HeatingPlantSchema = /*@__PURE__*/
36
+ messageDesc(file_kusinta_iot_heating_v1_heating, 2);
37
+
38
+ /**
39
+ * Describes the message kusinta.iot.heating.v1.HeatPumpControl.
40
+ * Use `create(HeatPumpControlSchema)` to create a new message.
41
+ */
42
+ export const HeatPumpControlSchema = /*@__PURE__*/
43
+ messageDesc(file_kusinta_iot_heating_v1_heating, 3);
44
+
45
+ /**
46
+ * Describes the message kusinta.iot.heating.v1.HeatingCircuit.
47
+ * Use `create(HeatingCircuitSchema)` to create a new message.
48
+ */
49
+ export const HeatingCircuitSchema = /*@__PURE__*/
50
+ messageDesc(file_kusinta_iot_heating_v1_heating, 4);
51
+
52
+ /**
53
+ * Describes the message kusinta.iot.heating.v1.RadiatorCircuit.
54
+ * Use `create(RadiatorCircuitSchema)` to create a new message.
55
+ */
56
+ export const RadiatorCircuitSchema = /*@__PURE__*/
57
+ messageDesc(file_kusinta_iot_heating_v1_heating, 5);
58
+
59
+ /**
60
+ * Describes the message kusinta.iot.heating.v1.FloorCircuit.
61
+ * Use `create(FloorCircuitSchema)` to create a new message.
62
+ */
63
+ export const FloorCircuitSchema = /*@__PURE__*/
64
+ messageDesc(file_kusinta_iot_heating_v1_heating, 6);
65
+
66
+ /**
67
+ * Describes the message kusinta.iot.heating.v1.FloorZone.
68
+ * Use `create(FloorZoneSchema)` to create a new message.
69
+ */
70
+ export const FloorZoneSchema = /*@__PURE__*/
71
+ messageDesc(file_kusinta_iot_heating_v1_heating, 7);
72
+
73
+ /**
74
+ * Describes the message kusinta.iot.heating.v1.FloorZoneRoom.
75
+ * Use `create(FloorZoneRoomSchema)` to create a new message.
76
+ */
77
+ export const FloorZoneRoomSchema = /*@__PURE__*/
78
+ messageDesc(file_kusinta_iot_heating_v1_heating, 8);
79
+
80
+ /**
81
+ * Describes the message kusinta.iot.heating.v1.ComfortLoad.
82
+ * Use `create(ComfortLoadSchema)` to create a new message.
83
+ */
84
+ export const ComfortLoadSchema = /*@__PURE__*/
85
+ messageDesc(file_kusinta_iot_heating_v1_heating, 9);
86
+
87
+ /**
88
+ * Describes the message kusinta.iot.heating.v1.ComfortWindow.
89
+ * Use `create(ComfortWindowSchema)` to create a new message.
90
+ */
91
+ export const ComfortWindowSchema = /*@__PURE__*/
92
+ messageDesc(file_kusinta_iot_heating_v1_heating, 10);
93
+
94
+ /**
95
+ * Describes the message kusinta.iot.heating.v1.HeatingLayout.
96
+ * Use `create(HeatingLayoutSchema)` to create a new message.
97
+ */
98
+ export const HeatingLayoutSchema = /*@__PURE__*/
99
+ messageDesc(file_kusinta_iot_heating_v1_heating, 11);
100
+
101
+ /**
102
+ * Describes the message kusinta.iot.heating.v1.HeatingRecord.
103
+ * Use `create(HeatingRecordSchema)` to create a new message.
104
+ */
105
+ export const HeatingRecordSchema = /*@__PURE__*/
106
+ messageDesc(file_kusinta_iot_heating_v1_heating, 12);
107
+
108
+ /**
109
+ * Describes the enum kusinta.iot.heating.v1.HeatSourceKind.
110
+ */
111
+ export const HeatSourceKindSchema = /*@__PURE__*/
112
+ enumDesc(file_kusinta_iot_heating_v1_heating, 0);
113
+
114
+ /**
115
+ * @generated from enum kusinta.iot.heating.v1.HeatSourceKind
116
+ */
117
+ export const HeatSourceKind = /*@__PURE__*/
118
+ tsEnum(HeatSourceKindSchema);
119
+
@@ -0,0 +1,438 @@
1
+ // @generated by protoc-gen-es v2.12.0 with parameter "target=js+dts,import_extension=js"
2
+ // @generated from file kusinta/iot/link/v1/link.proto (package kusinta.iot.link.v1, syntax proto3)
3
+ /* eslint-disable */
4
+
5
+ import type { GenEnum, GenFile, GenMessage } from "@bufbuild/protobuf/codegenv2";
6
+ import type { Message } from "@bufbuild/protobuf";
7
+ import type { DeviceId } from "../../identity/v1/identity_pb.js";
8
+ import type { Timestamp } from "@bufbuild/protobuf/wkt";
9
+ import type { AttributeRef } from "../../access/v1/acl_pb.js";
10
+
11
+ /**
12
+ * Describes the file kusinta/iot/link/v1/link.proto.
13
+ */
14
+ export declare const file_kusinta_iot_link_v1_link: GenFile;
15
+
16
+ /**
17
+ * What a gateway-kept link of a given function needs told to it.
18
+ *
19
+ * Only a soft link has settings at all — see LINK_MODE_HARD for why there is
20
+ * nothing in a device-to-device link for anyone to tune. And what a soft link
21
+ * needs differs entirely by function: a climate lead needs a target
22
+ * temperature, while forwarding a window's open state needs nothing whatsoever.
23
+ * Hence a oneof per function rather than a flat set of fields: the second
24
+ * function to arrive must not turn this into a bag of unrelated optionals named
25
+ * after the first.
26
+ *
27
+ * A function with no arm here has nothing to configure, and an attempt to
28
+ * configure it should be refused rather than accepted as a no-op.
29
+ *
30
+ * @generated from message kusinta.iot.link.v1.LinkSettings
31
+ */
32
+ export declare type LinkSettings = Message<"kusinta.iot.link.v1.LinkSettings"> & {
33
+ /**
34
+ * @generated from oneof kusinta.iot.link.v1.LinkSettings.per_function
35
+ */
36
+ perFunction: {
37
+ /**
38
+ * @generated from field: kusinta.iot.link.v1.ClimateLeadSettings climate_lead = 1;
39
+ */
40
+ value: ClimateLeadSettings;
41
+ case: "climateLead";
42
+ } | { case: undefined; value?: undefined };
43
+ };
44
+
45
+ /**
46
+ * Describes the message kusinta.iot.link.v1.LinkSettings.
47
+ * Use `create(LinkSettingsSchema)` to create a new message.
48
+ */
49
+ export declare const LinkSettingsSchema: GenMessage<LinkSettings>;
50
+
51
+ /**
52
+ * Settings for a gateway-kept LINK_FUNCTION_CLIMATE_LEAD.
53
+ *
54
+ * @generated from message kusinta.iot.link.v1.ClimateLeadSettings
55
+ */
56
+ export declare type ClimateLeadSettings = Message<"kusinta.iot.link.v1.ClimateLeadSettings"> & {
57
+ /**
58
+ * The temperature this link is to hold, in centidegrees — the unit and
59
+ * encoding device/v1/properties.proto declares for every temperature in this
60
+ * schema, so nothing converts between the target and the readings it is
61
+ * compared against.
62
+ *
63
+ * Deliberately not the receiver's own setpoint attribute. A gateway steering
64
+ * a radiator valve it cannot feed a measurement to has only that setpoint to
65
+ * act through, so the setpoint becomes an actuator position which moves on
66
+ * its own and settles wherever the target needs it to. It stops being a
67
+ * statement of what anybody asked for, which is why the request is kept here.
68
+ *
69
+ * Per link, and a sender may lead several receivers — a room with more than
70
+ * one radiator is the ordinary case, and each of its links carries this
71
+ * number separately. An interface offering "the temperature in here" is
72
+ * therefore setting several links at once and is responsible for keeping them
73
+ * equal; nothing on this wire enforces it. A single target per room is
74
+ * climate.v1.RoomClimate: a person sets the room's target there, and the
75
+ * gateway keeps the links it uses underneath in step. New interfaces set
76
+ * rooms, not this.
77
+ *
78
+ * One target, not one per heating and cooling mode: this addresses a valve
79
+ * that only heats. A device that can do both would need the setpoint's mode
80
+ * named alongside, the way webrtc/v1/setpoint_mode.proto names it for a
81
+ * command, and that is a new arm rather than a reinterpretation of this one.
82
+ *
83
+ * Explicit presence, per the rule properties.proto sets out: a settings
84
+ * message present with this never set must not be indistinguishable from a
85
+ * request to hold the room at 0.00 °C.
86
+ *
87
+ * @generated from field: optional sint32 target_setpoint = 1;
88
+ */
89
+ targetSetpoint?: number | undefined;
90
+ };
91
+
92
+ /**
93
+ * Describes the message kusinta.iot.link.v1.ClimateLeadSettings.
94
+ * Use `create(ClimateLeadSettingsSchema)` to create a new message.
95
+ */
96
+ export declare const ClimateLeadSettingsSchema: GenMessage<ClimateLeadSettings>;
97
+
98
+ /**
99
+ * One device leading another.
100
+ *
101
+ * @generated from message kusinta.iot.link.v1.DeviceLink
102
+ */
103
+ export declare type DeviceLink = Message<"kusinta.iot.link.v1.DeviceLink"> & {
104
+ /**
105
+ * Opaque, and must not encode when the link was made — a UUIDv4 is the expected form — since
106
+ * that time is withheld from some recipients (see created_at).
107
+ *
108
+ * @generated from field: string link_id = 1;
109
+ */
110
+ linkId: string;
111
+
112
+ /**
113
+ * Which device leads. This is the control surface for the pair: for a climate
114
+ * link, the setpoint that governs both is written here.
115
+ *
116
+ * @generated from field: kusinta.iot.identity.v1.DeviceId sender = 2;
117
+ */
118
+ sender?: DeviceId | undefined;
119
+
120
+ /**
121
+ * Which device follows. One sender may lead several receivers — a room with
122
+ * more than one radiator is the ordinary case — and each is its own link.
123
+ * Several senders leading one receiver is not modelled: combining two
124
+ * measurements needs a policy, and no policy is defined.
125
+ *
126
+ * @generated from field: kusinta.iot.identity.v1.DeviceId receiver = 3;
127
+ */
128
+ receiver?: DeviceId | undefined;
129
+
130
+ /**
131
+ * @generated from field: kusinta.iot.link.v1.LinkFunction function = 4;
132
+ */
133
+ function: LinkFunction;
134
+
135
+ /**
136
+ * @generated from field: kusinta.iot.link.v1.LinkMode mode = 5;
137
+ */
138
+ mode: LinkMode;
139
+
140
+ /**
141
+ * @generated from field: kusinta.iot.link.v1.LinkState state = 6;
142
+ */
143
+ state: LinkState;
144
+
145
+ /**
146
+ * Unset when it is withheld from the recipient: from service in a home, and from anyone
147
+ * when it dates from before their current residency in the home, or from a home they did
148
+ * not live in at the time (see access.v1.MembershipRelation).
149
+ *
150
+ * @generated from field: google.protobuf.Timestamp created_at = 7;
151
+ */
152
+ createdAt?: Timestamp | undefined;
153
+
154
+ /**
155
+ * Why the link is not carrying, when state says it is not. Free text for a
156
+ * person, never parsed.
157
+ *
158
+ * @generated from field: string state_detail = 8;
159
+ */
160
+ stateDetail: string;
161
+
162
+ /**
163
+ * How this link is configured, where its mode and function give it anything
164
+ * to configure. Unset on every hard link, and on a soft one nobody has set up
165
+ * yet — which is a link that exists and is not doing anything, not an error.
166
+ *
167
+ * Carried on the link rather than left to be asked for separately, because an
168
+ * interface showing a soft climate link has to show the room's target next to
169
+ * it, and the receiver's own setpoint is not that number.
170
+ *
171
+ * @generated from field: kusinta.iot.link.v1.LinkSettings settings = 9;
172
+ */
173
+ settings?: LinkSettings | undefined;
174
+
175
+ /**
176
+ * Set when the recipient sees this link as service, because an end is in a home (see
177
+ * access.v1.MembershipRelation): state, state_detail, settings and created_at are
178
+ * WITHHELD and left unset, not unconfigured. An app must not render it as a link doing
179
+ * nothing.
180
+ *
181
+ * @generated from field: bool details_withheld = 10;
182
+ */
183
+ detailsWithheld: boolean;
184
+ };
185
+
186
+ /**
187
+ * Describes the message kusinta.iot.link.v1.DeviceLink.
188
+ * Use `create(DeviceLinkSchema)` to create a new message.
189
+ */
190
+ export declare const DeviceLinkSchema: GenMessage<DeviceLink>;
191
+
192
+ /**
193
+ * What a device can be linked as, declared by the connector that models it.
194
+ *
195
+ * Without this an interface cannot offer a sensible choice: it has no way to know
196
+ * which of two devices may lead, whether a hub can broker them, or which
197
+ * attribute carries the quantity in question. Matching is mechanical — the same
198
+ * function, opposite directions, and a mode both ends support.
199
+ *
200
+ * Declared per device rather than per endpoint. Endpoint would be more precise,
201
+ * but the channels a link actually attaches to frequently carry no readings and
202
+ * so are not announced as endpoints at all; a per-endpoint declaration would have
203
+ * nowhere honest to live. The reserved range on DeviceLink is where that would go
204
+ * if a vendor ever needs it.
205
+ *
206
+ * @generated from message kusinta.iot.link.v1.LinkCapability
207
+ */
208
+ export declare type LinkCapability = Message<"kusinta.iot.link.v1.LinkCapability"> & {
209
+ /**
210
+ * @generated from field: kusinta.iot.link.v1.LinkFunction function = 1;
211
+ */
212
+ function: LinkFunction;
213
+
214
+ /**
215
+ * @generated from field: kusinta.iot.link.v1.LinkDirection direction = 2;
216
+ */
217
+ direction: LinkDirection;
218
+
219
+ /**
220
+ * Modes this device supports for this function. A hard link additionally
221
+ * requires the other end to be on the same hub, which this cannot state alone.
222
+ *
223
+ * @generated from field: repeated kusinta.iot.link.v1.LinkMode supported_modes = 3;
224
+ */
225
+ supportedModes: LinkMode[];
226
+
227
+ /**
228
+ * This device's own attribute for this function — the one it reads as a
229
+ * sender, or the one it is driven through as a receiver. Present because the
230
+ * two ends of a link need not speak the same cluster.
231
+ *
232
+ * @generated from field: kusinta.iot.access.v1.AttributeRef attribute = 4;
233
+ */
234
+ attribute?: AttributeRef | undefined;
235
+
236
+ /**
237
+ * Human-readable, from the connector, in whatever locale it was given. For
238
+ * display beside a choice; never matched on.
239
+ *
240
+ * @generated from field: string label = 5;
241
+ */
242
+ label: string;
243
+ };
244
+
245
+ /**
246
+ * Describes the message kusinta.iot.link.v1.LinkCapability.
247
+ * Use `create(LinkCapabilitySchema)` to create a new message.
248
+ */
249
+ export declare const LinkCapabilitySchema: GenMessage<LinkCapability>;
250
+
251
+ /**
252
+ * Every link a caller was shown, in reply to a listing.
253
+ *
254
+ * @generated from message kusinta.iot.link.v1.DeviceLinkList
255
+ */
256
+ export declare type DeviceLinkList = Message<"kusinta.iot.link.v1.DeviceLinkList"> & {
257
+ /**
258
+ * @generated from field: repeated kusinta.iot.link.v1.DeviceLink links = 1;
259
+ */
260
+ links: DeviceLink[];
261
+ };
262
+
263
+ /**
264
+ * Describes the message kusinta.iot.link.v1.DeviceLinkList.
265
+ * Use `create(DeviceLinkListSchema)` to create a new message.
266
+ */
267
+ export declare const DeviceLinkListSchema: GenMessage<DeviceLinkList>;
268
+
269
+ /**
270
+ * What a link makes the sender do to the receiver.
271
+ *
272
+ * A function, not a cluster id, because the two ends do not necessarily speak the
273
+ * same cluster: a wall thermostat reports its temperature as Thermostat
274
+ * LocalTemperature while a bare sensor reports the same quantity as Temperature
275
+ * Measurement MeasuredValue. Each end states its own attribute in its
276
+ * LinkCapability; the function is what says the two belong together.
277
+ *
278
+ * @generated from enum kusinta.iot.link.v1.LinkFunction
279
+ */
280
+ export enum LinkFunction {
281
+ /**
282
+ * @generated from enum value: LINK_FUNCTION_UNSPECIFIED = 0;
283
+ */
284
+ UNSPECIFIED = 0,
285
+
286
+ /**
287
+ * The sender leads the receiver's climate control.
288
+ *
289
+ * Stronger than feeding a measurement, and the difference matters to anything
290
+ * building a UI. Both the sender's measured temperature and its setpoint reach
291
+ * the receiver, and the transfer is one way: the receiver reports the sender's
292
+ * temperature as its own, and a setpoint written to the receiver is accepted
293
+ * and then reverted to the sender's. So the sender is the control surface for
294
+ * the pair, and a setpoint control offered on a linked receiver is one that
295
+ * appears to work and silently undoes itself.
296
+ *
297
+ * @generated from enum value: LINK_FUNCTION_CLIMATE_LEAD = 1;
298
+ */
299
+ CLIMATE_LEAD = 1,
300
+
301
+ /**
302
+ * The sender's open/closed state reaches the receiver, which acts on it —
303
+ * typically a contact telling a valve to stop heating an open room.
304
+ *
305
+ * Not implied by CLIMATE_LEAD: a device that leads a room's climate does not
306
+ * necessarily forward its own window state, and on at least one vendor it does
307
+ * not. Where both are wanted, both are linked.
308
+ *
309
+ * @generated from enum value: LINK_FUNCTION_WINDOW_STATE = 2;
310
+ */
311
+ WINDOW_STATE = 2,
312
+
313
+ /**
314
+ * The sender is an input the receiver acts on — a button or remote.
315
+ *
316
+ * @generated from enum value: LINK_FUNCTION_REMOTE_CONTROL = 3;
317
+ */
318
+ REMOTE_CONTROL = 3,
319
+ }
320
+
321
+ /**
322
+ * Describes the enum kusinta.iot.link.v1.LinkFunction.
323
+ */
324
+ export declare const LinkFunctionSchema: GenEnum<LinkFunction>;
325
+
326
+ /**
327
+ * Which end of a link a device can be.
328
+ *
329
+ * @generated from enum kusinta.iot.link.v1.LinkDirection
330
+ */
331
+ export enum LinkDirection {
332
+ /**
333
+ * @generated from enum value: LINK_DIRECTION_UNSPECIFIED = 0;
334
+ */
335
+ UNSPECIFIED = 0,
336
+
337
+ /**
338
+ * can lead
339
+ *
340
+ * @generated from enum value: LINK_DIRECTION_SOURCE = 1;
341
+ */
342
+ SOURCE = 1,
343
+
344
+ /**
345
+ * can follow
346
+ *
347
+ * @generated from enum value: LINK_DIRECTION_TARGET = 2;
348
+ */
349
+ TARGET = 2,
350
+ }
351
+
352
+ /**
353
+ * Describes the enum kusinta.iot.link.v1.LinkDirection.
354
+ */
355
+ export declare const LinkDirectionSchema: GenEnum<LinkDirection>;
356
+
357
+ /**
358
+ * How a link is carried.
359
+ *
360
+ * @generated from enum kusinta.iot.link.v1.LinkMode
361
+ */
362
+ export enum LinkMode {
363
+ /**
364
+ * @generated from enum value: LINK_MODE_UNSPECIFIED = 0;
365
+ */
366
+ UNSPECIFIED = 0,
367
+
368
+ /**
369
+ * Device to device, brokered by the hub and then carried without it. Survives
370
+ * a gateway outage. Requires both devices on the same hub, and the hub's own
371
+ * support for the function.
372
+ *
373
+ * @generated from enum value: LINK_MODE_HARD = 1;
374
+ */
375
+ HARD = 1,
376
+
377
+ /**
378
+ * Kept by the gateway, which reads one device and writes the other. Works
379
+ * across vendors and across hubs, and is the only option where no hub can
380
+ * broker the pair — at the cost of not surviving a gateway outage.
381
+ *
382
+ * @generated from enum value: LINK_MODE_SOFT = 2;
383
+ */
384
+ SOFT = 2,
385
+ }
386
+
387
+ /**
388
+ * Describes the enum kusinta.iot.link.v1.LinkMode.
389
+ */
390
+ export declare const LinkModeSchema: GenEnum<LinkMode>;
391
+
392
+ /**
393
+ * Whether a link is doing anything.
394
+ *
395
+ * There is deliberately no "created but not yet in effect" state. On current
396
+ * device firmware a link takes effect immediately, and on firmware old enough not
397
+ * to, it never takes effect at all without physical intervention — which is a
398
+ * refusal at creation time, not a state to wait in.
399
+ *
400
+ * Nor should ACTIVE be inferred from the hub reporting a link exists. A hub can
401
+ * report a link as present, unpending and healthy while the devices ignore it
402
+ * entirely; only behaviour distinguishes the two.
403
+ *
404
+ * @generated from enum kusinta.iot.link.v1.LinkState
405
+ */
406
+ export enum LinkState {
407
+ /**
408
+ * @generated from enum value: LINK_STATE_UNSPECIFIED = 0;
409
+ */
410
+ UNSPECIFIED = 0,
411
+
412
+ /**
413
+ * carrying
414
+ *
415
+ * @generated from enum value: LINK_STATE_ACTIVE = 1;
416
+ */
417
+ ACTIVE = 1,
418
+
419
+ /**
420
+ * the sender is unreachable, gone, or the set is incomplete
421
+ *
422
+ * @generated from enum value: LINK_STATE_BROKEN = 2;
423
+ */
424
+ BROKEN = 2,
425
+
426
+ /**
427
+ * the hub and our records disagree, or the hub cannot say
428
+ *
429
+ * @generated from enum value: LINK_STATE_UNKNOWN = 3;
430
+ */
431
+ UNKNOWN = 3,
432
+ }
433
+
434
+ /**
435
+ * Describes the enum kusinta.iot.link.v1.LinkState.
436
+ */
437
+ export declare const LinkStateSchema: GenEnum<LinkState>;
438
+
@@ -0,0 +1,121 @@
1
+ // @generated by protoc-gen-es v2.12.0 with parameter "target=js+dts,import_extension=js"
2
+ // @generated from file kusinta/iot/link/v1/link.proto (package kusinta.iot.link.v1, syntax proto3)
3
+ /* eslint-disable */
4
+
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_access_v1_acl } from "../../access/v1/acl_pb.js";
8
+ import { file_kusinta_iot_identity_v1_identity } from "../../identity/v1/identity_pb.js";
9
+
10
+ /**
11
+ * Describes the file kusinta/iot/link/v1/link.proto.
12
+ */
13
+ export const file_kusinta_iot_link_v1_link = /*@__PURE__*/
14
+ fileDesc("Ch5rdXNpbnRhL2lvdC9saW5rL3YxL2xpbmsucHJvdG8SE2t1c2ludGEuaW90LmxpbmsudjEiYAoMTGlua1NldHRpbmdzEkAKDGNsaW1hdGVfbGVhZBgBIAEoCzIoLmt1c2ludGEuaW90LmxpbmsudjEuQ2xpbWF0ZUxlYWRTZXR0aW5nc0gAQg4KDHBlcl9mdW5jdGlvbiJHChNDbGltYXRlTGVhZFNldHRpbmdzEhwKD3RhcmdldF9zZXRwb2ludBgBIAEoEUgAiAEBQhIKEF90YXJnZXRfc2V0cG9pbnQisQMKCkRldmljZUxpbmsSDwoHbGlua19pZBgBIAEoCRIxCgZzZW5kZXIYAiABKAsyIS5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5EZXZpY2VJZBIzCghyZWNlaXZlchgDIAEoCzIhLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLkRldmljZUlkEjMKCGZ1bmN0aW9uGAQgASgOMiEua3VzaW50YS5pb3QubGluay52MS5MaW5rRnVuY3Rpb24SKwoEbW9kZRgFIAEoDjIdLmt1c2ludGEuaW90LmxpbmsudjEuTGlua01vZGUSLQoFc3RhdGUYBiABKA4yHi5rdXNpbnRhLmlvdC5saW5rLnYxLkxpbmtTdGF0ZRIuCgpjcmVhdGVkX2F0GAcgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIUCgxzdGF0ZV9kZXRhaWwYCCABKAkSMwoIc2V0dGluZ3MYCSABKAsyIS5rdXNpbnRhLmlvdC5saW5rLnYxLkxpbmtTZXR0aW5ncxIYChBkZXRhaWxzX3dpdGhoZWxkGAogASgISgQIFBAeIvsBCg5MaW5rQ2FwYWJpbGl0eRIzCghmdW5jdGlvbhgBIAEoDjIhLmt1c2ludGEuaW90LmxpbmsudjEuTGlua0Z1bmN0aW9uEjUKCWRpcmVjdGlvbhgCIAEoDjIiLmt1c2ludGEuaW90LmxpbmsudjEuTGlua0RpcmVjdGlvbhI2Cg9zdXBwb3J0ZWRfbW9kZXMYAyADKA4yHS5rdXNpbnRhLmlvdC5saW5rLnYxLkxpbmtNb2RlEjYKCWF0dHJpYnV0ZRgEIAEoCzIjLmt1c2ludGEuaW90LmFjY2Vzcy52MS5BdHRyaWJ1dGVSZWYSDQoFbGFiZWwYBSABKAkiQAoORGV2aWNlTGlua0xpc3QSLgoFbGlua3MYASADKAsyHy5rdXNpbnRhLmlvdC5saW5rLnYxLkRldmljZUxpbmsqjwEKDExpbmtGdW5jdGlvbhIdChlMSU5LX0ZVTkNUSU9OX1VOU1BFQ0lGSUVEEAASHgoaTElOS19GVU5DVElPTl9DTElNQVRFX0xFQUQQARIeChpMSU5LX0ZVTkNUSU9OX1dJTkRPV19TVEFURRACEiAKHExJTktfRlVOQ1RJT05fUkVNT1RFX0NPTlRST0wQAyplCg1MaW5rRGlyZWN0aW9uEh4KGkxJTktfRElSRUNUSU9OX1VOU1BFQ0lGSUVEEAASGQoVTElOS19ESVJFQ1RJT05fU09VUkNFEAESGQoVTElOS19ESVJFQ1RJT05fVEFSR0VUEAIqTQoITGlua01vZGUSGQoVTElOS19NT0RFX1VOU1BFQ0lGSUVEEAASEgoOTElOS19NT0RFX0hBUkQQARISCg5MSU5LX01PREVfU09GVBACKm0KCUxpbmtTdGF0ZRIaChZMSU5LX1NUQVRFX1VOU1BFQ0lGSUVEEAASFQoRTElOS19TVEFURV9BQ1RJVkUQARIVChFMSU5LX1NUQVRFX0JST0tFThACEhYKEkxJTktfU1RBVEVfVU5LTk9XThADQgJIAWIGcHJvdG8z", [file_google_protobuf_timestamp, file_kusinta_iot_access_v1_acl, file_kusinta_iot_identity_v1_identity]);
15
+
16
+ /**
17
+ * Describes the message kusinta.iot.link.v1.LinkSettings.
18
+ * Use `create(LinkSettingsSchema)` to create a new message.
19
+ */
20
+ export const LinkSettingsSchema = /*@__PURE__*/
21
+ messageDesc(file_kusinta_iot_link_v1_link, 0);
22
+
23
+ /**
24
+ * Describes the message kusinta.iot.link.v1.ClimateLeadSettings.
25
+ * Use `create(ClimateLeadSettingsSchema)` to create a new message.
26
+ */
27
+ export const ClimateLeadSettingsSchema = /*@__PURE__*/
28
+ messageDesc(file_kusinta_iot_link_v1_link, 1);
29
+
30
+ /**
31
+ * Describes the message kusinta.iot.link.v1.DeviceLink.
32
+ * Use `create(DeviceLinkSchema)` to create a new message.
33
+ */
34
+ export const DeviceLinkSchema = /*@__PURE__*/
35
+ messageDesc(file_kusinta_iot_link_v1_link, 2);
36
+
37
+ /**
38
+ * Describes the message kusinta.iot.link.v1.LinkCapability.
39
+ * Use `create(LinkCapabilitySchema)` to create a new message.
40
+ */
41
+ export const LinkCapabilitySchema = /*@__PURE__*/
42
+ messageDesc(file_kusinta_iot_link_v1_link, 3);
43
+
44
+ /**
45
+ * Describes the message kusinta.iot.link.v1.DeviceLinkList.
46
+ * Use `create(DeviceLinkListSchema)` to create a new message.
47
+ */
48
+ export const DeviceLinkListSchema = /*@__PURE__*/
49
+ messageDesc(file_kusinta_iot_link_v1_link, 4);
50
+
51
+ /**
52
+ * Describes the enum kusinta.iot.link.v1.LinkFunction.
53
+ */
54
+ export const LinkFunctionSchema = /*@__PURE__*/
55
+ enumDesc(file_kusinta_iot_link_v1_link, 0);
56
+
57
+ /**
58
+ * What a link makes the sender do to the receiver.
59
+ *
60
+ * A function, not a cluster id, because the two ends do not necessarily speak the
61
+ * same cluster: a wall thermostat reports its temperature as Thermostat
62
+ * LocalTemperature while a bare sensor reports the same quantity as Temperature
63
+ * Measurement MeasuredValue. Each end states its own attribute in its
64
+ * LinkCapability; the function is what says the two belong together.
65
+ *
66
+ * @generated from enum kusinta.iot.link.v1.LinkFunction
67
+ */
68
+ export const LinkFunction = /*@__PURE__*/
69
+ tsEnum(LinkFunctionSchema);
70
+
71
+ /**
72
+ * Describes the enum kusinta.iot.link.v1.LinkDirection.
73
+ */
74
+ export const LinkDirectionSchema = /*@__PURE__*/
75
+ enumDesc(file_kusinta_iot_link_v1_link, 1);
76
+
77
+ /**
78
+ * Which end of a link a device can be.
79
+ *
80
+ * @generated from enum kusinta.iot.link.v1.LinkDirection
81
+ */
82
+ export const LinkDirection = /*@__PURE__*/
83
+ tsEnum(LinkDirectionSchema);
84
+
85
+ /**
86
+ * Describes the enum kusinta.iot.link.v1.LinkMode.
87
+ */
88
+ export const LinkModeSchema = /*@__PURE__*/
89
+ enumDesc(file_kusinta_iot_link_v1_link, 2);
90
+
91
+ /**
92
+ * How a link is carried.
93
+ *
94
+ * @generated from enum kusinta.iot.link.v1.LinkMode
95
+ */
96
+ export const LinkMode = /*@__PURE__*/
97
+ tsEnum(LinkModeSchema);
98
+
99
+ /**
100
+ * Describes the enum kusinta.iot.link.v1.LinkState.
101
+ */
102
+ export const LinkStateSchema = /*@__PURE__*/
103
+ enumDesc(file_kusinta_iot_link_v1_link, 3);
104
+
105
+ /**
106
+ * Whether a link is doing anything.
107
+ *
108
+ * There is deliberately no "created but not yet in effect" state. On current
109
+ * device firmware a link takes effect immediately, and on firmware old enough not
110
+ * to, it never takes effect at all without physical intervention — which is a
111
+ * refusal at creation time, not a state to wait in.
112
+ *
113
+ * Nor should ACTIVE be inferred from the hub reporting a link exists. A hub can
114
+ * report a link as present, unpending and healthy while the devices ignore it
115
+ * entirely; only behaviour distinguishes the two.
116
+ *
117
+ * @generated from enum kusinta.iot.link.v1.LinkState
118
+ */
119
+ export const LinkState = /*@__PURE__*/
120
+ tsEnum(LinkStateSchema);
121
+