import { OnDestroy, OnInit } from '@angular/core';
import { Subject } from 'rxjs';
import { KeyValue } from '@angular/common';
import { EditableClausePredicateWithGenerators } from '../models/predicate/editable-clause-predicate-with-generators';
import { PredicateWithGenerator } from '../models/predicate/predicate-with-generator';
import * as i0 from "@angular/core";
/**
 * Is responsible for the interactive creation of an OR {@link ClausePredicate} object instance.
 * The nested Predicates are {@link ElementaryPredicate} instances created by {@link AbstractSearchPredicateComponent}.
 */
export declare abstract class AbstractSearchClauseComponent implements OnInit, OnDestroy {
    /**
     * Whether the contents displayed in this component can be edited by the user or not.
     *
     * Defaults to `true`
     */
    editable: boolean;
    predicate: EditableClausePredicateWithGenerators;
    predicateId: number;
    remove$: Subject<number>;
    removeChild$: Subject<number>;
    protected constructor();
    ngOnInit(): void;
    ngOnDestroy(): void;
    trackByPredicates: (a: number, b: KeyValue<number, PredicateWithGenerator>) => PredicateWithGenerator;
    getPredicateMap(): Map<number, PredicateWithGenerator>;
    removeChildAt(id: number): void;
    addChildPredicate(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<AbstractSearchClauseComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<AbstractSearchClauseComponent, "ncc-abstract-search-clause", never, { "editable": { "alias": "editable"; "required": false; }; "predicate": { "alias": "predicate"; "required": false; }; "predicateId": { "alias": "predicateId"; "required": false; }; "remove$": { "alias": "remove$"; "required": false; }; }, {}, never, never, false, never>;
}
