import type { GridItem, PanelConfig, PanelType } from '../_core';
export interface TimeRange {
    from: number;
    to: number;
}
interface DashboardSnapshot {
    title: string;
    panels: Record<string, PanelConfig>;
    layouts: GridItem[];
}
export declare const useDashboardStore: import("pinia").StoreDefinition<"dashboard", Pick<{
    title: import("vue").Ref<string, string>;
    panels: import("vue").Ref<Record<string, PanelConfig>, Record<string, PanelConfig>>;
    layouts: import("vue").Ref<{
        i: string;
        x: number;
        y: number;
        w: number;
        h: number;
        minH?: number | undefined;
        minW?: number | undefined;
    }[], GridItem[] | {
        i: string;
        x: number;
        y: number;
        w: number;
        h: number;
        minH?: number | undefined;
        minW?: number | undefined;
    }[]>;
    isEditing: import("vue").Ref<boolean, boolean>;
    editingPanelId: import("vue").Ref<string | null, string | null>;
    addPanelModalOpen: import("vue").Ref<boolean, boolean>;
    timeRange: import("vue").Ref<{
        from: number;
        to: number;
    }, TimeRange | {
        from: number;
        to: number;
    }>;
    autoRefresh: import("vue").Ref<number, number>;
    _editSnapshot: import("vue").Ref<{
        title: string;
        panels: Record<string, PanelConfig>;
        layouts: {
            i: string;
            x: number;
            y: number;
            w: number;
            h: number;
            minH?: number | undefined;
            minW?: number | undefined;
        }[];
    } | null, DashboardSnapshot | {
        title: string;
        panels: Record<string, PanelConfig>;
        layouts: {
            i: string;
            x: number;
            y: number;
            w: number;
            h: number;
            minH?: number | undefined;
            minW?: number | undefined;
        }[];
    } | null>;
    isDirty: import("vue").Ref<boolean, boolean>;
    panelRefreshKeys: import("vue").Ref<Record<string, number>, Record<string, number>>;
    addPanel: (type: PanelType) => void;
    removePanel: (id: string) => void;
    clonePanel: (id: string) => void;
    updatePanel: (id: string, patch: Partial<PanelConfig>) => void;
    clearPanels: () => void;
    setLayouts: (newLayouts: GridItem[]) => void;
    startEditing: () => void;
    confirmSave: (onSave?: (json: string) => void) => void;
    discardChanges: () => void;
    setEditingPanel: (id: string | null) => void;
    toggleEditing: () => void;
    setEditing: (v: boolean) => void;
    setTimeRange: (range: TimeRange) => void;
    setAutoRefresh: (seconds: number) => void;
    refresh: () => void;
    refreshPanel: (id: string) => void;
    exportJSON: () => string;
    importJSON: (json: string) => boolean;
}, "title" | "panels" | "layouts" | "isEditing" | "editingPanelId" | "addPanelModalOpen" | "timeRange" | "autoRefresh" | "_editSnapshot" | "isDirty" | "panelRefreshKeys">, Pick<{
    title: import("vue").Ref<string, string>;
    panels: import("vue").Ref<Record<string, PanelConfig>, Record<string, PanelConfig>>;
    layouts: import("vue").Ref<{
        i: string;
        x: number;
        y: number;
        w: number;
        h: number;
        minH?: number | undefined;
        minW?: number | undefined;
    }[], GridItem[] | {
        i: string;
        x: number;
        y: number;
        w: number;
        h: number;
        minH?: number | undefined;
        minW?: number | undefined;
    }[]>;
    isEditing: import("vue").Ref<boolean, boolean>;
    editingPanelId: import("vue").Ref<string | null, string | null>;
    addPanelModalOpen: import("vue").Ref<boolean, boolean>;
    timeRange: import("vue").Ref<{
        from: number;
        to: number;
    }, TimeRange | {
        from: number;
        to: number;
    }>;
    autoRefresh: import("vue").Ref<number, number>;
    _editSnapshot: import("vue").Ref<{
        title: string;
        panels: Record<string, PanelConfig>;
        layouts: {
            i: string;
            x: number;
            y: number;
            w: number;
            h: number;
            minH?: number | undefined;
            minW?: number | undefined;
        }[];
    } | null, DashboardSnapshot | {
        title: string;
        panels: Record<string, PanelConfig>;
        layouts: {
            i: string;
            x: number;
            y: number;
            w: number;
            h: number;
            minH?: number | undefined;
            minW?: number | undefined;
        }[];
    } | null>;
    isDirty: import("vue").Ref<boolean, boolean>;
    panelRefreshKeys: import("vue").Ref<Record<string, number>, Record<string, number>>;
    addPanel: (type: PanelType) => void;
    removePanel: (id: string) => void;
    clonePanel: (id: string) => void;
    updatePanel: (id: string, patch: Partial<PanelConfig>) => void;
    clearPanels: () => void;
    setLayouts: (newLayouts: GridItem[]) => void;
    startEditing: () => void;
    confirmSave: (onSave?: (json: string) => void) => void;
    discardChanges: () => void;
    setEditingPanel: (id: string | null) => void;
    toggleEditing: () => void;
    setEditing: (v: boolean) => void;
    setTimeRange: (range: TimeRange) => void;
    setAutoRefresh: (seconds: number) => void;
    refresh: () => void;
    refreshPanel: (id: string) => void;
    exportJSON: () => string;
    importJSON: (json: string) => boolean;
}, never>, Pick<{
    title: import("vue").Ref<string, string>;
    panels: import("vue").Ref<Record<string, PanelConfig>, Record<string, PanelConfig>>;
    layouts: import("vue").Ref<{
        i: string;
        x: number;
        y: number;
        w: number;
        h: number;
        minH?: number | undefined;
        minW?: number | undefined;
    }[], GridItem[] | {
        i: string;
        x: number;
        y: number;
        w: number;
        h: number;
        minH?: number | undefined;
        minW?: number | undefined;
    }[]>;
    isEditing: import("vue").Ref<boolean, boolean>;
    editingPanelId: import("vue").Ref<string | null, string | null>;
    addPanelModalOpen: import("vue").Ref<boolean, boolean>;
    timeRange: import("vue").Ref<{
        from: number;
        to: number;
    }, TimeRange | {
        from: number;
        to: number;
    }>;
    autoRefresh: import("vue").Ref<number, number>;
    _editSnapshot: import("vue").Ref<{
        title: string;
        panels: Record<string, PanelConfig>;
        layouts: {
            i: string;
            x: number;
            y: number;
            w: number;
            h: number;
            minH?: number | undefined;
            minW?: number | undefined;
        }[];
    } | null, DashboardSnapshot | {
        title: string;
        panels: Record<string, PanelConfig>;
        layouts: {
            i: string;
            x: number;
            y: number;
            w: number;
            h: number;
            minH?: number | undefined;
            minW?: number | undefined;
        }[];
    } | null>;
    isDirty: import("vue").Ref<boolean, boolean>;
    panelRefreshKeys: import("vue").Ref<Record<string, number>, Record<string, number>>;
    addPanel: (type: PanelType) => void;
    removePanel: (id: string) => void;
    clonePanel: (id: string) => void;
    updatePanel: (id: string, patch: Partial<PanelConfig>) => void;
    clearPanels: () => void;
    setLayouts: (newLayouts: GridItem[]) => void;
    startEditing: () => void;
    confirmSave: (onSave?: (json: string) => void) => void;
    discardChanges: () => void;
    setEditingPanel: (id: string | null) => void;
    toggleEditing: () => void;
    setEditing: (v: boolean) => void;
    setTimeRange: (range: TimeRange) => void;
    setAutoRefresh: (seconds: number) => void;
    refresh: () => void;
    refreshPanel: (id: string) => void;
    exportJSON: () => string;
    importJSON: (json: string) => boolean;
}, "refresh" | "addPanel" | "removePanel" | "clonePanel" | "updatePanel" | "clearPanels" | "setLayouts" | "startEditing" | "confirmSave" | "discardChanges" | "setEditingPanel" | "toggleEditing" | "setEditing" | "setTimeRange" | "setAutoRefresh" | "refreshPanel" | "exportJSON" | "importJSON">>;
export {};
