import { UUID } from '@arcgis/toolkit/string';
export interface StepsInfo {
    min: number;
    max: number;
    steps?: number[] | number;
}
export interface StepsProvider {
    minIndex: number;
    maxIndex: number;
    indexToValue: (index: number) => number;
    valueToIndex: (value: number) => number;
}
export declare function createStepsProvider(info: StepsInfo): nullish | StepsProvider;
/**
 * Snaps thumb values to the closest step values based on the provided steps provider.
 *
 * TODO: integrate a resolution parameter to control how many steps to consider.
 *  The resolution would depend on the size of the slider and the min/max range,
 *  as well as the displayMin and displayMax.
 */
export declare function offsetValues(stepsProvider: nullish | StepsProvider, entries: ReadonlyMap<UUID, number>, offset: number): Map<UUID, number>;
/**
 * Snaps a single entry to the closest available step, avoiding conflicts with other entries.
 */
export declare function offsetValue(stepsProvider: nullish | StepsProvider, entries: ReadonlyMap<UUID, number>, entry: UUID, offset: number, allowValuesOverlap: boolean): number;
type Configuration = {
    stepsProvider: nullish | StepsProvider;
    resolution: number;
    min: number;
    max: number;
    allowValuesOverlap: boolean;
};
/**
 * Offsets all entries in the given direction, respecting the steps defined in the configuration.
 */
export declare function offsetEntriesInDirection(configuration: Configuration, entries: ReadonlyMap<UUID, number>, direction: number): {
    changed: boolean;
    entries: ReadonlyMap<UUID, number>;
};
/**
 * Offsets an entry in the given direction, respecting the steps defined in the configuration.
 */
export declare function offsetEntryInDirection(configuration: Configuration, entries: ReadonlyMap<UUID, number>, entry: UUID, direction: number): number;
/**
 * Offsets all entries to the minimum or maximum value, depending on the direction.
 */
export declare function offsetEntryToEnds(configuration: Configuration, entries: ReadonlyMap<UUID, number>, entry: UUID, direction: number): number;
/**
 * Offsets all entries to the minimum or maximum value, depending on the direction.
 */
export declare function offsetEntriesToEnds(configuration: Configuration, entries: ReadonlyMap<UUID, number>, direction: number): ReadonlyMap<UUID, number>;
export {};
