import { AfterContentInit, EventEmitter, OnDestroy, OnInit } from '@angular/core';
import { FilterMode } from '@armor/api';
import { LocalStorageService } from '@armor/platform-browser';
import { TableService } from '../../services/tables/table.service';
import { IDataService } from '../../services/data/data-service.interface';
import { IDataFilteredEvent } from '../../models/data/data-filtered-event.interface';
import { IColumnConfig } from '../../models/tables/column-config.interface';
import { FilterOption } from '../../models/data/filter-option';
import { FilterConfig } from '../../models/data/filter-config';
import { IAlertAction } from '../../models/alerts/alert-action.interface';
import { IFilterBarConfig } from '../../models/filter-bar/filter-bar-config.interface';
import { SelectableTableDirective } from '../../directives/tables/selectable-table.directive';
import { Subscription } from 'rxjs';
import { BadgeDateRangePickerComponent } from '../date-picker/badge-date-range-picker.component';
export declare class FilterBarComponent implements OnInit, OnDestroy, AfterContentInit {
    private localStorageService;
    private tableService;
    constructor(localStorageService: LocalStorageService, tableService: TableService);
    config: IFilterBarConfig;
    dataService: IDataService;
    selectableTable: SelectableTableDirective<any>;
    refreshAction: () => void;
    rowDensityChanged$: EventEmitter<string>;
    datePicker: BadgeDateRangePickerComponent;
    datePickerFilter: FilterConfig;
    columnsSnapshot: IColumnConfig[];
    filtersSnapshot: FilterConfig[];
    filterModeSnapshot: FilterMode;
    clearFilterAction: IAlertAction;
    total: number;
    filteredTotal: number;
    dataFilterSubscription: Subscription;
    dateFilterSubscription: Subscription;
    showFiltersSettings: boolean;
    /**
     * Checks to see if current filters (if any) are affecting the 'processed' data set.
     */
    readonly isFiltered: boolean;
    /**
     * Sets up the filter bar
     * - Set row density from local storage, or default
     * - Snapshot current settings
     * - Add 'any' filter if not present
     * - Subscribe to filter updates
     */
    ngOnInit(): void;
    ngAfterContentInit(): void;
    initDatePicker(): void;
    resetDateFilterValue(): void;
    ngOnDestroy(): void;
    /**
     * Set or unset the filter option. Used by the UI.
     * @param filter
     * @param option
     */
    toggleFilterOption(filter: FilterConfig, option: FilterOption): void;
    isOptionChecked(filter: FilterConfig, option: FilterOption): boolean;
    clearAllChecks(filter: FilterConfig): void;
    /**
     * Look for any FilterOptions where checked === true and sets the
     * parent filter value accordingly.
     *
     * *Note:* If filter mode is 'All' then
     * we set the filter to this first 'checked' filter.
     */
    handlePreselectedOptions(): void;
    updateFilterMode(event: any): void;
    setFilterValue(filter: FilterConfig, option: FilterOption): void;
    emitColumnConfigChange(): void;
    emitListPageFiltersConfigChange(): void;
    saveTableConfig(): void;
    applyFilters(): void;
    onDataFiltered(event: IDataFilteredEvent): void;
    clearAllFilters(): void;
    clearSelectFilters(): void;
    clearFreeTextFilter(): void;
}
