import { Params } from '@angular/router';
import { DataSet } from '../interfaces/DisplayInterfaces';
import { DataGrouping, FilterRule, NameValue } from '../interfaces/WidgetInterfaces';
export declare class DataSetFilter {
    static FilterOperationMap(): NameValue[];
    static NormalizePercent(dataSet: DataSet, columns: string[], fakeUpperPercentAdd?: number): void;
    static PivotDataSet(dataSet: DataSet, groupColumns: string[], pivotColumn: string, targetColumn: string, statistic: string, pivotColumnOrder?: string[]): DataSet;
    static SortDataSet(dataSet: DataSet, sorts: Params, sortColumns: NameValue[], columnType?: string): void;
    static ToNumeric(list: string[]): number[];
    static ApplyStatistic(list: string[], statistic: string, separator?: string): any;
    static GroupDataSet(dataSet: DataSet, dataGrouping: DataGrouping): DataSet;
    static FilterDataSet(dataSet: DataSet, filterRules: FilterRule[], context: Params, filters: Params): DataSet;
    static GetFilterSpecs(dataSet: DataSet, filterRules: FilterRule[], context: Params, filters: Params): FilterSpec[];
    static GetFilteredIndexes(dataSet: DataSet, specs: FilterSpec[]): number[];
    static RecordPasses(record: string[], specs: FilterSpec[]): boolean;
}
export declare class FilterSpec {
    column: string;
    columnIndex: number;
    whereClause: string;
    whereCompare: number;
    formattedWhereClause: string;
    valid: boolean;
    predicate: string;
    userExpression: string;
    alwaysPass: boolean;
    filterMethod: (value: string) => boolean;
    static UserExpressionToFormattedCS(userExpression: string, caseSensitive: boolean): string;
    static UserExpressionToFormatted(userExpression: string): string;
    static FormattedExpressionToUser(filterParam: NameValue): NameValue;
    static FromFilters(filters: Params): FilterSpec[];
    private SetAlwaysPass();
    constructor(rule: FilterRule, existingName: string, existingWhereClause: string, context: Params, columns: string[]);
    Passes(v: string): boolean;
    CreateFilterMethod(): void;
    trySetAsNumber(s: string): boolean;
}
