import type { Datum } from "../charts/shared/datumTypes";
export type ResolutionMode = "union" | "intersect" | "crossfilter";
export interface FieldConstraint {
    type: "point";
    values: Set<unknown>;
}
export interface IntervalConstraint {
    type: "interval";
    range: [number, number];
}
export type FieldSelection = FieldConstraint | IntervalConstraint;
export interface SelectionClause {
    clientId: string;
    type: "point" | "interval";
    fields: Record<string, FieldSelection>;
}
export interface Selection {
    name: string;
    resolution: ResolutionMode;
    clauses: Map<string, SelectionClause>;
}
export interface SelectionStoreState {
    selections: Map<string, Selection>;
    setClause: (selectionName: string, clause: SelectionClause) => void;
    clearClause: (selectionName: string, clientId: string) => void;
    setResolution: (selectionName: string, mode: ResolutionMode) => void;
    clearSelection: (selectionName: string) => void;
}
export declare function buildPredicate(selection: Selection, requestingClientId?: string): (d: Datum) => boolean;
export declare const SelectionProvider: import("react").FC<import("./createStore").StoreProviderProps<SelectionStoreState>>, useSelectionSelector: <R>(selector: (state: SelectionStoreState) => R) => R;
