import { ELogic } from './enum';
import { GlobalDSLParamsPeriod } from './period';
import { DashboardReport } from './report';
export interface SubjectItemInfo {
    subject_id: number;
    subject_name: string;
    apps: Array<{
        app_en_name: string;
        app_id: number;
        app_name: string;
    }>;
}
export interface BaseProps {
    globalVariables: {
        [key: string]: any;
        projectId: number;
    };
    payload: Record<string, any>;
    setPayload: (value: Record<string, any>) => void;
}
export interface FusionEditorProps<T extends Record<string, any>> extends BaseProps {
    dsl: T;
    /**
     * 看板 id
     */
    dashboardId: string;
    /**
     * 报表 id
     */
    reportId: string;
    /**
     * 返回看板编辑页
     */
    onBack: () => void;
    /**
     * 保存报表
     */
    onSaveReport: (dsl: any, reportName: string) => Promise<void>;
    /**
     * 保存报表，并返回看板编辑页
     */
    onSaveAndBack: (dsl: any, reportName: string) => Promise<void>;
    /**
     * 用户是否有报表的编辑权限
     */
    reportEditorAuth: boolean;
    /**
     * 全量主体信息
     */
    subjects: SubjectItemInfo[];
}
export interface FusionReportProps<T extends Record<string, any>> extends BaseProps {
    dsl: T;
    globalFilter: {
        /**
         * 多个筛选项关系，暂时未使用
         */
        logic: ELogic;
        /**
         * 全局时间筛选
         */
        period: GlobalDSLParamsPeriod | null;
        skipCache?: boolean;
    };
    cardOps: {
        /**
         * 是否隐藏卡片标题和操作按钮
         */
        hideTitleAndOps: boolean;
        /**
         * 是否处于看板编辑态中
         */
        isEditor: boolean;
    };
    /**
     * 报表详情
     */
    report: DashboardReport;
    /**
     * 设置报表为已选中状态，用于图表下钻返回时，设置图表状态
     */
    setReportActive: () => void;
    /**
     * 打开报表的编辑组件，等同于在编辑态点击卡片 Wrapper 上的编辑按钮
     */
    onEditReport: () => void;
    /**
     * 全量主体信息
     */
    subjects: SubjectItemInfo[];
}
export interface FusionReportHooks<T> {
    /**
     * 复制图表时，如果实现了此方法，会调用此方法进行图表的深拷贝，如果未实现，则进行图表的浅拷贝
     */
    onCopy: (dsl: T) => Promise<T>;
}
export interface FusionConfigProps<T extends Record<string, any>> extends BaseProps {
    dsl: T;
    /**
     * 配置区有任意值变化时，都需要调用此方法通知重新渲染图表
     */
    onConfigSave: (dsl: T, reportName?: string) => void;
    /**
     * 是否有图表的编辑权限
     */
    reportEditorAuth: boolean;
    /**
     * 全量主体信息
     */
    subjects: SubjectItemInfo[];
}
