@kusinta/iot-schema 0.2.0-beta.20 → 0.2.0-beta.21

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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kusinta/iot-schema",
3
- "version": "0.2.0-beta.20",
3
+ "version": "0.2.0-beta.21",
4
4
  "type": "module",
5
5
  "license": "MIT",
6
6
  "files": ["src"],
@@ -38,6 +38,8 @@
38
38
  "./webrtc/setpoint-mode": "./src/kusinta/iot/webrtc/v1/setpoint_mode_pb.js",
39
39
  "./registration": "./src/kusinta/iot/registration/v1/registration_pb.js",
40
40
  "./registration/service": "./src/kusinta/iot/registration/v1/registration_service_pb.js",
41
+ "./reporting": "./src/kusinta/iot/reporting/v1/reporting_pb.js",
42
+ "./reporting/service": "./src/kusinta/iot/reporting/v1/reporting_service_pb.js",
41
43
  "./signaling": "./src/kusinta/iot/signaling/v1/signaling_pb.js",
42
44
  "./signaling/service": "./src/kusinta/iot/signaling/v1/signaling_service_pb.js"
43
45
  },
@@ -0,0 +1,891 @@
1
+ // @generated by protoc-gen-es v2.12.0 with parameter "target=js+dts,import_extension=js"
2
+ // @generated from file kusinta/iot/reporting/v1/reporting.proto (package kusinta.iot.reporting.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 { ConnectorId, DeviceId, SpaceId, UserId } from "../../identity/v1/identity_pb.js";
8
+ import type { Timestamp } from "@bufbuild/protobuf/wkt";
9
+ import type { SpaceType } from "../../common/v1/types_pb.js";
10
+
11
+ /**
12
+ * Describes the file kusinta/iot/reporting/v1/reporting.proto.
13
+ */
14
+ export declare const file_kusinta_iot_reporting_v1_reporting: GenFile;
15
+
16
+ /**
17
+ * One part of a full set: a concern's whole current state, sent on every new stream as above.
18
+ * A large set may span several requests, each carrying the same snapshot_id.
19
+ *
20
+ * The api-server applies a snapshot only once it holds every part of it: parts 0 to the one
21
+ * marked last, all with one snapshot_id, on one stream. Then, and only then, it drops what
22
+ * the snapshot does not name — closing open problems that are absent, forgetting reach and
23
+ * spaces that are absent. A snapshot belongs to its stream: a part with another snapshot_id,
24
+ * or any request on a newer stream, discards a snapshot in progress. A snapshot not
25
+ * completed is never applied, and the next stream sends its own.
26
+ *
27
+ * While a snapshot of a concern is in progress, the gateway sends that concern nothing but
28
+ * the snapshot's parts; whatever it queued meanwhile follows the last part. A change sent
29
+ * between parts could be missing from a snapshot built before it, and completing the snapshot
30
+ * would then undo it. A request without a snapshot part that arrives while one is in progress
31
+ * is not applied: the answer's applied_seq does not cover it.
32
+ *
33
+ * A part other than the last is held, not applied, but its seq counts as applied: the gateway
34
+ * sends the next. The snapshot applies with its last part.
35
+ *
36
+ * @generated from message kusinta.iot.reporting.v1.SnapshotPart
37
+ */
38
+ export declare type SnapshotPart = Message<"kusinta.iot.reporting.v1.SnapshotPart"> & {
39
+ /**
40
+ * Minted by the gateway, opaque, unique per snapshot.
41
+ *
42
+ * @generated from field: string snapshot_id = 1;
43
+ */
44
+ snapshotId: string;
45
+
46
+ /**
47
+ * This part's place in the snapshot, from 0.
48
+ *
49
+ * @generated from field: uint32 part = 2;
50
+ */
51
+ part: number;
52
+
53
+ /**
54
+ * Set on the final part. The snapshot has part + 1 parts.
55
+ *
56
+ * @generated from field: bool last = 3;
57
+ */
58
+ last: boolean;
59
+ };
60
+
61
+ /**
62
+ * Describes the message kusinta.iot.reporting.v1.SnapshotPart.
63
+ * Use `create(SnapshotPartSchema)` to create a new message.
64
+ */
65
+ export declare const SnapshotPartSchema: GenMessage<SnapshotPart>;
66
+
67
+ /**
68
+ * The thing a problem is about.
69
+ *
70
+ * @generated from message kusinta.iot.reporting.v1.ProblemSubject
71
+ */
72
+ export declare type ProblemSubject = Message<"kusinta.iot.reporting.v1.ProblemSubject"> & {
73
+ /**
74
+ * @generated from oneof kusinta.iot.reporting.v1.ProblemSubject.subject
75
+ */
76
+ subject: {
77
+ /**
78
+ * DEVICE_OFFLINE, BATTERY_*, DEVICE_ERROR, DEVICE_TAMPER.
79
+ *
80
+ * @generated from field: kusinta.iot.identity.v1.DeviceId device_id = 1;
81
+ */
82
+ value: DeviceId;
83
+ case: "deviceId";
84
+ } | {
85
+ /**
86
+ * CONNECTOR_OFFLINE, CONNECTOR_ERROR.
87
+ *
88
+ * @generated from field: kusinta.iot.identity.v1.ConnectorId connector_id = 2;
89
+ */
90
+ value: ConnectorId;
91
+ case: "connectorId";
92
+ } | {
93
+ /**
94
+ * WINDOW_OPEN: the room.
95
+ *
96
+ * @generated from field: kusinta.iot.identity.v1.SpaceId room_id = 3;
97
+ */
98
+ value: SpaceId;
99
+ case: "roomId";
100
+ } | {
101
+ /**
102
+ * UNFILED_DEVICES: the gateway itself.
103
+ *
104
+ * @generated from field: bool gateway = 4;
105
+ */
106
+ value: boolean;
107
+ case: "gateway";
108
+ } | { case: undefined; value?: undefined };
109
+ };
110
+
111
+ /**
112
+ * Describes the message kusinta.iot.reporting.v1.ProblemSubject.
113
+ * Use `create(ProblemSubjectSchema)` to create a new message.
114
+ */
115
+ export declare const ProblemSubjectSchema: GenMessage<ProblemSubject>;
116
+
117
+ /**
118
+ * A problem as it stands while open.
119
+ *
120
+ * For a device in a home (an apartment, or a room in one), a problem carries only what a
121
+ * ServiceStatus would give service staff of it, at the same precision:
122
+ * * opened_at is the quarter hour the gateway's evaluated status changed, never the time
123
+ * of a device report;
124
+ * * battery_percent is rounded up to a multiple of ten, as ServiceStatus.battery_percent is;
125
+ * * the only device faults reported are DEVICE_ERROR and DEVICE_TAMPER.
126
+ * A device a resident owns raises no problem at all: it is theirs, and building staff are not
127
+ * told of it.
128
+ *
129
+ * When a transition for a device in a home is sent matters as much as what it carries: the
130
+ * gateway evaluates such a device's problems only at quarter hours, so a condition that comes
131
+ * and goes between two of them — a connector outage included — changes nothing, and it sends a
132
+ * transition only at that evaluation, as ServiceStatus changes are pushed,
133
+ * never on the device report that prompted it. That holds for every transition of such a
134
+ * device, a clear for its removal or for its connector going offline included: each is sent,
135
+ * and stamped, at the next quarter hour.
136
+ *
137
+ * @generated from message kusinta.iot.reporting.v1.Problem
138
+ */
139
+ export declare type Problem = Message<"kusinta.iot.reporting.v1.Problem"> & {
140
+ /**
141
+ * @generated from field: kusinta.iot.reporting.v1.ProblemKind kind = 2;
142
+ */
143
+ kind: ProblemKind;
144
+
145
+ /**
146
+ * @generated from field: kusinta.iot.reporting.v1.ProblemSubject subject = 3;
147
+ */
148
+ subject?: ProblemSubject | undefined;
149
+
150
+ /**
151
+ * The space a device subject is filed in. A device filed in several spaces, any of them in a
152
+ * home (an apartment or a room in one), counts as in a home, as access.v1 has it, and reports
153
+ * the deepest space it is filed in within any home, the lowest id between equals. Otherwise
154
+ * the deepest it is filed in, the lowest id between equals. Unset for any other subject (a
155
+ * room is its own place) and for a device filed nowhere.
156
+ *
157
+ * @generated from field: kusinta.iot.identity.v1.SpaceId space_id = 4;
158
+ */
159
+ spaceId?: SpaceId | undefined;
160
+
161
+ /**
162
+ * When the problem opened. For a device in a home, the quarter hour; see above.
163
+ *
164
+ * A problem's space is space_id for a device subject and room_id for a room subject; a
165
+ * connector or the gateway has none.
166
+ *
167
+ * Of any problem with a space, the api-server shows a member only what falls within their
168
+ * unbroken reach to that space, from the since the gateway gives for it (see ReachedSpace),
169
+ * or for the administrator from when their administration began (see ServiceReach):
170
+ * a problem that closed at or before then is not shown to them at all, and an opened_at
171
+ * before then shows as then. Applied whether or not the space is in a home now, since a
172
+ * space may have been one while the problem was open. The gateway likewise never shows
173
+ * service staff a status from before they could see the device. A problem whose space the
174
+ * api-server does not hold is shown only to the gateway's administrator (see ServiceReach),
175
+ * its times as of when that administration began.
176
+ *
177
+ * @generated from field: google.protobuf.Timestamp opened_at = 5;
178
+ */
179
+ openedAt?: Timestamp | undefined;
180
+
181
+ /**
182
+ * BATTERY_*: remaining charge, rounded up to a multiple of ten. Absent when the device
183
+ * reports none.
184
+ *
185
+ * @generated from field: optional uint32 battery_percent = 6;
186
+ */
187
+ batteryPercent?: number | undefined;
188
+
189
+ /**
190
+ * UNFILED_DEVICES: how many devices are filed nowhere.
191
+ *
192
+ * @generated from field: uint32 device_count = 7;
193
+ */
194
+ deviceCount: number;
195
+ };
196
+
197
+ /**
198
+ * Describes the message kusinta.iot.reporting.v1.Problem.
199
+ * Use `create(ProblemSchema)` to create a new message.
200
+ */
201
+ export declare const ProblemSchema: GenMessage<Problem>;
202
+
203
+ /**
204
+ * A problem closing.
205
+ *
206
+ * @generated from message kusinta.iot.reporting.v1.ProblemCleared
207
+ */
208
+ export declare type ProblemCleared = Message<"kusinta.iot.reporting.v1.ProblemCleared"> & {
209
+ /**
210
+ * When it closed. For a device in a home, the quarter hour the evaluated status changed,
211
+ * as for opened_at; never the time of a device report.
212
+ *
213
+ * @generated from field: google.protobuf.Timestamp cleared_at = 1;
214
+ */
215
+ clearedAt?: Timestamp | undefined;
216
+
217
+ /**
218
+ * @generated from field: kusinta.iot.reporting.v1.ClearReason reason = 2;
219
+ */
220
+ reason: ClearReason;
221
+ };
222
+
223
+ /**
224
+ * Describes the message kusinta.iot.reporting.v1.ProblemCleared.
225
+ * Use `create(ProblemClearedSchema)` to create a new message.
226
+ */
227
+ export declare const ProblemClearedSchema: GenMessage<ProblemCleared>;
228
+
229
+ /**
230
+ * One change to one problem.
231
+ *
232
+ * (problem_id, seq) is the idempotency key. seq counts the transitions of one problem from 1:
233
+ * its opening is 1, and each later change one more. Outside a snapshot, the api-server
234
+ * applies a transition only if its seq is above the highest it holds for that problem; any
235
+ * other — a repeat, or a retry overtaken by a later change — is acknowledged as a duplicate
236
+ * and not applied, so a late update cannot reopen a problem since cleared. Seqs of one
237
+ * problem need not arrive without gaps: each transition carries the problem's whole state.
238
+ *
239
+ * A snapshot is authoritative: each problem it names takes the snapshot's state and seq,
240
+ * whatever the api-server held. A transition in it acknowledged REJECTED does not count as
241
+ * naming its problem. A problem it does not name, the api-server closes as of the snapshot,
242
+ * with no reason given (CLEAR_REASON_UNSPECIFIED), at the quarter hour the snapshot completed,
243
+ * rounded down whatever the subject (the api-server may not yet know where it is), and never
244
+ * earlier than the problem's opened_at. Its highest seq stays as held, so only a later
245
+ * transition of it applies.
246
+ *
247
+ * @generated from message kusinta.iot.reporting.v1.ProblemTransition
248
+ */
249
+ export declare type ProblemTransition = Message<"kusinta.iot.reporting.v1.ProblemTransition"> & {
250
+ /**
251
+ * Minted by the gateway for one open period of one (subject, kind), stable across gateway
252
+ * restarts. A problem that clears and opens again is a new problem with a new id.
253
+ *
254
+ * A UUIDv4: opaque, and never time-ordered. An id that sorted by time (a ULID, a UUIDv7)
255
+ * would carry the moment a problem opened, which the quarter-hour rule withholds.
256
+ *
257
+ * @generated from field: string problem_id = 1;
258
+ */
259
+ problemId: string;
260
+
261
+ /**
262
+ * @generated from field: uint64 seq = 2;
263
+ */
264
+ seq: bigint;
265
+
266
+ /**
267
+ * @generated from oneof kusinta.iot.reporting.v1.ProblemTransition.change
268
+ */
269
+ change: {
270
+ /**
271
+ * The problem opened, or something it carries changed while open (a battery level, a
272
+ * device count, the space it is filed in). Carries the whole problem, not a delta: the
273
+ * same problem_id, the next seq and the original opened_at.
274
+ *
275
+ * @generated from field: kusinta.iot.reporting.v1.Problem open = 3;
276
+ */
277
+ value: Problem;
278
+ case: "open";
279
+ } | {
280
+ /**
281
+ * @generated from field: kusinta.iot.reporting.v1.ProblemCleared cleared = 4;
282
+ */
283
+ value: ProblemCleared;
284
+ case: "cleared";
285
+ } | { case: undefined; value?: undefined };
286
+ };
287
+
288
+ /**
289
+ * Describes the message kusinta.iot.reporting.v1.ProblemTransition.
290
+ * Use `create(ProblemTransitionSchema)` to create a new message.
291
+ */
292
+ export declare const ProblemTransitionSchema: GenMessage<ProblemTransition>;
293
+
294
+ /**
295
+ * @generated from message kusinta.iot.reporting.v1.ReportProblemsRequest
296
+ */
297
+ export declare type ReportProblemsRequest = Message<"kusinta.iot.reporting.v1.ReportProblemsRequest"> & {
298
+ /**
299
+ * This concern's stream and the request's place on it; see SnapshotPart.
300
+ *
301
+ * @generated from field: string stream_id = 3;
302
+ */
303
+ streamId: string;
304
+
305
+ /**
306
+ * The streams this one replaced; see SnapshotPart. Empty on the gateway's first.
307
+ *
308
+ * @generated from field: repeated string previous_stream_ids = 5;
309
+ */
310
+ previousStreamIds: string[];
311
+
312
+ /**
313
+ * @generated from field: uint64 seq = 4;
314
+ */
315
+ seq: bigint;
316
+
317
+ /**
318
+ * Applied in order.
319
+ *
320
+ * @generated from field: repeated kusinta.iot.reporting.v1.ProblemTransition transitions = 1;
321
+ */
322
+ transitions: ProblemTransition[];
323
+
324
+ /**
325
+ * Set when this request is part of a snapshot of every open problem. Its transitions are
326
+ * then each problem's latest open state, and the api-server, once it holds the whole
327
+ * snapshot, closes every open problem the snapshot does not name.
328
+ *
329
+ * @generated from field: kusinta.iot.reporting.v1.SnapshotPart snapshot = 2;
330
+ */
331
+ snapshot?: SnapshotPart | undefined;
332
+ };
333
+
334
+ /**
335
+ * Describes the message kusinta.iot.reporting.v1.ReportProblemsRequest.
336
+ * Use `create(ReportProblemsRequestSchema)` to create a new message.
337
+ */
338
+ export declare const ReportProblemsRequestSchema: GenMessage<ReportProblemsRequest>;
339
+
340
+ /**
341
+ * @generated from message kusinta.iot.reporting.v1.TransitionAck
342
+ */
343
+ export declare type TransitionAck = Message<"kusinta.iot.reporting.v1.TransitionAck"> & {
344
+ /**
345
+ * @generated from field: string problem_id = 1;
346
+ */
347
+ problemId: string;
348
+
349
+ /**
350
+ * @generated from field: uint64 seq = 2;
351
+ */
352
+ seq: bigint;
353
+
354
+ /**
355
+ * @generated from field: kusinta.iot.reporting.v1.AckStatus status = 3;
356
+ */
357
+ status: AckStatus;
358
+ };
359
+
360
+ /**
361
+ * Describes the message kusinta.iot.reporting.v1.TransitionAck.
362
+ * Use `create(TransitionAckSchema)` to create a new message.
363
+ */
364
+ export declare const TransitionAckSchema: GenMessage<TransitionAck>;
365
+
366
+ /**
367
+ * @generated from message kusinta.iot.reporting.v1.ReportProblemsResponse
368
+ */
369
+ export declare type ReportProblemsResponse = Message<"kusinta.iot.reporting.v1.ReportProblemsResponse"> & {
370
+ /**
371
+ * One per transition of a request the api-server took in order, named by its key.
372
+ *
373
+ * @generated from field: repeated kusinta.iot.reporting.v1.TransitionAck acks = 1;
374
+ */
375
+ acks: TransitionAck[];
376
+
377
+ /**
378
+ * As ReportServiceReachResponse.applied_seq: whether the request was taken at all. A request
379
+ * above it was not, carries no acks, and is sent again.
380
+ *
381
+ * @generated from field: uint64 applied_seq = 3;
382
+ */
383
+ appliedSeq: bigint;
384
+
385
+ /**
386
+ * The gateway must connect afresh; see SnapshotPart.
387
+ *
388
+ * @generated from field: bool resync_required = 2;
389
+ */
390
+ resyncRequired: boolean;
391
+ };
392
+
393
+ /**
394
+ * Describes the message kusinta.iot.reporting.v1.ReportProblemsResponse.
395
+ * Use `create(ReportProblemsResponseSchema)` to create a new message.
396
+ */
397
+ export declare const ReportProblemsResponseSchema: GenMessage<ReportProblemsResponse>;
398
+
399
+ /**
400
+ * Which spaces one member of service staff reaches on this gateway: whom the api-server may
401
+ * show a problem to, by where the problem is.
402
+ *
403
+ * Sent for every member who stands to some space as service (access.v1.MembershipRelation),
404
+ * from their memberships alone. Never for a resident: where people live stays on the gateway.
405
+ * A member's own home is not left out of their reach, since a gap would show where they live.
406
+ * A user who is no longer service anywhere on the gateway is named in removed_user_ids.
407
+ *
408
+ * The administration of the gateway is not reported here; the administrator's own service
409
+ * memberships, if any, are, like anyone's. The api-server records who administers a gateway
410
+ * itself, and from when, and gives the administrator every space the gateway serves
411
+ * from that moment, applying a change of administrator at once. A problem with no space the
412
+ * api-server holds — a device filed nowhere, a space not yet held or since removed — is shown
413
+ * only to the administrator. A problem about a connector or the gateway itself concerns no
414
+ * one's home, and is shown to the administrator and every member with any reach.
415
+ *
416
+ * @generated from message kusinta.iot.reporting.v1.ServiceReach
417
+ */
418
+ export declare type ServiceReach = Message<"kusinta.iot.reporting.v1.ServiceReach"> & {
419
+ /**
420
+ * As the token issuer mints it: the sub of the member's token.
421
+ *
422
+ * @generated from field: kusinta.iot.identity.v1.UserId user_id = 1;
423
+ */
424
+ userId?: UserId | undefined;
425
+
426
+ /**
427
+ * Every space the member reaches, the spaces beneath a reached space included. Replaces
428
+ * whatever the api-server held for this member on this gateway, so one member's reach is
429
+ * never split across requests or snapshot parts.
430
+ *
431
+ * @generated from field: repeated kusinta.iot.reporting.v1.ReachedSpace spaces = 3;
432
+ */
433
+ spaces: ReachedSpace[];
434
+ };
435
+
436
+ /**
437
+ * Describes the message kusinta.iot.reporting.v1.ServiceReach.
438
+ * Use `create(ServiceReachSchema)` to create a new message.
439
+ */
440
+ export declare const ServiceReachSchema: GenMessage<ServiceReach>;
441
+
442
+ /**
443
+ * One space a member reaches, and since when.
444
+ *
445
+ * @generated from message kusinta.iot.reporting.v1.ReachedSpace
446
+ */
447
+ export declare type ReachedSpace = Message<"kusinta.iot.reporting.v1.ReachedSpace"> & {
448
+ /**
449
+ * @generated from field: kusinta.iot.identity.v1.SpaceId space_id = 1;
450
+ */
451
+ spaceId?: SpaceId | undefined;
452
+
453
+ /**
454
+ * The quarter hour, rounded up, from which the member's reach to this space has been
455
+ * unbroken, as the gateway counts it. Given by the gateway, which saw any break, rather than
456
+ * inferred by the api-server from when reports arrived: a snapshot replaces what was queued,
457
+ * and would hide a break the gateway saw while offline.
458
+ *
459
+ * @generated from field: google.protobuf.Timestamp since = 2;
460
+ */
461
+ since?: Timestamp | undefined;
462
+ };
463
+
464
+ /**
465
+ * Describes the message kusinta.iot.reporting.v1.ReachedSpace.
466
+ * Use `create(ReachedSpaceSchema)` to create a new message.
467
+ */
468
+ export declare const ReachedSpaceSchema: GenMessage<ReachedSpace>;
469
+
470
+ /**
471
+ * @generated from message kusinta.iot.reporting.v1.ReportServiceReachRequest
472
+ */
473
+ export declare type ReportServiceReachRequest = Message<"kusinta.iot.reporting.v1.ReportServiceReachRequest"> & {
474
+ /**
475
+ * This concern's stream; see SnapshotPart.
476
+ *
477
+ * @generated from field: string stream_id = 5;
478
+ */
479
+ streamId: string;
480
+
481
+ /**
482
+ * The streams this one replaced; see SnapshotPart. Empty on the gateway's first.
483
+ *
484
+ * @generated from field: repeated string previous_stream_ids = 6;
485
+ */
486
+ previousStreamIds: string[];
487
+
488
+ /**
489
+ * The request's place on stream_id; see SnapshotPart. Applied in order, exactly once, so a
490
+ * late retry cannot restore reach since taken away.
491
+ *
492
+ * @generated from field: uint64 seq = 1;
493
+ */
494
+ seq: bigint;
495
+
496
+ /**
497
+ * @generated from field: repeated kusinta.iot.reporting.v1.ServiceReach reach = 2;
498
+ */
499
+ reach: ServiceReach[];
500
+
501
+ /**
502
+ * Members who reach nothing on this gateway as service any more. A member named here and in
503
+ * reach is removed.
504
+ *
505
+ * @generated from field: repeated kusinta.iot.identity.v1.UserId removed_user_ids = 3;
506
+ */
507
+ removedUserIds: UserId[];
508
+
509
+ /**
510
+ * Set when this request is part of a snapshot of every member's reach; members absent from
511
+ * a whole snapshot reach nothing.
512
+ *
513
+ * @generated from field: kusinta.iot.reporting.v1.SnapshotPart snapshot = 4;
514
+ */
515
+ snapshot?: SnapshotPart | undefined;
516
+ };
517
+
518
+ /**
519
+ * Describes the message kusinta.iot.reporting.v1.ReportServiceReachRequest.
520
+ * Use `create(ReportServiceReachRequestSchema)` to create a new message.
521
+ */
522
+ export declare const ReportServiceReachRequestSchema: GenMessage<ReportServiceReachRequest>;
523
+
524
+ /**
525
+ * @generated from message kusinta.iot.reporting.v1.ReportServiceReachResponse
526
+ */
527
+ export declare type ReportServiceReachResponse = Message<"kusinta.iot.reporting.v1.ReportServiceReachResponse"> & {
528
+ /**
529
+ * The seq the api-server has applied up to on the request's stream, a held snapshot part
530
+ * counting as applied. The gateway does not send any request up to it again; one above it
531
+ * was not applied, and is sent again.
532
+ *
533
+ * @generated from field: uint64 applied_seq = 1;
534
+ */
535
+ appliedSeq: bigint;
536
+
537
+ /**
538
+ * The gateway must connect afresh; see SnapshotPart.
539
+ *
540
+ * @generated from field: bool resync_required = 2;
541
+ */
542
+ resyncRequired: boolean;
543
+ };
544
+
545
+ /**
546
+ * Describes the message kusinta.iot.reporting.v1.ReportServiceReachResponse.
547
+ * Use `create(ReportServiceReachResponseSchema)` to create a new message.
548
+ */
549
+ export declare const ReportServiceReachResponseSchema: GenMessage<ReportServiceReachResponse>;
550
+
551
+ /**
552
+ * A space this gateway serves, enough for the api-server to say which spaces an offline
553
+ * gateway affects and to name where a problem is. The fields of space.v1.Space it needs and
554
+ * no more: who is filed on a space, and which devices are in it, stay on the gateway.
555
+ *
556
+ * name is the space's name as filed. Building staff see it in the app already, but the name
557
+ * of a home may carry personal data ("Apt 101 – Andersson"), so it is stored by the api-server
558
+ * as personal data: something an operator's data protection assessment covers.
559
+ *
560
+ * @generated from message kusinta.iot.reporting.v1.ServedSpace
561
+ */
562
+ export declare type ServedSpace = Message<"kusinta.iot.reporting.v1.ServedSpace"> & {
563
+ /**
564
+ * @generated from field: kusinta.iot.identity.v1.SpaceId space_id = 1;
565
+ */
566
+ spaceId?: SpaceId | undefined;
567
+
568
+ /**
569
+ * @generated from field: kusinta.iot.common.v1.SpaceType space_type = 2;
570
+ */
571
+ spaceType: SpaceType;
572
+
573
+ /**
574
+ * @generated from field: string name = 3;
575
+ */
576
+ name: string;
577
+
578
+ /**
579
+ * Unset for a top-level space.
580
+ *
581
+ * @generated from field: kusinta.iot.identity.v1.SpaceId parent_space_id = 4;
582
+ */
583
+ parentSpaceId?: SpaceId | undefined;
584
+
585
+ /**
586
+ * As Space.floor: meaningful for a floor.
587
+ *
588
+ * @generated from field: int32 floor = 5;
589
+ */
590
+ floor: number;
591
+
592
+ /**
593
+ * The building's IANA time zone, as Space.time_zone: set on the building, so a time the
594
+ * api-server holds can be shown on the building's clock without a session to the gateway.
595
+ *
596
+ * @generated from field: string time_zone = 6;
597
+ */
598
+ timeZone: string;
599
+ };
600
+
601
+ /**
602
+ * Describes the message kusinta.iot.reporting.v1.ServedSpace.
603
+ * Use `create(ServedSpaceSchema)` to create a new message.
604
+ */
605
+ export declare const ServedSpaceSchema: GenMessage<ServedSpace>;
606
+
607
+ /**
608
+ * @generated from message kusinta.iot.reporting.v1.ReportServedSpacesRequest
609
+ */
610
+ export declare type ReportServedSpacesRequest = Message<"kusinta.iot.reporting.v1.ReportServedSpacesRequest"> & {
611
+ /**
612
+ * This concern's stream; see SnapshotPart.
613
+ *
614
+ * @generated from field: string stream_id = 5;
615
+ */
616
+ streamId: string;
617
+
618
+ /**
619
+ * The streams this one replaced; see SnapshotPart. Empty on the gateway's first.
620
+ *
621
+ * @generated from field: repeated string previous_stream_ids = 6;
622
+ */
623
+ previousStreamIds: string[];
624
+
625
+ /**
626
+ * As ReportServiceReachRequest.seq, on this concern's own stream.
627
+ *
628
+ * @generated from field: uint64 seq = 1;
629
+ */
630
+ seq: bigint;
631
+
632
+ /**
633
+ * Added or changed. Each replaces what the api-server held for that space.
634
+ *
635
+ * @generated from field: repeated kusinta.iot.reporting.v1.ServedSpace spaces = 2;
636
+ */
637
+ spaces: ServedSpace[];
638
+
639
+ /**
640
+ * No longer served: deleted, or moved off this gateway. A space named here and in spaces is
641
+ * removed.
642
+ *
643
+ * @generated from field: repeated kusinta.iot.identity.v1.SpaceId removed_space_ids = 3;
644
+ */
645
+ removedSpaceIds: SpaceId[];
646
+
647
+ /**
648
+ * Set when this request is part of a snapshot of every served space; spaces absent from a
649
+ * whole snapshot are no longer served.
650
+ *
651
+ * @generated from field: kusinta.iot.reporting.v1.SnapshotPart snapshot = 4;
652
+ */
653
+ snapshot?: SnapshotPart | undefined;
654
+ };
655
+
656
+ /**
657
+ * Describes the message kusinta.iot.reporting.v1.ReportServedSpacesRequest.
658
+ * Use `create(ReportServedSpacesRequestSchema)` to create a new message.
659
+ */
660
+ export declare const ReportServedSpacesRequestSchema: GenMessage<ReportServedSpacesRequest>;
661
+
662
+ /**
663
+ * @generated from message kusinta.iot.reporting.v1.ReportServedSpacesResponse
664
+ */
665
+ export declare type ReportServedSpacesResponse = Message<"kusinta.iot.reporting.v1.ReportServedSpacesResponse"> & {
666
+ /**
667
+ * As ReportServiceReachResponse.applied_seq.
668
+ *
669
+ * @generated from field: uint64 applied_seq = 1;
670
+ */
671
+ appliedSeq: bigint;
672
+
673
+ /**
674
+ * As ReportServiceReachResponse.resync_required.
675
+ *
676
+ * @generated from field: bool resync_required = 2;
677
+ */
678
+ resyncRequired: boolean;
679
+ };
680
+
681
+ /**
682
+ * Describes the message kusinta.iot.reporting.v1.ReportServedSpacesResponse.
683
+ * Use `create(ReportServedSpacesResponseSchema)` to create a new message.
684
+ */
685
+ export declare const ReportServedSpacesResponseSchema: GenMessage<ReportServedSpacesResponse>;
686
+
687
+ /**
688
+ * What kind of problem is open. The device kinds mirror what service staff are given of a
689
+ * device (webrtc.v1.ServiceStatus: reachability, the battery flags, the ServiceFault values);
690
+ * a device signal added there is added here too.
691
+ *
692
+ * @generated from enum kusinta.iot.reporting.v1.ProblemKind
693
+ */
694
+ export enum ProblemKind {
695
+ /**
696
+ * @generated from enum value: PROBLEM_KIND_UNSPECIFIED = 0;
697
+ */
698
+ UNSPECIFIED = 0,
699
+
700
+ /**
701
+ * The device cannot be heard, as its connector judges it.
702
+ *
703
+ * @generated from enum value: PROBLEM_KIND_DEVICE_OFFLINE = 1;
704
+ */
705
+ DEVICE_OFFLINE = 1,
706
+
707
+ /**
708
+ * The device reports its battery low or critical.
709
+ *
710
+ * @generated from enum value: PROBLEM_KIND_BATTERY_LOW = 2;
711
+ */
712
+ BATTERY_LOW = 2,
713
+
714
+ /**
715
+ * The device reports that its battery must be replaced.
716
+ *
717
+ * @generated from enum value: PROBLEM_KIND_BATTERY_REPLACEMENT_NEEDED = 3;
718
+ */
719
+ BATTERY_REPLACEMENT_NEEDED = 3,
720
+
721
+ /**
722
+ * The device reports an error in its own operation.
723
+ *
724
+ * @generated from enum value: PROBLEM_KIND_DEVICE_ERROR = 4;
725
+ */
726
+ DEVICE_ERROR = 4,
727
+
728
+ /**
729
+ * The device reports being tampered with: a casing opened, a mount removed.
730
+ *
731
+ * @generated from enum value: PROBLEM_KIND_DEVICE_TAMPER = 5;
732
+ */
733
+ DEVICE_TAMPER = 5,
734
+
735
+ /**
736
+ * A connector's stream to the gateway is down. While it is open, the gateway raises no
737
+ * DEVICE_OFFLINE for the devices behind that connector and clears any it had raised, with
738
+ * CLEAR_REASON_SUPERSEDED_BY_CONNECTOR_OFFLINE: one problem rather than one per device. For
739
+ * a device in a home that clear, like any, waits for the quarter hour (see Problem).
740
+ *
741
+ * @generated from enum value: PROBLEM_KIND_CONNECTOR_OFFLINE = 6;
742
+ */
743
+ CONNECTOR_OFFLINE = 6,
744
+
745
+ /**
746
+ * A connector is connected, but the backend it drives is failing: a central it cannot
747
+ * reach, a network server answering with errors.
748
+ *
749
+ * @generated from enum value: PROBLEM_KIND_CONNECTOR_ERROR = 7;
750
+ */
751
+ CONNECTOR_ERROR = 7,
752
+
753
+ /**
754
+ * Company-owned devices are paired with the gateway but filed in no space. A device a
755
+ * resident owns is never counted. The count changes only at quarter-hour evaluations, and
756
+ * opened_at and cleared_at are quarter hours, as for a device in a home, so the problem
757
+ * cannot time what a resident does with a device.
758
+ *
759
+ * @generated from enum value: PROBLEM_KIND_UNFILED_DEVICES = 8;
760
+ */
761
+ UNFILED_DEVICES = 8,
762
+
763
+ /**
764
+ * A window is open in a room whose heating it pauses. Raised only for a room in no home: in
765
+ * a common area, or under a floor or building directly. Whether a window in a home is open
766
+ * is the residents' alone, and the gateway never reports it: a room that leaves a home with
767
+ * its window open raises this at the quarter hour it leaves, stamped with that quarter hour,
768
+ * never with when the window opened.
769
+ *
770
+ * @generated from enum value: PROBLEM_KIND_WINDOW_OPEN = 9;
771
+ */
772
+ WINDOW_OPEN = 9,
773
+ }
774
+
775
+ /**
776
+ * Describes the enum kusinta.iot.reporting.v1.ProblemKind.
777
+ */
778
+ export declare const ProblemKindSchema: GenEnum<ProblemKind>;
779
+
780
+ /**
781
+ * Why a problem closed.
782
+ *
783
+ * @generated from enum kusinta.iot.reporting.v1.ClearReason
784
+ */
785
+ export enum ClearReason {
786
+ /**
787
+ * @generated from enum value: CLEAR_REASON_UNSPECIFIED = 0;
788
+ */
789
+ UNSPECIFIED = 0,
790
+
791
+ /**
792
+ * The condition ended: the device was heard, its battery recovered or was replaced, the
793
+ * connector came back, the window closed.
794
+ *
795
+ * @generated from enum value: CLEAR_REASON_RECOVERED = 1;
796
+ */
797
+ RECOVERED = 1,
798
+
799
+ /**
800
+ * The unfiled devices were filed.
801
+ *
802
+ * @generated from enum value: CLEAR_REASON_FILED = 2;
803
+ */
804
+ FILED = 2,
805
+
806
+ /**
807
+ * The device was removed from the gateway. Every problem open on it closes with this.
808
+ *
809
+ * @generated from enum value: CLEAR_REASON_DEVICE_REMOVED = 3;
810
+ */
811
+ DEVICE_REMOVED = 3,
812
+
813
+ /**
814
+ * The connector behind the device went offline; see PROBLEM_KIND_CONNECTOR_OFFLINE.
815
+ *
816
+ * @generated from enum value: CLEAR_REASON_SUPERSEDED_BY_CONNECTOR_OFFLINE = 4;
817
+ */
818
+ SUPERSEDED_BY_CONNECTOR_OFFLINE = 4,
819
+
820
+ /**
821
+ * The problem's subject left what the gateway reports, though the condition may hold: a
822
+ * device now owned by a resident, a room moved into a home. Sent, and stamped, at the next
823
+ * quarter hour.
824
+ *
825
+ * @generated from enum value: CLEAR_REASON_NO_LONGER_REPORTED = 5;
826
+ */
827
+ NO_LONGER_REPORTED = 5,
828
+
829
+ /**
830
+ * The subject moved into or out of a home. A problem that still holds opens again as a new
831
+ * one at the same quarter hour.
832
+ *
833
+ * @generated from enum value: CLEAR_REASON_MOVED = 6;
834
+ */
835
+ MOVED = 6,
836
+ }
837
+
838
+ /**
839
+ * Describes the enum kusinta.iot.reporting.v1.ClearReason.
840
+ */
841
+ export declare const ClearReasonSchema: GenEnum<ClearReason>;
842
+
843
+ /**
844
+ * What the api-server made of one transition.
845
+ *
846
+ * @generated from enum kusinta.iot.reporting.v1.AckStatus
847
+ */
848
+ export enum AckStatus {
849
+ /**
850
+ * @generated from enum value: ACK_STATUS_UNSPECIFIED = 0;
851
+ */
852
+ UNSPECIFIED = 0,
853
+
854
+ /**
855
+ * Applied now.
856
+ *
857
+ * @generated from enum value: ACK_STATUS_APPLIED = 1;
858
+ */
859
+ APPLIED = 1,
860
+
861
+ /**
862
+ * Already held, or overtaken by a later transition of the same problem; not applied.
863
+ *
864
+ * @generated from enum value: ACK_STATUS_DUPLICATE = 2;
865
+ */
866
+ DUPLICATE = 2,
867
+
868
+ /**
869
+ * Not applied, and never will be: malformed, or for something this gateway may not report.
870
+ * The gateway does not send it again. Never because of what the api-server holds of spaces —
871
+ * one it does not hold, one since removed, one it still files elsewhere: the three concerns
872
+ * are not ordered against each other, so a problem may run ahead of or behind its space, and
873
+ * is kept (see ServiceReach for who sees it).
874
+ *
875
+ * @generated from enum value: ACK_STATUS_REJECTED = 3;
876
+ */
877
+ REJECTED = 3,
878
+
879
+ /**
880
+ * Part of a snapshot not yet complete: received, to be applied with the last part.
881
+ *
882
+ * @generated from enum value: ACK_STATUS_HELD = 4;
883
+ */
884
+ HELD = 4,
885
+ }
886
+
887
+ /**
888
+ * Describes the enum kusinta.iot.reporting.v1.AckStatus.
889
+ */
890
+ export declare const AckStatusSchema: GenEnum<AckStatus>;
891
+
@@ -0,0 +1,164 @@
1
+ // @generated by protoc-gen-es v2.12.0 with parameter "target=js+dts,import_extension=js"
2
+ // @generated from file kusinta/iot/reporting/v1/reporting.proto (package kusinta.iot.reporting.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_common_v1_types } from "../../common/v1/types_pb.js";
8
+ import { file_kusinta_iot_identity_v1_identity } from "../../identity/v1/identity_pb.js";
9
+
10
+ /**
11
+ * Describes the file kusinta/iot/reporting/v1/reporting.proto.
12
+ */
13
+ export const file_kusinta_iot_reporting_v1_reporting = /*@__PURE__*/
14
+ fileDesc("CihrdXNpbnRhL2lvdC9yZXBvcnRpbmcvdjEvcmVwb3J0aW5nLnByb3RvEhhrdXNpbnRhLmlvdC5yZXBvcnRpbmcudjEiPwoMU25hcHNob3RQYXJ0EhMKC3NuYXBzaG90X2lkGAEgASgJEgwKBHBhcnQYAiABKA0SDAoEbGFzdBgDIAEoCCLZAQoOUHJvYmxlbVN1YmplY3QSNgoJZGV2aWNlX2lkGAEgASgLMiEua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuRGV2aWNlSWRIABI8Cgxjb25uZWN0b3JfaWQYAiABKAsyJC5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5Db25uZWN0b3JJZEgAEjMKB3Jvb21faWQYAyABKAsyIC5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5TcGFjZUlkSAASEQoHZ2F0ZXdheRgEIAEoCEgAQgkKB3N1YmplY3QipAIKB1Byb2JsZW0SMwoEa2luZBgCIAEoDjIlLmt1c2ludGEuaW90LnJlcG9ydGluZy52MS5Qcm9ibGVtS2luZBI5CgdzdWJqZWN0GAMgASgLMigua3VzaW50YS5pb3QucmVwb3J0aW5nLnYxLlByb2JsZW1TdWJqZWN0EjIKCHNwYWNlX2lkGAQgASgLMiAua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuU3BhY2VJZBItCglvcGVuZWRfYXQYBSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhwKD2JhdHRlcnlfcGVyY2VudBgGIAEoDUgAiAEBEhQKDGRldmljZV9jb3VudBgHIAEoDUISChBfYmF0dGVyeV9wZXJjZW50IncKDlByb2JsZW1DbGVhcmVkEi4KCmNsZWFyZWRfYXQYASABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjUKBnJlYXNvbhgCIAEoDjIlLmt1c2ludGEuaW90LnJlcG9ydGluZy52MS5DbGVhclJlYXNvbiKuAQoRUHJvYmxlbVRyYW5zaXRpb24SEgoKcHJvYmxlbV9pZBgBIAEoCRILCgNzZXEYAiABKAQSMQoEb3BlbhgDIAEoCzIhLmt1c2ludGEuaW90LnJlcG9ydGluZy52MS5Qcm9ibGVtSAASOwoHY2xlYXJlZBgEIAEoCzIoLmt1c2ludGEuaW90LnJlcG9ydGluZy52MS5Qcm9ibGVtQ2xlYXJlZEgAQggKBmNoYW5nZSLQAQoVUmVwb3J0UHJvYmxlbXNSZXF1ZXN0EhEKCXN0cmVhbV9pZBgDIAEoCRIbChNwcmV2aW91c19zdHJlYW1faWRzGAUgAygJEgsKA3NlcRgEIAEoBBJACgt0cmFuc2l0aW9ucxgBIAMoCzIrLmt1c2ludGEuaW90LnJlcG9ydGluZy52MS5Qcm9ibGVtVHJhbnNpdGlvbhI4CghzbmFwc2hvdBgCIAEoCzImLmt1c2ludGEuaW90LnJlcG9ydGluZy52MS5TbmFwc2hvdFBhcnQiZQoNVHJhbnNpdGlvbkFjaxISCgpwcm9ibGVtX2lkGAEgASgJEgsKA3NlcRgCIAEoBBIzCgZzdGF0dXMYAyABKA4yIy5rdXNpbnRhLmlvdC5yZXBvcnRpbmcudjEuQWNrU3RhdHVzIn0KFlJlcG9ydFByb2JsZW1zUmVzcG9uc2USNQoEYWNrcxgBIAMoCzInLmt1c2ludGEuaW90LnJlcG9ydGluZy52MS5UcmFuc2l0aW9uQWNrEhMKC2FwcGxpZWRfc2VxGAMgASgEEhcKD3Jlc3luY19yZXF1aXJlZBgCIAEoCCJ4CgxTZXJ2aWNlUmVhY2gSMAoHdXNlcl9pZBgBIAEoCzIfLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLlVzZXJJZBI2CgZzcGFjZXMYAyADKAsyJi5rdXNpbnRhLmlvdC5yZXBvcnRpbmcudjEuUmVhY2hlZFNwYWNlIm0KDFJlYWNoZWRTcGFjZRIyCghzcGFjZV9pZBgBIAEoCzIgLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLlNwYWNlSWQSKQoFc2luY2UYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wIoQCChlSZXBvcnRTZXJ2aWNlUmVhY2hSZXF1ZXN0EhEKCXN0cmVhbV9pZBgFIAEoCRIbChNwcmV2aW91c19zdHJlYW1faWRzGAYgAygJEgsKA3NlcRgBIAEoBBI1CgVyZWFjaBgCIAMoCzImLmt1c2ludGEuaW90LnJlcG9ydGluZy52MS5TZXJ2aWNlUmVhY2gSOQoQcmVtb3ZlZF91c2VyX2lkcxgDIAMoCzIfLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLlVzZXJJZBI4CghzbmFwc2hvdBgEIAEoCzImLmt1c2ludGEuaW90LnJlcG9ydGluZy52MS5TbmFwc2hvdFBhcnQiSgoaUmVwb3J0U2VydmljZVJlYWNoUmVzcG9uc2USEwoLYXBwbGllZF9zZXEYASABKAQSFwoPcmVzeW5jX3JlcXVpcmVkGAIgASgIIuIBCgtTZXJ2ZWRTcGFjZRIyCghzcGFjZV9pZBgBIAEoCzIgLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLlNwYWNlSWQSNAoKc3BhY2VfdHlwZRgCIAEoDjIgLmt1c2ludGEuaW90LmNvbW1vbi52MS5TcGFjZVR5cGUSDAoEbmFtZRgDIAEoCRI5Cg9wYXJlbnRfc3BhY2VfaWQYBCABKAsyIC5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5TcGFjZUlkEg0KBWZsb29yGAUgASgFEhEKCXRpbWVfem9uZRgGIAEoCSKGAgoZUmVwb3J0U2VydmVkU3BhY2VzUmVxdWVzdBIRCglzdHJlYW1faWQYBSABKAkSGwoTcHJldmlvdXNfc3RyZWFtX2lkcxgGIAMoCRILCgNzZXEYASABKAQSNQoGc3BhY2VzGAIgAygLMiUua3VzaW50YS5pb3QucmVwb3J0aW5nLnYxLlNlcnZlZFNwYWNlEjsKEXJlbW92ZWRfc3BhY2VfaWRzGAMgAygLMiAua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuU3BhY2VJZBI4CghzbmFwc2hvdBgEIAEoCzImLmt1c2ludGEuaW90LnJlcG9ydGluZy52MS5TbmFwc2hvdFBhcnQiSgoaUmVwb3J0U2VydmVkU3BhY2VzUmVzcG9uc2USEwoLYXBwbGllZF9zZXEYASABKAQSFwoPcmVzeW5jX3JlcXVpcmVkGAIgASgIKtwCCgtQcm9ibGVtS2luZBIcChhQUk9CTEVNX0tJTkRfVU5TUEVDSUZJRUQQABIfChtQUk9CTEVNX0tJTkRfREVWSUNFX09GRkxJTkUQARIcChhQUk9CTEVNX0tJTkRfQkFUVEVSWV9MT1cQAhIrCidQUk9CTEVNX0tJTkRfQkFUVEVSWV9SRVBMQUNFTUVOVF9ORUVERUQQAxIdChlQUk9CTEVNX0tJTkRfREVWSUNFX0VSUk9SEAQSHgoaUFJPQkxFTV9LSU5EX0RFVklDRV9UQU1QRVIQBRIiCh5QUk9CTEVNX0tJTkRfQ09OTkVDVE9SX09GRkxJTkUQBhIgChxQUk9CTEVNX0tJTkRfQ09OTkVDVE9SX0VSUk9SEAcSIAocUFJPQkxFTV9LSU5EX1VORklMRURfREVWSUNFUxAIEhwKGFBST0JMRU1fS0lORF9XSU5ET1dfT1BFThAJKu8BCgtDbGVhclJlYXNvbhIcChhDTEVBUl9SRUFTT05fVU5TUEVDSUZJRUQQABIaChZDTEVBUl9SRUFTT05fUkVDT1ZFUkVEEAESFgoSQ0xFQVJfUkVBU09OX0ZJTEVEEAISHwobQ0xFQVJfUkVBU09OX0RFVklDRV9SRU1PVkVEEAMSMAosQ0xFQVJfUkVBU09OX1NVUEVSU0VERURfQllfQ09OTkVDVE9SX09GRkxJTkUQBBIjCh9DTEVBUl9SRUFTT05fTk9fTE9OR0VSX1JFUE9SVEVEEAUSFgoSQ0xFQVJfUkVBU09OX01PVkVEEAYqhwEKCUFja1N0YXR1cxIaChZBQ0tfU1RBVFVTX1VOU1BFQ0lGSUVEEAASFgoSQUNLX1NUQVRVU19BUFBMSUVEEAESGAoUQUNLX1NUQVRVU19EVVBMSUNBVEUQAhIXChNBQ0tfU1RBVFVTX1JFSkVDVEVEEAMSEwoPQUNLX1NUQVRVU19IRUxEEARCAkgBYgZwcm90bzM", [file_google_protobuf_timestamp, file_kusinta_iot_common_v1_types, file_kusinta_iot_identity_v1_identity]);
15
+
16
+ /**
17
+ * Describes the message kusinta.iot.reporting.v1.SnapshotPart.
18
+ * Use `create(SnapshotPartSchema)` to create a new message.
19
+ */
20
+ export const SnapshotPartSchema = /*@__PURE__*/
21
+ messageDesc(file_kusinta_iot_reporting_v1_reporting, 0);
22
+
23
+ /**
24
+ * Describes the message kusinta.iot.reporting.v1.ProblemSubject.
25
+ * Use `create(ProblemSubjectSchema)` to create a new message.
26
+ */
27
+ export const ProblemSubjectSchema = /*@__PURE__*/
28
+ messageDesc(file_kusinta_iot_reporting_v1_reporting, 1);
29
+
30
+ /**
31
+ * Describes the message kusinta.iot.reporting.v1.Problem.
32
+ * Use `create(ProblemSchema)` to create a new message.
33
+ */
34
+ export const ProblemSchema = /*@__PURE__*/
35
+ messageDesc(file_kusinta_iot_reporting_v1_reporting, 2);
36
+
37
+ /**
38
+ * Describes the message kusinta.iot.reporting.v1.ProblemCleared.
39
+ * Use `create(ProblemClearedSchema)` to create a new message.
40
+ */
41
+ export const ProblemClearedSchema = /*@__PURE__*/
42
+ messageDesc(file_kusinta_iot_reporting_v1_reporting, 3);
43
+
44
+ /**
45
+ * Describes the message kusinta.iot.reporting.v1.ProblemTransition.
46
+ * Use `create(ProblemTransitionSchema)` to create a new message.
47
+ */
48
+ export const ProblemTransitionSchema = /*@__PURE__*/
49
+ messageDesc(file_kusinta_iot_reporting_v1_reporting, 4);
50
+
51
+ /**
52
+ * Describes the message kusinta.iot.reporting.v1.ReportProblemsRequest.
53
+ * Use `create(ReportProblemsRequestSchema)` to create a new message.
54
+ */
55
+ export const ReportProblemsRequestSchema = /*@__PURE__*/
56
+ messageDesc(file_kusinta_iot_reporting_v1_reporting, 5);
57
+
58
+ /**
59
+ * Describes the message kusinta.iot.reporting.v1.TransitionAck.
60
+ * Use `create(TransitionAckSchema)` to create a new message.
61
+ */
62
+ export const TransitionAckSchema = /*@__PURE__*/
63
+ messageDesc(file_kusinta_iot_reporting_v1_reporting, 6);
64
+
65
+ /**
66
+ * Describes the message kusinta.iot.reporting.v1.ReportProblemsResponse.
67
+ * Use `create(ReportProblemsResponseSchema)` to create a new message.
68
+ */
69
+ export const ReportProblemsResponseSchema = /*@__PURE__*/
70
+ messageDesc(file_kusinta_iot_reporting_v1_reporting, 7);
71
+
72
+ /**
73
+ * Describes the message kusinta.iot.reporting.v1.ServiceReach.
74
+ * Use `create(ServiceReachSchema)` to create a new message.
75
+ */
76
+ export const ServiceReachSchema = /*@__PURE__*/
77
+ messageDesc(file_kusinta_iot_reporting_v1_reporting, 8);
78
+
79
+ /**
80
+ * Describes the message kusinta.iot.reporting.v1.ReachedSpace.
81
+ * Use `create(ReachedSpaceSchema)` to create a new message.
82
+ */
83
+ export const ReachedSpaceSchema = /*@__PURE__*/
84
+ messageDesc(file_kusinta_iot_reporting_v1_reporting, 9);
85
+
86
+ /**
87
+ * Describes the message kusinta.iot.reporting.v1.ReportServiceReachRequest.
88
+ * Use `create(ReportServiceReachRequestSchema)` to create a new message.
89
+ */
90
+ export const ReportServiceReachRequestSchema = /*@__PURE__*/
91
+ messageDesc(file_kusinta_iot_reporting_v1_reporting, 10);
92
+
93
+ /**
94
+ * Describes the message kusinta.iot.reporting.v1.ReportServiceReachResponse.
95
+ * Use `create(ReportServiceReachResponseSchema)` to create a new message.
96
+ */
97
+ export const ReportServiceReachResponseSchema = /*@__PURE__*/
98
+ messageDesc(file_kusinta_iot_reporting_v1_reporting, 11);
99
+
100
+ /**
101
+ * Describes the message kusinta.iot.reporting.v1.ServedSpace.
102
+ * Use `create(ServedSpaceSchema)` to create a new message.
103
+ */
104
+ export const ServedSpaceSchema = /*@__PURE__*/
105
+ messageDesc(file_kusinta_iot_reporting_v1_reporting, 12);
106
+
107
+ /**
108
+ * Describes the message kusinta.iot.reporting.v1.ReportServedSpacesRequest.
109
+ * Use `create(ReportServedSpacesRequestSchema)` to create a new message.
110
+ */
111
+ export const ReportServedSpacesRequestSchema = /*@__PURE__*/
112
+ messageDesc(file_kusinta_iot_reporting_v1_reporting, 13);
113
+
114
+ /**
115
+ * Describes the message kusinta.iot.reporting.v1.ReportServedSpacesResponse.
116
+ * Use `create(ReportServedSpacesResponseSchema)` to create a new message.
117
+ */
118
+ export const ReportServedSpacesResponseSchema = /*@__PURE__*/
119
+ messageDesc(file_kusinta_iot_reporting_v1_reporting, 14);
120
+
121
+ /**
122
+ * Describes the enum kusinta.iot.reporting.v1.ProblemKind.
123
+ */
124
+ export const ProblemKindSchema = /*@__PURE__*/
125
+ enumDesc(file_kusinta_iot_reporting_v1_reporting, 0);
126
+
127
+ /**
128
+ * What kind of problem is open. The device kinds mirror what service staff are given of a
129
+ * device (webrtc.v1.ServiceStatus: reachability, the battery flags, the ServiceFault values);
130
+ * a device signal added there is added here too.
131
+ *
132
+ * @generated from enum kusinta.iot.reporting.v1.ProblemKind
133
+ */
134
+ export const ProblemKind = /*@__PURE__*/
135
+ tsEnum(ProblemKindSchema);
136
+
137
+ /**
138
+ * Describes the enum kusinta.iot.reporting.v1.ClearReason.
139
+ */
140
+ export const ClearReasonSchema = /*@__PURE__*/
141
+ enumDesc(file_kusinta_iot_reporting_v1_reporting, 1);
142
+
143
+ /**
144
+ * Why a problem closed.
145
+ *
146
+ * @generated from enum kusinta.iot.reporting.v1.ClearReason
147
+ */
148
+ export const ClearReason = /*@__PURE__*/
149
+ tsEnum(ClearReasonSchema);
150
+
151
+ /**
152
+ * Describes the enum kusinta.iot.reporting.v1.AckStatus.
153
+ */
154
+ export const AckStatusSchema = /*@__PURE__*/
155
+ enumDesc(file_kusinta_iot_reporting_v1_reporting, 2);
156
+
157
+ /**
158
+ * What the api-server made of one transition.
159
+ *
160
+ * @generated from enum kusinta.iot.reporting.v1.AckStatus
161
+ */
162
+ export const AckStatus = /*@__PURE__*/
163
+ tsEnum(AckStatusSchema);
164
+
@@ -0,0 +1,47 @@
1
+ // @generated by protoc-gen-es v2.12.0 with parameter "target=js+dts,import_extension=js"
2
+ // @generated from file kusinta/iot/reporting/v1/reporting_service.proto (package kusinta.iot.reporting.v1, syntax proto3)
3
+ /* eslint-disable */
4
+
5
+ import type { GenFile, GenService } from "@bufbuild/protobuf/codegenv2";
6
+ import type { ReportProblemsRequestSchema, ReportProblemsResponseSchema, ReportServedSpacesRequestSchema, ReportServedSpacesResponseSchema, ReportServiceReachRequestSchema, ReportServiceReachResponseSchema } from "./reporting_pb.js";
7
+
8
+ /**
9
+ * Describes the file kusinta/iot/reporting/v1/reporting_service.proto.
10
+ */
11
+ export declare const file_kusinta_iot_reporting_v1_reporting_service: GenFile;
12
+
13
+ /**
14
+ * The building-server gateway's reports to the api-server, over the gateway's client
15
+ * certificate: which gateway is reporting comes from the certificate. Three unary calls, one
16
+ * per concern, each with its own stream of reports, so a slow call for one never holds back
17
+ * another.
18
+ *
19
+ * @generated from service kusinta.iot.reporting.v1.GatewayReportingService
20
+ */
21
+ export declare const GatewayReportingService: GenService<{
22
+ /**
23
+ * @generated from rpc kusinta.iot.reporting.v1.GatewayReportingService.ReportProblems
24
+ */
25
+ reportProblems: {
26
+ methodKind: "unary";
27
+ input: typeof ReportProblemsRequestSchema;
28
+ output: typeof ReportProblemsResponseSchema;
29
+ },
30
+ /**
31
+ * @generated from rpc kusinta.iot.reporting.v1.GatewayReportingService.ReportServiceReach
32
+ */
33
+ reportServiceReach: {
34
+ methodKind: "unary";
35
+ input: typeof ReportServiceReachRequestSchema;
36
+ output: typeof ReportServiceReachResponseSchema;
37
+ },
38
+ /**
39
+ * @generated from rpc kusinta.iot.reporting.v1.GatewayReportingService.ReportServedSpaces
40
+ */
41
+ reportServedSpaces: {
42
+ methodKind: "unary";
43
+ input: typeof ReportServedSpacesRequestSchema;
44
+ output: typeof ReportServedSpacesResponseSchema;
45
+ },
46
+ }>;
47
+
@@ -0,0 +1,24 @@
1
+ // @generated by protoc-gen-es v2.12.0 with parameter "target=js+dts,import_extension=js"
2
+ // @generated from file kusinta/iot/reporting/v1/reporting_service.proto (package kusinta.iot.reporting.v1, syntax proto3)
3
+ /* eslint-disable */
4
+
5
+ import { fileDesc, serviceDesc } from "@bufbuild/protobuf/codegenv2";
6
+ import { file_kusinta_iot_reporting_v1_reporting } from "./reporting_pb.js";
7
+
8
+ /**
9
+ * Describes the file kusinta/iot/reporting/v1/reporting_service.proto.
10
+ */
11
+ export const file_kusinta_iot_reporting_v1_reporting_service = /*@__PURE__*/
12
+ fileDesc("CjBrdXNpbnRhL2lvdC9yZXBvcnRpbmcvdjEvcmVwb3J0aW5nX3NlcnZpY2UucHJvdG8SGGt1c2ludGEuaW90LnJlcG9ydGluZy52MTKQAwoXR2F0ZXdheVJlcG9ydGluZ1NlcnZpY2UScwoOUmVwb3J0UHJvYmxlbXMSLy5rdXNpbnRhLmlvdC5yZXBvcnRpbmcudjEuUmVwb3J0UHJvYmxlbXNSZXF1ZXN0GjAua3VzaW50YS5pb3QucmVwb3J0aW5nLnYxLlJlcG9ydFByb2JsZW1zUmVzcG9uc2USfwoSUmVwb3J0U2VydmljZVJlYWNoEjMua3VzaW50YS5pb3QucmVwb3J0aW5nLnYxLlJlcG9ydFNlcnZpY2VSZWFjaFJlcXVlc3QaNC5rdXNpbnRhLmlvdC5yZXBvcnRpbmcudjEuUmVwb3J0U2VydmljZVJlYWNoUmVzcG9uc2USfwoSUmVwb3J0U2VydmVkU3BhY2VzEjMua3VzaW50YS5pb3QucmVwb3J0aW5nLnYxLlJlcG9ydFNlcnZlZFNwYWNlc1JlcXVlc3QaNC5rdXNpbnRhLmlvdC5yZXBvcnRpbmcudjEuUmVwb3J0U2VydmVkU3BhY2VzUmVzcG9uc2VCAkgBYgZwcm90bzM", [file_kusinta_iot_reporting_v1_reporting]);
13
+
14
+ /**
15
+ * The building-server gateway's reports to the api-server, over the gateway's client
16
+ * certificate: which gateway is reporting comes from the certificate. Three unary calls, one
17
+ * per concern, each with its own stream of reports, so a slow call for one never holds back
18
+ * another.
19
+ *
20
+ * @generated from service kusinta.iot.reporting.v1.GatewayReportingService
21
+ */
22
+ export const GatewayReportingService = /*@__PURE__*/
23
+ serviceDesc(file_kusinta_iot_reporting_v1_reporting_service, 0);
24
+