import { CommonFilterService } from './common-filter/common-filter.service';
import { FiltersService } from './filters.service';
import { IAxFilter } from './../enlighten-lib/filters/iax-filter';
import { FilterType } from './../enlighten-lib/filters/condition-type';
import { EventEmitter, OnInit, QueryList, OnChanges, SimpleChanges, ElementRef } from '@angular/core';
import { AxFilter } from '../enlighten-lib/filters/ax-filter';
import { MatMenuTrigger } from '@angular/material/menu';
import { FilterCategory } from '../enlighten-lib/filters/filter-category';
import { MultiSelectFilterService } from './multi-select-filter/multi-select-filter.service';
import { FilterSourceElementType } from '../enlighten-lib/filters/chart-filter-type';
import { ScopeType, ScreenType } from '../enlighten-lib/filters/condition-type';
import { CommonService } from '../common.service';
import { GeneralFilterType } from '../enlighten-lib/filters/general-filter-type';
import { WidgetSubType } from '../forms/page/common/widget-enums';
import { DataViewFilter } from '../data-view-lib/public-api';
import { DataViewFiltersComponent } from '../data-view-lib/data-view-filters/data-view-filters.component';
import * as i0 from "@angular/core";
export declare class FiltersComponent implements OnInit, OnChanges {
    private _multiSelectFilterService;
    private _commonService;
    private _filtersService;
    private _commonFilterService;
    private _dataViewFiltersComponent;
    filters: Array<AxFilter>;
    categories: Array<FilterCategory>;
    reportId: number;
    formId: number;
    scopeType: ScopeType;
    screenType: ScreenType;
    appVersionId: number;
    appId: number;
    filterSourceElementType: FilterSourceElementType;
    showApplyFilterEvent: boolean;
    commonFilterArray: any[];
    selectFirstValueDefault: boolean;
    sendFilterToDashboardEvent: EventEmitter<any>;
    sendFilterCategoryToDashboardEvent: EventEmitter<any>;
    dirtyFlowCheckEvent: EventEmitter<any>;
    filterChangeEmit: EventEmitter<any>;
    applyFilterEmit: EventEmitter<any>;
    resetFilterEmit: EventEmitter<any>;
    clearFilterEmit: EventEmitter<any>;
    deleteFilterEmit: EventEmitter<any>;
    trigger: QueryList<MatMenuTrigger>;
    filterScrollElement: ElementRef<any>;
    screenTypes: typeof ScreenType;
    generalFilterTypes: typeof GeneralFilterType;
    filterSourceElementTypes: typeof FilterSourceElementType;
    scopeTypes: typeof ScopeType;
    filterType: typeof FilterType;
    widgetSubType: typeof WidgetSubType;
    scrollAmount: number;
    showApplyFilterButton: boolean;
    contextMenu: HTMLElement;
    clearFilterValue: boolean;
    clearFilterCategoryValue: boolean;
    resetFilterEvent: EventEmitter<any>;
    dataViewId: string;
    containerViewPresent: boolean;
    temporyfilters: (AxFilter | DataViewFilter)[];
    constructor(_multiSelectFilterService: MultiSelectFilterService, _commonService: CommonService, _filtersService: FiltersService, _commonFilterService: CommonFilterService, _dataViewFiltersComponent: DataViewFiltersComponent);
    /**
     * Host Listener
     *
     * @param event
     */
    click(event: any): void;
    /**
     * On Init Life cycle hook
     */
    ngOnInit(): void;
    /**
     * ngOnChanges use to change the current page object
     */
    ngOnChanges(changes: SimpleChanges): void;
    /**
     * Initialize Filters component
     */
    initializeFilters(): void;
    /***
     * Delete search Nodes
     * @param index current search node
     */
    deleteFilter(index: number): void;
    /***
     * Resets the selected value from filter
     */
    allFilterClear(): void;
    /**
     * Clear  single filter
     *
     * @param filter
     */
    clearFilter(filter: IAxFilter | any, index: number): void;
    clearAllFilters(): void;
    /***
     * Pin to Dashboard
     * @param filter current filter
     */
    sendFilterToDashboard(filter: IAxFilter): void;
    /**
     * Apply Filter
     */
    applyFilter(): void;
    /**
     * Pass filter list to filter properties
     */
    parentFilterList(): void;
    /***
     * On filter context  click Function
     */
    onContextMenu(event: MouseEvent, filter: AxFilter, filterIndex: number): void;
    /***
     * On filter Category context  click Function
     */
    filterCategoryMenu(event: MouseEvent, filterCategory: FilterCategory, filterCategoryIndex: number): void;
    filterValueChanged(filter: AxFilter): void;
    /**
     * when we change the parent filter value  then update the child filter
     **/
    updateChildFilterValue(filter: AxFilter): void;
    /**
     * check global filter length
     */
    checkFilterLength(): void;
    /**
     * On click filter open filter property.
     */
    filterPropertyEvent(filter: AxFilter | FilterCategory): void;
    /**
     * This will return true if filter is instance of AxFilter otherwise return false
     *
     * @param filter
     * @returns
     */
    isFilter(filter: IAxFilter): boolean;
    /**
     * updates the display value of filter on update of filter label
     * @param filter
     */
    filterLabelChanged(filter: AxFilter): void;
    scrollRight(): void;
    scrollLeft(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<FiltersComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<FiltersComponent, "filters", never, { "filters": "filters"; "categories": "categories"; "reportId": "reportId"; "formId": "formId"; "scopeType": "scopeType"; "screenType": "screenType"; "appVersionId": "appVersionId"; "appId": "appId"; "filterSourceElementType": "filterSourceElementType"; "showApplyFilterEvent": "showApplyFilterEvent"; "commonFilterArray": "commonFilterArray"; "selectFirstValueDefault": "selectFirstValueDefault"; }, { "sendFilterToDashboardEvent": "sendFilterToDashboardEvent"; "sendFilterCategoryToDashboardEvent": "sendFilterCategoryToDashboardEvent"; "dirtyFlowCheckEvent": "dirtyFlowCheckEvent"; "filterChangeEmit": "filterChangeEmit"; "applyFilterEmit": "applyFilterEmit"; "resetFilterEmit": "resetFilterEmit"; "clearFilterEmit": "clearFilterEmit"; "deleteFilterEmit": "deleteFilterEmit"; }, never, never>;
}
