import React from 'react'; import { IComputationFunction, IMutField, IRow, IVisFilter } from '../../interfaces'; type rangeValue = [number, number]; export interface FilterConfig { fid: string; mode: 'single' | 'multi' | 'range'; defaultValue?: string | string[] | [number, number]; } export interface SingleProps { name: string; options: string[]; value: string | undefined; onChange?: (v: string | undefined) => void; } export interface MultiProps { name: string; options: string[]; value: string[]; onChange?: (v: string[]) => void; } export interface RangeProps { name: string; domain: rangeValue; value: rangeValue; onChange?: (v: rangeValue) => void; } export declare function createFilterContext(components: { SingleSelect: React.FunctionComponent | React.ComponentClass; MultiSelect: React.FunctionComponent | React.ComponentClass; RangeSelect: React.FunctionComponent | React.ComponentClass; TemporalSelect: React.FunctionComponent | React.ComponentClass; }): { (props: { configs: FilterConfig[]; data: IRow[]; loadingContent?: React.ReactNode | Iterable; fields: IMutField[]; children: (computation: IComputationFunction, filterComponents: React.ReactNode[]) => React.ReactNode; }): React.ReactNode; (props: { configs: FilterConfig[]; computation: IComputationFunction; loadingContent?: React.ReactNode | Iterable; fields: IMutField[]; children: (computation: IComputationFunction, filterComponents: React.ReactNode[]) => React.ReactNode; }): React.ReactNode; }; export declare const useTemporalFilter: (computation: IComputationFunction, fid: string, initValue?: rangeValue | (() => rangeValue), offset?: number) => { filter: IVisFilter | null; domain: rangeValue; value: rangeValue; setValue: (v: rangeValue) => void; }; export declare const useQuantitativeFilter: (computation: IComputationFunction, fid: string, initValue?: rangeValue | (() => rangeValue)) => { filter: IVisFilter | null; domain: rangeValue; value: rangeValue; setValue: (v: rangeValue) => void; }; export declare const useNominalFilter: (computation: IComputationFunction, fid: string, initValue: string[] | (() => string[])) => { filter: IVisFilter | null; domain: string[]; value: string[]; setValue: (v: string[]) => void; }; export {};