import { SuspendableObject, AdaptablePredicate } from '../../types';
import { TypeHint } from './Types';
/**
 * Configuration for a Column Filter
 */
export interface ColumnFilterConfig {
    /**
     * The Predicate ID to use when filtering the column
     */
    PredicateId: TypeHint<string, SystemFilterPredicateId>;
    /**
     * Optional Inputs that might be needed for evaluation
     */
    PredicateInputs?: any[];
}
/**
 * Defines a Filter applied on a Column using a Predicate
 */
export interface ColumnFilter extends SuspendableObject {
    /**
     * Column where Filter should be applied
     */
    ColumnId: string;
    /**
     * `AdaptablePredicate` which AdaptableQL will evaluate when the Filter is run
     */
    Predicate: ColumnFilterPredicate;
}
/**
 * A Predicate used in Column Filtering
 */
export interface ColumnFilterPredicate extends AdaptablePredicate {
    PredicateId: TypeHint<string, SystemFilterPredicateId>;
}
/**
 * Array containing all System Filter Predicates
 */
export type SystemFilterPredicateIds = SystemFilterPredicateId[];
/**
 * List of System Predicates available for Filters
 */
export type SystemFilterPredicateId = 'Values' | 'ExcludeValues' | 'Blanks' | 'NonBlanks' | 'Equals' | 'NotEquals' | 'GreaterThan' | 'LessThan' | 'Positive' | 'Negative' | 'Zero' | 'Between' | 'NotBetween' | 'Is' | 'IsNot' | 'Contains' | 'NotContains' | 'StartsWith' | 'EndsWith' | 'Regex' | 'Today' | 'Yesterday' | 'Tomorrow' | 'ThisWeek' | 'ThisMonth' | 'ThisQuarter' | 'ThisYear' | 'InPast' | 'InFuture' | 'Before' | 'After' | 'InRange' | 'On' | 'NotOn' | 'NextWorkDay' | 'LastWorkDay' | 'WorkDay' | 'Holiday' | 'True' | 'False' | 'BooleanToggle';
