import type { Explore } from '../types/explore';
import { type CompiledDimension } from '../types/field';
import type { MetricQuery } from '../types/metricQuery';
/**
 * Collects all DATE and TIMESTAMP dimensions from an explore, keyed by item ID.
 */
export declare const getTimeDimensionsMap: (explore: Explore) => Record<string, CompiledDimension>;
/**
 * Resolves a time-interval dimension (e.g. `order_date_month`) to its base
 * dimension (e.g. `order_date`). If the dimension has no `timeInterval` or the
 * base can't be parsed from the ID, returns the dimension itself.
 *
 * When the base dimension ID is resolved but not found in the map, returns
 * `undefined` — callers should handle this as an unexpected state.
 */
export declare const resolveBaseDimension: (dimId: string, dim: CompiledDimension, timeDimensionsMap: Record<string, CompiledDimension>) => CompiledDimension | undefined;
export type DateZoomCapabilities = {
    availableCustomGranularities: Record<string, string>;
    hasTimestampDimension: boolean;
    hasDateDimension: boolean;
};
/**
 * Collects all dimensions from an explore, keyed by item ID.
 */
export declare const getAllDimensionsMap: (explore: Explore) => Record<string, CompiledDimension>;
/**
 * Resolves any dimension from the metric query to its base time dimension.
 * Handles three cases:
 * - Standard time-interval dims (e.g. order_date_month) → resolves via getDateDimension
 * - Custom granularity dims (e.g. order_date_fiscal_quarter) → resolves via timeIntervalBaseDimensionName
 * - Plain date/timestamp dims → returns the dimension itself
 */
export declare const resolveToBaseTimeDimension: (dimId: string, allDimensionsMap: Record<string, CompiledDimension>, timeDimensionsMap: Record<string, CompiledDimension>) => CompiledDimension | undefined;
export declare const getDateZoomCapabilities: (explore: Explore, metricQuery: MetricQuery) => DateZoomCapabilities;
//# sourceMappingURL=dateZoom.d.ts.map