/**
 * @param {import("../data/flowNode.js").Datum} datum
 * @returns {import("../types/selectionTypes.js").SinglePointSelection}
 */
export function createSinglePointSelection(datum: import("../data/flowNode.js").Datum): import("../types/selectionTypes.js").SinglePointSelection;
/**
 * @param {import("../data/flowNode.js").Datum[]} [data]
 * @returns {import("../types/selectionTypes.js").MultiPointSelection}
 */
export function createMultiPointSelection(data?: import("../data/flowNode.js").Datum[]): import("../types/selectionTypes.js").MultiPointSelection;
/**
 * Returns key tuples for a point selection.
 *
 * @param {import("../types/selectionTypes.js").SinglePointSelection | import("../types/selectionTypes.js").MultiPointSelection} selection
 * @param {string[]} keyFields
 * @returns {import("../spec/channel.js").Scalar[][] | undefined}
 */
export function getPointSelectionKeyTuples(selection: import("../types/selectionTypes.js").SinglePointSelection | import("../types/selectionTypes.js").MultiPointSelection, keyFields: string[]): import("../spec/channel.js").Scalar[][] | undefined;
/**
 * Resolves key tuples to a point selection value object.
 *
 * @param {"single" | "multi"} type
 * @param {string[]} keyFields
 * @param {import("../spec/channel.js").Scalar[][]} keyTuples
 * @param {(keyFields: string[], keyTuple: import("../spec/channel.js").Scalar[]) => import("../data/flowNode.js").Datum | undefined} resolveDatum
 * @returns {{ selection: import("../types/selectionTypes.js").SinglePointSelection | import("../types/selectionTypes.js").MultiPointSelection, unresolved: import("../spec/channel.js").Scalar[][] } | undefined}
 */
export function resolvePointSelectionFromKeyTuples(type: "single" | "multi", keyFields: string[], keyTuples: import("../spec/channel.js").Scalar[][], resolveDatum: (keyFields: string[], keyTuple: import("../spec/channel.js").Scalar[]) => import("../data/flowNode.js").Datum | undefined): {
    selection: import("../types/selectionTypes.js").SinglePointSelection | import("../types/selectionTypes.js").MultiPointSelection;
    unresolved: import("../spec/channel.js").Scalar[][];
} | undefined;
/**
 *
 * @param {import("../spec/channel.js").ChannelWithScale[]} channels
 * @returns {import("../types/selectionTypes.js").IntervalSelection}
 */
export function createIntervalSelection(channels: import("../spec/channel.js").ChannelWithScale[]): import("../types/selectionTypes.js").IntervalSelection;
/**
 * Updates the backing data and returns a new instance of the selection object.
 * A new instance is required to trigger reactivity in parameters.
 *
 * @param {import("../types/selectionTypes.js").MultiPointSelection} selection
 * @param {Partial<Record<"add" | "remove" | "toggle", Iterable<import("../data/flowNode.js").Datum>>>} update
 * @returns {import("../types/selectionTypes.js").MultiPointSelection}
 */
export function updateMultiPointSelection(selection: import("../types/selectionTypes.js").MultiPointSelection, { add, remove, toggle }: Partial<Record<"add" | "remove" | "toggle", Iterable<import("../data/flowNode.js").Datum>>>): import("../types/selectionTypes.js").MultiPointSelection;
/**
 * Returns a string expression that can be used to test if a datum is part of the selection.
 *
 * @param {import("../spec/transform.js").SelectionFilterParams} params
 * @param {import("../types/selectionTypes.js").Selection} selection
 */
export function makeSelectionTestExpression(params: import("../spec/transform.js").SelectionFilterParams, selection: import("../types/selectionTypes.js").Selection): string;
/**
 * @param {import("../types/selectionTypes.js").Selection} selection
 * @returns {selection is import("../types/selectionTypes.js").IntervalSelection}
 */
export function isIntervalSelection(selection: import("../types/selectionTypes.js").Selection): selection is import("../types/selectionTypes.js").IntervalSelection;
/**
 * @param {import("../types/selectionTypes.js").Selection} selection
 * @returns {selection is import("../types/selectionTypes.js").SinglePointSelection}
 */
export function isSinglePointSelection(selection: import("../types/selectionTypes.js").Selection): selection is import("../types/selectionTypes.js").SinglePointSelection;
/**
 * @param {import("../types/selectionTypes.js").Selection} selection
 * @returns {selection is import("../types/selectionTypes.js").MultiPointSelection}
 */
export function isMultiPointSelection(selection: import("../types/selectionTypes.js").Selection): selection is import("../types/selectionTypes.js").MultiPointSelection;
/**
 * @param {import("../types/selectionTypes.js").Selection} selection
 * @returns {selection is import("../types/selectionTypes.js").ProjectedSelection}
 */
export function isProjectedSelection(selection: import("../types/selectionTypes.js").Selection): selection is import("../types/selectionTypes.js").ProjectedSelection;
/**
 * @param {import("../spec/parameter.js").SelectionTypeOrConfig} typeOrConfig
 * @returns {import("../spec/parameter.js").SelectionConfig}
 */
export function asSelectionConfig(typeOrConfig: import("../spec/parameter.js").SelectionTypeOrConfig): import("../spec/parameter.js").SelectionConfig;
/**
 * @param {import("../spec/parameter.js").SelectionConfig} config
 * @returns {config is import("../spec/parameter.js").PointSelectionConfig}
 */
export function isPointSelectionConfig(config: import("../spec/parameter.js").SelectionConfig): config is import("../spec/parameter.js").PointSelectionConfig;
/**
 *
 * @param {import("../spec/parameter.js").SelectionConfig} config
 * @returns {config is import("../spec/parameter.js").IntervalSelectionConfig}
 */
export function isIntervalSelectionConfig(config: import("../spec/parameter.js").SelectionConfig): config is import("../spec/parameter.js").IntervalSelectionConfig;
/**
 * @param {import("../types/selectionTypes.js").IntervalSelection} selection
 */
export function isActiveIntervalSelection(selection: import("../types/selectionTypes.js").IntervalSelection): boolean;
/**
 * @typedef {import("../types/selectionTypes.js").IntervalSelection} IntervalSelection
 * @typedef {Partial<Record<keyof IntervalSelection["intervals"], number>>} IntervalPoint
 * @param {IntervalSelection} selection
 * @param {IntervalPoint} point
 */
export function selectionContainsPoint(selection: IntervalSelection, point: IntervalPoint): boolean;
/**
 * @param {import("../spec/parameter.js").SelectionConfig["on"]} eventType
 * @returns {import("../spec/parameter.js").EventConfig}
 */
export function asEventConfig(eventType: import("../spec/parameter.js").SelectionConfig["on"]): import("../spec/parameter.js").EventConfig;
export type IntervalSelection = import("../types/selectionTypes.js").IntervalSelection;
export type IntervalPoint = Partial<Record<keyof IntervalSelection["intervals"], number>>;
//# sourceMappingURL=selection.d.ts.map