import { AnyObject, DataSource, Filter, FilterRelations } from '@sisense/sdk-data';
import { DashboardLayoutOptions } from '../../../domains/dashboarding';
import { DashboardStyleOptions } from '../../../domains/dashboarding/dashboard-model';
import { TabbersConfig } from '../../../domains/dashboarding/hooks/use-tabber';
import { WidgetModel } from '../../../domains/widgets/widget-model';
import { DashboardSettings } from '../../../infra/api/types/dashboard-dto';
import { type WidgetsOptions } from './types';
/**
 * Configuration data for a dashboard model.
 *
 * @internal
 */
export interface DashboardModelConfig {
    /**
     * Configuration for tabber widgets in the dashboard.
     */
    tabbers?: TabbersConfig;
}
/**
 * Model of Sisense Fusion dashboard defined in the abstractions of Compose SDK.
 *
 * @group Fusion Assets
 * @fusionEmbed
 */
export interface DashboardModel {
    /**
     * Unique identifier of the dashboard.
     */
    oid: string;
    /**
     * Dashboard title.
     */
    title: string;
    /**
     * Dashboard data source details.
     */
    dataSource: DataSource;
    /**
     * Dashboard widget models.
     */
    widgets: WidgetModel[];
    /**
     * Dashboard layout options.
     *
     * @internal
     */
    layoutOptions: DashboardLayoutOptions;
    /**
     * Dashboard style options.
     *
     * @internal
     */
    styleOptions: DashboardStyleOptions;
    /**
     * Dashboard filters.
     *
     * @internal
     */
    filters: Filter[] | FilterRelations;
    /**
     * Dashboard options for each of the widgets.
     *
     * @internal
     */
    widgetsOptions: WidgetsOptions;
    /**
     * Dashboard configuration.
     *
     * @internal
     */
    config: DashboardModelConfig;
    /**
     * Dashboard settings.
     *
     * @internal
     */
    settings?: DashboardSettings;
    /**
     * Dashboard user authorization.
     *
     * @internal
     */
    userAuth?: AnyObject;
}
