import { FilterMode } from '@armor/api';
import { EventEmitter } from '@angular/core';
import { Observable } from 'rxjs';
import { FilterConfig } from '../../models/data/filter-config';
import { IColumnConfig } from '../../models/tables/column-config.interface';
import { IDataFilteredEvent } from '../../models/data/data-filtered-event.interface';
import { IPaginationEvent } from '../../models/data/pagination-event.interface';
import { FilterOption } from '../../models/data/filter-option';
export interface IDataService {
    sortField: string;
    sortAsc: boolean;
    filters: FilterConfig[];
    filterMode: FilterMode;
    columns: IColumnConfig[];
    filterText: string;
    filtersChanged$: EventEmitter<FilterConfig>;
    columnSelectionChanged$: EventEmitter<IColumnConfig[]>;
    dataFiltered$: EventEmitter<IDataFilteredEvent>;
    paginationChanged$: EventEmitter<IPaginationEvent>;
    sortingChanged$: EventEmitter<any>;
    addData?<T>(data: T[]): T[];
    processData(): Observable<any[]>;
    getAllData(): Observable<any[]>;
    extractFilterOptions(input: string, data?: any[]): FilterOption[];
}
