import { OnDestroy } from '@angular/core';
import { Observable } from 'rxjs';
import * as i0 from "@angular/core";
export type ActionViewMode = 'card' | 'list' | 'compact';
export type SortField = 'name' | 'updated' | 'status' | 'type' | 'category';
export type SortDirection = 'asc' | 'desc';
export interface SortConfig {
    field: SortField;
    direction: SortDirection;
}
export interface ActionFilters {
    searchTerm: string;
    statuses: string[];
    types: string[];
    approvalStatuses: string[];
    hasExecutions: boolean | null;
}
export interface ActionExplorerState {
    treeWidth: number;
    treeCollapsed: boolean;
    viewMode: ActionViewMode;
    sortConfig: SortConfig;
    expandedCategories: string[];
    selectedCategoryId: string;
    filters: ActionFilters;
}
export declare class ActionExplorerStateService implements OnDestroy {
    private _treeWidth$;
    private _treeCollapsed$;
    private _viewMode$;
    private _sortConfig$;
    private _expandedCategories$;
    private _selectedCategoryId$;
    private _filters$;
    private _newCategoryPanelOpen$;
    private _newActionPanelOpen$;
    private _persistState$;
    private _destroy$;
    readonly TreeWidth$: Observable<number>;
    readonly TreeCollapsed$: Observable<boolean>;
    readonly ViewMode$: Observable<ActionViewMode>;
    readonly SortConfig$: Observable<SortConfig>;
    readonly ExpandedCategories$: Observable<Set<string>>;
    readonly SelectedCategoryId$: Observable<string>;
    readonly Filters$: Observable<ActionFilters>;
    readonly NewCategoryPanelOpen$: Observable<boolean>;
    readonly NewActionPanelOpen$: Observable<boolean>;
    get TreeWidth(): number;
    get TreeCollapsed(): boolean;
    get ViewMode(): ActionViewMode;
    get SortConfig(): SortConfig;
    get ExpandedCategories(): Set<string>;
    get SelectedCategoryId(): string;
    get Filters(): ActionFilters;
    readonly TreeWidthMin = 180;
    readonly TreeWidthMax = 450;
    readonly TreeCollapsedWidth = 0;
    constructor();
    ngOnDestroy(): void;
    private setupPersistence;
    /**
     * Load saved state from UserInfoEngine
     */
    loadSavedState(): Promise<void>;
    /**
     * Save current state to UserInfoEngine
     */
    private saveState;
    private queuePersist;
    setTreeWidth(width: number): void;
    setTreeCollapsed(collapsed: boolean): void;
    toggleTreeCollapsed(): void;
    setViewMode(mode: ActionViewMode): void;
    setSortConfig(config: SortConfig): void;
    toggleSortDirection(): void;
    setSortField(field: SortField): void;
    toggleCategoryExpanded(categoryId: string): void;
    setCategoryExpanded(categoryId: string, isExpanded: boolean): void;
    expandPathToCategory(categoryId: string, categoryParentMap: Map<string, string | null>): void;
    collapseAllCategories(): void;
    expandAllCategories(categoryIds: string[]): void;
    setSelectedCategoryId(categoryId: string): void;
    setFilters(filters: Partial<ActionFilters>): void;
    setSearchTerm(searchTerm: string): void;
    setStatusFilter(statuses: string[]): void;
    setTypeFilter(types: string[]): void;
    clearFilters(): void;
    hasActiveFilters(): boolean;
    openNewCategoryPanel(): void;
    closeNewCategoryPanel(): void;
    openNewActionPanel(): void;
    closeNewActionPanel(): void;
    /**
     * Build URL query params from current state for deep linking
     */
    buildQueryParams(): Record<string, string | null>;
    /**
     * Parse URL query params and update state
     */
    parseQueryParams(params: URLSearchParams): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<ActionExplorerStateService, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<ActionExplorerStateService>;
}
//# sourceMappingURL=action-explorer-state.service.d.ts.map