import { EditableClausePredicateWithGenerators } from '../models/predicate/editable-clause-predicate-with-generators';
import { SearchService } from '../search-service/search.service';
import { KeyValue } from '@angular/common';
import { EditablePredicate } from '../models/predicate/editable-predicate';
import { Subject } from 'rxjs';
import { AfterViewInit, OnDestroy } from '@angular/core';
import { AdvancedSearchComponentInitializationService } from '../advanced-search-component-initialization-service/advanced-search-component-initialization.service';
import * as i0 from "@angular/core";
export declare abstract class AbstractAdvancedSearchComponent implements AfterViewInit, OnDestroy {
    protected _searchService: SearchService;
    protected _initializationService: AdvancedSearchComponentInitializationService;
    /**
     * Whether the contents displayed in this component can be edited by the user or not.
     *
     * Defaults to `true`
     */
    editable: boolean;
    removeChild$: Subject<number>;
    protected constructor(_searchService: SearchService, _initializationService: AdvancedSearchComponentInitializationService);
    ngAfterViewInit(): void;
    ngOnDestroy(): void;
    trackByPredicates: (a: number, b: KeyValue<number, EditablePredicate>) => EditablePredicate;
    getPredicateMap(): Map<number, EditableClausePredicateWithGenerators>;
    addChildPredicate(): void;
    protected _removeChildAt(id: number): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<AbstractAdvancedSearchComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<AbstractAdvancedSearchComponent, "ncc-abstract-advanced-search", never, { "editable": { "alias": "editable"; "required": false; }; }, {}, never, never, false, never>;
}
