import { AfterViewInit, EventEmitter, Injector, OnDestroy, OnInit } from '@angular/core';
import { ActivatedRoute, Router } from '@angular/router';
import { Subscription } from 'rxjs';
import { OFormComponent } from '../../components/form/o-form.component';
import { IFilterBuilderCmpTarget } from '../../interfaces/filter-builder-component-target.interface';
import { IServiceDataComponent } from '../../interfaces/service-data-component.interface';
import { LocalStorageService } from '../../services/local-storage.service';
import { OFilterBuilderComponentStateClass } from '../../services/state/o-filter-builder-component-state.class';
import { OFilterBuilderComponentStateService } from '../../services/state/o-filter-builder-component-state.service';
import { BasicExpression } from '../../types/basic-expression.type';
import { Expression } from '../../types/expression.type';
import { OFilterBuilderValues } from '../../types/o-filter-builder-values.type';
import { CHANGE_EVENTS } from '../../util/codes';
import { OFilterDefinition } from '../../types/o-filter-definition.type';
import * as i0 from "@angular/core";
export declare const DEFAULT_INPUTS_O_FILTER_BUILDER: string[];
export declare const DEFAULT_OUTPUTS_O_FILTER_BUILDER: string[];
export declare class OFilterBuilderComponent implements AfterViewInit, OnDestroy, OnInit {
    protected injector: Injector;
    form: OFormComponent;
    onFilter: EventEmitter<any>;
    onClear: EventEmitter<any>;
    filters: string;
    targetCmp: IServiceDataComponent;
    expressionBuilder: (values: Array<{
        attr: any;
        value: any;
    }>) => Expression;
    queryOnChange: boolean;
    queryOnChangeDelay: number;
    queryOnChangeEventType: CHANGE_EVENTS;
    protected filterComponents: Array<IFilterBuilderCmpTarget>;
    protected subscriptions: Subscription;
    oattr: string;
    protected componentStateService: OFilterBuilderComponentStateService;
    protected localStorageService: LocalStorageService;
    protected router: Router;
    protected actRoute: ActivatedRoute;
    constructor(injector: Injector, form: OFormComponent);
    ngOnInit(): void;
    ngAfterViewInit(): void;
    ngOnDestroy(): void;
    initialize(): void;
    initializeListeners(): void;
    private getEventFromFormComponent;
    getExpression(): Expression;
    getBasicExpression(): BasicExpression;
    getTargetComponent(): IServiceDataComponent;
    triggerReload(): void;
    clearFilter(): void;
    getFilterValues(): OFilterBuilderValues[];
    setFilterValues(filterBuilderValues: OFilterBuilderValues[]): void;
    protected getFilterAttrs(): Array<string>;
    get state(): OFilterBuilderComponentStateClass;
    getDataToStore(): OFilterBuilderComponentStateClass;
    getComponentKey(): string;
    storeFilterInState(arg: OFilterDefinition): void;
    updateStateStorage(): void;
    getRouteKey(): string;
    static ɵfac: i0.ɵɵFactoryDeclaration<OFilterBuilderComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<OFilterBuilderComponent, "o-filter-builder", never, { "filters": { "alias": "filters"; "required": false; }; "targetCmp": { "alias": "target"; "required": false; }; "expressionBuilder": { "alias": "expression-builder"; "required": false; }; "queryOnChange": { "alias": "query-on-change"; "required": false; }; "queryOnChangeDelay": { "alias": "query-on-change-delay"; "required": false; }; "queryOnChangeEventType": { "alias": "query-on-change-event-type"; "required": false; }; "oattr": { "alias": "attr"; "required": false; }; }, { "onFilter": "onFilter"; "onClear": "onClear"; }, never, never, true, never>;
}
