import { ExecutePivotQueryParams, ExecuteQueryParams } from '../../../domains/query-execution/index.js'; import { DynamicChartType } from '../../../domains/visualizations/core/chart-options-processor/translations/types.js'; import { ChartWidgetProps } from '../../../domains/widgets/components/chart-widget/types'; import { PivotTableWidgetProps } from '../../../domains/widgets/components/pivot-table-widget/types'; import { ExpandedQueryModel, SimpleQueryModel } from '../types.js'; export declare function toKebabCase(str: string): string; export declare function capitalizeFirstLetter(str: string): string; /** * Sanitize ID of a dimension * * @param str - input string * @return sanitized ID */ export declare function sanitizeDimensionId(str: string): string; export declare function validateQueryModel(model: any): SimpleQueryModel; export declare function isEmptyQueryModel(queryModel: ExpandedQueryModel | undefined | null): boolean; export declare function validateChartType(chartType: DynamicChartType | 'pivot' | 'pivot2'): void; export declare function checkIfMeasuresExist(props: ChartWidgetProps | PivotTableWidgetProps | ExecuteQueryParams | ExecutePivotQueryParams): boolean; export declare function isNonEmptyArray(array: T[]): boolean; /** * Removes the first empty line or string if the next line contains "import *" or "import {". * * The `stringifyExtraImports` function can return an empty string if there are no measures or filters, then * `filterFactory` or `measureFactory` are not required for import. * In our code templates, we use the `{{extraImportsString}}` placeholder, and * if it is replaced with an empty string, our tests may break. * This function ensures that such invalid empty lines before imports are removed to maintain proper formatting. * * @param input - the populated template * @returns The modified string with the first empty line removed if the next line contains "import *" or "import {". If no such condition is met, the input remains unchanged. */ export declare function removeEmptyLineBeforeImport(input: string): string; /** * Returns a new object where any "unsafe" keys (i.e., keys that contain * characters not allowed in JavaScript dot notation — such as spaces, slashes, dashes, etc.) * are wrapped in double quotes. * * If the object contains a `composeCode` field, it is returned as-is without modification. * * Safe keys (valid JS identifiers) are left unchanged. * * @param obj - The input object with arbitrary string keys * @returns A new object with the same values, but with unsafe keys wrapped in quotes, * unless the object has a `composeCode` field * * @example * quoteUnsafeKeys({ "user-id": true, normalKey: 42 }) * // => { '"user-id"': true, normalKey: 42 } */ export declare function quoteUnsafeKeys>(obj: T): Record;