import { EventEmitter } from '@angular/core';
import { Point2D } from '@obliczeniowo/elementary/classes';
import { OblFileService } from '@obliczeniowo/elementary/files';
import * as i0 from "@angular/core";
export interface ArrayFilterOption {
    value: number;
    min?: number;
    max?: number;
    step?: number;
}
export type ArrayFiltersOptions = {
    [option: string]: ArrayFilterOption;
};
export interface ArrayFilterModel {
    filter: (data: Point2D[], options: {
        [option: string]: any;
    }) => Point2D[];
    options: ArrayFiltersOptions;
}
export interface ValueDesc {
    value: number;
    min?: number;
    max?: number;
    steep?: number;
}
export type FiltersOptions = {
    [filter: string]: ArrayFiltersOptions;
};
export declare class DiagramDataFilterComponent {
    protected file: OblFileService;
    protected models: {
        [name: string]: ArrayFilterModel;
    };
    protected _filters: FiltersOptions;
    protected selected?: string;
    protected lastData?: Point2D[];
    set filters(filters: FiltersOptions);
    get filters(): FiltersOptions;
    translations: {
        [en: string]: string;
    };
    filtersChanged: EventEmitter<FiltersOptions>;
    constructor(file: OblFileService);
    filtering(data: Point2D[]): Point2D[];
    protected remove(name: string): void;
    protected changed(): void;
    protected compare: (f: any, s: any) => number;
    protected download(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<DiagramDataFilterComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<DiagramDataFilterComponent, "obl-diagram-data-filter", never, { "filters": { "alias": "filters"; "required": false; }; "translations": { "alias": "translations"; "required": false; }; }, { "filtersChanged": "filtersChanged"; }, never, ["*"], false, never>;
}
