import { Filter, FilterRelations } from '@sisense/sdk-data';
import { SpecificWidgetOptions, WidgetsPanelLayout } from '../../../../../domains/dashboarding/dashboard-model';
import { WidgetModel } from '../../../../../domains/widgets/widget-model';
import { AddWidgetPayload } from './types.js';
/**
 * Translates filters and relations to DTOs.
 *
 * `filterRelations[].datasource` is always a **string** (never `undefined`), so Fusion validation
 * does not break. The value is derived from `filter.dataSource` / `filter.attribute.dataSource`
 * when present; otherwise `''`.
 *
 * @param filtersOrFilterRelations - Flat filters or a filter-relations tree
 *
 * @sisenseInternal
 */
export declare function translateFiltersAndRelationsToDto(filtersOrFilterRelations: Filter[] | FilterRelations): {
    filters: (import("../../../../../infra/api/types/dashboard-dto.js").FilterDto | import("../../../../../infra/api/types/dashboard-dto.js").CascadingFilterDto)[];
    filterRelations: {
        datasource: string;
        filterRelations: import("@sisense/sdk-data").FilterRelationsModelNode;
    }[] | undefined;
};
export declare function parseAddWidgetPayload(payload: AddWidgetPayload): {
    widget: WidgetModel;
    widgetsPanelLayout?: WidgetsPanelLayout;
    widgetOptions?: SpecificWidgetOptions;
};
/**
 * Appends a widget cell to the first column's first row. Creates row/cells if missing.
 * Returns a new layout (immutable) or the original when no columns exist.
 */
export declare function appendWidgetToFirstCell(layout: WidgetsPanelLayout | undefined, widgetId: string): WidgetsPanelLayout | undefined;
