import type { DisplayRow } from '../../../shared-logic/src/Display/types';
import * as DashboardTypes from '../../../shared-logic/src/Dashboard/types';
import { Row } from './Row';
import type { Component as VizzlyComponentType } from '../../../shared-logic/src/Component/types';
import { CustomField } from '../../../shared-logic/src/CustomField/types';
import { Header } from './Header';
import { Library } from './Library';
import { AnyView } from './View';
/** Custom fields for a dashboard */
export declare type CustomFields = {
    [dataSetId: string]: Array<CustomField>;
};
/**
 * Represents a DashboardAttributes type.
 * @param display - The display configuration for the dashboard.
 * @param customFields - The custom fields of the dashboard.
 * @param library - The component library of the dashboard.
 */
export declare type DashboardAttributes = {
    display?: (Row | Header)[];
    customFields?: CustomFields;
    library?: Library;
};
/**
 * Represents a Dashboard class.
 */
export declare class Dashboard {
    private dashboard;
    /**
     * Constructs a new instance of the Dashboard class.
     * @param id - The id of the dashboard.
     * @param attributes - The attributes of the dashboard.
     * @throws Error if the dashboard id is undefined.
     */
    constructor(id?: string | undefined, attributes?: DashboardAttributes);
    /**
     * Sets the display configuration for the dashboard.
     * @param display - An array of Row or Header objects representing the new
     *                  display configuration for the dashboard.
     * @throws Error if the dashboard instance is undefined.
     */
    setDisplay(display: (Row | Header)[]): void;
    /**
     * Sets the custom fields of the dashboard.
     * @param customFields
     */
    setCustomFields(customFields: CustomFields): void;
    /**
     * Sets the component library of the dashboard.
     * @param library
     */
    setLibrary(library: Library): void;
    /**
     * Builds a partial DashboardType object.
     * @returns A partial DashboardType object.
     */
    build(): DashboardTypes.SaveableDashboardDefinition;
    replaceComponent(view: AnyView, rowIndex: number, cellIndex: number): void;
    addRow(row: Row | Header, index?: number): void;
    removeRow(index: number): void;
    moveRow(fromIndex: number, toIndex: number): void;
    _dangerouslySetInternalDashboard(saveableDashboardDefinition: DashboardTypes.SaveableDashboardDefinition): void;
    static buildDisplay(display: (Row | Header)[]): DisplayRow[];
    static buildComponentLibrary(cells: Library): VizzlyComponentType[];
    static fromSaveableDashboard(saveableDashboardDefinition: DashboardTypes.SaveableDashboardDefinition): Dashboard;
}
