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;