@camstack/types 1.2.234 → 1.2.236

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 CHANGED
@@ -1,5 +1,5 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_sleep = require("./sleep-DImve4HM.js");
2
+ const require_sleep = require("./sleep-Cqxm5OIN.js");
3
3
  const require_event_category = require("./event-category-BVfsrBYA.js");
4
4
  const require_err_msg = require("./err-msg-COpsHMw2.js");
5
5
  //#region src/generated/cap-input-defaults.ts
package/dist/addon.mjs CHANGED
@@ -1,4 +1,4 @@
1
- import { A as DeviceType, At as emitReadiness, Ct as DATAPLANE_SECRET_HEADER, Dt as normalizeAddonInitResult, Et as BaseAddon, G as ReadinessRegistry, H as nodePin, I as expandCapMethods, K as ReadinessTimeoutError, S as DEVICE_CHILDREN_BATCH_MAX, T as describeCustomActions, Tt as DisposerChain, U as readNodePin, Y as scopeKey, a as asJsonObject, b as deviceOpsCapability, d as BOOT_RECOVERY_BACKOFF_MS, f as DEVICE_SCOPED_CAPS, h as createEventBusSliceSource, j as adminUiCapability, m as createDeviceProxy, p as isDeviceScopedCap, s as asString, t as sleep, u as parseJsonUnknown, x as viewerUiCapability } from "./sleep-CopaBJss.mjs";
1
+ import { A as DeviceType, At as emitReadiness, Ct as DATAPLANE_SECRET_HEADER, Dt as normalizeAddonInitResult, Et as BaseAddon, G as ReadinessRegistry, H as nodePin, I as expandCapMethods, K as ReadinessTimeoutError, S as DEVICE_CHILDREN_BATCH_MAX, T as describeCustomActions, Tt as DisposerChain, U as readNodePin, Y as scopeKey, a as asJsonObject, b as deviceOpsCapability, d as BOOT_RECOVERY_BACKOFF_MS, f as DEVICE_SCOPED_CAPS, h as createEventBusSliceSource, j as adminUiCapability, m as createDeviceProxy, p as isDeviceScopedCap, s as asString, t as sleep, u as parseJsonUnknown, x as viewerUiCapability } from "./sleep-CaB_hL5g.mjs";
2
2
  import { t as EventCategory } from "./event-category-BVDXG4tB.mjs";
3
3
  import { t as errMsg } from "./err-msg-IQTHeDzc.mjs";
4
4
  //#region src/generated/cap-input-defaults.ts
@@ -1361,29 +1361,30 @@ export declare const deviceManagerCapability: {
1361
1361
  }, z.core.$strip>>;
1362
1362
  }, z.core.$strip>>, import("./capability-definition.js").CapabilityMethodKind>;
1363
1363
  /**
1364
- * Activate (or deactivate) a wrapper addon — or ONE of its sources — for a
1365
- * (device, cap) pair.
1364
+ * Activate (or deactivate) a wrapper addon for a (device, cap) pair — the
1365
+ * per-camera function switch's ONE authority (D62).
1366
1366
  *
1367
- * Persists the binding via ctx.settings; `active: false` on a SINGLETON cap
1368
- * clears the wrapper (falling back to native if one is registered). On a
1369
- * COLLECTION cap it adds to the per-device DENY set instead, and the
1370
- * wrapper binding is left exactly as it was — a cap with several sources
1371
- * has no "which one" for `getBindings` to answer (D556).
1367
+ * SINGLETON capabilities only. Persists the binding via ctx.settings;
1368
+ * `active: false` clears the wrapper (falling back to native if one is
1369
+ * registered) by persisting the explicit `{ wrapperAddonId: null }` marker,
1370
+ * which is what stops `getBindings` re-binding a `defaultActive` wrapper.
1372
1371
  *
1373
- * `sourceId` is what makes the switch match its label. One addon can serve
1374
- * several of a device's sources (`addon-provider-reolink` answers a hub
1375
- * child with `native:reolink:onboard` AND `native:reolink:hub`), so a
1376
- * toggle keyed by addon would turn off both while saying it turned off one
1377
- * — the D62 defect with the polarity reversed (D557). Naming the source
1378
- * denies exactly that source. OMITTING it keeps the cap-wide meaning
1379
- * D556 shipped: every source this addon serves for this device, which is
1380
- * also how a deny entry persisted before the re-key is still read.
1372
+ * **A COLLECTION capability is REFUSED by name.** It briefly took a
1373
+ * `sourceId` and wrote a per-device DENY set, so one of an addon's several
1374
+ * sources could be switched off without switching off the rest (D556, then
1375
+ * D555's re-key by source). The operator removed the whole idea the same
1376
+ * day: *"tutti i providers funzionano sempre, non serve
1377
+ * disattivarli/attivarli … loro vivono lì"* (D557 amended, third). A
1378
+ * collection cap's providers are a DERIVED set — every addon that provides
1379
+ * the cap for this device type, computed on every read and persisted
1380
+ * nowhere — so there is nothing here to activate, and a verb that accepted
1381
+ * the call could only write a field the enumeration does not read. That is
1382
+ * the D62 shape, and this repo has shipped it four times.
1381
1383
  */
1382
1384
  readonly setWrapperActive: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
1383
1385
  deviceId: z.ZodNumber;
1384
1386
  capName: z.ZodString;
1385
1387
  wrapperAddonId: z.ZodString;
1386
- sourceId: z.ZodOptional<z.ZodString>;
1387
1388
  active: z.ZodBoolean;
1388
1389
  }, z.core.$strip>, z.ZodVoid, "mutation">;
1389
1390
  /**
@@ -116,8 +116,8 @@ export type { IUserPasskeysProvider, PasskeySummary } from './user-passkeys.cap.
116
116
  export { PasskeySummarySchema, userPasskeysCapability } from './user-passkeys.cap.js';
117
117
  export type { IVectorStoreProvider } from './vector-store.cap.js';
118
118
  export { VectorDeclareIndexInputSchema, VectorDeleteByFilterInputSchema, VectorDeleteInputSchema, VectorDeleteResultSchema, type VectorFilter, VectorFilterSchema, VectorGetInputSchema, VectorGetResultSchema, type VectorItem, VectorItemSchema, type VectorMatch, VectorMatchSchema, type VectorMetadata, VectorMetadataSchema, type VectorMetric, VectorMetricSchema, VectorQueryInputSchema, VectorQueryResultSchema, VectorStatsInputSchema, VectorStatsResultSchema, VectorUpsertInputSchema, VectorUpsertResultSchema, vectorStoreCapability, } from './vector-store.cap.js';
119
- export type { Clip, ClipPlayback, ClipSource, ClipSourceAvailability, IVideoclipsProvider, } from './videoclips.cap.js';
120
- export { ClipPlaybackSchema, ClipSchema, ClipSourceAvailabilitySchema, ClipSourceSchema, MAX_CLIP_EVENT_IDS, MAX_CLIP_LABELS, videoclipsCapability, } from './videoclips.cap.js';
119
+ export type { Clip, ClipPlayback, ClipSource, ClipSourceAvailability, ClipStillDisposition, ClipStillRefusalCode, IVideoclipsProvider, } from './videoclips.cap.js';
120
+ export { CLIP_STILL_DISPOSITION_HEADER, CLIP_STILL_REASON_CODE_HEADER, CLIP_STILL_REASON_HEADER, ClipPlaybackSchema, ClipSchema, ClipSourceAvailabilitySchema, ClipSourceSchema, ClipStillDispositionSchema, ClipStillRefusalCodeSchema, MAX_CLIP_EVENT_IDS, MAX_CLIP_LABELS, videoclipsCapability, } from './videoclips.cap.js';
121
121
  export type { IViewerUiProvider } from './viewer-ui.cap.js';
122
122
  export { viewerUiCapability } from './viewer-ui.cap.js';
123
123
  export { type IWebrtcSessionProvider, type WebrtcClientHints, type WebrtcLadderDecision, WebrtcLadderDecisionSchema, type WebrtcSessionDebug, WebrtcSessionDebugSchema, type WebrtcStreamChoice, WebrtcStreamChoiceSchema, type WebrtcStreamTarget, WebrtcStreamTargetSchema, type WebrtcTierFailure, WebrtcTierFailureSchema, webrtcClientHintsSchema, webrtcSessionCapability, } from './webrtc-session.cap.js';
@@ -4264,6 +4264,40 @@ export declare const pipelineAnalyticsCapability: {
4264
4264
  mediaId: z.ZodNumber;
4265
4265
  sizeBytes: z.ZodNumber;
4266
4266
  }, z.core.$strip>>>, import("./capability-definition.js").CapabilityMethodKind>;
4267
+ /**
4268
+ * Which of `ownerIds` hold at least ONE media row — an INDEX read, never a
4269
+ * blob read, and the LICENCE `videoclips` needs to publish a `thumbnail`.
4270
+ *
4271
+ * The event-media URL is stamped from a template for every event in the
4272
+ * system, so "the plane is up" was being served as "there are bytes": 64 of
4273
+ * one camera's 179 clips pointed at a 404 (device 3836, 2026-08-17). This
4274
+ * is the question that turns the stamp into a claim.
4275
+ *
4276
+ * It is on the WIRE because the clip source is registered by the addon that
4277
+ * owns the FOOTAGE, not by this one (D560) — the probe used to be an
4278
+ * in-process `MediaStore` read. One call per OWNER KIND, never one per
4279
+ * owner: that N+1 is what `MediaStore.ownersWithMedia` was written to
4280
+ * prevent, and crossing a process boundary makes it worse, not better.
4281
+ * `ownerIds` is bounded at the same 5 000 the annotation fetch is bounded
4282
+ * at, so one pathological camera-day cannot mint an unbounded request.
4283
+ *
4284
+ * THROWS rather than answering partially. A probe that quietly
4285
+ * under-reports reads as "these owners have nothing" and the caller drops
4286
+ * thumbnails that exist — the opposite failure to the one above, and
4287
+ * equally invisible.
4288
+ *
4289
+ * `deviceId` is the authorization subject, exactly as on `getEventMedia`.
4290
+ */
4291
+ readonly ownersWithMedia: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
4292
+ deviceId: z.ZodNumber;
4293
+ ownerKind: z.ZodEnum<{
4294
+ motion: "motion";
4295
+ object: "object";
4296
+ audio: "audio";
4297
+ track: "track";
4298
+ }>;
4299
+ ownerIds: z.ZodArray<z.ZodString>;
4300
+ }, z.core.$strip>, z.ZodReadonly<z.ZodArray<z.ZodString>>, import("./capability-definition.js").CapabilityMethodKind>;
4267
4301
  /**
4268
4302
  * Search object events by text query using CLIP cosine similarity.
4269
4303
  * Encodes `text` via the `embedding-encoder` cap, queries the
@@ -6,20 +6,26 @@ import { type InferProvider } from './capability-definition.js';
6
6
  *
7
7
  * A device-scoped wrapper COLLECTION (D549 decision 2, D554): every provider a
8
8
  * camera has is a SOURCE, and they are listed beside each other — never one
9
- * substituted for another. The DEFAULT provider (registered by
10
- * `addon-post-analysis`, `defaultActive: true`) composes the analytics event
11
- * log (markers + thumbnails) with the recorder's `getPlaybackManifest` — a clip
12
- * is a time-WINDOW over existing footage, never a separate file. A camera that
13
- * exposes NATIVE onboard clips (Reolink SD card, a hub's storage, HKSV) adds
14
- * its own catalog ALONGSIDE that one.
9
+ * substituted for another. The DEFAULT provider (`analytics`, registered by
10
+ * the RECORDER — the addon that owns the footage, D560 — `defaultActive: true`)
11
+ * composes the analytics event log (markers + thumbnails, read over `ctx.api`)
12
+ * with the recorder's own `getPlaybackManifest` — a clip is a time-WINDOW over
13
+ * existing footage, never a separate file. A camera that exposes NATIVE onboard
14
+ * clips (Reolink SD card, a hub's storage, HKSV) adds its own catalog
15
+ * ALONGSIDE that one.
15
16
  *
16
- * The mount stays per-device (`resolveCapMount` → `device-scoped`): the fan-out
17
- * is over the DEVICE's sources, resolved from the registry's per-device
18
- * collection, never over every provider in the cluster. `listClips` is the
19
- * union of those sources, in newest-first order, with NO dedup and no
20
- * best-source pick — a clip held in two storages appears twice, once per
21
- * source, and every row's {@link ClipSchema.source} says which. That is the
22
- * operator's decision, stated so it is not "fixed" later.
17
+ * The mount stays per-device (`resolveCapMount` → `device-scoped`), and a
18
+ * device's SOURCES are its BINDINGS: `deviceManager.getBindings(deviceId)` is
19
+ * what says a provider serves this camera, never the set of addons that
20
+ * happen to have registered the capability somewhere in the cluster. That is
21
+ * what stopped one addon appearing three times on 592 — as the device's
22
+ * native provider, as the hub-local registration and as an
23
+ * `<addonId>@<nodeId>` one (D554 amended 2026-09-20).
24
+ *
25
+ * `listClips` is asked of ONE provider at a time
26
+ * ({@link videoclipsCapability.methods.listClips} `provider`), defaulting to
27
+ * the bound one, which is CamStack on every camera today. It is NOT a union
28
+ * over everything a camera has: *"l'utilizzatore è uno solo"*.
23
29
  * {@link videoclipsCapability.methods.getClipPlayback} dispatches by the
24
30
  * source namespace inside the clip id, which is why ids are self-contained.
25
31
  *
@@ -35,6 +41,52 @@ import { type InferProvider } from './capability-definition.js';
35
41
  export declare const MAX_CLIP_EVENT_IDS = 24;
36
42
  /** Cap on {@link ClipSchema.labels} — the ribbon row has space for ~3 words. */
37
43
  export declare const MAX_CLIP_LABELS = 3;
44
+ /**
45
+ * Every reason a still-mint route may refuse, as a TOKEN — never prose.
46
+ *
47
+ * The route also sends the prose (`x-camstack-reason`), because a firmware's
48
+ * own words are the only thing that explains a `camera-refused`. But the token
49
+ * is what a surface may key a table on, and the code and the prose are
50
+ * separate headers precisely because they had been the same one: the route
51
+ * sent `queue-full: 16 thumbnail mints already waiting for host …` and the
52
+ * surface's table was keyed by `queue-full`, so every refusal on this fleet
53
+ * rendered as `Refused: <prose>`.
54
+ */
55
+ export declare const ClipStillRefusalCodeSchema: z.ZodEnum<{
56
+ sleeping: "sleeping";
57
+ unsupported: "unsupported";
58
+ "camera-refused": "camera-refused";
59
+ "no-keyframe": "no-keyframe";
60
+ "queue-full": "queue-full";
61
+ "camera-backoff": "camera-backoff";
62
+ "no-catalog-row": "no-catalog-row";
63
+ "unknown-device": "unknown-device";
64
+ "uid-missing": "uid-missing";
65
+ }>;
66
+ export type ClipStillRefusalCode = z.infer<typeof ClipStillRefusalCodeSchema>;
67
+ /**
68
+ * Whether a refusal is "not yet" or "never" — decided by the BRANCH that
69
+ * refused and carried on the wire, never inferred by the client from the code.
70
+ *
71
+ * `deferred` means the work is queued or the host is resting: the surface
72
+ * shows LOADING and comes back, under a bound. `final` means no retry can
73
+ * change the answer: the surface shows the reason and stops.
74
+ *
75
+ * A response that carries no disposition is read as `final`, which is exactly
76
+ * how every build before this one behaved — an old provider under a new
77
+ * surface keeps the old, safe behaviour rather than gaining a retry loop.
78
+ */
79
+ export declare const ClipStillDispositionSchema: z.ZodEnum<{
80
+ deferred: "deferred";
81
+ final: "final";
82
+ }>;
83
+ export type ClipStillDisposition = z.infer<typeof ClipStillDispositionSchema>;
84
+ /** The camera's / provider's own words. Kept verbatim, never parsed. */
85
+ export declare const CLIP_STILL_REASON_HEADER = "x-camstack-reason";
86
+ /** One {@link ClipStillRefusalCodeSchema} token, alone. */
87
+ export declare const CLIP_STILL_REASON_CODE_HEADER = "x-camstack-reason-code";
88
+ /** One {@link ClipStillDispositionSchema} token, alone. */
89
+ export declare const CLIP_STILL_DISPOSITION_HEADER = "x-camstack-disposition";
38
90
  export declare const ClipSchema: z.ZodObject<{
39
91
  id: z.ZodString;
40
92
  source: z.ZodString;
@@ -82,6 +134,7 @@ export declare const ClipSchema: z.ZodObject<{
82
134
  supportSub: z.ZodOptional<z.ZodBoolean>;
83
135
  playable: z.ZodOptional<z.ZodBoolean>;
84
136
  unplayableReason: z.ZodOptional<z.ZodString>;
137
+ inProgress: z.ZodOptional<z.ZodBoolean>;
85
138
  }, z.core.$strip>;
86
139
  export type Clip = z.infer<typeof ClipSchema>;
87
140
  export declare const ClipPlaybackSchema: z.ZodObject<{
@@ -141,7 +194,6 @@ export declare const ClipSourceSchema: z.ZodObject<{
141
194
  source: z.ZodString;
142
195
  label: z.ZodString;
143
196
  addonId: z.ZodOptional<z.ZodString>;
144
- via: z.ZodOptional<z.ZodString>;
145
197
  availability: z.ZodObject<{
146
198
  state: z.ZodEnum<{
147
199
  ok: "ok";
@@ -153,7 +205,6 @@ export declare const ClipSourceSchema: z.ZodObject<{
153
205
  reason: z.ZodOptional<z.ZodString>;
154
206
  catalogAsOf: z.ZodOptional<z.ZodNumber>;
155
207
  }, z.core.$strip>;
156
- switchedOff: z.ZodOptional<z.ZodBoolean>;
157
208
  }, z.core.$strip>;
158
209
  export type ClipSource = z.infer<typeof ClipSourceSchema>;
159
210
  export declare const videoclipsCapability: {
@@ -174,18 +225,32 @@ export declare const videoclipsCapability: {
174
225
  * `device-config-widget-wrapped-binding.spec.ts` pins that a `kind:'wrapped'`
175
226
  * binding entry derives the same section a native one does.
176
227
  *
177
- * `topTab` because the browser owns the whole pane (a day's clips, a source
178
- * list and a player), exactly as `ptz` does; the widget itself is
179
- * `host/clips-browser` in ui-library's `HOST_WIDGETS`.
228
+ * **It is a SECTION of the Recording tab, at the end of it — not a tab of
229
+ * its own.** It shipped as a `clips` top-tab and the operator rejected the
230
+ * placement: *"utilizzerei la stessa tab recordings, lì abbiamo già tutto il
231
+ * necessario, una nuova sezione alla fine per le clips"*. The Recording tab
232
+ * already holds the recorder's panel, the schedule bands and the unified
233
+ * retention policy; footage the camera itself holds is the same question,
234
+ * asked of a different store. `order: 100` puts it after all of them with
235
+ * room left in front. The `clips` entry in `WELL_KNOWN_TABS` went with it —
236
+ * a well-known id nobody declares is an invitation to mint the tab again.
237
+ *
238
+ * `topTab` stays: the browser owns a pane (a day's tiles, a source list and
239
+ * a player) and the Config tab's inner bar has no room for one. The widget
240
+ * itself is `host/clips-browser` in ui-library's `HOST_WIDGETS`, and because
241
+ * the admin Recordings page renders every `location:'top-tab'` +
242
+ * `tab:'recording'` section behind its camera picker
243
+ * (`CameraRecordingSettingsSection`), this declaration lands the section on
244
+ * BOTH surfaces with no second wiring.
180
245
  */
181
246
  readonly deviceConfig: {
182
247
  readonly ui: {
183
248
  readonly kind: "widget";
184
249
  readonly widgetId: "host/clips-browser";
185
- readonly tab: "clips";
250
+ readonly tab: "recording";
186
251
  readonly topTab: true;
187
252
  readonly label: "Clips";
188
- readonly order: 0;
253
+ readonly order: 100;
189
254
  };
190
255
  };
191
256
  readonly methods: {
@@ -194,7 +259,7 @@ export declare const videoclipsCapability: {
194
259
  since: z.ZodNumber;
195
260
  until: z.ZodNumber;
196
261
  limit: z.ZodOptional<z.ZodNumber>;
197
- sources: z.ZodOptional<z.ZodArray<z.ZodString>>;
262
+ provider: z.ZodOptional<z.ZodString>;
198
263
  }, z.core.$strip>, z.ZodReadonly<z.ZodArray<z.ZodObject<{
199
264
  id: z.ZodString;
200
265
  source: z.ZodString;
@@ -242,6 +307,7 @@ export declare const videoclipsCapability: {
242
307
  supportSub: z.ZodOptional<z.ZodBoolean>;
243
308
  playable: z.ZodOptional<z.ZodBoolean>;
244
309
  unplayableReason: z.ZodOptional<z.ZodString>;
310
+ inProgress: z.ZodOptional<z.ZodBoolean>;
245
311
  }, z.core.$strip>>>, "query">;
246
312
  /**
247
313
  * The sources this camera has, WITH the reason any of them cannot answer.
@@ -258,7 +324,6 @@ export declare const videoclipsCapability: {
258
324
  source: z.ZodString;
259
325
  label: z.ZodString;
260
326
  addonId: z.ZodOptional<z.ZodString>;
261
- via: z.ZodOptional<z.ZodString>;
262
327
  availability: z.ZodObject<{
263
328
  state: z.ZodEnum<{
264
329
  ok: "ok";
@@ -270,7 +335,6 @@ export declare const videoclipsCapability: {
270
335
  reason: z.ZodOptional<z.ZodString>;
271
336
  catalogAsOf: z.ZodOptional<z.ZodNumber>;
272
337
  }, z.core.$strip>;
273
- switchedOff: z.ZodOptional<z.ZodBoolean>;
274
338
  }, z.core.$strip>>>, "query">;
275
339
  readonly getClipPlayback: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
276
340
  deviceId: z.ZodNumber;
@@ -5630,6 +5630,13 @@ export type AppRouter = TrpcCoreRouter<{
5630
5630
  output: z.infer<typeof pipelineAnalyticsCapability.methods.listEventMedia.output>;
5631
5631
  meta: object;
5632
5632
  }>;
5633
+ ownersWithMedia: TRPCQueryProcedure<{
5634
+ input: {
5635
+ [x: string]: unknown;
5636
+ } & z.input<typeof pipelineAnalyticsCapability.methods.ownersWithMedia.input>;
5637
+ output: z.infer<typeof pipelineAnalyticsCapability.methods.ownersWithMedia.output>;
5638
+ meta: object;
5639
+ }>;
5633
5640
  searchObjectEvents: TRPCQueryProcedure<{
5634
5641
  input: {
5635
5642
  [x: string]: unknown;
@@ -6,7 +6,7 @@
6
6
  * scope+access check inside `protectedProcedure` (see
7
7
  * `server/backend/src/api/trpc/trpc.middleware.ts`).
8
8
  *
9
- * Coverage: 1057 method paths across 131 capabilities.
9
+ * Coverage: 1058 method paths across 131 capabilities.
10
10
  */
11
11
  import type { CapabilityMethodAccess } from '../capabilities/capability-definition.js';
12
12
  export interface MethodAccessRecord {
@@ -6,7 +6,7 @@
6
6
  * system-scope cap that takes a deviceId was previously never device-filtered
7
7
  * — see the generator header).
8
8
  *
9
- * Coverage: 389 methods carry a device reference, of which
9
+ * Coverage: 390 methods carry a device reference, of which
10
10
  * 141 are on SYSTEM-scope caps.
11
11
  *
12
12
  * Top-level fields, number arrays, and one-level arrays of objects carrying
package/dist/index.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  export * from './audio/audio-chunk-format.js';
2
- export type { EventOwnerType, MediaOwnerKey, MediaOwnerKeyInput, MediaOwnerType, } from './media/media-owner-key.js';
3
- export { EVENT_OWNER_TYPES, EventOwnerTypeSchema, MEDIA_OWNER_TYPES, formatMediaOwnerKey, isEventOwnerType, isMediaOwnerType, parseMediaOwnerKey, } from './media/media-owner-key.js';
2
+ export type { EventOwnerType, MediaOwnerKey, MediaOwnerKeyInput, MediaOwnerType, MediaPresenceOwnerKind, } from './media/media-owner-key.js';
3
+ export { EVENT_OWNER_TYPES, EventOwnerTypeSchema, MEDIA_OWNER_TYPES, MEDIA_PRESENCE_OWNER_KINDS, MediaPresenceOwnerKindSchema, formatMediaOwnerKey, isEventOwnerType, isMediaOwnerType, parseMediaOwnerKey, } from './media/media-owner-key.js';
4
4
  export type { CapabilitiesAccess } from './addon/base-addon.js';
5
5
  export { BaseAddon, normalizeAddonInitResult } from './addon/base-addon.js';
6
6
  export type { AddonRouteInvokeRequest, AddonRouteReplyEnvelope, } from './addon/build-addon-route-provider.js';