@kusinta/iot-schema 0.2.0-beta.35 → 0.2.0-beta.37

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.
@@ -0,0 +1,118 @@
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_kusinta_iot_access_v1_acl } from "../../access/v1/acl_pb.js";
7
+ import { file_kusinta_iot_device_v1_cluster_state } from "../../device/v1/cluster_state_pb.js";
8
+ import { file_kusinta_iot_identity_v1_identity } from "../../identity/v1/identity_pb.js";
9
+
10
+ /**
11
+ * Describes the file kusinta/iot/heating/v1/heating.proto.
12
+ */
13
+ export const file_kusinta_iot_heating_v1_heating = /*@__PURE__*/
14
+ fileDesc("CiRrdXNpbnRhL2lvdC9oZWF0aW5nL3YxL2hlYXRpbmcucHJvdG8SFmt1c2ludGEuaW90LmhlYXRpbmcudjEifwoPRGV2aWNlQXR0cmlidXRlEjQKCWRldmljZV9pZBgBIAEoCzIhLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLkRldmljZUlkEjYKCWF0dHJpYnV0ZRgCIAEoCzIjLmt1c2ludGEuaW90LmFjY2Vzcy52MS5BdHRyaWJ1dGVSZWYihgEKDkNvbnRhY3RCaW5kaW5nEjcKBm91dHB1dBgBIAEoCzInLmt1c2ludGEuaW90LmhlYXRpbmcudjEuRGV2aWNlQXR0cmlidXRlEjsKDGNsb3NlZF92YWx1ZRgCIAEoCzIlLmt1c2ludGEuaW90LmRldmljZS52MS5BdHRyaWJ1dGVWYWx1ZSLsAgoMSGVhdGluZ1BsYW50EhAKCHBsYW50X2lkGAEgASgJEjIKCHNwYWNlX2lkGAIgASgLMiAua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuU3BhY2VJZBIMCgRuYW1lGAMgASgJEjYKBnNvdXJjZRgEIAEoDjImLmt1c2ludGEuaW90LmhlYXRpbmcudjEuSGVhdFNvdXJjZUtpbmQSPQoScmVhZGluZ3NfZGV2aWNlX2lkGAUgASgLMiEua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuRGV2aWNlSWQSPAoJaGVhdF9wdW1wGAYgASgLMicua3VzaW50YS5pb3QuaGVhdGluZy52MS5IZWF0UHVtcENvbnRyb2xIABI2CgVtZXRlchgHIAEoCzInLmt1c2ludGEuaW90LmhlYXRpbmcudjEuRGV2aWNlQXR0cmlidXRlEhAKCHJldmlzaW9uGAggASgEQgkKB2NvbnRyb2wi1gEKD0hlYXRQdW1wQ29udHJvbBI+Cg5zZ19yZWFkeV9ibG9jaxgBIAEoCzImLmt1c2ludGEuaW90LmhlYXRpbmcudjEuQ29udGFjdEJpbmRpbmcSPgoOc2dfcmVhZHlfYm9vc3QYAiABKAsyJi5rdXNpbnRhLmlvdC5oZWF0aW5nLnYxLkNvbnRhY3RCaW5kaW5nEkMKE2FkZF9vbl9oZWF0ZXJfYmxvY2sYAyABKAsyJi5rdXNpbnRhLmlvdC5oZWF0aW5nLnYxLkNvbnRhY3RCaW5kaW5nItoBCg5IZWF0aW5nQ2lyY3VpdBISCgpjaXJjdWl0X2lkGAEgASgJEhAKCHBsYW50X2lkGAIgASgJEgwKBG5hbWUYAyABKAkSOwoIcmFkaWF0b3IYBCABKAsyJy5rdXNpbnRhLmlvdC5oZWF0aW5nLnYxLlJhZGlhdG9yQ2lyY3VpdEgAEjUKBWZsb29yGAUgASgLMiQua3VzaW50YS5pb3QuaGVhdGluZy52MS5GbG9vckNpcmN1aXRIABIQCghyZXZpc2lvbhgGIAEoBEIOCgxkaXN0cmlidXRpb24iEQoPUmFkaWF0b3JDaXJjdWl0IuQBCgxGbG9vckNpcmN1aXQSFAoMbWl4aW5nX3ZhbHZlGAEgASgIEiQKF3N1cHBseV9jYXBfY2VudGlkZWdyZWVzGAIgASgRSACIAQESPQoMc3VwcGx5X3Byb2JlGAMgASgLMicua3VzaW50YS5pb3QuaGVhdGluZy52MS5EZXZpY2VBdHRyaWJ1dGUSPQoMcmV0dXJuX3Byb2JlGAQgASgLMicua3VzaW50YS5pb3QuaGVhdGluZy52MS5EZXZpY2VBdHRyaWJ1dGVCGgoYX3N1cHBseV9jYXBfY2VudGlkZWdyZWVzIvkBCglGbG9vclpvbmUSDwoHem9uZV9pZBgBIAEoCRISCgpjaXJjdWl0X2lkGAIgASgJEgwKBG5hbWUYAyABKAkSNgoGb3V0cHV0GAQgASgLMiYua3VzaW50YS5pb3QuaGVhdGluZy52MS5Db250YWN0QmluZGluZxI0CgVyb29tcxgFIAMoCzIlLmt1c2ludGEuaW90LmhlYXRpbmcudjEuRmxvb3Jab25lUm9vbRI5Cg9jb250cm9sX3Jvb21faWQYBiABKAsyIC5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5TcGFjZUlkEhAKCHJldmlzaW9uGAcgASgEIl8KDUZsb29yWm9uZVJvb20SMQoHcm9vbV9pZBgBIAEoCzIgLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLlNwYWNlSWQSGwoTYXJlYV9zaGFyZV9wZXJtaWxsZRgCIAEoDSKdAgoLQ29tZm9ydExvYWQSFwoPY29tZm9ydF9sb2FkX2lkGAEgASgJEjEKB3Jvb21faWQYAiABKAsyIC5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5TcGFjZUlkEgwKBG5hbWUYAyABKAkSNgoGb3V0cHV0GAQgASgLMiYua3VzaW50YS5pb3QuaGVhdGluZy52MS5Db250YWN0QmluZGluZxI2Cgd3aW5kb3dzGAUgAygLMiUua3VzaW50YS5pb3QuaGVhdGluZy52MS5Db21mb3J0V2luZG93EhAKCHJldmlzaW9uGAYgASgEEhgKEHdpbmRvd3NfcmV2aXNpb24YByABKAQSGAoQd2luZG93c193aXRoaGVsZBgIIAEoCCJLCg1Db21mb3J0V2luZG93EhAKCHdlZWtkYXlzGAEgASgNEhQKDHN0YXJ0X21pbnV0ZRgCIAEoDRISCgplbmRfbWludXRlGAMgASgNIvMBCg1IZWF0aW5nTGF5b3V0EjQKBnBsYW50cxgBIAMoCzIkLmt1c2ludGEuaW90LmhlYXRpbmcudjEuSGVhdGluZ1BsYW50EjgKCGNpcmN1aXRzGAIgAygLMiYua3VzaW50YS5pb3QuaGVhdGluZy52MS5IZWF0aW5nQ2lyY3VpdBI2CgtmbG9vcl96b25lcxgDIAMoCzIhLmt1c2ludGEuaW90LmhlYXRpbmcudjEuRmxvb3Jab25lEjoKDWNvbWZvcnRfbG9hZHMYBCADKAsyIy5rdXNpbnRhLmlvdC5oZWF0aW5nLnYxLkNvbWZvcnRMb2FkIoECCg1IZWF0aW5nUmVjb3JkEjUKBXBsYW50GAEgASgLMiQua3VzaW50YS5pb3QuaGVhdGluZy52MS5IZWF0aW5nUGxhbnRIABI5CgdjaXJjdWl0GAIgASgLMiYua3VzaW50YS5pb3QuaGVhdGluZy52MS5IZWF0aW5nQ2lyY3VpdEgAEjcKCmZsb29yX3pvbmUYAyABKAsyIS5rdXNpbnRhLmlvdC5oZWF0aW5nLnYxLkZsb29yWm9uZUgAEjsKDGNvbWZvcnRfbG9hZBgEIAEoCzIjLmt1c2ludGEuaW90LmhlYXRpbmcudjEuQ29tZm9ydExvYWRIAEIICgZyZWNvcmQqpQIKDkhlYXRTb3VyY2VLaW5kEiAKHEhFQVRfU09VUkNFX0tJTkRfVU5TUEVDSUZJRUQQABIqCiZIRUFUX1NPVVJDRV9LSU5EX0VYSEFVU1RfQUlSX0hFQVRfUFVNUBABEiwKKEhFQVRfU09VUkNFX0tJTkRfR1JPVU5EX1NPVVJDRV9IRUFUX1BVTVAQAhIoCiRIRUFUX1NPVVJDRV9LSU5EX0FJUl9XQVRFUl9IRUFUX1BVTVAQAxIlCiFIRUFUX1NPVVJDRV9LSU5EX0RJU1RSSUNUX0hFQVRJTkcQBBIkCiBIRUFUX1NPVVJDRV9LSU5EX0VMRUNUUklDX0JPSUxFUhAFEiAKHEhFQVRfU09VUkNFX0tJTkRfRlVFTF9CT0lMRVIQBkICSAFiBnByb3RvMw", [file_kusinta_iot_access_v1_acl, file_kusinta_iot_device_v1_cluster_state, file_kusinta_iot_identity_v1_identity]);
15
+
16
+ /**
17
+ * Describes the message kusinta.iot.heating.v1.DeviceAttribute.
18
+ * Use `create(DeviceAttributeSchema)` to create a new message.
19
+ */
20
+ export const DeviceAttributeSchema = /*@__PURE__*/
21
+ messageDesc(file_kusinta_iot_heating_v1_heating, 0);
22
+
23
+ /**
24
+ * Describes the message kusinta.iot.heating.v1.ContactBinding.
25
+ * Use `create(ContactBindingSchema)` to create a new message.
26
+ */
27
+ export const ContactBindingSchema = /*@__PURE__*/
28
+ messageDesc(file_kusinta_iot_heating_v1_heating, 1);
29
+
30
+ /**
31
+ * Describes the message kusinta.iot.heating.v1.HeatingPlant.
32
+ * Use `create(HeatingPlantSchema)` to create a new message.
33
+ */
34
+ export const HeatingPlantSchema = /*@__PURE__*/
35
+ messageDesc(file_kusinta_iot_heating_v1_heating, 2);
36
+
37
+ /**
38
+ * Describes the message kusinta.iot.heating.v1.HeatPumpControl.
39
+ * Use `create(HeatPumpControlSchema)` to create a new message.
40
+ */
41
+ export const HeatPumpControlSchema = /*@__PURE__*/
42
+ messageDesc(file_kusinta_iot_heating_v1_heating, 3);
43
+
44
+ /**
45
+ * Describes the message kusinta.iot.heating.v1.HeatingCircuit.
46
+ * Use `create(HeatingCircuitSchema)` to create a new message.
47
+ */
48
+ export const HeatingCircuitSchema = /*@__PURE__*/
49
+ messageDesc(file_kusinta_iot_heating_v1_heating, 4);
50
+
51
+ /**
52
+ * Describes the message kusinta.iot.heating.v1.RadiatorCircuit.
53
+ * Use `create(RadiatorCircuitSchema)` to create a new message.
54
+ */
55
+ export const RadiatorCircuitSchema = /*@__PURE__*/
56
+ messageDesc(file_kusinta_iot_heating_v1_heating, 5);
57
+
58
+ /**
59
+ * Describes the message kusinta.iot.heating.v1.FloorCircuit.
60
+ * Use `create(FloorCircuitSchema)` to create a new message.
61
+ */
62
+ export const FloorCircuitSchema = /*@__PURE__*/
63
+ messageDesc(file_kusinta_iot_heating_v1_heating, 6);
64
+
65
+ /**
66
+ * Describes the message kusinta.iot.heating.v1.FloorZone.
67
+ * Use `create(FloorZoneSchema)` to create a new message.
68
+ */
69
+ export const FloorZoneSchema = /*@__PURE__*/
70
+ messageDesc(file_kusinta_iot_heating_v1_heating, 7);
71
+
72
+ /**
73
+ * Describes the message kusinta.iot.heating.v1.FloorZoneRoom.
74
+ * Use `create(FloorZoneRoomSchema)` to create a new message.
75
+ */
76
+ export const FloorZoneRoomSchema = /*@__PURE__*/
77
+ messageDesc(file_kusinta_iot_heating_v1_heating, 8);
78
+
79
+ /**
80
+ * Describes the message kusinta.iot.heating.v1.ComfortLoad.
81
+ * Use `create(ComfortLoadSchema)` to create a new message.
82
+ */
83
+ export const ComfortLoadSchema = /*@__PURE__*/
84
+ messageDesc(file_kusinta_iot_heating_v1_heating, 9);
85
+
86
+ /**
87
+ * Describes the message kusinta.iot.heating.v1.ComfortWindow.
88
+ * Use `create(ComfortWindowSchema)` to create a new message.
89
+ */
90
+ export const ComfortWindowSchema = /*@__PURE__*/
91
+ messageDesc(file_kusinta_iot_heating_v1_heating, 10);
92
+
93
+ /**
94
+ * Describes the message kusinta.iot.heating.v1.HeatingLayout.
95
+ * Use `create(HeatingLayoutSchema)` to create a new message.
96
+ */
97
+ export const HeatingLayoutSchema = /*@__PURE__*/
98
+ messageDesc(file_kusinta_iot_heating_v1_heating, 11);
99
+
100
+ /**
101
+ * Describes the message kusinta.iot.heating.v1.HeatingRecord.
102
+ * Use `create(HeatingRecordSchema)` to create a new message.
103
+ */
104
+ export const HeatingRecordSchema = /*@__PURE__*/
105
+ messageDesc(file_kusinta_iot_heating_v1_heating, 12);
106
+
107
+ /**
108
+ * Describes the enum kusinta.iot.heating.v1.HeatSourceKind.
109
+ */
110
+ export const HeatSourceKindSchema = /*@__PURE__*/
111
+ enumDesc(file_kusinta_iot_heating_v1_heating, 0);
112
+
113
+ /**
114
+ * @generated from enum kusinta.iot.heating.v1.HeatSourceKind
115
+ */
116
+ export const HeatSourceKind = /*@__PURE__*/
117
+ tsEnum(HeatSourceKindSchema);
118
+
@@ -281,6 +281,16 @@ export declare type DeviceCommand = Message<"kusinta.iot.webrtc.v1.DeviceCommand
281
281
  value: Uint8Array;
282
282
  case: "rawTlv";
283
283
  } | { case: undefined; value?: undefined };
284
+
285
+ /**
286
+ * How long, in seconds, the value the command sets holds, for a command that sets an
287
+ * attribute the producer states as leased: OnOff is set by the On and Off commands, not
288
+ * by a write. The same rules as AttributeWriteRequest.lease_seconds, applied to the
289
+ * attribute the command sets.
290
+ *
291
+ * @generated from field: optional uint32 lease_seconds = 14;
292
+ */
293
+ leaseSeconds?: number | undefined;
284
294
  };
285
295
 
286
296
  /**
@@ -434,6 +444,28 @@ export declare type AttributeWriteRequest = Message<"kusinta.iot.webrtc.v1.Attri
434
444
  * @generated from field: kusinta.iot.device.v1.AttributeValue value = 4;
435
445
  */
436
446
  value?: AttributeValue | undefined;
447
+
448
+ /**
449
+ * How long, in seconds, the written value holds before the device itself returns the
450
+ * attribute to its lapse value — for an attribute the producer states as leased
451
+ * (device.v1.LeasedWrite, on the attribute's cluster or as a vendor parameter). At least
452
+ * one second, and within the stated minimum and maximum.
453
+ *
454
+ * The producer MUST refuse, with COMMAND_ERROR_CODE_INVALID_COMMAND, a write to a leased
455
+ * attribute that carries no lease, a lease of zero or outside the stated bounds, and a
456
+ * lease on an attribute it does not state as leased. A write of the attribute's lapse
457
+ * value is the exception: it needs no lease, ends any lease running, and a lease on it
458
+ * is ignored (device.v1.LeasedWrite.lapse_value). Rollout order: a writer sends a
459
+ * lease for an attribute before the attribute's producer states it as leased.
460
+ *
461
+ * Set only by the gateway, towards a producer: a leased attribute is written by the
462
+ * gateway alone. A gateway MUST refuse a request from an app that carries a lease, with
463
+ * COMMAND_ERROR_CODE_INVALID_COMMAND, and an app's write or command to an attribute its
464
+ * producer states as leased, with COMMAND_ERROR_CODE_HELD_BY_GATEWAY.
465
+ *
466
+ * @generated from field: optional uint32 lease_seconds = 5;
467
+ */
468
+ leaseSeconds?: number | undefined;
437
469
  };
438
470
 
439
471
  /**
@@ -514,6 +546,16 @@ export enum CommandErrorCode {
514
546
  * @generated from enum value: COMMAND_ERROR_CODE_INTERNAL = 7;
515
547
  */
516
548
  INTERNAL = 7,
549
+
550
+ /**
551
+ * The attribute is one the gateway drives under a lease — a floor zone, a heat source's
552
+ * add-on heater block — and a person changes it through the room's target and comfort
553
+ * band, not directly. Permanent for this attribute: do not retry; tell the user where to
554
+ * change it instead.
555
+ *
556
+ * @generated from enum value: COMMAND_ERROR_CODE_HELD_BY_GATEWAY = 8;
557
+ */
558
+ HELD_BY_GATEWAY = 8,
517
559
  }
518
560
 
519
561
  /**
@@ -14,7 +14,7 @@ import { file_kusinta_iot_webrtc_v1_setpoint_mode } from "./setpoint_mode_pb.js"
14
14
  * Describes the file kusinta/iot/webrtc/v1/command.proto.
15
15
  */
16
16
  export const file_kusinta_iot_webrtc_v1_command = /*@__PURE__*/
17
- fileDesc("CiNrdXNpbnRhL2lvdC93ZWJydGMvdjEvY29tbWFuZC5wcm90bxIVa3VzaW50YS5pb3Qud2VicnRjLnYxInwKGFRoZXJtb3N0YXRTZXRwb2ludFBhcmFtcxI8CgRtb2RlGAEgASgOMikua3VzaW50YS5pb3Qud2VicnRjLnYxLlNldHBvaW50QWRqdXN0TW9kZUgAiAEBEg4KBmFtb3VudBgCIAEoEToJuLUYgQTAtRgAQgcKBV9tb2RlIkYKEkxldmVsQ29udHJvbFBhcmFtcxINCgVsZXZlbBgBIAEoDRIXCg90cmFuc2l0aW9uX3RpbWUYAiABKA06CLi1GAjAtRgAIisKC09uT2ZmUGFyYW1zOgS4tRgGSgQIARACSgQIAhADUgJvblIGdG9nZ2xlIkEKGFdpbmRvd0NvdmVyaW5nTGlmdFBhcmFtcxIaChJsaWZ0X3BlcmNlbnQxMDB0aHMYASABKA06Cbi1GIICwLUYBSI7Cg5Eb29yTG9ja1BhcmFtcxIQCghwaW5fY29kZRgCIAEoCToFuLUYgQJKBAgBEAJSCmxvY2tfc3RhdGUikgUKDURldmljZUNvbW1hbmQSEgoKcmVxdWVzdF9pZBgBIAEoCRI0CglkZXZpY2VfaWQYAiABKAsyIS5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5EZXZpY2VJZBIUCgxjb21tYW5kX25hbWUYBCABKAkSEgoKY2x1c3Rlcl9pZBgMIAEoDRIeChFtYXR0ZXJfY29tbWFuZF9pZBgNIAEoDUgBiAEBEhgKC2VuZHBvaW50X2lkGAsgASgNSAKIAQESTgoTdGhlcm1vc3RhdF9zZXRwb2ludBgFIAEoCzIvLmt1c2ludGEuaW90LndlYnJ0Yy52MS5UaGVybW9zdGF0U2V0cG9pbnRQYXJhbXNIABJCCg1sZXZlbF9jb250cm9sGAYgASgLMikua3VzaW50YS5pb3Qud2VicnRjLnYxLkxldmVsQ29udHJvbFBhcmFtc0gAEjQKBm9uX29mZhgHIAEoCzIiLmt1c2ludGEuaW90LndlYnJ0Yy52MS5Pbk9mZlBhcmFtc0gAEk8KFHdpbmRvd19jb3ZlcmluZ19saWZ0GAggASgLMi8ua3VzaW50YS5pb3Qud2VicnRjLnYxLldpbmRvd0NvdmVyaW5nTGlmdFBhcmFtc0gAEjoKCWRvb3JfbG9jaxgJIAEoCzIlLmt1c2ludGEuaW90LndlYnJ0Yy52MS5Eb29yTG9ja1BhcmFtc0gAEhEKB3Jhd190bHYYYyABKAxIAEIMCgpwYXJhbWV0ZXJzQhQKEl9tYXR0ZXJfY29tbWFuZF9pZEIOCgxfZW5kcG9pbnRfaWRKBAgDEARKBAgKEAtSDmNsdXN0ZXJfaWRfaGV4Uhl0aGVybW9zdGF0X3NldHBvaW50X3dyaXRlItIBCgxDb21tYW5kRXJyb3ISDwoHbWVzc2FnZRgCIAEoCRI1CgRjb2RlGAMgASgOMicua3VzaW50YS5pb3Qud2VicnRjLnYxLkNvbW1hbmRFcnJvckNvZGUSQwoIbWV0YWRhdGEYBCADKAsyMS5rdXNpbnRhLmlvdC53ZWJydGMudjEuQ29tbWFuZEVycm9yLk1ldGFkYXRhRW50cnkaLwoNTWV0YWRhdGFFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBSgQIARACIt4BCg1Db21tYW5kUmVzdWx0EhIKCnJlcXVlc3RfaWQYASABKAkSDwoHc3VjY2VzcxgCIAEoCBIyCgVlcnJvchgDIAEoCzIjLmt1c2ludGEuaW90LndlYnJ0Yy52MS5Db21tYW5kRXJyb3ISMAoMY29tcGxldGVkX2F0GAQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIzCgpzZXR0bGVzX2J5GAUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgAiAEBQg0KC19zZXR0bGVzX2J5IswBChVBdHRyaWJ1dGVXcml0ZVJlcXVlc3QSEgoKcmVxdWVzdF9pZBgBIAEoCRI0CglkZXZpY2VfaWQYAiABKAsyIS5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5EZXZpY2VJZBIzCgZ0YXJnZXQYAyABKAsyIy5rdXNpbnRhLmlvdC5hY2Nlc3MudjEuQXR0cmlidXRlUmVmEjQKBXZhbHVlGAQgASgLMiUua3VzaW50YS5pb3QuZGV2aWNlLnYxLkF0dHJpYnV0ZVZhbHVlKr8CChBDb21tYW5kRXJyb3JDb2RlEiIKHkNPTU1BTkRfRVJST1JfQ09ERV9VTlNQRUNJRklFRBAAEiMKH0NPTU1BTkRfRVJST1JfQ09ERV9OT1RfRU5USVRMRUQQARIqCiZDT01NQU5EX0VSUk9SX0NPREVfQ09OU1RSQUlOVF9WSU9MQVRFRBACEiYKIkNPTU1BTkRfRVJST1JfQ09ERV9JTlZBTElEX0NPTU1BTkQQAxIiCh5DT01NQU5EX0VSUk9SX0NPREVfVU5SRUFDSEFCTEUQBBIeChpDT01NQU5EX0VSUk9SX0NPREVfVElNRU9VVBAFEikKJUNPTU1BTkRfRVJST1JfQ09ERV9SRUpFQ1RFRF9CWV9ERVZJQ0UQBhIfChtDT01NQU5EX0VSUk9SX0NPREVfSU5URVJOQUwQB0ICSAFiBnByb3RvMw", [file_google_protobuf_timestamp, file_kusinta_iot_access_v1_acl, file_kusinta_iot_device_v1_cluster_state, file_kusinta_iot_device_v1_matter_options, file_kusinta_iot_identity_v1_identity, file_kusinta_iot_webrtc_v1_setpoint_mode]);
17
+ fileDesc("CiNrdXNpbnRhL2lvdC93ZWJydGMvdjEvY29tbWFuZC5wcm90bxIVa3VzaW50YS5pb3Qud2VicnRjLnYxInwKGFRoZXJtb3N0YXRTZXRwb2ludFBhcmFtcxI8CgRtb2RlGAEgASgOMikua3VzaW50YS5pb3Qud2VicnRjLnYxLlNldHBvaW50QWRqdXN0TW9kZUgAiAEBEg4KBmFtb3VudBgCIAEoEToJuLUYgQTAtRgAQgcKBV9tb2RlIkYKEkxldmVsQ29udHJvbFBhcmFtcxINCgVsZXZlbBgBIAEoDRIXCg90cmFuc2l0aW9uX3RpbWUYAiABKA06CLi1GAjAtRgAIisKC09uT2ZmUGFyYW1zOgS4tRgGSgQIARACSgQIAhADUgJvblIGdG9nZ2xlIkEKGFdpbmRvd0NvdmVyaW5nTGlmdFBhcmFtcxIaChJsaWZ0X3BlcmNlbnQxMDB0aHMYASABKA06Cbi1GIICwLUYBSI7Cg5Eb29yTG9ja1BhcmFtcxIQCghwaW5fY29kZRgCIAEoCToFuLUYgQJKBAgBEAJSCmxvY2tfc3RhdGUiwAUKDURldmljZUNvbW1hbmQSEgoKcmVxdWVzdF9pZBgBIAEoCRI0CglkZXZpY2VfaWQYAiABKAsyIS5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5EZXZpY2VJZBIUCgxjb21tYW5kX25hbWUYBCABKAkSEgoKY2x1c3Rlcl9pZBgMIAEoDRIeChFtYXR0ZXJfY29tbWFuZF9pZBgNIAEoDUgBiAEBEhgKC2VuZHBvaW50X2lkGAsgASgNSAKIAQESTgoTdGhlcm1vc3RhdF9zZXRwb2ludBgFIAEoCzIvLmt1c2ludGEuaW90LndlYnJ0Yy52MS5UaGVybW9zdGF0U2V0cG9pbnRQYXJhbXNIABJCCg1sZXZlbF9jb250cm9sGAYgASgLMikua3VzaW50YS5pb3Qud2VicnRjLnYxLkxldmVsQ29udHJvbFBhcmFtc0gAEjQKBm9uX29mZhgHIAEoCzIiLmt1c2ludGEuaW90LndlYnJ0Yy52MS5Pbk9mZlBhcmFtc0gAEk8KFHdpbmRvd19jb3ZlcmluZ19saWZ0GAggASgLMi8ua3VzaW50YS5pb3Qud2VicnRjLnYxLldpbmRvd0NvdmVyaW5nTGlmdFBhcmFtc0gAEjoKCWRvb3JfbG9jaxgJIAEoCzIlLmt1c2ludGEuaW90LndlYnJ0Yy52MS5Eb29yTG9ja1BhcmFtc0gAEhEKB3Jhd190bHYYYyABKAxIABIaCg1sZWFzZV9zZWNvbmRzGA4gASgNSAOIAQFCDAoKcGFyYW1ldGVyc0IUChJfbWF0dGVyX2NvbW1hbmRfaWRCDgoMX2VuZHBvaW50X2lkQhAKDl9sZWFzZV9zZWNvbmRzSgQIAxAESgQIChALUg5jbHVzdGVyX2lkX2hleFIZdGhlcm1vc3RhdF9zZXRwb2ludF93cml0ZSLSAQoMQ29tbWFuZEVycm9yEg8KB21lc3NhZ2UYAiABKAkSNQoEY29kZRgDIAEoDjInLmt1c2ludGEuaW90LndlYnJ0Yy52MS5Db21tYW5kRXJyb3JDb2RlEkMKCG1ldGFkYXRhGAQgAygLMjEua3VzaW50YS5pb3Qud2VicnRjLnYxLkNvbW1hbmRFcnJvci5NZXRhZGF0YUVudHJ5Gi8KDU1ldGFkYXRhRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4AUoECAEQAiLeAQoNQ29tbWFuZFJlc3VsdBISCgpyZXF1ZXN0X2lkGAEgASgJEg8KB3N1Y2Nlc3MYAiABKAgSMgoFZXJyb3IYAyABKAsyIy5rdXNpbnRhLmlvdC53ZWJydGMudjEuQ29tbWFuZEVycm9yEjAKDGNvbXBsZXRlZF9hdBgEIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASMwoKc2V0dGxlc19ieRgFIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAIgBAUINCgtfc2V0dGxlc19ieSL6AQoVQXR0cmlidXRlV3JpdGVSZXF1ZXN0EhIKCnJlcXVlc3RfaWQYASABKAkSNAoJZGV2aWNlX2lkGAIgASgLMiEua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuRGV2aWNlSWQSMwoGdGFyZ2V0GAMgASgLMiMua3VzaW50YS5pb3QuYWNjZXNzLnYxLkF0dHJpYnV0ZVJlZhI0CgV2YWx1ZRgEIAEoCzIlLmt1c2ludGEuaW90LmRldmljZS52MS5BdHRyaWJ1dGVWYWx1ZRIaCg1sZWFzZV9zZWNvbmRzGAUgASgNSACIAQFCEAoOX2xlYXNlX3NlY29uZHMq5wIKEENvbW1hbmRFcnJvckNvZGUSIgoeQ09NTUFORF9FUlJPUl9DT0RFX1VOU1BFQ0lGSUVEEAASIwofQ09NTUFORF9FUlJPUl9DT0RFX05PVF9FTlRJVExFRBABEioKJkNPTU1BTkRfRVJST1JfQ09ERV9DT05TVFJBSU5UX1ZJT0xBVEVEEAISJgoiQ09NTUFORF9FUlJPUl9DT0RFX0lOVkFMSURfQ09NTUFORBADEiIKHkNPTU1BTkRfRVJST1JfQ09ERV9VTlJFQUNIQUJMRRAEEh4KGkNPTU1BTkRfRVJST1JfQ09ERV9USU1FT1VUEAUSKQolQ09NTUFORF9FUlJPUl9DT0RFX1JFSkVDVEVEX0JZX0RFVklDRRAGEh8KG0NPTU1BTkRfRVJST1JfQ09ERV9JTlRFUk5BTBAHEiYKIkNPTU1BTkRfRVJST1JfQ09ERV9IRUxEX0JZX0dBVEVXQVkQCEICSAFiBnByb3RvMw", [file_google_protobuf_timestamp, file_kusinta_iot_access_v1_acl, file_kusinta_iot_device_v1_cluster_state, file_kusinta_iot_device_v1_matter_options, file_kusinta_iot_identity_v1_identity, file_kusinta_iot_webrtc_v1_setpoint_mode]);
18
18
 
19
19
  /**
20
20
  * Describes the message kusinta.iot.webrtc.v1.ThermostatSetpointParams.
@@ -12,6 +12,7 @@ import type { DeviceLink, DeviceLinkList } from "../../link/v1/link_pb.js";
12
12
  import type { ApartmentClimateSummary, ClimateMode, RoomClimate, RoomClimateList, RoomHistory } from "../../climate/v1/climate_pb.js";
13
13
  import type { IssuedInvite, SpaceInvites } from "./invite_pb.js";
14
14
  import type { GatewayMembers, PromotionRequests } from "./members_pb.js";
15
+ import type { HeatingLayout, HeatingRecord } from "../../heating/v1/heating_pb.js";
15
16
  import type { PairingErrorDetail, PairingWindow } from "../../common/v1/pairing_pb.js";
16
17
  import type { BackendHealth, ConnectorKind, DeviceOwnershipType } from "../../common/v1/types_pb.js";
17
18
  import type { Timestamp } from "@bufbuild/protobuf/wkt";
@@ -394,6 +395,23 @@ export declare type ManagementResult = Message<"kusinta.iot.webrtc.v1.Management
394
395
  */
395
396
  value: PromotionRequests;
396
397
  case: "promotionRequests";
398
+ } | {
399
+ /**
400
+ * list_heating
401
+ *
402
+ * @generated from field: kusinta.iot.heating.v1.HeatingLayout heating_layout = 15;
403
+ */
404
+ value: HeatingLayout;
405
+ case: "heatingLayout";
406
+ } | {
407
+ /**
408
+ * put_heating_plant, put_heating_circuit, put_floor_zone, put_comfort_load,
409
+ * set_comfort_windows
410
+ *
411
+ * @generated from field: kusinta.iot.heating.v1.HeatingRecord heating_record = 16;
412
+ */
413
+ value: HeatingRecord;
414
+ case: "heatingRecord";
397
415
  } | { case: undefined; value?: undefined };
398
416
  };
399
417
 
@@ -9,6 +9,7 @@ import { file_kusinta_iot_climate_v1_climate } from "../../climate/v1/climate_pb
9
9
  import { file_kusinta_iot_common_v1_pairing } from "../../common/v1/pairing_pb.js";
10
10
  import { file_kusinta_iot_common_v1_types } from "../../common/v1/types_pb.js";
11
11
  import { file_kusinta_iot_device_v1_device_event } from "../../device/v1/device_event_pb.js";
12
+ import { file_kusinta_iot_heating_v1_heating } from "../../heating/v1/heating_pb.js";
12
13
  import { file_kusinta_iot_identity_v1_identity } from "../../identity/v1/identity_pb.js";
13
14
  import { file_kusinta_iot_link_v1_link } from "../../link/v1/link_pb.js";
14
15
  import { file_kusinta_iot_space_v1_space } from "../../space/v1/space_pb.js";
@@ -23,7 +24,7 @@ import { file_kusinta_iot_webrtc_v1_permission_push } from "./permission_push_pb
23
24
  * Describes the file kusinta/iot/webrtc/v1/envelope.proto.
24
25
  */
25
26
  export const file_kusinta_iot_webrtc_v1_envelope = /*@__PURE__*/
26
- fileDesc("CiRrdXNpbnRhL2lvdC93ZWJydGMvdjEvZW52ZWxvcGUucHJvdG8SFWt1c2ludGEuaW90LndlYnJ0Yy52MSIGCgRQaW5nIgYKBFBvbmciIwoRSGFuZHNoYWtlUmVqZWN0ZWQSDgoGcmVhc29uGAEgASgJIlwKDEFwcEhhbmRzaGFrZRILCgNqd3QYASABKAkSPwoUc3Vic2NyaWJlX2RldmljZV9pZHMYAiADKAsyIS5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5EZXZpY2VJZCJJChBTdWJzY3JpYmVEZXZpY2VzEjUKCmRldmljZV9pZHMYASADKAsyIS5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5EZXZpY2VJZCJLChJVbnN1YnNjcmliZURldmljZXMSNQoKZGV2aWNlX2lkcxgBIAMoCzIhLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLkRldmljZUlkIpMBChNSZWZ1c2VkU3Vic2NyaXB0aW9uEjQKCWRldmljZV9pZBgBIAEoCzIhLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLkRldmljZUlkEjUKBGNvZGUYAiABKA4yJy5rdXNpbnRhLmlvdC53ZWJydGMudjEuR2F0ZXdheUVycm9yQ29kZRIPCgdtZXNzYWdlGAMgASgJIpoBCg9TdWJzY3JpcHRpb25BY2sSEwoLaW5fcmVwbHlfdG8YASABKAkSNQoKc3Vic2NyaWJlZBgCIAMoCzIhLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLkRldmljZUlkEjsKB3JlZnVzZWQYAyADKAsyKi5rdXNpbnRhLmlvdC53ZWJydGMudjEuUmVmdXNlZFN1YnNjcmlwdGlvbiLRAQoTUHJvcGVydHlSZWFkUmVxdWVzdBI0CglkZXZpY2VfaWQYASABKAsyIS5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5EZXZpY2VJZBIzCgZ0YXJnZXQYByABKAsyIy5rdXNpbnRhLmlvdC5hY2Nlc3MudjEuQXR0cmlidXRlUmVmSgQIAhAHUg5hdHRyaWJ1dGVfbmFtZVIOY2x1c3Rlcl9pZF9oZXhSCmNsdXN0ZXJfaWRSC2VuZHBvaW50X2lkUhB2ZW5kb3JfZXh0ZW5zaW9uIswBCgxHYXRld2F5RXJyb3ISNQoEY29kZRgBIAEoDjInLmt1c2ludGEuaW90LndlYnJ0Yy52MS5HYXRld2F5RXJyb3JDb2RlEg8KB21lc3NhZ2UYAiABKAkSQwoIbWV0YWRhdGEYAyADKAsyMS5rdXNpbnRhLmlvdC53ZWJydGMudjEuR2F0ZXdheUVycm9yLk1ldGFkYXRhRW50cnkaLwoNTWV0YWRhdGFFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBItsGChBNYW5hZ2VtZW50UmVzdWx0EhMKC2luX3JlcGx5X3RvGAEgASgJEjQKBWVycm9yGAIgASgLMiMua3VzaW50YS5pb3Qud2VicnRjLnYxLkdhdGV3YXlFcnJvckgAEiwKBXNwYWNlGAMgASgLMhsua3VzaW50YS5pb3Quc3BhY2UudjEuU3BhY2VIABI2CgpzcGFjZV90cmVlGAQgASgLMiAua3VzaW50YS5pb3Qud2VicnRjLnYxLlNwYWNlVHJlZUgAEjMKA2FjaxgFIAEoCzIkLmt1c2ludGEuaW90LndlYnJ0Yy52MS5NYW5hZ2VtZW50QWNrSAASNAoFbGlua3MYBiABKAsyIy5rdXNpbnRhLmlvdC5saW5rLnYxLkRldmljZUxpbmtMaXN0SAASQAoNcm9vbV9jbGltYXRlcxgHIAEoCzInLmt1c2ludGEuaW90LmNsaW1hdGUudjEuUm9vbUNsaW1hdGVMaXN0SAASOwoMcm9vbV9oaXN0b3J5GAggASgLMiMua3VzaW50YS5pb3QuY2xpbWF0ZS52MS5Sb29tSGlzdG9yeUgAEkYKEnByaXZhY3lfZGlzY2xvc3VyZRgJIAEoCzIoLmt1c2ludGEuaW90LndlYnJ0Yy52MS5Qcml2YWN5RGlzY2xvc3VyZUgAElQKGWFwYXJ0bWVudF9jbGltYXRlX3N1bW1hcnkYCiABKAsyLy5rdXNpbnRhLmlvdC5jbGltYXRlLnYxLkFwYXJ0bWVudENsaW1hdGVTdW1tYXJ5SAASPAoNaXNzdWVkX2ludml0ZRgLIAEoCzIjLmt1c2ludGEuaW90LndlYnJ0Yy52MS5Jc3N1ZWRJbnZpdGVIABI8Cg1zcGFjZV9pbnZpdGVzGAwgASgLMiMua3VzaW50YS5pb3Qud2VicnRjLnYxLlNwYWNlSW52aXRlc0gAEkAKD2dhdGV3YXlfbWVtYmVycxgNIAEoCzIlLmt1c2ludGEuaW90LndlYnJ0Yy52MS5HYXRld2F5TWVtYmVyc0gAEkYKEnByb21vdGlvbl9yZXF1ZXN0cxgOIAEoCzIoLmt1c2ludGEuaW90LndlYnJ0Yy52MS5Qcm9tb3Rpb25SZXF1ZXN0c0gAQggKBnJlc3VsdCL7AQoMU3RhcnRQYWlyaW5nEjoKDGNvbm5lY3Rvcl9pZBgBIAEoCzIkLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLkNvbm5lY3RvcklkEjQKBndpbmRvdxgCIAEoCzIkLmt1c2ludGEuaW90LmNvbW1vbi52MS5QYWlyaW5nV2luZG93EjoKEGluaXRpYWxfc3BhY2VfaWQYAyABKAsyIC5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5TcGFjZUlkEj0KCW93bmVyc2hpcBgEIAEoDjIqLmt1c2ludGEuaW90LmNvbW1vbi52MS5EZXZpY2VPd25lcnNoaXBUeXBlIo8BCg5QYWlyaW5nU3RhcnRlZBITCgtpbl9yZXBseV90bxgBIAEoCRIuCgpleHBpcmVzX2F0GAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBI4CgVlcnJvchgDIAEoCzIpLmt1c2ludGEuaW90LmNvbW1vbi52MS5QYWlyaW5nRXJyb3JEZXRhaWwilwEKD1BhaXJpbmdGaW5pc2hlZBITCgtpbl9yZXBseV90bxgBIAEoCRI1CgpkZXZpY2VfaWRzGAIgAygLMiEua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuRGV2aWNlSWQSOAoFZXJyb3IYAyABKAsyKS5rdXNpbnRhLmlvdC5jb21tb24udjEuUGFpcmluZ0Vycm9yRGV0YWlsIk0KC0xpbmtDaGFuZ2VkEi0KBGxpbmsYASABKAsyHy5rdXNpbnRhLmlvdC5saW5rLnYxLkRldmljZUxpbmsSDwoHcmVtb3ZlZBgCIAEoCCKIAwoTQ29ubmVjdG9yRGVzY3JpcHRvchI6Cgxjb25uZWN0b3JfaWQYASABKAsyJC5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5Db25uZWN0b3JJZBIUCgxkaXNwbGF5X25hbWUYAiABKAkSIQoZc3VwcG9ydGVkX2RldmljZV90eXBlX2lkcxgDIAMoDRIYChBzdXBwb3J0c19wYWlyaW5nGAQgASgIEh0KFXN1cHBvcnRzX3Byb3Zpc2lvbmluZxgFIAEoCBIVCg1icm9rZXJzX2xpbmtzGAYgASgIEjIKBGtpbmQYByABKA4yJC5rdXNpbnRhLmlvdC5jb21tb24udjEuQ29ubmVjdG9yS2luZBITCgtkZXNjcmlwdGlvbhgIIAEoCRI8Cg5iYWNrZW5kX2hlYWx0aBgJIAEoCzIkLmt1c2ludGEuaW90LmNvbW1vbi52MS5CYWNrZW5kSGVhbHRoEiUKHXN1cHBvcnRzX2JhY2tlbmRfcmVpbml0aWFsaXplGAogASgIIlUKE0Nvbm5lY3RvcnNBbm5vdW5jZWQSPgoKY29ubmVjdG9ycxgBIAMoCzIqLmt1c2ludGEuaW90LndlYnJ0Yy52MS5Db25uZWN0b3JEZXNjcmlwdG9yIkcKElJvb21DbGltYXRlQ2hhbmdlZBIxCgRyb29tGAEgASgLMiMua3VzaW50YS5pb3QuY2xpbWF0ZS52MS5Sb29tQ2xpbWF0ZSJWChJDbGltYXRlTW9kZUNoYW5nZWQSMQoEbW9kZRgBIAEoCzIjLmt1c2ludGEuaW90LmNsaW1hdGUudjEuQ2xpbWF0ZU1vZGUSDQoFZW5kZWQYAiABKAgijgwKDkdhdGV3YXlNZXNzYWdlEhIKCm1lc3NhZ2VfaWQYASABKAkSKwoHc2VudF9hdBgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASRAoOc3RhdGVfc25hcHNob3QYAyABKAsyKi5rdXNpbnRhLmlvdC53ZWJydGMudjEuRGV2aWNlU3RhdGVTbmFwc2hvdEgAEkAKD3Byb3BlcnR5X3JlcG9ydBgEIAEoCzIlLmt1c2ludGEuaW90LndlYnJ0Yy52MS5Qcm9wZXJ0eVJlcG9ydEgAEkgKEXBlcm1pc3Npb25fdXBkYXRlGAUgASgLMisua3VzaW50YS5pb3Qud2VicnRjLnYxLkxpdmVQZXJtaXNzaW9uVXBkYXRlSAASPgoOY29tbWFuZF9yZXN1bHQYBiABKAsyJC5rdXNpbnRhLmlvdC53ZWJydGMudjEuQ29tbWFuZFJlc3VsdEgAEisKBHBvbmcYCCABKAsyGy5rdXNpbnRhLmlvdC53ZWJydGMudjEuUG9uZ0gAEkYKEmhhbmRzaGFrZV9yZWplY3RlZBgJIAEoCzIoLmt1c2ludGEuaW90LndlYnJ0Yy52MS5IYW5kc2hha2VSZWplY3RlZEgAEjQKBWVycm9yGAogASgLMiMua3VzaW50YS5pb3Qud2VicnRjLnYxLkdhdGV3YXlFcnJvckgAEkIKEHN1YnNjcmlwdGlvbl9hY2sYCyABKAsyJi5rdXNpbnRhLmlvdC53ZWJydGMudjEuU3Vic2NyaXB0aW9uQWNrSAASOgoMZGV2aWNlX2FkZGVkGAwgASgLMiIua3VzaW50YS5pb3Qud2VicnRjLnYxLkRldmljZUFkZGVkSAASPgoOZGV2aWNlX3JlbW92ZWQYDSABKAsyJC5rdXNpbnRhLmlvdC53ZWJydGMudjEuRGV2aWNlUmVtb3ZlZEgAEkQKEW1hbmFnZW1lbnRfcmVzdWx0GA4gASgLMicua3VzaW50YS5pb3Qud2VicnRjLnYxLk1hbmFnZW1lbnRSZXN1bHRIABJACg1kZXZpY2VfZXZlbnRzGBAgASgLMicua3VzaW50YS5pb3QuZGV2aWNlLnYxLkRldmljZUV2ZW50QmF0Y2hIABJACg9wYWlyaW5nX3N0YXJ0ZWQYESABKAsyJS5rdXNpbnRhLmlvdC53ZWJydGMudjEuUGFpcmluZ1N0YXJ0ZWRIABJCChBwYWlyaW5nX2ZpbmlzaGVkGBIgASgLMiYua3VzaW50YS5pb3Qud2VicnRjLnYxLlBhaXJpbmdGaW5pc2hlZEgAEjoKDGxpbmtfY2hhbmdlZBgTIAEoCzIiLmt1c2ludGEuaW90LndlYnJ0Yy52MS5MaW5rQ2hhbmdlZEgAEkoKFGNvbm5lY3RvcnNfYW5ub3VuY2VkGBQgASgLMioua3VzaW50YS5pb3Qud2VicnRjLnYxLkNvbm5lY3RvcnNBbm5vdW5jZWRIABJJChRyb29tX2NsaW1hdGVfY2hhbmdlZBgVIAEoCzIpLmt1c2ludGEuaW90LndlYnJ0Yy52MS5Sb29tQ2xpbWF0ZUNoYW5nZWRIABJJChRjbGltYXRlX21vZGVfY2hhbmdlZBgWIAEoCzIpLmt1c2ludGEuaW90LndlYnJ0Yy52MS5DbGltYXRlTW9kZUNoYW5nZWRIABJNChZzZXJ2aWNlX3N0YXR1c19jaGFuZ2VkGBcgASgLMisua3VzaW50YS5pb3Qud2VicnRjLnYxLlNlcnZpY2VTdGF0dXNDaGFuZ2VkSAASPAoNc3BhY2VfaW52aXRlcxgYIAEoCzIjLmt1c2ludGEuaW90LndlYnJ0Yy52MS5TcGFjZUludml0ZXNIABJGChJwcm9tb3Rpb25fcmVxdWVzdHMYGSABKAsyKC5rdXNpbnRhLmlvdC53ZWJydGMudjEuUHJvbW90aW9uUmVxdWVzdHNIAEIJCgdwYXlsb2FkSgQIDxAQSgQIBxAIUhZhdHRyaWJ1dGVfd3JpdGVfcmVzdWx0Ug5wcm9wZXJ0eV9ldmVudCKDBQoKQXBwTWVzc2FnZRISCgptZXNzYWdlX2lkGAEgASgJEisKB3NlbnRfYXQYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjgKCWhhbmRzaGFrZRgDIAEoCzIjLmt1c2ludGEuaW90LndlYnJ0Yy52MS5BcHBIYW5kc2hha2VIABI3Cgdjb21tYW5kGAQgASgLMiQua3VzaW50YS5pb3Qud2VicnRjLnYxLkRldmljZUNvbW1hbmRIABJCCgxyZWFkX3JlcXVlc3QYBSABKAsyKi5rdXNpbnRhLmlvdC53ZWJydGMudjEuUHJvcGVydHlSZWFkUmVxdWVzdEgAEisKBHBpbmcYBiABKAsyGy5rdXNpbnRhLmlvdC53ZWJydGMudjEuUGluZ0gAEjwKCXN1YnNjcmliZRgHIAEoCzInLmt1c2ludGEuaW90LndlYnJ0Yy52MS5TdWJzY3JpYmVEZXZpY2VzSAASQAoLdW5zdWJzY3JpYmUYCCABKAsyKS5rdXNpbnRhLmlvdC53ZWJydGMudjEuVW5zdWJzY3JpYmVEZXZpY2VzSAASPgoKbWFuYWdlbWVudBgJIAEoCzIoLmt1c2ludGEuaW90LndlYnJ0Yy52MS5NYW5hZ2VtZW50UmVxdWVzdEgAEkcKD2F0dHJpYnV0ZV93cml0ZRgKIAEoCzIsLmt1c2ludGEuaW90LndlYnJ0Yy52MS5BdHRyaWJ1dGVXcml0ZVJlcXVlc3RIABI8Cg1zdGFydF9wYWlyaW5nGAsgASgLMiMua3VzaW50YS5pb3Qud2VicnRjLnYxLlN0YXJ0UGFpcmluZ0gAQgkKB3BheWxvYWQqogIKEEdhdGV3YXlFcnJvckNvZGUSIgoeR0FURVdBWV9FUlJPUl9DT0RFX1VOU1BFQ0lGSUVEEAASIwofR0FURVdBWV9FUlJPUl9DT0RFX05PVF9FTlRJVExFRBABEiYKIkdBVEVXQVlfRVJST1JfQ09ERV9JTlZBTElEX1JFUVVFU1QQAhIiCh5HQVRFV0FZX0VSUk9SX0NPREVfVU5BVkFJTEFCTEUQAxIfChtHQVRFV0FZX0VSUk9SX0NPREVfSU5URVJOQUwQBBIsCihHQVRFV0FZX0VSUk9SX0NPREVfU0VTU0lPTl9MSU1JVF9SRUFDSEVEEAUSKgomR0FURVdBWV9FUlJPUl9DT0RFX0ZBSUxFRF9QUkVDT05ESVRJT04QBkICSAFiBnByb3RvMw", [file_google_protobuf_timestamp, file_kusinta_iot_access_v1_acl, file_kusinta_iot_climate_v1_climate, file_kusinta_iot_common_v1_pairing, file_kusinta_iot_common_v1_types, file_kusinta_iot_device_v1_device_event, file_kusinta_iot_identity_v1_identity, file_kusinta_iot_link_v1_link, file_kusinta_iot_space_v1_space, file_kusinta_iot_webrtc_v1_command, file_kusinta_iot_webrtc_v1_device_state, file_kusinta_iot_webrtc_v1_invite, file_kusinta_iot_webrtc_v1_management, file_kusinta_iot_webrtc_v1_members, file_kusinta_iot_webrtc_v1_permission_push]);
27
+ fileDesc("CiRrdXNpbnRhL2lvdC93ZWJydGMvdjEvZW52ZWxvcGUucHJvdG8SFWt1c2ludGEuaW90LndlYnJ0Yy52MSIGCgRQaW5nIgYKBFBvbmciIwoRSGFuZHNoYWtlUmVqZWN0ZWQSDgoGcmVhc29uGAEgASgJIlwKDEFwcEhhbmRzaGFrZRILCgNqd3QYASABKAkSPwoUc3Vic2NyaWJlX2RldmljZV9pZHMYAiADKAsyIS5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5EZXZpY2VJZCJJChBTdWJzY3JpYmVEZXZpY2VzEjUKCmRldmljZV9pZHMYASADKAsyIS5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5EZXZpY2VJZCJLChJVbnN1YnNjcmliZURldmljZXMSNQoKZGV2aWNlX2lkcxgBIAMoCzIhLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLkRldmljZUlkIpMBChNSZWZ1c2VkU3Vic2NyaXB0aW9uEjQKCWRldmljZV9pZBgBIAEoCzIhLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLkRldmljZUlkEjUKBGNvZGUYAiABKA4yJy5rdXNpbnRhLmlvdC53ZWJydGMudjEuR2F0ZXdheUVycm9yQ29kZRIPCgdtZXNzYWdlGAMgASgJIpoBCg9TdWJzY3JpcHRpb25BY2sSEwoLaW5fcmVwbHlfdG8YASABKAkSNQoKc3Vic2NyaWJlZBgCIAMoCzIhLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLkRldmljZUlkEjsKB3JlZnVzZWQYAyADKAsyKi5rdXNpbnRhLmlvdC53ZWJydGMudjEuUmVmdXNlZFN1YnNjcmlwdGlvbiLRAQoTUHJvcGVydHlSZWFkUmVxdWVzdBI0CglkZXZpY2VfaWQYASABKAsyIS5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5EZXZpY2VJZBIzCgZ0YXJnZXQYByABKAsyIy5rdXNpbnRhLmlvdC5hY2Nlc3MudjEuQXR0cmlidXRlUmVmSgQIAhAHUg5hdHRyaWJ1dGVfbmFtZVIOY2x1c3Rlcl9pZF9oZXhSCmNsdXN0ZXJfaWRSC2VuZHBvaW50X2lkUhB2ZW5kb3JfZXh0ZW5zaW9uIswBCgxHYXRld2F5RXJyb3ISNQoEY29kZRgBIAEoDjInLmt1c2ludGEuaW90LndlYnJ0Yy52MS5HYXRld2F5RXJyb3JDb2RlEg8KB21lc3NhZ2UYAiABKAkSQwoIbWV0YWRhdGEYAyADKAsyMS5rdXNpbnRhLmlvdC53ZWJydGMudjEuR2F0ZXdheUVycm9yLk1ldGFkYXRhRW50cnkaLwoNTWV0YWRhdGFFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBIt0HChBNYW5hZ2VtZW50UmVzdWx0EhMKC2luX3JlcGx5X3RvGAEgASgJEjQKBWVycm9yGAIgASgLMiMua3VzaW50YS5pb3Qud2VicnRjLnYxLkdhdGV3YXlFcnJvckgAEiwKBXNwYWNlGAMgASgLMhsua3VzaW50YS5pb3Quc3BhY2UudjEuU3BhY2VIABI2CgpzcGFjZV90cmVlGAQgASgLMiAua3VzaW50YS5pb3Qud2VicnRjLnYxLlNwYWNlVHJlZUgAEjMKA2FjaxgFIAEoCzIkLmt1c2ludGEuaW90LndlYnJ0Yy52MS5NYW5hZ2VtZW50QWNrSAASNAoFbGlua3MYBiABKAsyIy5rdXNpbnRhLmlvdC5saW5rLnYxLkRldmljZUxpbmtMaXN0SAASQAoNcm9vbV9jbGltYXRlcxgHIAEoCzInLmt1c2ludGEuaW90LmNsaW1hdGUudjEuUm9vbUNsaW1hdGVMaXN0SAASOwoMcm9vbV9oaXN0b3J5GAggASgLMiMua3VzaW50YS5pb3QuY2xpbWF0ZS52MS5Sb29tSGlzdG9yeUgAEkYKEnByaXZhY3lfZGlzY2xvc3VyZRgJIAEoCzIoLmt1c2ludGEuaW90LndlYnJ0Yy52MS5Qcml2YWN5RGlzY2xvc3VyZUgAElQKGWFwYXJ0bWVudF9jbGltYXRlX3N1bW1hcnkYCiABKAsyLy5rdXNpbnRhLmlvdC5jbGltYXRlLnYxLkFwYXJ0bWVudENsaW1hdGVTdW1tYXJ5SAASPAoNaXNzdWVkX2ludml0ZRgLIAEoCzIjLmt1c2ludGEuaW90LndlYnJ0Yy52MS5Jc3N1ZWRJbnZpdGVIABI8Cg1zcGFjZV9pbnZpdGVzGAwgASgLMiMua3VzaW50YS5pb3Qud2VicnRjLnYxLlNwYWNlSW52aXRlc0gAEkAKD2dhdGV3YXlfbWVtYmVycxgNIAEoCzIlLmt1c2ludGEuaW90LndlYnJ0Yy52MS5HYXRld2F5TWVtYmVyc0gAEkYKEnByb21vdGlvbl9yZXF1ZXN0cxgOIAEoCzIoLmt1c2ludGEuaW90LndlYnJ0Yy52MS5Qcm9tb3Rpb25SZXF1ZXN0c0gAEj8KDmhlYXRpbmdfbGF5b3V0GA8gASgLMiUua3VzaW50YS5pb3QuaGVhdGluZy52MS5IZWF0aW5nTGF5b3V0SAASPwoOaGVhdGluZ19yZWNvcmQYECABKAsyJS5rdXNpbnRhLmlvdC5oZWF0aW5nLnYxLkhlYXRpbmdSZWNvcmRIAEIICgZyZXN1bHQi+wEKDFN0YXJ0UGFpcmluZxI6Cgxjb25uZWN0b3JfaWQYASABKAsyJC5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5Db25uZWN0b3JJZBI0CgZ3aW5kb3cYAiABKAsyJC5rdXNpbnRhLmlvdC5jb21tb24udjEuUGFpcmluZ1dpbmRvdxI6ChBpbml0aWFsX3NwYWNlX2lkGAMgASgLMiAua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuU3BhY2VJZBI9Cglvd25lcnNoaXAYBCABKA4yKi5rdXNpbnRhLmlvdC5jb21tb24udjEuRGV2aWNlT3duZXJzaGlwVHlwZSKPAQoOUGFpcmluZ1N0YXJ0ZWQSEwoLaW5fcmVwbHlfdG8YASABKAkSLgoKZXhwaXJlc19hdBgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASOAoFZXJyb3IYAyABKAsyKS5rdXNpbnRhLmlvdC5jb21tb24udjEuUGFpcmluZ0Vycm9yRGV0YWlsIpcBCg9QYWlyaW5nRmluaXNoZWQSEwoLaW5fcmVwbHlfdG8YASABKAkSNQoKZGV2aWNlX2lkcxgCIAMoCzIhLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLkRldmljZUlkEjgKBWVycm9yGAMgASgLMikua3VzaW50YS5pb3QuY29tbW9uLnYxLlBhaXJpbmdFcnJvckRldGFpbCJNCgtMaW5rQ2hhbmdlZBItCgRsaW5rGAEgASgLMh8ua3VzaW50YS5pb3QubGluay52MS5EZXZpY2VMaW5rEg8KB3JlbW92ZWQYAiABKAgiiAMKE0Nvbm5lY3RvckRlc2NyaXB0b3ISOgoMY29ubmVjdG9yX2lkGAEgASgLMiQua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuQ29ubmVjdG9ySWQSFAoMZGlzcGxheV9uYW1lGAIgASgJEiEKGXN1cHBvcnRlZF9kZXZpY2VfdHlwZV9pZHMYAyADKA0SGAoQc3VwcG9ydHNfcGFpcmluZxgEIAEoCBIdChVzdXBwb3J0c19wcm92aXNpb25pbmcYBSABKAgSFQoNYnJva2Vyc19saW5rcxgGIAEoCBIyCgRraW5kGAcgASgOMiQua3VzaW50YS5pb3QuY29tbW9uLnYxLkNvbm5lY3RvcktpbmQSEwoLZGVzY3JpcHRpb24YCCABKAkSPAoOYmFja2VuZF9oZWFsdGgYCSABKAsyJC5rdXNpbnRhLmlvdC5jb21tb24udjEuQmFja2VuZEhlYWx0aBIlCh1zdXBwb3J0c19iYWNrZW5kX3JlaW5pdGlhbGl6ZRgKIAEoCCJVChNDb25uZWN0b3JzQW5ub3VuY2VkEj4KCmNvbm5lY3RvcnMYASADKAsyKi5rdXNpbnRhLmlvdC53ZWJydGMudjEuQ29ubmVjdG9yRGVzY3JpcHRvciJHChJSb29tQ2xpbWF0ZUNoYW5nZWQSMQoEcm9vbRgBIAEoCzIjLmt1c2ludGEuaW90LmNsaW1hdGUudjEuUm9vbUNsaW1hdGUiVgoSQ2xpbWF0ZU1vZGVDaGFuZ2VkEjEKBG1vZGUYASABKAsyIy5rdXNpbnRhLmlvdC5jbGltYXRlLnYxLkNsaW1hdGVNb2RlEg0KBWVuZGVkGAIgASgIIo4MCg5HYXRld2F5TWVzc2FnZRISCgptZXNzYWdlX2lkGAEgASgJEisKB3NlbnRfYXQYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEkQKDnN0YXRlX3NuYXBzaG90GAMgASgLMioua3VzaW50YS5pb3Qud2VicnRjLnYxLkRldmljZVN0YXRlU25hcHNob3RIABJACg9wcm9wZXJ0eV9yZXBvcnQYBCABKAsyJS5rdXNpbnRhLmlvdC53ZWJydGMudjEuUHJvcGVydHlSZXBvcnRIABJIChFwZXJtaXNzaW9uX3VwZGF0ZRgFIAEoCzIrLmt1c2ludGEuaW90LndlYnJ0Yy52MS5MaXZlUGVybWlzc2lvblVwZGF0ZUgAEj4KDmNvbW1hbmRfcmVzdWx0GAYgASgLMiQua3VzaW50YS5pb3Qud2VicnRjLnYxLkNvbW1hbmRSZXN1bHRIABIrCgRwb25nGAggASgLMhsua3VzaW50YS5pb3Qud2VicnRjLnYxLlBvbmdIABJGChJoYW5kc2hha2VfcmVqZWN0ZWQYCSABKAsyKC5rdXNpbnRhLmlvdC53ZWJydGMudjEuSGFuZHNoYWtlUmVqZWN0ZWRIABI0CgVlcnJvchgKIAEoCzIjLmt1c2ludGEuaW90LndlYnJ0Yy52MS5HYXRld2F5RXJyb3JIABJCChBzdWJzY3JpcHRpb25fYWNrGAsgASgLMiYua3VzaW50YS5pb3Qud2VicnRjLnYxLlN1YnNjcmlwdGlvbkFja0gAEjoKDGRldmljZV9hZGRlZBgMIAEoCzIiLmt1c2ludGEuaW90LndlYnJ0Yy52MS5EZXZpY2VBZGRlZEgAEj4KDmRldmljZV9yZW1vdmVkGA0gASgLMiQua3VzaW50YS5pb3Qud2VicnRjLnYxLkRldmljZVJlbW92ZWRIABJEChFtYW5hZ2VtZW50X3Jlc3VsdBgOIAEoCzInLmt1c2ludGEuaW90LndlYnJ0Yy52MS5NYW5hZ2VtZW50UmVzdWx0SAASQAoNZGV2aWNlX2V2ZW50cxgQIAEoCzInLmt1c2ludGEuaW90LmRldmljZS52MS5EZXZpY2VFdmVudEJhdGNoSAASQAoPcGFpcmluZ19zdGFydGVkGBEgASgLMiUua3VzaW50YS5pb3Qud2VicnRjLnYxLlBhaXJpbmdTdGFydGVkSAASQgoQcGFpcmluZ19maW5pc2hlZBgSIAEoCzImLmt1c2ludGEuaW90LndlYnJ0Yy52MS5QYWlyaW5nRmluaXNoZWRIABI6CgxsaW5rX2NoYW5nZWQYEyABKAsyIi5rdXNpbnRhLmlvdC53ZWJydGMudjEuTGlua0NoYW5nZWRIABJKChRjb25uZWN0b3JzX2Fubm91bmNlZBgUIAEoCzIqLmt1c2ludGEuaW90LndlYnJ0Yy52MS5Db25uZWN0b3JzQW5ub3VuY2VkSAASSQoUcm9vbV9jbGltYXRlX2NoYW5nZWQYFSABKAsyKS5rdXNpbnRhLmlvdC53ZWJydGMudjEuUm9vbUNsaW1hdGVDaGFuZ2VkSAASSQoUY2xpbWF0ZV9tb2RlX2NoYW5nZWQYFiABKAsyKS5rdXNpbnRhLmlvdC53ZWJydGMudjEuQ2xpbWF0ZU1vZGVDaGFuZ2VkSAASTQoWc2VydmljZV9zdGF0dXNfY2hhbmdlZBgXIAEoCzIrLmt1c2ludGEuaW90LndlYnJ0Yy52MS5TZXJ2aWNlU3RhdHVzQ2hhbmdlZEgAEjwKDXNwYWNlX2ludml0ZXMYGCABKAsyIy5rdXNpbnRhLmlvdC53ZWJydGMudjEuU3BhY2VJbnZpdGVzSAASRgoScHJvbW90aW9uX3JlcXVlc3RzGBkgASgLMigua3VzaW50YS5pb3Qud2VicnRjLnYxLlByb21vdGlvblJlcXVlc3RzSABCCQoHcGF5bG9hZEoECA8QEEoECAcQCFIWYXR0cmlidXRlX3dyaXRlX3Jlc3VsdFIOcHJvcGVydHlfZXZlbnQigwUKCkFwcE1lc3NhZ2USEgoKbWVzc2FnZV9pZBgBIAEoCRIrCgdzZW50X2F0GAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBI4CgloYW5kc2hha2UYAyABKAsyIy5rdXNpbnRhLmlvdC53ZWJydGMudjEuQXBwSGFuZHNoYWtlSAASNwoHY29tbWFuZBgEIAEoCzIkLmt1c2ludGEuaW90LndlYnJ0Yy52MS5EZXZpY2VDb21tYW5kSAASQgoMcmVhZF9yZXF1ZXN0GAUgASgLMioua3VzaW50YS5pb3Qud2VicnRjLnYxLlByb3BlcnR5UmVhZFJlcXVlc3RIABIrCgRwaW5nGAYgASgLMhsua3VzaW50YS5pb3Qud2VicnRjLnYxLlBpbmdIABI8CglzdWJzY3JpYmUYByABKAsyJy5rdXNpbnRhLmlvdC53ZWJydGMudjEuU3Vic2NyaWJlRGV2aWNlc0gAEkAKC3Vuc3Vic2NyaWJlGAggASgLMikua3VzaW50YS5pb3Qud2VicnRjLnYxLlVuc3Vic2NyaWJlRGV2aWNlc0gAEj4KCm1hbmFnZW1lbnQYCSABKAsyKC5rdXNpbnRhLmlvdC53ZWJydGMudjEuTWFuYWdlbWVudFJlcXVlc3RIABJHCg9hdHRyaWJ1dGVfd3JpdGUYCiABKAsyLC5rdXNpbnRhLmlvdC53ZWJydGMudjEuQXR0cmlidXRlV3JpdGVSZXF1ZXN0SAASPAoNc3RhcnRfcGFpcmluZxgLIAEoCzIjLmt1c2ludGEuaW90LndlYnJ0Yy52MS5TdGFydFBhaXJpbmdIAEIJCgdwYXlsb2FkKqICChBHYXRld2F5RXJyb3JDb2RlEiIKHkdBVEVXQVlfRVJST1JfQ09ERV9VTlNQRUNJRklFRBAAEiMKH0dBVEVXQVlfRVJST1JfQ09ERV9OT1RfRU5USVRMRUQQARImCiJHQVRFV0FZX0VSUk9SX0NPREVfSU5WQUxJRF9SRVFVRVNUEAISIgoeR0FURVdBWV9FUlJPUl9DT0RFX1VOQVZBSUxBQkxFEAMSHwobR0FURVdBWV9FUlJPUl9DT0RFX0lOVEVSTkFMEAQSLAooR0FURVdBWV9FUlJPUl9DT0RFX1NFU1NJT05fTElNSVRfUkVBQ0hFRBAFEioKJkdBVEVXQVlfRVJST1JfQ09ERV9GQUlMRURfUFJFQ09ORElUSU9OEAZCAkgBYgZwcm90bzM", [file_google_protobuf_timestamp, file_kusinta_iot_access_v1_acl, file_kusinta_iot_climate_v1_climate, file_kusinta_iot_common_v1_pairing, file_kusinta_iot_common_v1_types, file_kusinta_iot_device_v1_device_event, file_kusinta_iot_heating_v1_heating, file_kusinta_iot_identity_v1_identity, file_kusinta_iot_link_v1_link, file_kusinta_iot_space_v1_space, file_kusinta_iot_webrtc_v1_command, file_kusinta_iot_webrtc_v1_device_state, file_kusinta_iot_webrtc_v1_invite, file_kusinta_iot_webrtc_v1_management, file_kusinta_iot_webrtc_v1_members, file_kusinta_iot_webrtc_v1_permission_push]);
27
28
 
28
29
  /**
29
30
  * Describes the message kusinta.iot.webrtc.v1.Ping.
@@ -13,6 +13,7 @@ import type { LinkFunction, LinkMode, LinkSettings } from "../../link/v1/link_pb
13
13
  import type { ClimateModeKind, ClimateSummaryPeriod } from "../../climate/v1/climate_pb.js";
14
14
  import type { Timestamp } from "@bufbuild/protobuf/wkt";
15
15
  import type { ServiceSignal } from "../../access/v1/acl_pb.js";
16
+ import type { ComfortLoad, ComfortWindow, FloorZone, HeatingCircuit, HeatingPlant } from "../../heating/v1/heating_pb.js";
16
17
  import type { ApproveJoinRequest, CreateInvite, DenyJoinRequest, ListSpaceInvites, MarkInviteEmailSent, ResendInvite, RevokeInvite } from "./invite_pb.js";
17
18
  import type { AnswerPromotion, ListGatewayMembers, ListPromotionRequests, RemoveFromGateway, RequestPromotion, SetAccessUntil, SetMemberRole, SetOwnerOrganisation } from "./members_pb.js";
18
19
 
@@ -1198,6 +1199,194 @@ export declare type ReconnectConnector = Message<"kusinta.iot.webrtc.v1.Reconnec
1198
1199
  */
1199
1200
  export declare const ReconnectConnectorSchema: GenMessage<ReconnectConnector>;
1200
1201
 
1202
+ /**
1203
+ * Lists the heating records (heating.v1) a caller may see under a space: unset
1204
+ * root_space_id lists every one the caller can reach. Answered with a HeatingLayout.
1205
+ *
1206
+ * @generated from message kusinta.iot.webrtc.v1.ListHeating
1207
+ */
1208
+ export declare type ListHeating = Message<"kusinta.iot.webrtc.v1.ListHeating"> & {
1209
+ /**
1210
+ * @generated from field: kusinta.iot.identity.v1.SpaceId root_space_id = 1;
1211
+ */
1212
+ rootSpaceId?: SpaceId | undefined;
1213
+ };
1214
+
1215
+ /**
1216
+ * Describes the message kusinta.iot.webrtc.v1.ListHeating.
1217
+ * Use `create(ListHeatingSchema)` to create a new message.
1218
+ */
1219
+ export declare const ListHeatingSchema: GenMessage<ListHeating>;
1220
+
1221
+ /**
1222
+ * Creates a plant (empty plant_id) or replaces one. Answered with the HeatingRecord as
1223
+ * stored. The puts of heating records refuse, with metadata "reason":
1224
+ *
1225
+ * INVALID_REQUEST
1226
+ * "ZONE_CONTROL_ROOM" a floor zone whose control room is unset or not one of its rooms.
1227
+ * "ZONE_ROOMS_ACROSS_HOMES" a floor zone with rooms in two homes, or in a home and outside
1228
+ * homes.
1229
+ * "ZONE_AREA_SHARES" a floor zone with a room listed twice, a share of 0, or shares
1230
+ * that do not sum to 1000.
1231
+ * "ROOM_OUTSIDE_PLANT" a zone room outside its plant's space; metadata "room_id" names it.
1232
+ * "ZONE_NOT_ON_FLOOR" a floor zone on a circuit that is not a floor circuit.
1233
+ * "SG_READY_HALF_BOUND" one SG Ready input bound without the other.
1234
+ * "CONTROL_EMPTY" a plant control that binds no input.
1235
+ * "NO_ENDPOINT" an attribute on the Matter branch with no endpoint_id.
1236
+ * "WINDOWS_IN_PUT" a comfort load put with windows (see SetComfortWindows).
1237
+ *
1238
+ * FAILED_PRECONDITION
1239
+ * "STALE_REVISION" the record changed since the revision the request names.
1240
+ * "CHILDREN_INVALID" a plant or circuit put that would leave a record under it
1241
+ * invalid: a circuit with zones no longer a floor circuit, or a
1242
+ * space or plant change leaving a zone's room outside its plant.
1243
+ * "OUTPUT_BOUND_TWICE" an output already bound in another role or record.
1244
+ * "OUTPUT_NOT_LEASED" an output whose write its producer does not state as leased.
1245
+ * "REST_STATE" an output whose lapse value, read through closed_value, does not
1246
+ * leave the contact where its role rests.
1247
+ *
1248
+ * A refusal about one binding names it in metadata "field", by its proto field name:
1249
+ * "sg_ready_block", "sg_ready_boost", "add_on_heater_block", "meter", "output",
1250
+ * "supply_probe", "return_probe".
1251
+ *
1252
+ * A device or room the caller cannot reach, a parent it may not use (see heating.v1) and an
1253
+ * id that does not exist are all refused as NOT_ENTITLED with the same metadata, so no answer
1254
+ * tells one from another. HAS_CHILDREN, CHILDREN_INVALID and OUTPUT_BOUND_TWICE may count
1255
+ * records the caller cannot see — a zone in a home under a circuit outside it. That one bit
1256
+ * is accepted, as it is for the members listing; their metadata never names or counts such
1257
+ * a record.
1258
+ *
1259
+ * @generated from message kusinta.iot.webrtc.v1.PutHeatingPlant
1260
+ */
1261
+ export declare type PutHeatingPlant = Message<"kusinta.iot.webrtc.v1.PutHeatingPlant"> & {
1262
+ /**
1263
+ * @generated from field: kusinta.iot.heating.v1.HeatingPlant plant = 1;
1264
+ */
1265
+ plant?: HeatingPlant | undefined;
1266
+ };
1267
+
1268
+ /**
1269
+ * Describes the message kusinta.iot.webrtc.v1.PutHeatingPlant.
1270
+ * Use `create(PutHeatingPlantSchema)` to create a new message.
1271
+ */
1272
+ export declare const PutHeatingPlantSchema: GenMessage<PutHeatingPlant>;
1273
+
1274
+ /**
1275
+ * Creates or replaces a circuit of a plant; as PutHeatingPlant.
1276
+ *
1277
+ * @generated from message kusinta.iot.webrtc.v1.PutHeatingCircuit
1278
+ */
1279
+ export declare type PutHeatingCircuit = Message<"kusinta.iot.webrtc.v1.PutHeatingCircuit"> & {
1280
+ /**
1281
+ * @generated from field: kusinta.iot.heating.v1.HeatingCircuit circuit = 1;
1282
+ */
1283
+ circuit?: HeatingCircuit | undefined;
1284
+ };
1285
+
1286
+ /**
1287
+ * Describes the message kusinta.iot.webrtc.v1.PutHeatingCircuit.
1288
+ * Use `create(PutHeatingCircuitSchema)` to create a new message.
1289
+ */
1290
+ export declare const PutHeatingCircuitSchema: GenMessage<PutHeatingCircuit>;
1291
+
1292
+ /**
1293
+ * Creates or replaces a floor zone of a floor circuit; as PutHeatingPlant.
1294
+ *
1295
+ * @generated from message kusinta.iot.webrtc.v1.PutFloorZone
1296
+ */
1297
+ export declare type PutFloorZone = Message<"kusinta.iot.webrtc.v1.PutFloorZone"> & {
1298
+ /**
1299
+ * @generated from field: kusinta.iot.heating.v1.FloorZone zone = 1;
1300
+ */
1301
+ zone?: FloorZone | undefined;
1302
+ };
1303
+
1304
+ /**
1305
+ * Describes the message kusinta.iot.webrtc.v1.PutFloorZone.
1306
+ * Use `create(PutFloorZoneSchema)` to create a new message.
1307
+ */
1308
+ export declare const PutFloorZoneSchema: GenMessage<PutFloorZone>;
1309
+
1310
+ /**
1311
+ * Creates or replaces a comfort load's room, name and output, keeping its windows; as
1312
+ * PutHeatingPlant.
1313
+ *
1314
+ * @generated from message kusinta.iot.webrtc.v1.PutComfortLoad
1315
+ */
1316
+ export declare type PutComfortLoad = Message<"kusinta.iot.webrtc.v1.PutComfortLoad"> & {
1317
+ /**
1318
+ * @generated from field: kusinta.iot.heating.v1.ComfortLoad comfort_load = 1;
1319
+ */
1320
+ comfortLoad?: ComfortLoad | undefined;
1321
+ };
1322
+
1323
+ /**
1324
+ * Describes the message kusinta.iot.webrtc.v1.PutComfortLoad.
1325
+ * Use `create(PutComfortLoadSchema)` to create a new message.
1326
+ */
1327
+ export declare const PutComfortLoadSchema: GenMessage<PutComfortLoad>;
1328
+
1329
+ /**
1330
+ * Removes a heating record by its id, naming the revision it removes. Refused as
1331
+ * FAILED_PRECONDITION with metadata "reason" "STALE_REVISION" when it changed since, and
1332
+ * "HAS_CHILDREN" while records lie under it — a plant's circuits, a circuit's zones — so
1333
+ * nothing is removed that the caller did not name. Its outputs are returned to rest at once
1334
+ * (see heating.v1). Acked.
1335
+ *
1336
+ * @generated from message kusinta.iot.webrtc.v1.RemoveHeatingRecord
1337
+ */
1338
+ export declare type RemoveHeatingRecord = Message<"kusinta.iot.webrtc.v1.RemoveHeatingRecord"> & {
1339
+ /**
1340
+ * @generated from field: string id = 1;
1341
+ */
1342
+ id: string;
1343
+
1344
+ /**
1345
+ * @generated from field: uint64 revision = 2;
1346
+ */
1347
+ revision: bigint;
1348
+ };
1349
+
1350
+ /**
1351
+ * Describes the message kusinta.iot.webrtc.v1.RemoveHeatingRecord.
1352
+ * Use `create(RemoveHeatingRecordSchema)` to create a new message.
1353
+ */
1354
+ export declare const RemoveHeatingRecordSchema: GenMessage<RemoveHeatingRecord>;
1355
+
1356
+ /**
1357
+ * Replaces a comfort load's windows: a resident's setting, apart from the binding and its
1358
+ * revision. Answered with the HeatingRecord as stored. Refused as FAILED_PRECONDITION
1359
+ * "STALE_REVISION" when windows_revision is set and the windows changed since, and as
1360
+ * INVALID_REQUEST "WINDOW" for a window that ComfortWindow does not allow or more than 16.
1361
+ * From an installer under a commissioning grant, NOT_ENTITLED.
1362
+ *
1363
+ * @generated from message kusinta.iot.webrtc.v1.SetComfortWindows
1364
+ */
1365
+ export declare type SetComfortWindows = Message<"kusinta.iot.webrtc.v1.SetComfortWindows"> & {
1366
+ /**
1367
+ * @generated from field: string comfort_load_id = 1;
1368
+ */
1369
+ comfortLoadId: string;
1370
+
1371
+ /**
1372
+ * @generated from field: repeated kusinta.iot.heating.v1.ComfortWindow windows = 2;
1373
+ */
1374
+ windows: ComfortWindow[];
1375
+
1376
+ /**
1377
+ * The ComfortLoad.windows_revision these windows replace. Unset: whatever is stored.
1378
+ *
1379
+ * @generated from field: optional uint64 windows_revision = 3;
1380
+ */
1381
+ windowsRevision?: bigint | undefined;
1382
+ };
1383
+
1384
+ /**
1385
+ * Describes the message kusinta.iot.webrtc.v1.SetComfortWindows.
1386
+ * Use `create(SetComfortWindowsSchema)` to create a new message.
1387
+ */
1388
+ export declare const SetComfortWindowsSchema: GenMessage<SetComfortWindows>;
1389
+
1201
1390
  /**
1202
1391
  * @generated from message kusinta.iot.webrtc.v1.ManagementRequest
1203
1392
  */
@@ -1442,6 +1631,50 @@ export declare type ManagementRequest = Message<"kusinta.iot.webrtc.v1.Managemen
1442
1631
  */
1443
1632
  value: ListPromotionRequests;
1444
1633
  case: "listPromotionRequests";
1634
+ } | {
1635
+ /**
1636
+ * Heating records; see heating.v1.
1637
+ *
1638
+ * @generated from field: kusinta.iot.webrtc.v1.ListHeating list_heating = 39;
1639
+ */
1640
+ value: ListHeating;
1641
+ case: "listHeating";
1642
+ } | {
1643
+ /**
1644
+ * @generated from field: kusinta.iot.webrtc.v1.PutHeatingPlant put_heating_plant = 40;
1645
+ */
1646
+ value: PutHeatingPlant;
1647
+ case: "putHeatingPlant";
1648
+ } | {
1649
+ /**
1650
+ * @generated from field: kusinta.iot.webrtc.v1.PutHeatingCircuit put_heating_circuit = 41;
1651
+ */
1652
+ value: PutHeatingCircuit;
1653
+ case: "putHeatingCircuit";
1654
+ } | {
1655
+ /**
1656
+ * @generated from field: kusinta.iot.webrtc.v1.PutFloorZone put_floor_zone = 42;
1657
+ */
1658
+ value: PutFloorZone;
1659
+ case: "putFloorZone";
1660
+ } | {
1661
+ /**
1662
+ * @generated from field: kusinta.iot.webrtc.v1.PutComfortLoad put_comfort_load = 43;
1663
+ */
1664
+ value: PutComfortLoad;
1665
+ case: "putComfortLoad";
1666
+ } | {
1667
+ /**
1668
+ * @generated from field: kusinta.iot.webrtc.v1.RemoveHeatingRecord remove_heating_record = 44;
1669
+ */
1670
+ value: RemoveHeatingRecord;
1671
+ case: "removeHeatingRecord";
1672
+ } | {
1673
+ /**
1674
+ * @generated from field: kusinta.iot.webrtc.v1.SetComfortWindows set_comfort_windows = 45;
1675
+ */
1676
+ value: SetComfortWindows;
1677
+ case: "setComfortWindows";
1445
1678
  } | { case: undefined; value?: undefined };
1446
1679
  };
1447
1680