import { Attribute } from '../../../enlighten-lib/data-model/attribute';
import { HttpClient } from '@angular/common/http';
import { FilterCategory } from '../../filters/filter-category';
import { DataModel } from '../../data-model/data-model';
import { AxFilter } from '../../filters/ax-filter';
import { MatSelectChange } from '@angular/material/select';
import { ElementService } from '../element.service';
import { IAxFilter } from '../../filters/iax-filter';
import * as i0 from "@angular/core";
export interface ICategory {
    id: number;
    name: string;
    description?: string;
    isSelected?: string;
}
export declare class ReportFilterService {
    private _httpClient;
    private _elementService;
    /**
     * Constructor
     */
    constructor(_httpClient: HttpClient, _elementService: ElementService);
    /**
     * Get Category list by the app-version id
     *
     * @param appVersion
     * @returns filter category array
     */
    getCategories(appVersion: number): Promise<Array<FilterCategory>>;
    /**
     * Create filter category object mapping
     *
     * @param filterCategory
     * @returns
     */
    createFilterCategoryObject(filterCategory: Array<FilterCategory>): Array<FilterCategory>;
    /**
     * check filter category exists into filter
     *
     * @param categoryList
     * @param categories
     * @returns Filter category list
     */
    checkSelectedCategory(appCategories: Array<FilterCategory>, reportCategories: Array<IAxFilter>): Array<FilterCategory>;
    /**
     * Check the attributes are exists in filters
     *
     * @param dataModel
     * @param filters
     * @returns Data Model details
     */
    checkSelectedAttribute(dataModel: DataModel, filters: Array<AxFilter>): DataModel;
    /**
     * Add new filter functionality
     *
     * @param appVersion
     * @param event
     * @param filters
     * @returns  filter array
     */
    addFilter(appVersion: number, event: MatSelectChange | any, filters: Array<AxFilter>, scopeType: number, x: number): Array<AxFilter>;
    /**
     * Add new filter functionality
     *
     * @param appVersion
     * @param event
     * @param filters
     * @returns  filter array
     */
    createFilter(appVersion: number, attribute: Attribute, scopeType: number, x: number): AxFilter;
    /**
     * Delete Filter From Filter List
     *
     * @param attribute
     * @param _filters
     */
    deleteFilter(attribute: Attribute, _filters: Array<AxFilter>): void;
    /**  REMOVE THIS CODE
     * Add new filter category into report and element filter
     *
     * @param appVersion
     * @param event
     * @param categories
     * @returns Filter category array
     */
    addFilterCategory(appVersion: number, event: MatSelectChange | any, categories: Array<FilterCategory>, x: number): Array<FilterCategory>;
    /**
     * Create New Category Filter
     *
     * @param category
     * @param appVersionId
     * @param x
     * @returns
     */
    createFilterCategory(category: FilterCategory, appVersionId: number, x: number): FilterCategory;
    /**
     * Delete Filter Category
     */
    deleteFilterCategory(deletedCategory: FilterCategory, _categories: Array<FilterCategory>): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<ReportFilterService, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<ReportFilterService>;
}
