import { OnChanges, SimpleChanges, ElementRef } from '@angular/core';
import { Params } from '@angular/router';
import { BaseManagedDataWidget } from '../../BaseManagedDataWidget/BaseManagedDataWidget.component';
import { NameValue } from '../../../../interfaces/WidgetInterfaces';
import { GroupedKey } from '../../../../interfaces/DisplayInterfaces';
import { DisplayStateService } from '../../../../services/DisplayStateService';
import { AppStateService } from '../../../../services/AppStateService';
import { WebPlatformApiService } from '../../../../services/WebPlatformApiService';
import { ClientSettingsService } from '../../../../services/ClientSettingsService';
export declare class GenericGroupedDataSideNavComponent extends BaseManagedDataWidget implements OnChanges {
    protected element: ElementRef;
    protected clientSettingsService: ClientSettingsService;
    protected displayStateService: DisplayStateService;
    protected appStateService: AppStateService;
    protected webPlatformApiService: WebPlatformApiService;
    GroupedKeyList: GroupedKey[];
    GroupedDataSideNavConfig: GroupedDataSideNavConfig;
    displayedGroupedKeys: GroupedKey[];
    levelsBelow: number;
    selectedContext: string;
    filter: string;
    ready: boolean;
    toggleState: string;
    selectionContextParam: NameValue;
    constructor(element: ElementRef, clientSettingsService: ClientSettingsService, displayStateService: DisplayStateService, appStateService: AppStateService, webPlatformApiService: WebPlatformApiService);
    ngOnChanges(changes: SimpleChanges): void;
    onStateChanged(event: string): void;
    onInitialize(): void;
    UpsertSelectionContextParameter(): void;
    onFilterChange(newValue: string): void;
    onSelectionContextChanged(): void;
    onContextChanged(currentContext: Params): void;
    onFiltersChanged(currentFilters: Params): void;
    onSortsChanged(currentSorts: Params): void;
    RequestData(): void;
    PostProcessing(): void;
    private buildGroupedKeysForActive();
    expand(open: boolean): void;
    FilterGroupedKeyList(gkArray: GroupedKey[]): void;
    private _filterGKArray(gkArray, filter, showall, parentVisible, leaveHiddenIfHidden);
}
export declare class GroupedDataSideNavConfig {
    permanentContext: NameValue[];
    selectionContext?: SelectionContext;
    groupBy: string[];
    leafContext: string[];
}
export declare class SelectionContext {
    name: string;
    selection: string[];
}
