@camstack/types 1.2.364 → 1.2.366
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/addon.js +3 -2
- package/dist/addon.mjs +3 -2
- package/dist/auth/device-certificate.d.ts +372 -0
- package/dist/auth/request-origin.d.ts +43 -0
- package/dist/capabilities/air-quality-sensor.cap.d.ts +32 -0
- package/dist/capabilities/alarm-panel.cap.d.ts +4 -0
- package/dist/capabilities/ambient-light-sensor.cap.d.ts +13 -0
- package/dist/capabilities/audio-metrics.cap.d.ts +4 -0
- package/dist/capabilities/automation-control.cap.d.ts +4 -0
- package/dist/capabilities/battery.cap.d.ts +11 -0
- package/dist/capabilities/binary.cap.d.ts +10 -0
- package/dist/capabilities/brightness.cap.d.ts +12 -0
- package/dist/capabilities/camera-streams.cap.d.ts +4 -0
- package/dist/capabilities/capability-definition.d.ts +70 -0
- package/dist/capabilities/carbon-monoxide.cap.d.ts +10 -0
- package/dist/capabilities/climate-control.cap.d.ts +32 -0
- package/dist/capabilities/color.cap.d.ts +4 -0
- package/dist/capabilities/connectivity.cap.d.ts +4 -0
- package/dist/capabilities/consumables.cap.d.ts +4 -0
- package/dist/capabilities/contact.cap.d.ts +10 -0
- package/dist/capabilities/control.cap.d.ts +4 -0
- package/dist/capabilities/cover.cap.d.ts +12 -0
- package/dist/capabilities/day-night.cap.d.ts +4 -0
- package/dist/capabilities/device-credentials.cap.d.ts +174 -0
- package/dist/capabilities/device-discovery.cap.d.ts +4 -0
- package/dist/capabilities/device-status.cap.d.ts +10 -0
- package/dist/capabilities/doorbell.cap.d.ts +4 -0
- package/dist/capabilities/enum-sensor.cap.d.ts +4 -0
- package/dist/capabilities/event-emitter.cap.d.ts +4 -0
- package/dist/capabilities/fan-control.cap.d.ts +15 -0
- package/dist/capabilities/feature-probe.cap.d.ts +4 -0
- package/dist/capabilities/flood.cap.d.ts +10 -0
- package/dist/capabilities/gas.cap.d.ts +10 -0
- package/dist/capabilities/humidifier.cap.d.ts +15 -0
- package/dist/capabilities/humidity-sensor.cap.d.ts +12 -0
- package/dist/capabilities/image-settings.cap.d.ts +4 -0
- package/dist/capabilities/image.cap.d.ts +4 -0
- package/dist/capabilities/index.d.ts +7 -3
- package/dist/capabilities/intercom.cap.d.ts +4 -0
- package/dist/capabilities/lawn-mower-control.cap.d.ts +12 -0
- package/dist/capabilities/lock-control.cap.d.ts +4 -0
- package/dist/capabilities/media-player.cap.d.ts +4 -0
- package/dist/capabilities/motion-trigger.cap.d.ts +4 -0
- package/dist/capabilities/motion-zones.cap.d.ts +4 -0
- package/dist/capabilities/motion.cap.d.ts +11 -0
- package/dist/capabilities/native-object-detection.cap.d.ts +4 -0
- package/dist/capabilities/navigation.cap.d.ts +4 -0
- package/dist/capabilities/network-link.cap.d.ts +19 -0
- package/dist/capabilities/node-certificates.cap.d.ts +128 -0
- package/dist/capabilities/notifier.cap.d.ts +4 -0
- package/dist/capabilities/numeric-sensor.cap.d.ts +12 -0
- package/dist/capabilities/pet-feeder.cap.d.ts +25 -0
- package/dist/capabilities/power-meter.cap.d.ts +43 -0
- package/dist/capabilities/presence.cap.d.ts +12 -0
- package/dist/capabilities/pressure-sensor.cap.d.ts +12 -0
- package/dist/capabilities/privacy-mask.cap.d.ts +4 -0
- package/dist/capabilities/ptz-autotrack.cap.d.ts +4 -0
- package/dist/capabilities/recording-onboard.cap.d.ts +4 -0
- package/dist/capabilities/recording-signal.cap.d.ts +4 -0
- package/dist/capabilities/scene-monitor.cap.d.ts +4 -0
- package/dist/capabilities/script-runner.cap.d.ts +4 -0
- package/dist/capabilities/smoke.cap.d.ts +10 -0
- package/dist/capabilities/stream-catalog.cap.d.ts +4 -0
- package/dist/capabilities/stream-params.cap.d.ts +4 -0
- package/dist/capabilities/stream-signals.cap.d.ts +4 -0
- package/dist/capabilities/switch.cap.d.ts +10 -0
- package/dist/capabilities/tamper.cap.d.ts +10 -0
- package/dist/capabilities/temperature-sensor.cap.d.ts +12 -0
- package/dist/capabilities/update.cap.d.ts +4 -0
- package/dist/capabilities/vacuum-control.cap.d.ts +32 -0
- package/dist/capabilities/valve.cap.d.ts +12 -0
- package/dist/capabilities/vibration.cap.d.ts +10 -0
- package/dist/capabilities/water-heater.cap.d.ts +17 -0
- package/dist/capabilities/weather.cap.d.ts +27 -0
- package/dist/capabilities/zone-analytics.cap.d.ts +4 -0
- package/dist/capabilities/zone-rules.cap.d.ts +4 -0
- package/dist/capabilities/zones.cap.d.ts +4 -0
- package/dist/client.d.ts +1 -1
- package/dist/client.js +255 -0
- package/dist/client.mjs +245 -1
- package/dist/generated/addon-api.d.ts +797 -4
- package/dist/generated/cap-input-defaults.d.ts +1 -1
- package/dist/generated/capability-router-map.d.ts +8 -2
- package/dist/generated/history-catalog.d.ts +11 -0
- package/dist/generated/method-access-map.d.ts +1 -1
- package/dist/generated/system-proxy.d.ts +2 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.js +1574 -34
- package/dist/index.mjs +1522 -35
- package/dist/interfaces/auth.d.ts +6 -0
- package/dist/{sleep-BBF1iXUi.mjs → sleep-DxJdzHni.mjs} +26 -1
- package/dist/{sleep-BBXNq778.js → sleep-NZlEFYGX.js} +37 -0
- package/package.json +1 -1
package/dist/client.mjs
CHANGED
|
@@ -558,6 +558,240 @@ z.object({
|
|
|
558
558
|
resolution: CamStreamResolutionSchema.optional()
|
|
559
559
|
});
|
|
560
560
|
//#endregion
|
|
561
|
+
//#region src/auth/device-certificate.ts
|
|
562
|
+
/**
|
|
563
|
+
* Device certificates (D855) — the wire contract shared by the hub, the admin
|
|
564
|
+
* UI and the native viewer.
|
|
565
|
+
*
|
|
566
|
+
* A device (a phone) generates its OWN P-256 key pair in hardware (Secure
|
|
567
|
+
* Enclave / Android Keystore / a non-extractable WebCrypto key). The private
|
|
568
|
+
* key never travels. The hub signs the PUBLIC key into an X.509 leaf under a
|
|
569
|
+
* dedicated device CA; the device later proves possession of the key by
|
|
570
|
+
* signing a hub-issued nonce, and the hub answers with the same session a
|
|
571
|
+
* password login opens.
|
|
572
|
+
*
|
|
573
|
+
* Everything on the wire is a small string (a PEM, a base64url signature):
|
|
574
|
+
* D613 is about bulk bytes, and a certificate is ~600 bytes.
|
|
575
|
+
*/
|
|
576
|
+
/** Signature algorithm of every device credential: ECDSA, curve P-256, SHA-256. */
|
|
577
|
+
var DEVICE_CERT_SIGNATURE = "ecdsa-p256-sha256";
|
|
578
|
+
/** First line of every signed message; a change of format bumps the version. */
|
|
579
|
+
var DEVICE_SIGNATURE_MESSAGE_VERSION = "camstack-device-cert-v1";
|
|
580
|
+
z.enum([
|
|
581
|
+
"login",
|
|
582
|
+
"renew",
|
|
583
|
+
"revoke"
|
|
584
|
+
]);
|
|
585
|
+
var DEVICE_CERT_RENEW_WINDOW_DAYS = 30;
|
|
586
|
+
/**
|
|
587
|
+
* The exact bytes a device signs (UTF-8, `\n` separators, no trailing newline):
|
|
588
|
+
*
|
|
589
|
+
* camstack-device-cert-v1
|
|
590
|
+
* <login|renew>
|
|
591
|
+
* <origin> the hub origin returned by `getDeviceChallenge`
|
|
592
|
+
* <nonce>
|
|
593
|
+
*
|
|
594
|
+
* The origin is part of the message so a signature collected by a look-alike
|
|
595
|
+
* hub is worthless on the real one; the hub additionally binds the nonce to
|
|
596
|
+
* the origin it issued it for and refuses any other.
|
|
597
|
+
*/
|
|
598
|
+
function buildDeviceSignatureMessage(input) {
|
|
599
|
+
return [
|
|
600
|
+
DEVICE_SIGNATURE_MESSAGE_VERSION,
|
|
601
|
+
input.purpose,
|
|
602
|
+
input.origin,
|
|
603
|
+
input.nonce
|
|
604
|
+
].join("\n");
|
|
605
|
+
}
|
|
606
|
+
/** The deep link a QR carries: `camstack://enroll?hub=<origin>&code=<code>`. */
|
|
607
|
+
function buildDeviceEnrollmentLink(input) {
|
|
608
|
+
const query = new URLSearchParams();
|
|
609
|
+
if (input.hub !== void 0) query.set("hub", input.hub);
|
|
610
|
+
query.set("code", input.code);
|
|
611
|
+
return `${input.scheme ?? "camstack"}://enroll?${query.toString()}`;
|
|
612
|
+
}
|
|
613
|
+
/** Parse an enrollment deep link; `null` when it is not one. `hub` is absent when the link names none. */
|
|
614
|
+
function parseDeviceEnrollmentLink(raw) {
|
|
615
|
+
let url;
|
|
616
|
+
try {
|
|
617
|
+
url = new URL(raw);
|
|
618
|
+
} catch {
|
|
619
|
+
return null;
|
|
620
|
+
}
|
|
621
|
+
if (url.protocol !== "camstack:" && url.protocol !== "camstack.dev:") return null;
|
|
622
|
+
if (url.hostname !== "enroll") return null;
|
|
623
|
+
const code = url.searchParams.get("code");
|
|
624
|
+
if (code === null || code === "") return null;
|
|
625
|
+
const hub = url.searchParams.get("hub");
|
|
626
|
+
return {
|
|
627
|
+
hub: hub === null || hub === "" ? null : hub,
|
|
628
|
+
code
|
|
629
|
+
};
|
|
630
|
+
}
|
|
631
|
+
var DevicePlatformSchema = z.enum([
|
|
632
|
+
"ios",
|
|
633
|
+
"android",
|
|
634
|
+
"web",
|
|
635
|
+
"other"
|
|
636
|
+
]);
|
|
637
|
+
var Base64UrlSchema = z.string().min(1).max(4096).regex(/^[A-Za-z0-9_-]+$/);
|
|
638
|
+
var PemSchema = z.string().min(1).max(16384);
|
|
639
|
+
/**
|
|
640
|
+
* Why a device-certificate endpoint said no. Distinct from a transport / 5xx
|
|
641
|
+
* failure: those carry no reason and mean "try again", never "the credential is
|
|
642
|
+
* dead". The viewer switches on this exhaustively.
|
|
643
|
+
*/
|
|
644
|
+
var DeviceRefusalReasonSchema = z.enum([
|
|
645
|
+
"revoked",
|
|
646
|
+
"unknown-credential",
|
|
647
|
+
"expired",
|
|
648
|
+
"bad-signature",
|
|
649
|
+
"nonce-invalid",
|
|
650
|
+
"rate-limited",
|
|
651
|
+
"invalid-certificate",
|
|
652
|
+
"superseded",
|
|
653
|
+
"user-gone",
|
|
654
|
+
"unavailable",
|
|
655
|
+
"code-invalid",
|
|
656
|
+
"self-enrollment-disabled",
|
|
657
|
+
"step-up-required",
|
|
658
|
+
"bad-public-key"
|
|
659
|
+
]);
|
|
660
|
+
/** The only answers after which the app may count towards deleting its credential. */
|
|
661
|
+
var DEFINITIVE_DEVICE_REFUSALS = [
|
|
662
|
+
"revoked",
|
|
663
|
+
"unknown-credential",
|
|
664
|
+
"user-gone"
|
|
665
|
+
];
|
|
666
|
+
/** Consecutive DEFINITIVE answers before the app deletes its key and certificate. */
|
|
667
|
+
var DEVICE_DEFINITIVE_REFUSALS_BEFORE_DELETE = 3;
|
|
668
|
+
function isDefinitiveDeviceRefusal(reason) {
|
|
669
|
+
return DEFINITIVE_DEVICE_REFUSALS.includes(reason);
|
|
670
|
+
}
|
|
671
|
+
var DeviceRefusalSchema = z.object({
|
|
672
|
+
ok: z.literal(false),
|
|
673
|
+
reason: DeviceRefusalReasonSchema,
|
|
674
|
+
definitive: z.boolean(),
|
|
675
|
+
retryAfterSeconds: z.number().optional()
|
|
676
|
+
});
|
|
677
|
+
/**
|
|
678
|
+
* A credential-bound session that can no longer refresh answers
|
|
679
|
+
* `auth.refreshSession` with UNAUTHORIZED whose message is this prefix + the
|
|
680
|
+
* reason; {@link deviceRefusalFromMessage} reads it back.
|
|
681
|
+
*/
|
|
682
|
+
var DEVICE_REFRESH_REFUSAL_PREFIX = "device-credential:";
|
|
683
|
+
function deviceRefusalFromMessage(message) {
|
|
684
|
+
if (!message.startsWith("device-credential:")) return null;
|
|
685
|
+
const parsed = DeviceRefusalReasonSchema.safeParse(message.slice(18));
|
|
686
|
+
return parsed.success ? parsed.data : null;
|
|
687
|
+
}
|
|
688
|
+
z.object({
|
|
689
|
+
code: z.string().min(1).max(256),
|
|
690
|
+
/** SubjectPublicKeyInfo DER of the device's P-256 public key, base64url. */
|
|
691
|
+
publicKeySpki: Base64UrlSchema,
|
|
692
|
+
deviceName: z.string().min(1).max(80).optional(),
|
|
693
|
+
platform: DevicePlatformSchema
|
|
694
|
+
});
|
|
695
|
+
var CompleteEnrollmentOutputSchema = z.object({
|
|
696
|
+
credentialId: z.string(),
|
|
697
|
+
certPem: PemSchema,
|
|
698
|
+
/** The device CA certificate the leaf chains to. */
|
|
699
|
+
chainPem: PemSchema,
|
|
700
|
+
notAfter: z.number(),
|
|
701
|
+
user: z.object({
|
|
702
|
+
id: z.string(),
|
|
703
|
+
username: z.string()
|
|
704
|
+
})
|
|
705
|
+
});
|
|
706
|
+
z.discriminatedUnion("ok", [CompleteEnrollmentOutputSchema.extend({ ok: z.literal(true) }), DeviceRefusalSchema]);
|
|
707
|
+
z.object({
|
|
708
|
+
/** The single-use step-up proof (`auth.deviceEnrollProofFrom…`). */
|
|
709
|
+
proof: z.string().min(1).max(512),
|
|
710
|
+
publicKeySpki: Base64UrlSchema,
|
|
711
|
+
deviceName: z.string().min(1).max(80),
|
|
712
|
+
platform: DevicePlatformSchema
|
|
713
|
+
});
|
|
714
|
+
z.object({
|
|
715
|
+
proof: z.string(),
|
|
716
|
+
expiresAt: z.number()
|
|
717
|
+
});
|
|
718
|
+
var DeviceChallengeSchema = z.object({
|
|
719
|
+
nonce: z.string(),
|
|
720
|
+
/** The origin to put in the signed message. The app compares it to the hub it dialled. */
|
|
721
|
+
origin: z.string(),
|
|
722
|
+
expiresAt: z.number(),
|
|
723
|
+
signature: z.literal(DEVICE_CERT_SIGNATURE)
|
|
724
|
+
});
|
|
725
|
+
z.discriminatedUnion("ok", [DeviceChallengeSchema.extend({ ok: z.literal(true) }), DeviceRefusalSchema]);
|
|
726
|
+
z.object({
|
|
727
|
+
certPem: PemSchema,
|
|
728
|
+
nonce: z.string().min(1).max(256),
|
|
729
|
+
/** ECDSA P-256 SHA-256 over {@link buildDeviceSignatureMessage}; raw r||s or DER, base64url. */
|
|
730
|
+
signature: Base64UrlSchema
|
|
731
|
+
});
|
|
732
|
+
var RenewDeviceCertificateOutputSchema = z.object({
|
|
733
|
+
credentialId: z.string(),
|
|
734
|
+
certPem: PemSchema,
|
|
735
|
+
chainPem: PemSchema,
|
|
736
|
+
notAfter: z.number()
|
|
737
|
+
});
|
|
738
|
+
z.discriminatedUnion("ok", [RenewDeviceCertificateOutputSchema.extend({ ok: z.literal(true) }), DeviceRefusalSchema]);
|
|
739
|
+
z.discriminatedUnion("ok", [z.object({
|
|
740
|
+
ok: z.literal(true),
|
|
741
|
+
credentialId: z.string(),
|
|
742
|
+
sessionsEnded: z.number().int()
|
|
743
|
+
}), DeviceRefusalSchema]);
|
|
744
|
+
var DeviceCredentialStatusSchema = z.enum([
|
|
745
|
+
"active",
|
|
746
|
+
"expired",
|
|
747
|
+
"revoked"
|
|
748
|
+
]);
|
|
749
|
+
z.object({
|
|
750
|
+
id: z.string(),
|
|
751
|
+
userId: z.string(),
|
|
752
|
+
username: z.string().nullable(),
|
|
753
|
+
deviceName: z.string(),
|
|
754
|
+
platform: DevicePlatformSchema,
|
|
755
|
+
enrolledVia: z.enum(["qr", "self"]),
|
|
756
|
+
/** SHA-256 of the leaf certificate DER, colon-hex. */
|
|
757
|
+
fingerprint: z.string(),
|
|
758
|
+
issuedAt: z.number(),
|
|
759
|
+
expiresAt: z.number(),
|
|
760
|
+
lastUsedAt: z.number().nullable(),
|
|
761
|
+
lastUsedFrom: z.string().nullable(),
|
|
762
|
+
revokedAt: z.number().nullable(),
|
|
763
|
+
/** `admin:<userId>` | `user:<userId>` | `device` | `user-deleted`. */
|
|
764
|
+
revokedBy: z.string().nullable(),
|
|
765
|
+
status: DeviceCredentialStatusSchema
|
|
766
|
+
});
|
|
767
|
+
z.object({
|
|
768
|
+
/** Shown once; only its hash is kept. */
|
|
769
|
+
code: z.string(),
|
|
770
|
+
expiresAt: z.number(),
|
|
771
|
+
/** `camstack://enroll?hub=…&code=…` — what the QR encodes. */
|
|
772
|
+
enrollUrl: z.string(),
|
|
773
|
+
/** The hub origin in the link, or `null` when the hub could not name one (the link then has no `hub`). */
|
|
774
|
+
hubOrigin: z.string().nullable(),
|
|
775
|
+
/** Every origin the apps may try (role `appConnections`). */
|
|
776
|
+
hubOrigins: z.array(z.string())
|
|
777
|
+
});
|
|
778
|
+
z.object({
|
|
779
|
+
kind: z.literal("device-certificate"),
|
|
780
|
+
id: z.literal("device-certificate"),
|
|
781
|
+
label: z.string(),
|
|
782
|
+
stage: z.literal("primary"),
|
|
783
|
+
/** tRPC paths under the hub's `auth` router, so a client names no literal. */
|
|
784
|
+
challengePath: z.literal("auth.getDeviceChallenge"),
|
|
785
|
+
revokePath: z.literal("auth.revokeOwnDeviceCertificate"),
|
|
786
|
+
enrollSelfPath: z.literal("auth.enrollSelf"),
|
|
787
|
+
loginPath: z.literal("auth.loginWithDeviceCertificate"),
|
|
788
|
+
renewPath: z.literal("auth.renewDeviceCertificate"),
|
|
789
|
+
signature: z.literal(DEVICE_CERT_SIGNATURE),
|
|
790
|
+
messageVersion: z.literal(DEVICE_SIGNATURE_MESSAGE_VERSION),
|
|
791
|
+
/** Which clients can execute it: a native app silently, a browser with a non-extractable WebCrypto key. */
|
|
792
|
+
clients: z.array(z.enum(["native", "web"]))
|
|
793
|
+
});
|
|
794
|
+
//#endregion
|
|
561
795
|
//#region src/catalogs/sensor-active-state.ts
|
|
562
796
|
/**
|
|
563
797
|
* THE table "which boolean of this device type counts as HIGH", and the
|
|
@@ -27411,6 +27645,16 @@ function createSystemProxy(api) {
|
|
|
27411
27645
|
release: (input) => dispatch("deviceAdoption", "release", "mutation", input),
|
|
27412
27646
|
resync: (input) => dispatch("deviceAdoption", "resync", "mutation", input)
|
|
27413
27647
|
},
|
|
27648
|
+
deviceCredentials: {
|
|
27649
|
+
listDeviceCredentials: (input) => dispatch("deviceCredentials", "listDeviceCredentials", "query", input),
|
|
27650
|
+
startEnrollment: (input) => dispatch("deviceCredentials", "startEnrollment", "mutation", input),
|
|
27651
|
+
revokeDeviceCredential: (input) => dispatch("deviceCredentials", "revokeDeviceCredential", "mutation", input),
|
|
27652
|
+
getDeviceCertificateSettings: (input) => dispatch("deviceCredentials", "getDeviceCertificateSettings", "query", input),
|
|
27653
|
+
setDeviceCertificateSettings: (input) => dispatch("deviceCredentials", "setDeviceCertificateSettings", "mutation", input),
|
|
27654
|
+
deleteDeviceCredential: (input) => dispatch("deviceCredentials", "deleteDeviceCredential", "mutation", input),
|
|
27655
|
+
getDeviceCaStatus: (input) => dispatch("deviceCredentials", "getDeviceCaStatus", "query", input),
|
|
27656
|
+
renameDeviceCredential: (input) => dispatch("deviceCredentials", "renameDeviceCredential", "mutation", input)
|
|
27657
|
+
},
|
|
27414
27658
|
deviceExport: {
|
|
27415
27659
|
getStatus: (input) => dispatch("deviceExport", "getStatus", "query", input),
|
|
27416
27660
|
listSupportedDeviceKinds: (input) => dispatch("deviceExport", "listSupportedDeviceKinds", "query", input),
|
|
@@ -30873,4 +31117,4 @@ var TimelapseRuleSchema = TimelapseRuleInputSchema.extend({
|
|
|
30873
31117
|
updatedAt: z.number()
|
|
30874
31118
|
});
|
|
30875
31119
|
//#endregion
|
|
30876
|
-
export { APPLE_SA_TO_MACRO, AUDIO_MACRO_LABELS, AlarmArmModeSchema, CLIP_BROKER_PACED_RATES, COCO_TO_MACRO, CamProfileSchema, DEFAULT_TIMELAPSE_PREVIEW_TEXT, DeviceType, EVENTFUL_CAP_NAMES, EVENT_KIND_BY_CAP, EVENT_TAXONOMY, ICON_CATEGORIES, ICON_ENTRIES, ICON_KEYS, ICON_VIEWER_MODULES, IconKeySchema, LOCATION_ICON_FALLBACK, MACRO_LABELS, NC_ALARM_DELAY_MAX_SEC, NC_ALARM_SENSORS_MAX, NC_ALARM_SYSTEM_EVENT_KINDS, NC_ALARM_TRIGGERED_MAX_SEC, NC_BATTERY_CONSUMABLE_SYSTEM_EVENT_KINDS, NC_CAMERA_SCOPE_CAP_NAME, NC_CONSUMABLE_LOW_PERCENT_DEFAULT, NC_CONSUMABLE_LOW_PERCENT_MAX, NC_GROUPING_DEFAULT_SEC, NC_GROUPING_MAX_SEC, NC_GROUPING_MIN_SEC, NC_RULE_EDITOR_SECTION_ORDER, NC_RULE_KIND_SPECS, NC_SENSOR_TRANSITION_UNSUPPORTED_REASON, NC_SYSTEM_EVENT_FAMILY_FILTERS, NC_SYSTEM_EVENT_KIND_GROUP_SPECS, NC_SYSTEM_EVENT_SUMMARY_FAMILIES, NC_TEMPLATE_HELD_BACK_SYSTEM_EVENT_KINDS, NC_TEMPLATE_VARS, NcAlarmConfigSchema, NcAlarmSensorsSchema, NcAlarmSettingsPatchSchema, NcHistoryEntrySchema, NcRuleLastRunsSchema, NodeDirectorySchema, RECORDING_EXPORT_MAX_READ_BYTES, RETRAIN_REVIEW_ADJUSTED_IOU, RETRAIN_REVIEW_MATCH_IOU, RETRAIN_REVIEW_STATUSES, RETRAIN_REVISION_CONFLICT, SystemMirror, TIMELAPSE_DENSE_FLOOR_SEC, TimelapseRuleSchema, YAMNET_TO_MACRO, alarmDeviceBlocksArming, alarmDeviceSecureOnArm, alarmPatchLanded, canonicalIconKey, classifyRetrainReview, conditionVisibleForKind, createSystemProxy, droppedConditionsForKind, iconCategoryLabel, iconEntry, iconsInCategory, isHeldBackTemplateVar, isIconKey, isSystemRuleKind, kindsForDiscriminator, knownValues, locationIconKey, nodePickerItems, packagePickerItems, parseRetrainRevisionConflict, pickerForCondition, pickerForRuleClasses, resolveIconKey, resolveModeDelays, retrainBoxIou, retrainRevisionConflictMessage, ruleDeviceCompatCapNames, ruleEditorSectionsForKind, ruleGroupingApplies, ruleKindOf, ruleKindSpec, ruleSeedForSection, searchIcons, sensorTransitionNeverFires, sensorTransitionOffered, stateLabel, summarizeReview, systemEventDeliveryProblems, systemEventFilterAppliesToAnyKind, systemEventKindsOfFamily, systemFamilyOfKind, templateCarriesSummary, templateVarDeliveryApplies, templateVarKindApplies, templateVarSystemEventApplies };
|
|
31120
|
+
export { APPLE_SA_TO_MACRO, AUDIO_MACRO_LABELS, AlarmArmModeSchema, CLIP_BROKER_PACED_RATES, COCO_TO_MACRO, CamProfileSchema, DEFAULT_TIMELAPSE_PREVIEW_TEXT, DEFINITIVE_DEVICE_REFUSALS, DEVICE_CERT_RENEW_WINDOW_DAYS, DEVICE_CERT_SIGNATURE, DEVICE_DEFINITIVE_REFUSALS_BEFORE_DELETE, DEVICE_REFRESH_REFUSAL_PREFIX, DEVICE_SIGNATURE_MESSAGE_VERSION, DeviceType, EVENTFUL_CAP_NAMES, EVENT_KIND_BY_CAP, EVENT_TAXONOMY, ICON_CATEGORIES, ICON_ENTRIES, ICON_KEYS, ICON_VIEWER_MODULES, IconKeySchema, LOCATION_ICON_FALLBACK, MACRO_LABELS, NC_ALARM_DELAY_MAX_SEC, NC_ALARM_SENSORS_MAX, NC_ALARM_SYSTEM_EVENT_KINDS, NC_ALARM_TRIGGERED_MAX_SEC, NC_BATTERY_CONSUMABLE_SYSTEM_EVENT_KINDS, NC_CAMERA_SCOPE_CAP_NAME, NC_CONSUMABLE_LOW_PERCENT_DEFAULT, NC_CONSUMABLE_LOW_PERCENT_MAX, NC_GROUPING_DEFAULT_SEC, NC_GROUPING_MAX_SEC, NC_GROUPING_MIN_SEC, NC_RULE_EDITOR_SECTION_ORDER, NC_RULE_KIND_SPECS, NC_SENSOR_TRANSITION_UNSUPPORTED_REASON, NC_SYSTEM_EVENT_FAMILY_FILTERS, NC_SYSTEM_EVENT_KIND_GROUP_SPECS, NC_SYSTEM_EVENT_SUMMARY_FAMILIES, NC_TEMPLATE_HELD_BACK_SYSTEM_EVENT_KINDS, NC_TEMPLATE_VARS, NcAlarmConfigSchema, NcAlarmSensorsSchema, NcAlarmSettingsPatchSchema, NcHistoryEntrySchema, NcRuleLastRunsSchema, NodeDirectorySchema, RECORDING_EXPORT_MAX_READ_BYTES, RETRAIN_REVIEW_ADJUSTED_IOU, RETRAIN_REVIEW_MATCH_IOU, RETRAIN_REVIEW_STATUSES, RETRAIN_REVISION_CONFLICT, SystemMirror, TIMELAPSE_DENSE_FLOOR_SEC, TimelapseRuleSchema, YAMNET_TO_MACRO, alarmDeviceBlocksArming, alarmDeviceSecureOnArm, alarmPatchLanded, buildDeviceEnrollmentLink, buildDeviceSignatureMessage, canonicalIconKey, classifyRetrainReview, conditionVisibleForKind, createSystemProxy, deviceRefusalFromMessage, droppedConditionsForKind, iconCategoryLabel, iconEntry, iconsInCategory, isDefinitiveDeviceRefusal, isHeldBackTemplateVar, isIconKey, isSystemRuleKind, kindsForDiscriminator, knownValues, locationIconKey, nodePickerItems, packagePickerItems, parseDeviceEnrollmentLink, parseRetrainRevisionConflict, pickerForCondition, pickerForRuleClasses, resolveIconKey, resolveModeDelays, retrainBoxIou, retrainRevisionConflictMessage, ruleDeviceCompatCapNames, ruleEditorSectionsForKind, ruleGroupingApplies, ruleKindOf, ruleKindSpec, ruleSeedForSection, searchIcons, sensorTransitionNeverFires, sensorTransitionOffered, stateLabel, summarizeReview, systemEventDeliveryProblems, systemEventFilterAppliesToAnyKind, systemEventKindsOfFamily, systemFamilyOfKind, templateCarriesSummary, templateVarDeliveryApplies, templateVarKindApplies, templateVarSystemEventApplies };
|