@kusinta/iot-schema 0.1.0-beta.2 → 0.1.0-beta.20

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 (55) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +49 -0
  3. package/package.json +9 -2
  4. package/src/kusinta/iot/access/v1/acl_pb.d.ts +3 -3
  5. package/src/kusinta/iot/access/v1/acl_pb.js +3 -3
  6. package/src/kusinta/iot/access/v1/roles_pb.d.ts +1 -1
  7. package/src/kusinta/iot/access/v1/roles_pb.js +1 -1
  8. package/src/kusinta/iot/common/v1/types_pb.d.ts +1 -1
  9. package/src/kusinta/iot/common/v1/types_pb.js +1 -1
  10. package/src/kusinta/iot/connector/v1/connector_pb.d.ts +31 -24
  11. package/src/kusinta/iot/connector/v1/connector_pb.js +16 -15
  12. package/src/kusinta/iot/connector/v1/connector_service_pb.d.ts +6 -6
  13. package/src/kusinta/iot/connector/v1/connector_service_pb.js +3 -3
  14. package/src/kusinta/iot/device/v1/descriptor_pb.d.ts +3 -3
  15. package/src/kusinta/iot/device/v1/descriptor_pb.js +3 -3
  16. package/src/kusinta/iot/device/v1/device_pb.d.ts +36 -4
  17. package/src/kusinta/iot/device/v1/device_pb.js +4 -4
  18. package/src/kusinta/iot/device/v1/matter_options_pb.d.ts +46 -0
  19. package/src/kusinta/iot/device/v1/matter_options_pb.js +50 -0
  20. package/src/kusinta/iot/device/v1/properties_pb.d.ts +175 -208
  21. package/src/kusinta/iot/device/v1/properties_pb.js +3 -2
  22. package/src/kusinta/iot/device/v1/property_update_pb.d.ts +37 -4
  23. package/src/kusinta/iot/device/v1/property_update_pb.js +2 -2
  24. package/src/kusinta/iot/identity/v1/identity_pb.d.ts +1 -1
  25. package/src/kusinta/iot/identity/v1/identity_pb.js +1 -1
  26. package/src/kusinta/iot/registration/v1/registration_pb.d.ts +170 -0
  27. package/src/kusinta/iot/registration/v1/registration_pb.js +61 -0
  28. package/src/kusinta/iot/registration/v1/registration_service_pb.d.ts +34 -0
  29. package/src/kusinta/iot/registration/v1/registration_service_pb.js +19 -0
  30. package/src/kusinta/iot/signaling/v1/signaling_pb.d.ts +319 -0
  31. package/src/kusinta/iot/signaling/v1/signaling_pb.js +83 -0
  32. package/src/kusinta/iot/signaling/v1/signaling_service_pb.d.ts +34 -0
  33. package/src/kusinta/iot/signaling/v1/signaling_service_pb.js +19 -0
  34. package/src/kusinta/iot/space/v1/space_pb.d.ts +3 -3
  35. package/src/kusinta/iot/space/v1/space_pb.js +3 -3
  36. package/src/kusinta/iot/vendor/homematic/v1/homematic_pb.d.ts +16 -11
  37. package/src/kusinta/iot/vendor/homematic/v1/homematic_pb.js +2 -2
  38. package/src/kusinta/iot/webrtc/v1/app_token_pb.d.ts +153 -0
  39. package/src/kusinta/iot/webrtc/v1/app_token_pb.js +28 -0
  40. package/src/kusinta/iot/webrtc/v1/command_pb.d.ts +3 -3
  41. package/src/kusinta/iot/webrtc/v1/command_pb.js +2 -2
  42. package/src/kusinta/iot/webrtc/v1/device_state_pb.d.ts +67 -4
  43. package/src/kusinta/iot/webrtc/v1/device_state_pb.js +20 -5
  44. package/src/kusinta/iot/webrtc/v1/envelope_pb.d.ts +282 -13
  45. package/src/kusinta/iot/webrtc/v1/envelope_pb.js +70 -11
  46. package/src/kusinta/iot/webrtc/v1/permission_push_pb.d.ts +9 -3
  47. package/src/kusinta/iot/webrtc/v1/permission_push_pb.js +3 -3
  48. package/src/__tests__/access.test.js +0 -134
  49. package/src/__tests__/common.test.js +0 -29
  50. package/src/__tests__/connector.test.js +0 -144
  51. package/src/__tests__/device.test.js +0 -194
  52. package/src/__tests__/identity.test.js +0 -43
  53. package/src/__tests__/space.test.js +0 -54
  54. package/src/__tests__/vendor.test.js +0 -60
  55. package/src/__tests__/webrtc.test.js +0 -268
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Kusinta AB
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,49 @@
1
+ # @kusinta/iot-schema
2
+
3
+ Generated protobuf types for the Kusinta building automation platform, built with [protobuf-es](https://github.com/bufbuild/protobuf-es).
4
+
5
+ ## Install
6
+
7
+ ```bash
8
+ npm install @kusinta/iot-schema
9
+ ```
10
+
11
+ Requires `@bufbuild/protobuf` as a peer dependency (installed automatically).
12
+
13
+ ## Requirements
14
+
15
+ - Node.js 18+ (ESM — `"type": "module"`)
16
+ - `@bufbuild/protobuf` ^2.x (installed automatically as a peer dependency)
17
+
18
+ Works in raw Node.js ESM projects without a bundler.
19
+
20
+ ## Usage
21
+
22
+ ```javascript
23
+ import { create, toBinary, fromBinary } from '@bufbuild/protobuf'
24
+ import { DeviceSchema } from '@kusinta/iot-schema/device'
25
+ import { SpaceSchema } from '@kusinta/iot-schema/space'
26
+
27
+ const device = create(DeviceSchema, { ... })
28
+ const bytes = toBinary(DeviceSchema, device)
29
+ const decoded = fromBinary(DeviceSchema, bytes)
30
+ ```
31
+
32
+ ## Available imports
33
+
34
+ | Import | Contents |
35
+ |---|---|
36
+ | `@kusinta/iot-schema/common` | Shared enums and types |
37
+ | `@kusinta/iot-schema/identity` | Strongly-typed ID wrappers |
38
+ | `@kusinta/iot-schema/device` | Device, DeviceDescriptor |
39
+ | `@kusinta/iot-schema/device/descriptor` | DeviceDescriptor |
40
+ | `@kusinta/iot-schema/device/properties` | Per-device-type property messages |
41
+ | `@kusinta/iot-schema/device/property-update` | PropertyUpdate |
42
+ | `@kusinta/iot-schema/space` | Space (building hierarchy) |
43
+ | `@kusinta/iot-schema/access` | DeviceAcl, EffectivePermissions |
44
+ | `@kusinta/iot-schema/access/roles` | Roles, PermissionAction |
45
+ | `@kusinta/iot-schema/connector` | Connector ↔ gateway messages |
46
+ | `@kusinta/iot-schema/connector/service` | gRPC service definition |
47
+ | `@kusinta/iot-schema/webrtc` | WebRTC envelope messages |
48
+
49
+ Source: [github.com/Martwall/kusinta-iot-schema](https://github.com/Martwall/kusinta-iot-schema)
package/package.json CHANGED
@@ -1,7 +1,8 @@
1
1
  {
2
2
  "name": "@kusinta/iot-schema",
3
- "version": "0.1.0-beta.2",
3
+ "version": "0.1.0-beta.20",
4
4
  "type": "module",
5
+ "license": "MIT",
5
6
  "files": ["src"],
6
7
  "scripts": {
7
8
  "test": "vitest run",
@@ -13,13 +14,19 @@
13
14
  "./device": "./src/kusinta/iot/device/v1/device_pb.js",
14
15
  "./device/descriptor": "./src/kusinta/iot/device/v1/descriptor_pb.js",
15
16
  "./device/properties": "./src/kusinta/iot/device/v1/properties_pb.js",
17
+ "./device/matter-options": "./src/kusinta/iot/device/v1/matter_options_pb.js",
16
18
  "./device/property-update": "./src/kusinta/iot/device/v1/property_update_pb.js",
17
19
  "./space": "./src/kusinta/iot/space/v1/space_pb.js",
18
20
  "./access": "./src/kusinta/iot/access/v1/acl_pb.js",
19
21
  "./access/roles": "./src/kusinta/iot/access/v1/roles_pb.js",
20
22
  "./connector": "./src/kusinta/iot/connector/v1/connector_pb.js",
21
23
  "./connector/service": "./src/kusinta/iot/connector/v1/connector_service_pb.js",
22
- "./webrtc": "./src/kusinta/iot/webrtc/v1/envelope_pb.js"
24
+ "./webrtc": "./src/kusinta/iot/webrtc/v1/envelope_pb.js",
25
+ "./webrtc/app-token": "./src/kusinta/iot/webrtc/v1/app_token_pb.js",
26
+ "./registration": "./src/kusinta/iot/registration/v1/registration_pb.js",
27
+ "./registration/service": "./src/kusinta/iot/registration/v1/registration_service_pb.js",
28
+ "./signaling": "./src/kusinta/iot/signaling/v1/signaling_pb.js",
29
+ "./signaling/service": "./src/kusinta/iot/signaling/v1/signaling_service_pb.js"
23
30
  },
24
31
  "dependencies": {
25
32
  "@bufbuild/protobuf": "^2.12.0"
@@ -1,11 +1,11 @@
1
- // @generated by protoc-gen-es v2.12.0 with parameter "target=js+dts"
1
+ // @generated by protoc-gen-es v2.12.0 with parameter "target=js+dts,import_extension=js"
2
2
  // @generated from file kusinta/iot/access/v1/acl.proto (package kusinta.iot.access.v1, syntax proto3)
3
3
  /* eslint-disable */
4
4
 
5
5
  import type { GenFile, GenMessage } from "@bufbuild/protobuf/codegenv2";
6
6
  import type { Message } from "@bufbuild/protobuf";
7
- import type { DeviceId, GatewayId, UserId } from "../../identity/v1/identity_pb";
8
- import type { PermissionAction, Role } from "./roles_pb";
7
+ import type { DeviceId, GatewayId, UserId } from "../../identity/v1/identity_pb.js";
8
+ import type { PermissionAction, Role } from "./roles_pb.js";
9
9
  import type { Timestamp } from "@bufbuild/protobuf/wkt";
10
10
 
11
11
  /**
@@ -1,11 +1,11 @@
1
- // @generated by protoc-gen-es v2.12.0 with parameter "target=js+dts"
1
+ // @generated by protoc-gen-es v2.12.0 with parameter "target=js+dts,import_extension=js"
2
2
  // @generated from file kusinta/iot/access/v1/acl.proto (package kusinta.iot.access.v1, syntax proto3)
3
3
  /* eslint-disable */
4
4
 
5
5
  import { fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv2";
6
6
  import { file_google_protobuf_timestamp } from "@bufbuild/protobuf/wkt";
7
- import { file_kusinta_iot_identity_v1_identity } from "../../identity/v1/identity_pb";
8
- import { file_kusinta_iot_access_v1_roles } from "./roles_pb";
7
+ import { file_kusinta_iot_identity_v1_identity } from "../../identity/v1/identity_pb.js";
8
+ import { file_kusinta_iot_access_v1_roles } from "./roles_pb.js";
9
9
 
10
10
  /**
11
11
  * Describes the file kusinta/iot/access/v1/acl.proto.
@@ -1,4 +1,4 @@
1
- // @generated by protoc-gen-es v2.12.0 with parameter "target=js+dts"
1
+ // @generated by protoc-gen-es v2.12.0 with parameter "target=js+dts,import_extension=js"
2
2
  // @generated from file kusinta/iot/access/v1/roles.proto (package kusinta.iot.access.v1, syntax proto3)
3
3
  /* eslint-disable */
4
4
 
@@ -1,4 +1,4 @@
1
- // @generated by protoc-gen-es v2.12.0 with parameter "target=js+dts"
1
+ // @generated by protoc-gen-es v2.12.0 with parameter "target=js+dts,import_extension=js"
2
2
  // @generated from file kusinta/iot/access/v1/roles.proto (package kusinta.iot.access.v1, syntax proto3)
3
3
  /* eslint-disable */
4
4
 
@@ -1,4 +1,4 @@
1
- // @generated by protoc-gen-es v2.12.0 with parameter "target=js+dts"
1
+ // @generated by protoc-gen-es v2.12.0 with parameter "target=js+dts,import_extension=js"
2
2
  // @generated from file kusinta/iot/common/v1/types.proto (package kusinta.iot.common.v1, syntax proto3)
3
3
  /* eslint-disable */
4
4
 
@@ -1,4 +1,4 @@
1
- // @generated by protoc-gen-es v2.12.0 with parameter "target=js+dts"
1
+ // @generated by protoc-gen-es v2.12.0 with parameter "target=js+dts,import_extension=js"
2
2
  // @generated from file kusinta/iot/common/v1/types.proto (package kusinta.iot.common.v1, syntax proto3)
3
3
  /* eslint-disable */
4
4
 
@@ -1,14 +1,15 @@
1
- // @generated by protoc-gen-es v2.12.0 with parameter "target=js+dts"
1
+ // @generated by protoc-gen-es v2.12.0 with parameter "target=js+dts,import_extension=js"
2
2
  // @generated from file kusinta/iot/connector/v1/connector.proto (package kusinta.iot.connector.v1, syntax proto3)
3
3
  /* eslint-disable */
4
4
 
5
5
  import type { GenFile, GenMessage } from "@bufbuild/protobuf/codegenv2";
6
6
  import type { Message } from "@bufbuild/protobuf";
7
- import type { ConnectorId, DeviceId, GatewayId } from "../../identity/v1/identity_pb";
8
- import type { ConnectorTransport } from "../../common/v1/types_pb";
9
- import type { DeviceDescriptor } from "../../device/v1/descriptor_pb";
7
+ import type { ConnectorId, DeviceId, GatewayId } from "../../identity/v1/identity_pb.js";
8
+ import type { ConnectorTransport } from "../../common/v1/types_pb.js";
9
+ import type { DeviceDescriptor } from "../../device/v1/descriptor_pb.js";
10
10
  import type { Timestamp } from "@bufbuild/protobuf/wkt";
11
- import type { PropertyUpdateBatch } from "../../device/v1/property_update_pb";
11
+ import type { PropertyUpdateBatch } from "../../device/v1/property_update_pb.js";
12
+ import type { DeviceCommand } from "../../webrtc/v1/command_pb.js";
12
13
 
13
14
  /**
14
15
  * Describes the file kusinta/iot/connector/v1/connector.proto.
@@ -215,9 +216,9 @@ export declare type GatewayError = Message<"kusinta.iot.connector.v1.GatewayErro
215
216
  export declare const GatewayErrorSchema: GenMessage<GatewayError>;
216
217
 
217
218
  /**
218
- * @generated from message kusinta.iot.connector.v1.CommandResult
219
+ * @generated from message kusinta.iot.connector.v1.ConnectorCommandResult
219
220
  */
220
- export declare type CommandResult = Message<"kusinta.iot.connector.v1.CommandResult"> & {
221
+ export declare type ConnectorCommandResult = Message<"kusinta.iot.connector.v1.ConnectorCommandResult"> & {
221
222
  /**
222
223
  * @generated from field: string command_id = 1;
223
224
  */
@@ -240,15 +241,15 @@ export declare type CommandResult = Message<"kusinta.iot.connector.v1.CommandRes
240
241
  };
241
242
 
242
243
  /**
243
- * Describes the message kusinta.iot.connector.v1.CommandResult.
244
- * Use `create(CommandResultSchema)` to create a new message.
244
+ * Describes the message kusinta.iot.connector.v1.ConnectorCommandResult.
245
+ * Use `create(ConnectorCommandResultSchema)` to create a new message.
245
246
  */
246
- export declare const CommandResultSchema: GenMessage<CommandResult>;
247
+ export declare const ConnectorCommandResultSchema: GenMessage<ConnectorCommandResult>;
247
248
 
248
249
  /**
249
- * @generated from message kusinta.iot.connector.v1.ConnectRequest
250
+ * @generated from message kusinta.iot.connector.v1.SessionRequest
250
251
  */
251
- export declare type ConnectRequest = Message<"kusinta.iot.connector.v1.ConnectRequest"> & {
252
+ export declare type SessionRequest = Message<"kusinta.iot.connector.v1.SessionRequest"> & {
252
253
  /**
253
254
  * @generated from field: string message_id = 1;
254
255
  */
@@ -260,7 +261,7 @@ export declare type ConnectRequest = Message<"kusinta.iot.connector.v1.ConnectRe
260
261
  sentAt?: Timestamp | undefined;
261
262
 
262
263
  /**
263
- * @generated from oneof kusinta.iot.connector.v1.ConnectRequest.payload
264
+ * @generated from oneof kusinta.iot.connector.v1.SessionRequest.payload
264
265
  */
265
266
  payload: {
266
267
  /**
@@ -288,9 +289,9 @@ export declare type ConnectRequest = Message<"kusinta.iot.connector.v1.ConnectRe
288
289
  case: "deviceRemoved";
289
290
  } | {
290
291
  /**
291
- * @generated from field: kusinta.iot.connector.v1.CommandResult command_result = 7;
292
+ * @generated from field: kusinta.iot.connector.v1.ConnectorCommandResult command_result = 7;
292
293
  */
293
- value: CommandResult;
294
+ value: ConnectorCommandResult;
294
295
  case: "commandResult";
295
296
  } | {
296
297
  /**
@@ -302,15 +303,15 @@ export declare type ConnectRequest = Message<"kusinta.iot.connector.v1.ConnectRe
302
303
  };
303
304
 
304
305
  /**
305
- * Describes the message kusinta.iot.connector.v1.ConnectRequest.
306
- * Use `create(ConnectRequestSchema)` to create a new message.
306
+ * Describes the message kusinta.iot.connector.v1.SessionRequest.
307
+ * Use `create(SessionRequestSchema)` to create a new message.
307
308
  */
308
- export declare const ConnectRequestSchema: GenMessage<ConnectRequest>;
309
+ export declare const SessionRequestSchema: GenMessage<SessionRequest>;
309
310
 
310
311
  /**
311
- * @generated from message kusinta.iot.connector.v1.ConnectResponse
312
+ * @generated from message kusinta.iot.connector.v1.SessionResponse
312
313
  */
313
- export declare type ConnectResponse = Message<"kusinta.iot.connector.v1.ConnectResponse"> & {
314
+ export declare type SessionResponse = Message<"kusinta.iot.connector.v1.SessionResponse"> & {
314
315
  /**
315
316
  * @generated from field: string message_id = 1;
316
317
  */
@@ -322,7 +323,7 @@ export declare type ConnectResponse = Message<"kusinta.iot.connector.v1.ConnectR
322
323
  sentAt?: Timestamp | undefined;
323
324
 
324
325
  /**
325
- * @generated from oneof kusinta.iot.connector.v1.ConnectResponse.payload
326
+ * @generated from oneof kusinta.iot.connector.v1.SessionResponse.payload
326
327
  */
327
328
  payload: {
328
329
  /**
@@ -348,12 +349,18 @@ export declare type ConnectResponse = Message<"kusinta.iot.connector.v1.ConnectR
348
349
  */
349
350
  value: GatewayError;
350
351
  case: "error";
352
+ } | {
353
+ /**
354
+ * @generated from field: kusinta.iot.webrtc.v1.DeviceCommand execute_command = 8;
355
+ */
356
+ value: DeviceCommand;
357
+ case: "executeCommand";
351
358
  } | { case: undefined; value?: undefined };
352
359
  };
353
360
 
354
361
  /**
355
- * Describes the message kusinta.iot.connector.v1.ConnectResponse.
356
- * Use `create(ConnectResponseSchema)` to create a new message.
362
+ * Describes the message kusinta.iot.connector.v1.SessionResponse.
363
+ * Use `create(SessionResponseSchema)` to create a new message.
357
364
  */
358
- export declare const ConnectResponseSchema: GenMessage<ConnectResponse>;
365
+ export declare const SessionResponseSchema: GenMessage<SessionResponse>;
359
366
 
@@ -1,19 +1,20 @@
1
- // @generated by protoc-gen-es v2.12.0 with parameter "target=js+dts"
1
+ // @generated by protoc-gen-es v2.12.0 with parameter "target=js+dts,import_extension=js"
2
2
  // @generated from file kusinta/iot/connector/v1/connector.proto (package kusinta.iot.connector.v1, syntax proto3)
3
3
  /* eslint-disable */
4
4
 
5
5
  import { fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv2";
6
6
  import { file_google_protobuf_timestamp } from "@bufbuild/protobuf/wkt";
7
- import { file_kusinta_iot_common_v1_types } from "../../common/v1/types_pb";
8
- import { file_kusinta_iot_identity_v1_identity } from "../../identity/v1/identity_pb";
9
- import { file_kusinta_iot_device_v1_descriptor } from "../../device/v1/descriptor_pb";
10
- import { file_kusinta_iot_device_v1_property_update } from "../../device/v1/property_update_pb";
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
+ import { file_kusinta_iot_device_v1_descriptor } from "../../device/v1/descriptor_pb.js";
10
+ import { file_kusinta_iot_device_v1_property_update } from "../../device/v1/property_update_pb.js";
11
+ import { file_kusinta_iot_webrtc_v1_command } from "../../webrtc/v1/command_pb.js";
11
12
 
12
13
  /**
13
14
  * Describes the file kusinta/iot/connector/v1/connector.proto.
14
15
  */
15
16
  export const file_kusinta_iot_connector_v1_connector = /*@__PURE__*/
16
- fileDesc("CihrdXNpbnRhL2lvdC9jb25uZWN0b3IvdjEvY29ubmVjdG9yLnByb3RvEhhrdXNpbnRhLmlvdC5jb25uZWN0b3IudjEi5QEKDUNvbm5lY3RvckluZm8SOgoMY29ubmVjdG9yX2lkGAEgASgLMiQua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuQ29ubmVjdG9ySWQSFAoMZGlzcGxheV9uYW1lGAIgASgJEg8KB3ZlcnNpb24YAyABKAkSPAoJdHJhbnNwb3J0GAQgASgOMikua3VzaW50YS5pb3QuY29tbW9uLnYxLkNvbm5lY3RvclRyYW5zcG9ydBIQCghlbmRwb2ludBgFIAEoCRIhChlzdXBwb3J0ZWRfZGV2aWNlX3R5cGVfaWRzGAYgAygNIosBChJDb25uZWN0b3JIYW5kc2hha2USNQoEaW5mbxgBIAEoCzInLmt1c2ludGEuaW90LmNvbm5lY3Rvci52MS5Db25uZWN0b3JJbmZvEj4KDWtub3duX2RldmljZXMYAiADKAsyJy5rdXNpbnRhLmlvdC5kZXZpY2UudjEuRGV2aWNlRGVzY3JpcHRvciJoCgxIYW5kc2hha2VBY2sSEAoIYWNjZXB0ZWQYASABKAgSDgoGcmVhc29uGAIgASgJEjYKCmdhdGV3YXlfaWQYAyABKAsyIi5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5HYXRld2F5SWQiUQoSRGV2aWNlQW5ub3VuY2VtZW50EjsKCmRlc2NyaXB0b3IYASABKAsyJy5rdXNpbnRhLmlvdC5kZXZpY2UudjEuRGV2aWNlRGVzY3JpcHRvciJVCg1EZXZpY2VSZW1vdmFsEjQKCWRldmljZV9pZBgBIAEoCzIhLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLkRldmljZUlkEg4KBnJlYXNvbhgCIAEoCSILCglIZWFydEJlYXQiRwoPU3Vic2NyaWJlRGV2aWNlEjQKCWRldmljZV9pZBgBIAEoCzIhLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLkRldmljZUlkIkkKEVVuc3Vic2NyaWJlRGV2aWNlEjQKCWRldmljZV9pZBgBIAEoCzIhLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLkRldmljZUlkIkEKDEdhdGV3YXlFcnJvchIMCgRjb2RlGAEgASgJEg8KB21lc3NhZ2UYAiABKAkSEgoKY29tbWFuZF9pZBgDIAEoCSKdAQoNQ29tbWFuZFJlc3VsdBISCgpjb21tYW5kX2lkGAEgASgJEg8KB3N1Y2Nlc3MYAiABKAgSNQoFZXJyb3IYAyABKAsyJi5rdXNpbnRhLmlvdC5jb25uZWN0b3IudjEuR2F0ZXdheUVycm9yEjAKDGNvbXBsZXRlZF9hdBgEIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAi8AMKDkNvbm5lY3RSZXF1ZXN0EhIKCm1lc3NhZ2VfaWQYASABKAkSKwoHc2VudF9hdBgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASQQoJaGFuZHNoYWtlGAMgASgLMiwua3VzaW50YS5pb3QuY29ubmVjdG9yLnYxLkNvbm5lY3RvckhhbmRzaGFrZUgAEkUKD3Byb3BlcnR5X3VwZGF0ZRgEIAEoCzIqLmt1c2ludGEuaW90LmRldmljZS52MS5Qcm9wZXJ0eVVwZGF0ZUJhdGNoSAASSAoQZGV2aWNlX2Fubm91bmNlZBgFIAEoCzIsLmt1c2ludGEuaW90LmNvbm5lY3Rvci52MS5EZXZpY2VBbm5vdW5jZW1lbnRIABJBCg5kZXZpY2VfcmVtb3ZlZBgGIAEoCzInLmt1c2ludGEuaW90LmNvbm5lY3Rvci52MS5EZXZpY2VSZW1vdmFsSAASQQoOY29tbWFuZF9yZXN1bHQYByABKAsyJy5rdXNpbnRhLmlvdC5jb25uZWN0b3IudjEuQ29tbWFuZFJlc3VsdEgAEjgKCWhlYXJ0YmVhdBgIIAEoCzIjLmt1c2ludGEuaW90LmNvbm5lY3Rvci52MS5IZWFydEJlYXRIAEIJCgdwYXlsb2FkItsCCg9Db25uZWN0UmVzcG9uc2USEgoKbWVzc2FnZV9pZBgBIAEoCRIrCgdzZW50X2F0GAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBI/Cg1oYW5kc2hha2VfYWNrGAMgASgLMiYua3VzaW50YS5pb3QuY29ubmVjdG9yLnYxLkhhbmRzaGFrZUFja0gAEj4KCXN1YnNjcmliZRgFIAEoCzIpLmt1c2ludGEuaW90LmNvbm5lY3Rvci52MS5TdWJzY3JpYmVEZXZpY2VIABJCCgt1bnN1YnNjcmliZRgGIAEoCzIrLmt1c2ludGEuaW90LmNvbm5lY3Rvci52MS5VbnN1YnNjcmliZURldmljZUgAEjcKBWVycm9yGAcgASgLMiYua3VzaW50YS5pb3QuY29ubmVjdG9yLnYxLkdhdGV3YXlFcnJvckgAQgkKB3BheWxvYWRCAkgBYgZwcm90bzM", [file_google_protobuf_timestamp, file_kusinta_iot_common_v1_types, file_kusinta_iot_identity_v1_identity, file_kusinta_iot_device_v1_descriptor, file_kusinta_iot_device_v1_property_update]);
17
+ fileDesc("CihrdXNpbnRhL2lvdC9jb25uZWN0b3IvdjEvY29ubmVjdG9yLnByb3RvEhhrdXNpbnRhLmlvdC5jb25uZWN0b3IudjEi5QEKDUNvbm5lY3RvckluZm8SOgoMY29ubmVjdG9yX2lkGAEgASgLMiQua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuQ29ubmVjdG9ySWQSFAoMZGlzcGxheV9uYW1lGAIgASgJEg8KB3ZlcnNpb24YAyABKAkSPAoJdHJhbnNwb3J0GAQgASgOMikua3VzaW50YS5pb3QuY29tbW9uLnYxLkNvbm5lY3RvclRyYW5zcG9ydBIQCghlbmRwb2ludBgFIAEoCRIhChlzdXBwb3J0ZWRfZGV2aWNlX3R5cGVfaWRzGAYgAygNIosBChJDb25uZWN0b3JIYW5kc2hha2USNQoEaW5mbxgBIAEoCzInLmt1c2ludGEuaW90LmNvbm5lY3Rvci52MS5Db25uZWN0b3JJbmZvEj4KDWtub3duX2RldmljZXMYAiADKAsyJy5rdXNpbnRhLmlvdC5kZXZpY2UudjEuRGV2aWNlRGVzY3JpcHRvciJoCgxIYW5kc2hha2VBY2sSEAoIYWNjZXB0ZWQYASABKAgSDgoGcmVhc29uGAIgASgJEjYKCmdhdGV3YXlfaWQYAyABKAsyIi5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5HYXRld2F5SWQiUQoSRGV2aWNlQW5ub3VuY2VtZW50EjsKCmRlc2NyaXB0b3IYASABKAsyJy5rdXNpbnRhLmlvdC5kZXZpY2UudjEuRGV2aWNlRGVzY3JpcHRvciJVCg1EZXZpY2VSZW1vdmFsEjQKCWRldmljZV9pZBgBIAEoCzIhLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLkRldmljZUlkEg4KBnJlYXNvbhgCIAEoCSILCglIZWFydEJlYXQiRwoPU3Vic2NyaWJlRGV2aWNlEjQKCWRldmljZV9pZBgBIAEoCzIhLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLkRldmljZUlkIkkKEVVuc3Vic2NyaWJlRGV2aWNlEjQKCWRldmljZV9pZBgBIAEoCzIhLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLkRldmljZUlkIkEKDEdhdGV3YXlFcnJvchIMCgRjb2RlGAEgASgJEg8KB21lc3NhZ2UYAiABKAkSEgoKY29tbWFuZF9pZBgDIAEoCSKmAQoWQ29ubmVjdG9yQ29tbWFuZFJlc3VsdBISCgpjb21tYW5kX2lkGAEgASgJEg8KB3N1Y2Nlc3MYAiABKAgSNQoFZXJyb3IYAyABKAsyJi5rdXNpbnRhLmlvdC5jb25uZWN0b3IudjEuR2F0ZXdheUVycm9yEjAKDGNvbXBsZXRlZF9hdBgEIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAi+QMKDlNlc3Npb25SZXF1ZXN0EhIKCm1lc3NhZ2VfaWQYASABKAkSKwoHc2VudF9hdBgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASQQoJaGFuZHNoYWtlGAMgASgLMiwua3VzaW50YS5pb3QuY29ubmVjdG9yLnYxLkNvbm5lY3RvckhhbmRzaGFrZUgAEkUKD3Byb3BlcnR5X3VwZGF0ZRgEIAEoCzIqLmt1c2ludGEuaW90LmRldmljZS52MS5Qcm9wZXJ0eVVwZGF0ZUJhdGNoSAASSAoQZGV2aWNlX2Fubm91bmNlZBgFIAEoCzIsLmt1c2ludGEuaW90LmNvbm5lY3Rvci52MS5EZXZpY2VBbm5vdW5jZW1lbnRIABJBCg5kZXZpY2VfcmVtb3ZlZBgGIAEoCzInLmt1c2ludGEuaW90LmNvbm5lY3Rvci52MS5EZXZpY2VSZW1vdmFsSAASSgoOY29tbWFuZF9yZXN1bHQYByABKAsyMC5rdXNpbnRhLmlvdC5jb25uZWN0b3IudjEuQ29ubmVjdG9yQ29tbWFuZFJlc3VsdEgAEjgKCWhlYXJ0YmVhdBgIIAEoCzIjLmt1c2ludGEuaW90LmNvbm5lY3Rvci52MS5IZWFydEJlYXRIAEIJCgdwYXlsb2FkIqIDCg9TZXNzaW9uUmVzcG9uc2USEgoKbWVzc2FnZV9pZBgBIAEoCRIrCgdzZW50X2F0GAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBI/Cg1oYW5kc2hha2VfYWNrGAMgASgLMiYua3VzaW50YS5pb3QuY29ubmVjdG9yLnYxLkhhbmRzaGFrZUFja0gAEj4KCXN1YnNjcmliZRgFIAEoCzIpLmt1c2ludGEuaW90LmNvbm5lY3Rvci52MS5TdWJzY3JpYmVEZXZpY2VIABJCCgt1bnN1YnNjcmliZRgGIAEoCzIrLmt1c2ludGEuaW90LmNvbm5lY3Rvci52MS5VbnN1YnNjcmliZURldmljZUgAEjcKBWVycm9yGAcgASgLMiYua3VzaW50YS5pb3QuY29ubmVjdG9yLnYxLkdhdGV3YXlFcnJvckgAEj8KD2V4ZWN1dGVfY29tbWFuZBgIIAEoCzIkLmt1c2ludGEuaW90LndlYnJ0Yy52MS5EZXZpY2VDb21tYW5kSABCCQoHcGF5bG9hZEoECAQQBUICSAFiBnByb3RvMw", [file_google_protobuf_timestamp, file_kusinta_iot_common_v1_types, file_kusinta_iot_identity_v1_identity, file_kusinta_iot_device_v1_descriptor, file_kusinta_iot_device_v1_property_update, file_kusinta_iot_webrtc_v1_command]);
17
18
 
18
19
  /**
19
20
  * Describes the message kusinta.iot.connector.v1.ConnectorInfo.
@@ -79,23 +80,23 @@ export const GatewayErrorSchema = /*@__PURE__*/
79
80
  messageDesc(file_kusinta_iot_connector_v1_connector, 8);
80
81
 
81
82
  /**
82
- * Describes the message kusinta.iot.connector.v1.CommandResult.
83
- * Use `create(CommandResultSchema)` to create a new message.
83
+ * Describes the message kusinta.iot.connector.v1.ConnectorCommandResult.
84
+ * Use `create(ConnectorCommandResultSchema)` to create a new message.
84
85
  */
85
- export const CommandResultSchema = /*@__PURE__*/
86
+ export const ConnectorCommandResultSchema = /*@__PURE__*/
86
87
  messageDesc(file_kusinta_iot_connector_v1_connector, 9);
87
88
 
88
89
  /**
89
- * Describes the message kusinta.iot.connector.v1.ConnectRequest.
90
- * Use `create(ConnectRequestSchema)` to create a new message.
90
+ * Describes the message kusinta.iot.connector.v1.SessionRequest.
91
+ * Use `create(SessionRequestSchema)` to create a new message.
91
92
  */
92
- export const ConnectRequestSchema = /*@__PURE__*/
93
+ export const SessionRequestSchema = /*@__PURE__*/
93
94
  messageDesc(file_kusinta_iot_connector_v1_connector, 10);
94
95
 
95
96
  /**
96
- * Describes the message kusinta.iot.connector.v1.ConnectResponse.
97
- * Use `create(ConnectResponseSchema)` to create a new message.
97
+ * Describes the message kusinta.iot.connector.v1.SessionResponse.
98
+ * Use `create(SessionResponseSchema)` to create a new message.
98
99
  */
99
- export const ConnectResponseSchema = /*@__PURE__*/
100
+ export const SessionResponseSchema = /*@__PURE__*/
100
101
  messageDesc(file_kusinta_iot_connector_v1_connector, 11);
101
102
 
@@ -1,9 +1,9 @@
1
- // @generated by protoc-gen-es v2.12.0 with parameter "target=js+dts"
1
+ // @generated by protoc-gen-es v2.12.0 with parameter "target=js+dts,import_extension=js"
2
2
  // @generated from file kusinta/iot/connector/v1/connector_service.proto (package kusinta.iot.connector.v1, syntax proto3)
3
3
  /* eslint-disable */
4
4
 
5
5
  import type { GenFile, GenService } from "@bufbuild/protobuf/codegenv2";
6
- import type { ConnectRequestSchema, ConnectResponseSchema } from "./connector_pb";
6
+ import type { SessionRequestSchema, SessionResponseSchema } from "./connector_pb.js";
7
7
 
8
8
  /**
9
9
  * Describes the file kusinta/iot/connector/v1/connector_service.proto.
@@ -18,12 +18,12 @@ export declare const file_kusinta_iot_connector_v1_connector_service: GenFile;
18
18
  */
19
19
  export declare const ConnectorGatewayService: GenService<{
20
20
  /**
21
- * @generated from rpc kusinta.iot.connector.v1.ConnectorGatewayService.Connect
21
+ * @generated from rpc kusinta.iot.connector.v1.ConnectorGatewayService.Session
22
22
  */
23
- connect: {
23
+ session: {
24
24
  methodKind: "bidi_streaming";
25
- input: typeof ConnectRequestSchema;
26
- output: typeof ConnectResponseSchema;
25
+ input: typeof SessionRequestSchema;
26
+ output: typeof SessionResponseSchema;
27
27
  },
28
28
  }>;
29
29
 
@@ -1,15 +1,15 @@
1
- // @generated by protoc-gen-es v2.12.0 with parameter "target=js+dts"
1
+ // @generated by protoc-gen-es v2.12.0 with parameter "target=js+dts,import_extension=js"
2
2
  // @generated from file kusinta/iot/connector/v1/connector_service.proto (package kusinta.iot.connector.v1, syntax proto3)
3
3
  /* eslint-disable */
4
4
 
5
5
  import { fileDesc, serviceDesc } from "@bufbuild/protobuf/codegenv2";
6
- import { file_kusinta_iot_connector_v1_connector } from "./connector_pb";
6
+ import { file_kusinta_iot_connector_v1_connector } from "./connector_pb.js";
7
7
 
8
8
  /**
9
9
  * Describes the file kusinta/iot/connector/v1/connector_service.proto.
10
10
  */
11
11
  export const file_kusinta_iot_connector_v1_connector_service = /*@__PURE__*/
12
- fileDesc("CjBrdXNpbnRhL2lvdC9jb25uZWN0b3IvdjEvY29ubmVjdG9yX3NlcnZpY2UucHJvdG8SGGt1c2ludGEuaW90LmNvbm5lY3Rvci52MTJ9ChdDb25uZWN0b3JHYXRld2F5U2VydmljZRJiCgdDb25uZWN0Eigua3VzaW50YS5pb3QuY29ubmVjdG9yLnYxLkNvbm5lY3RSZXF1ZXN0Gikua3VzaW50YS5pb3QuY29ubmVjdG9yLnYxLkNvbm5lY3RSZXNwb25zZSgBMAFCAkgBYgZwcm90bzM", [file_kusinta_iot_connector_v1_connector]);
12
+ fileDesc("CjBrdXNpbnRhL2lvdC9jb25uZWN0b3IvdjEvY29ubmVjdG9yX3NlcnZpY2UucHJvdG8SGGt1c2ludGEuaW90LmNvbm5lY3Rvci52MTJ9ChdDb25uZWN0b3JHYXRld2F5U2VydmljZRJiCgdTZXNzaW9uEigua3VzaW50YS5pb3QuY29ubmVjdG9yLnYxLlNlc3Npb25SZXF1ZXN0Gikua3VzaW50YS5pb3QuY29ubmVjdG9yLnYxLlNlc3Npb25SZXNwb25zZSgBMAFCAkgBYgZwcm90bzM", [file_kusinta_iot_connector_v1_connector]);
13
13
 
14
14
  /**
15
15
  * ConnectorGatewayService: connector dials the gateway on startup.
@@ -1,11 +1,11 @@
1
- // @generated by protoc-gen-es v2.12.0 with parameter "target=js+dts"
1
+ // @generated by protoc-gen-es v2.12.0 with parameter "target=js+dts,import_extension=js"
2
2
  // @generated from file kusinta/iot/device/v1/descriptor.proto (package kusinta.iot.device.v1, syntax proto3)
3
3
  /* eslint-disable */
4
4
 
5
5
  import type { GenFile, GenMessage } from "@bufbuild/protobuf/codegenv2";
6
6
  import type { Message } from "@bufbuild/protobuf";
7
- import type { ConnectorId, DeviceId, SpaceId, UserId } from "../../identity/v1/identity_pb";
8
- import type { DeviceLifecycleState, DeviceOwnershipType } from "../../common/v1/types_pb";
7
+ import type { ConnectorId, DeviceId, SpaceId, UserId } from "../../identity/v1/identity_pb.js";
8
+ import type { DeviceLifecycleState, DeviceOwnershipType } from "../../common/v1/types_pb.js";
9
9
  import type { Timestamp } from "@bufbuild/protobuf/wkt";
10
10
 
11
11
  /**
@@ -1,11 +1,11 @@
1
- // @generated by protoc-gen-es v2.12.0 with parameter "target=js+dts"
1
+ // @generated by protoc-gen-es v2.12.0 with parameter "target=js+dts,import_extension=js"
2
2
  // @generated from file kusinta/iot/device/v1/descriptor.proto (package kusinta.iot.device.v1, syntax proto3)
3
3
  /* eslint-disable */
4
4
 
5
5
  import { fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv2";
6
6
  import { file_google_protobuf_timestamp } from "@bufbuild/protobuf/wkt";
7
- import { file_kusinta_iot_common_v1_types } from "../../common/v1/types_pb";
8
- import { file_kusinta_iot_identity_v1_identity } from "../../identity/v1/identity_pb";
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
9
 
10
10
  /**
11
11
  * Describes the file kusinta/iot/device/v1/descriptor.proto.
@@ -1,12 +1,12 @@
1
- // @generated by protoc-gen-es v2.12.0 with parameter "target=js+dts"
1
+ // @generated by protoc-gen-es v2.12.0 with parameter "target=js+dts,import_extension=js"
2
2
  // @generated from file kusinta/iot/device/v1/device.proto (package kusinta.iot.device.v1, syntax proto3)
3
3
  /* eslint-disable */
4
4
 
5
5
  import type { GenFile, GenMessage } from "@bufbuild/protobuf/codegenv2";
6
6
  import type { Message } from "@bufbuild/protobuf";
7
- import type { DeviceDescriptor } from "./descriptor_pb";
8
- import type { ColorTemperatureLightProperties, ContactSensorProperties, DimmableLightProperties, DoorLockProperties, EnergySensorProperties, HumiditySensorProperties, OccupancySensorProperties, OnOffLightProperties, PressureSensorProperties, TemperatureSensorProperties, ThermostatProperties, WindowCoveringProperties } from "./properties_pb";
9
- import type { HomematicVendorExtension } from "../../vendor/homematic/v1/homematic_pb";
7
+ import type { DeviceDescriptor } from "./descriptor_pb.js";
8
+ import type { ColorTemperatureLightProperties, ContactSensorProperties, DimmableLightProperties, DoorLockProperties, EnergySensorProperties, HumiditySensorProperties, OccupancySensorProperties, OnOffLightProperties, PressureSensorProperties, TemperatureSensorProperties, ThermostatProperties, WindowCoveringProperties } from "./properties_pb.js";
9
+ import type { HomematicVendorExtension } from "../../vendor/homematic/v1/homematic_pb.js";
10
10
  import type { Timestamp } from "@bufbuild/protobuf/wkt";
11
11
 
12
12
  /**
@@ -19,6 +19,24 @@ export declare const file_kusinta_iot_device_v1_device: GenFile;
19
19
  * Field number convention: 1 = descriptor, 2-49 = standard Matter device types,
20
20
  * 50-99 = vendor extensions, 20+ = timestamps.
21
21
  *
22
+ * Selecting the properties case
23
+ *
24
+ * Each non-vendor case's message type declares the Matter device type it models in
25
+ * (matter_device_type), so the mapping from DeviceDescriptor.matter_device_type_id to a
26
+ * case is read from the descriptor rather than hard-coded. See matter_options.proto, and
27
+ * property_update.proto for the full resolution rule.
28
+ *
29
+ * matter_device_type_id stays a bare uint32: a connector must be able to report a device
30
+ * type this schema does not model. Such a device is legitimate — it exists, it belongs in
31
+ * a device list, it simply carries no typed properties. A consumer that cannot match the
32
+ * device type leaves the properties oneof unset and keeps the Device; it MUST NOT drop the
33
+ * device or substitute a nearby case. An unset oneof therefore means either "not modelled"
34
+ * or "modelled but nothing reported yet", which are indistinguishable here on purpose;
35
+ * distinguish them by re-resolving matter_device_type_id if you need to.
36
+ *
37
+ * Adding a case: annotate the new *Properties message with its (matter_device_type). A case
38
+ * without one resolves for nobody.
39
+ *
22
40
  * @generated from message kusinta.iot.device.v1.Device
23
41
  */
24
42
  export declare type Device = Message<"kusinta.iot.device.v1.Device"> & {
@@ -113,11 +131,25 @@ export declare type Device = Message<"kusinta.iot.device.v1.Device"> & {
113
131
  } | { case: undefined; value?: undefined };
114
132
 
115
133
  /**
134
+ * When the gateway last had evidence this device exists and is reachable — the
135
+ * most recent PropertyUpdate, announcement, or command result concerning it.
136
+ * Gateway-observed, not connector-reported: no message on either leg carries a
137
+ * per-device liveness timestamp, so this is as precise as the device's own report
138
+ * interval. A device that reports every 15 minutes looks stale for 15 minutes.
139
+ *
140
+ * Survives a connector reconnect. Losing the route to a device is not evidence the
141
+ * device is gone, so last_seen keeps its value; only fresh evidence advances it.
142
+ *
143
+ * Advisory, for showing staleness in a UI. It is not a removal signal — that is
144
+ * webrtc.v1.DeviceRemoved, sent only when a connector reports the device gone.
145
+ *
116
146
  * @generated from field: google.protobuf.Timestamp last_seen = 20;
117
147
  */
118
148
  lastSeen?: Timestamp | undefined;
119
149
 
120
150
  /**
151
+ * When any field of this Device last changed value.
152
+ *
121
153
  * @generated from field: google.protobuf.Timestamp last_updated = 21;
122
154
  */
123
155
  lastUpdated?: Timestamp | undefined;
@@ -1,12 +1,12 @@
1
- // @generated by protoc-gen-es v2.12.0 with parameter "target=js+dts"
1
+ // @generated by protoc-gen-es v2.12.0 with parameter "target=js+dts,import_extension=js"
2
2
  // @generated from file kusinta/iot/device/v1/device.proto (package kusinta.iot.device.v1, syntax proto3)
3
3
  /* eslint-disable */
4
4
 
5
5
  import { fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv2";
6
6
  import { file_google_protobuf_timestamp } from "@bufbuild/protobuf/wkt";
7
- import { file_kusinta_iot_device_v1_descriptor } from "./descriptor_pb";
8
- import { file_kusinta_iot_device_v1_properties } from "./properties_pb";
9
- import { file_kusinta_iot_vendor_homematic_v1_homematic } from "../../vendor/homematic/v1/homematic_pb";
7
+ import { file_kusinta_iot_device_v1_descriptor } from "./descriptor_pb.js";
8
+ import { file_kusinta_iot_device_v1_properties } from "./properties_pb.js";
9
+ import { file_kusinta_iot_vendor_homematic_v1_homematic } from "../../vendor/homematic/v1/homematic_pb.js";
10
10
 
11
11
  /**
12
12
  * Describes the file kusinta/iot/device/v1/device.proto.
@@ -0,0 +1,46 @@
1
+ // @generated by protoc-gen-es v2.12.0 with parameter "target=js+dts,import_extension=js"
2
+ // @generated from file kusinta/iot/device/v1/matter_options.proto (package kusinta.iot.device.v1, syntax proto3)
3
+ /* eslint-disable */
4
+
5
+ import type { GenExtension, GenFile } from "@bufbuild/protobuf/codegenv2";
6
+ import type { FieldOptions, MessageOptions } from "@bufbuild/protobuf/wkt";
7
+
8
+ /**
9
+ * Describes the file kusinta/iot/device/v1/matter_options.proto.
10
+ */
11
+ export declare const file_kusinta_iot_device_v1_matter_options: GenFile;
12
+
13
+ /**
14
+ * The Matter cluster this attribute belongs to, e.g. 0x0201 for Thermostat.
15
+ *
16
+ * Required alongside matter_attribute because a properties message may span
17
+ * clusters: DimmableLightProperties.on_off is On/Off (0x0006) while its
18
+ * current_level is Level Control (0x0008). Matches PropertyUpdate.cluster_id_hex
19
+ * parsed as a hex integer.
20
+ *
21
+ * @generated from extension: uint32 matter_cluster_id = 50001;
22
+ */
23
+ export declare const matter_cluster_id: GenExtension<FieldOptions, number>;
24
+
25
+ /**
26
+ * The Matter attribute name in the spec's own PascalCase, e.g.
27
+ * "PIROccupiedToUnoccupiedDelay". This is the authoritative spelling; the proto
28
+ * field name is not derived from it and must not be assumed to be. Matches
29
+ * PropertyUpdate.attribute_name byte for byte.
30
+ *
31
+ * @generated from extension: string matter_attribute = 50002;
32
+ */
33
+ export declare const matter_attribute: GenExtension<FieldOptions, string>;
34
+
35
+ /**
36
+ * The Matter device type IDs this properties message models, e.g. 0x0301 for
37
+ * Thermostat. Repeated because one shape of properties can serve several device
38
+ * types; empty on vendor extension messages, which have no Matter device type.
39
+ *
40
+ * A device type appears on at most one properties message, so the mapping from
41
+ * DeviceDescriptor.matter_device_type_id to a Device.properties case is a function.
42
+ *
43
+ * @generated from extension: repeated uint32 matter_device_type = 50003;
44
+ */
45
+ export declare const matter_device_type: GenExtension<MessageOptions, number[]>;
46
+
@@ -0,0 +1,50 @@
1
+ // @generated by protoc-gen-es v2.12.0 with parameter "target=js+dts,import_extension=js"
2
+ // @generated from file kusinta/iot/device/v1/matter_options.proto (package kusinta.iot.device.v1, syntax proto3)
3
+ /* eslint-disable */
4
+
5
+ import { extDesc, fileDesc } from "@bufbuild/protobuf/codegenv2";
6
+ import { file_google_protobuf_descriptor } from "@bufbuild/protobuf/wkt";
7
+
8
+ /**
9
+ * Describes the file kusinta/iot/device/v1/matter_options.proto.
10
+ */
11
+ export const file_kusinta_iot_device_v1_matter_options = /*@__PURE__*/
12
+ fileDesc("CiprdXNpbnRhL2lvdC9kZXZpY2UvdjEvbWF0dGVyX29wdGlvbnMucHJvdG8SFWt1c2ludGEuaW90LmRldmljZS52MTpLChFtYXR0ZXJfY2x1c3Rlcl9pZBIdLmdvb2dsZS5wcm90b2J1Zi5GaWVsZE9wdGlvbnMY0YYDIAEoDVIPbWF0dGVyQ2x1c3RlcklkOkoKEG1hdHRlcl9hdHRyaWJ1dGUSHS5nb29nbGUucHJvdG9idWYuRmllbGRPcHRpb25zGNKGAyABKAlSD21hdHRlckF0dHJpYnV0ZTpPChJtYXR0ZXJfZGV2aWNlX3R5cGUSHy5nb29nbGUucHJvdG9idWYuTWVzc2FnZU9wdGlvbnMY04YDIAMoDVIQbWF0dGVyRGV2aWNlVHlwZUICSAFiBnByb3RvMw", [file_google_protobuf_descriptor]);
13
+
14
+ /**
15
+ * The Matter cluster this attribute belongs to, e.g. 0x0201 for Thermostat.
16
+ *
17
+ * Required alongside matter_attribute because a properties message may span
18
+ * clusters: DimmableLightProperties.on_off is On/Off (0x0006) while its
19
+ * current_level is Level Control (0x0008). Matches PropertyUpdate.cluster_id_hex
20
+ * parsed as a hex integer.
21
+ *
22
+ * @generated from extension: uint32 matter_cluster_id = 50001;
23
+ */
24
+ export const matter_cluster_id = /*@__PURE__*/
25
+ extDesc(file_kusinta_iot_device_v1_matter_options, 0);
26
+
27
+ /**
28
+ * The Matter attribute name in the spec's own PascalCase, e.g.
29
+ * "PIROccupiedToUnoccupiedDelay". This is the authoritative spelling; the proto
30
+ * field name is not derived from it and must not be assumed to be. Matches
31
+ * PropertyUpdate.attribute_name byte for byte.
32
+ *
33
+ * @generated from extension: string matter_attribute = 50002;
34
+ */
35
+ export const matter_attribute = /*@__PURE__*/
36
+ extDesc(file_kusinta_iot_device_v1_matter_options, 1);
37
+
38
+ /**
39
+ * The Matter device type IDs this properties message models, e.g. 0x0301 for
40
+ * Thermostat. Repeated because one shape of properties can serve several device
41
+ * types; empty on vendor extension messages, which have no Matter device type.
42
+ *
43
+ * A device type appears on at most one properties message, so the mapping from
44
+ * DeviceDescriptor.matter_device_type_id to a Device.properties case is a function.
45
+ *
46
+ * @generated from extension: repeated uint32 matter_device_type = 50003;
47
+ */
48
+ export const matter_device_type = /*@__PURE__*/
49
+ extDesc(file_kusinta_iot_device_v1_matter_options, 2);
50
+