import type { ReactNode } from 'react';
import { IChartStyleOption } from '../../base-pandora-visualization/services/chart-style/charts/base';
import { ITimeRange } from '../../services/search-condition';
import { IKeyValues } from '../../models/base';
import { EThemeTypes } from '../../constants';
export declare const CHART_VERSION = "0.1.0";
export declare enum EOperationBarState {
    SHOW = "show",
    HIDE = "hide"
}
export declare enum TypeOfChart {
    Spl = "spl",
    VisualizationGui = "visualization-gui"
}
export interface ISettings {
    operationBarState: EOperationBarState;
    screenScale: number[];
    layoutCols: number;
    layoutRowHeight: number;
    layoutMargin: [number, number];
}
export declare enum EVariableType {
    TIME_INTERVAL = "timeinterval",
    QUERY_VALUE = "queryvalue",
    CONSTANTS = "constants",
    SERVER = "server"
}
interface IVariableTypeValue {
    [EVariableType.TIME_INTERVAL]: {
        num: number;
        unit: string;
    };
    [EVariableType.QUERY_VALUE]: string[];
    [EVariableType.CONSTANTS]: string[];
    [EVariableType.SERVER]: string[];
}
interface IVariableTypeOption {
    [EVariableType.TIME_INTERVAL]: void;
    [EVariableType.QUERY_VALUE]: {
        spl: string;
        field: string;
        multi: boolean;
        autoUpdate: boolean;
    };
    [EVariableType.CONSTANTS]: {
        presets: string[];
        multi: boolean;
    };
    [EVariableType.SERVER]: {
        mode: 'host' | 'ip';
        multi: boolean;
    };
}
export interface IVariable<T extends EVariableType = any> {
    id: string;
    name: string;
    displayName?: string;
    type: EVariableType;
    value?: IVariableTypeValue[T];
    option: IVariableTypeOption[T];
    prefix?: string;
    suffix?: string;
    valuePrefix?: string;
    valueSuffix?: string;
    delimiter?: string;
}
export interface IDashboard {
    id?: string;
    title: string;
    description: string;
    refresh: number;
    time: ITimeRange;
    charts: IChart[];
    variables?: IVariable[];
    createTime?: number;
    updateTime?: number;
    version?: number;
    theme?: EThemeTypes;
    app?: string;
    options?: {
        settings?: ISettings;
        [key: string]: any;
    };
}
export interface IReport {
    id?: string;
    name: string;
    chart: IChart;
    time: ITimeRange;
}
export interface ILayout {
    width: number;
    height: number;
    top: number;
    left: number;
}
export interface ITitle {
    name: string;
    color?: string;
    show?: boolean;
}
export interface IChart {
    id?: string;
    type?: TypeOfChart;
    isNew?: boolean;
    title?: ITitle;
    layout: ILayout;
    style: IChartStyleOption;
    action?: IKeyValues;
    line: {
        time?: ITimeRange;
    } & IKeyValues<any>;
    description?: string;
    version?: string;
    variables?: ReactNode;
}
export declare const defaultSettings: ISettings;
export declare const defaultDashboard: IDashboard;
export declare const variableTypeMapping: {
    [key in EVariableType]: string;
};
export {};
