import { type IDashboardAttributeFilterConfig, type IDashboardDateFilterConfig, type IDashboardLayout, type IFilterContext as IFilterContextModel, type ObjRef } from "@gooddata/sdk-model";
/**
 * @public
 */
export interface IDashboardDateFilterConfigItem {
    dateDataSet: ObjRef;
    config: IDashboardDateFilterConfig;
}
/**
 * Dashboard tab definition.
 *
 * @remarks
 * Each tab can have its own layout and its own filter context. Tabs are optional and
 * dashboards without tabs continue to work using the root layout and filter context.
 *
 * @alpha
 */
export interface IDashboardTab {
    /**
     * Unique identifier of the tab (stable within dashboard).
     */
    localIdentifier: string;
    /**
     * Display title of the tab.
     */
    title: string;
    /**
     * Complete layout definition for this tab.
     */
    layout: IDashboardLayout;
    /**
     * Tab-specific filter context.
     */
    filterContextRef: ObjRef;
    /**
     * Dashboard tab common date filter config
     */
    dateFilterConfig?: IDashboardDateFilterConfig;
    /**
     * Dashboard tab date filters with date data set/dimension configs
     */
    dateFilterConfigs?: IDashboardDateFilterConfigItem[];
    /**
     * Dashboard extended attribute filter configs
     */
    attributeFilterConfigs?: IDashboardAttributeFilterConfig[];
}
/**
 * @public
 */
export interface IAnalyticalDashboard {
    version: "2";
    layout?: IDashboardLayout;
    filterContextRef?: ObjRef;
    dateFilterConfig?: IDashboardDateFilterConfig;
    dateFilterConfigs?: IDashboardDateFilterConfigItem[];
    attributeFilterConfigs?: IDashboardAttributeFilterConfig[];
    plugins?: IDashboardPluginLink[];
    disableCrossFiltering?: boolean;
    disableUserFilterReset?: boolean;
    disableUserFilterSave?: boolean;
    disableFilterViews?: boolean;
    evaluationFrequency?: string;
    sectionHeadersDateDataSet?: ObjRef;
    /**
     * Optional tabs configuration; when defined, the dashboard renders as a tabbed interface.
     * Each tab has its own layout, filter context and filter configs.
     *
     * @alpha
     */
    tabs?: IDashboardTab[];
}
/**
 * @public
 */
export interface IFilterContext {
    version: "2";
    filters: IFilterContextModel["filters"];
}
/**
 * @alpha
 */
export interface IFilterContextWithTab extends IFilterContext {
    tabLocalIdentifier?: string;
}
/**
 * @public
 */
export interface IDashboardPlugin {
    version: "2";
    url: string;
}
/**
 * @public
 */
export interface IDashboardPluginLink {
    version: "2";
    plugin: ObjRef;
    parameters?: string;
}
/**
 * @public
 */
export declare function isAnalyticalDashboard(dashboard: unknown): dashboard is IAnalyticalDashboard;
/**
 * @public
 */
export declare function isFilterContext(filterContext: unknown): filterContext is IFilterContext;
/**
 * @alpha
 */
export declare function isFilterContextWithTab(filterContext: unknown): filterContext is IFilterContextWithTab;
/**
 * @public
 */
export declare function isDashboardPlugin(plugin: unknown): plugin is IDashboardPlugin;
/**
 * @public
 */
export declare function isDashboardPluginLink(pluginLink: unknown): pluginLink is IDashboardPluginLink;
/**
 * @alpha
 */
export declare function isDashboardTab(tab: unknown): tab is IDashboardTab;
//# sourceMappingURL=AnalyticalDashboardModelV2.d.ts.map