import { DebugService, StorageService } from '../common';
import { SlotViewManager } from './slot-view-manager';
import { ViewManager } from './view-manager';
import type { View, ViewOpenOption } from './view-protocol';
interface SavedView {
    factoryId: string;
    option: any;
    slot?: string | undefined;
    children?: SavedView[] | undefined;
    slots?: SavedView[] | undefined;
    state?: any | undefined;
    openOption?: ViewOpenOption | undefined;
}
export declare namespace SavedView {
    function is(data?: Record<string, any>): data is SavedView;
}
export declare class ViewStorage {
    protected storageKey: string;
    protected restoreCount: number;
    protected readonly viewManager: ViewManager;
    protected readonly slotViewManager: SlotViewManager;
    protected readonly debugService: DebugService;
    protected readonly storageService: StorageService;
    protected shouldStoreViews: boolean;
    get canStoreView(): boolean;
    get onlyRootView(): boolean;
    constructor(viewManager: ViewManager, slotViewManager: SlotViewManager, debugService: DebugService, storageService: StorageService);
    disableStoreView(): void;
    enableStoreView(): void;
    resetViews(): void;
    saveViews(): Promise<void>;
    protected getViewInfo(view: View, slot?: string, openOption?: ViewOpenOption): SavedView | undefined;
    protected getViewBaseInfo(view: View, slot?: string): SavedView | undefined;
    protected getViewSlotsInfo(parentView: View): SavedView[] | undefined;
    protected getViewChildrenInfo(view: View): SavedView[] | undefined;
    getSavedView(): Promise<SavedView | undefined>;
    restoreView(savedView: SavedView): Promise<View | undefined>;
}
export {};
//# sourceMappingURL=view-storage.d.ts.map