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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (53) hide show
  1. package/package.json +19 -2
  2. package/src/kusinta/iot/access/v1/acl_pb.d.ts +230 -11
  3. package/src/kusinta/iot/access/v1/acl_pb.js +26 -5
  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/common/v1/pairing_pb.d.ts +201 -0
  7. package/src/kusinta/iot/common/v1/pairing_pb.js +50 -0
  8. package/src/kusinta/iot/connector/v1/connector_pb.d.ts +481 -34
  9. package/src/kusinta/iot/connector/v1/connector_pb.js +81 -22
  10. package/src/kusinta/iot/connector/v1/connector_service_pb.d.ts +5 -5
  11. package/src/kusinta/iot/connector/v1/connector_service_pb.js +1 -1
  12. package/src/kusinta/iot/device/v1/cluster_state_pb.d.ts +263 -0
  13. package/src/kusinta/iot/device/v1/cluster_state_pb.js +54 -0
  14. package/src/kusinta/iot/device/v1/descriptor_pb.d.ts +53 -9
  15. package/src/kusinta/iot/device/v1/descriptor_pb.js +3 -1
  16. package/src/kusinta/iot/device/v1/device_event_pb.d.ts +162 -0
  17. package/src/kusinta/iot/device/v1/device_event_pb.js +45 -0
  18. package/src/kusinta/iot/device/v1/device_pb.d.ts +185 -28
  19. package/src/kusinta/iot/device/v1/device_pb.js +10 -2
  20. package/src/kusinta/iot/device/v1/matter_options_pb.d.ts +110 -0
  21. package/src/kusinta/iot/device/v1/matter_options_pb.js +118 -0
  22. package/src/kusinta/iot/device/v1/properties_pb.d.ts +240 -205
  23. package/src/kusinta/iot/device/v1/properties_pb.js +9 -1
  24. package/src/kusinta/iot/device/v1/property_update_pb.d.ts +197 -8
  25. package/src/kusinta/iot/device/v1/property_update_pb.js +20 -2
  26. package/src/kusinta/iot/link/v1/link_pb.d.ts +419 -0
  27. package/src/kusinta/iot/link/v1/link_pb.js +121 -0
  28. package/src/kusinta/iot/registration/v1/registration_pb.d.ts +170 -0
  29. package/src/kusinta/iot/registration/v1/registration_pb.js +61 -0
  30. package/src/kusinta/iot/registration/v1/registration_service_pb.d.ts +34 -0
  31. package/src/kusinta/iot/registration/v1/registration_service_pb.js +19 -0
  32. package/src/kusinta/iot/signaling/v1/signaling_pb.d.ts +320 -0
  33. package/src/kusinta/iot/signaling/v1/signaling_pb.js +83 -0
  34. package/src/kusinta/iot/signaling/v1/signaling_service_pb.d.ts +34 -0
  35. package/src/kusinta/iot/signaling/v1/signaling_service_pb.js +19 -0
  36. package/src/kusinta/iot/vendor/homematic/v1/homematic_pb.d.ts +202 -35
  37. package/src/kusinta/iot/vendor/homematic/v1/homematic_pb.js +14 -6
  38. package/src/kusinta/iot/vendor/v1/vendor_options_pb.d.ts +71 -0
  39. package/src/kusinta/iot/vendor/v1/vendor_options_pb.js +75 -0
  40. package/src/kusinta/iot/webrtc/v1/app_token_pb.d.ts +152 -0
  41. package/src/kusinta/iot/webrtc/v1/app_token_pb.js +28 -0
  42. package/src/kusinta/iot/webrtc/v1/command_pb.d.ts +277 -39
  43. package/src/kusinta/iot/webrtc/v1/command_pb.js +29 -2
  44. package/src/kusinta/iot/webrtc/v1/device_state_pb.d.ts +76 -7
  45. package/src/kusinta/iot/webrtc/v1/device_state_pb.js +20 -5
  46. package/src/kusinta/iot/webrtc/v1/envelope_pb.d.ts +603 -25
  47. package/src/kusinta/iot/webrtc/v1/envelope_pb.js +99 -5
  48. package/src/kusinta/iot/webrtc/v1/management_pb.d.ts +627 -0
  49. package/src/kusinta/iot/webrtc/v1/management_pb.js +135 -0
  50. package/src/kusinta/iot/webrtc/v1/permission_push_pb.d.ts +7 -1
  51. package/src/kusinta/iot/webrtc/v1/permission_push_pb.js +2 -2
  52. package/src/kusinta/iot/webrtc/v1/setpoint_mode_pb.d.ts +63 -0
  53. package/src/kusinta/iot/webrtc/v1/setpoint_mode_pb.js +45 -0
@@ -0,0 +1,627 @@
1
+ // @generated by protoc-gen-es v2.12.0 with parameter "target=js+dts,import_extension=js"
2
+ // @generated from file kusinta/iot/webrtc/v1/management.proto (package kusinta.iot.webrtc.v1, syntax proto3)
3
+ /* eslint-disable */
4
+
5
+ import type { GenFile, GenMessage } from "@bufbuild/protobuf/codegenv2";
6
+ import type { Message } from "@bufbuild/protobuf";
7
+ import type { DeviceOwnershipType, SpaceType } from "../../common/v1/types_pb.js";
8
+ import type { DeviceId, SpaceId, UserId } from "../../identity/v1/identity_pb.js";
9
+ import type { Space } from "../../space/v1/space_pb.js";
10
+ import type { LinkFunction, LinkMode, LinkSettings } from "../../link/v1/link_pb.js";
11
+
12
+ /**
13
+ * Describes the file kusinta/iot/webrtc/v1/management.proto.
14
+ */
15
+ export declare const file_kusinta_iot_webrtc_v1_management: GenFile;
16
+
17
+ /**
18
+ * Creates a space. A space with no parent_space_id is top level, which is a
19
+ * stronger request than it looks: there is no parent whose reach could authorize
20
+ * it, so it is reserved to the gateway's administrator.
21
+ *
22
+ * @generated from message kusinta.iot.webrtc.v1.CreateSpace
23
+ */
24
+ export declare type CreateSpace = Message<"kusinta.iot.webrtc.v1.CreateSpace"> & {
25
+ /**
26
+ * @generated from field: kusinta.iot.common.v1.SpaceType space_type = 1;
27
+ */
28
+ spaceType: SpaceType;
29
+
30
+ /**
31
+ * @generated from field: string name = 2;
32
+ */
33
+ name: string;
34
+
35
+ /**
36
+ * @generated from field: string description = 3;
37
+ */
38
+ description: string;
39
+
40
+ /**
41
+ * meaningful for FLOOR type
42
+ *
43
+ * @generated from field: int32 floor = 4;
44
+ */
45
+ floor: number;
46
+
47
+ /**
48
+ * unset = top level
49
+ *
50
+ * @generated from field: kusinta.iot.identity.v1.SpaceId parent_space_id = 5;
51
+ */
52
+ parentSpaceId?: SpaceId | undefined;
53
+ };
54
+
55
+ /**
56
+ * Describes the message kusinta.iot.webrtc.v1.CreateSpace.
57
+ * Use `create(CreateSpaceSchema)` to create a new message.
58
+ */
59
+ export declare const CreateSpaceSchema: GenMessage<CreateSpace>;
60
+
61
+ /**
62
+ * Changes a space in place. Every descriptive field carries explicit presence:
63
+ * absent means leave it alone, present means set it to this — including to the
64
+ * empty string, which is how a description is cleared.
65
+ *
66
+ * @generated from message kusinta.iot.webrtc.v1.UpdateSpace
67
+ */
68
+ export declare type UpdateSpace = Message<"kusinta.iot.webrtc.v1.UpdateSpace"> & {
69
+ /**
70
+ * @generated from field: kusinta.iot.identity.v1.SpaceId space_id = 1;
71
+ */
72
+ spaceId?: SpaceId | undefined;
73
+
74
+ /**
75
+ * @generated from field: optional kusinta.iot.common.v1.SpaceType space_type = 2;
76
+ */
77
+ spaceType?: SpaceType | undefined;
78
+
79
+ /**
80
+ * @generated from field: optional string name = 3;
81
+ */
82
+ name?: string | undefined;
83
+
84
+ /**
85
+ * @generated from field: optional string description = 4;
86
+ */
87
+ description?: string | undefined;
88
+
89
+ /**
90
+ * @generated from field: optional int32 floor = 5;
91
+ */
92
+ floor?: number | undefined;
93
+
94
+ /**
95
+ * Reparenting needs three states, not two: leave the parent alone, move to a
96
+ * new one, or become top level. A bare optional parent_space_id can only
97
+ * express the first two, so detaching gets its own case rather than being
98
+ * spelled as an empty id.
99
+ *
100
+ * @generated from oneof kusinta.iot.webrtc.v1.UpdateSpace.parent_change
101
+ */
102
+ parentChange: {
103
+ /**
104
+ * @generated from field: kusinta.iot.identity.v1.SpaceId parent_space_id = 6;
105
+ */
106
+ value: SpaceId;
107
+ case: "parentSpaceId";
108
+ } | {
109
+ /**
110
+ * @generated from field: bool detach = 7;
111
+ */
112
+ value: boolean;
113
+ case: "detach";
114
+ } | { case: undefined; value?: undefined };
115
+ };
116
+
117
+ /**
118
+ * Describes the message kusinta.iot.webrtc.v1.UpdateSpace.
119
+ * Use `create(UpdateSpaceSchema)` to create a new message.
120
+ */
121
+ export declare const UpdateSpaceSchema: GenMessage<UpdateSpace>;
122
+
123
+ /**
124
+ * Deletes a space. Refused if the space still holds devices or sub-spaces unless
125
+ * cascade is set, so that emptying a building is always something the caller
126
+ * asked for rather than something a stale client did by accident.
127
+ *
128
+ * @generated from message kusinta.iot.webrtc.v1.DeleteSpace
129
+ */
130
+ export declare type DeleteSpace = Message<"kusinta.iot.webrtc.v1.DeleteSpace"> & {
131
+ /**
132
+ * @generated from field: kusinta.iot.identity.v1.SpaceId space_id = 1;
133
+ */
134
+ spaceId?: SpaceId | undefined;
135
+
136
+ /**
137
+ * @generated from field: bool cascade = 2;
138
+ */
139
+ cascade: boolean;
140
+ };
141
+
142
+ /**
143
+ * Describes the message kusinta.iot.webrtc.v1.DeleteSpace.
144
+ * Use `create(DeleteSpaceSchema)` to create a new message.
145
+ */
146
+ export declare const DeleteSpaceSchema: GenMessage<DeleteSpace>;
147
+
148
+ /**
149
+ * Adds a user to a space, granting them reach of it and everything beneath it.
150
+ * The user need not be known to the gateway beforehand — identities are minted by
151
+ * the token issuer, and this records that one of them belongs here.
152
+ *
153
+ * @generated from message kusinta.iot.webrtc.v1.AssignUserToSpace
154
+ */
155
+ export declare type AssignUserToSpace = Message<"kusinta.iot.webrtc.v1.AssignUserToSpace"> & {
156
+ /**
157
+ * @generated from field: kusinta.iot.identity.v1.SpaceId space_id = 1;
158
+ */
159
+ spaceId?: SpaceId | undefined;
160
+
161
+ /**
162
+ * @generated from field: kusinta.iot.identity.v1.UserId user_id = 2;
163
+ */
164
+ userId?: UserId | undefined;
165
+ };
166
+
167
+ /**
168
+ * Describes the message kusinta.iot.webrtc.v1.AssignUserToSpace.
169
+ * Use `create(AssignUserToSpaceSchema)` to create a new message.
170
+ */
171
+ export declare const AssignUserToSpaceSchema: GenMessage<AssignUserToSpace>;
172
+
173
+ /**
174
+ * Removes a user's membership of a space. Losing reach also drops whatever the
175
+ * user was streaming from it, announced by LivePermissionUpdate.
176
+ *
177
+ * @generated from message kusinta.iot.webrtc.v1.RemoveUserFromSpace
178
+ */
179
+ export declare type RemoveUserFromSpace = Message<"kusinta.iot.webrtc.v1.RemoveUserFromSpace"> & {
180
+ /**
181
+ * @generated from field: kusinta.iot.identity.v1.SpaceId space_id = 1;
182
+ */
183
+ spaceId?: SpaceId | undefined;
184
+
185
+ /**
186
+ * @generated from field: kusinta.iot.identity.v1.UserId user_id = 2;
187
+ */
188
+ userId?: UserId | undefined;
189
+ };
190
+
191
+ /**
192
+ * Describes the message kusinta.iot.webrtc.v1.RemoveUserFromSpace.
193
+ * Use `create(RemoveUserFromSpaceSchema)` to create a new message.
194
+ */
195
+ export declare const RemoveUserFromSpaceSchema: GenMessage<RemoveUserFromSpace>;
196
+
197
+ /**
198
+ * Files a device into a space. A device may sit in several spaces at once; this
199
+ * is additive, and filing a device where it already sits is a no-op.
200
+ *
201
+ * @generated from message kusinta.iot.webrtc.v1.PlaceDeviceInSpace
202
+ */
203
+ export declare type PlaceDeviceInSpace = Message<"kusinta.iot.webrtc.v1.PlaceDeviceInSpace"> & {
204
+ /**
205
+ * @generated from field: kusinta.iot.identity.v1.DeviceId device_id = 1;
206
+ */
207
+ deviceId?: DeviceId | undefined;
208
+
209
+ /**
210
+ * @generated from field: kusinta.iot.identity.v1.SpaceId space_id = 2;
211
+ */
212
+ spaceId?: SpaceId | undefined;
213
+ };
214
+
215
+ /**
216
+ * Describes the message kusinta.iot.webrtc.v1.PlaceDeviceInSpace.
217
+ * Use `create(PlaceDeviceInSpaceSchema)` to create a new message.
218
+ */
219
+ export declare const PlaceDeviceInSpaceSchema: GenMessage<PlaceDeviceInSpace>;
220
+
221
+ /**
222
+ * Takes a device out of one space, leaving any others intact. A device in no
223
+ * space and with no owner is unfiled, and visible only to the administrator.
224
+ *
225
+ * @generated from message kusinta.iot.webrtc.v1.RemoveDeviceFromSpace
226
+ */
227
+ export declare type RemoveDeviceFromSpace = Message<"kusinta.iot.webrtc.v1.RemoveDeviceFromSpace"> & {
228
+ /**
229
+ * @generated from field: kusinta.iot.identity.v1.DeviceId device_id = 1;
230
+ */
231
+ deviceId?: DeviceId | undefined;
232
+
233
+ /**
234
+ * @generated from field: kusinta.iot.identity.v1.SpaceId space_id = 2;
235
+ */
236
+ spaceId?: SpaceId | undefined;
237
+ };
238
+
239
+ /**
240
+ * Describes the message kusinta.iot.webrtc.v1.RemoveDeviceFromSpace.
241
+ * Use `create(RemoveDeviceFromSpaceSchema)` to create a new message.
242
+ */
243
+ export declare const RemoveDeviceFromSpaceSchema: GenMessage<RemoveDeviceFromSpace>;
244
+
245
+ /**
246
+ * Takes ownership of a device. Ownership is reach in its own right: an owner may
247
+ * see and control their device whatever their gateway-wide role permits, and may
248
+ * file it into spaces they belong to.
249
+ *
250
+ * @generated from message kusinta.iot.webrtc.v1.ClaimDevice
251
+ */
252
+ export declare type ClaimDevice = Message<"kusinta.iot.webrtc.v1.ClaimDevice"> & {
253
+ /**
254
+ * @generated from field: kusinta.iot.identity.v1.DeviceId device_id = 1;
255
+ */
256
+ deviceId?: DeviceId | undefined;
257
+
258
+ /**
259
+ * @generated from field: kusinta.iot.common.v1.DeviceOwnershipType ownership = 2;
260
+ */
261
+ ownership: DeviceOwnershipType;
262
+
263
+ /**
264
+ * @generated from field: kusinta.iot.identity.v1.SpaceId initial_space_id = 3;
265
+ */
266
+ initialSpaceId?: SpaceId | undefined;
267
+
268
+ /**
269
+ * Evidence the claimant is standing at the device: the identifier printed on it,
270
+ * matched against DeviceDescriptor.serial_number.
271
+ *
272
+ * The match is by SUFFIX, because what a connector announces is not always the whole
273
+ * of what is printed and the announced value is commonly the tail of the printed one.
274
+ * Both sides are normalised first — lowercased, with whitespace and ASCII hyphens
275
+ * removed, since a label prints the value in groups and a scan does not — and the proof
276
+ * is accepted when what remains ends with the announced serial. Spelled out because two
277
+ * gateways normalising differently would accept different proofs for the same device.
278
+ *
279
+ * A serial shorter than eight characters cannot be proved at all: under a suffix rule a
280
+ * short one is proved by almost anything ending with it. Required precisely when the
281
+ * caller cannot already reach the device, which is the ordinary case for a
282
+ * resident claiming something they just bought — an unfiled device is invisible
283
+ * to them, so possession is the only thing left that can distinguish them from
284
+ * someone guessing ids. The administrator, who can already reach it, needs no
285
+ * proof. A device whose connector reports no serial can only be claimed by the
286
+ * administrator.
287
+ *
288
+ * @generated from field: string possession_proof = 4;
289
+ */
290
+ possessionProof: string;
291
+ };
292
+
293
+ /**
294
+ * Describes the message kusinta.iot.webrtc.v1.ClaimDevice.
295
+ * Use `create(ClaimDeviceSchema)` to create a new message.
296
+ */
297
+ export declare const ClaimDeviceSchema: GenMessage<ClaimDevice>;
298
+
299
+ /**
300
+ * Gives up ownership. The device keeps whatever space filing it has; if it has
301
+ * none it becomes unfiled.
302
+ *
303
+ * @generated from message kusinta.iot.webrtc.v1.ReleaseDevice
304
+ */
305
+ export declare type ReleaseDevice = Message<"kusinta.iot.webrtc.v1.ReleaseDevice"> & {
306
+ /**
307
+ * @generated from field: kusinta.iot.identity.v1.DeviceId device_id = 1;
308
+ */
309
+ deviceId?: DeviceId | undefined;
310
+ };
311
+
312
+ /**
313
+ * Describes the message kusinta.iot.webrtc.v1.ReleaseDevice.
314
+ * Use `create(ReleaseDeviceSchema)` to create a new message.
315
+ */
316
+ export declare const ReleaseDeviceSchema: GenMessage<ReleaseDevice>;
317
+
318
+ /**
319
+ * Asks for the spaces the caller can reach. Unset root_space_id means all of
320
+ * them, which for most users is one apartment and for an administrator is the
321
+ * building.
322
+ *
323
+ * @generated from message kusinta.iot.webrtc.v1.ListSpaces
324
+ */
325
+ export declare type ListSpaces = Message<"kusinta.iot.webrtc.v1.ListSpaces"> & {
326
+ /**
327
+ * @generated from field: kusinta.iot.identity.v1.SpaceId root_space_id = 1;
328
+ */
329
+ rootSpaceId?: SpaceId | undefined;
330
+ };
331
+
332
+ /**
333
+ * Describes the message kusinta.iot.webrtc.v1.ListSpaces.
334
+ * Use `create(ListSpacesSchema)` to create a new message.
335
+ */
336
+ export declare const ListSpacesSchema: GenMessage<ListSpaces>;
337
+
338
+ /**
339
+ * The spaces themselves, flat: each Space carries its own parent_space_id, so the
340
+ * structure travels with the elements and a client rebuilds the tree from them.
341
+ * A flat list also degrades honestly when it is truncated — a partial tree with
342
+ * dangling parents is still readable, where a nested one would lose whole
343
+ * subtrees.
344
+ *
345
+ * device_ids on each Space are filtered to what the caller may see. An
346
+ * unfiltered tree would list every device on the gateway by id, which is the
347
+ * enumeration channel the snapshot filter exists to close.
348
+ *
349
+ * @generated from message kusinta.iot.webrtc.v1.SpaceTree
350
+ */
351
+ export declare type SpaceTree = Message<"kusinta.iot.webrtc.v1.SpaceTree"> & {
352
+ /**
353
+ * @generated from field: repeated kusinta.iot.space.v1.Space spaces = 1;
354
+ */
355
+ spaces: Space[];
356
+ };
357
+
358
+ /**
359
+ * Describes the message kusinta.iot.webrtc.v1.SpaceTree.
360
+ * Use `create(SpaceTreeSchema)` to create a new message.
361
+ */
362
+ export declare const SpaceTreeSchema: GenMessage<SpaceTree>;
363
+
364
+ /**
365
+ * The answer to an operation that changes something and has nothing to return.
366
+ * Deliberately empty: ManagementResult.in_reply_to says which request succeeded,
367
+ * and what the change did to the caller's reach arrives on LivePermissionUpdate
368
+ * rather than here.
369
+ *
370
+ * @generated from message kusinta.iot.webrtc.v1.ManagementAck
371
+ */
372
+ export declare type ManagementAck = Message<"kusinta.iot.webrtc.v1.ManagementAck"> & {
373
+ };
374
+
375
+ /**
376
+ * Describes the message kusinta.iot.webrtc.v1.ManagementAck.
377
+ * Use `create(ManagementAckSchema)` to create a new message.
378
+ */
379
+ export declare const ManagementAckSchema: GenMessage<ManagementAck>;
380
+
381
+ /**
382
+ * A single filing operation, app → gateway. One wrapper rather than ten payload
383
+ * cases on AppMessage: authorization for filing depends on the target, not on the
384
+ * message kind, so these can never be gated by a table keyed on the envelope case
385
+ * the way device messages are. Keeping them behind one case means one place that
386
+ * must authorize, and one refusal path that must not leak whether a target exists.
387
+ * Links one device to another, so the sender leads the receiver. The gateway
388
+ * resolves which underlying connections that needs and asks the connector for
389
+ * them; a caller names two devices and what the link is for.
390
+ *
391
+ * Authorized against both ends, and not symmetrically. Leading a device is a
392
+ * standing grant of control over it, so the receiver requires ownership or a
393
+ * servicing role. The sender's requirement depends on the mode: a gateway-kept
394
+ * link only reads what the caller can already see, while a device-to-device one
395
+ * writes configuration to the sender and spends its battery, which is a change
396
+ * to someone else's hardware.
397
+ *
398
+ * @generated from message kusinta.iot.webrtc.v1.CreateDeviceLink
399
+ */
400
+ export declare type CreateDeviceLink = Message<"kusinta.iot.webrtc.v1.CreateDeviceLink"> & {
401
+ /**
402
+ * @generated from field: kusinta.iot.identity.v1.DeviceId sender = 1;
403
+ */
404
+ sender?: DeviceId | undefined;
405
+
406
+ /**
407
+ * @generated from field: kusinta.iot.identity.v1.DeviceId receiver = 2;
408
+ */
409
+ receiver?: DeviceId | undefined;
410
+
411
+ /**
412
+ * @generated from field: kusinta.iot.link.v1.LinkFunction function = 3;
413
+ */
414
+ function: LinkFunction;
415
+
416
+ /**
417
+ * Unset lets the gateway choose, which prefers a device-to-device link where
418
+ * one can be brokered: it survives a gateway outage and runs at the devices'
419
+ * own rate. Name one to override that.
420
+ *
421
+ * @generated from field: kusinta.iot.link.v1.LinkMode mode = 4;
422
+ */
423
+ mode: LinkMode;
424
+
425
+ /**
426
+ * How a gateway-kept link is to behave, set as it is made. Carried here as
427
+ * well as on UpdateDeviceLink so that a link does not have to exist in a
428
+ * configured-by-nobody state first — a soft climate link created without a
429
+ * target is one that holds the room at nothing until a second request
430
+ * arrives, and every reader would have to handle that transient forever.
431
+ *
432
+ * Unset is still allowed and still means unconfigured, since a hard link has
433
+ * nothing to configure and a caller may genuinely not know the target yet.
434
+ *
435
+ * @generated from field: kusinta.iot.link.v1.LinkSettings settings = 5;
436
+ */
437
+ settings?: LinkSettings | undefined;
438
+ };
439
+
440
+ /**
441
+ * Describes the message kusinta.iot.webrtc.v1.CreateDeviceLink.
442
+ * Use `create(CreateDeviceLinkSchema)` to create a new message.
443
+ */
444
+ export declare const CreateDeviceLinkSchema: GenMessage<CreateDeviceLink>;
445
+
446
+ /**
447
+ * Removes a link. Note that on at least one vendor, removing a link disturbs the
448
+ * receiver's own settings and the connector must repair them, so this is not the
449
+ * no-op it appears to be.
450
+ *
451
+ * @generated from message kusinta.iot.webrtc.v1.RemoveDeviceLink
452
+ */
453
+ export declare type RemoveDeviceLink = Message<"kusinta.iot.webrtc.v1.RemoveDeviceLink"> & {
454
+ /**
455
+ * @generated from field: string link_id = 1;
456
+ */
457
+ linkId: string;
458
+ };
459
+
460
+ /**
461
+ * Describes the message kusinta.iot.webrtc.v1.RemoveDeviceLink.
462
+ * Use `create(RemoveDeviceLinkSchema)` to create a new message.
463
+ */
464
+ export declare const RemoveDeviceLinkSchema: GenMessage<RemoveDeviceLink>;
465
+
466
+ /**
467
+ * Changes how a gateway-kept link behaves — for a climate lead, the temperature
468
+ * it is to hold.
469
+ *
470
+ * Refused on a link that has nothing to configure — see LinkSettings — rather
471
+ * than accepted as a no-op, so that a caller who has mistaken which link they
472
+ * are holding is told.
473
+ *
474
+ * Authorized against both ends, as creating and removing the link are: deciding
475
+ * what temperature a room is held at is directing a device, not adjusting one,
476
+ * so it takes ownership of the ends or a servicing role, not the permission to
477
+ * turn a thermostat up.
478
+ *
479
+ * @generated from message kusinta.iot.webrtc.v1.UpdateDeviceLink
480
+ */
481
+ export declare type UpdateDeviceLink = Message<"kusinta.iot.webrtc.v1.UpdateDeviceLink"> & {
482
+ /**
483
+ * @generated from field: string link_id = 1;
484
+ */
485
+ linkId: string;
486
+
487
+ /**
488
+ * Replaces the link's settings rather than patching them: the settings of one
489
+ * function are few and are set together, so there is no half-update worth
490
+ * expressing. This is why it does not follow UpdateSpace's per-field optional
491
+ * shape, which exists for a message whose fields genuinely move alone.
492
+ *
493
+ * Unset is refused rather than being given a meaning. It would have to mean
494
+ * either "leave everything alone", making the request a no-op, or "clear the
495
+ * settings", which is the one thing that reads like an accident — and the
496
+ * wire cannot tell those two callers apart.
497
+ *
498
+ * @generated from field: kusinta.iot.link.v1.LinkSettings settings = 2;
499
+ */
500
+ settings?: LinkSettings | undefined;
501
+ };
502
+
503
+ /**
504
+ * Describes the message kusinta.iot.webrtc.v1.UpdateDeviceLink.
505
+ * Use `create(UpdateDeviceLinkSchema)` to create a new message.
506
+ */
507
+ export declare const UpdateDeviceLinkSchema: GenMessage<UpdateDeviceLink>;
508
+
509
+ /**
510
+ * Lists links. Unset device_id lists every link among devices the caller can
511
+ * reach; naming one narrows it to that device's own, in either direction.
512
+ *
513
+ * @generated from message kusinta.iot.webrtc.v1.ListDeviceLinks
514
+ */
515
+ export declare type ListDeviceLinks = Message<"kusinta.iot.webrtc.v1.ListDeviceLinks"> & {
516
+ /**
517
+ * @generated from field: kusinta.iot.identity.v1.DeviceId device_id = 1;
518
+ */
519
+ deviceId?: DeviceId | undefined;
520
+ };
521
+
522
+ /**
523
+ * Describes the message kusinta.iot.webrtc.v1.ListDeviceLinks.
524
+ * Use `create(ListDeviceLinksSchema)` to create a new message.
525
+ */
526
+ export declare const ListDeviceLinksSchema: GenMessage<ListDeviceLinks>;
527
+
528
+ /**
529
+ * @generated from message kusinta.iot.webrtc.v1.ManagementRequest
530
+ */
531
+ export declare type ManagementRequest = Message<"kusinta.iot.webrtc.v1.ManagementRequest"> & {
532
+ /**
533
+ * @generated from oneof kusinta.iot.webrtc.v1.ManagementRequest.request
534
+ */
535
+ request: {
536
+ /**
537
+ * @generated from field: kusinta.iot.webrtc.v1.CreateSpace create_space = 1;
538
+ */
539
+ value: CreateSpace;
540
+ case: "createSpace";
541
+ } | {
542
+ /**
543
+ * @generated from field: kusinta.iot.webrtc.v1.UpdateSpace update_space = 2;
544
+ */
545
+ value: UpdateSpace;
546
+ case: "updateSpace";
547
+ } | {
548
+ /**
549
+ * @generated from field: kusinta.iot.webrtc.v1.DeleteSpace delete_space = 3;
550
+ */
551
+ value: DeleteSpace;
552
+ case: "deleteSpace";
553
+ } | {
554
+ /**
555
+ * @generated from field: kusinta.iot.webrtc.v1.AssignUserToSpace assign_user_to_space = 4;
556
+ */
557
+ value: AssignUserToSpace;
558
+ case: "assignUserToSpace";
559
+ } | {
560
+ /**
561
+ * @generated from field: kusinta.iot.webrtc.v1.RemoveUserFromSpace remove_user_from_space = 5;
562
+ */
563
+ value: RemoveUserFromSpace;
564
+ case: "removeUserFromSpace";
565
+ } | {
566
+ /**
567
+ * @generated from field: kusinta.iot.webrtc.v1.PlaceDeviceInSpace place_device_in_space = 6;
568
+ */
569
+ value: PlaceDeviceInSpace;
570
+ case: "placeDeviceInSpace";
571
+ } | {
572
+ /**
573
+ * @generated from field: kusinta.iot.webrtc.v1.RemoveDeviceFromSpace remove_device_from_space = 7;
574
+ */
575
+ value: RemoveDeviceFromSpace;
576
+ case: "removeDeviceFromSpace";
577
+ } | {
578
+ /**
579
+ * @generated from field: kusinta.iot.webrtc.v1.ClaimDevice claim_device = 8;
580
+ */
581
+ value: ClaimDevice;
582
+ case: "claimDevice";
583
+ } | {
584
+ /**
585
+ * @generated from field: kusinta.iot.webrtc.v1.ReleaseDevice release_device = 9;
586
+ */
587
+ value: ReleaseDevice;
588
+ case: "releaseDevice";
589
+ } | {
590
+ /**
591
+ * @generated from field: kusinta.iot.webrtc.v1.ListSpaces list_spaces = 10;
592
+ */
593
+ value: ListSpaces;
594
+ case: "listSpaces";
595
+ } | {
596
+ /**
597
+ * @generated from field: kusinta.iot.webrtc.v1.CreateDeviceLink create_device_link = 11;
598
+ */
599
+ value: CreateDeviceLink;
600
+ case: "createDeviceLink";
601
+ } | {
602
+ /**
603
+ * @generated from field: kusinta.iot.webrtc.v1.RemoveDeviceLink remove_device_link = 12;
604
+ */
605
+ value: RemoveDeviceLink;
606
+ case: "removeDeviceLink";
607
+ } | {
608
+ /**
609
+ * @generated from field: kusinta.iot.webrtc.v1.ListDeviceLinks list_device_links = 13;
610
+ */
611
+ value: ListDeviceLinks;
612
+ case: "listDeviceLinks";
613
+ } | {
614
+ /**
615
+ * @generated from field: kusinta.iot.webrtc.v1.UpdateDeviceLink update_device_link = 14;
616
+ */
617
+ value: UpdateDeviceLink;
618
+ case: "updateDeviceLink";
619
+ } | { case: undefined; value?: undefined };
620
+ };
621
+
622
+ /**
623
+ * Describes the message kusinta.iot.webrtc.v1.ManagementRequest.
624
+ * Use `create(ManagementRequestSchema)` to create a new message.
625
+ */
626
+ export declare const ManagementRequestSchema: GenMessage<ManagementRequest>;
627
+