import { ChangeDetectorRef, EventEmitter } from '@angular/core';
import { BehaviorSubject } from 'rxjs';
import { KbqFilter, KbqPipe, KbqPipeTemplate } from './filter-bar.types';
import { KbqFilterReset } from './filter-reset';
import { KbqFilters } from './filters';
import * as i0 from "@angular/core";
export declare class KbqFilterBar {
    /** @docs-private */
    protected readonly changeDetectorRef: ChangeDetectorRef;
    /** @docs-private */
    protected readonly localeService: import("@koobiq/components/core").KbqLocaleService | null;
    readonly externalConfiguration: unknown;
    configuration: any;
    /** @docs-private */
    filters: KbqFilters;
    /** @docs-private */
    filterReset: KbqFilterReset;
    /**
     * This is special logic that unselect all items when all selected because "all selected = nothing selected".
     * Default is true
     * */
    selectedAllEqualsSelectedNothing: boolean;
    /** Filter that is currently selected */
    get filter(): KbqFilter | null;
    set filter(value: KbqFilter | null);
    private _filter;
    /** An array of templates that are used when adding a pipe. Also contains lists of options to select (values). */
    get pipeTemplates(): KbqPipeTemplate[];
    set pipeTemplates(value: KbqPipeTemplate[]);
    private _templates;
    /**
     * Event that emits whenever the raw value of the filter changes. This is here primarily
     * to facilitate the two-way binding for the `filter` input.
     * @docs-private
     */
    readonly filterChange: EventEmitter<KbqFilter | null>;
    /** Event that emits whenever the value of the pipe changes. */
    readonly onChangePipe: EventEmitter<KbqPipe>;
    /** Event that emits whenever the pipe deleted. */
    readonly onRemovePipe: EventEmitter<KbqPipe>;
    /** Event that emits whenever the pipe cleared. */
    readonly onClearPipe: EventEmitter<KbqPipe>;
    /** Event that emits whenever the select or multiselect pipe closed. */
    readonly onClosePipe: EventEmitter<KbqPipe>;
    /** Whether the current filter is saved and changed */
    get isSavedAndChanged(): boolean;
    /** Whether the current filter is saved */
    get isSaved(): boolean;
    /** Whether the current filter is changed */
    get isChanged(): boolean;
    /** Whether the current filter is readonly */
    get isReadOnly(): boolean;
    /** Whether the current filter is disabled */
    get isDisabled(): boolean;
    private savedFilter;
    /** Event that emits whenever the filter is reset. */
    readonly onResetFilter: BehaviorSubject<boolean>;
    /** all changes */
    readonly changes: BehaviorSubject<void>;
    /** internal filter changes */
    readonly internalFilterChanges: BehaviorSubject<KbqFilter | null>;
    /** internal changes in templates */
    readonly internalTemplatesChanges: BehaviorSubject<KbqPipeTemplate[] | null>;
    /** this subject need for opens pipe after adding
     * @docs-private */
    readonly openPipe: BehaviorSubject<string | number | null>;
    constructor();
    /** Remove pipe from current filter and emit event */
    removePipe(pipe: KbqPipe): void;
    /** Save current state of filter */
    saveFilterState(filter?: KbqFilter): void;
    /** Restore previously saved filter state */
    restoreFilterState(filter?: KbqFilter): void;
    /** Set the filter state "changed" to false */
    resetFilterChangedState(): void;
    private updateLocaleParams;
    private initDefaultParams;
    static ɵfac: i0.ɵɵFactoryDeclaration<KbqFilterBar, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<KbqFilterBar, "kbq-filter-bar, [kbq-filter-bar]", never, { "selectedAllEqualsSelectedNothing": { "alias": "selectedAllEqualsSelectedNothing"; "required": false; }; "filter": { "alias": "filter"; "required": false; }; "pipeTemplates": { "alias": "pipeTemplates"; "required": false; }; }, { "filterChange": "filterChange"; "onChangePipe": "onChangePipe"; "onRemovePipe": "onRemovePipe"; "onClearPipe": "onClearPipe"; "onClosePipe": "onClosePipe"; }, ["filters", "filterReset"], ["kbq-filters", "*", "kbq-pipe-add", "kbq-filter-reset", "kbq-filter-search, [kbq-filter-search]", "kbq-filter-refresher, [kbq-filter-refresher]"], true, never>;
    static ngAcceptInputType_selectedAllEqualsSelectedNothing: unknown;
}
