@camstack/types 1.2.309 → 1.2.311

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.
@@ -37,10 +37,10 @@ declare const LocalInterfaceSchema: z.ZodObject<{
37
37
  mac: z.ZodString;
38
38
  kind: z.ZodEnum<{
39
39
  docker: "docker";
40
+ loopback: "loopback";
40
41
  lan: "lan";
41
42
  wifi: "wifi";
42
43
  vpn: "vpn";
43
- loopback: "loopback";
44
44
  other: "other";
45
45
  }>;
46
46
  preferred: z.ZodBoolean;
@@ -56,19 +56,20 @@ declare const ConnectionEndpointSchema: z.ZodObject<{
56
56
  label: z.ZodString;
57
57
  baseUrl: z.ZodString;
58
58
  kind: z.ZodEnum<{
59
+ custom: "custom";
59
60
  public: "public";
60
- loopback: "loopback";
61
61
  "lan-ipv4": "lan-ipv4";
62
62
  "lan-ipv6": "lan-ipv6";
63
+ loopback: "loopback";
63
64
  "app-link": "app-link";
64
65
  }>;
65
66
  interfaceKind: z.ZodEnum<{
66
67
  public: "public";
67
68
  docker: "docker";
69
+ loopback: "loopback";
68
70
  lan: "lan";
69
71
  wifi: "wifi";
70
72
  vpn: "vpn";
71
- loopback: "loopback";
72
73
  other: "other";
73
74
  }>;
74
75
  plausible: z.ZodBoolean;
@@ -87,7 +88,7 @@ declare const AdvertisedLocalPortSchema: z.ZodObject<{
87
88
  }, z.core.$strip>;
88
89
  export type AdvertisedLocalPort = z.infer<typeof AdvertisedLocalPortSchema>;
89
90
  /**
90
- * The address flagged for notification links. `baseUrl: null` = AUTO, which
91
+ * The address flagged for notification taps (`notificationTaps`). `baseUrl: null` = AUTO, which
91
92
  * since D709 is the CamStack app link; `resolved` reports the effective value,
92
93
  * so the UI can show it either way.
93
94
  */
@@ -108,8 +109,9 @@ declare const ViewerEndpointsSchema: z.ZodObject<{
108
109
  }, z.core.$strip>;
109
110
  export type ViewerEndpoints = z.infer<typeof ViewerEndpointsSchema>;
110
111
  /**
111
- * One audience's hub address (see `hub-address.ts`): the operator's stored
112
- * override, the address in use, and where it came from.
112
+ * DEPRECATED compatibility shape of `getHubAddresses` (D729 amendment, kept
113
+ * for addons built against it): `cluster` is the `internal` role, `browser`
114
+ * the `publicEndpoint` role; `override` is the flagged address.
113
115
  */
114
116
  declare const HubAddressSnapshotSchema: z.ZodObject<{
115
117
  override: z.ZodNullable<z.ZodString>;
@@ -142,6 +144,153 @@ declare const HubAddressesSchema: z.ZodObject<{
142
144
  }, z.core.$strip>;
143
145
  export type HubAddresses = z.infer<typeof HubAddressesSchema>;
144
146
  export type HubAddressSnapshot = z.infer<typeof HubAddressSnapshotSchema>;
147
+ /**
148
+ * What an address is used for (`hub-address.ts`, D734). `appConnections` is
149
+ * many-valued; `notificationTaps`, `publicEndpoint` and `internal` are carried
150
+ * by at most one address.
151
+ */
152
+ export declare const HubAddressRoleSchema: z.ZodEnum<{
153
+ appConnections: "appConnections";
154
+ notificationTaps: "notificationTaps";
155
+ internal: "internal";
156
+ publicEndpoint: "publicEndpoint";
157
+ }>;
158
+ /**
159
+ * One row of the Network page's Addresses table: a detected endpoint, an
160
+ * operator-entered custom address, or the CamStack app link — flagged the
161
+ * same way. A URL that is both detected and entered is ONE row.
162
+ */
163
+ declare const HubAddressRowSchema: z.ZodObject<{
164
+ label: z.ZodString;
165
+ baseUrl: z.ZodString;
166
+ kind: z.ZodEnum<{
167
+ custom: "custom";
168
+ public: "public";
169
+ "lan-ipv4": "lan-ipv4";
170
+ "lan-ipv6": "lan-ipv6";
171
+ loopback: "loopback";
172
+ "app-link": "app-link";
173
+ }>;
174
+ interfaceKind: z.ZodEnum<{
175
+ public: "public";
176
+ docker: "docker";
177
+ loopback: "loopback";
178
+ lan: "lan";
179
+ wifi: "wifi";
180
+ vpn: "vpn";
181
+ other: "other";
182
+ }>;
183
+ plausible: z.ZodBoolean;
184
+ plausibleReason: z.ZodString;
185
+ priority: z.ZodNumber;
186
+ detected: z.ZodBoolean;
187
+ custom: z.ZodBoolean;
188
+ flags: z.ZodReadonly<z.ZodArray<z.ZodEnum<{
189
+ appConnections: "appConnections";
190
+ notificationTaps: "notificationTaps";
191
+ internal: "internal";
192
+ publicEndpoint: "publicEndpoint";
193
+ }>>>;
194
+ inUse: z.ZodReadonly<z.ZodArray<z.ZodEnum<{
195
+ appConnections: "appConnections";
196
+ notificationTaps: "notificationTaps";
197
+ internal: "internal";
198
+ publicEndpoint: "publicEndpoint";
199
+ }>>>;
200
+ eligible: z.ZodReadonly<z.ZodArray<z.ZodEnum<{
201
+ appConnections: "appConnections";
202
+ notificationTaps: "notificationTaps";
203
+ internal: "internal";
204
+ publicEndpoint: "publicEndpoint";
205
+ }>>>;
206
+ }, z.core.$strip>;
207
+ export type HubAddressRow = z.infer<typeof HubAddressRowSchema>;
208
+ declare const HubAddressBookSchema: z.ZodObject<{
209
+ rows: z.ZodReadonly<z.ZodArray<z.ZodObject<{
210
+ label: z.ZodString;
211
+ baseUrl: z.ZodString;
212
+ kind: z.ZodEnum<{
213
+ custom: "custom";
214
+ public: "public";
215
+ "lan-ipv4": "lan-ipv4";
216
+ "lan-ipv6": "lan-ipv6";
217
+ loopback: "loopback";
218
+ "app-link": "app-link";
219
+ }>;
220
+ interfaceKind: z.ZodEnum<{
221
+ public: "public";
222
+ docker: "docker";
223
+ loopback: "loopback";
224
+ lan: "lan";
225
+ wifi: "wifi";
226
+ vpn: "vpn";
227
+ other: "other";
228
+ }>;
229
+ plausible: z.ZodBoolean;
230
+ plausibleReason: z.ZodString;
231
+ priority: z.ZodNumber;
232
+ detected: z.ZodBoolean;
233
+ custom: z.ZodBoolean;
234
+ flags: z.ZodReadonly<z.ZodArray<z.ZodEnum<{
235
+ appConnections: "appConnections";
236
+ notificationTaps: "notificationTaps";
237
+ internal: "internal";
238
+ publicEndpoint: "publicEndpoint";
239
+ }>>>;
240
+ inUse: z.ZodReadonly<z.ZodArray<z.ZodEnum<{
241
+ appConnections: "appConnections";
242
+ notificationTaps: "notificationTaps";
243
+ internal: "internal";
244
+ publicEndpoint: "publicEndpoint";
245
+ }>>>;
246
+ eligible: z.ZodReadonly<z.ZodArray<z.ZodEnum<{
247
+ appConnections: "appConnections";
248
+ notificationTaps: "notificationTaps";
249
+ internal: "internal";
250
+ publicEndpoint: "publicEndpoint";
251
+ }>>>;
252
+ }, z.core.$strip>>>;
253
+ roles: z.ZodObject<{
254
+ appConnections: z.ZodObject<{
255
+ flagged: z.ZodReadonly<z.ZodArray<z.ZodString>>;
256
+ resolved: z.ZodReadonly<z.ZodArray<z.ZodString>>;
257
+ source: z.ZodEnum<{
258
+ none: "none";
259
+ auto: "auto";
260
+ flagged: "flagged";
261
+ }>;
262
+ }, z.core.$strip>;
263
+ notificationTaps: z.ZodObject<{
264
+ flagged: z.ZodNullable<z.ZodString>;
265
+ resolved: z.ZodNullable<z.ZodString>;
266
+ source: z.ZodEnum<{
267
+ none: "none";
268
+ auto: "auto";
269
+ flagged: "flagged";
270
+ }>;
271
+ }, z.core.$strip>;
272
+ internal: z.ZodObject<{
273
+ flagged: z.ZodNullable<z.ZodString>;
274
+ resolved: z.ZodNullable<z.ZodString>;
275
+ source: z.ZodEnum<{
276
+ none: "none";
277
+ auto: "auto";
278
+ flagged: "flagged";
279
+ }>;
280
+ }, z.core.$strip>;
281
+ publicEndpoint: z.ZodObject<{
282
+ flagged: z.ZodNullable<z.ZodString>;
283
+ resolved: z.ZodNullable<z.ZodString>;
284
+ source: z.ZodEnum<{
285
+ none: "none";
286
+ auto: "auto";
287
+ flagged: "flagged";
288
+ }>;
289
+ }, z.core.$strip>;
290
+ }, z.core.$strip>;
291
+ appLinkHub: z.ZodNullable<z.ZodString>;
292
+ }, z.core.$strip>;
293
+ export type HubAddressBook = z.infer<typeof HubAddressBookSchema>;
145
294
  export declare const localNetworkCapability: {
146
295
  readonly name: "local-network";
147
296
  readonly scope: "system";
@@ -162,10 +311,10 @@ export declare const localNetworkCapability: {
162
311
  mac: z.ZodString;
163
312
  kind: z.ZodEnum<{
164
313
  docker: "docker";
314
+ loopback: "loopback";
165
315
  lan: "lan";
166
316
  wifi: "wifi";
167
317
  vpn: "vpn";
168
- loopback: "loopback";
169
318
  other: "other";
170
319
  }>;
171
320
  preferred: z.ZodBoolean;
@@ -197,10 +346,10 @@ export declare const localNetworkCapability: {
197
346
  mac: z.ZodString;
198
347
  kind: z.ZodEnum<{
199
348
  docker: "docker";
349
+ loopback: "loopback";
200
350
  lan: "lan";
201
351
  wifi: "wifi";
202
352
  vpn: "vpn";
203
- loopback: "loopback";
204
353
  other: "other";
205
354
  }>;
206
355
  preferred: z.ZodBoolean;
@@ -250,19 +399,20 @@ export declare const localNetworkCapability: {
250
399
  label: z.ZodString;
251
400
  baseUrl: z.ZodString;
252
401
  kind: z.ZodEnum<{
402
+ custom: "custom";
253
403
  public: "public";
254
- loopback: "loopback";
255
404
  "lan-ipv4": "lan-ipv4";
256
405
  "lan-ipv6": "lan-ipv6";
406
+ loopback: "loopback";
257
407
  "app-link": "app-link";
258
408
  }>;
259
409
  interfaceKind: z.ZodEnum<{
260
410
  public: "public";
261
411
  docker: "docker";
412
+ loopback: "loopback";
262
413
  lan: "lan";
263
414
  wifi: "wifi";
264
415
  vpn: "vpn";
265
- loopback: "loopback";
266
416
  other: "other";
267
417
  }>;
268
418
  plausible: z.ZodBoolean;
@@ -280,14 +430,13 @@ export declare const localNetworkCapability: {
280
430
  }, z.core.$strip>;
281
431
  }, z.core.$strip>, import("./capability-definition.js").CapabilityMethodKind>;
282
432
  /**
283
- * The address notification links are flagged with. `baseUrl: null` means
284
- * AUTO, which is the CamStack app link (D709): viewer taps go through
285
- * `https://camstack.zentik.app/…?hub=<appLinkHub>` and open the app. Any
286
- * hub address the palette lists can be flagged instead; then viewer taps,
287
- * attachment links and action buttons all use it. Signed media and
288
- * buttons never use the app link — with it flagged (or AUTO) they keep
289
- * the ranked hub ladder (a configured origin, a connected tunnel, then
290
- * the LAN), never loopback.
433
+ * The `notificationTaps` role (D734): where TAPPING a notification opens.
434
+ * `baseUrl: null` means AUTO, which is the CamStack app link (D709): taps
435
+ * go through `https://camstack.zentik.app/…?hub=<appLinkHub>` and open the
436
+ * app. Any hub address the palette lists can be flagged instead; then a
437
+ * tap opens that address. Only the tap: action buttons, attachment /
438
+ * media links and admin links follow the `publicEndpoint` role
439
+ * (`getAddresses().roles.publicEndpoint`), never this one.
291
440
  *
292
441
  * Why an explicit marker: the automatic ranking cannot know which of
293
442
  * several reachable addresses the RECIPIENT can actually open. A link is
@@ -301,10 +450,9 @@ export declare const localNetworkCapability: {
301
450
  appLinkHub: z.ZodNullable<z.ZodString>;
302
451
  }, z.core.$strip>, import("./capability-definition.js").CapabilityMethodKind>;
303
452
  /**
304
- * Mark which endpoint notification artifacts use. `baseUrl: null` restores
305
- * AUTO. The value is stored verbatim (not an index into the candidate
306
- * list): interfaces come and go, and an index would silently re-point at a
307
- * different address after a reboot.
453
+ * @deprecated Use `setAddressRole({ role: 'notificationTaps', … })`. It
454
+ * writes the same `notificationTaps` flag, with the same validation. `baseUrl: null` restores automatic; an
455
+ * address that is not detected becomes a custom address.
308
456
  */
309
457
  readonly setNotificationEndpoint: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
310
458
  baseUrl: z.ZodNullable<z.ZodString>;
@@ -314,19 +462,20 @@ export declare const localNetworkCapability: {
314
462
  appLinkHub: z.ZodNullable<z.ZodString>;
315
463
  }, z.core.$strip>, "mutation">;
316
464
  /**
317
- * The endpoints the SDK / viewer races for API access. Empty `baseUrls`
318
- * means AUTO: every LAN IPv4 address plus the public tunnel, never IPv6,
319
- * never mesh, never loopback. `resolved` is that set (or the operator's
320
- * explicit subset) as it stands right now.
465
+ * The `appConnections` role as shipped apps read it: the flagged addresses
466
+ * (detected or custom), or empty for AUTO — every LAN IPv4 address plus
467
+ * the public tunnel, never IPv6, mesh, loopback or a custom address.
468
+ * `resolved` is the set as it stands right now; the custom ones in it are
469
+ * also in `getConnectionEndpoints`, which the apps filter by it.
321
470
  */
322
471
  readonly getViewerEndpoints: import("./capability-definition.js").CapabilityMethodSchema<z.ZodVoid, z.ZodObject<{
323
472
  baseUrls: z.ZodReadonly<z.ZodArray<z.ZodString>>;
324
473
  resolved: z.ZodReadonly<z.ZodArray<z.ZodString>>;
325
474
  }, z.core.$strip>, import("./capability-definition.js").CapabilityMethodKind>;
326
475
  /**
327
- * Replace the viewer race set. Empty `baseUrls` restores AUTO. Stored
328
- * verbatim (not indices) so a temporarily-down tunnel is not silently
329
- * dropped from the operator's choice.
476
+ * @deprecated Use `setAddressRole({ role: 'appConnections', … })`. It
477
+ * replaces the same `appConnections` flags.
478
+ * Empty `baseUrls` restores automatic.
330
479
  */
331
480
  readonly setViewerEndpoints: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
332
481
  baseUrls: z.ZodReadonly<z.ZodArray<z.ZodString>>;
@@ -335,44 +484,398 @@ export declare const localNetworkCapability: {
335
484
  resolved: z.ZodReadonly<z.ZodArray<z.ZodString>>;
336
485
  }, z.core.$strip>, "mutation">;
337
486
  /**
338
- * The hub's address for each audience — agents (`cluster`) and sign-in
339
- * links (`browser`) — as every consumer must read it: the operator's
340
- * override when set, else the automatic pick from this cap's palette,
341
- * never loopback. The ONE answer to "at which address is this hub
342
- * reached?"; there is no environment variable for it.
487
+ * The Network page's Addresses table and every role's answer — the ONE
488
+ * reading of "which address is this hub reached at, for what": detected
489
+ * endpoints and custom addresses with their role flags, and per role the
490
+ * flagged address, the one in use and whether it is automatic. Agent
491
+ * deliveries and LAN devices read `roles.internal`; sign-in, OAuth2 and
492
+ * the notification centre's buttons / media / admin links read
493
+ * `roles.publicEndpoint`; nothing ranks the palette itself. `scheme` is
494
+ * the one the caller shows LAN rows in (as `getConnectionEndpoints`);
495
+ * `internal` and `publicEndpoint` are always resolved over the HTTPS
496
+ * palette.
343
497
  */
344
- readonly getHubAddresses: import("./capability-definition.js").CapabilityMethodSchema<z.ZodVoid, z.ZodObject<{
345
- cluster: z.ZodObject<{
346
- override: z.ZodNullable<z.ZodString>;
347
- resolved: z.ZodNullable<z.ZodString>;
348
- source: z.ZodEnum<{
349
- none: "none";
350
- override: "override";
351
- auto: "auto";
498
+ readonly getAddresses: import("./capability-definition.js").CapabilityMethodSchema<z.ZodOptional<z.ZodObject<{
499
+ scheme: z.ZodOptional<z.ZodEnum<{
500
+ https: "https";
501
+ http: "http";
502
+ }>>;
503
+ }, z.core.$strip>>, z.ZodObject<{
504
+ rows: z.ZodReadonly<z.ZodArray<z.ZodObject<{
505
+ label: z.ZodString;
506
+ baseUrl: z.ZodString;
507
+ kind: z.ZodEnum<{
508
+ custom: "custom";
509
+ public: "public";
510
+ "lan-ipv4": "lan-ipv4";
511
+ "lan-ipv6": "lan-ipv6";
512
+ loopback: "loopback";
513
+ "app-link": "app-link";
352
514
  }>;
353
- }, z.core.$strip>;
354
- browser: z.ZodObject<{
355
- override: z.ZodNullable<z.ZodString>;
356
- resolved: z.ZodNullable<z.ZodString>;
357
- source: z.ZodEnum<{
358
- none: "none";
359
- override: "override";
360
- auto: "auto";
515
+ interfaceKind: z.ZodEnum<{
516
+ public: "public";
517
+ docker: "docker";
518
+ loopback: "loopback";
519
+ lan: "lan";
520
+ wifi: "wifi";
521
+ vpn: "vpn";
522
+ other: "other";
361
523
  }>;
524
+ plausible: z.ZodBoolean;
525
+ plausibleReason: z.ZodString;
526
+ priority: z.ZodNumber;
527
+ detected: z.ZodBoolean;
528
+ custom: z.ZodBoolean;
529
+ flags: z.ZodReadonly<z.ZodArray<z.ZodEnum<{
530
+ appConnections: "appConnections";
531
+ notificationTaps: "notificationTaps";
532
+ internal: "internal";
533
+ publicEndpoint: "publicEndpoint";
534
+ }>>>;
535
+ inUse: z.ZodReadonly<z.ZodArray<z.ZodEnum<{
536
+ appConnections: "appConnections";
537
+ notificationTaps: "notificationTaps";
538
+ internal: "internal";
539
+ publicEndpoint: "publicEndpoint";
540
+ }>>>;
541
+ eligible: z.ZodReadonly<z.ZodArray<z.ZodEnum<{
542
+ appConnections: "appConnections";
543
+ notificationTaps: "notificationTaps";
544
+ internal: "internal";
545
+ publicEndpoint: "publicEndpoint";
546
+ }>>>;
547
+ }, z.core.$strip>>>;
548
+ roles: z.ZodObject<{
549
+ appConnections: z.ZodObject<{
550
+ flagged: z.ZodReadonly<z.ZodArray<z.ZodString>>;
551
+ resolved: z.ZodReadonly<z.ZodArray<z.ZodString>>;
552
+ source: z.ZodEnum<{
553
+ none: "none";
554
+ auto: "auto";
555
+ flagged: "flagged";
556
+ }>;
557
+ }, z.core.$strip>;
558
+ notificationTaps: z.ZodObject<{
559
+ flagged: z.ZodNullable<z.ZodString>;
560
+ resolved: z.ZodNullable<z.ZodString>;
561
+ source: z.ZodEnum<{
562
+ none: "none";
563
+ auto: "auto";
564
+ flagged: "flagged";
565
+ }>;
566
+ }, z.core.$strip>;
567
+ internal: z.ZodObject<{
568
+ flagged: z.ZodNullable<z.ZodString>;
569
+ resolved: z.ZodNullable<z.ZodString>;
570
+ source: z.ZodEnum<{
571
+ none: "none";
572
+ auto: "auto";
573
+ flagged: "flagged";
574
+ }>;
575
+ }, z.core.$strip>;
576
+ publicEndpoint: z.ZodObject<{
577
+ flagged: z.ZodNullable<z.ZodString>;
578
+ resolved: z.ZodNullable<z.ZodString>;
579
+ source: z.ZodEnum<{
580
+ none: "none";
581
+ auto: "auto";
582
+ flagged: "flagged";
583
+ }>;
584
+ }, z.core.$strip>;
362
585
  }, z.core.$strip>;
586
+ appLinkHub: z.ZodNullable<z.ZodString>;
363
587
  }, z.core.$strip>, import("./capability-definition.js").CapabilityMethodKind>;
364
588
  /**
365
- * Set or clear (`baseUrl: null`) one audience's override. Validated: an
366
- * http(s) origin with a host, no credentials, no path, never loopback —
367
- * an invalid value is refused with the reason, nothing is stored.
589
+ * Add a custom address. Validated: an http(s) origin with a host, no
590
+ * credentials, no path, never loopback — an invalid one is refused with
591
+ * the reason and nothing is stored. Adding an address that already exists
592
+ * only updates its label.
368
593
  */
369
- readonly setHubAddress: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
370
- audience: z.ZodEnum<{
371
- cluster: "cluster";
372
- browser: "browser";
594
+ readonly addCustomAddress: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
595
+ baseUrl: z.ZodString;
596
+ label: z.ZodString;
597
+ }, z.core.$strip>, z.ZodObject<{
598
+ rows: z.ZodReadonly<z.ZodArray<z.ZodObject<{
599
+ label: z.ZodString;
600
+ baseUrl: z.ZodString;
601
+ kind: z.ZodEnum<{
602
+ custom: "custom";
603
+ public: "public";
604
+ "lan-ipv4": "lan-ipv4";
605
+ "lan-ipv6": "lan-ipv6";
606
+ loopback: "loopback";
607
+ "app-link": "app-link";
608
+ }>;
609
+ interfaceKind: z.ZodEnum<{
610
+ public: "public";
611
+ docker: "docker";
612
+ loopback: "loopback";
613
+ lan: "lan";
614
+ wifi: "wifi";
615
+ vpn: "vpn";
616
+ other: "other";
617
+ }>;
618
+ plausible: z.ZodBoolean;
619
+ plausibleReason: z.ZodString;
620
+ priority: z.ZodNumber;
621
+ detected: z.ZodBoolean;
622
+ custom: z.ZodBoolean;
623
+ flags: z.ZodReadonly<z.ZodArray<z.ZodEnum<{
624
+ appConnections: "appConnections";
625
+ notificationTaps: "notificationTaps";
626
+ internal: "internal";
627
+ publicEndpoint: "publicEndpoint";
628
+ }>>>;
629
+ inUse: z.ZodReadonly<z.ZodArray<z.ZodEnum<{
630
+ appConnections: "appConnections";
631
+ notificationTaps: "notificationTaps";
632
+ internal: "internal";
633
+ publicEndpoint: "publicEndpoint";
634
+ }>>>;
635
+ eligible: z.ZodReadonly<z.ZodArray<z.ZodEnum<{
636
+ appConnections: "appConnections";
637
+ notificationTaps: "notificationTaps";
638
+ internal: "internal";
639
+ publicEndpoint: "publicEndpoint";
640
+ }>>>;
641
+ }, z.core.$strip>>>;
642
+ roles: z.ZodObject<{
643
+ appConnections: z.ZodObject<{
644
+ flagged: z.ZodReadonly<z.ZodArray<z.ZodString>>;
645
+ resolved: z.ZodReadonly<z.ZodArray<z.ZodString>>;
646
+ source: z.ZodEnum<{
647
+ none: "none";
648
+ auto: "auto";
649
+ flagged: "flagged";
650
+ }>;
651
+ }, z.core.$strip>;
652
+ notificationTaps: z.ZodObject<{
653
+ flagged: z.ZodNullable<z.ZodString>;
654
+ resolved: z.ZodNullable<z.ZodString>;
655
+ source: z.ZodEnum<{
656
+ none: "none";
657
+ auto: "auto";
658
+ flagged: "flagged";
659
+ }>;
660
+ }, z.core.$strip>;
661
+ internal: z.ZodObject<{
662
+ flagged: z.ZodNullable<z.ZodString>;
663
+ resolved: z.ZodNullable<z.ZodString>;
664
+ source: z.ZodEnum<{
665
+ none: "none";
666
+ auto: "auto";
667
+ flagged: "flagged";
668
+ }>;
669
+ }, z.core.$strip>;
670
+ publicEndpoint: z.ZodObject<{
671
+ flagged: z.ZodNullable<z.ZodString>;
672
+ resolved: z.ZodNullable<z.ZodString>;
673
+ source: z.ZodEnum<{
674
+ none: "none";
675
+ auto: "auto";
676
+ flagged: "flagged";
677
+ }>;
678
+ }, z.core.$strip>;
679
+ }, z.core.$strip>;
680
+ appLinkHub: z.ZodNullable<z.ZodString>;
681
+ }, z.core.$strip>, "mutation">;
682
+ /** Remove a custom address. Its role flags go with it (those roles turn automatic). */
683
+ readonly removeCustomAddress: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
684
+ baseUrl: z.ZodString;
685
+ }, z.core.$strip>, z.ZodObject<{
686
+ rows: z.ZodReadonly<z.ZodArray<z.ZodObject<{
687
+ label: z.ZodString;
688
+ baseUrl: z.ZodString;
689
+ kind: z.ZodEnum<{
690
+ custom: "custom";
691
+ public: "public";
692
+ "lan-ipv4": "lan-ipv4";
693
+ "lan-ipv6": "lan-ipv6";
694
+ loopback: "loopback";
695
+ "app-link": "app-link";
696
+ }>;
697
+ interfaceKind: z.ZodEnum<{
698
+ public: "public";
699
+ docker: "docker";
700
+ loopback: "loopback";
701
+ lan: "lan";
702
+ wifi: "wifi";
703
+ vpn: "vpn";
704
+ other: "other";
705
+ }>;
706
+ plausible: z.ZodBoolean;
707
+ plausibleReason: z.ZodString;
708
+ priority: z.ZodNumber;
709
+ detected: z.ZodBoolean;
710
+ custom: z.ZodBoolean;
711
+ flags: z.ZodReadonly<z.ZodArray<z.ZodEnum<{
712
+ appConnections: "appConnections";
713
+ notificationTaps: "notificationTaps";
714
+ internal: "internal";
715
+ publicEndpoint: "publicEndpoint";
716
+ }>>>;
717
+ inUse: z.ZodReadonly<z.ZodArray<z.ZodEnum<{
718
+ appConnections: "appConnections";
719
+ notificationTaps: "notificationTaps";
720
+ internal: "internal";
721
+ publicEndpoint: "publicEndpoint";
722
+ }>>>;
723
+ eligible: z.ZodReadonly<z.ZodArray<z.ZodEnum<{
724
+ appConnections: "appConnections";
725
+ notificationTaps: "notificationTaps";
726
+ internal: "internal";
727
+ publicEndpoint: "publicEndpoint";
728
+ }>>>;
729
+ }, z.core.$strip>>>;
730
+ roles: z.ZodObject<{
731
+ appConnections: z.ZodObject<{
732
+ flagged: z.ZodReadonly<z.ZodArray<z.ZodString>>;
733
+ resolved: z.ZodReadonly<z.ZodArray<z.ZodString>>;
734
+ source: z.ZodEnum<{
735
+ none: "none";
736
+ auto: "auto";
737
+ flagged: "flagged";
738
+ }>;
739
+ }, z.core.$strip>;
740
+ notificationTaps: z.ZodObject<{
741
+ flagged: z.ZodNullable<z.ZodString>;
742
+ resolved: z.ZodNullable<z.ZodString>;
743
+ source: z.ZodEnum<{
744
+ none: "none";
745
+ auto: "auto";
746
+ flagged: "flagged";
747
+ }>;
748
+ }, z.core.$strip>;
749
+ internal: z.ZodObject<{
750
+ flagged: z.ZodNullable<z.ZodString>;
751
+ resolved: z.ZodNullable<z.ZodString>;
752
+ source: z.ZodEnum<{
753
+ none: "none";
754
+ auto: "auto";
755
+ flagged: "flagged";
756
+ }>;
757
+ }, z.core.$strip>;
758
+ publicEndpoint: z.ZodObject<{
759
+ flagged: z.ZodNullable<z.ZodString>;
760
+ resolved: z.ZodNullable<z.ZodString>;
761
+ source: z.ZodEnum<{
762
+ none: "none";
763
+ auto: "auto";
764
+ flagged: "flagged";
765
+ }>;
766
+ }, z.core.$strip>;
767
+ }, z.core.$strip>;
768
+ appLinkHub: z.ZodNullable<z.ZodString>;
769
+ }, z.core.$strip>, "mutation">;
770
+ /**
771
+ * Flag (`enabled: true`) or unflag an address for a role. For a
772
+ * single-valued role, flagging moves the flag off every other address.
773
+ * `baseUrl: null` returns the role to automatic. The address must be a row
774
+ * of the table (detected, custom, or the app link for `notificationTaps`);
775
+ * `publicEndpoint` on a plain-http address is refused unless
776
+ * `acceptInsecureHttp`, and never takes the app link.
777
+ */
778
+ readonly setAddressRole: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
779
+ role: z.ZodEnum<{
780
+ appConnections: "appConnections";
781
+ notificationTaps: "notificationTaps";
782
+ internal: "internal";
783
+ publicEndpoint: "publicEndpoint";
373
784
  }>;
374
785
  baseUrl: z.ZodNullable<z.ZodString>;
786
+ enabled: z.ZodBoolean;
787
+ acceptInsecureHttp: z.ZodOptional<z.ZodBoolean>;
375
788
  }, z.core.$strip>, z.ZodObject<{
789
+ rows: z.ZodReadonly<z.ZodArray<z.ZodObject<{
790
+ label: z.ZodString;
791
+ baseUrl: z.ZodString;
792
+ kind: z.ZodEnum<{
793
+ custom: "custom";
794
+ public: "public";
795
+ "lan-ipv4": "lan-ipv4";
796
+ "lan-ipv6": "lan-ipv6";
797
+ loopback: "loopback";
798
+ "app-link": "app-link";
799
+ }>;
800
+ interfaceKind: z.ZodEnum<{
801
+ public: "public";
802
+ docker: "docker";
803
+ loopback: "loopback";
804
+ lan: "lan";
805
+ wifi: "wifi";
806
+ vpn: "vpn";
807
+ other: "other";
808
+ }>;
809
+ plausible: z.ZodBoolean;
810
+ plausibleReason: z.ZodString;
811
+ priority: z.ZodNumber;
812
+ detected: z.ZodBoolean;
813
+ custom: z.ZodBoolean;
814
+ flags: z.ZodReadonly<z.ZodArray<z.ZodEnum<{
815
+ appConnections: "appConnections";
816
+ notificationTaps: "notificationTaps";
817
+ internal: "internal";
818
+ publicEndpoint: "publicEndpoint";
819
+ }>>>;
820
+ inUse: z.ZodReadonly<z.ZodArray<z.ZodEnum<{
821
+ appConnections: "appConnections";
822
+ notificationTaps: "notificationTaps";
823
+ internal: "internal";
824
+ publicEndpoint: "publicEndpoint";
825
+ }>>>;
826
+ eligible: z.ZodReadonly<z.ZodArray<z.ZodEnum<{
827
+ appConnections: "appConnections";
828
+ notificationTaps: "notificationTaps";
829
+ internal: "internal";
830
+ publicEndpoint: "publicEndpoint";
831
+ }>>>;
832
+ }, z.core.$strip>>>;
833
+ roles: z.ZodObject<{
834
+ appConnections: z.ZodObject<{
835
+ flagged: z.ZodReadonly<z.ZodArray<z.ZodString>>;
836
+ resolved: z.ZodReadonly<z.ZodArray<z.ZodString>>;
837
+ source: z.ZodEnum<{
838
+ none: "none";
839
+ auto: "auto";
840
+ flagged: "flagged";
841
+ }>;
842
+ }, z.core.$strip>;
843
+ notificationTaps: z.ZodObject<{
844
+ flagged: z.ZodNullable<z.ZodString>;
845
+ resolved: z.ZodNullable<z.ZodString>;
846
+ source: z.ZodEnum<{
847
+ none: "none";
848
+ auto: "auto";
849
+ flagged: "flagged";
850
+ }>;
851
+ }, z.core.$strip>;
852
+ internal: z.ZodObject<{
853
+ flagged: z.ZodNullable<z.ZodString>;
854
+ resolved: z.ZodNullable<z.ZodString>;
855
+ source: z.ZodEnum<{
856
+ none: "none";
857
+ auto: "auto";
858
+ flagged: "flagged";
859
+ }>;
860
+ }, z.core.$strip>;
861
+ publicEndpoint: z.ZodObject<{
862
+ flagged: z.ZodNullable<z.ZodString>;
863
+ resolved: z.ZodNullable<z.ZodString>;
864
+ source: z.ZodEnum<{
865
+ none: "none";
866
+ auto: "auto";
867
+ flagged: "flagged";
868
+ }>;
869
+ }, z.core.$strip>;
870
+ }, z.core.$strip>;
871
+ appLinkHub: z.ZodNullable<z.ZodString>;
872
+ }, z.core.$strip>, "mutation">;
873
+ /**
874
+ * @deprecated Read `getAddresses().roles.internal` / `.publicEndpoint`.
875
+ * Kept so an addon built against the D729 amendment keeps resolving:
876
+ * `cluster` = the `internal` role, `browser` = the `publicEndpoint` role.
877
+ */
878
+ readonly getHubAddresses: import("./capability-definition.js").CapabilityMethodSchema<z.ZodVoid, z.ZodObject<{
376
879
  cluster: z.ZodObject<{
377
880
  override: z.ZodNullable<z.ZodString>;
378
881
  resolved: z.ZodNullable<z.ZodString>;
@@ -391,7 +894,7 @@ export declare const localNetworkCapability: {
391
894
  auto: "auto";
392
895
  }>;
393
896
  }, z.core.$strip>;
394
- }, z.core.$strip>, "mutation">;
897
+ }, z.core.$strip>, import("./capability-definition.js").CapabilityMethodKind>;
395
898
  /**
396
899
  * Read the operator's allowlist. Empty = "auto" (no filter). Used
397
900
  * by the admin UI's address selector to seed its checkbox state.