import { EventEmitter } from '@angular/core';
import { EntityInfo, CompositeKey } from '@memberjunction/core';
import { RecentItem, FavoriteItem, AppEntityGroup } from '../../models/explorer-state.interface';
import * as i0 from "@angular/core";
/**
 * Event emitted when a record should be opened in a full tab
 */
export interface OpenRecordEvent {
    entityName: string;
    compositeKey: CompositeKey;
}
/**
 * Event emitted when a record should be selected within Data Explorer (not full tab)
 */
export interface SelectRecordEvent {
    entityName: string;
    recordId: string;
}
export declare class NavigationPanelComponent {
    entities: EntityInfo[];
    selectedEntityName: string | null;
    favorites: FavoriteItem[];
    recentItems: RecentItem[];
    collapsed: boolean;
    /**
     * Optional set of allowed entity names for filtering favorites/recents.
     * If provided, only items matching these entities will be shown.
     */
    allowedEntityNames: Set<string> | null;
    /** Application-based entity groups from the parent dashboard */
    appEntityGroups: AppEntityGroup[];
    favoritesSectionExpanded: boolean;
    recentSectionExpanded: boolean;
    entitiesSectionExpanded: boolean;
    viewsSectionExpanded: boolean;
    entitySelected: EventEmitter<EntityInfo>;
    toggleCollapse: EventEmitter<void>;
    sectionToggled: EventEmitter<"entities" | "views" | "favorites" | "recent">;
    openRecord: EventEmitter<OpenRecordEvent>;
    /** Emitted when a record should be selected within Data Explorer (navigate to entity + select record) */
    selectRecord: EventEmitter<SelectRecordEvent>;
    /** Emitted when a collapsed icon is clicked - expands panel and focuses section */
    expandAndFocus: EventEmitter<"entities" | "favorites" | "recent">;
    /** Emitted when a nav panel app group is toggled */
    appGroupToggled: EventEmitter<string>;
    private metadata;
    entitySearchTerm: string;
    private navGroupExpanded;
    /**
     * Whether to show grouped entity view (when groups are available)
     */
    get hasAppGroups(): boolean;
    /**
     * Get filtered entities based on search term (used in flat/ungrouped mode)
     */
    get filteredEntities(): EntityInfo[];
    /**
     * Get app entity groups filtered by search term
     * Auto-expands groups when searching to show matches
     */
    get filteredNavGroups(): AppEntityGroup[];
    /**
     * Check if a nav panel group is expanded
     */
    isNavGroupExpanded(groupId: string): boolean;
    /**
     * Toggle a nav panel group expand/collapse
     */
    onNavGroupToggle(groupId: string): void;
    /**
     * Get recent items filtered by allowed entities (if filter is active)
     */
    get filteredRecentItems(): RecentItem[];
    /**
     * Get favorites filtered to records only (respecting entity filter)
     */
    get favoriteRecords(): FavoriteItem[];
    /**
     * Get favorites filtered to entities only (respecting entity filter)
     */
    get favoriteEntities(): FavoriteItem[];
    /**
     * Handle entity click
     */
    onEntityClick(entity: EntityInfo): void;
    /**
     * Handle favorite click - navigates to entity and selects record within Data Explorer
     */
    onFavoriteClick(favorite: FavoriteItem): void;
    /**
     * Handle recent item click - navigates to entity and selects record within Data Explorer
     */
    onRecentClick(item: RecentItem): void;
    /**
     * Handle section header click
     */
    onSectionToggle(section: 'favorites' | 'recent' | 'entities' | 'views'): void;
    /**
     * Handle collapse toggle
     */
    onToggleCollapse(): void;
    /**
     * Handle collapsed icon click - expands panel and focuses section
     */
    onCollapsedIconClick(section: 'favorites' | 'recent' | 'entities'): void;
    /**
     * Check if entity is selected
     */
    isEntitySelected(entity: EntityInfo): boolean;
    /**
     * Get icon for entity
     */
    getEntityIcon(entity: EntityInfo): string;
    /**
     * Format recent item timestamp
     */
    formatTimestamp(timestamp: Date): string;
    /**
     * Get icon for a recent item based on its entity
     */
    getRecentItemIcon(item: RecentItem): string;
    /**
     * Get icon for a favorite item based on its type and entity
     */
    getFavoriteIcon(favorite: FavoriteItem): string;
    static ɵfac: i0.ɵɵFactoryDeclaration<NavigationPanelComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<NavigationPanelComponent, "mj-explorer-navigation-panel", never, { "entities": { "alias": "entities"; "required": false; }; "selectedEntityName": { "alias": "selectedEntityName"; "required": false; }; "favorites": { "alias": "favorites"; "required": false; }; "recentItems": { "alias": "recentItems"; "required": false; }; "collapsed": { "alias": "collapsed"; "required": false; }; "allowedEntityNames": { "alias": "allowedEntityNames"; "required": false; }; "appEntityGroups": { "alias": "appEntityGroups"; "required": false; }; "favoritesSectionExpanded": { "alias": "favoritesSectionExpanded"; "required": false; }; "recentSectionExpanded": { "alias": "recentSectionExpanded"; "required": false; }; "entitiesSectionExpanded": { "alias": "entitiesSectionExpanded"; "required": false; }; "viewsSectionExpanded": { "alias": "viewsSectionExpanded"; "required": false; }; }, { "entitySelected": "entitySelected"; "toggleCollapse": "toggleCollapse"; "sectionToggled": "sectionToggled"; "openRecord": "openRecord"; "selectRecord": "selectRecord"; "expandAndFocus": "expandAndFocus"; "appGroupToggled": "appGroupToggled"; }, never, never, false, never>;
}
//# sourceMappingURL=navigation-panel.component.d.ts.map