/**
 * @fileoverview Knowledge Hub "Visualize" Resource (host surface)
 *
 * Phase 5 host surface that replaces the standalone "Clusters" tab. It hosts two
 * visualization modes behind an internal segmented control:
 *   - "Clusters"  — the existing cluster scatter visualization (embedded child).
 *   - "Tag Cloud" — a weighted tag cloud driven by TagCloudEngine.
 *
 * Both modes feed ONE shared record-drilldown panel:
 *   - cluster point selection  → a single record opened/listed.
 *   - tag-cloud word selection → the records carrying that tag (via RunView).
 *
 * The host owns the resource lifecycle (NotifyLoadComplete), agent context
 * (ActiveVisualizationMode), and all navigation — the embedded children emit
 * open-record intents up to here.
 */
import { OnDestroy, AfterViewInit } from '@angular/core';
import { Subject } from 'rxjs';
import { ResourceData } from '@memberjunction/core-entities';
import { BaseResourceComponent, NavigationService } from '@memberjunction/ng-shared';
import { TagCloudComponent, TagCloudSelection } from './tag-cloud/tag-cloud.component';
import { DrilldownRecord, DrilldownOpenRequest } from './record-drilldown/record-drilldown.component';
import * as i0 from "@angular/core";
/** Visualization modes hosted by this surface. */
export type VisualizationMode = 'clusters' | 'tagcloud';
interface ModeOption {
    ID: VisualizationMode;
    Label: string;
    Icon: string;
}
export declare class VisualizeResourceComponent extends BaseResourceComponent implements AfterViewInit, OnDestroy {
    tagCloud?: TagCloudComponent;
    private cdr;
    protected navigationService: NavigationService;
    protected destroy$: Subject<void>;
    GetResourceDisplayName(_data: ResourceData): Promise<string>;
    GetResourceIconClass(_data: ResourceData): Promise<string>;
    Modes: ModeOption[];
    ActiveMode: VisualizationMode;
    DrilldownVisible: boolean;
    DrilldownTitle: string;
    DrilldownSubtitle: string;
    DrilldownIcon: string;
    DrilldownLoading: boolean;
    DrilldownRecords: DrilldownRecord[];
    /** Current preference key for the active mode. */
    private static readonly PREFS_KEY;
    /** Legacy key (pre-rename) — read for back-compat only. */
    private static readonly LEGACY_PREFS_KEY;
    ngAfterViewInit(): Promise<void>;
    ngOnDestroy(): void;
    SelectMode(mode: VisualizationMode): void;
    IsActiveMode(mode: VisualizationMode): boolean;
    TrackByMode(_index: number, mode: ModeOption): string;
    /** Cluster mode: open the underlying entity record directly. */
    OnClusterOpenRecord(request: {
        EntityName: string;
        RecordID: string;
    }): void;
    /** Tag-cloud mode: list the records carrying the clicked tag in the drilldown. */
    OnTagSelected(selection: TagCloudSelection): Promise<void>;
    /** Drilldown open-record intent (from the shared panel). */
    OnDrilldownOpenRecord(request: DrilldownOpenRequest): void;
    CloseDrilldown(): void;
    /**
     * Load the content-item records carrying a given tag, scoped to the same
     * content-source / content-type the cloud was built with. Each returned row
     * is a `MJ: Content Items` record the user can open.
     */
    private loadRecordsForTag;
    /** Build the `MJ: Content Items` filter: ID IN (...) plus optional scope. */
    private buildItemFilter;
    /** Open an entity record via NavigationService (single navigation path). */
    private openEntityRecord;
    private emitAgentContext;
    private registerAgentTools;
    private persistModePreference;
    private loadModePreference;
    static ɵfac: i0.ɵɵFactoryDeclaration<VisualizeResourceComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<VisualizeResourceComponent, "app-visualize-resource", never, {}, {}, never, never, false, never>;
}
/** Tree-shaking prevention */
export declare function LoadVisualizeResource(): void;
export {};
//# sourceMappingURL=visualize-resource.component.d.ts.map