@seamapi/types 1.23.0 → 1.23.2

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/dist/devicedb.cjs CHANGED
@@ -53,7 +53,8 @@ var smartlock = zod.z.object({
53
53
  "lockbox",
54
54
  "cylinder",
55
55
  "padlock",
56
- "locker"
56
+ "locker",
57
+ "unknown"
57
58
  ]),
58
59
  has_physical_key: zod.z.boolean(),
59
60
  has_camera: zod.z.boolean()
@@ -92,9 +93,22 @@ var thermostat = zod.z.object({
92
93
  var relay = zod.z.object({
93
94
  main_category: zod.z.literal("relay")
94
95
  });
96
+ var intercom = zod.z.object({
97
+ main_category: zod.z.literal("intercom"),
98
+ physical_properties: zod.z.object({
99
+ has_camera: zod.z.boolean()
100
+ }),
101
+ software_features: zod.z.object({
102
+ can_remotely_unlock: zod.z.boolean(),
103
+ can_program_access_codes: zod.z.boolean()
104
+ })
105
+ });
106
+ var accessory = zod.z.object({
107
+ main_category: zod.z.literal("accessory")
108
+ });
95
109
  var device_model_category_specific_properties = zod.z.discriminatedUnion(
96
110
  "main_category",
97
- [smartlock, sensor, thermostat, relay]
111
+ [smartlock, sensor, thermostat, relay, intercom, accessory]
98
112
  );
99
113
  var base_device_model_v1 = zod.z.object({
100
114
  device_model_id: zod.z.string().uuid(),
@@ -108,7 +122,7 @@ var base_device_model_v1 = zod.z.object({
108
122
  slug: zod.z.string(),
109
123
  display_name: zod.z.string(),
110
124
  primary_color_hex: zod.z.string().optional(),
111
- manufacturer_sku: zod.z.string(),
125
+ manufacturer_sku: zod.z.string().optional(),
112
126
  front_image: image_reference.optional(),
113
127
  back_image: image_reference.optional()
114
128
  }).array(),
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/lib/seam/devicedb/public-models/index.ts","../src/lib/seam/devicedb/public-models/device-model-v0.ts","../src/lib/seam/devicedb/public-models/device-model-v1.ts","../src/lib/seam/devicedb/public-models/image-reference.ts","../src/lib/seam/devicedb/public-models/manufacturer.ts"],"names":["z"],"mappings":"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","sourcesContent":["export * from './device-model-v0.js'\nexport * from './device-model-v1.js'\nexport * from './image-reference.js'\nexport * from './manufacturer.js'\n","import { z } from 'zod'\n\nexport const device_model_v0 = z.object({\n main_category: z.string(),\n model_name: z.string(),\n manufacturer_model_id: z.string(),\n connection_type: z.enum(['wifi', 'zwave', 'zigbee', 'unknown']),\n support_level: z.enum(['live', 'beta', 'unsupported']),\n brand: z.string(),\n icon_url: z.string(),\n seam_device_model_page_url: z.string(),\n})\n\nexport type DeviceModelV0 = z.infer<typeof device_model_v0>\n","import { z } from 'zod'\n\nimport { image_reference } from './image-reference.js'\nimport { manufacturer } from './manufacturer.js'\n\nconst smartlock = z.object({\n main_category: z.literal('smartlock'),\n physical_properties: z.object({\n lock_type: z.enum([\n 'deadbolt',\n 'lever',\n 'mortise',\n 'lockbox',\n 'cylinder',\n 'padlock',\n 'locker',\n ]),\n has_physical_key: z.boolean(),\n has_camera: z.boolean(),\n }),\n software_features: z.object({\n can_remotely_unlock: z.boolean(),\n can_program_access_codes: z.boolean(),\n can_program_access_schedules: z.boolean(),\n can_program_access_codes_offline: z.boolean(),\n }),\n})\n\nconst sensor = z.object({\n main_category: z.literal('sensor'),\n physical_properties: z.object({\n has_noise_sensor: z.boolean(),\n has_humidity_sensor: z.boolean(),\n has_temperature_sensor: z.boolean(),\n has_occupancy_detection: z.boolean(),\n }),\n})\n\nconst thermostat = z.object({\n main_category: z.literal('thermostat'),\n physical_properties: z.object({\n available_modes: z.enum(['heat', 'cool', 'fan', 'eco']).array(),\n is_heat_pump_compatible: z.boolean(),\n has_occupancy_detection: z.boolean(),\n supports_demand_response: z.boolean(),\n has_humidity_sensor: z.boolean(),\n has_temperature_sensor: z.boolean(),\n supports_emergency_heating_mode: z.boolean(),\n }),\n software_features: z.object({\n can_program_climate_schedules: z.boolean(),\n }),\n})\n\nconst relay = z.object({\n main_category: z.literal('relay'),\n})\n\nexport const device_model_category_specific_properties = z.discriminatedUnion(\n 'main_category',\n [smartlock, sensor, thermostat, relay],\n)\n\nexport const base_device_model_v1 = z.object({\n device_model_id: z.string().uuid(),\n manufacturer,\n is_device_supported: z.boolean(),\n display_name: z.string(),\n description: z.string(),\n product_url: z.string().optional(),\n main_connection_type: z.enum(['wifi', 'zwave', 'zigbee', 'unknown']),\n aesthetic_variants: z\n .object({\n slug: z.string(),\n display_name: z.string(),\n primary_color_hex: z.string().optional(),\n manufacturer_sku: z.string(),\n front_image: image_reference.optional(),\n back_image: image_reference.optional(),\n })\n .array(),\n power_sources: z\n .enum([\n 'battery',\n 'hardwired',\n 'mechanical_harvesting',\n 'wireless',\n 'ethernet',\n ])\n .array(),\n})\n\nexport type BaseDeviceModelV1 = z.infer<typeof base_device_model_v1>\n\nexport const device_model_v1 = base_device_model_v1.and(\n device_model_category_specific_properties,\n)\n\nexport type DeviceModelV1 = z.infer<typeof device_model_v1>\n","import { z } from 'zod'\n\nexport const image_reference = z.object({\n url: z.string().url(),\n width: z.number(),\n height: z.number(),\n})\n\nexport type ImageReference = z.infer<typeof image_reference>\n","import { z } from 'zod'\n\nimport { image_reference } from './image-reference.js'\n\nexport const manufacturer = z.object({\n manufacturer_id: z.string().uuid(),\n display_name: z.string(),\n logo: image_reference.optional(),\n integration: z.enum(['stable', 'beta', 'planned', 'unsupported', 'inquire']),\n is_connect_webview_supported: z.boolean(),\n requires_seam_support_to_add_account: z.boolean(),\n})\n\nexport type Manufacturer = z.infer<typeof manufacturer>\n"]}
1
+ {"version":3,"sources":["../src/lib/seam/devicedb/public-models/index.ts","../src/lib/seam/devicedb/public-models/device-model-v0.ts","../src/lib/seam/devicedb/public-models/device-model-v1.ts","../src/lib/seam/devicedb/public-models/image-reference.ts","../src/lib/seam/devicedb/public-models/manufacturer.ts"],"names":["z"],"mappings":"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","sourcesContent":["export * from './device-model-v0.js'\nexport * from './device-model-v1.js'\nexport * from './image-reference.js'\nexport * from './manufacturer.js'\n","import { z } from 'zod'\n\nexport const device_model_v0 = z.object({\n main_category: z.string(),\n model_name: z.string(),\n manufacturer_model_id: z.string(),\n connection_type: z.enum(['wifi', 'zwave', 'zigbee', 'unknown']),\n support_level: z.enum(['live', 'beta', 'unsupported']),\n brand: z.string(),\n icon_url: z.string(),\n seam_device_model_page_url: z.string(),\n})\n\nexport type DeviceModelV0 = z.infer<typeof device_model_v0>\n","import { z } from 'zod'\n\nimport { image_reference } from './image-reference.js'\nimport { manufacturer } from './manufacturer.js'\n\nconst smartlock = z.object({\n main_category: z.literal('smartlock'),\n physical_properties: z.object({\n lock_type: z.enum([\n 'deadbolt',\n 'lever',\n 'mortise',\n 'lockbox',\n 'cylinder',\n 'padlock',\n 'locker',\n 'unknown',\n ]),\n has_physical_key: z.boolean(),\n has_camera: z.boolean(),\n }),\n software_features: z.object({\n can_remotely_unlock: z.boolean(),\n can_program_access_codes: z.boolean(),\n can_program_access_schedules: z.boolean(),\n can_program_access_codes_offline: z.boolean(),\n }),\n})\n\nconst sensor = z.object({\n main_category: z.literal('sensor'),\n physical_properties: z.object({\n has_noise_sensor: z.boolean(),\n has_humidity_sensor: z.boolean(),\n has_temperature_sensor: z.boolean(),\n has_occupancy_detection: z.boolean(),\n }),\n})\n\nconst thermostat = z.object({\n main_category: z.literal('thermostat'),\n physical_properties: z.object({\n available_modes: z.enum(['heat', 'cool', 'fan', 'eco']).array(),\n is_heat_pump_compatible: z.boolean(),\n has_occupancy_detection: z.boolean(),\n supports_demand_response: z.boolean(),\n has_humidity_sensor: z.boolean(),\n has_temperature_sensor: z.boolean(),\n supports_emergency_heating_mode: z.boolean(),\n }),\n software_features: z.object({\n can_program_climate_schedules: z.boolean(),\n }),\n})\n\nexport type ThermostatPropertiesV1 = z.infer<typeof thermostat>\n\nconst relay = z.object({\n main_category: z.literal('relay'),\n})\n\nconst intercom = z.object({\n main_category: z.literal('intercom'),\n physical_properties: z.object({\n has_camera: z.boolean(),\n }),\n software_features: z.object({\n can_remotely_unlock: z.boolean(),\n can_program_access_codes: z.boolean(),\n }),\n})\n\nconst accessory = z.object({\n main_category: z.literal('accessory'),\n})\n\nexport const device_model_category_specific_properties = z.discriminatedUnion(\n 'main_category',\n [smartlock, sensor, thermostat, relay, intercom, accessory],\n)\n\nexport const base_device_model_v1 = z.object({\n device_model_id: z.string().uuid(),\n manufacturer,\n is_device_supported: z.boolean(),\n display_name: z.string(),\n description: z.string(),\n product_url: z.string().optional(),\n main_connection_type: z.enum(['wifi', 'zwave', 'zigbee', 'unknown']),\n aesthetic_variants: z\n .object({\n slug: z.string(),\n display_name: z.string(),\n primary_color_hex: z.string().optional(),\n manufacturer_sku: z.string().optional(),\n front_image: image_reference.optional(),\n back_image: image_reference.optional(),\n })\n .array(),\n power_sources: z\n .enum([\n 'battery',\n 'hardwired',\n 'mechanical_harvesting',\n 'wireless',\n 'ethernet',\n ])\n .array(),\n})\n\nexport type BaseDeviceModelV1 = z.infer<typeof base_device_model_v1>\n\nexport const device_model_v1 = base_device_model_v1.and(\n device_model_category_specific_properties,\n)\n\nexport type DeviceModelV1 = z.infer<typeof device_model_v1>\n","import { z } from 'zod'\n\nexport const image_reference = z.object({\n url: z.string().url(),\n width: z.number(),\n height: z.number(),\n})\n\nexport type ImageReference = z.infer<typeof image_reference>\n","import { z } from 'zod'\n\nimport { image_reference } from './image-reference.js'\n\nexport const manufacturer = z.object({\n manufacturer_id: z.string().uuid(),\n display_name: z.string(),\n logo: image_reference.optional(),\n integration: z.enum(['stable', 'beta', 'planned', 'unsupported', 'inquire']),\n is_connect_webview_supported: z.boolean(),\n requires_seam_support_to_add_account: z.boolean(),\n})\n\nexport type Manufacturer = z.infer<typeof manufacturer>\n"]}
@@ -30,18 +30,82 @@ declare const device_model_v0: z.ZodObject<{
30
30
  }>;
31
31
  type DeviceModelV0 = z.infer<typeof device_model_v0>;
32
32
 
33
+ declare const thermostat: z.ZodObject<{
34
+ main_category: z.ZodLiteral<"thermostat">;
35
+ physical_properties: z.ZodObject<{
36
+ available_modes: z.ZodArray<z.ZodEnum<["heat", "cool", "fan", "eco"]>, "many">;
37
+ is_heat_pump_compatible: z.ZodBoolean;
38
+ has_occupancy_detection: z.ZodBoolean;
39
+ supports_demand_response: z.ZodBoolean;
40
+ has_humidity_sensor: z.ZodBoolean;
41
+ has_temperature_sensor: z.ZodBoolean;
42
+ supports_emergency_heating_mode: z.ZodBoolean;
43
+ }, "strip", z.ZodTypeAny, {
44
+ has_humidity_sensor: boolean;
45
+ has_temperature_sensor: boolean;
46
+ has_occupancy_detection: boolean;
47
+ available_modes: ("heat" | "cool" | "fan" | "eco")[];
48
+ is_heat_pump_compatible: boolean;
49
+ supports_demand_response: boolean;
50
+ supports_emergency_heating_mode: boolean;
51
+ }, {
52
+ has_humidity_sensor: boolean;
53
+ has_temperature_sensor: boolean;
54
+ has_occupancy_detection: boolean;
55
+ available_modes: ("heat" | "cool" | "fan" | "eco")[];
56
+ is_heat_pump_compatible: boolean;
57
+ supports_demand_response: boolean;
58
+ supports_emergency_heating_mode: boolean;
59
+ }>;
60
+ software_features: z.ZodObject<{
61
+ can_program_climate_schedules: z.ZodBoolean;
62
+ }, "strip", z.ZodTypeAny, {
63
+ can_program_climate_schedules: boolean;
64
+ }, {
65
+ can_program_climate_schedules: boolean;
66
+ }>;
67
+ }, "strip", z.ZodTypeAny, {
68
+ main_category: "thermostat";
69
+ physical_properties: {
70
+ has_humidity_sensor: boolean;
71
+ has_temperature_sensor: boolean;
72
+ has_occupancy_detection: boolean;
73
+ available_modes: ("heat" | "cool" | "fan" | "eco")[];
74
+ is_heat_pump_compatible: boolean;
75
+ supports_demand_response: boolean;
76
+ supports_emergency_heating_mode: boolean;
77
+ };
78
+ software_features: {
79
+ can_program_climate_schedules: boolean;
80
+ };
81
+ }, {
82
+ main_category: "thermostat";
83
+ physical_properties: {
84
+ has_humidity_sensor: boolean;
85
+ has_temperature_sensor: boolean;
86
+ has_occupancy_detection: boolean;
87
+ available_modes: ("heat" | "cool" | "fan" | "eco")[];
88
+ is_heat_pump_compatible: boolean;
89
+ supports_demand_response: boolean;
90
+ supports_emergency_heating_mode: boolean;
91
+ };
92
+ software_features: {
93
+ can_program_climate_schedules: boolean;
94
+ };
95
+ }>;
96
+ type ThermostatPropertiesV1 = z.infer<typeof thermostat>;
33
97
  declare const device_model_category_specific_properties: z.ZodDiscriminatedUnion<"main_category", [z.ZodObject<{
34
98
  main_category: z.ZodLiteral<"smartlock">;
35
99
  physical_properties: z.ZodObject<{
36
- lock_type: z.ZodEnum<["deadbolt", "lever", "mortise", "lockbox", "cylinder", "padlock", "locker"]>;
100
+ lock_type: z.ZodEnum<["deadbolt", "lever", "mortise", "lockbox", "cylinder", "padlock", "locker", "unknown"]>;
37
101
  has_physical_key: z.ZodBoolean;
38
102
  has_camera: z.ZodBoolean;
39
103
  }, "strip", z.ZodTypeAny, {
40
- lock_type: "deadbolt" | "lever" | "mortise" | "lockbox" | "cylinder" | "padlock" | "locker";
104
+ lock_type: "unknown" | "deadbolt" | "lever" | "mortise" | "lockbox" | "cylinder" | "padlock" | "locker";
41
105
  has_physical_key: boolean;
42
106
  has_camera: boolean;
43
107
  }, {
44
- lock_type: "deadbolt" | "lever" | "mortise" | "lockbox" | "cylinder" | "padlock" | "locker";
108
+ lock_type: "unknown" | "deadbolt" | "lever" | "mortise" | "lockbox" | "cylinder" | "padlock" | "locker";
45
109
  has_physical_key: boolean;
46
110
  has_camera: boolean;
47
111
  }>;
@@ -64,7 +128,7 @@ declare const device_model_category_specific_properties: z.ZodDiscriminatedUnion
64
128
  }, "strip", z.ZodTypeAny, {
65
129
  main_category: "smartlock";
66
130
  physical_properties: {
67
- lock_type: "deadbolt" | "lever" | "mortise" | "lockbox" | "cylinder" | "padlock" | "locker";
131
+ lock_type: "unknown" | "deadbolt" | "lever" | "mortise" | "lockbox" | "cylinder" | "padlock" | "locker";
68
132
  has_physical_key: boolean;
69
133
  has_camera: boolean;
70
134
  };
@@ -77,7 +141,7 @@ declare const device_model_category_specific_properties: z.ZodDiscriminatedUnion
77
141
  }, {
78
142
  main_category: "smartlock";
79
143
  physical_properties: {
80
- lock_type: "deadbolt" | "lever" | "mortise" | "lockbox" | "cylinder" | "padlock" | "locker";
144
+ lock_type: "unknown" | "deadbolt" | "lever" | "mortise" | "lockbox" | "cylinder" | "padlock" | "locker";
81
145
  has_physical_key: boolean;
82
146
  has_camera: boolean;
83
147
  };
@@ -189,6 +253,49 @@ declare const device_model_category_specific_properties: z.ZodDiscriminatedUnion
189
253
  main_category: "relay";
190
254
  }, {
191
255
  main_category: "relay";
256
+ }>, z.ZodObject<{
257
+ main_category: z.ZodLiteral<"intercom">;
258
+ physical_properties: z.ZodObject<{
259
+ has_camera: z.ZodBoolean;
260
+ }, "strip", z.ZodTypeAny, {
261
+ has_camera: boolean;
262
+ }, {
263
+ has_camera: boolean;
264
+ }>;
265
+ software_features: z.ZodObject<{
266
+ can_remotely_unlock: z.ZodBoolean;
267
+ can_program_access_codes: z.ZodBoolean;
268
+ }, "strip", z.ZodTypeAny, {
269
+ can_remotely_unlock: boolean;
270
+ can_program_access_codes: boolean;
271
+ }, {
272
+ can_remotely_unlock: boolean;
273
+ can_program_access_codes: boolean;
274
+ }>;
275
+ }, "strip", z.ZodTypeAny, {
276
+ main_category: "intercom";
277
+ physical_properties: {
278
+ has_camera: boolean;
279
+ };
280
+ software_features: {
281
+ can_remotely_unlock: boolean;
282
+ can_program_access_codes: boolean;
283
+ };
284
+ }, {
285
+ main_category: "intercom";
286
+ physical_properties: {
287
+ has_camera: boolean;
288
+ };
289
+ software_features: {
290
+ can_remotely_unlock: boolean;
291
+ can_program_access_codes: boolean;
292
+ };
293
+ }>, z.ZodObject<{
294
+ main_category: z.ZodLiteral<"accessory">;
295
+ }, "strip", z.ZodTypeAny, {
296
+ main_category: "accessory";
297
+ }, {
298
+ main_category: "accessory";
192
299
  }>]>;
193
300
  declare const base_device_model_v1: z.ZodObject<{
194
301
  device_model_id: z.ZodString;
@@ -243,7 +350,7 @@ declare const base_device_model_v1: z.ZodObject<{
243
350
  slug: z.ZodString;
244
351
  display_name: z.ZodString;
245
352
  primary_color_hex: z.ZodOptional<z.ZodString>;
246
- manufacturer_sku: z.ZodString;
353
+ manufacturer_sku: z.ZodOptional<z.ZodString>;
247
354
  front_image: z.ZodOptional<z.ZodObject<{
248
355
  url: z.ZodString;
249
356
  width: z.ZodNumber;
@@ -273,8 +380,8 @@ declare const base_device_model_v1: z.ZodObject<{
273
380
  }, "strip", z.ZodTypeAny, {
274
381
  display_name: string;
275
382
  slug: string;
276
- manufacturer_sku: string;
277
383
  primary_color_hex?: string | undefined;
384
+ manufacturer_sku?: string | undefined;
278
385
  front_image?: {
279
386
  url: string;
280
387
  width: number;
@@ -288,8 +395,8 @@ declare const base_device_model_v1: z.ZodObject<{
288
395
  }, {
289
396
  display_name: string;
290
397
  slug: string;
291
- manufacturer_sku: string;
292
398
  primary_color_hex?: string | undefined;
399
+ manufacturer_sku?: string | undefined;
293
400
  front_image?: {
294
401
  url: string;
295
402
  width: number;
@@ -323,8 +430,8 @@ declare const base_device_model_v1: z.ZodObject<{
323
430
  aesthetic_variants: {
324
431
  display_name: string;
325
432
  slug: string;
326
- manufacturer_sku: string;
327
433
  primary_color_hex?: string | undefined;
434
+ manufacturer_sku?: string | undefined;
328
435
  front_image?: {
329
436
  url: string;
330
437
  width: number;
@@ -359,8 +466,8 @@ declare const base_device_model_v1: z.ZodObject<{
359
466
  aesthetic_variants: {
360
467
  display_name: string;
361
468
  slug: string;
362
- manufacturer_sku: string;
363
469
  primary_color_hex?: string | undefined;
470
+ manufacturer_sku?: string | undefined;
364
471
  front_image?: {
365
472
  url: string;
366
473
  width: number;
@@ -429,7 +536,7 @@ declare const device_model_v1: z.ZodIntersection<z.ZodObject<{
429
536
  slug: z.ZodString;
430
537
  display_name: z.ZodString;
431
538
  primary_color_hex: z.ZodOptional<z.ZodString>;
432
- manufacturer_sku: z.ZodString;
539
+ manufacturer_sku: z.ZodOptional<z.ZodString>;
433
540
  front_image: z.ZodOptional<z.ZodObject<{
434
541
  url: z.ZodString;
435
542
  width: z.ZodNumber;
@@ -459,8 +566,8 @@ declare const device_model_v1: z.ZodIntersection<z.ZodObject<{
459
566
  }, "strip", z.ZodTypeAny, {
460
567
  display_name: string;
461
568
  slug: string;
462
- manufacturer_sku: string;
463
569
  primary_color_hex?: string | undefined;
570
+ manufacturer_sku?: string | undefined;
464
571
  front_image?: {
465
572
  url: string;
466
573
  width: number;
@@ -474,8 +581,8 @@ declare const device_model_v1: z.ZodIntersection<z.ZodObject<{
474
581
  }, {
475
582
  display_name: string;
476
583
  slug: string;
477
- manufacturer_sku: string;
478
584
  primary_color_hex?: string | undefined;
585
+ manufacturer_sku?: string | undefined;
479
586
  front_image?: {
480
587
  url: string;
481
588
  width: number;
@@ -509,8 +616,8 @@ declare const device_model_v1: z.ZodIntersection<z.ZodObject<{
509
616
  aesthetic_variants: {
510
617
  display_name: string;
511
618
  slug: string;
512
- manufacturer_sku: string;
513
619
  primary_color_hex?: string | undefined;
620
+ manufacturer_sku?: string | undefined;
514
621
  front_image?: {
515
622
  url: string;
516
623
  width: number;
@@ -545,8 +652,8 @@ declare const device_model_v1: z.ZodIntersection<z.ZodObject<{
545
652
  aesthetic_variants: {
546
653
  display_name: string;
547
654
  slug: string;
548
- manufacturer_sku: string;
549
655
  primary_color_hex?: string | undefined;
656
+ manufacturer_sku?: string | undefined;
550
657
  front_image?: {
551
658
  url: string;
552
659
  width: number;
@@ -563,15 +670,15 @@ declare const device_model_v1: z.ZodIntersection<z.ZodObject<{
563
670
  }>, z.ZodDiscriminatedUnion<"main_category", [z.ZodObject<{
564
671
  main_category: z.ZodLiteral<"smartlock">;
565
672
  physical_properties: z.ZodObject<{
566
- lock_type: z.ZodEnum<["deadbolt", "lever", "mortise", "lockbox", "cylinder", "padlock", "locker"]>;
673
+ lock_type: z.ZodEnum<["deadbolt", "lever", "mortise", "lockbox", "cylinder", "padlock", "locker", "unknown"]>;
567
674
  has_physical_key: z.ZodBoolean;
568
675
  has_camera: z.ZodBoolean;
569
676
  }, "strip", z.ZodTypeAny, {
570
- lock_type: "deadbolt" | "lever" | "mortise" | "lockbox" | "cylinder" | "padlock" | "locker";
677
+ lock_type: "unknown" | "deadbolt" | "lever" | "mortise" | "lockbox" | "cylinder" | "padlock" | "locker";
571
678
  has_physical_key: boolean;
572
679
  has_camera: boolean;
573
680
  }, {
574
- lock_type: "deadbolt" | "lever" | "mortise" | "lockbox" | "cylinder" | "padlock" | "locker";
681
+ lock_type: "unknown" | "deadbolt" | "lever" | "mortise" | "lockbox" | "cylinder" | "padlock" | "locker";
575
682
  has_physical_key: boolean;
576
683
  has_camera: boolean;
577
684
  }>;
@@ -594,7 +701,7 @@ declare const device_model_v1: z.ZodIntersection<z.ZodObject<{
594
701
  }, "strip", z.ZodTypeAny, {
595
702
  main_category: "smartlock";
596
703
  physical_properties: {
597
- lock_type: "deadbolt" | "lever" | "mortise" | "lockbox" | "cylinder" | "padlock" | "locker";
704
+ lock_type: "unknown" | "deadbolt" | "lever" | "mortise" | "lockbox" | "cylinder" | "padlock" | "locker";
598
705
  has_physical_key: boolean;
599
706
  has_camera: boolean;
600
707
  };
@@ -607,7 +714,7 @@ declare const device_model_v1: z.ZodIntersection<z.ZodObject<{
607
714
  }, {
608
715
  main_category: "smartlock";
609
716
  physical_properties: {
610
- lock_type: "deadbolt" | "lever" | "mortise" | "lockbox" | "cylinder" | "padlock" | "locker";
717
+ lock_type: "unknown" | "deadbolt" | "lever" | "mortise" | "lockbox" | "cylinder" | "padlock" | "locker";
611
718
  has_physical_key: boolean;
612
719
  has_camera: boolean;
613
720
  };
@@ -719,6 +826,49 @@ declare const device_model_v1: z.ZodIntersection<z.ZodObject<{
719
826
  main_category: "relay";
720
827
  }, {
721
828
  main_category: "relay";
829
+ }>, z.ZodObject<{
830
+ main_category: z.ZodLiteral<"intercom">;
831
+ physical_properties: z.ZodObject<{
832
+ has_camera: z.ZodBoolean;
833
+ }, "strip", z.ZodTypeAny, {
834
+ has_camera: boolean;
835
+ }, {
836
+ has_camera: boolean;
837
+ }>;
838
+ software_features: z.ZodObject<{
839
+ can_remotely_unlock: z.ZodBoolean;
840
+ can_program_access_codes: z.ZodBoolean;
841
+ }, "strip", z.ZodTypeAny, {
842
+ can_remotely_unlock: boolean;
843
+ can_program_access_codes: boolean;
844
+ }, {
845
+ can_remotely_unlock: boolean;
846
+ can_program_access_codes: boolean;
847
+ }>;
848
+ }, "strip", z.ZodTypeAny, {
849
+ main_category: "intercom";
850
+ physical_properties: {
851
+ has_camera: boolean;
852
+ };
853
+ software_features: {
854
+ can_remotely_unlock: boolean;
855
+ can_program_access_codes: boolean;
856
+ };
857
+ }, {
858
+ main_category: "intercom";
859
+ physical_properties: {
860
+ has_camera: boolean;
861
+ };
862
+ software_features: {
863
+ can_remotely_unlock: boolean;
864
+ can_program_access_codes: boolean;
865
+ };
866
+ }>, z.ZodObject<{
867
+ main_category: z.ZodLiteral<"accessory">;
868
+ }, "strip", z.ZodTypeAny, {
869
+ main_category: "accessory";
870
+ }, {
871
+ main_category: "accessory";
722
872
  }>]>>;
723
873
  type DeviceModelV1 = z.infer<typeof device_model_v1>;
724
874
 
@@ -786,6 +936,7 @@ type index_DeviceModelV0 = DeviceModelV0;
786
936
  type index_DeviceModelV1 = DeviceModelV1;
787
937
  type index_ImageReference = ImageReference;
788
938
  type index_Manufacturer = Manufacturer;
939
+ type index_ThermostatPropertiesV1 = ThermostatPropertiesV1;
789
940
  declare const index_base_device_model_v1: typeof base_device_model_v1;
790
941
  declare const index_device_model_category_specific_properties: typeof device_model_category_specific_properties;
791
942
  declare const index_device_model_v0: typeof device_model_v0;
@@ -799,6 +950,7 @@ declare namespace index {
799
950
  index_DeviceModelV1 as DeviceModelV1,
800
951
  index_ImageReference as ImageReference,
801
952
  index_Manufacturer as Manufacturer,
953
+ index_ThermostatPropertiesV1 as ThermostatPropertiesV1,
802
954
  index_base_device_model_v1 as base_device_model_v1,
803
955
  index_device_model_category_specific_properties as device_model_category_specific_properties,
804
956
  index_device_model_v0 as device_model_v0,
@@ -836,13 +988,13 @@ interface Routes {
836
988
  is_device_supported: boolean;
837
989
  display_name: string;
838
990
  description: string;
839
- product_url: string;
991
+ product_url?: string | undefined;
840
992
  main_connection_type: 'wifi' | 'zwave' | 'zigbee' | 'unknown';
841
993
  aesthetic_variants: Array<{
842
994
  slug: string;
843
995
  display_name: string;
844
996
  primary_color_hex?: string | undefined;
845
- manufacturer_sku: string;
997
+ manufacturer_sku?: string | undefined;
846
998
  front_image?: {
847
999
  url: string;
848
1000
  width: number;
@@ -858,7 +1010,7 @@ interface Routes {
858
1010
  } & ({
859
1011
  main_category: 'smartlock';
860
1012
  physical_properties: {
861
- lock_type: 'deadbolt' | 'lever' | 'mortise' | 'lockbox' | 'cylinder' | 'padlock' | 'locker';
1013
+ lock_type: 'deadbolt' | 'lever' | 'mortise' | 'lockbox' | 'cylinder' | 'padlock' | 'locker' | 'unknown';
862
1014
  has_physical_key: boolean;
863
1015
  has_camera: boolean;
864
1016
  };
@@ -892,6 +1044,17 @@ interface Routes {
892
1044
  };
893
1045
  } | {
894
1046
  main_category: 'relay';
1047
+ } | {
1048
+ main_category: 'intercom';
1049
+ physical_properties: {
1050
+ has_camera: boolean;
1051
+ };
1052
+ software_features: {
1053
+ can_remotely_unlock: boolean;
1054
+ can_program_access_codes: boolean;
1055
+ };
1056
+ } | {
1057
+ main_category: 'accessory';
895
1058
  });
896
1059
  };
897
1060
  };
@@ -926,13 +1089,13 @@ interface Routes {
926
1089
  is_device_supported: boolean;
927
1090
  display_name: string;
928
1091
  description: string;
929
- product_url: string;
1092
+ product_url?: string | undefined;
930
1093
  main_connection_type: 'wifi' | 'zwave' | 'zigbee' | 'unknown';
931
1094
  aesthetic_variants: Array<{
932
1095
  slug: string;
933
1096
  display_name: string;
934
1097
  primary_color_hex?: string | undefined;
935
- manufacturer_sku: string;
1098
+ manufacturer_sku?: string | undefined;
936
1099
  front_image?: {
937
1100
  url: string;
938
1101
  width: number;
@@ -948,7 +1111,7 @@ interface Routes {
948
1111
  } & ({
949
1112
  main_category: 'smartlock';
950
1113
  physical_properties: {
951
- lock_type: 'deadbolt' | 'lever' | 'mortise' | 'lockbox' | 'cylinder' | 'padlock' | 'locker';
1114
+ lock_type: 'deadbolt' | 'lever' | 'mortise' | 'lockbox' | 'cylinder' | 'padlock' | 'locker' | 'unknown';
952
1115
  has_physical_key: boolean;
953
1116
  has_camera: boolean;
954
1117
  };
@@ -982,6 +1145,17 @@ interface Routes {
982
1145
  };
983
1146
  } | {
984
1147
  main_category: 'relay';
1148
+ } | {
1149
+ main_category: 'intercom';
1150
+ physical_properties: {
1151
+ has_camera: boolean;
1152
+ };
1153
+ software_features: {
1154
+ can_remotely_unlock: boolean;
1155
+ can_program_access_codes: boolean;
1156
+ };
1157
+ } | {
1158
+ main_category: 'accessory';
985
1159
  })>;
986
1160
  };
987
1161
  };
@@ -1,16 +1,80 @@
1
1
  import { z } from 'zod';
2
+ declare const thermostat: z.ZodObject<{
3
+ main_category: z.ZodLiteral<"thermostat">;
4
+ physical_properties: z.ZodObject<{
5
+ available_modes: z.ZodArray<z.ZodEnum<["heat", "cool", "fan", "eco"]>, "many">;
6
+ is_heat_pump_compatible: z.ZodBoolean;
7
+ has_occupancy_detection: z.ZodBoolean;
8
+ supports_demand_response: z.ZodBoolean;
9
+ has_humidity_sensor: z.ZodBoolean;
10
+ has_temperature_sensor: z.ZodBoolean;
11
+ supports_emergency_heating_mode: z.ZodBoolean;
12
+ }, "strip", z.ZodTypeAny, {
13
+ has_humidity_sensor: boolean;
14
+ has_temperature_sensor: boolean;
15
+ has_occupancy_detection: boolean;
16
+ available_modes: ("heat" | "cool" | "fan" | "eco")[];
17
+ is_heat_pump_compatible: boolean;
18
+ supports_demand_response: boolean;
19
+ supports_emergency_heating_mode: boolean;
20
+ }, {
21
+ has_humidity_sensor: boolean;
22
+ has_temperature_sensor: boolean;
23
+ has_occupancy_detection: boolean;
24
+ available_modes: ("heat" | "cool" | "fan" | "eco")[];
25
+ is_heat_pump_compatible: boolean;
26
+ supports_demand_response: boolean;
27
+ supports_emergency_heating_mode: boolean;
28
+ }>;
29
+ software_features: z.ZodObject<{
30
+ can_program_climate_schedules: z.ZodBoolean;
31
+ }, "strip", z.ZodTypeAny, {
32
+ can_program_climate_schedules: boolean;
33
+ }, {
34
+ can_program_climate_schedules: boolean;
35
+ }>;
36
+ }, "strip", z.ZodTypeAny, {
37
+ main_category: "thermostat";
38
+ physical_properties: {
39
+ has_humidity_sensor: boolean;
40
+ has_temperature_sensor: boolean;
41
+ has_occupancy_detection: boolean;
42
+ available_modes: ("heat" | "cool" | "fan" | "eco")[];
43
+ is_heat_pump_compatible: boolean;
44
+ supports_demand_response: boolean;
45
+ supports_emergency_heating_mode: boolean;
46
+ };
47
+ software_features: {
48
+ can_program_climate_schedules: boolean;
49
+ };
50
+ }, {
51
+ main_category: "thermostat";
52
+ physical_properties: {
53
+ has_humidity_sensor: boolean;
54
+ has_temperature_sensor: boolean;
55
+ has_occupancy_detection: boolean;
56
+ available_modes: ("heat" | "cool" | "fan" | "eco")[];
57
+ is_heat_pump_compatible: boolean;
58
+ supports_demand_response: boolean;
59
+ supports_emergency_heating_mode: boolean;
60
+ };
61
+ software_features: {
62
+ can_program_climate_schedules: boolean;
63
+ };
64
+ }>;
65
+ export type ThermostatPropertiesV1 = z.infer<typeof thermostat>;
2
66
  export declare const device_model_category_specific_properties: z.ZodDiscriminatedUnion<"main_category", [z.ZodObject<{
3
67
  main_category: z.ZodLiteral<"smartlock">;
4
68
  physical_properties: z.ZodObject<{
5
- lock_type: z.ZodEnum<["deadbolt", "lever", "mortise", "lockbox", "cylinder", "padlock", "locker"]>;
69
+ lock_type: z.ZodEnum<["deadbolt", "lever", "mortise", "lockbox", "cylinder", "padlock", "locker", "unknown"]>;
6
70
  has_physical_key: z.ZodBoolean;
7
71
  has_camera: z.ZodBoolean;
8
72
  }, "strip", z.ZodTypeAny, {
9
- lock_type: "deadbolt" | "lever" | "mortise" | "lockbox" | "cylinder" | "padlock" | "locker";
73
+ lock_type: "unknown" | "deadbolt" | "lever" | "mortise" | "lockbox" | "cylinder" | "padlock" | "locker";
10
74
  has_physical_key: boolean;
11
75
  has_camera: boolean;
12
76
  }, {
13
- lock_type: "deadbolt" | "lever" | "mortise" | "lockbox" | "cylinder" | "padlock" | "locker";
77
+ lock_type: "unknown" | "deadbolt" | "lever" | "mortise" | "lockbox" | "cylinder" | "padlock" | "locker";
14
78
  has_physical_key: boolean;
15
79
  has_camera: boolean;
16
80
  }>;
@@ -33,7 +97,7 @@ export declare const device_model_category_specific_properties: z.ZodDiscriminat
33
97
  }, "strip", z.ZodTypeAny, {
34
98
  main_category: "smartlock";
35
99
  physical_properties: {
36
- lock_type: "deadbolt" | "lever" | "mortise" | "lockbox" | "cylinder" | "padlock" | "locker";
100
+ lock_type: "unknown" | "deadbolt" | "lever" | "mortise" | "lockbox" | "cylinder" | "padlock" | "locker";
37
101
  has_physical_key: boolean;
38
102
  has_camera: boolean;
39
103
  };
@@ -46,7 +110,7 @@ export declare const device_model_category_specific_properties: z.ZodDiscriminat
46
110
  }, {
47
111
  main_category: "smartlock";
48
112
  physical_properties: {
49
- lock_type: "deadbolt" | "lever" | "mortise" | "lockbox" | "cylinder" | "padlock" | "locker";
113
+ lock_type: "unknown" | "deadbolt" | "lever" | "mortise" | "lockbox" | "cylinder" | "padlock" | "locker";
50
114
  has_physical_key: boolean;
51
115
  has_camera: boolean;
52
116
  };
@@ -158,6 +222,49 @@ export declare const device_model_category_specific_properties: z.ZodDiscriminat
158
222
  main_category: "relay";
159
223
  }, {
160
224
  main_category: "relay";
225
+ }>, z.ZodObject<{
226
+ main_category: z.ZodLiteral<"intercom">;
227
+ physical_properties: z.ZodObject<{
228
+ has_camera: z.ZodBoolean;
229
+ }, "strip", z.ZodTypeAny, {
230
+ has_camera: boolean;
231
+ }, {
232
+ has_camera: boolean;
233
+ }>;
234
+ software_features: z.ZodObject<{
235
+ can_remotely_unlock: z.ZodBoolean;
236
+ can_program_access_codes: z.ZodBoolean;
237
+ }, "strip", z.ZodTypeAny, {
238
+ can_remotely_unlock: boolean;
239
+ can_program_access_codes: boolean;
240
+ }, {
241
+ can_remotely_unlock: boolean;
242
+ can_program_access_codes: boolean;
243
+ }>;
244
+ }, "strip", z.ZodTypeAny, {
245
+ main_category: "intercom";
246
+ physical_properties: {
247
+ has_camera: boolean;
248
+ };
249
+ software_features: {
250
+ can_remotely_unlock: boolean;
251
+ can_program_access_codes: boolean;
252
+ };
253
+ }, {
254
+ main_category: "intercom";
255
+ physical_properties: {
256
+ has_camera: boolean;
257
+ };
258
+ software_features: {
259
+ can_remotely_unlock: boolean;
260
+ can_program_access_codes: boolean;
261
+ };
262
+ }>, z.ZodObject<{
263
+ main_category: z.ZodLiteral<"accessory">;
264
+ }, "strip", z.ZodTypeAny, {
265
+ main_category: "accessory";
266
+ }, {
267
+ main_category: "accessory";
161
268
  }>]>;
162
269
  export declare const base_device_model_v1: z.ZodObject<{
163
270
  device_model_id: z.ZodString;
@@ -212,7 +319,7 @@ export declare const base_device_model_v1: z.ZodObject<{
212
319
  slug: z.ZodString;
213
320
  display_name: z.ZodString;
214
321
  primary_color_hex: z.ZodOptional<z.ZodString>;
215
- manufacturer_sku: z.ZodString;
322
+ manufacturer_sku: z.ZodOptional<z.ZodString>;
216
323
  front_image: z.ZodOptional<z.ZodObject<{
217
324
  url: z.ZodString;
218
325
  width: z.ZodNumber;
@@ -242,8 +349,8 @@ export declare const base_device_model_v1: z.ZodObject<{
242
349
  }, "strip", z.ZodTypeAny, {
243
350
  display_name: string;
244
351
  slug: string;
245
- manufacturer_sku: string;
246
352
  primary_color_hex?: string | undefined;
353
+ manufacturer_sku?: string | undefined;
247
354
  front_image?: {
248
355
  height: number;
249
356
  width: number;
@@ -257,8 +364,8 @@ export declare const base_device_model_v1: z.ZodObject<{
257
364
  }, {
258
365
  display_name: string;
259
366
  slug: string;
260
- manufacturer_sku: string;
261
367
  primary_color_hex?: string | undefined;
368
+ manufacturer_sku?: string | undefined;
262
369
  front_image?: {
263
370
  height: number;
264
371
  width: number;
@@ -292,8 +399,8 @@ export declare const base_device_model_v1: z.ZodObject<{
292
399
  aesthetic_variants: {
293
400
  display_name: string;
294
401
  slug: string;
295
- manufacturer_sku: string;
296
402
  primary_color_hex?: string | undefined;
403
+ manufacturer_sku?: string | undefined;
297
404
  front_image?: {
298
405
  height: number;
299
406
  width: number;
@@ -328,8 +435,8 @@ export declare const base_device_model_v1: z.ZodObject<{
328
435
  aesthetic_variants: {
329
436
  display_name: string;
330
437
  slug: string;
331
- manufacturer_sku: string;
332
438
  primary_color_hex?: string | undefined;
439
+ manufacturer_sku?: string | undefined;
333
440
  front_image?: {
334
441
  height: number;
335
442
  width: number;
@@ -398,7 +505,7 @@ export declare const device_model_v1: z.ZodIntersection<z.ZodObject<{
398
505
  slug: z.ZodString;
399
506
  display_name: z.ZodString;
400
507
  primary_color_hex: z.ZodOptional<z.ZodString>;
401
- manufacturer_sku: z.ZodString;
508
+ manufacturer_sku: z.ZodOptional<z.ZodString>;
402
509
  front_image: z.ZodOptional<z.ZodObject<{
403
510
  url: z.ZodString;
404
511
  width: z.ZodNumber;
@@ -428,8 +535,8 @@ export declare const device_model_v1: z.ZodIntersection<z.ZodObject<{
428
535
  }, "strip", z.ZodTypeAny, {
429
536
  display_name: string;
430
537
  slug: string;
431
- manufacturer_sku: string;
432
538
  primary_color_hex?: string | undefined;
539
+ manufacturer_sku?: string | undefined;
433
540
  front_image?: {
434
541
  height: number;
435
542
  width: number;
@@ -443,8 +550,8 @@ export declare const device_model_v1: z.ZodIntersection<z.ZodObject<{
443
550
  }, {
444
551
  display_name: string;
445
552
  slug: string;
446
- manufacturer_sku: string;
447
553
  primary_color_hex?: string | undefined;
554
+ manufacturer_sku?: string | undefined;
448
555
  front_image?: {
449
556
  height: number;
450
557
  width: number;
@@ -478,8 +585,8 @@ export declare const device_model_v1: z.ZodIntersection<z.ZodObject<{
478
585
  aesthetic_variants: {
479
586
  display_name: string;
480
587
  slug: string;
481
- manufacturer_sku: string;
482
588
  primary_color_hex?: string | undefined;
589
+ manufacturer_sku?: string | undefined;
483
590
  front_image?: {
484
591
  height: number;
485
592
  width: number;
@@ -514,8 +621,8 @@ export declare const device_model_v1: z.ZodIntersection<z.ZodObject<{
514
621
  aesthetic_variants: {
515
622
  display_name: string;
516
623
  slug: string;
517
- manufacturer_sku: string;
518
624
  primary_color_hex?: string | undefined;
625
+ manufacturer_sku?: string | undefined;
519
626
  front_image?: {
520
627
  height: number;
521
628
  width: number;
@@ -532,15 +639,15 @@ export declare const device_model_v1: z.ZodIntersection<z.ZodObject<{
532
639
  }>, z.ZodDiscriminatedUnion<"main_category", [z.ZodObject<{
533
640
  main_category: z.ZodLiteral<"smartlock">;
534
641
  physical_properties: z.ZodObject<{
535
- lock_type: z.ZodEnum<["deadbolt", "lever", "mortise", "lockbox", "cylinder", "padlock", "locker"]>;
642
+ lock_type: z.ZodEnum<["deadbolt", "lever", "mortise", "lockbox", "cylinder", "padlock", "locker", "unknown"]>;
536
643
  has_physical_key: z.ZodBoolean;
537
644
  has_camera: z.ZodBoolean;
538
645
  }, "strip", z.ZodTypeAny, {
539
- lock_type: "deadbolt" | "lever" | "mortise" | "lockbox" | "cylinder" | "padlock" | "locker";
646
+ lock_type: "unknown" | "deadbolt" | "lever" | "mortise" | "lockbox" | "cylinder" | "padlock" | "locker";
540
647
  has_physical_key: boolean;
541
648
  has_camera: boolean;
542
649
  }, {
543
- lock_type: "deadbolt" | "lever" | "mortise" | "lockbox" | "cylinder" | "padlock" | "locker";
650
+ lock_type: "unknown" | "deadbolt" | "lever" | "mortise" | "lockbox" | "cylinder" | "padlock" | "locker";
544
651
  has_physical_key: boolean;
545
652
  has_camera: boolean;
546
653
  }>;
@@ -563,7 +670,7 @@ export declare const device_model_v1: z.ZodIntersection<z.ZodObject<{
563
670
  }, "strip", z.ZodTypeAny, {
564
671
  main_category: "smartlock";
565
672
  physical_properties: {
566
- lock_type: "deadbolt" | "lever" | "mortise" | "lockbox" | "cylinder" | "padlock" | "locker";
673
+ lock_type: "unknown" | "deadbolt" | "lever" | "mortise" | "lockbox" | "cylinder" | "padlock" | "locker";
567
674
  has_physical_key: boolean;
568
675
  has_camera: boolean;
569
676
  };
@@ -576,7 +683,7 @@ export declare const device_model_v1: z.ZodIntersection<z.ZodObject<{
576
683
  }, {
577
684
  main_category: "smartlock";
578
685
  physical_properties: {
579
- lock_type: "deadbolt" | "lever" | "mortise" | "lockbox" | "cylinder" | "padlock" | "locker";
686
+ lock_type: "unknown" | "deadbolt" | "lever" | "mortise" | "lockbox" | "cylinder" | "padlock" | "locker";
580
687
  has_physical_key: boolean;
581
688
  has_camera: boolean;
582
689
  };
@@ -688,5 +795,49 @@ export declare const device_model_v1: z.ZodIntersection<z.ZodObject<{
688
795
  main_category: "relay";
689
796
  }, {
690
797
  main_category: "relay";
798
+ }>, z.ZodObject<{
799
+ main_category: z.ZodLiteral<"intercom">;
800
+ physical_properties: z.ZodObject<{
801
+ has_camera: z.ZodBoolean;
802
+ }, "strip", z.ZodTypeAny, {
803
+ has_camera: boolean;
804
+ }, {
805
+ has_camera: boolean;
806
+ }>;
807
+ software_features: z.ZodObject<{
808
+ can_remotely_unlock: z.ZodBoolean;
809
+ can_program_access_codes: z.ZodBoolean;
810
+ }, "strip", z.ZodTypeAny, {
811
+ can_remotely_unlock: boolean;
812
+ can_program_access_codes: boolean;
813
+ }, {
814
+ can_remotely_unlock: boolean;
815
+ can_program_access_codes: boolean;
816
+ }>;
817
+ }, "strip", z.ZodTypeAny, {
818
+ main_category: "intercom";
819
+ physical_properties: {
820
+ has_camera: boolean;
821
+ };
822
+ software_features: {
823
+ can_remotely_unlock: boolean;
824
+ can_program_access_codes: boolean;
825
+ };
826
+ }, {
827
+ main_category: "intercom";
828
+ physical_properties: {
829
+ has_camera: boolean;
830
+ };
831
+ software_features: {
832
+ can_remotely_unlock: boolean;
833
+ can_program_access_codes: boolean;
834
+ };
835
+ }>, z.ZodObject<{
836
+ main_category: z.ZodLiteral<"accessory">;
837
+ }, "strip", z.ZodTypeAny, {
838
+ main_category: "accessory";
839
+ }, {
840
+ main_category: "accessory";
691
841
  }>]>>;
692
842
  export type DeviceModelV1 = z.infer<typeof device_model_v1>;
843
+ export {};
@@ -12,6 +12,7 @@ const smartlock = z.object({
12
12
  'cylinder',
13
13
  'padlock',
14
14
  'locker',
15
+ 'unknown',
15
16
  ]),
16
17
  has_physical_key: z.boolean(),
17
18
  has_camera: z.boolean(),
@@ -50,7 +51,20 @@ const thermostat = z.object({
50
51
  const relay = z.object({
51
52
  main_category: z.literal('relay'),
52
53
  });
53
- export const device_model_category_specific_properties = z.discriminatedUnion('main_category', [smartlock, sensor, thermostat, relay]);
54
+ const intercom = z.object({
55
+ main_category: z.literal('intercom'),
56
+ physical_properties: z.object({
57
+ has_camera: z.boolean(),
58
+ }),
59
+ software_features: z.object({
60
+ can_remotely_unlock: z.boolean(),
61
+ can_program_access_codes: z.boolean(),
62
+ }),
63
+ });
64
+ const accessory = z.object({
65
+ main_category: z.literal('accessory'),
66
+ });
67
+ export const device_model_category_specific_properties = z.discriminatedUnion('main_category', [smartlock, sensor, thermostat, relay, intercom, accessory]);
54
68
  export const base_device_model_v1 = z.object({
55
69
  device_model_id: z.string().uuid(),
56
70
  manufacturer,
@@ -64,7 +78,7 @@ export const base_device_model_v1 = z.object({
64
78
  slug: z.string(),
65
79
  display_name: z.string(),
66
80
  primary_color_hex: z.string().optional(),
67
- manufacturer_sku: z.string(),
81
+ manufacturer_sku: z.string().optional(),
68
82
  front_image: image_reference.optional(),
69
83
  back_image: image_reference.optional(),
70
84
  })
@@ -1 +1 @@
1
- {"version":3,"file":"device-model-v1.js","sourceRoot":"","sources":["../../../../src/lib/seam/devicedb/public-models/device-model-v1.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"device-model-v1.js","sourceRoot":"","sources":["../../../../src/lib/seam/devicedb/public-models/device-model-v1.ts"],"names":[],"mappings":"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"}
@@ -26,13 +26,13 @@ export interface Routes {
26
26
  is_device_supported: boolean;
27
27
  display_name: string;
28
28
  description: string;
29
- product_url: string;
29
+ product_url?: string | undefined;
30
30
  main_connection_type: 'wifi' | 'zwave' | 'zigbee' | 'unknown';
31
31
  aesthetic_variants: Array<{
32
32
  slug: string;
33
33
  display_name: string;
34
34
  primary_color_hex?: string | undefined;
35
- manufacturer_sku: string;
35
+ manufacturer_sku?: string | undefined;
36
36
  front_image?: {
37
37
  url: string;
38
38
  width: number;
@@ -48,7 +48,7 @@ export interface Routes {
48
48
  } & ({
49
49
  main_category: 'smartlock';
50
50
  physical_properties: {
51
- lock_type: 'deadbolt' | 'lever' | 'mortise' | 'lockbox' | 'cylinder' | 'padlock' | 'locker';
51
+ lock_type: 'deadbolt' | 'lever' | 'mortise' | 'lockbox' | 'cylinder' | 'padlock' | 'locker' | 'unknown';
52
52
  has_physical_key: boolean;
53
53
  has_camera: boolean;
54
54
  };
@@ -82,6 +82,17 @@ export interface Routes {
82
82
  };
83
83
  } | {
84
84
  main_category: 'relay';
85
+ } | {
86
+ main_category: 'intercom';
87
+ physical_properties: {
88
+ has_camera: boolean;
89
+ };
90
+ software_features: {
91
+ can_remotely_unlock: boolean;
92
+ can_program_access_codes: boolean;
93
+ };
94
+ } | {
95
+ main_category: 'accessory';
85
96
  });
86
97
  };
87
98
  };
@@ -116,13 +127,13 @@ export interface Routes {
116
127
  is_device_supported: boolean;
117
128
  display_name: string;
118
129
  description: string;
119
- product_url: string;
130
+ product_url?: string | undefined;
120
131
  main_connection_type: 'wifi' | 'zwave' | 'zigbee' | 'unknown';
121
132
  aesthetic_variants: Array<{
122
133
  slug: string;
123
134
  display_name: string;
124
135
  primary_color_hex?: string | undefined;
125
- manufacturer_sku: string;
136
+ manufacturer_sku?: string | undefined;
126
137
  front_image?: {
127
138
  url: string;
128
139
  width: number;
@@ -138,7 +149,7 @@ export interface Routes {
138
149
  } & ({
139
150
  main_category: 'smartlock';
140
151
  physical_properties: {
141
- lock_type: 'deadbolt' | 'lever' | 'mortise' | 'lockbox' | 'cylinder' | 'padlock' | 'locker';
152
+ lock_type: 'deadbolt' | 'lever' | 'mortise' | 'lockbox' | 'cylinder' | 'padlock' | 'locker' | 'unknown';
142
153
  has_physical_key: boolean;
143
154
  has_camera: boolean;
144
155
  };
@@ -172,6 +183,17 @@ export interface Routes {
172
183
  };
173
184
  } | {
174
185
  main_category: 'relay';
186
+ } | {
187
+ main_category: 'intercom';
188
+ physical_properties: {
189
+ has_camera: boolean;
190
+ };
191
+ software_features: {
192
+ can_remotely_unlock: boolean;
193
+ can_program_access_codes: boolean;
194
+ };
195
+ } | {
196
+ main_category: 'accessory';
175
197
  })>;
176
198
  };
177
199
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@seamapi/types",
3
- "version": "1.23.0",
3
+ "version": "1.23.2",
4
4
  "description": "TypeScript types for the Seam API.",
5
5
  "type": "module",
6
6
  "main": "index.js",
@@ -14,6 +14,7 @@ const smartlock = z.object({
14
14
  'cylinder',
15
15
  'padlock',
16
16
  'locker',
17
+ 'unknown',
17
18
  ]),
18
19
  has_physical_key: z.boolean(),
19
20
  has_camera: z.boolean(),
@@ -52,13 +53,30 @@ const thermostat = z.object({
52
53
  }),
53
54
  })
54
55
 
56
+ export type ThermostatPropertiesV1 = z.infer<typeof thermostat>
57
+
55
58
  const relay = z.object({
56
59
  main_category: z.literal('relay'),
57
60
  })
58
61
 
62
+ const intercom = z.object({
63
+ main_category: z.literal('intercom'),
64
+ physical_properties: z.object({
65
+ has_camera: z.boolean(),
66
+ }),
67
+ software_features: z.object({
68
+ can_remotely_unlock: z.boolean(),
69
+ can_program_access_codes: z.boolean(),
70
+ }),
71
+ })
72
+
73
+ const accessory = z.object({
74
+ main_category: z.literal('accessory'),
75
+ })
76
+
59
77
  export const device_model_category_specific_properties = z.discriminatedUnion(
60
78
  'main_category',
61
- [smartlock, sensor, thermostat, relay],
79
+ [smartlock, sensor, thermostat, relay, intercom, accessory],
62
80
  )
63
81
 
64
82
  export const base_device_model_v1 = z.object({
@@ -74,7 +92,7 @@ export const base_device_model_v1 = z.object({
74
92
  slug: z.string(),
75
93
  display_name: z.string(),
76
94
  primary_color_hex: z.string().optional(),
77
- manufacturer_sku: z.string(),
95
+ manufacturer_sku: z.string().optional(),
78
96
  front_image: image_reference.optional(),
79
97
  back_image: image_reference.optional(),
80
98
  })
@@ -28,13 +28,13 @@ export interface Routes {
28
28
  is_device_supported: boolean
29
29
  display_name: string
30
30
  description: string
31
- product_url: string
31
+ product_url?: string | undefined
32
32
  main_connection_type: 'wifi' | 'zwave' | 'zigbee' | 'unknown'
33
33
  aesthetic_variants: Array<{
34
34
  slug: string
35
35
  display_name: string
36
36
  primary_color_hex?: string | undefined
37
- manufacturer_sku: string
37
+ manufacturer_sku?: string | undefined
38
38
  front_image?:
39
39
  | {
40
40
  url: string
@@ -69,6 +69,7 @@ export interface Routes {
69
69
  | 'cylinder'
70
70
  | 'padlock'
71
71
  | 'locker'
72
+ | 'unknown'
72
73
  has_physical_key: boolean
73
74
  has_camera: boolean
74
75
  }
@@ -106,6 +107,19 @@ export interface Routes {
106
107
  | {
107
108
  main_category: 'relay'
108
109
  }
110
+ | {
111
+ main_category: 'intercom'
112
+ physical_properties: {
113
+ has_camera: boolean
114
+ }
115
+ software_features: {
116
+ can_remotely_unlock: boolean
117
+ can_program_access_codes: boolean
118
+ }
119
+ }
120
+ | {
121
+ main_category: 'accessory'
122
+ }
109
123
  )
110
124
  }
111
125
  }
@@ -150,13 +164,13 @@ export interface Routes {
150
164
  is_device_supported: boolean
151
165
  display_name: string
152
166
  description: string
153
- product_url: string
167
+ product_url?: string | undefined
154
168
  main_connection_type: 'wifi' | 'zwave' | 'zigbee' | 'unknown'
155
169
  aesthetic_variants: Array<{
156
170
  slug: string
157
171
  display_name: string
158
172
  primary_color_hex?: string | undefined
159
- manufacturer_sku: string
173
+ manufacturer_sku?: string | undefined
160
174
  front_image?:
161
175
  | {
162
176
  url: string
@@ -191,6 +205,7 @@ export interface Routes {
191
205
  | 'cylinder'
192
206
  | 'padlock'
193
207
  | 'locker'
208
+ | 'unknown'
194
209
  has_physical_key: boolean
195
210
  has_camera: boolean
196
211
  }
@@ -228,6 +243,19 @@ export interface Routes {
228
243
  | {
229
244
  main_category: 'relay'
230
245
  }
246
+ | {
247
+ main_category: 'intercom'
248
+ physical_properties: {
249
+ has_camera: boolean
250
+ }
251
+ software_features: {
252
+ can_remotely_unlock: boolean
253
+ can_program_access_codes: boolean
254
+ }
255
+ }
256
+ | {
257
+ main_category: 'accessory'
258
+ }
231
259
  )
232
260
  >
233
261
  }