import { Column } from '@sisense/sdk-data';
import type { ChartDataOptions, PivotTableDataOptions, StyledColumn } from '../../../domains/visualizations/core/chart-data-options/types';
import type { DataOptionLocation } from '../../../types';
/**
 * Finds the location of a data option within abstract dataOptions structure.
 *
 * This utility searches through various chart data option structures (e.g., `PivotTableDataOptions`,
 * `ScattermapChartDataOptions`, `CartesianChartDataOptions`) to locate a specific `Column` (or `StyledColumn`).
 *
 * The function uses a generic approach that inspects properties of the `dataOptions` object:
 * - If a property is an array, each item is treated as a potential data option
 * - If a property is an object, it is treated as a potential data option
 *
 * Data options can be:
 * - Plain `Column` (attribute)
 * - `StyledColumn` (attribute with nested `column` property)
 *
 * **Limitations:**
 * - It will **not** find `MeasureColumn`, `CalculatedMeasureColumn`, or `StyledMeasureColumn`. Attempting to search for measures will return `undefined`
 *
 * @param dataOptions - The data options structure to search within (e.g., from various chart types or pivot table)
 * @param targetColumn - The target `Column` (attribute) or `StyledColumn` to find
 * @returns The location of the data option if found, otherwise `undefined`
 *
 * @example
 * ```typescript
 * const dataOptions = {
 *   category: [DM.Commerce.Date],
 *   value: [DM.Commerce.Revenue],
 *   breakBy: [],
 * };
 * const location = getDataOptionLocation(dataOptions, DM.Commerce.Date);
 * // Result: { dataOptionName: 'category', dataOptionIndex: 0 }
 * ```
 */
export declare function getDataOptionLocation(dataOptions: ChartDataOptions | PivotTableDataOptions, targetColumn: Column | StyledColumn): DataOptionLocation | undefined;
/**
 * Compares two columns to determine if they represent the same attribute.
 *
 * This function handles both plain `Column` and `StyledColumn` arguments variants.
 *
 * @param columnA - The first column to compare (can be `Column` or `StyledColumn`)
 * @param columnB - The second column to compare (can be `Column` or `StyledColumn`)
 * @returns `true` if both columns represent the same attribute, `false` otherwise
 */
export declare function isSameColumn(columnA: Column | StyledColumn, columnB: Column | StyledColumn): boolean;
