export type FilterTypes = 'greater' | 'lesser' | 'equal' | 'contains' | 'not equal';
export type Value = string | number;
export type BooleanOperator = 'or' | 'and';
export type CompareValue = {
    value: Value;
    valueUndefined: boolean;
    valueIsNaN: boolean;
    lowercaseValue?: string;
};
export type ComparableData = {
    readonly displayValue: string;
    compareValue?: CompareValue;
    rawValue?: string | number;
    blur?: boolean;
    color?: string;
};
export type Row = readonly ComparableData[];
export type Column = {
    readonly name: string;
    readonly type: string;
    readonly index: number;
    direction: number;
};
export type DataTable = {
    readonly columns: readonly Column[];
    readonly rows: readonly Row[];
};
export type ColumnMeasure = {
    readonly column: string;
    readonly agg: string;
    readonly title: string;
};
export type AggregationColumn = {
    readonly aggFunc: string;
    readonly aggName: string;
    readonly column: Column;
};
export type IndexedRows = {
    [key: string]: Row[];
};
export declare const separateBy: (rows: readonly Row[], separateByColumns: Column[]) => Row[][];
export declare const orderBy: (table: DataTable, sortColumns: readonly Column[]) => {
    columns: readonly Column[];
    rows: Row[];
};
export declare const groupBy: (table: DataTable, groupByColumns: Column[], aggregationColumns: ColumnMeasure[]) => {
    rows: ComparableData[][];
    columns: {
        index: number;
        name: string;
        type: string;
        direction: number;
    }[];
};
export declare const getColumnByName: (table: DataTable, name: string) => Column | undefined;
export declare const getColumnsByName: (table: DataTable, names: string[]) => Column[];
export declare const selectColumns: (table: DataTable, selectColumns: Column[]) => {
    columns: {
        index: number;
        name: string;
        type: string;
        direction: number;
    }[];
    rows: ComparableData[][];
};
export declare const filterBy: (table: DataTable, filterColumns: Column[], filterValues: Value[], filterTypes: FilterTypes[], caseInsensitive?: boolean, booleanOperator?: BooleanOperator) => {
    columns: readonly Column[];
    rows: Row[];
};
export declare const getValue: (row: Row, column: Column) => Value | undefined;
export declare const isBlurred: (row: Row, column: Column) => boolean | undefined;
export declare const getValues: (row: Row, columns: readonly Column[]) => ComparableData[];
export declare const getValuesAsString: (row: Row, columns: readonly Column[]) => string;
export declare const getIndexedRows: (rows: readonly Row[], indexColumns: Column[]) => IndexedRows;
export declare const getDistinctTable: (table: DataTable, distinctColumns: Column[]) => {
    rows: Row[];
    columns: {
        index: number;
        name: string;
        type: string;
        direction: number;
    }[];
};
export declare const getColumnValues: (table: DataTable, column: Column) => (Value | undefined)[];
export declare const emptyTable: (table: DataTable) => boolean;
export declare const limitRows: (table: DataTable, limit: number) => {
    columns: Column[];
    rows: Row[];
};
export declare const innerJoin: (table: DataTable, joinTable: DataTable, joinKeys: string[]) => {
    rows: Row[];
    columns: Column[];
};
