import { Attribute, CalculatedMeasureColumn, Column, Measure, MeasureColumn } from '@sisense/sdk-data';
import type { CategoryStyle, SeriesStyle, StyledColumn, StyledMeasureColumn, ValueStyle } from './types.js';
/**
 * Name prefixes for trend and forecast measures in query payloads (aligned with NLQ JSON and chart).
 *
 * @internal
 */
export declare const TREND_PREFIX = "$trend";
export declare const FORECAST_PREFIX = "$forecast";
/**
 * Dimension + optional category style for {@link adaptDimensionsForQuery}.
 * Structurally matches NLQ `DimensionTranslationItem`.
 *
 * @internal
 */
export type DimensionQueryAdaptItem = {
    attribute: Attribute;
    style?: CategoryStyle;
};
/**
 * Measure + optional value style for {@link adaptMeasuresForQuery}.
 * Structurally matches NLQ `MeasureTranslationItem`.
 *
 * @internal
 */
export type MeasureQueryAdaptItem = {
    measure: Measure;
    style?: ValueStyle & SeriesStyle;
};
/**
 * Dimensional {@link Attribute} instances expose JAQL sort APIs; plain {@link Column} does not.
 *
 * @internal
 */
export declare function isDimensionalAttribute(column: Column): column is Attribute;
/**
 * Narrative / NLQ query measures are dimensional {@link Measure} instances (e.g. from `measureFactory`).
 *
 * @internal
 */
export declare function isDimensionalMeasure(column: MeasureColumn | CalculatedMeasureColumn): column is Measure;
/**
 * Builds a dimension adapt item using `StyledColumn`’s own shape (no `splitColumn` merge).
 *
 * @internal
 */
export declare function toDimensionQueryAdaptItem(sc: StyledColumn): DimensionQueryAdaptItem;
/**
 * Builds a measure adapt item using `StyledMeasureColumn`’s own shape (no `splitColumn` merge).
 *
 * @internal
 */
export declare function toMeasureQueryAdaptItem(smc: StyledMeasureColumn): MeasureQueryAdaptItem;
/**
 * Applies sort from styled dimensions to attributes (NLQ JSON → query semantics).
 *
 * @internal
 */
export declare function adaptDimensionsForQuery(items: DimensionQueryAdaptItem[]): Attribute[];
/**
 * @internal
 */
export declare function isTrendMeasure(measure: Measure): boolean;
/**
 * @internal
 */
export declare function isForecastMeasure(measure: Measure): boolean;
/**
 * Options for {@link adaptMeasuresForQuery}.
 *
 * @internal
 */
export type AdaptMeasuresForQueryOptions = {
    /**
     * When `true`, trend and forecast companion measures are not appended (e.g. narrative when the
     * backend does not yet support them).
     *
     * @default false
     */
    ignoreTrendAndForecast?: boolean;
};
/**
 * Applies sort, trend, and forecast companion measures (NLQ JSON → query semantics).
 *
 * @internal
 */
export declare function adaptMeasuresForQuery(items: MeasureQueryAdaptItem[], options?: AdaptMeasuresForQueryOptions): Measure[];
