import { SearchService } from '../search-service/search.service';
import { LoggerService } from '../../logger/services/logger.service';
import { DialogService } from '../../dialog/services/dialog.service';
import { TranslateService } from '@ngx-translate/core';
import { EventEmitter, OnInit, Type } from '@angular/core';
import { SearchComponentConfiguration } from '../models/component-configuration/search-component-configuration';
import { SearchMode } from '../models/component-configuration/search-mode';
import { UserFiltersService } from '../../filter/user-filters.service';
import { AllowedNetsService } from '../../allowed-nets/services/allowed-nets.service';
import { Category } from '../models/category/category';
import { SavedFilterMetadata } from '../models/persistance/saved-filter-metadata';
import { ViewIdService } from '../../user/services/view-id.service';
import { Filter } from '../../filter/models/filter';
import { TaskSetDataRequestFields } from '../../resources/interface/task-set-data-request-body';
import { DataGroup } from '../../resources/interface/data-groups';
import * as i0 from "@angular/core";
/**
 * A universal search component that can be used to interactively create search predicates for anything with supported categories.
 *
 * This component is responsible for the interactive creation of an AND {@link ClausePredicate} object instance.
 * The nested Predicates are OR {@link ClausePredicate} instances created by {@link AbstractSearchClauseComponent}.
 *
 * Search categories must be provided by the {@link NAE_SEARCH_CATEGORIES} injection token.
 * Default factory methods for [task]{@link defaultTaskSearchCategoriesFactory} and
 * [case]{@link defaultCaseSearchCategoriesFactory} search categories exist. See their documentation for more information.
 *
 * The search component's visuals can be configured either by the {@link NAE_SEARCH_COMPONENT_CONFIGURATION} injection token,
 * or by the appropriate component inputs. The injection token configuration takes precedence over the inputs if both are present.
 */
export declare abstract class AbstractSearchComponent implements SearchComponentConfiguration, OnInit {
    protected _searchService: SearchService;
    protected _logger: LoggerService;
    protected _dialogService: DialogService;
    protected _translate: TranslateService;
    protected _userFilterService: UserFiltersService;
    protected _allowedNetsService: AllowedNetsService;
    protected _viewIdService: ViewIdService;
    protected _searchCategories: Array<Type<Category<any>>>;
    protected _configuration: SearchComponentConfiguration;
    protected _filtersFilter: Filter;
    protected _navigationItemTaskData: Array<DataGroup>;
    advancedSearchDisplayed: any;
    private _showSearchIcon;
    private _showSearchToggleButton;
    private _showAdvancedSearchHelp;
    private _showSaveFilterButton;
    private _showLoadFilterButton;
    private _initialSearchMode;
    disabled: boolean;
    /**
     * Set data request body, that is sent to the filter in addition to the default body.
     * The default body is applied first and can be overridden by this argument.
     */
    additionalFilterData: TaskSetDataRequestFields;
    /**
     * The emitted data contains the filter case object
     */
    filterLoaded: EventEmitter<SavedFilterMetadata>;
    /**
     * The emitted data contains only the saved case's ID
     */
    filterSaved: EventEmitter<SavedFilterMetadata>;
    protected constructor(_searchService: SearchService, _logger: LoggerService, _dialogService: DialogService, _translate: TranslateService, _userFilterService: UserFiltersService, _allowedNetsService: AllowedNetsService, _viewIdService: ViewIdService, _searchCategories: Array<Type<Category<any>>>, _configuration: SearchComponentConfiguration, _filtersFilter?: Filter, _navigationItemTaskData?: Array<DataGroup>);
    ngOnInit(): void;
    get showSearchIcon(): boolean;
    set showSearchIcon(value: boolean);
    get showAdvancedSearchHelp(): boolean;
    set showAdvancedSearchHelp(value: boolean);
    get showSaveFilterButton(): boolean;
    set showSaveFilterButton(value: boolean);
    get showLoadFilterButton(): boolean;
    set showLoadFilterButton(value: boolean);
    get initialSearchMode(): SearchMode;
    set initialSearchMode(value: SearchMode);
    get showSearchToggleButton(): boolean;
    set showSearchToggleButton(value: boolean);
    hasPredicates(): boolean;
    toggleSearchMode(): void;
    showHelp(): void;
    /**
     * The saved filter data are emitted into the [filterSaved]{@link AbstractSearchComponent#filterSaved} `EventEmitter`
     */
    saveFilter(): void;
    /**
     * The loaded filter data are emitted into the [filterLoaded]{@link AbstractSearchComponent#filterLoaded} `EventEmitter`
     */
    loadFilter(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<AbstractSearchComponent, [null, null, null, null, null, null, null, null, { optional: true; }, { optional: true; }, { optional: true; }]>;
    static ɵcmp: i0.ɵɵComponentDeclaration<AbstractSearchComponent, "ncc-abstract-search", never, { "disabled": { "alias": "disabled"; "required": false; }; "additionalFilterData": { "alias": "additionalFilterData"; "required": false; }; "showSearchIcon": { "alias": "showSearchIcon"; "required": false; }; "showAdvancedSearchHelp": { "alias": "showAdvancedSearchHelp"; "required": false; }; "showSaveFilterButton": { "alias": "showSaveFilterButton"; "required": false; }; "showLoadFilterButton": { "alias": "showLoadFilterButton"; "required": false; }; "initialSearchMode": { "alias": "initialSearchMode"; "required": false; }; "showSearchToggleButton": { "alias": "showSearchToggleButton"; "required": false; }; }, { "filterLoaded": "filterLoaded"; "filterSaved": "filterSaved"; }, never, never, false, never>;
}
