@openziti/ziti-console-lib 1.1.3 → 1.2.0

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/index.d.ts CHANGED
@@ -15,34 +15,34 @@ import { NGXLogger } from 'ngx-logger';
15
15
  import { HttpBackend, HttpClient } from '@angular/common/http';
16
16
  import * as i2 from '@angular/common';
17
17
  import { Location } from '@angular/common';
18
+ import * as i116 from '@angular/material/dialog';
19
+ import { MatDialog, MatDialogRef } from '@angular/material/dialog';
18
20
  import moment from 'moment/moment';
19
- import * as i114 from 'ag-grid-angular';
21
+ import * as i127 from 'ag-grid-angular';
20
22
  import { IHeaderAngularComp, ICellRendererAngularComp, ITooltipAngularComp } from 'ag-grid-angular';
21
23
  import { IHeaderParams, ICellRendererParams, ITooltipParams } from 'ag-grid-community';
22
- import * as i103 from '@angular/material/dialog';
23
- import { MatDialog, MatDialogRef } from '@angular/material/dialog';
24
- import * as i117 from 'ang-jsoneditor';
24
+ import * as i130 from 'ang-jsoneditor';
25
25
  import { JsonEditorComponent } from 'ang-jsoneditor';
26
- import * as i106 from '@angular/material/datepicker';
26
+ import * as i119 from '@angular/material/datepicker';
27
27
  import { MatCalendar, MatDateRangePicker } from '@angular/material/datepicker';
28
- import * as i107 from '@angular/material/core';
28
+ import * as i120 from '@angular/material/core';
29
29
  import { DateAdapter } from '@angular/material/core';
30
- import * as i120 from 'ngx-lottie';
30
+ import * as i133 from 'ngx-lottie';
31
31
  import { AnimationOptions } from 'ngx-lottie';
32
- import * as i110 from '@angular/material/select';
32
+ import * as i123 from '@angular/material/select';
33
33
  import { MatSelect } from '@angular/material/select';
34
34
  import { OAuthService } from 'angular-oauth2-oidc';
35
35
  import moment$1 from 'moment';
36
- import * as i104 from '@angular/material/radio';
37
- import * as i108 from '@angular/material/form-field';
38
- import * as i109 from '@angular/material/input';
39
- import * as i111 from '@angular/material/button';
40
- import * as i112 from '@angular/material/icon';
41
- import * as i113 from '@angular/cdk/overlay';
42
- import * as i115 from 'angularx-qrcode';
43
- import * as i116 from 'ng-click-outside';
44
- import * as i118 from '@angular/material/tooltip';
45
- import * as i119 from '@angular/material/autocomplete';
36
+ import * as i117 from '@angular/material/radio';
37
+ import * as i121 from '@angular/material/form-field';
38
+ import * as i122 from '@angular/material/input';
39
+ import * as i124 from '@angular/material/button';
40
+ import * as i125 from '@angular/material/icon';
41
+ import * as i126 from '@angular/cdk/overlay';
42
+ import * as i128 from 'angularx-qrcode';
43
+ import * as i129 from 'ng-click-outside';
44
+ import * as i131 from '@angular/material/tooltip';
45
+ import * as i132 from '@angular/material/autocomplete';
46
46
 
47
47
  declare class SafePipe implements PipeTransform {
48
48
  private sanitized;
@@ -53,6 +53,11 @@ declare class SafePipe implements PipeTransform {
53
53
  }
54
54
 
55
55
  declare const SHAREDZ_EXTENSION: InjectionToken<any>;
56
+ type ExtensionEventType = 'formDataUpdated' | 'attributesChanged' | 'service-attributes-changed' | 'identity-attributes-changed' | 'policy-type-changed' | 'policy-semantic-changed' | 'tableDataUpdated' | string;
57
+ interface ExtensionEvent<TData = any, TResult = any> {
58
+ type: ExtensionEventType;
59
+ data?: TData;
60
+ }
56
61
  interface ExtensionService {
57
62
  formDataChanged: BehaviorSubject<any>;
58
63
  closed: EventEmitter<any>;
@@ -61,6 +66,7 @@ interface ExtensionService {
61
66
  listActions?: any[];
62
67
  consoleActionTriggered?: EventEmitter<any>;
63
68
  disabledComponents?: any[];
69
+ emitEvent?<TData, TResult>(event: ExtensionEvent<TData, TResult>): Promise<TResult | undefined>;
64
70
  extendOnInit(): void;
65
71
  extendAfterViewInits(extentionPoints: any): void;
66
72
  updateFormData(data: any): void;
@@ -76,6 +82,7 @@ declare class ExtensionsNoopService implements ExtensionService {
76
82
  moreActions: any[];
77
83
  disabledComponents: any[];
78
84
  constructor();
85
+ emitEvent<TData, TResult>(event: ExtensionEvent<TData, TResult>): Promise<TResult | undefined>;
79
86
  extendOnInit(): void;
80
87
  extendAfterViewInits(extentionPoints: any): void;
81
88
  updateFormData(data: any): void;
@@ -510,11 +517,23 @@ declare abstract class SettingsServiceClass {
510
517
  abstract initApiVersions(url: any): any;
511
518
  abstract loadSettings(): any;
512
519
  abstract hasSession(): any;
520
+ abstract isHAEnabled(): boolean;
521
+ abstract getHAControllers(): any[];
522
+ abstract getActiveSessions(): Map<string, string>;
523
+ abstract getJwtToken(): string | null;
524
+ abstract hasValidJwtToken(): boolean;
525
+ abstract setJwtToken(token: string): void;
513
526
  get(): void;
514
527
  set(data: any): void;
515
528
  version(): void;
516
529
  getHttpOptions(): any;
517
530
  addContoller(name: string, url: string): any;
531
+ abstract addHAController(url: string, name: string): void;
532
+ abstract removeHAController(url: string): void;
533
+ abstract setControllerSession(url: string, sessionToken: string): void;
534
+ abstract getControllerSession(url: string): string | null;
535
+ abstract clearControllerSessions(): void;
536
+ abstract clearJwtToken(): void;
518
537
  static ɵfac: i0.ɵɵFactoryDeclaration<SettingsServiceClass, never>;
519
538
  static ɵprov: i0.ɵɵInjectableDeclaration<SettingsServiceClass>;
520
539
  }
@@ -547,7 +566,8 @@ declare abstract class ZitiDataService {
547
566
  abstract saveSubdata(entityType: string, id: any, dataType: string, params: any): Promise<any>;
548
567
  abstract deleteSubdata(entityType: string, id: any, dataType: string, params: any): Promise<any>;
549
568
  abstract delete(type: string, id: string): Promise<any>;
550
- abstract call(url: string): Promise<any>;
569
+ abstract call(url: string, prefix?: string): Promise<any>;
570
+ abstract callHAControllers(url: string, prefix?: string): Promise<any>;
551
571
  abstract resetEnrollment(id: string, date: string): Promise<any>;
552
572
  abstract deleteEnrollment(enrollmentId: string): Promise<any>;
553
573
  abstract reissueEnrollment(id: string, date: string): Promise<any>;
@@ -662,11 +682,59 @@ declare class SettingsService extends SettingsServiceClass {
662
682
  growlerService: GrowlerService;
663
683
  allowControllerAdd: boolean;
664
684
  constructor(httpBackend: HttpBackend, growlerService: GrowlerService);
665
- init(): Promise<any>;
685
+ init(): Promise<void>;
666
686
  loadSettings(): void;
667
687
  hasSession(): boolean;
668
688
  controllerSave(name: string, url: string): void;
669
689
  initApiVersions(url: string): Promise<any>;
690
+ /**
691
+ * Add an HA controller to the cluster
692
+ */
693
+ addHAController(url: string, name: string): void;
694
+ /**
695
+ * Remove an HA controller from the cluster
696
+ */
697
+ removeHAController(url: string): void;
698
+ /**
699
+ * Get all active sessions for HA controllers
700
+ */
701
+ getActiveSessions(): Map<string, string>;
702
+ /**
703
+ * Set session token for an HA controller
704
+ */
705
+ setControllerSession(url: string, sessionToken: string): void;
706
+ /**
707
+ * Get session token for a specific controller
708
+ */
709
+ getControllerSession(url: string): string | null;
710
+ /**
711
+ * Clear all HA controller sessions
712
+ */
713
+ clearControllerSessions(): void;
714
+ /**
715
+ * Check if HA is enabled
716
+ */
717
+ isHAEnabled(): boolean;
718
+ /**
719
+ * Get all HA controllers
720
+ */
721
+ getHAControllers(): any[];
722
+ /**
723
+ * Set JWT token for authentication
724
+ */
725
+ setJwtToken(token: string): void;
726
+ /**
727
+ * Get JWT token
728
+ */
729
+ getJwtToken(): string | null;
730
+ /**
731
+ * Clear JWT token
732
+ */
733
+ clearJwtToken(): void;
734
+ /**
735
+ * Check if JWT token exists and is not expired
736
+ */
737
+ hasValidJwtToken(): boolean;
670
738
  static ɵfac: i0.ɵɵFactoryDeclaration<SettingsService, never>;
671
739
  static ɵprov: i0.ɵɵInjectableDeclaration<SettingsService>;
672
740
  }
@@ -688,6 +756,7 @@ declare abstract class ProjectableForm extends ExtendableComponent implements Do
688
756
  protected route?: ActivatedRoute;
689
757
  protected location?: Location;
690
758
  protected settingsService?: SettingsService;
759
+ protected dialogForm?: MatDialog;
691
760
  isModal: boolean;
692
761
  abstract close: EventEmitter<any>;
693
762
  _formData: any;
@@ -705,7 +774,7 @@ declare abstract class ProjectableForm extends ExtendableComponent implements Do
705
774
  errors: any;
706
775
  protected entityType: string;
707
776
  protected entityClass: any;
708
- protected isLoading: boolean;
777
+ isLoading: boolean;
709
778
  protected usePreviousLocation: boolean;
710
779
  moreActions: any[];
711
780
  tagElements: any;
@@ -728,7 +797,7 @@ declare abstract class ProjectableForm extends ExtendableComponent implements Do
728
797
  subscription: Subscription;
729
798
  formInit: boolean;
730
799
  formContainer: ElementRef;
731
- protected constructor(growlerService: GrowlerService, extService: ExtensionService, zitiService: ZitiDataService, router?: Router, route?: ActivatedRoute, location?: Location, settingsService?: SettingsService);
800
+ protected constructor(growlerService: GrowlerService, extService: ExtensionService, zitiService: ZitiDataService, router?: Router, route?: ActivatedRoute, location?: Location, settingsService?: SettingsService, dialogForm?: MatDialog);
732
801
  get isEdit(): boolean;
733
802
  ngAfterViewInit(skipFocus?: boolean): void;
734
803
  ngOnInit(): void;
@@ -749,6 +818,11 @@ declare abstract class ProjectableForm extends ExtendableComponent implements Do
749
818
  canDeactivate(): boolean;
750
819
  protected entityUpdated(): void;
751
820
  getRoleAttributes(type: string): Promise<any>;
821
+ private deleteConfirmDialogRef;
822
+ protected deleteEntity(): void;
823
+ protected deleteServiceWithOrphans(): Promise<any>;
824
+ protected openPreviewDeletions(): void;
825
+ protected getEntityLabel(): string;
752
826
  static ɵfac: i0.ɵɵFactoryDeclaration<ProjectableForm, never>;
753
827
  static ɵcmp: i0.ɵɵComponentDeclaration<ProjectableForm, "ng-component", never, { "isModal": { "alias": "isModal"; "required": false; }; "formData": { "alias": "formData"; "required": false; }; "entityId": { "alias": "entityId"; "required": false; }; }, { "close": "close"; "dataChange": "dataChange"; }, never, never, false, never>;
754
828
  }
@@ -1298,7 +1372,7 @@ declare class ConfigTypeFormComponent extends ProjectableForm implements OnInit,
1298
1372
  entityType: string;
1299
1373
  entityClass: typeof ConfigType;
1300
1374
  configEditor: ConfigEditorComponent;
1301
- constructor(svc: ConfigTypeFormService, schemaSvc: SchemaService, growlerService: GrowlerService, extService: ExtensionService, settingsService: SettingsService, zitiService: ZitiDataService, router: Router, route: ActivatedRoute, location: Location, validationService: ValidationService);
1375
+ constructor(svc: ConfigTypeFormService, schemaSvc: SchemaService, growlerService: GrowlerService, extService: ExtensionService, settingsService: SettingsService, zitiService: ZitiDataService, router: Router, route: ActivatedRoute, location: Location, validationService: ValidationService, dialogForm: MatDialog);
1302
1376
  ngOnInit(): void;
1303
1377
  entityUpdated(): void;
1304
1378
  ngOnDestroy(): void;
@@ -1938,9 +2012,11 @@ declare class IdentityFormComponent extends ProjectableForm implements OnInit, O
1938
2012
  ngOnChanges(changes: SimpleChanges): void;
1939
2013
  entityUpdated(): void;
1940
2014
  updateBadges(): void;
1941
- refreshIdentity(): void;
2015
+ refreshIdentity(waitForEnrollmentChange?: boolean): void;
2016
+ private pollRefreshIdentity;
1942
2017
  initEnrollmentType(): void;
1943
2018
  getIdentityRoleAttributes(): void;
2019
+ roleAttributesChanged(roleAttributes: any[]): void;
1944
2020
  getAssociatedServices(): void;
1945
2021
  getAssociatedServicePolicies(): void;
1946
2022
  getCertificateAuthorities(): void;
@@ -2032,7 +2108,7 @@ declare class EdgeRouterFormComponent extends ProjectableForm implements OnInit,
2032
2108
  identitiesLoading: boolean;
2033
2109
  authPolicies: any;
2034
2110
  settings: any;
2035
- constructor(settingsService: SettingsService, svc: EdgeRouterFormService, zitiService: ZitiDataService, growlerService: GrowlerService, extService: ExtensionService, config: DefaultAppConfig, router: Router, route: ActivatedRoute, location: Location);
2111
+ constructor(settingsService: SettingsService, svc: EdgeRouterFormService, zitiService: ZitiDataService, growlerService: GrowlerService, extService: ExtensionService, config: DefaultAppConfig, router: Router, route: ActivatedRoute, location: Location, dialogForm: MatDialog);
2036
2112
  ngOnInit(): void;
2037
2113
  entityUpdated(): void;
2038
2114
  getEdgeRouterRoleAttributes(): void;
@@ -2241,11 +2317,13 @@ declare class FormFieldContainerComponent {
2241
2317
  headerToggle: boolean;
2242
2318
  actionRequested: EventEmitter<any>;
2243
2319
  headerToggleChange: EventEmitter<boolean>;
2320
+ helpClicked: EventEmitter<void>;
2244
2321
  constructor();
2322
+ onHelpClick(): void;
2245
2323
  actionClicked(action: any): void;
2246
2324
  toggleHeader(option?: any): void;
2247
2325
  static ɵfac: i0.ɵɵFactoryDeclaration<FormFieldContainerComponent, never>;
2248
- static ɵcmp: i0.ɵɵComponentDeclaration<FormFieldContainerComponent, "lib-form-field-container", never, { "title": { "alias": "title"; "required": false; }; "title2": { "alias": "title2"; "required": false; }; "titleIcon": { "alias": "titleIcon"; "required": false; }; "layout": { "alias": "layout"; "required": false; }; "helpText": { "alias": "helpText"; "required": false; }; "helpText2": { "alias": "helpText2"; "required": false; }; "label": { "alias": "label"; "required": false; }; "count": { "alias": "count"; "required": false; }; "action": { "alias": "action"; "required": false; }; "actionLabel": { "alias": "actionLabel"; "required": false; }; "class": { "alias": "class"; "required": false; }; "contentStyle": { "alias": "contentStyle"; "required": false; }; "contentClass": { "alias": "contentClass"; "required": false; }; "showHeader": { "alias": "showHeader"; "required": false; }; "showToggle": { "alias": "showToggle"; "required": false; }; "headerActions": { "alias": "headerActions"; "required": false; }; "headerToggle": { "alias": "headerToggle"; "required": false; }; }, { "actionRequested": "actionRequested"; "headerToggleChange": "headerToggleChange"; }, never, ["*"], false, never>;
2326
+ static ɵcmp: i0.ɵɵComponentDeclaration<FormFieldContainerComponent, "lib-form-field-container", never, { "title": { "alias": "title"; "required": false; }; "title2": { "alias": "title2"; "required": false; }; "titleIcon": { "alias": "titleIcon"; "required": false; }; "layout": { "alias": "layout"; "required": false; }; "helpText": { "alias": "helpText"; "required": false; }; "helpText2": { "alias": "helpText2"; "required": false; }; "label": { "alias": "label"; "required": false; }; "count": { "alias": "count"; "required": false; }; "action": { "alias": "action"; "required": false; }; "actionLabel": { "alias": "actionLabel"; "required": false; }; "class": { "alias": "class"; "required": false; }; "contentStyle": { "alias": "contentStyle"; "required": false; }; "contentClass": { "alias": "contentClass"; "required": false; }; "showHeader": { "alias": "showHeader"; "required": false; }; "showToggle": { "alias": "showToggle"; "required": false; }; "headerActions": { "alias": "headerActions"; "required": false; }; "headerToggle": { "alias": "headerToggle"; "required": false; }; }, { "actionRequested": "actionRequested"; "headerToggleChange": "headerToggleChange"; "helpClicked": "helpClicked"; }, never, ["*"], false, never>;
2249
2327
  }
2250
2328
 
2251
2329
  declare class PreviewListComponent {
@@ -2281,7 +2359,7 @@ declare class PreviewListComponent {
2281
2359
 
2282
2360
  declare class LoadingIndicatorComponent implements OnInit {
2283
2361
  isLoading: boolean;
2284
- lottieOptions: AnimationOptions;
2362
+ lottieOptions: AnimationOptions | undefined;
2285
2363
  ngOnInit(): void;
2286
2364
  static ɵfac: i0.ɵɵFactoryDeclaration<LoadingIndicatorComponent, never>;
2287
2365
  static ɵcmp: i0.ɵɵComponentDeclaration<LoadingIndicatorComponent, "lib-loading-indicator", never, { "isLoading": { "alias": "isLoading"; "required": false; }; }, {}, never, never, false, never>;
@@ -2618,6 +2696,7 @@ declare class ResetEnrollmentComponent implements OnInit {
2618
2696
  type: string;
2619
2697
  identity: any;
2620
2698
  dateValue: Date;
2699
+ isSubmitting: boolean;
2621
2700
  constructor(svc: ResetEnrollmentService, dialogRef: MatDialogRef<ResetEnrollmentComponent>, data: any, dataService: ZitiDataService);
2622
2701
  ngOnInit(): void;
2623
2702
  confirm(): void;
@@ -2632,7 +2711,12 @@ declare class ResetEnrollmentComponent implements OnInit {
2632
2711
  declare class IdentityServicePathHelper {
2633
2712
  posy_for_group3: number;
2634
2713
  constructor();
2635
- getEndpointGraphObj(endpoint: any, bindIdnetities: any, edgerouters: any, selectedServiceOb: any, serviceConfigs: any, filterText?: string): RootJson;
2714
+ getEndpointGraphObj(endpoint: any, bindIdnetities: any, edgerouters: any, selectedServiceOb: any, serviceConfigs: any, filterText?: string, hostEdgeRouters?: any[], fabricRouters?: any[], routerTypesMap?: Map<string, string>, fabricLinks?: any[], serviceCircuits?: any[], serviceTerminators?: any[], fabricApiAvailable?: boolean, availableWidth?: number): RootJson;
2715
+ /**
2716
+ * Fallback: builds the graph using the original policy-derived approach
2717
+ * when fabric API data is not available.
2718
+ */
2719
+ private buildLegacyGraph;
2636
2720
  static ɵfac: i0.ɵɵFactoryDeclaration<IdentityServicePathHelper, never>;
2637
2721
  static ɵprov: i0.ɵɵInjectableDeclaration<IdentityServicePathHelper>;
2638
2722
  }
@@ -2644,8 +2728,45 @@ declare class RootJson {
2644
2728
  addLink(newObject: any): void;
2645
2729
  }
2646
2730
 
2731
+ interface RouterFetchResult {
2732
+ routers: any[];
2733
+ routerTypes: Map<string, string>;
2734
+ }
2735
+ declare class MapDataService {
2736
+ private zitiDataService;
2737
+ constructor(zitiDataService: ZitiDataService);
2738
+ /**
2739
+ * Fetch routers from both fabric and edge APIs, merge them together
2740
+ * Returns the merged routers and a map of router types (edge-router vs transit-router)
2741
+ */
2742
+ fetchRouters(): Promise<RouterFetchResult>;
2743
+ /**
2744
+ * Fetch identities with optional filters
2745
+ */
2746
+ fetchIdentities(filters?: any[]): Promise<any[]>;
2747
+ /**
2748
+ * Fetch services with optional filters
2749
+ */
2750
+ fetchServices(filters?: any[]): Promise<any[]>;
2751
+ /**
2752
+ * Fetch circuits from fabric API
2753
+ */
2754
+ fetchCircuits(): Promise<any[]>;
2755
+ /**
2756
+ * Fetch terminators from Edge API
2757
+ */
2758
+ fetchTerminators(): Promise<any[]>;
2759
+ /**
2760
+ * Fetch links from fabric API
2761
+ */
2762
+ fetchLinks(): Promise<any[]>;
2763
+ static ɵfac: i0.ɵɵFactoryDeclaration<MapDataService, never>;
2764
+ static ɵprov: i0.ɵɵInjectableDeclaration<MapDataService>;
2765
+ }
2766
+
2647
2767
  declare class IdentityServicePathComponent implements OnInit {
2648
2768
  private identityServicePathHelper;
2769
+ private mapDataService;
2649
2770
  settingsService: SettingsService;
2650
2771
  private zitiService;
2651
2772
  private router;
@@ -2674,7 +2795,13 @@ declare class IdentityServicePathComponent implements OnInit {
2674
2795
  isLoading: boolean;
2675
2796
  countGrp2Nds: number;
2676
2797
  countGrp3Nds: number;
2677
- constructor(identityServicePathHelper: IdentityServicePathHelper, settingsService: SettingsService, zitiService: ZitiDataService, router: Router, dialogRef: MatDialogRef<IdentityServicePathComponent>, data: any);
2798
+ allRouters: any[];
2799
+ routerTypesMap: Map<string, string>;
2800
+ allLinks: any[];
2801
+ allCircuits: any[];
2802
+ allTerminators: any[];
2803
+ fabricApiAvailable: boolean;
2804
+ constructor(identityServicePathHelper: IdentityServicePathHelper, mapDataService: MapDataService, settingsService: SettingsService, zitiService: ZitiDataService, router: Router, dialogRef: MatDialogRef<IdentityServicePathComponent>, data: any);
2678
2805
  ngOnInit(): void;
2679
2806
  getEndpointNetworkAsCode(): void;
2680
2807
  filterSearchArray(): void;
@@ -2683,7 +2810,7 @@ declare class IdentityServicePathComponent implements OnInit {
2683
2810
  serviceChanged(): void;
2684
2811
  addItemToArray(bindIdnetities: any, ob: any): any;
2685
2812
  getLinkForResource(ob: any, resource: any): any;
2686
- startVisProcess(bindIdnetities: any, selectedServiceOb: any, serviceConfigs: any): void;
2813
+ startVisProcess(bindIdnetities: any, selectedServiceOb: any, serviceConfigs: any, hostEdgeRouters?: any[], serviceTerminators?: any[], serviceCircuits?: any[]): void;
2687
2814
  toggleModalSize(): void;
2688
2815
  hide(): void;
2689
2816
  initTopoView(): void;
@@ -3328,7 +3455,7 @@ declare class ServiceFormComponent extends ProjectableForm implements OnInit, On
3328
3455
  entityType: string;
3329
3456
  entityClass: typeof Service;
3330
3457
  configEditor: ConfigEditorComponent;
3331
- constructor(settingsService: SettingsService, svc: ServiceFormService, zitiService: ZitiDataService, growlerService: GrowlerService, extService: ExtensionService, router: Router, route: ActivatedRoute, location: Location);
3458
+ constructor(settingsService: SettingsService, svc: ServiceFormService, zitiService: ZitiDataService, growlerService: GrowlerService, extService: ExtensionService, router: Router, route: ActivatedRoute, location: Location, dialogForm: MatDialog);
3332
3459
  ngOnInit(): void;
3333
3460
  entityUpdated(): void;
3334
3461
  getServiceRoleAttributes(): void;
@@ -3341,6 +3468,10 @@ declare class ServiceFormComponent extends ProjectableForm implements OnInit, On
3341
3468
  get showConfigData(): boolean;
3342
3469
  attachConfig(): void;
3343
3470
  captureConfigEnterEvent(event: any): void;
3471
+ protected deleteServiceWithOrphans(): Promise<any>;
3472
+ protected openPreviewDeletions(): void;
3473
+ private getOrphanedEntities;
3474
+ private deleteServiceAndOrphans;
3344
3475
  headerActionRequested(action: any): void;
3345
3476
  save(event?: any): Promise<void>;
3346
3477
  toggleEncryptionRequired(): void;
@@ -3449,7 +3580,7 @@ declare class SimpleServiceComponent extends ProjectableForm {
3449
3580
  protected settingsService: SettingsService;
3450
3581
  svc: ServiceFormService;
3451
3582
  zitiService: ZitiDataService;
3452
- private dialogForm;
3583
+ protected dialogForm: MatDialog;
3453
3584
  private validationService;
3454
3585
  private servicesPageService;
3455
3586
  protected router: Router;
@@ -3560,6 +3691,13 @@ declare class SimpleServiceComponent extends ProjectableForm {
3560
3691
  setInitData(): void;
3561
3692
  getAssociatedConfigs(): Promise<any>;
3562
3693
  getAssocaitedPolicies(): Promise<any>;
3694
+ /**
3695
+ * Sublist identities query is capped; service-policy detail includes identityRolesDisplay
3696
+ * so @-roles resolve to human-readable names even when the identity was not in the page.
3697
+ */
3698
+ private mergeIdentityRolesDisplayIntoMaps;
3699
+ private resolveIdentityNameForRole;
3700
+ private mergeSelectedIdentityNamesIntoAvailableList;
3563
3701
  getIdentityNamedAttributes(filter?: any): void;
3564
3702
  checkAllDataInit(): void;
3565
3703
  multiActionRequested(action: any): void;
@@ -3598,6 +3736,10 @@ declare class SimpleServiceComponent extends ProjectableForm {
3598
3736
  getBindApiRequest(): string;
3599
3737
  initDataModels(): void;
3600
3738
  convertToAdvanced(): void;
3739
+ protected deleteServiceWithOrphans(): Promise<any>;
3740
+ protected openPreviewDeletions(): void;
3741
+ private getOrphanedEntities;
3742
+ private deleteServiceAndOrphans;
3601
3743
  checkDataChange(): void;
3602
3744
  clear(): void;
3603
3745
  static ɵfac: i0.ɵɵFactoryDeclaration<SimpleServiceComponent, never>;
@@ -3745,13 +3887,18 @@ declare class ServicePolicyFormComponent extends ProjectableForm implements OnIn
3745
3887
  settings: any;
3746
3888
  entityType: string;
3747
3889
  entityClass: typeof ServicePolicy;
3748
- constructor(settingsService: SettingsService, svc: ServicePolicyFormService, zitiService: ZitiDataService, growlerService: GrowlerService, extService: ExtensionService, router: Router, route: ActivatedRoute, location: Location);
3890
+ constructor(settingsService: SettingsService, svc: ServicePolicyFormService, zitiService: ZitiDataService, growlerService: GrowlerService, extService: ExtensionService, router: Router, route: ActivatedRoute, location: Location, dialogForm: MatDialog);
3749
3891
  ngOnInit(): void;
3750
3892
  entityUpdated(): void;
3751
3893
  ngOnDestroy(): void;
3752
3894
  ngOnChanges(changes: SimpleChanges): void;
3753
3895
  initSelectedAttributes(): void;
3754
3896
  updateAssociations(): void;
3897
+ onServiceAttributesChanged(): void;
3898
+ onIdentityAttributesChanged(): void;
3899
+ onPolicyTypeChanged(): void;
3900
+ onPolicySemanticChanged(): void;
3901
+ emitInputChange(type: string): void;
3755
3902
  headerActionRequested(action: any): void;
3756
3903
  save(event?: any): Promise<void>;
3757
3904
  applySelectedAttributes(): void;
@@ -3765,7 +3912,7 @@ declare class ServicePolicyFormComponent extends ProjectableForm implements OnIn
3765
3912
  set apiData(data: any);
3766
3913
  clear(): void;
3767
3914
  static ɵfac: i0.ɵɵFactoryDeclaration<ServicePolicyFormComponent, never>;
3768
- static ɵcmp: i0.ɵɵComponentDeclaration<ServicePolicyFormComponent, "lib-service-policy-form", never, {}, { "close": "close"; }, never, never, false, never>;
3915
+ static ɵcmp: i0.ɵɵComponentDeclaration<ServicePolicyFormComponent, "lib-service-policy-form", never, {}, { "close": "close"; }, never, ["[slot=column-1-slot-1]", "[slot=column-2-slot-1]"], false, never>;
3769
3916
  }
3770
3917
 
3771
3918
  declare class EdgeRouterPoliciesPageService extends ListPageServiceClass {
@@ -3907,7 +4054,7 @@ declare class EdgeRouterPolicyFormComponent extends ProjectableForm implements O
3907
4054
  settings: any;
3908
4055
  entityType: string;
3909
4056
  entityClass: typeof EdgeRouterPolicy;
3910
- constructor(settingsService: SettingsService, svc: EdgeRouterPolicyFormService, zitiService: ZitiDataService, growlerService: GrowlerService, extService: ExtensionService, router: Router, route: ActivatedRoute, location: Location);
4057
+ constructor(settingsService: SettingsService, svc: EdgeRouterPolicyFormService, zitiService: ZitiDataService, growlerService: GrowlerService, extService: ExtensionService, router: Router, route: ActivatedRoute, location: Location, dialogForm: MatDialog);
3911
4058
  ngOnInit(): void;
3912
4059
  entityUpdated(): void;
3913
4060
  ngOnDestroy(): void;
@@ -3951,6 +4098,10 @@ declare class TableCellNameComponent implements ICellRendererAngularComp {
3951
4098
  constructor(dialogForm: MatDialog, router: Router);
3952
4099
  agInit(params: ICellRendererParams): void;
3953
4100
  refresh(params: ICellRendererParams<any>): boolean;
4101
+ get namePrefix(): {
4102
+ iconClass?: string;
4103
+ tooltip?: string;
4104
+ } | null;
3954
4105
  linkClicked(event: any): void;
3955
4106
  get cellText(): any;
3956
4107
  static ɵfac: i0.ɵɵFactoryDeclaration<TableCellNameComponent, never>;
@@ -4087,7 +4238,7 @@ declare class ServiceEdgeRouterPolicyFormComponent extends ProjectableForm imple
4087
4238
  settings: any;
4088
4239
  entityType: string;
4089
4240
  entityClass: typeof ServiceEdgeRouterPolicy;
4090
- constructor(settingsService: SettingsService, svc: ServiceEdgeRouterPolicyFormService, zitiService: ZitiDataService, growlerService: GrowlerService, extService: ExtensionService, router: Router, route: ActivatedRoute, location: Location);
4241
+ constructor(settingsService: SettingsService, svc: ServiceEdgeRouterPolicyFormService, zitiService: ZitiDataService, growlerService: GrowlerService, extService: ExtensionService, router: Router, route: ActivatedRoute, location: Location, dialogForm: MatDialog);
4091
4242
  ngOnInit(): void;
4092
4243
  entityUpdated(): void;
4093
4244
  ngOnDestroy(): void;
@@ -4214,7 +4365,7 @@ declare class ConfigurationFormComponent extends ProjectableForm implements OnIn
4214
4365
  entityType: string;
4215
4366
  entityClass: typeof Config;
4216
4367
  configEditor: ConfigEditorComponent;
4217
- constructor(svc: ConfigurationService, schemaSvc: SchemaService, growlerService: GrowlerService, extService: ExtensionService, settingsService: SettingsService, zitiService: ZitiDataService, router: Router, route: ActivatedRoute, location: Location);
4368
+ constructor(svc: ConfigurationService, schemaSvc: SchemaService, growlerService: GrowlerService, extService: ExtensionService, settingsService: SettingsService, zitiService: ZitiDataService, router: Router, route: ActivatedRoute, location: Location, dialogForm: MatDialog);
4218
4369
  ngOnInit(): void;
4219
4370
  entityUpdated(): void;
4220
4371
  getAssociatedServices(): void;
@@ -4235,6 +4386,8 @@ declare class ConfigurationFormComponent extends ProjectableForm implements OnIn
4235
4386
  _apiData: any;
4236
4387
  set apiData(data: any);
4237
4388
  dataChanged(event: any): void;
4389
+ deleteEntity(): void;
4390
+ private performDelete;
4238
4391
  static ɵfac: i0.ɵɵFactoryDeclaration<ConfigurationFormComponent, never>;
4239
4392
  static ɵcmp: i0.ɵɵComponentDeclaration<ConfigurationFormComponent, "lib-configuration", never, { "errors": { "alias": "errors"; "required": false; }; }, { "close": "close"; }, never, never, false, never>;
4240
4393
  }
@@ -4304,6 +4457,8 @@ declare class JwtSigner {
4304
4457
  certPem: string;
4305
4458
  tags: any;
4306
4459
  targetToken: string;
4460
+ enrollToCertEnabled: boolean;
4461
+ enrollToTokenEnabled: boolean;
4307
4462
  }
4308
4463
 
4309
4464
  declare class JwtSignerFormService {
@@ -4400,9 +4555,10 @@ declare class JwtSignerFormComponent extends ProjectableForm implements OnInit,
4400
4555
  usePreviousLocation: boolean;
4401
4556
  entityType: string;
4402
4557
  entityClass: typeof JwtSigner;
4558
+ showAutoEnrollHelpModal: boolean;
4403
4559
  filterInput: ElementRef;
4404
4560
  oidcVerification: ElementRef;
4405
- constructor(svc: JwtSignerFormService, schemaSvc: SchemaService, growlerService: GrowlerService, extService: ExtensionService, settingsService: SettingsService, zitiService: ZitiDataService, router: Router, route: ActivatedRoute, location: Location, validationService: ValidationService, authService: AuthService, oauthService: OAuthService, http: HttpClient, loginService: LoginServiceClass);
4561
+ constructor(svc: JwtSignerFormService, schemaSvc: SchemaService, growlerService: GrowlerService, extService: ExtensionService, settingsService: SettingsService, zitiService: ZitiDataService, router: Router, route: ActivatedRoute, location: Location, validationService: ValidationService, authService: AuthService, oauthService: OAuthService, http: HttpClient, loginService: LoginServiceClass, dialogForm: MatDialog);
4406
4562
  ngOnInit(): void;
4407
4563
  ngAfterViewInit(): void;
4408
4564
  protected entityUpdated(): void;
@@ -4414,6 +4570,7 @@ declare class JwtSignerFormComponent extends ProjectableForm implements OnInit,
4414
4570
  save(event?: any): Promise<void>;
4415
4571
  validate(): boolean;
4416
4572
  get showTokenType(): any;
4573
+ get showAutoEnrollment(): boolean;
4417
4574
  get targetToken(): any;
4418
4575
  set targetToken(val: any);
4419
4576
  get apiCallURL(): string;
@@ -4423,6 +4580,9 @@ declare class JwtSignerFormComponent extends ProjectableForm implements OnInit,
4423
4580
  dataChanged(event: any): void;
4424
4581
  toggleEnabled(): void;
4425
4582
  toggleUseExternalId(): void;
4583
+ toggleEnrollToCertEnabled(): void;
4584
+ toggleEnrollToTokenEnabled(): void;
4585
+ showAutoEnrollHelp(): void;
4426
4586
  trimWhitespaceScopes(): void;
4427
4587
  radioKeyDownHandler(event: any): void;
4428
4588
  selectSignatureMethod(method: any): void;
@@ -5039,7 +5199,7 @@ declare class PostureCheckFormComponent extends ProjectableForm implements OnIni
5039
5199
  };
5040
5200
  entityType: string;
5041
5201
  entityClass: typeof PostureCheck;
5042
- constructor(svc: PostureCheckFormService, schemaSvc: SchemaService, growlerService: GrowlerService, extService: ExtensionService, settingsService: SettingsService, zitiService: ZitiDataService, router: Router, route: ActivatedRoute, location: Location, validationService: ValidationService);
5202
+ constructor(svc: PostureCheckFormService, schemaSvc: SchemaService, growlerService: GrowlerService, extService: ExtensionService, settingsService: SettingsService, zitiService: ZitiDataService, router: Router, route: ActivatedRoute, location: Location, validationService: ValidationService, dialogForm: MatDialog);
5043
5203
  ngOnInit(): void;
5044
5204
  entityUpdated(): void;
5045
5205
  getMinMaxVersions(version: any): {
@@ -5426,11 +5586,572 @@ declare class ProfileComponent {
5426
5586
  static ɵcmp: i0.ɵɵComponentDeclaration<ProfileComponent, "lib-profile", never, {}, {}, never, never, false, never>;
5427
5587
  }
5428
5588
 
5589
+ declare class GeolocationService {
5590
+ private zitiDataService;
5591
+ private growlerService;
5592
+ private originalLocations;
5593
+ constructor(zitiDataService: ZitiDataService, growlerService: GrowlerService);
5594
+ /**
5595
+ * Update geolocation tag locally (in-memory only, not saved to backend)
5596
+ */
5597
+ updateGeolocationLocal(item: any, lat: number, lng: number): void;
5598
+ /**
5599
+ * Save geolocation changes to backend
5600
+ */
5601
+ saveGeolocation(item: any, type: string, routerTypes?: Map<string, string>): Promise<void>;
5602
+ /**
5603
+ * Remove geolocation tag from entity
5604
+ */
5605
+ removeGeolocation(item: any, type: string, routerTypes?: Map<string, string>): Promise<void>;
5606
+ /**
5607
+ * Check if an entity has unsaved location changes
5608
+ */
5609
+ hasUnsavedChanges(item: any): boolean;
5610
+ /**
5611
+ * Track original location for an entity
5612
+ */
5613
+ trackOriginalLocation(item: any): void;
5614
+ /**
5615
+ * Parse geolocation tag into lat/lng coordinates
5616
+ */
5617
+ parseGeolocation(geolocationTag: string): {
5618
+ lat: number;
5619
+ lng: number;
5620
+ } | null;
5621
+ /**
5622
+ * Clear all tracked original locations
5623
+ */
5624
+ clearTrackedLocations(): void;
5625
+ static ɵfac: i0.ɵɵFactoryDeclaration<GeolocationService, never>;
5626
+ static ɵprov: i0.ɵɵInjectableDeclaration<GeolocationService>;
5627
+ }
5628
+
5629
+ interface CircuitPathNode {
5630
+ id: string;
5631
+ name: string;
5632
+ type: 'identity' | 'routers';
5633
+ lat: number;
5634
+ lng: number;
5635
+ }
5636
+ interface CircuitPath {
5637
+ nodes: CircuitPathNode[];
5638
+ coordinates: [number, number][];
5639
+ }
5640
+ declare class CircuitCalculationService {
5641
+ constructor();
5642
+ /**
5643
+ * Find the host identity ID for a circuit using various fallback strategies
5644
+ */
5645
+ findHostIdentityId(circuit: any, terminators: any[]): string | null;
5646
+ /**
5647
+ * Build a circuit path data structure (client identity → routers → hosting identity)
5648
+ * Returns null if the path cannot be built (missing locations, etc.)
5649
+ */
5650
+ buildCircuitPath(circuit: any, identities: any[], identityLocations: Map<string, {
5651
+ lat: number;
5652
+ lng: number;
5653
+ name: string;
5654
+ }>, routerLocations: Map<string, {
5655
+ lat: number;
5656
+ lng: number;
5657
+ name: string;
5658
+ }>, terminators: any[]): CircuitPath | null;
5659
+ /**
5660
+ * Check if all routers in a circuit path are in the visible set
5661
+ */
5662
+ areAllRoutersVisible(circuit: any, visibleRouterIds: Set<string>): boolean;
5663
+ /**
5664
+ * Check if at least one router in a circuit path is in the visible set
5665
+ */
5666
+ hasAnyVisibleRouter(circuit: any, visibleRouterIds: Set<string>): boolean;
5667
+ /**
5668
+ * Filter a circuit path to only include visible entities
5669
+ * (all identities + only visible routers)
5670
+ */
5671
+ filterCircuitPathToVisible(circuitPath: CircuitPath, visibleRouterIds: Set<string>): CircuitPath;
5672
+ /**
5673
+ * Check if a circuit's service is in the visible set
5674
+ */
5675
+ isCircuitServiceVisible(circuit: any, visibleServiceIds: Set<string>, hasServiceFilters: boolean): boolean;
5676
+ /**
5677
+ * Calculate the count of unique services that have active circuits
5678
+ */
5679
+ calculateServicesWithActiveCircuits(circuits: any[]): number;
5680
+ static ɵfac: i0.ɵɵFactoryDeclaration<CircuitCalculationService, never>;
5681
+ static ɵprov: i0.ɵɵInjectableDeclaration<CircuitCalculationService>;
5682
+ }
5683
+
5684
+ interface CircuitHop {
5685
+ from: string;
5686
+ fromType: string;
5687
+ fromId: string;
5688
+ fromHasLocation: boolean;
5689
+ to: string;
5690
+ toType: string;
5691
+ toId: string;
5692
+ toHasLocation: boolean;
5693
+ isVisible: boolean;
5694
+ latencyMs?: number;
5695
+ }
5696
+ interface CircuitPathData {
5697
+ pathNodes: any[];
5698
+ pathCoordinates: [number, number][];
5699
+ routerNames: string[];
5700
+ entityIds: string[];
5701
+ entityTypes: string[];
5702
+ circuitHops: CircuitHop[];
5703
+ circuitRouters: any[];
5704
+ clientId: string | null;
5705
+ clientName: string;
5706
+ hostId: string | null;
5707
+ hostName: string;
5708
+ hasCompleteGeolocation: boolean;
5709
+ missingLocations: string[];
5710
+ visibleSegmentToHopIndex: Map<number, number>;
5711
+ }
5712
+ declare class CircuitPathBuilderService {
5713
+ /**
5714
+ * Builds complete circuit path data structure with coordinates, hops, and router details
5715
+ * @param circuit - The circuit object
5716
+ * @param routerLocations - Map of router IDs to location data
5717
+ * @param identityLocations - Map of identity IDs to location data
5718
+ * @param routers - Array of all router objects
5719
+ * @param identities - Array of all identity objects
5720
+ * @param links - Array of all link objects (for latency data on router-to-router hops)
5721
+ * @returns Complete circuit path data or null if path cannot be built
5722
+ */
5723
+ buildCircuitPathData(circuit: any, routerLocations: Map<string, any>, identityLocations: Map<string, any>, routers: any[], identities: any[], links?: any[]): CircuitPathData | null;
5724
+ /**
5725
+ * Builds a simplified circuit path for rendering (coordinates only)
5726
+ * @param circuit - The circuit object
5727
+ * @param routerLocations - Map of router IDs to location data
5728
+ * @param identityLocations - Map of identity IDs to location data
5729
+ * @returns Array of coordinates or null if path cannot be built
5730
+ */
5731
+ buildSimpleCircuitPath(circuit: any, routerLocations: Map<string, any>, identityLocations: Map<string, any>): [number, number][] | null;
5732
+ static ɵfac: i0.ɵɵFactoryDeclaration<CircuitPathBuilderService, never>;
5733
+ static ɵprov: i0.ɵɵInjectableDeclaration<CircuitPathBuilderService>;
5734
+ }
5735
+
5736
+ declare class CircuitFilterService {
5737
+ /**
5738
+ * Gets filtered identity IDs based on selected service and identity filters
5739
+ * @param identities - All identities
5740
+ * @param circuits - All circuits
5741
+ * @param terminators - All terminators
5742
+ * @param selectedServiceFilters - Selected service filters
5743
+ * @param selectedIdentityFilters - Selected identity filters
5744
+ * @returns Set of identity IDs that match the filters
5745
+ */
5746
+ getFilteredIdentityIds(identities: any[], circuits: any[], terminators: any[], selectedServiceFilters: any[], selectedIdentityFilters: any[]): Set<string>;
5747
+ /**
5748
+ * Gets filtered router IDs based on selected service and identity filters
5749
+ * @param identities - All identities
5750
+ * @param circuits - All circuits
5751
+ * @param terminators - All terminators
5752
+ * @param routerLocations - Map of router locations
5753
+ * @param selectedServiceFilters - Selected service filters
5754
+ * @param selectedIdentityFilters - Selected identity filters
5755
+ * @returns Set of router IDs that match the filters
5756
+ */
5757
+ getFilteredRouterIds(identities: any[], circuits: any[], terminators: any[], routerLocations: Map<string, any>, selectedServiceFilters: any[], selectedIdentityFilters: any[]): Set<string>;
5758
+ static ɵfac: i0.ɵɵFactoryDeclaration<CircuitFilterService, never>;
5759
+ static ɵprov: i0.ɵɵInjectableDeclaration<CircuitFilterService>;
5760
+ }
5761
+
5762
+ /**
5763
+ * Service responsible for managing map markers (identities and routers)
5764
+ * Handles marker creation, updates, selection, and user interactions
5765
+ */
5766
+ declare class MapMarkerService {
5767
+ private geolocationService;
5768
+ private growlerService;
5769
+ private dialogForm;
5770
+ identityMarkers: any[];
5771
+ routerMarkers: any[];
5772
+ markerToIdentityId: Map<any, string>;
5773
+ markerToRouterId: Map<any, string>;
5774
+ currentDraggableMarker: any;
5775
+ selectedMarker: any;
5776
+ circuitMarkerIds: Set<string>;
5777
+ markerClicked: EventEmitter<{
5778
+ item: any;
5779
+ type: string;
5780
+ location: {
5781
+ lat: number;
5782
+ lng: number;
5783
+ };
5784
+ }>;
5785
+ geolocationRemoved: EventEmitter<{
5786
+ item: any;
5787
+ type: string;
5788
+ marker: any;
5789
+ }>;
5790
+ geolocationUpdated: EventEmitter<{
5791
+ item: any;
5792
+ lat: number;
5793
+ lng: number;
5794
+ type: string;
5795
+ }>;
5796
+ private contextMenuCleanup;
5797
+ private dialogRef;
5798
+ constructor(geolocationService: GeolocationService, growlerService: GrowlerService, dialogForm: MatDialog);
5799
+ /**
5800
+ * Creates a Leaflet marker icon with dynamic styling
5801
+ * @param type - 'identity' or 'routers'
5802
+ * @param isSelected - Whether the marker is selected
5803
+ * @param scale - Scale factor for the icon (default 0.85)
5804
+ * @returns Leaflet icon object
5805
+ */
5806
+ createMarkerIcon(type: string, isSelected: boolean, scale?: number): any;
5807
+ /**
5808
+ * Adds markers to the map for a collection of entities
5809
+ * @param data - Array of entities (identities or routers)
5810
+ * @param type - 'identity' or 'routers'
5811
+ * @param clusterGroup - Leaflet cluster group to add markers to
5812
+ * @param map - Leaflet map instance (fallback if no cluster group)
5813
+ * @param routerLocations - Map to store router locations
5814
+ * @param identityLocations - Map to store identity locations
5815
+ * @returns Array of created markers
5816
+ */
5817
+ addMarkers(data: any[], type: string, clusterGroup: any, map: any, routerLocations: Map<string, any>, identityLocations: Map<string, any>): any[];
5818
+ /**
5819
+ * Finds a marker by item ID and type
5820
+ * @param itemId - Entity ID
5821
+ * @param itemType - 'identity' or 'routers'
5822
+ * @param identityClusterGroup - Identity cluster group
5823
+ * @param routerClusterGroup - Router cluster group
5824
+ * @returns Marker object or null
5825
+ */
5826
+ findMarkerByItemId(itemId: string, itemType: string, identityClusterGroup: any, routerClusterGroup: any): any;
5827
+ /**
5828
+ * Updates marker icon based on selection state and circuit membership
5829
+ * @param marker - Marker to update
5830
+ * @param isSelected - Whether the marker is selected
5831
+ */
5832
+ updateMarkerIcon(marker: any, isSelected: boolean): void;
5833
+ /**
5834
+ * Applies opacity to all markers except the selected one
5835
+ * @param selectedMarker - The marker to keep at full opacity
5836
+ * @param opacity - Opacity value for non-selected markers (default 0.7)
5837
+ * @param identityClusterGroup - Identity cluster group
5838
+ * @param routerClusterGroup - Router cluster group
5839
+ */
5840
+ applyMarkerOpacity(selectedMarker: any, opacity: number, identityClusterGroup: any, routerClusterGroup: any): void;
5841
+ /**
5842
+ * Resets opacity for all markers to full visibility
5843
+ * @param identityClusterGroup - Identity cluster group
5844
+ * @param routerClusterGroup - Router cluster group
5845
+ */
5846
+ resetMarkerOpacity(identityClusterGroup: any, routerClusterGroup: any): void;
5847
+ /**
5848
+ * Scales markers that are part of active circuits
5849
+ * @param scaleUp - Whether to scale up (true) or down (false)
5850
+ * @param identityClusterGroup - Identity cluster group
5851
+ * @param routerClusterGroup - Router cluster group
5852
+ */
5853
+ scaleCircuitMarkers(scaleUp: boolean, identityClusterGroup: any, routerClusterGroup: any): void;
5854
+ /**
5855
+ * Clears selected marker state and resets opacity
5856
+ * @param identityClusterGroup - Identity cluster group
5857
+ * @param routerClusterGroup - Router cluster group
5858
+ */
5859
+ clearSelectedMarker(identityClusterGroup: any, routerClusterGroup: any): void;
5860
+ /**
5861
+ * Sets a marker as selected and applies visual effects
5862
+ * @param marker - Marker to select
5863
+ * @param identityClusterGroup - Identity cluster group
5864
+ * @param routerClusterGroup - Router cluster group
5865
+ */
5866
+ setSelectedMarker(marker: any, identityClusterGroup: any, routerClusterGroup: any): void;
5867
+ /**
5868
+ * Removes a marker from the map and collections
5869
+ * @param marker - Marker to remove
5870
+ * @param type - 'identity' or 'routers'
5871
+ * @param identityClusterGroup - Identity cluster group
5872
+ * @param routerClusterGroup - Router cluster group
5873
+ * @param routerLocations - Router locations map
5874
+ * @param identityLocations - Identity locations map
5875
+ * @param itemId - Entity ID
5876
+ */
5877
+ removeMarker(marker: any, type: string, identityClusterGroup: any, routerClusterGroup: any, routerLocations: Map<string, any>, identityLocations: Map<string, any>, itemId: string): void;
5878
+ /**
5879
+ * Shows context menu for a marker with drag/drop and remove options
5880
+ * @param event - Leaflet event object
5881
+ * @param marker - Marker to show menu for
5882
+ * @param item - Entity data
5883
+ * @param type - 'identity' or 'routers'
5884
+ * @param routerLocations - Router locations map
5885
+ * @param identityLocations - Identity locations map
5886
+ */
5887
+ private showMarkerContextMenu;
5888
+ /**
5889
+ * Disables dragging on the current draggable marker
5890
+ */
5891
+ disableCurrentDraggableMarker(): void;
5892
+ /**
5893
+ * Clears all markers and resets state
5894
+ */
5895
+ clearAllMarkers(): void;
5896
+ static ɵfac: i0.ɵɵFactoryDeclaration<MapMarkerService, never>;
5897
+ static ɵprov: i0.ɵɵInjectableDeclaration<MapMarkerService>;
5898
+ }
5899
+
5900
+ /**
5901
+ * Service responsible for rendering visual elements on the map
5902
+ * Handles circuit lines, router links, and their styling
5903
+ */
5904
+ declare class MapRenderingService {
5905
+ private circuitCalculationService;
5906
+ private circuitPathBuilderService;
5907
+ circuitLines: any[];
5908
+ activeCircuitLines: any[];
5909
+ linkClicked: EventEmitter<any>;
5910
+ circuitSegmentClicked: EventEmitter<any>;
5911
+ constructor(circuitCalculationService: CircuitCalculationService, circuitPathBuilderService: CircuitPathBuilderService);
5912
+ /**
5913
+ * Draws router links on the map
5914
+ * @param map - Leaflet map instance
5915
+ * @param links - Array of router links
5916
+ * @param routerLocations - Map of router locations
5917
+ * @param edgeRouters - Array of edge routers (for visibility filtering)
5918
+ * @param linksVisible - Whether links should be visible
5919
+ */
5920
+ drawLinks(map: any, links: any[], routerLocations: Map<string, any>, edgeRouters: any[], linksVisible: boolean): void;
5921
+ /**
5922
+ * Draws router links filtered by specific router IDs
5923
+ * @param map - Leaflet map instance
5924
+ * @param links - Array of all router links
5925
+ * @param filteredRouterIds - Set of router IDs to filter by
5926
+ * @param routerLocations - Map of router locations
5927
+ * @param linksVisible - Whether links should be visible
5928
+ */
5929
+ drawFilteredLinks(map: any, links: any[], filteredRouterIds: Set<string>, routerLocations: Map<string, any>, linksVisible: boolean): void;
5930
+ /**
5931
+ * Draws active circuits on the map with complex styling and interactions
5932
+ * @param map - Leaflet map instance
5933
+ * @param circuits - Array of circuits to draw
5934
+ * @param identities - Array of identities
5935
+ * @param identityLocations - Map of identity locations
5936
+ * @param routerLocations - Map of router locations
5937
+ * @param terminators - Array of terminators
5938
+ * @param edgeRouters - Array of edge routers
5939
+ * @param services - Array of services
5940
+ * @param selectedServiceAttributes - Array of selected service attribute filters
5941
+ * @param selectedServiceNamedAttributes - Array of selected service named attribute filters
5942
+ * @param selectedCircuitSegment - Currently selected circuit segment
5943
+ * @param activeCircuitsVisible - Whether active circuits should be visible
5944
+ * @param isCircuitSelectionActive - Whether a specific circuit is selected
5945
+ * @param scaleCircuitMarkersCallback - Callback to scale circuit markers
5946
+ * @returns Set of circuit marker IDs
5947
+ */
5948
+ drawActiveCircuits(map: any, circuits: any[], identities: any[], identityLocations: Map<string, any>, routerLocations: Map<string, any>, terminators: any[], edgeRouters: any[], services: any[], selectedServiceAttributes: any[], selectedServiceNamedAttributes: any[], selectedCircuitSegment: any, activeCircuitsVisible: boolean, isCircuitSelectionActive: boolean, scaleCircuitMarkersCallback: (scaleUp: boolean) => void): Set<string>;
5949
+ /**
5950
+ * Updates visibility of router links
5951
+ * @param map - Leaflet map instance
5952
+ * @param linksVisible - Whether links should be visible
5953
+ */
5954
+ updateLinksVisibility(map: any, linksVisible: boolean): void;
5955
+ /**
5956
+ * Updates visibility of active circuits
5957
+ * @param map - Leaflet map instance
5958
+ * @param activeCircuitsVisible - Whether active circuits should be visible
5959
+ */
5960
+ updateActiveCircuitsVisibility(map: any, activeCircuitsVisible: boolean): void;
5961
+ /**
5962
+ * Clears all circuit and link lines from the map
5963
+ * @param map - Leaflet map instance
5964
+ */
5965
+ clearAllLines(map: any): void;
5966
+ /**
5967
+ * Clears only active circuit lines from the map
5968
+ * @param map - Leaflet map instance
5969
+ */
5970
+ clearActiveCircuitLines(map: any): void;
5971
+ /**
5972
+ * Clears only router link lines from the map
5973
+ * @param map - Leaflet map instance
5974
+ */
5975
+ clearCircuitLines(map: any): void;
5976
+ static ɵfac: i0.ɵɵFactoryDeclaration<MapRenderingService, never>;
5977
+ static ɵprov: i0.ɵɵInjectableDeclaration<MapRenderingService>;
5978
+ }
5979
+
5980
+ /**
5981
+ * Centralized state management service for the geolocate map component
5982
+ * Manages visibility toggles, filter state, side panel state, and entity locations
5983
+ */
5984
+ declare class MapStateService {
5985
+ private _clusteringEnabled$;
5986
+ private _linksVisible$;
5987
+ private _activeCircuitsVisible$;
5988
+ private _routersVisible$;
5989
+ private _identitiesVisible$;
5990
+ private _routerLocations;
5991
+ private _identityLocations;
5992
+ private _routerTypes;
5993
+ private _sidePanelOpen$;
5994
+ private _sidePanelType$;
5995
+ private _sidePanelData$;
5996
+ private _sidePanelCircuits$;
5997
+ private _sidePanelWidth$;
5998
+ private _selectedCircuit$;
5999
+ private _selectedCircuitRouters$;
6000
+ private _selectedCircuitSegment$;
6001
+ private _selectedUnlocatedCircuit$;
6002
+ private _selectedUnlocatedCircuitRouters$;
6003
+ private _selectedServiceAttributes$;
6004
+ private _selectedServiceNamedAttributes$;
6005
+ private _selectedIdentityAttributes$;
6006
+ private _selectedIdentityNamedAttributes$;
6007
+ private _selectedRouterAttributes$;
6008
+ private _selectedConnectionStatus$;
6009
+ private _filtersApplied$;
6010
+ private _showServiceDropdown$;
6011
+ private _showIdentityDropdown$;
6012
+ private _showConnectionStatusFilterSelector$;
6013
+ clusteringEnabled$: Observable<boolean>;
6014
+ linksVisible$: Observable<boolean>;
6015
+ activeCircuitsVisible$: Observable<boolean>;
6016
+ routersVisible$: Observable<boolean>;
6017
+ identitiesVisible$: Observable<boolean>;
6018
+ sidePanelOpen$: Observable<boolean>;
6019
+ sidePanelType$: Observable<"link" | "marker" | "circuit" | "unlocated" | "entityList" | "servicesWithCircuits">;
6020
+ sidePanelData$: Observable<any>;
6021
+ sidePanelCircuits$: Observable<any[]>;
6022
+ sidePanelWidth$: Observable<number>;
6023
+ selectedCircuit$: Observable<any>;
6024
+ selectedCircuitRouters$: Observable<any[]>;
6025
+ selectedCircuitSegment$: Observable<any>;
6026
+ selectedUnlocatedCircuit$: Observable<any>;
6027
+ selectedUnlocatedCircuitRouters$: Observable<any[]>;
6028
+ selectedServiceAttributes$: Observable<any[]>;
6029
+ selectedServiceNamedAttributes$: Observable<any[]>;
6030
+ selectedIdentityAttributes$: Observable<any[]>;
6031
+ selectedIdentityNamedAttributes$: Observable<any[]>;
6032
+ selectedRouterAttributes$: Observable<any[]>;
6033
+ selectedConnectionStatus$: Observable<string>;
6034
+ filtersApplied$: Observable<boolean>;
6035
+ showServiceDropdown$: Observable<boolean>;
6036
+ showIdentityDropdown$: Observable<boolean>;
6037
+ showConnectionStatusFilterSelector$: Observable<boolean>;
6038
+ constructor();
6039
+ get clusteringEnabled(): boolean;
6040
+ set clusteringEnabled(value: boolean);
6041
+ toggleClustering(): void;
6042
+ get linksVisible(): boolean;
6043
+ set linksVisible(value: boolean);
6044
+ toggleLinks(): void;
6045
+ get activeCircuitsVisible(): boolean;
6046
+ set activeCircuitsVisible(value: boolean);
6047
+ toggleActiveCircuits(): void;
6048
+ get routersVisible(): boolean;
6049
+ set routersVisible(value: boolean);
6050
+ toggleRouters(): void;
6051
+ get identitiesVisible(): boolean;
6052
+ set identitiesVisible(value: boolean);
6053
+ toggleIdentities(): void;
6054
+ get routerLocations(): Map<string, {
6055
+ lat: number;
6056
+ lng: number;
6057
+ name: string;
6058
+ }>;
6059
+ setRouterLocation(id: string, location: {
6060
+ lat: number;
6061
+ lng: number;
6062
+ name: string;
6063
+ }): void;
6064
+ removeRouterLocation(id: string): void;
6065
+ clearRouterLocations(): void;
6066
+ get identityLocations(): Map<string, {
6067
+ lat: number;
6068
+ lng: number;
6069
+ name: string;
6070
+ }>;
6071
+ setIdentityLocation(id: string, location: {
6072
+ lat: number;
6073
+ lng: number;
6074
+ name: string;
6075
+ }): void;
6076
+ removeIdentityLocation(id: string): void;
6077
+ clearIdentityLocations(): void;
6078
+ get routerTypes(): Map<string, string>;
6079
+ setRouterTypes(routerTypes: Map<string, string>): void;
6080
+ getRouterType(id: string): string | undefined;
6081
+ get sidePanelOpen(): boolean;
6082
+ set sidePanelOpen(value: boolean);
6083
+ get sidePanelType(): 'marker' | 'link' | 'circuit' | 'unlocated' | 'entityList' | 'servicesWithCircuits' | null;
6084
+ set sidePanelType(value: 'marker' | 'link' | 'circuit' | 'unlocated' | 'entityList' | 'servicesWithCircuits' | null);
6085
+ get sidePanelData(): any;
6086
+ set sidePanelData(value: any);
6087
+ get sidePanelCircuits(): any[];
6088
+ set sidePanelCircuits(value: any[]);
6089
+ get sidePanelWidth(): number;
6090
+ set sidePanelWidth(value: number);
6091
+ openSidePanel(type: 'marker' | 'link' | 'circuit' | 'unlocated' | 'entityList' | 'servicesWithCircuits', data: any): void;
6092
+ closeSidePanel(): void;
6093
+ get selectedCircuit(): any;
6094
+ set selectedCircuit(value: any);
6095
+ get selectedCircuitRouters(): any[];
6096
+ set selectedCircuitRouters(value: any[]);
6097
+ get selectedCircuitSegment(): any;
6098
+ set selectedCircuitSegment(value: any);
6099
+ get selectedUnlocatedCircuit(): any;
6100
+ set selectedUnlocatedCircuit(value: any);
6101
+ get selectedUnlocatedCircuitRouters(): any[];
6102
+ set selectedUnlocatedCircuitRouters(value: any[]);
6103
+ clearSelectedCircuit(): void;
6104
+ clearSelectedUnlocatedCircuit(): void;
6105
+ isCircuitSelectionActive(): boolean;
6106
+ get selectedServiceAttributes(): any[];
6107
+ set selectedServiceAttributes(value: any[]);
6108
+ get selectedServiceNamedAttributes(): any[];
6109
+ set selectedServiceNamedAttributes(value: any[]);
6110
+ get selectedIdentityAttributes(): any[];
6111
+ set selectedIdentityAttributes(value: any[]);
6112
+ get selectedIdentityNamedAttributes(): any[];
6113
+ set selectedIdentityNamedAttributes(value: any[]);
6114
+ get selectedRouterAttributes(): any[];
6115
+ set selectedRouterAttributes(value: any[]);
6116
+ get selectedConnectionStatus(): string;
6117
+ set selectedConnectionStatus(value: string);
6118
+ get filtersApplied(): boolean;
6119
+ set filtersApplied(value: boolean);
6120
+ clearAllFilters(): void;
6121
+ hasActiveFilters(): boolean;
6122
+ get showServiceDropdown(): boolean;
6123
+ set showServiceDropdown(value: boolean);
6124
+ get showIdentityDropdown(): boolean;
6125
+ set showIdentityDropdown(value: boolean);
6126
+ get showConnectionStatusFilterSelector(): boolean;
6127
+ set showConnectionStatusFilterSelector(value: boolean);
6128
+ closeAllDropdowns(): void;
6129
+ /**
6130
+ * Resets all state to initial values
6131
+ */
6132
+ resetState(): void;
6133
+ static ɵfac: i0.ɵɵFactoryDeclaration<MapStateService, never>;
6134
+ static ɵprov: i0.ɵɵInjectableDeclaration<MapStateService>;
6135
+ }
6136
+
5429
6137
  declare class GeolocateComponent implements OnInit, OnDestroy {
5430
- private zitiService;
6138
+ private zitiDataService;
6139
+ private settingsService;
6140
+ private router;
6141
+ private route;
5431
6142
  private growlerService;
5432
- isLoading: boolean;
6143
+ private dialogForm;
6144
+ private geolocationService;
6145
+ private mapDataService;
6146
+ private circuitCalculationService;
6147
+ private circuitPathBuilderService;
6148
+ private circuitFilterService;
6149
+ mapMarkerService: MapMarkerService;
6150
+ mapRenderingService: MapRenderingService;
6151
+ mapStateService: MapStateService;
5433
6152
  map: any;
6153
+ identityClusterGroup: any;
6154
+ routerClusterGroup: any;
5434
6155
  pageTitle: string;
5435
6156
  totalIdentities: number;
5436
6157
  totalServices: number;
@@ -5439,76 +6160,1321 @@ declare class GeolocateComponent implements OnInit, OnDestroy {
5439
6160
  totalServicePolicies: number;
5440
6161
  totalSessions: number;
5441
6162
  showVisualizer: boolean;
5442
- markers: any[];
6163
+ DEBUG_TEST_LINK_LATENCY: boolean;
6164
+ unlocatedIdentities: number;
6165
+ unlocatedRouters: number;
6166
+ servicesWithActiveCircuits: number;
6167
+ geolocatedIdentities: number;
6168
+ geolocatedRouters: number;
6169
+ servicesWithCircuitsSearch: string;
6170
+ unlocatedIdentitiesSearch: string;
6171
+ filteredUnlocatedIdentities: any[];
6172
+ unlocatedRoutersSearch: string;
6173
+ filteredUnlocatedRouters: any[];
6174
+ entityListSearch: string;
6175
+ entityListPage: number;
6176
+ entityListPageSize: number;
6177
+ entityListTotal: number;
6178
+ filteredEntityList: any[];
6179
+ fullEntityList: any[];
6180
+ entityListType: string;
6181
+ entityListSortColumn: string;
6182
+ entityListSortDirection: 'asc' | 'desc';
6183
+ entityListLocationFilter: 'all' | 'located' | 'unlocated';
6184
+ private draggedEntity;
6185
+ private draggedEntityType;
6186
+ circuits: any[];
6187
+ terminators: any[];
6188
+ identities: any[];
6189
+ edgeRouters: any[];
6190
+ services: any[];
6191
+ links: any[];
6192
+ entityListPreview: any;
6193
+ entityListPreviewType: 'identity' | 'routers' | 'services' | null;
6194
+ selectedRouterInPath: string | null;
6195
+ circuitPreviewEntity: any;
6196
+ circuitPreviewEntityType: string;
6197
+ unlocatedPreviewEntity: any;
6198
+ unlocatedPreviewType: string;
6199
+ unlocatedPreviewHasUnsavedLocation: boolean;
6200
+ unlocatedPreviewCircuits: any[];
6201
+ isResizing: boolean;
6202
+ minPanelWidth: number;
6203
+ maxPanelWidth: number;
6204
+ startX: number;
6205
+ startWidth: number;
6206
+ selectedServiceFilters: any[];
6207
+ selectedIdentityFilters: any[];
6208
+ serviceRoleAttributes: any[];
6209
+ serviceNamedAttributes: any[];
6210
+ servicesNameIdMap: {
6211
+ [key: string]: string;
6212
+ };
6213
+ servicesIdNameMap: {
6214
+ [key: string]: string;
6215
+ };
6216
+ identityRoleAttributes: any[];
6217
+ identityNamedAttributes: any[];
6218
+ identitiesNameIdMap: {
6219
+ [key: string]: string;
6220
+ };
6221
+ identitiesIdNameMap: {
6222
+ [key: string]: string;
6223
+ };
6224
+ routerRoleAttributes: any[];
5443
6225
  private subscription;
6226
+ private documentClickHandler;
5444
6227
  edgeRoutersInit: boolean;
5445
6228
  identitiesInit: boolean;
5446
- constructor(zitiService: ZitiDataService, growlerService: GrowlerService);
6229
+ isLoading: boolean;
6230
+ Math: Math;
6231
+ dialogRef: any;
6232
+ constructor(zitiDataService: ZitiDataService, settingsService: SettingsService, router: Router, route: ActivatedRoute, growlerService: GrowlerService, dialogForm: MatDialog, geolocationService: GeolocationService, mapDataService: MapDataService, circuitCalculationService: CircuitCalculationService, circuitPathBuilderService: CircuitPathBuilderService, circuitFilterService: CircuitFilterService, mapMarkerService: MapMarkerService, mapRenderingService: MapRenderingService, mapStateService: MapStateService);
6233
+ get selectedRouterAttributes(): any[];
6234
+ set selectedRouterAttributes(value: any[]);
6235
+ get selectedIdentityAttributes(): any[];
6236
+ set selectedIdentityAttributes(value: any[]);
6237
+ get selectedIdentityNamedAttributes(): any[];
6238
+ set selectedIdentityNamedAttributes(value: any[]);
6239
+ get selectedServiceAttributes(): any[];
6240
+ set selectedServiceAttributes(value: any[]);
6241
+ get selectedServiceNamedAttributes(): any[];
6242
+ set selectedServiceNamedAttributes(value: any[]);
6243
+ get selectedConnectionStatus(): string;
6244
+ set selectedConnectionStatus(value: string);
6245
+ get filtersApplied(): boolean;
6246
+ set filtersApplied(value: boolean);
6247
+ get showConnectionStatusFilterSelector(): boolean;
6248
+ set showConnectionStatusFilterSelector(value: boolean);
6249
+ get sidePanelOpen(): boolean;
6250
+ set sidePanelOpen(value: boolean);
6251
+ get sidePanelType(): any;
6252
+ set sidePanelType(value: any);
6253
+ get sidePanelData(): any;
6254
+ set sidePanelData(value: any);
6255
+ get sidePanelCircuits(): any[];
6256
+ set sidePanelCircuits(value: any[]);
6257
+ get routersVisible(): boolean;
6258
+ set routersVisible(value: boolean);
6259
+ get identitiesVisible(): boolean;
6260
+ set identitiesVisible(value: boolean);
6261
+ get linksVisible(): boolean;
6262
+ set linksVisible(value: boolean);
6263
+ get activeCircuitsVisible(): boolean;
6264
+ set activeCircuitsVisible(value: boolean);
6265
+ get clusteringEnabled(): boolean;
6266
+ set clusteringEnabled(value: boolean);
6267
+ get selectedCircuit(): any;
6268
+ set selectedCircuit(value: any);
6269
+ get selectedCircuitRouters(): any[];
6270
+ set selectedCircuitRouters(value: any[]);
6271
+ get selectedCircuitSegment(): any;
6272
+ set selectedCircuitSegment(value: any);
6273
+ get selectedUnlocatedCircuit(): any;
6274
+ set selectedUnlocatedCircuit(value: any);
6275
+ get selectedUnlocatedCircuitRouters(): any[];
6276
+ set selectedUnlocatedCircuitRouters(value: any[]);
6277
+ routerFilterSelector: any;
6278
+ identityFilterSelector: any;
6279
+ serviceFilterSelector: any;
6280
+ connectionStatusFilterSelector: ElementRef;
5447
6281
  ngOnInit(): void;
5448
- loadEntityCounts(): void;
5449
- loadMapData(): void;
5450
- addMarkers(data: any[], type: string): void;
6282
+ getRoleAttributest(): Promise<[void, void, void]>;
6283
+ getRouterRoleAttributes(): Promise<any>;
6284
+ getIdentityRoleAttributes(): Promise<any>;
6285
+ getServiceRoleAttributes(): Promise<any>;
6286
+ loadEntityCounts(): Promise<void>;
6287
+ loadMapData(): Promise<void>;
6288
+ loadRouters(): Promise<{
6289
+ data: any[];
6290
+ }>;
6291
+ loadIdentities(): Promise<void>;
6292
+ loadServices(): Promise<void>;
6293
+ addMarkers(data: any[], type: string, skipAutoFit?: boolean): void;
6294
+ loadLinks(): void;
6295
+ loadCircuits(): void;
6296
+ loadTerminators(): void;
6297
+ drawLinks(links: any[]): void;
6298
+ toggleClustering(): void;
6299
+ checkLinks(): void;
6300
+ toggleLinks(): void;
5451
6301
  checkVisualizerFeature(): void;
6302
+ disableMapScroll(): void;
6303
+ enableMapScroll(): void;
6304
+ getFilteredIdentityIds(): Set<string>;
6305
+ getFilteredRouterIds(): Set<string>;
6306
+ applyFilters(): void;
6307
+ showAllMarkers(): void;
6308
+ drawFilteredLinks(filteredRouterIds: Set<string>): void;
6309
+ drawActiveCircuits(circuits: any[], isSelectedCircuit?: boolean): void;
6310
+ scaleCircuitMarkers(scaleUp: boolean): void;
6311
+ applyMarkerOpacity(selectedMarker: any, opacity?: number): void;
6312
+ resetMarkerOpacity(): void;
6313
+ toggleActiveCircuits(): void;
6314
+ toggleRouters(): void;
6315
+ toggleIdentities(): void;
6316
+ checkRouters(): void;
6317
+ checkIdentities(): void;
6318
+ getMarkerIdentityId(marker: any): string | null;
6319
+ getMarkerRouterId(marker: any): string | null;
6320
+ showRouterFilterSelector: boolean;
6321
+ showRouterFilter(event?: any): void;
6322
+ closeRouterFilter(event?: any): void;
6323
+ showIdentityFilterSelector: boolean;
6324
+ showIdentityFilter(event?: any): void;
6325
+ closeIdentityFilter(event?: any): void;
6326
+ showServiceFilterSelector: boolean;
6327
+ showServiceFilter(event?: any): void;
6328
+ closeServiceFilter(event?: any): void;
6329
+ showConnectionStatusFilter(event?: any): void;
6330
+ closeConnectionStatusFilter(event?: any): void;
6331
+ onConnectionStatusChange(newStatus?: string): void;
6332
+ clearFilters(event: any): void;
6333
+ onRouterRoleAttributesChange(attributes: any[]): void;
6334
+ onIdentityRoleAttributesChange(attributes: any[]): void;
6335
+ onIdentityNamedAttributesChange(attributes: any[]): void;
6336
+ getIdentityNamedAttributes(filter?: string): void;
6337
+ onServiceRoleAttributesChange(attributes: any[]): void;
6338
+ onServiceNamedAttributesChange(attributes: any[]): void;
6339
+ getServiceNamedAttributes(filter?: string): void;
6340
+ checkAppliedFilters(): void;
6341
+ reloadMapDataWithFilters(): void;
6342
+ filterCircuitsAndRouters(): void;
6343
+ openSidePanel(type: 'marker' | 'link' | 'circuit' | 'unlocated' | 'entityList' | 'servicesWithCircuits', data: any): void;
6344
+ showUnlocatedEntities(): void;
6345
+ showUnlocatedIdentities(): void;
6346
+ showUnlocatedRouters(): void;
6347
+ showServicesWithActiveCircuits(): void;
6348
+ onServicesWithCircuitsSearchChange(search: string): void;
6349
+ onUnlocatedIdentitiesSearchChange(search: string): void;
6350
+ onUnlocatedRoutersSearchChange(search: string): void;
6351
+ showLocatedIdentities(): void;
6352
+ showLocatedRouters(): void;
6353
+ showAllServices(): void;
6354
+ initializeEntityList(entities: any[], type: string): void;
6355
+ applyEntityListFilters(): void;
6356
+ onEntityListSearchChange(search: string): void;
6357
+ onEntityListPageChange(page: number): void;
6358
+ onEntityListSortChange(sort: {
6359
+ column: string;
6360
+ direction: 'asc' | 'desc';
6361
+ }): void;
6362
+ onEntityListLocationFilterChange(filter: 'all' | 'located' | 'unlocated'): void;
6363
+ get entityListTotalPages(): number;
6364
+ get entityListPageNumbers(): number[];
6365
+ openEntityPreview(entity: any, type: string): void;
6366
+ onDragStart(event: DragEvent, entity: any, type: string): void;
6367
+ onMapDragOver(event: DragEvent): void;
6368
+ onMapDrop(event: DragEvent): void;
6369
+ onMapDragLeave(event: DragEvent): void;
6370
+ closeSidePanel(): void;
6371
+ navigateToDetails(type: string, id: string): void;
6372
+ navigateToCircuitEntity(id: string, type: string): void;
6373
+ openRouterPanel(router: any): void;
6374
+ handleEntityListClick(entity: any): void;
6375
+ showEntityListPreview(entity: any, type: 'identity' | 'routers' | 'services'): void;
6376
+ closeEntityListPreview(): void;
6377
+ openIdentityPanel(identity: any): void;
6378
+ openServicePanel(service: any): void;
6379
+ openEntityPanel(entityId: string, entityType: string): void;
6380
+ parseConnectionType(type: string): string;
6381
+ parseEndpoint(endpoint: string): {
6382
+ protocol: string;
6383
+ address: string;
6384
+ port: string;
6385
+ };
6386
+ updateGeolocationLocal(item: any, lat: number, lng: number, type: string): void;
6387
+ handleGeolocationRemoval(item: any, type: string, marker: any): void;
6388
+ updateEntityListAfterLocationChange(): void;
6389
+ navigateToRoleAttribute(role: string): void;
6390
+ getEntityOnlineStatus(item: any): boolean;
6391
+ hasUnsavedLocationChanges(item: any): boolean;
6392
+ saveLocationChanges(item: any, type: string): Promise<void>;
6393
+ saveUnlocatedPreviewEntity(): Promise<void>;
6394
+ getEntityCircuits(entityId: string, entityType: string): any[];
6395
+ clearActiveCircuits(): void;
6396
+ isCircuitSelectionActive(): boolean;
6397
+ selectCircuit(circuit: any, isUnlocatedPanel?: boolean): void;
6398
+ getCircuitRouters(circuit: any): any[];
6399
+ findMarkerByItemId(itemId: string, itemType: string): any;
6400
+ updateMarkerIcon(marker: any, isSelected: boolean): void;
6401
+ buildCircuitHops(data: any): any[];
6402
+ buildCircuitRouters(pathNodes: any[]): any[];
6403
+ selectCircuitHop(hop: any, index: number): void;
6404
+ selectCircuitRouter(routerId: string, routerType: string): void;
6405
+ closeCircuitPreview(): void;
6406
+ openCircuitPreview(circuit: any, event?: Event): void;
6407
+ private handleDocumentClick;
6408
+ onResizerMouseDown(event: MouseEvent): void;
6409
+ private onMouseMove;
6410
+ onMouseUp(): void;
5452
6411
  ngOnDestroy(): void;
5453
6412
  static ɵfac: i0.ɵɵFactoryDeclaration<GeolocateComponent, never>;
5454
6413
  static ɵcmp: i0.ɵɵComponentDeclaration<GeolocateComponent, "lib-geolocate", never, {}, {}, never, never, false, never>;
5455
6414
  }
5456
6415
 
5457
- declare class AttributesComponent implements OnInit, OnDestroy {
5458
- private zitiDataService;
5459
- private route;
5460
- attributes: any[];
5461
- identities: any[];
5462
- services: any[];
5463
- edgeRouters: any[];
5464
- postureChecks: any[];
5465
- identityAttributes: any[];
5466
- edgeRouterAttributes: any[];
5467
- serviceAttributes: any[];
5468
- selectedAttribute: any;
5469
- private subscription;
5470
- constructor(zitiDataService: ZitiDataService, route: ActivatedRoute);
5471
- ngOnInit(): void;
5472
- loadData(): void;
5473
- attributesLoaded(): void;
5474
- calculateAttributes(): void;
5475
- countOccurrences(items: any[], attribute: string): number;
5476
- getAssociatedItems(items: any[], attribute: string): string;
5477
- editAttribute(attributeName: string): void;
5478
- closeModal(): void;
5479
- ngOnDestroy(): void;
5480
- static ɵfac: i0.ɵɵFactoryDeclaration<AttributesComponent, never>;
5481
- static ɵcmp: i0.ɵɵComponentDeclaration<AttributesComponent, "lib-attributes", never, {}, {}, never, never, false, never>;
5482
- }
5483
-
5484
- declare class SideNavigatorComponent implements OnInit, OnDestroy {
5485
- private router;
5486
- currentNav: any;
5487
- version: string;
5488
- currentNetwork: any;
5489
- navExpanded: boolean;
5490
- navHidden: boolean;
5491
- hideMenuNavBar: boolean;
5492
- betaFeaturesEnabled: boolean;
5493
- private routerSubscription?;
5494
- private selectedNavItem;
5495
- constructor(router: Router, currentNav: any);
5496
- ngOnInit(): void;
5497
- ngOnDestroy(): void;
5498
- private updateSelectedNavItem;
5499
- private getRouteMatchScore;
5500
- private calculateMatchScore;
5501
- navItemSelected(navItem: any): boolean;
5502
- isNavItemDisabled(navItem: any): void;
5503
- doNavAction(event: any, navItem: any): void;
5504
- showExpandCollapseIcon: boolean;
5505
- showExpandCollapseIconChange: EventEmitter<boolean>;
5506
- showExpandCollapse(event: any): void;
5507
- hideExpandCollapse(event: any): void;
5508
- toggleNavigationExpanded(event: any): void;
5509
- get expandCollapseIconVisible(): boolean;
5510
- static ɵfac: i0.ɵɵFactoryDeclaration<SideNavigatorComponent, never>;
5511
- static ɵcmp: i0.ɵɵComponentDeclaration<SideNavigatorComponent, "lib-side-navigator", never, { "version": { "alias": "version"; "required": false; }; }, {}, never, never, false, never>;
6416
+ declare class MapLegendComponent {
6417
+ routersVisible: boolean;
6418
+ identitiesVisible: boolean;
6419
+ linksVisible: boolean;
6420
+ activeCircuitsVisible: boolean;
6421
+ clusteringEnabled: boolean;
6422
+ isCircuitSelectionActive: boolean;
6423
+ routersToggled: EventEmitter<void>;
6424
+ identitiesToggled: EventEmitter<void>;
6425
+ linksToggled: EventEmitter<void>;
6426
+ activeCircuitsToggled: EventEmitter<void>;
6427
+ clusteringToggled: EventEmitter<void>;
6428
+ static ɵfac: i0.ɵɵFactoryDeclaration<MapLegendComponent, never>;
6429
+ static ɵcmp: i0.ɵɵComponentDeclaration<MapLegendComponent, "lib-map-legend", never, { "routersVisible": { "alias": "routersVisible"; "required": false; }; "identitiesVisible": { "alias": "identitiesVisible"; "required": false; }; "linksVisible": { "alias": "linksVisible"; "required": false; }; "activeCircuitsVisible": { "alias": "activeCircuitsVisible"; "required": false; }; "clusteringEnabled": { "alias": "clusteringEnabled"; "required": false; }; "isCircuitSelectionActive": { "alias": "isCircuitSelectionActive"; "required": false; }; }, { "routersToggled": "routersToggled"; "identitiesToggled": "identitiesToggled"; "linksToggled": "linksToggled"; "activeCircuitsToggled": "activeCircuitsToggled"; "clusteringToggled": "clusteringToggled"; }, never, never, false, never>;
6430
+ }
6431
+
6432
+ declare class EntityCountLegendComponent {
6433
+ geolocatedIdentities: number;
6434
+ unlocatedIdentities: number;
6435
+ geolocatedRouters: number;
6436
+ unlocatedRouters: number;
6437
+ totalServices: number;
6438
+ servicesWithActiveCircuits: number;
6439
+ totalActiveCircuits: number;
6440
+ showLocatedIdentitiesClicked: EventEmitter<void>;
6441
+ showUnlocatedIdentitiesClicked: EventEmitter<void>;
6442
+ showLocatedRoutersClicked: EventEmitter<void>;
6443
+ showUnlocatedRoutersClicked: EventEmitter<void>;
6444
+ showAllServicesClicked: EventEmitter<void>;
6445
+ showServicesWithActiveCircuitsClicked: EventEmitter<void>;
6446
+ get totalIdentities(): number;
6447
+ get totalRouters(): number;
6448
+ static ɵfac: i0.ɵɵFactoryDeclaration<EntityCountLegendComponent, never>;
6449
+ static ɵcmp: i0.ɵɵComponentDeclaration<EntityCountLegendComponent, "lib-entity-count-legend", never, { "geolocatedIdentities": { "alias": "geolocatedIdentities"; "required": false; }; "unlocatedIdentities": { "alias": "unlocatedIdentities"; "required": false; }; "geolocatedRouters": { "alias": "geolocatedRouters"; "required": false; }; "unlocatedRouters": { "alias": "unlocatedRouters"; "required": false; }; "totalServices": { "alias": "totalServices"; "required": false; }; "servicesWithActiveCircuits": { "alias": "servicesWithActiveCircuits"; "required": false; }; "totalActiveCircuits": { "alias": "totalActiveCircuits"; "required": false; }; }, { "showLocatedIdentitiesClicked": "showLocatedIdentitiesClicked"; "showUnlocatedIdentitiesClicked": "showUnlocatedIdentitiesClicked"; "showLocatedRoutersClicked": "showLocatedRoutersClicked"; "showUnlocatedRoutersClicked": "showUnlocatedRoutersClicked"; "showAllServicesClicked": "showAllServicesClicked"; "showServicesWithActiveCircuitsClicked": "showServicesWithActiveCircuitsClicked"; }, never, never, false, never>;
6450
+ }
6451
+
6452
+ declare class CircuitHopsTableComponent implements OnChanges {
6453
+ circuitHops: CircuitHop[];
6454
+ selectedSegmentIndex: number | null;
6455
+ hopSelected: EventEmitter<{
6456
+ hop: CircuitHop;
6457
+ index: number;
6458
+ }>;
6459
+ ngOnChanges(changes: SimpleChanges): void;
6460
+ static ɵfac: i0.ɵɵFactoryDeclaration<CircuitHopsTableComponent, never>;
6461
+ static ɵcmp: i0.ɵɵComponentDeclaration<CircuitHopsTableComponent, "lib-circuit-hops-table", never, { "circuitHops": { "alias": "circuitHops"; "required": false; }; "selectedSegmentIndex": { "alias": "selectedSegmentIndex"; "required": false; }; }, { "hopSelected": "hopSelected"; }, never, never, false, never>;
6462
+ }
6463
+
6464
+ interface CircuitRouter {
6465
+ id: string;
6466
+ name: string;
6467
+ type: string;
6468
+ [key: string]: any;
6469
+ }
6470
+ declare class RouterPathTableComponent implements OnChanges {
6471
+ private cdr;
6472
+ circuitRouters: CircuitRouter[];
6473
+ selectedRouterId: string | null;
6474
+ routerSelected: EventEmitter<{
6475
+ routerId: string;
6476
+ routerType: string;
6477
+ }>;
6478
+ entityPanelOpened: EventEmitter<{
6479
+ entityId: string;
6480
+ entityType: string;
6481
+ }>;
6482
+ displayRouters: CircuitRouter[];
6483
+ constructor(cdr: ChangeDetectorRef);
6484
+ ngOnChanges(changes: SimpleChanges): void;
6485
+ /**
6486
+ * Handle opening entity panel
6487
+ */
6488
+ onOpenEntityPanel(router: CircuitRouter, event: Event): void;
6489
+ static ɵfac: i0.ɵɵFactoryDeclaration<RouterPathTableComponent, never>;
6490
+ static ɵcmp: i0.ɵɵComponentDeclaration<RouterPathTableComponent, "lib-router-path-table", never, { "circuitRouters": { "alias": "circuitRouters"; "required": false; }; "selectedRouterId": { "alias": "selectedRouterId"; "required": false; }; }, { "routerSelected": "routerSelected"; "entityPanelOpened": "entityPanelOpened"; }, never, never, false, never>;
6491
+ }
6492
+
6493
+ declare class GeolocateFilterBarComponent implements OnChanges {
6494
+ private cdr;
6495
+ selectedRouterAttributes: any[];
6496
+ selectedIdentityAttributes: any[];
6497
+ selectedIdentityNamedAttributes: any[];
6498
+ selectedServiceAttributes: any[];
6499
+ selectedServiceNamedAttributes: any[];
6500
+ selectedConnectionStatus: string;
6501
+ routerRoleAttributes: any[];
6502
+ identityRoleAttributes: any[];
6503
+ identityNamedAttributes: any[];
6504
+ serviceRoleAttributes: any[];
6505
+ serviceNamedAttributes: any[];
6506
+ filtersApplied: boolean;
6507
+ showRouterFilterSelector: boolean;
6508
+ showIdentityFilterSelector: boolean;
6509
+ showServiceFilterSelector: boolean;
6510
+ showConnectionStatusFilterSelector: boolean;
6511
+ routerFilterClicked: EventEmitter<Event>;
6512
+ identityFilterClicked: EventEmitter<Event>;
6513
+ serviceFilterClicked: EventEmitter<Event>;
6514
+ connectionStatusFilterClicked: EventEmitter<Event>;
6515
+ routerFilterClosed: EventEmitter<Event>;
6516
+ identityFilterClosed: EventEmitter<Event>;
6517
+ serviceFilterClosed: EventEmitter<Event>;
6518
+ connectionStatusFilterClosed: EventEmitter<Event>;
6519
+ routerRoleAttributesChanged: EventEmitter<any>;
6520
+ identityNamedAttributesChanged: EventEmitter<any>;
6521
+ identityRoleAttributesChanged: EventEmitter<any>;
6522
+ serviceNamedAttributesChanged: EventEmitter<any>;
6523
+ serviceRoleAttributesChanged: EventEmitter<any>;
6524
+ connectionStatusChanged: EventEmitter<any>;
6525
+ identityFilterChanged: EventEmitter<any>;
6526
+ serviceFilterChanged: EventEmitter<any>;
6527
+ clearFiltersClicked: EventEmitter<Event>;
6528
+ selectedRouterAttributesChange: EventEmitter<any[]>;
6529
+ selectedIdentityAttributesChange: EventEmitter<any[]>;
6530
+ selectedIdentityNamedAttributesChange: EventEmitter<any[]>;
6531
+ selectedServiceAttributesChange: EventEmitter<any[]>;
6532
+ selectedServiceNamedAttributesChange: EventEmitter<any[]>;
6533
+ selectedConnectionStatusChange: EventEmitter<string>;
6534
+ routerFilterSelector: any;
6535
+ identityFilterSelector: any;
6536
+ serviceFilterSelector: any;
6537
+ connectionStatusFilterSelector: any;
6538
+ constructor(cdr: ChangeDetectorRef);
6539
+ ngOnChanges(changes: SimpleChanges): void;
6540
+ static ɵfac: i0.ɵɵFactoryDeclaration<GeolocateFilterBarComponent, never>;
6541
+ static ɵcmp: i0.ɵɵComponentDeclaration<GeolocateFilterBarComponent, "lib-geolocate-filter-bar", never, { "selectedRouterAttributes": { "alias": "selectedRouterAttributes"; "required": false; }; "selectedIdentityAttributes": { "alias": "selectedIdentityAttributes"; "required": false; }; "selectedIdentityNamedAttributes": { "alias": "selectedIdentityNamedAttributes"; "required": false; }; "selectedServiceAttributes": { "alias": "selectedServiceAttributes"; "required": false; }; "selectedServiceNamedAttributes": { "alias": "selectedServiceNamedAttributes"; "required": false; }; "selectedConnectionStatus": { "alias": "selectedConnectionStatus"; "required": false; }; "routerRoleAttributes": { "alias": "routerRoleAttributes"; "required": false; }; "identityRoleAttributes": { "alias": "identityRoleAttributes"; "required": false; }; "identityNamedAttributes": { "alias": "identityNamedAttributes"; "required": false; }; "serviceRoleAttributes": { "alias": "serviceRoleAttributes"; "required": false; }; "serviceNamedAttributes": { "alias": "serviceNamedAttributes"; "required": false; }; "filtersApplied": { "alias": "filtersApplied"; "required": false; }; "showRouterFilterSelector": { "alias": "showRouterFilterSelector"; "required": false; }; "showIdentityFilterSelector": { "alias": "showIdentityFilterSelector"; "required": false; }; "showServiceFilterSelector": { "alias": "showServiceFilterSelector"; "required": false; }; "showConnectionStatusFilterSelector": { "alias": "showConnectionStatusFilterSelector"; "required": false; }; }, { "routerFilterClicked": "routerFilterClicked"; "identityFilterClicked": "identityFilterClicked"; "serviceFilterClicked": "serviceFilterClicked"; "connectionStatusFilterClicked": "connectionStatusFilterClicked"; "routerFilterClosed": "routerFilterClosed"; "identityFilterClosed": "identityFilterClosed"; "serviceFilterClosed": "serviceFilterClosed"; "connectionStatusFilterClosed": "connectionStatusFilterClosed"; "routerRoleAttributesChanged": "routerRoleAttributesChanged"; "identityNamedAttributesChanged": "identityNamedAttributesChanged"; "identityRoleAttributesChanged": "identityRoleAttributesChanged"; "serviceNamedAttributesChanged": "serviceNamedAttributesChanged"; "serviceRoleAttributesChanged": "serviceRoleAttributesChanged"; "connectionStatusChanged": "connectionStatusChanged"; "identityFilterChanged": "identityFilterChanged"; "serviceFilterChanged": "serviceFilterChanged"; "clearFiltersClicked": "clearFiltersClicked"; "selectedRouterAttributesChange": "selectedRouterAttributesChange"; "selectedIdentityAttributesChange": "selectedIdentityAttributesChange"; "selectedIdentityNamedAttributesChange": "selectedIdentityNamedAttributesChange"; "selectedServiceAttributesChange": "selectedServiceAttributesChange"; "selectedServiceNamedAttributesChange": "selectedServiceNamedAttributesChange"; "selectedConnectionStatusChange": "selectedConnectionStatusChange"; }, never, ["*"], false, never>;
6542
+ }
6543
+
6544
+ declare class SidePanelContainerComponent implements OnInit, OnDestroy, OnChanges {
6545
+ isOpen: boolean;
6546
+ panelType: 'marker' | 'link' | 'circuit' | 'unlocated' | 'entityList' | 'servicesWithCircuits' | null;
6547
+ panelData: any;
6548
+ sidePanelCircuits: any[];
6549
+ selectedCircuit: any;
6550
+ selectedCircuitRouters: any[];
6551
+ selectedCircuitSegment: any;
6552
+ selectedRouterInPath: string | null;
6553
+ circuitPreviewEntity: any;
6554
+ circuitPreviewEntityType: string;
6555
+ entityListType: string;
6556
+ entityListSearch: string;
6557
+ entityListPage: number;
6558
+ entityListPageSize: number;
6559
+ entityListTotal: number;
6560
+ filteredEntityList: any[];
6561
+ entityListPreview: any;
6562
+ entityListLocationFilter: 'all' | 'located' | 'unlocated';
6563
+ filteredUnlocatedIdentities: any[];
6564
+ filteredUnlocatedRouters: any[];
6565
+ unlocatedIdentitiesSearch: string;
6566
+ unlocatedRoutersSearch: string;
6567
+ unlocatedPreviewEntity: any;
6568
+ unlocatedPreviewType: string;
6569
+ unlocatedPreviewCircuits: any[];
6570
+ unlocatedPreviewHasUnsavedLocation: boolean;
6571
+ selectedUnlocatedCircuit: any;
6572
+ selectedUnlocatedCircuitRouters: any[];
6573
+ allCircuits: any[];
6574
+ allIdentities: any[];
6575
+ allRouters: any[];
6576
+ allTerminators: any[];
6577
+ servicesWithCircuitsSearch: string;
6578
+ closed: EventEmitter<void>;
6579
+ circuitSelected: EventEmitter<any>;
6580
+ routerInPathSelected: EventEmitter<{
6581
+ routerId: string;
6582
+ routerType: string;
6583
+ }>;
6584
+ saveLocationChanges: EventEmitter<{
6585
+ item: any;
6586
+ type: string;
6587
+ }>;
6588
+ navigateToDetails: EventEmitter<{
6589
+ type: string;
6590
+ id: string;
6591
+ }>;
6592
+ circuitPreviewOpened: EventEmitter<any>;
6593
+ roleAttributeNavigated: EventEmitter<string>;
6594
+ hopSelected: EventEmitter<{
6595
+ hop: any;
6596
+ index: number;
6597
+ }>;
6598
+ routerSelected: EventEmitter<{
6599
+ routerId: string;
6600
+ routerType: string;
6601
+ }>;
6602
+ entityClicked: EventEmitter<{
6603
+ entityId: string;
6604
+ entityType: string;
6605
+ }>;
6606
+ serviceClicked: EventEmitter<any>;
6607
+ circuitPreviewClosed: EventEmitter<void>;
6608
+ entityPanelOpened: EventEmitter<{
6609
+ entityId: string;
6610
+ entityType: string;
6611
+ }>;
6612
+ routerClicked: EventEmitter<any>;
6613
+ entityListSearchChanged: EventEmitter<string>;
6614
+ entityListPageChanged: EventEmitter<number>;
6615
+ entityListSortChanged: EventEmitter<{
6616
+ column: string;
6617
+ direction: "asc" | "desc";
6618
+ }>;
6619
+ entityListLocationFilterChanged: EventEmitter<"all" | "unlocated" | "located">;
6620
+ entityListEntityClicked: EventEmitter<any>;
6621
+ entityListPreviewClosed: EventEmitter<void>;
6622
+ unlocatedIdentitiesSearchChanged: EventEmitter<string>;
6623
+ unlocatedRoutersSearchChanged: EventEmitter<string>;
6624
+ unlocatedEntityDragStarted: EventEmitter<{
6625
+ event: DragEvent;
6626
+ entity: any;
6627
+ type: string;
6628
+ }>;
6629
+ unlocatedEntityClicked: EventEmitter<{
6630
+ entity: any;
6631
+ type: string;
6632
+ }>;
6633
+ unlocatedPreviewClosed: EventEmitter<void>;
6634
+ unlocatedSaveLocationClicked: EventEmitter<void>;
6635
+ servicesSearchChanged: EventEmitter<string>;
6636
+ sidePanelWidth: number;
6637
+ isResizing: boolean;
6638
+ minPanelWidth: number;
6639
+ maxPanelWidth: number;
6640
+ startX: number;
6641
+ startWidth: number;
6642
+ private mouseMoveSubscription?;
6643
+ private mouseUpSubscription?;
6644
+ Math: Math;
6645
+ ngOnInit(): void;
6646
+ ngOnChanges(changes: SimpleChanges): void;
6647
+ ngOnDestroy(): void;
6648
+ /**
6649
+ * Get header class based on panel type and data
6650
+ */
6651
+ getHeaderClass(): string;
6652
+ /**
6653
+ * Get panel title based on panel type and data
6654
+ */
6655
+ getPanelTitle(): string;
6656
+ /**
6657
+ * Get title icon class based on panel type
6658
+ */
6659
+ getTitleIconClass(): string;
6660
+ /**
6661
+ * Close the side panel
6662
+ */
6663
+ closePanel(): void;
6664
+ /**
6665
+ * Handle resize mouse down
6666
+ */
6667
+ onResizerMouseDown(event: MouseEvent): void;
6668
+ /**
6669
+ * Handle mouse move during resize
6670
+ */
6671
+ private onMouseMove;
6672
+ /**
6673
+ * Handle mouse up after resize
6674
+ */
6675
+ private onMouseUp;
6676
+ /**
6677
+ * Update CSS variable for panel width
6678
+ */
6679
+ private updatePanelWidth;
6680
+ /**
6681
+ * Cleanup mouse event listeners
6682
+ */
6683
+ private cleanupMouseListeners;
6684
+ static ɵfac: i0.ɵɵFactoryDeclaration<SidePanelContainerComponent, never>;
6685
+ static ɵcmp: i0.ɵɵComponentDeclaration<SidePanelContainerComponent, "lib-side-panel-container", never, { "isOpen": { "alias": "isOpen"; "required": false; }; "panelType": { "alias": "panelType"; "required": false; }; "panelData": { "alias": "panelData"; "required": false; }; "sidePanelCircuits": { "alias": "sidePanelCircuits"; "required": false; }; "selectedCircuit": { "alias": "selectedCircuit"; "required": false; }; "selectedCircuitRouters": { "alias": "selectedCircuitRouters"; "required": false; }; "selectedCircuitSegment": { "alias": "selectedCircuitSegment"; "required": false; }; "selectedRouterInPath": { "alias": "selectedRouterInPath"; "required": false; }; "circuitPreviewEntity": { "alias": "circuitPreviewEntity"; "required": false; }; "circuitPreviewEntityType": { "alias": "circuitPreviewEntityType"; "required": false; }; "entityListType": { "alias": "entityListType"; "required": false; }; "entityListSearch": { "alias": "entityListSearch"; "required": false; }; "entityListPage": { "alias": "entityListPage"; "required": false; }; "entityListPageSize": { "alias": "entityListPageSize"; "required": false; }; "entityListTotal": { "alias": "entityListTotal"; "required": false; }; "filteredEntityList": { "alias": "filteredEntityList"; "required": false; }; "entityListPreview": { "alias": "entityListPreview"; "required": false; }; "entityListLocationFilter": { "alias": "entityListLocationFilter"; "required": false; }; "filteredUnlocatedIdentities": { "alias": "filteredUnlocatedIdentities"; "required": false; }; "filteredUnlocatedRouters": { "alias": "filteredUnlocatedRouters"; "required": false; }; "unlocatedIdentitiesSearch": { "alias": "unlocatedIdentitiesSearch"; "required": false; }; "unlocatedRoutersSearch": { "alias": "unlocatedRoutersSearch"; "required": false; }; "unlocatedPreviewEntity": { "alias": "unlocatedPreviewEntity"; "required": false; }; "unlocatedPreviewType": { "alias": "unlocatedPreviewType"; "required": false; }; "unlocatedPreviewCircuits": { "alias": "unlocatedPreviewCircuits"; "required": false; }; "unlocatedPreviewHasUnsavedLocation": { "alias": "unlocatedPreviewHasUnsavedLocation"; "required": false; }; "selectedUnlocatedCircuit": { "alias": "selectedUnlocatedCircuit"; "required": false; }; "selectedUnlocatedCircuitRouters": { "alias": "selectedUnlocatedCircuitRouters"; "required": false; }; "allCircuits": { "alias": "allCircuits"; "required": false; }; "allIdentities": { "alias": "allIdentities"; "required": false; }; "allRouters": { "alias": "allRouters"; "required": false; }; "allTerminators": { "alias": "allTerminators"; "required": false; }; "servicesWithCircuitsSearch": { "alias": "servicesWithCircuitsSearch"; "required": false; }; }, { "closed": "closed"; "circuitSelected": "circuitSelected"; "routerInPathSelected": "routerInPathSelected"; "saveLocationChanges": "saveLocationChanges"; "navigateToDetails": "navigateToDetails"; "circuitPreviewOpened": "circuitPreviewOpened"; "roleAttributeNavigated": "roleAttributeNavigated"; "hopSelected": "hopSelected"; "routerSelected": "routerSelected"; "entityClicked": "entityClicked"; "serviceClicked": "serviceClicked"; "circuitPreviewClosed": "circuitPreviewClosed"; "entityPanelOpened": "entityPanelOpened"; "routerClicked": "routerClicked"; "entityListSearchChanged": "entityListSearchChanged"; "entityListPageChanged": "entityListPageChanged"; "entityListSortChanged": "entityListSortChanged"; "entityListLocationFilterChanged": "entityListLocationFilterChanged"; "entityListEntityClicked": "entityListEntityClicked"; "entityListPreviewClosed": "entityListPreviewClosed"; "unlocatedIdentitiesSearchChanged": "unlocatedIdentitiesSearchChanged"; "unlocatedRoutersSearchChanged": "unlocatedRoutersSearchChanged"; "unlocatedEntityDragStarted": "unlocatedEntityDragStarted"; "unlocatedEntityClicked": "unlocatedEntityClicked"; "unlocatedPreviewClosed": "unlocatedPreviewClosed"; "unlocatedSaveLocationClicked": "unlocatedSaveLocationClicked"; "servicesSearchChanged": "servicesSearchChanged"; }, never, never, false, never>;
6686
+ }
6687
+
6688
+ interface ServiceGroup$3 {
6689
+ serviceName: string;
6690
+ serviceId: string;
6691
+ circuits: any[];
6692
+ expanded: boolean;
6693
+ sortBy?: 'created';
6694
+ sortDirection?: 'asc' | 'desc';
6695
+ }
6696
+ declare class MarkerPanelComponent implements OnChanges {
6697
+ private circuitCalculationService;
6698
+ markerData: any;
6699
+ circuits: any[];
6700
+ selectedCircuit: any;
6701
+ selectedCircuitRouters: any[];
6702
+ selectedRouterInPath: string | null;
6703
+ allIdentities: any[];
6704
+ allRouters: any[];
6705
+ allTerminators: any[];
6706
+ circuitSelected: EventEmitter<any>;
6707
+ routerInPathSelected: EventEmitter<{
6708
+ routerId: string;
6709
+ routerType: string;
6710
+ }>;
6711
+ saveLocationChanges: EventEmitter<{
6712
+ item: any;
6713
+ type: string;
6714
+ }>;
6715
+ navigateToDetails: EventEmitter<{
6716
+ type: string;
6717
+ id: string;
6718
+ }>;
6719
+ circuitPreviewOpened: EventEmitter<any>;
6720
+ roleAttributeNavigated: EventEmitter<string>;
6721
+ panelClosed: EventEmitter<void>;
6722
+ serviceGroups: ServiceGroup$3[];
6723
+ constructor(circuitCalculationService: CircuitCalculationService);
6724
+ ngOnChanges(changes: SimpleChanges): void;
6725
+ /**
6726
+ * Get entity online status
6727
+ */
6728
+ getEntityOnlineStatus(entity: any): boolean;
6729
+ /**
6730
+ * Check if entity has unsaved location changes
6731
+ */
6732
+ hasUnsavedLocationChanges(item: any): boolean;
6733
+ /**
6734
+ * Select a circuit
6735
+ */
6736
+ onCircuitSelect(circuit: any, event?: MouseEvent): void;
6737
+ /**
6738
+ * Open circuit preview (detail view)
6739
+ */
6740
+ onCircuitPreviewOpen(circuit: any, event: MouseEvent): void;
6741
+ /**
6742
+ * Select a router in the circuit path
6743
+ */
6744
+ onRouterInPathSelect(routerId: string, routerType: string): void;
6745
+ /**
6746
+ * Save location changes for the entity
6747
+ */
6748
+ onSaveLocationChanges(): void;
6749
+ /**
6750
+ * Navigate to entity details page
6751
+ */
6752
+ onNavigateToDetails(): void;
6753
+ /**
6754
+ * Close the marker panel
6755
+ */
6756
+ onCancel(): void;
6757
+ /**
6758
+ * Navigate to role attribute
6759
+ */
6760
+ onRoleAttributeClick(role: string): void;
6761
+ /**
6762
+ * Update service groups - group circuits by service and apply filtering
6763
+ */
6764
+ updateServiceGroups(): void;
6765
+ /**
6766
+ * Toggle service group expansion
6767
+ */
6768
+ toggleGroup(group: ServiceGroup$3, event?: Event): void;
6769
+ /**
6770
+ * Toggle sort for a service group
6771
+ */
6772
+ toggleSort(group: ServiceGroup$3): void;
6773
+ /**
6774
+ * Get entity name and type from ID
6775
+ */
6776
+ getEntityInfo(entityId: string): {
6777
+ name: string;
6778
+ type: 'identity' | 'router';
6779
+ };
6780
+ /**
6781
+ * Compute client entity info from circuit (called once during data processing)
6782
+ */
6783
+ private computeClientInfo;
6784
+ /**
6785
+ * Compute host entity info from circuit (called once during data processing)
6786
+ */
6787
+ private computeHostInfo;
6788
+ /**
6789
+ * Get cached client entity info from circuit (used in templates)
6790
+ */
6791
+ getClientInfo(circuit: any): {
6792
+ name: string;
6793
+ type: 'identity' | 'router';
6794
+ };
6795
+ /**
6796
+ * Get cached host entity info from circuit (used in templates)
6797
+ */
6798
+ getHostInfo(circuit: any): {
6799
+ name: string;
6800
+ type: 'identity' | 'router';
6801
+ };
6802
+ /**
6803
+ * Get sorted circuits for a group - dual sort with created date as primary when active
6804
+ */
6805
+ getSortedCircuits(group: ServiceGroup$3): any[];
6806
+ static ɵfac: i0.ɵɵFactoryDeclaration<MarkerPanelComponent, never>;
6807
+ static ɵcmp: i0.ɵɵComponentDeclaration<MarkerPanelComponent, "lib-marker-panel", never, { "markerData": { "alias": "markerData"; "required": false; }; "circuits": { "alias": "circuits"; "required": false; }; "selectedCircuit": { "alias": "selectedCircuit"; "required": false; }; "selectedCircuitRouters": { "alias": "selectedCircuitRouters"; "required": false; }; "selectedRouterInPath": { "alias": "selectedRouterInPath"; "required": false; }; "allIdentities": { "alias": "allIdentities"; "required": false; }; "allRouters": { "alias": "allRouters"; "required": false; }; "allTerminators": { "alias": "allTerminators"; "required": false; }; }, { "circuitSelected": "circuitSelected"; "routerInPathSelected": "routerInPathSelected"; "saveLocationChanges": "saveLocationChanges"; "navigateToDetails": "navigateToDetails"; "circuitPreviewOpened": "circuitPreviewOpened"; "roleAttributeNavigated": "roleAttributeNavigated"; "panelClosed": "panelClosed"; }, never, never, false, never>;
6808
+ }
6809
+
6810
+ declare class LinkPanelComponent {
6811
+ linkData: any;
6812
+ routerClicked: EventEmitter<any>;
6813
+ /**
6814
+ * Parse connection type
6815
+ */
6816
+ parseConnectionType(type: string): string;
6817
+ /**
6818
+ * Parse connection endpoint (e.g., "tls:10.0.0.1:443")
6819
+ */
6820
+ parseEndpoint(endpoint: string): {
6821
+ protocol: string;
6822
+ address: string;
6823
+ port: string;
6824
+ };
6825
+ /**
6826
+ * Handle router click
6827
+ */
6828
+ onRouterClick(router: any): void;
6829
+ static ɵfac: i0.ɵɵFactoryDeclaration<LinkPanelComponent, never>;
6830
+ static ɵcmp: i0.ɵɵComponentDeclaration<LinkPanelComponent, "lib-link-panel", never, { "linkData": { "alias": "linkData"; "required": false; }; }, { "routerClicked": "routerClicked"; }, never, never, false, never>;
6831
+ }
6832
+
6833
+ declare class CircuitPanelComponent {
6834
+ circuitData: any;
6835
+ selectedSegmentIndex: number | null;
6836
+ selectedRouterId: string | null;
6837
+ previewEntity: any;
6838
+ previewEntityType: string;
6839
+ hopSelected: EventEmitter<{
6840
+ hop: any;
6841
+ index: number;
6842
+ }>;
6843
+ routerSelected: EventEmitter<{
6844
+ routerId: string;
6845
+ routerType: string;
6846
+ }>;
6847
+ entityClicked: EventEmitter<{
6848
+ entityId: string;
6849
+ entityType: string;
6850
+ }>;
6851
+ serviceClicked: EventEmitter<any>;
6852
+ previewClosed: EventEmitter<void>;
6853
+ navigateToDetails: EventEmitter<{
6854
+ type: string;
6855
+ id: string;
6856
+ }>;
6857
+ entityPanelOpened: EventEmitter<{
6858
+ entityId: string;
6859
+ entityType: string;
6860
+ }>;
6861
+ /**
6862
+ * Handle hop selection from circuit hops table
6863
+ */
6864
+ onHopSelected(event: {
6865
+ hop: any;
6866
+ index: number;
6867
+ }): void;
6868
+ /**
6869
+ * Handle router selection from router path table
6870
+ */
6871
+ onRouterSelected(event: {
6872
+ routerId: string;
6873
+ routerType: string;
6874
+ }): void;
6875
+ /**
6876
+ * Handle entity click (identity/router in circuit endpoints)
6877
+ */
6878
+ onEntityClick(entityId: string, entityType: string): void;
6879
+ /**
6880
+ * Handle service click
6881
+ */
6882
+ onServiceClick(service: any): void;
6883
+ /**
6884
+ * Close the entity preview
6885
+ */
6886
+ closePreview(): void;
6887
+ /**
6888
+ * Handle navigate to details from router path table
6889
+ */
6890
+ onNavigateToDetails(event: {
6891
+ type: string;
6892
+ id: string;
6893
+ }): void;
6894
+ /**
6895
+ * Handle entity panel opening from router path table or preview
6896
+ */
6897
+ onEntityPanelOpened(event: {
6898
+ entityId: string;
6899
+ entityType: string;
6900
+ }): void;
6901
+ static ɵfac: i0.ɵɵFactoryDeclaration<CircuitPanelComponent, never>;
6902
+ static ɵcmp: i0.ɵɵComponentDeclaration<CircuitPanelComponent, "lib-circuit-panel", never, { "circuitData": { "alias": "circuitData"; "required": false; }; "selectedSegmentIndex": { "alias": "selectedSegmentIndex"; "required": false; }; "selectedRouterId": { "alias": "selectedRouterId"; "required": false; }; "previewEntity": { "alias": "previewEntity"; "required": false; }; "previewEntityType": { "alias": "previewEntityType"; "required": false; }; }, { "hopSelected": "hopSelected"; "routerSelected": "routerSelected"; "entityClicked": "entityClicked"; "serviceClicked": "serviceClicked"; "previewClosed": "previewClosed"; "navigateToDetails": "navigateToDetails"; "entityPanelOpened": "entityPanelOpened"; }, never, never, false, never>;
6903
+ }
6904
+
6905
+ interface ServiceGroup$2 {
6906
+ serviceName: string;
6907
+ serviceId: string;
6908
+ circuits: any[];
6909
+ expanded: boolean;
6910
+ sortBy?: 'created';
6911
+ sortDirection?: 'asc' | 'desc';
6912
+ }
6913
+ declare class EntityListPanelComponent implements OnChanges {
6914
+ entityType: string;
6915
+ entities: any[];
6916
+ currentPage: number;
6917
+ pageSize: number;
6918
+ totalEntities: number;
6919
+ searchTerm: string;
6920
+ previewEntity: any;
6921
+ previewCircuits: any[];
6922
+ selectedCircuit: any;
6923
+ selectedCircuitRouters: any[];
6924
+ selectedRouterInPath: string | null;
6925
+ Math: any;
6926
+ allIdentities: any[];
6927
+ allRouters: any[];
6928
+ locationFilter: 'all' | 'located' | 'unlocated';
6929
+ searchChanged: EventEmitter<string>;
6930
+ pageChanged: EventEmitter<number>;
6931
+ locationFilterChanged: EventEmitter<"all" | "unlocated" | "located">;
6932
+ entityClicked: EventEmitter<any>;
6933
+ previewClosed: EventEmitter<void>;
6934
+ circuitSelected: EventEmitter<any>;
6935
+ routerInPathSelected: EventEmitter<{
6936
+ routerId: string;
6937
+ routerType: string;
6938
+ }>;
6939
+ saveLocationChanges: EventEmitter<{
6940
+ item: any;
6941
+ type: string;
6942
+ }>;
6943
+ navigateToDetails: EventEmitter<{
6944
+ type: string;
6945
+ id: string;
6946
+ }>;
6947
+ circuitPreviewOpened: EventEmitter<any>;
6948
+ roleAttributeNavigated: EventEmitter<string>;
6949
+ sortChanged: EventEmitter<{
6950
+ column: string;
6951
+ direction: "asc" | "desc";
6952
+ }>;
6953
+ entityDragStarted: EventEmitter<{
6954
+ event: DragEvent;
6955
+ entity: any;
6956
+ type: string;
6957
+ }>;
6958
+ sortColumn: string;
6959
+ sortDirection: 'asc' | 'desc';
6960
+ serviceGroups: ServiceGroup$2[];
6961
+ ngOnChanges(changes: SimpleChanges): void;
6962
+ /**
6963
+ * Get total pages
6964
+ */
6965
+ get totalPages(): number;
6966
+ /**
6967
+ * Toggle sort for a column
6968
+ */
6969
+ toggleSort(column: string): void;
6970
+ /**
6971
+ * Get page numbers for pagination display
6972
+ */
6973
+ get pageNumbers(): number[];
6974
+ /**
6975
+ * Handle search input change
6976
+ */
6977
+ onSearchChange(search: string): void;
6978
+ /**
6979
+ * Handle location filter change
6980
+ */
6981
+ onLocationFilterChange(filter: 'all' | 'located' | 'unlocated'): void;
6982
+ /**
6983
+ * Handle page change
6984
+ */
6985
+ onPageChange(page: number): void;
6986
+ /**
6987
+ * Handle drag start for unlocated entities
6988
+ */
6989
+ onDragStart(event: DragEvent, entity: any): void;
6990
+ /**
6991
+ * Handle entity row click
6992
+ */
6993
+ onEntityClick(entity: any): void;
6994
+ /**
6995
+ * Close preview pane
6996
+ */
6997
+ onPreviewClose(): void;
6998
+ /**
6999
+ * Get entity online status
7000
+ */
7001
+ getEntityOnlineStatus(entity: any): boolean;
7002
+ /**
7003
+ * Check if entity has unsaved location changes
7004
+ */
7005
+ hasUnsavedLocationChanges(item: any): boolean;
7006
+ /**
7007
+ * Select a circuit
7008
+ */
7009
+ onCircuitSelect(circuit: any, event?: MouseEvent): void;
7010
+ /**
7011
+ * Open circuit preview
7012
+ */
7013
+ onCircuitPreviewOpen(circuit: any, event: MouseEvent): void;
7014
+ /**
7015
+ * Select router in path
7016
+ */
7017
+ onRouterInPathSelect(routerId: string, routerType: string): void;
7018
+ /**
7019
+ * Save location changes
7020
+ */
7021
+ onSaveLocationChanges(): void;
7022
+ /**
7023
+ * Navigate to details
7024
+ */
7025
+ onNavigateToDetails(): void;
7026
+ /**
7027
+ * Navigate to role attribute
7028
+ */
7029
+ onRoleAttributeClick(role: string, event?: Event): void;
7030
+ /**
7031
+ * Update service groups - group circuits by service and apply filtering
7032
+ */
7033
+ updateServiceGroups(): void;
7034
+ /**
7035
+ * Toggle service group expansion
7036
+ */
7037
+ toggleGroup(group: ServiceGroup$2, event?: Event): void;
7038
+ /**
7039
+ * Toggle sort for a service group
7040
+ */
7041
+ toggleCircuitSort(group: ServiceGroup$2): void;
7042
+ /**
7043
+ * Get entity name and type from ID
7044
+ */
7045
+ getEntityInfo(entityId: string): {
7046
+ name: string;
7047
+ type: 'identity' | 'router';
7048
+ };
7049
+ /**
7050
+ * Compute client entity info from circuit (called once during data processing)
7051
+ */
7052
+ private computeClientInfo;
7053
+ /**
7054
+ * Compute host entity info from circuit (called once during data processing)
7055
+ */
7056
+ private computeHostInfo;
7057
+ /**
7058
+ * Get cached client entity info from circuit (used in templates)
7059
+ */
7060
+ getClientInfo(circuit: any): {
7061
+ name: string;
7062
+ type: 'identity' | 'router';
7063
+ };
7064
+ /**
7065
+ * Get cached host entity info from circuit (used in templates)
7066
+ */
7067
+ getHostInfo(circuit: any): {
7068
+ name: string;
7069
+ type: 'identity' | 'router';
7070
+ };
7071
+ /**
7072
+ * Get sorted circuits for a group - dual sort with created date as primary when active
7073
+ */
7074
+ getSortedCircuits(group: ServiceGroup$2): any[];
7075
+ static ɵfac: i0.ɵɵFactoryDeclaration<EntityListPanelComponent, never>;
7076
+ static ɵcmp: i0.ɵɵComponentDeclaration<EntityListPanelComponent, "lib-entity-list-panel", never, { "entityType": { "alias": "entityType"; "required": false; }; "entities": { "alias": "entities"; "required": false; }; "currentPage": { "alias": "currentPage"; "required": false; }; "pageSize": { "alias": "pageSize"; "required": false; }; "totalEntities": { "alias": "totalEntities"; "required": false; }; "searchTerm": { "alias": "searchTerm"; "required": false; }; "previewEntity": { "alias": "previewEntity"; "required": false; }; "previewCircuits": { "alias": "previewCircuits"; "required": false; }; "selectedCircuit": { "alias": "selectedCircuit"; "required": false; }; "selectedCircuitRouters": { "alias": "selectedCircuitRouters"; "required": false; }; "selectedRouterInPath": { "alias": "selectedRouterInPath"; "required": false; }; "Math": { "alias": "Math"; "required": false; }; "allIdentities": { "alias": "allIdentities"; "required": false; }; "allRouters": { "alias": "allRouters"; "required": false; }; "locationFilter": { "alias": "locationFilter"; "required": false; }; }, { "searchChanged": "searchChanged"; "pageChanged": "pageChanged"; "locationFilterChanged": "locationFilterChanged"; "entityClicked": "entityClicked"; "previewClosed": "previewClosed"; "circuitSelected": "circuitSelected"; "routerInPathSelected": "routerInPathSelected"; "saveLocationChanges": "saveLocationChanges"; "navigateToDetails": "navigateToDetails"; "circuitPreviewOpened": "circuitPreviewOpened"; "roleAttributeNavigated": "roleAttributeNavigated"; "sortChanged": "sortChanged"; "entityDragStarted": "entityDragStarted"; }, never, never, false, never>;
7077
+ }
7078
+
7079
+ interface ServiceGroup$1 {
7080
+ serviceName: string;
7081
+ serviceId: string;
7082
+ circuits: any[];
7083
+ expanded: boolean;
7084
+ sortBy?: 'created';
7085
+ sortDirection?: 'asc' | 'desc';
7086
+ }
7087
+ declare class UnlocatedPanelComponent implements OnChanges {
7088
+ unlocatedData: any;
7089
+ filteredIdentities: any[];
7090
+ filteredRouters: any[];
7091
+ identitiesSearch: string;
7092
+ routersSearch: string;
7093
+ previewEntity: any;
7094
+ previewType: string;
7095
+ previewCircuits: any[];
7096
+ previewHasUnsavedLocation: boolean;
7097
+ selectedCircuit: any;
7098
+ selectedCircuitRouters: any[];
7099
+ selectedRouterInPath: string | null;
7100
+ allIdentities: any[];
7101
+ allRouters: any[];
7102
+ identitiesSearchChanged: EventEmitter<string>;
7103
+ routersSearchChanged: EventEmitter<string>;
7104
+ entityDragStarted: EventEmitter<{
7105
+ event: DragEvent;
7106
+ entity: any;
7107
+ type: string;
7108
+ }>;
7109
+ entityClicked: EventEmitter<{
7110
+ entity: any;
7111
+ type: string;
7112
+ }>;
7113
+ previewClosed: EventEmitter<void>;
7114
+ saveLocationClicked: EventEmitter<void>;
7115
+ circuitSelected: EventEmitter<any>;
7116
+ routerInPathSelected: EventEmitter<{
7117
+ routerId: string;
7118
+ routerType: string;
7119
+ }>;
7120
+ navigateToDetails: EventEmitter<{
7121
+ type: string;
7122
+ id: string;
7123
+ }>;
7124
+ circuitPreviewOpened: EventEmitter<any>;
7125
+ roleAttributeNavigated: EventEmitter<string>;
7126
+ serviceGroups: ServiceGroup$1[];
7127
+ ngOnChanges(changes: SimpleChanges): void;
7128
+ /**
7129
+ * Handle identities search change
7130
+ */
7131
+ onIdentitiesSearchChange(search: string): void;
7132
+ /**
7133
+ * Handle routers search change
7134
+ */
7135
+ onRoutersSearchChange(search: string): void;
7136
+ /**
7137
+ * Handle drag start
7138
+ */
7139
+ onDragStart(event: DragEvent, entity: any, type: string): void;
7140
+ /**
7141
+ * Handle entity click
7142
+ */
7143
+ onEntityClick(entity: any, type: string): void;
7144
+ /**
7145
+ * Close preview
7146
+ */
7147
+ onPreviewClose(): void;
7148
+ /**
7149
+ * Save location
7150
+ */
7151
+ onSaveLocation(): void;
7152
+ /**
7153
+ * Get entity online status
7154
+ */
7155
+ getEntityOnlineStatus(entity: any): boolean;
7156
+ /**
7157
+ * Select a circuit
7158
+ */
7159
+ onCircuitSelect(circuit: any, event?: MouseEvent): void;
7160
+ /**
7161
+ * Open circuit preview
7162
+ */
7163
+ onCircuitPreviewOpen(circuit: any, event: MouseEvent): void;
7164
+ /**
7165
+ * Select router in path
7166
+ */
7167
+ onRouterInPathSelect(routerId: string, routerType: string): void;
7168
+ /**
7169
+ * Navigate to details
7170
+ */
7171
+ onNavigateToDetails(): void;
7172
+ /**
7173
+ * Navigate to role attribute
7174
+ */
7175
+ onRoleAttributeClick(role: string, event?: Event): void;
7176
+ /**
7177
+ * Update service groups - group circuits by service and apply filtering
7178
+ */
7179
+ updateServiceGroups(): void;
7180
+ /**
7181
+ * Toggle service group expansion
7182
+ */
7183
+ toggleGroup(group: ServiceGroup$1, event?: Event): void;
7184
+ /**
7185
+ * Toggle sort for a service group
7186
+ */
7187
+ toggleCircuitSort(group: ServiceGroup$1): void;
7188
+ /**
7189
+ * Get entity name and type from ID
7190
+ */
7191
+ getEntityInfo(entityId: string): {
7192
+ name: string;
7193
+ type: 'identity' | 'router';
7194
+ };
7195
+ /**
7196
+ * Get client entity info from circuit
7197
+ */
7198
+ getClientInfo(circuit: any): {
7199
+ name: string;
7200
+ type: 'identity' | 'router';
7201
+ };
7202
+ /**
7203
+ * Get host entity info from circuit
7204
+ */
7205
+ getHostInfo(circuit: any): {
7206
+ name: string;
7207
+ type: 'identity' | 'router';
7208
+ };
7209
+ /**
7210
+ * Get sorted circuits for a group - dual sort with created date as primary when active
7211
+ */
7212
+ getSortedCircuits(group: ServiceGroup$1): any[];
7213
+ static ɵfac: i0.ɵɵFactoryDeclaration<UnlocatedPanelComponent, never>;
7214
+ static ɵcmp: i0.ɵɵComponentDeclaration<UnlocatedPanelComponent, "lib-unlocated-panel", never, { "unlocatedData": { "alias": "unlocatedData"; "required": false; }; "filteredIdentities": { "alias": "filteredIdentities"; "required": false; }; "filteredRouters": { "alias": "filteredRouters"; "required": false; }; "identitiesSearch": { "alias": "identitiesSearch"; "required": false; }; "routersSearch": { "alias": "routersSearch"; "required": false; }; "previewEntity": { "alias": "previewEntity"; "required": false; }; "previewType": { "alias": "previewType"; "required": false; }; "previewCircuits": { "alias": "previewCircuits"; "required": false; }; "previewHasUnsavedLocation": { "alias": "previewHasUnsavedLocation"; "required": false; }; "selectedCircuit": { "alias": "selectedCircuit"; "required": false; }; "selectedCircuitRouters": { "alias": "selectedCircuitRouters"; "required": false; }; "selectedRouterInPath": { "alias": "selectedRouterInPath"; "required": false; }; "allIdentities": { "alias": "allIdentities"; "required": false; }; "allRouters": { "alias": "allRouters"; "required": false; }; }, { "identitiesSearchChanged": "identitiesSearchChanged"; "routersSearchChanged": "routersSearchChanged"; "entityDragStarted": "entityDragStarted"; "entityClicked": "entityClicked"; "previewClosed": "previewClosed"; "saveLocationClicked": "saveLocationClicked"; "circuitSelected": "circuitSelected"; "routerInPathSelected": "routerInPathSelected"; "navigateToDetails": "navigateToDetails"; "circuitPreviewOpened": "circuitPreviewOpened"; "roleAttributeNavigated": "roleAttributeNavigated"; }, never, never, false, never>;
7215
+ }
7216
+
7217
+ interface ServiceGroup {
7218
+ serviceName: string;
7219
+ serviceId: string;
7220
+ circuits: any[];
7221
+ expanded: boolean;
7222
+ sortBy?: 'created';
7223
+ sortDirection?: 'asc' | 'desc';
7224
+ }
7225
+ declare class ServicesWithCircuitsPanelComponent implements OnChanges {
7226
+ allCircuits: any[];
7227
+ allIdentities: any[];
7228
+ allRouters: any[];
7229
+ searchTerm: string;
7230
+ selectedCircuit: any;
7231
+ searchChanged: EventEmitter<string>;
7232
+ circuitSelected: EventEmitter<any>;
7233
+ circuitPreviewOpened: EventEmitter<any>;
7234
+ serviceGroups: ServiceGroup[];
7235
+ totalCircuits: number;
7236
+ previewCircuit: any;
7237
+ ngOnChanges(changes: SimpleChanges): void;
7238
+ /**
7239
+ * Update service groups - group circuits by service and apply search filter
7240
+ */
7241
+ updateServiceGroups(): void;
7242
+ /**
7243
+ * Handle search input change
7244
+ */
7245
+ onSearchChange(search: string): void;
7246
+ /**
7247
+ * Handle circuit row click - opens preview and displays on map
7248
+ */
7249
+ onCircuitClick(circuit: any, event?: Event): void;
7250
+ /**
7251
+ * Close the circuit preview
7252
+ */
7253
+ closePreview(): void;
7254
+ /**
7255
+ * View full circuit details - opens full circuit panel
7256
+ */
7257
+ viewFullCircuitDetails(): void;
7258
+ /**
7259
+ * Toggle service group expansion
7260
+ */
7261
+ toggleGroup(group: ServiceGroup, event?: Event): void;
7262
+ /**
7263
+ * Get entity name and type from ID
7264
+ */
7265
+ getEntityInfo(entityId: string): {
7266
+ name: string;
7267
+ type: 'identity' | 'router';
7268
+ };
7269
+ /**
7270
+ * Compute client entity info from circuit (called once during data processing)
7271
+ */
7272
+ private computeClientInfo;
7273
+ /**
7274
+ * Compute host entity info from circuit (called once during data processing)
7275
+ */
7276
+ private computeHostInfo;
7277
+ /**
7278
+ * Get cached client entity info from circuit (used in templates)
7279
+ */
7280
+ getClientInfo(circuit: any): {
7281
+ name: string;
7282
+ type: 'identity' | 'router';
7283
+ };
7284
+ /**
7285
+ * Get cached host entity info from circuit (used in templates)
7286
+ */
7287
+ getHostInfo(circuit: any): {
7288
+ name: string;
7289
+ type: 'identity' | 'router';
7290
+ };
7291
+ /**
7292
+ * Get total circuits across all groups
7293
+ */
7294
+ getTotalCircuitsInGroups(): number;
7295
+ /**
7296
+ * Toggle sort for a service group
7297
+ */
7298
+ toggleSort(group: ServiceGroup): void;
7299
+ /**
7300
+ * Get sorted circuits for a group - always dual sort by client name first, then by created date
7301
+ */
7302
+ getSortedCircuits(group: ServiceGroup): any[];
7303
+ static ɵfac: i0.ɵɵFactoryDeclaration<ServicesWithCircuitsPanelComponent, never>;
7304
+ static ɵcmp: i0.ɵɵComponentDeclaration<ServicesWithCircuitsPanelComponent, "lib-services-with-circuits-panel", never, { "allCircuits": { "alias": "allCircuits"; "required": false; }; "allIdentities": { "alias": "allIdentities"; "required": false; }; "allRouters": { "alias": "allRouters"; "required": false; }; "searchTerm": { "alias": "searchTerm"; "required": false; }; "selectedCircuit": { "alias": "selectedCircuit"; "required": false; }; }, { "searchChanged": "searchChanged"; "circuitSelected": "circuitSelected"; "circuitPreviewOpened": "circuitPreviewOpened"; }, never, never, false, never>;
7305
+ }
7306
+
7307
+ interface HAController {
7308
+ url: string;
7309
+ name: string;
7310
+ isOnline: boolean;
7311
+ lastHealthCheck: Date | null;
7312
+ lastResponseTime: number | null;
7313
+ sessionToken: string | null;
7314
+ }
7315
+ interface HAClusterStatus {
7316
+ enabled: boolean;
7317
+ controllers: HAController[];
7318
+ onlineCount: number;
7319
+ totalCount: number;
7320
+ }
7321
+ declare class HAControllerService {
7322
+ private httpClient;
7323
+ private _clusterStatus$;
7324
+ clusterStatus$: Observable<HAClusterStatus>;
7325
+ private healthCheckSubscription;
7326
+ private readonly HEALTH_CHECK_INTERVAL;
7327
+ constructor(httpClient: HttpClient);
7328
+ /**
7329
+ * Initialize HA cluster with discovered controllers
7330
+ */
7331
+ initializeCluster(controllers: HAController[]): void;
7332
+ /**
7333
+ * Add a controller to the HA cluster
7334
+ */
7335
+ addController(controller: HAController): void;
7336
+ /**
7337
+ * Remove a controller from the HA cluster
7338
+ */
7339
+ removeController(controllerUrl: string): void;
7340
+ /**
7341
+ * Update session token for a controller
7342
+ */
7343
+ updateSessionToken(controllerUrl: string, token: string): void;
7344
+ /**
7345
+ * Get session token for a specific controller
7346
+ */
7347
+ getSessionToken(controllerUrl: string): string | null;
7348
+ /**
7349
+ * Get all online controllers
7350
+ */
7351
+ getOnlineControllers(): HAController[];
7352
+ /**
7353
+ * Get all controllers with valid sessions
7354
+ */
7355
+ getControllersWithSessions(): HAController[];
7356
+ /**
7357
+ * Check if HA is enabled
7358
+ */
7359
+ isHAEnabled(): boolean;
7360
+ /**
7361
+ * Perform health check on a single controller
7362
+ */
7363
+ private checkControllerHealth;
7364
+ /**
7365
+ * Perform health checks on all controllers
7366
+ */
7367
+ private performHealthChecks;
7368
+ /**
7369
+ * Start periodic health checks
7370
+ */
7371
+ private startHealthChecks;
7372
+ /**
7373
+ * Stop periodic health checks
7374
+ */
7375
+ private stopHealthChecks;
7376
+ /**
7377
+ * Reset HA cluster (disable and clear all controllers)
7378
+ */
7379
+ reset(): void;
7380
+ /**
7381
+ * Cleanup on service destruction
7382
+ */
7383
+ ngOnDestroy(): void;
7384
+ /**
7385
+ * Save cluster status to localStorage
7386
+ */
7387
+ private saveClusterStatus;
7388
+ /**
7389
+ * Restore cluster status from localStorage
7390
+ */
7391
+ private restoreClusterStatus;
7392
+ /**
7393
+ * Clear cluster status from localStorage
7394
+ */
7395
+ private clearClusterStatus;
7396
+ static ɵfac: i0.ɵɵFactoryDeclaration<HAControllerService, never>;
7397
+ static ɵprov: i0.ɵɵInjectableDeclaration<HAControllerService>;
7398
+ }
7399
+
7400
+ declare class HaStatusIndicatorComponent implements OnInit, OnDestroy {
7401
+ private haControllerService;
7402
+ clusterStatus: HAClusterStatus | null;
7403
+ isExpanded: boolean;
7404
+ private subscription;
7405
+ constructor(haControllerService: HAControllerService);
7406
+ ngOnInit(): void;
7407
+ ngOnDestroy(): void;
7408
+ toggleExpanded(): void;
7409
+ getControllerStatusClass(controller: HAController): string;
7410
+ getControllerIcon(controller: HAController): string;
7411
+ formatResponseTime(controller: HAController): string;
7412
+ formatLastCheck(controller: HAController): string;
7413
+ get statusSummary(): string;
7414
+ get statusIcon(): string;
7415
+ get statusClass(): string;
7416
+ static ɵfac: i0.ɵɵFactoryDeclaration<HaStatusIndicatorComponent, never>;
7417
+ static ɵcmp: i0.ɵɵComponentDeclaration<HaStatusIndicatorComponent, "lib-ha-status-indicator", never, {}, {}, never, never, false, never>;
7418
+ }
7419
+
7420
+ declare class AttributesComponent implements OnInit, OnDestroy {
7421
+ private zitiDataService;
7422
+ private route;
7423
+ attributes: any[];
7424
+ identities: any[];
7425
+ services: any[];
7426
+ edgeRouters: any[];
7427
+ postureChecks: any[];
7428
+ identityAttributes: any[];
7429
+ edgeRouterAttributes: any[];
7430
+ serviceAttributes: any[];
7431
+ selectedAttribute: any;
7432
+ private subscription;
7433
+ constructor(zitiDataService: ZitiDataService, route: ActivatedRoute);
7434
+ ngOnInit(): void;
7435
+ loadData(): void;
7436
+ attributesLoaded(): void;
7437
+ calculateAttributes(): void;
7438
+ countOccurrences(items: any[], attribute: string): number;
7439
+ getAssociatedItems(items: any[], attribute: string): string;
7440
+ editAttribute(attributeName: string): void;
7441
+ closeModal(): void;
7442
+ ngOnDestroy(): void;
7443
+ static ɵfac: i0.ɵɵFactoryDeclaration<AttributesComponent, never>;
7444
+ static ɵcmp: i0.ɵɵComponentDeclaration<AttributesComponent, "lib-attributes", never, {}, {}, never, never, false, never>;
7445
+ }
7446
+
7447
+ declare class SideNavigatorComponent implements OnInit, OnDestroy {
7448
+ private router;
7449
+ currentNav: any;
7450
+ private haControllerService;
7451
+ version: string;
7452
+ currentNetwork: any;
7453
+ navExpanded: boolean;
7454
+ navHidden: boolean;
7455
+ hideMenuNavBar: boolean;
7456
+ betaFeaturesEnabled: boolean;
7457
+ isHAEnabled: boolean;
7458
+ private routerSubscription?;
7459
+ private haSubscription?;
7460
+ private selectedNavItem;
7461
+ constructor(router: Router, currentNav: any, haControllerService: HAControllerService);
7462
+ ngOnInit(): void;
7463
+ ngOnDestroy(): void;
7464
+ private updateSelectedNavItem;
7465
+ private getRouteMatchScore;
7466
+ private calculateMatchScore;
7467
+ navItemSelected(navItem: any): boolean;
7468
+ isNavItemDisabled(navItem: any): void;
7469
+ doNavAction(event: any, navItem: any): void;
7470
+ showExpandCollapseIcon: boolean;
7471
+ showExpandCollapseIconChange: EventEmitter<boolean>;
7472
+ showExpandCollapse(event: any): void;
7473
+ hideExpandCollapse(event: any): void;
7474
+ toggleNavigationExpanded(event: any): void;
7475
+ get expandCollapseIconVisible(): boolean;
7476
+ static ɵfac: i0.ɵɵFactoryDeclaration<SideNavigatorComponent, never>;
7477
+ static ɵcmp: i0.ɵɵComponentDeclaration<SideNavigatorComponent, "lib-side-navigator", never, { "version": { "alias": "version"; "required": false; }; }, {}, never, never, false, never>;
5512
7478
  }
5513
7479
 
5514
7480
  declare class HeaderBarComponent {
@@ -5611,7 +7577,7 @@ declare class GrowlerModule {
5611
7577
  declare function playerFactory(): Promise<typeof lottie_web>;
5612
7578
  declare class OpenZitiConsoleLibModule {
5613
7579
  static ɵfac: i0.ɵɵFactoryDeclaration<OpenZitiConsoleLibModule, never>;
5614
- static ɵmod: i0.ɵɵNgModuleDeclaration<OpenZitiConsoleLibModule, [typeof SafePipe, typeof ExtendableComponent, typeof StringInputComponent, typeof NumberInputComponent, typeof BooleanToggleInputComponent, typeof ObjectComponent, typeof SelectorInputComponent, typeof TextListInputComponent, typeof ChipsInputComponent, typeof CheckboxListInputComponent, typeof ProtocolAddressPortInputComponent, typeof SideNavbarComponent, typeof PasswordInputComponent, typeof TerminatorFormComponent, typeof ConfigurationsPageComponent, typeof ConfigTypesPageComponent, typeof ConfigTypeFormComponent, typeof ListPageHeaderComponent, typeof FilterBarComponent, typeof ListPageFormComponent, typeof IdentitiesPageComponent, typeof EdgeRoutersPageComponent, typeof TransitRoutersPageComponent, typeof DataTableComponent, typeof TableCellSelectComponent, typeof TableColumnSelectComponent, typeof TableCellMenuComponent, typeof TableColumnMenuComponent, typeof TableColumnDefaultComponent, typeof TableColumnFilterComponent, typeof IdentityFormComponent, typeof EdgeRouterFormComponent, typeof TransitRouterFormComponent, typeof HiddenColumnsBarComponent, typeof ConfirmComponent, typeof NoItemsComponent, typeof SideModalComponent, typeof FormHeaderComponent, typeof FormFieldContainerComponent, typeof PreviewListComponent, typeof LoadingIndicatorComponent, typeof FormFieldToggleComponent, typeof JsonViewComponent, typeof TagSelectorComponent, typeof QrCodeComponent, typeof TableCellTokenComponent, typeof OSTooltipComponent, typeof SDKTooltipComponent, typeof OverridesComponent, typeof ResetEnrollmentComponent, typeof IdentityServicePathComponent, typeof NetworkVisualizerComponent, typeof CustomTagsComponent, typeof ServicesPageComponent, typeof ServiceFormComponent, typeof PortRangesComponent, typeof ForwardingConfigComponent, typeof CardListComponent, typeof SimpleServiceComponent, typeof CardComponent, typeof CreationSummaryDialogComponent, typeof ConfigEditorComponent, typeof ServicePoliciesPageComponent, typeof ServicePolicyFormComponent, typeof EdgeRouterPoliciesPageComponent, typeof EdgeRouterPolicyFormComponent, typeof MultiActionButtonComponent, typeof TableCellNameComponent, typeof ServiceEdgeRouterPoliciesPageComponent, typeof ServiceEdgeRouterPolicyFormComponent, typeof TerminatorsPageComponent, typeof ConfigurationFormComponent, typeof JwtSignersPageComponent, typeof JwtSignerFormComponent, typeof AuthPoliciesPageComponent, typeof AuthPolicyFormComponent, typeof PreviewSelectionsComponent, typeof CertificateAuthoritiesPageComponent, typeof CertificateAuthorityFormComponent, typeof VerifyCertificateComponent, typeof LoginDialogComponent, typeof PostureChecksPageComponent, typeof PostureCheckFormComponent, typeof SessionsPageComponent, typeof SessionFormComponent, typeof APISessionsPageComponent, typeof APISessionFormComponent, typeof CallbackComponent, typeof ProgressMeterComponent, typeof ProgressWizardComponent, typeof SettingsComponent, typeof ProfileComponent, typeof GeolocateComponent, typeof AttributesComponent, typeof SideNavigatorComponent, typeof HeaderBarComponent, typeof QuickAddComponent, typeof DateRangeQuickHeaderComponent, typeof FilterSelectComponent, typeof FilterSelectOptionTemplateDirective, typeof FilterSelectTriggerTemplateDirective], [typeof i2.CommonModule, typeof i3.FormsModule, typeof i103.MatDialogModule, typeof i104.MatRadioModule, typeof ZacRoutingModule, typeof i106.MatDatepickerModule, typeof i107.MatNativeDateModule, typeof i108.MatFormFieldModule, typeof i109.MatInputModule, typeof i110.MatSelectModule, typeof i111.MatButtonModule, typeof i112.MatIconModule, typeof i113.OverlayModule, typeof i114.AgGridModule, typeof i115.QRCodeComponent, typeof i116.ClickOutsideModule, typeof i117.NgJsonEditorModule, typeof i118.MatTooltipModule, typeof i119.MatAutocompleteModule, typeof i120.LottieComponent, typeof DateTimePickerComponent], [typeof ExtendableComponent, typeof SideNavbarComponent, typeof StringInputComponent, typeof SelectorInputComponent, typeof PasswordInputComponent, typeof NumberInputComponent, typeof BooleanToggleInputComponent, typeof ObjectComponent, typeof TextListInputComponent, typeof ChipsInputComponent, typeof IdentityServicePathComponent, typeof NetworkVisualizerComponent, typeof CheckboxListInputComponent, typeof ProtocolAddressPortInputComponent, typeof ConfigurationsPageComponent, typeof ConfigurationFormComponent, typeof ConfigTypesPageComponent, typeof ConfigTypeFormComponent, typeof EdgeRouterFormComponent, typeof TransitRouterFormComponent, typeof IdentitiesPageComponent, typeof EdgeRoutersPageComponent, typeof TransitRoutersPageComponent, typeof ServicesPageComponent, typeof ZacRoutingModule, typeof SideModalComponent, typeof IdentityFormComponent, typeof LoadingIndicatorComponent, typeof GrowlerModule, typeof FormFieldContainerComponent, typeof FormFieldToggleComponent, typeof ServiceFormComponent, typeof ServicePoliciesPageComponent, typeof ServicePolicyFormComponent, typeof EdgeRouterPoliciesPageComponent, typeof TerminatorsPageComponent, typeof TerminatorFormComponent, typeof JwtSignersPageComponent, typeof JwtSignerFormComponent, typeof AuthPoliciesPageComponent, typeof AuthPolicyFormComponent, typeof LoginDialogComponent, typeof PostureChecksPageComponent, typeof PostureCheckFormComponent, typeof SessionsPageComponent, typeof SessionFormComponent, typeof APISessionsPageComponent, typeof APISessionFormComponent, typeof CallbackComponent, typeof FormHeaderComponent, typeof JsonViewComponent, typeof PreviewListComponent, typeof TagSelectorComponent, typeof ProgressMeterComponent, typeof ProgressWizardComponent, typeof ConfigEditorComponent, typeof SettingsComponent, typeof ProfileComponent, typeof GeolocateComponent, typeof AttributesComponent, typeof HeaderBarComponent, typeof SideNavigatorComponent, typeof FilterSelectComponent, typeof FilterSelectOptionTemplateDirective, typeof FilterSelectTriggerTemplateDirective]>;
7580
+ static ɵmod: i0.ɵɵNgModuleDeclaration<OpenZitiConsoleLibModule, [typeof SafePipe, typeof ExtendableComponent, typeof StringInputComponent, typeof NumberInputComponent, typeof BooleanToggleInputComponent, typeof ObjectComponent, typeof SelectorInputComponent, typeof TextListInputComponent, typeof ChipsInputComponent, typeof CheckboxListInputComponent, typeof ProtocolAddressPortInputComponent, typeof SideNavbarComponent, typeof PasswordInputComponent, typeof TerminatorFormComponent, typeof ConfigurationsPageComponent, typeof ConfigTypesPageComponent, typeof ConfigTypeFormComponent, typeof ListPageHeaderComponent, typeof FilterBarComponent, typeof ListPageFormComponent, typeof IdentitiesPageComponent, typeof EdgeRoutersPageComponent, typeof TransitRoutersPageComponent, typeof DataTableComponent, typeof TableCellSelectComponent, typeof TableColumnSelectComponent, typeof TableCellMenuComponent, typeof TableColumnMenuComponent, typeof TableColumnDefaultComponent, typeof TableColumnFilterComponent, typeof IdentityFormComponent, typeof EdgeRouterFormComponent, typeof TransitRouterFormComponent, typeof HiddenColumnsBarComponent, typeof ConfirmComponent, typeof NoItemsComponent, typeof SideModalComponent, typeof FormHeaderComponent, typeof FormFieldContainerComponent, typeof PreviewListComponent, typeof LoadingIndicatorComponent, typeof FormFieldToggleComponent, typeof JsonViewComponent, typeof TagSelectorComponent, typeof QrCodeComponent, typeof TableCellTokenComponent, typeof OSTooltipComponent, typeof SDKTooltipComponent, typeof OverridesComponent, typeof ResetEnrollmentComponent, typeof IdentityServicePathComponent, typeof NetworkVisualizerComponent, typeof CustomTagsComponent, typeof ServicesPageComponent, typeof ServiceFormComponent, typeof PortRangesComponent, typeof ForwardingConfigComponent, typeof CardListComponent, typeof SimpleServiceComponent, typeof CardComponent, typeof CreationSummaryDialogComponent, typeof ConfigEditorComponent, typeof ServicePoliciesPageComponent, typeof ServicePolicyFormComponent, typeof EdgeRouterPoliciesPageComponent, typeof EdgeRouterPolicyFormComponent, typeof MultiActionButtonComponent, typeof TableCellNameComponent, typeof ServiceEdgeRouterPoliciesPageComponent, typeof ServiceEdgeRouterPolicyFormComponent, typeof TerminatorsPageComponent, typeof ConfigurationFormComponent, typeof JwtSignersPageComponent, typeof JwtSignerFormComponent, typeof AuthPoliciesPageComponent, typeof AuthPolicyFormComponent, typeof PreviewSelectionsComponent, typeof CertificateAuthoritiesPageComponent, typeof CertificateAuthorityFormComponent, typeof VerifyCertificateComponent, typeof LoginDialogComponent, typeof PostureChecksPageComponent, typeof PostureCheckFormComponent, typeof SessionsPageComponent, typeof SessionFormComponent, typeof APISessionsPageComponent, typeof APISessionFormComponent, typeof CallbackComponent, typeof ProgressMeterComponent, typeof ProgressWizardComponent, typeof SettingsComponent, typeof ProfileComponent, typeof GeolocateComponent, typeof MapLegendComponent, typeof EntityCountLegendComponent, typeof CircuitHopsTableComponent, typeof RouterPathTableComponent, typeof GeolocateFilterBarComponent, typeof SidePanelContainerComponent, typeof MarkerPanelComponent, typeof LinkPanelComponent, typeof CircuitPanelComponent, typeof EntityListPanelComponent, typeof UnlocatedPanelComponent, typeof ServicesWithCircuitsPanelComponent, typeof HaStatusIndicatorComponent, typeof AttributesComponent, typeof SideNavigatorComponent, typeof HeaderBarComponent, typeof QuickAddComponent, typeof DateRangeQuickHeaderComponent, typeof FilterSelectComponent, typeof FilterSelectOptionTemplateDirective, typeof FilterSelectTriggerTemplateDirective], [typeof i2.CommonModule, typeof i3.FormsModule, typeof i116.MatDialogModule, typeof i117.MatRadioModule, typeof ZacRoutingModule, typeof i119.MatDatepickerModule, typeof i120.MatNativeDateModule, typeof i121.MatFormFieldModule, typeof i122.MatInputModule, typeof i123.MatSelectModule, typeof i124.MatButtonModule, typeof i125.MatIconModule, typeof i126.OverlayModule, typeof i127.AgGridModule, typeof i128.QRCodeComponent, typeof i129.ClickOutsideModule, typeof i130.NgJsonEditorModule, typeof i131.MatTooltipModule, typeof i132.MatAutocompleteModule, typeof i133.LottieComponent, typeof DateTimePickerComponent], [typeof ExtendableComponent, typeof SideNavbarComponent, typeof StringInputComponent, typeof SelectorInputComponent, typeof PasswordInputComponent, typeof NumberInputComponent, typeof BooleanToggleInputComponent, typeof ObjectComponent, typeof TextListInputComponent, typeof ChipsInputComponent, typeof IdentityServicePathComponent, typeof NetworkVisualizerComponent, typeof CheckboxListInputComponent, typeof ProtocolAddressPortInputComponent, typeof ConfigurationsPageComponent, typeof ConfigurationFormComponent, typeof ConfigTypesPageComponent, typeof ConfigTypeFormComponent, typeof EdgeRouterFormComponent, typeof TransitRouterFormComponent, typeof IdentitiesPageComponent, typeof EdgeRoutersPageComponent, typeof TransitRoutersPageComponent, typeof ServicesPageComponent, typeof ZacRoutingModule, typeof SideModalComponent, typeof IdentityFormComponent, typeof LoadingIndicatorComponent, typeof GrowlerModule, typeof FormFieldContainerComponent, typeof FormFieldToggleComponent, typeof ServiceFormComponent, typeof ServicePoliciesPageComponent, typeof ServicePolicyFormComponent, typeof EdgeRouterPoliciesPageComponent, typeof TerminatorsPageComponent, typeof TerminatorFormComponent, typeof JwtSignersPageComponent, typeof JwtSignerFormComponent, typeof AuthPoliciesPageComponent, typeof AuthPolicyFormComponent, typeof LoginDialogComponent, typeof PostureChecksPageComponent, typeof PostureCheckFormComponent, typeof SessionsPageComponent, typeof SessionFormComponent, typeof APISessionsPageComponent, typeof APISessionFormComponent, typeof CallbackComponent, typeof FormHeaderComponent, typeof JsonViewComponent, typeof PreviewListComponent, typeof TagSelectorComponent, typeof ProgressMeterComponent, typeof ProgressWizardComponent, typeof ConfigEditorComponent, typeof SettingsComponent, typeof ProfileComponent, typeof GeolocateComponent, typeof AttributesComponent, typeof HeaderBarComponent, typeof SideNavigatorComponent, typeof FilterSelectComponent, typeof FilterSelectOptionTemplateDirective, typeof FilterSelectTriggerTemplateDirective]>;
5615
7581
  static ɵinj: i0.ɵɵInjectorDeclaration<OpenZitiConsoleLibModule>;
5616
7582
  }
5617
7583
 
@@ -5652,7 +7618,11 @@ declare class NodeDataService extends ZitiDataService {
5652
7618
  resetPassword(oldPass: any, newPass: any, confirmPass: any): Promise<any>;
5653
7619
  deleteSubdata(entityType: string, id: any, dataType: string, data: any): Promise<any>;
5654
7620
  delete(type: string, id: string): Promise<any>;
5655
- call(url: any): Promise<any>;
7621
+ call(url: any, prefix?: string): Promise<any>;
7622
+ /**
7623
+ * NodeDataService doesn't support HA, so just fall back to regular call()
7624
+ */
7625
+ callHAControllers(url: string, prefix?: string): Promise<any>;
5656
7626
  schema(data: any): Promise<any>;
5657
7627
  private getUrlFilter;
5658
7628
  getAttributeFilter(val: any, columnId: any): string;
@@ -5680,7 +7650,20 @@ declare class ZitiControllerDataService extends ZitiDataService {
5680
7650
  resetMFA(id: any): Promise<Object>;
5681
7651
  resetPassword(oldPass: any, newPass: any, confirmPass: any): Promise<Object>;
5682
7652
  delete(type: string, id: string): Promise<any>;
5683
- call(callUrl: any): Promise<any>;
7653
+ call(callUrl: any, prefix?: any): Promise<any>;
7654
+ /**
7655
+ * Call HA controllers in parallel and merge responses
7656
+ * @param callUrl The API endpoint path
7657
+ * @param prefix The API prefix (e.g., '/fabric/v1')
7658
+ * @returns Promise with merged data and metadata about controller responses
7659
+ */
7660
+ callHAControllers(callUrl: string, prefix?: string): Promise<any>;
7661
+ /**
7662
+ * Merge responses from multiple HA controllers
7663
+ * @param responses Array of response objects from different controllers
7664
+ * @returns Merged response object
7665
+ */
7666
+ private mergeHAResponses;
5684
7667
  private getUrlFilter;
5685
7668
  schema(data: any): Promise<any>;
5686
7669
  dereferenceJSONSchema(data: any): Promise<any>;
@@ -5718,6 +7701,6 @@ declare const ZAC_VERSION: {
5718
7701
  version: string;
5719
7702
  };
5720
7703
 
5721
- export { APISessionFormComponent, APISessionsPageComponent, ApiSessionsPageService, AttributesComponent, AuthPoliciesPageComponent, AuthPoliciesPageService, AuthPolicyFormComponent, AuthPolicyFormService, AuthService, BooleanToggleInputComponent, CallbackComponent, CardListComponent, CertificateAuthoritiesPageComponent, CertificateAuthoritiesPageService, CertificateAuthorityFormComponent, CertificateAuthorityFormService, CheckboxListInputComponent, ChipsInputComponent, ConfigEditorComponent, ConfigTypeFormComponent, ConfigTypesPageComponent, ConfigurationFormComponent, ConfigurationService, ConfigurationsPageComponent, CsvDownloadService, DEACTIVATE_GUARD, DEFAULT_APP_CONFIG, DataTableFilterService, DeactivateGuardService, EDGE_ROUTER_EXTENSION_SERVICE, EDGE_ROUTER_POLICY_EXTENSION_SERVICE, EdgeRouter, EdgeRouterFormComponent, EdgeRouterFormService, EdgeRouterPoliciesPageComponent, EdgeRouterPoliciesPageService, EdgeRouterPolicyFormComponent, EdgeRouterPolicyFormService, EdgeRoutersPageComponent, EdgeRoutersPageService, Entity, ExtendableComponent, ExtensionsNoopService, FilterSelectComponent, FilterSelectOptionTemplateDirective, FilterSelectTriggerTemplateDirective, FormFieldContainerComponent, FormFieldToggleComponent, FormHeaderComponent, GeolocateComponent, GrowlerComponent, GrowlerModel, GrowlerModule, GrowlerService, HeaderBarComponent, IDENTITY_EXTENSION_SERVICE, IdentitiesPageComponent, IdentitiesPageService, Identity$1 as Identity, IdentityFormComponent, IdentityFormService, IdentityServicePathComponent, JsonViewComponent, JwtSignerFormComponent, JwtSignerFormService, JwtSignersPageComponent, JwtSignersPageService, KEY_CODES, ListPageComponent, ListPageServiceClass, LoadingIndicatorComponent, LoggerService, LoginDialogComponent, LoginServiceClass, NetworkVisualizerComponent, NodeDataService, NoopLoginService, NoopTabInterceptorService, NumberInputComponent, ObjectComponent, OpenZitiConsoleLibModule, PasswordInputComponent, PostureCheckFormComponent, PostureChecksPageComponent, PostureChecksPageService, PreviewListComponent, ProfileComponent, ProgressMeterComponent, ProgressMeterStep, ProgressWizardComponent, ProgressWizardStep, ProjectableForm, ProtocolAddressPortInputComponent, QuickAddComponent, ResetEnrollmentService, SERVICE_EDGE_ROUTER_POLICY_EXTENSION_SERVICE, SERVICE_EXTENSION_SERVICE, SERVICE_POLICY_EXTENSION_SERVICE, SETTINGS_SERVICE, SHAREDZ_EXTENSION, SelectorInputComponent, ServiceEdgeRouterPoliciesPageComponent, ServiceEdgeRouterPoliciesPageService, ServiceEdgeRouterPolicyFormComponent, ServiceEdgeRouterPolicyFormService, ServiceFormComponent, ServiceFormService, ServicePoliciesPageComponent, ServicePoliciesPageService, ServicePolicyFormComponent, ServicePolicyFormService, ServicesPageComponent, ServicesPageService, Session, SessionFormComponent, SessionsPageComponent, SessionsPageService, SettingsComponent, SettingsService, SettingsServiceClass, SideModalComponent, SideNavbarComponent, SideNavigatorComponent, SimpleServiceComponent, StringInputComponent, TabNameService, TagSelectorComponent, TerminatorFormComponent, TerminatorFormService, TerminatorsPageComponent, TerminatorsPageService, TextListInputComponent, TransitRouterFormComponent, TransitRouterFormService, TransitRoutersPageComponent, TransitRoutersPageService, ValidationService, VerifyCertificateComponent, VisualizerServiceClass, ZAC_LOGIN_SERVICE, ZAC_VERSION, ZITI_DATA_SERVICE, ZITI_DOMAIN_CONTROLLER, ZITI_NAVIGATOR, ZITI_TAB_OVERRIDES, ZITI_URLS, ZacRoutingModule, ZitiControllerDataService, ZitiDataService, playerFactory };
5722
- export type { CanComponentDeactivate, ExtensionService, FilterObj, TabInterceptorService, ZitiDomainControllerService, ZitiSessionData };
7704
+ export { APISessionFormComponent, APISessionsPageComponent, ApiSessionsPageService, AttributesComponent, AuthPoliciesPageComponent, AuthPoliciesPageService, AuthPolicyFormComponent, AuthPolicyFormService, AuthService, BooleanToggleInputComponent, CallbackComponent, CardListComponent, CertificateAuthoritiesPageComponent, CertificateAuthoritiesPageService, CertificateAuthorityFormComponent, CertificateAuthorityFormService, CheckboxListInputComponent, ChipsInputComponent, ConfigEditorComponent, ConfigTypeFormComponent, ConfigTypesPageComponent, ConfigurationFormComponent, ConfigurationService, ConfigurationsPageComponent, CsvDownloadService, DEACTIVATE_GUARD, DEFAULT_APP_CONFIG, DataTableFilterService, DeactivateGuardService, EDGE_ROUTER_EXTENSION_SERVICE, EDGE_ROUTER_POLICY_EXTENSION_SERVICE, EdgeRouter, EdgeRouterFormComponent, EdgeRouterFormService, EdgeRouterPoliciesPageComponent, EdgeRouterPoliciesPageService, EdgeRouterPolicyFormComponent, EdgeRouterPolicyFormService, EdgeRoutersPageComponent, EdgeRoutersPageService, Entity, ExtendableComponent, ExtensionsNoopService, FilterSelectComponent, FilterSelectOptionTemplateDirective, FilterSelectTriggerTemplateDirective, FormFieldContainerComponent, FormFieldToggleComponent, FormHeaderComponent, GeolocateComponent, GrowlerComponent, GrowlerModel, GrowlerModule, GrowlerService, HAControllerService, HaStatusIndicatorComponent, HeaderBarComponent, IDENTITY_EXTENSION_SERVICE, IdentitiesPageComponent, IdentitiesPageService, Identity$1 as Identity, IdentityFormComponent, IdentityFormService, IdentityServicePathComponent, JsonViewComponent, JwtSignerFormComponent, JwtSignerFormService, JwtSignersPageComponent, JwtSignersPageService, KEY_CODES, ListPageComponent, ListPageServiceClass, LoadingIndicatorComponent, LoggerService, LoginDialogComponent, LoginServiceClass, NetworkVisualizerComponent, NodeDataService, NoopLoginService, NoopTabInterceptorService, NumberInputComponent, ObjectComponent, OpenZitiConsoleLibModule, PasswordInputComponent, PostureCheckFormComponent, PostureChecksPageComponent, PostureChecksPageService, PreviewListComponent, ProfileComponent, ProgressMeterComponent, ProgressMeterStep, ProgressWizardComponent, ProgressWizardStep, ProjectableForm, ProtocolAddressPortInputComponent, QuickAddComponent, ResetEnrollmentService, SERVICE_EDGE_ROUTER_POLICY_EXTENSION_SERVICE, SERVICE_EXTENSION_SERVICE, SERVICE_POLICY_EXTENSION_SERVICE, SETTINGS_SERVICE, SHAREDZ_EXTENSION, SelectorInputComponent, ServiceEdgeRouterPoliciesPageComponent, ServiceEdgeRouterPoliciesPageService, ServiceEdgeRouterPolicyFormComponent, ServiceEdgeRouterPolicyFormService, ServiceFormComponent, ServiceFormService, ServicePoliciesPageComponent, ServicePoliciesPageService, ServicePolicyFormComponent, ServicePolicyFormService, ServicesPageComponent, ServicesPageService, Session, SessionFormComponent, SessionsPageComponent, SessionsPageService, SettingsComponent, SettingsService, SettingsServiceClass, SideModalComponent, SideNavbarComponent, SideNavigatorComponent, SimpleServiceComponent, StringInputComponent, TabNameService, TagSelectorComponent, TerminatorFormComponent, TerminatorFormService, TerminatorsPageComponent, TerminatorsPageService, TextListInputComponent, TransitRouterFormComponent, TransitRouterFormService, TransitRoutersPageComponent, TransitRoutersPageService, ValidationService, VerifyCertificateComponent, VisualizerServiceClass, ZAC_LOGIN_SERVICE, ZAC_VERSION, ZITI_DATA_SERVICE, ZITI_DOMAIN_CONTROLLER, ZITI_NAVIGATOR, ZITI_TAB_OVERRIDES, ZITI_URLS, ZacRoutingModule, ZitiControllerDataService, ZitiDataService, playerFactory };
7705
+ export type { CanComponentDeactivate, ExtensionEvent, ExtensionEventType, ExtensionService, FilterObj, HAClusterStatus, HAController, TabInterceptorService, ZitiDomainControllerService, ZitiSessionData };
5723
7706
  //# sourceMappingURL=index.d.ts.map