import { IEditor, FocusTracker } from '@alilc/lowcode-editor-core';
import { DockConfig, WidgetConfig, PanelDockConfig, DialogDockConfig, DividerConfig } from './types';
import { Panel } from './widget/panel';
import { WidgetContainer } from './widget/widget-container';
import { Area } from './area';
import { IWidget, Widget } from './widget/widget';
import { PanelDock } from './widget/panel-dock';
import { Dock } from './widget/dock';
import { Stage, StageConfig } from './widget/stage';
import { EditorConfig, PluginClassSet, IPublicTypeWidgetBaseConfig, IPublicTypeSkeletonConfig, IPublicApiSkeleton, IPublicTypeConfigTransducer, IPublicTypePanelConfig } from '@alilc/lowcode-types';
export declare enum SkeletonEvents {
    PANEL_DOCK_ACTIVE = "skeleton.panel-dock.active",
    PANEL_DOCK_UNACTIVE = "skeleton.panel-dock.unactive",
    PANEL_SHOW = "skeleton.panel.show",
    PANEL_HIDE = "skeleton.panel.hide",
    WIDGET_SHOW = "skeleton.widget.show",
    WIDGET_HIDE = "skeleton.widget.hide",
    WIDGET_DISABLE = "skeleton.widget.disable",
    WIDGET_ENABLE = "skeleton.widget.enable"
}
export interface ISkeleton extends Skeleton {
}
export declare class Skeleton implements Omit<IPublicApiSkeleton, 'showPanel' | 'hidePanel' | 'showWidget' | 'enableWidget' | 'hideWidget' | 'disableWidget' | 'showArea' | 'onShowPanel' | 'onHidePanel' | 'onShowWidget' | 'onHideWidget' | 'remove' | 'hideArea' | 'add' | 'getAreaItems' | 'onDisableWidget' | 'onEnableWidget'> {
    readonly editor: IEditor;
    readonly viewName: string;
    private panels;
    private configTransducers;
    private containers;
    readonly leftArea: Area<DockConfig | PanelDockConfig | DialogDockConfig>;
    readonly topArea: Area<DockConfig | DividerConfig | PanelDockConfig | DialogDockConfig>;
    readonly subTopArea: Area<DockConfig | DividerConfig | PanelDockConfig | DialogDockConfig>;
    readonly toolbar: Area<DockConfig | DividerConfig | PanelDockConfig | DialogDockConfig>;
    readonly leftFixedArea: Area<IPublicTypePanelConfig, Panel>;
    readonly leftFloatArea: Area<IPublicTypePanelConfig, Panel>;
    readonly rightArea: Area<IPublicTypePanelConfig, Panel>;
    readonly mainArea: Area<WidgetConfig | IPublicTypePanelConfig, Widget | Panel>;
    readonly bottomArea: Area<IPublicTypePanelConfig, Panel>;
    readonly stages: Area<StageConfig, Stage>;
    readonly widgets: IWidget[];
    readonly focusTracker: FocusTracker;
    constructor(editor: IEditor, viewName?: string);
    /**
     * setup events
     *
     * @memberof Skeleton
     */
    setupEvents(): void;
    /**
     * set isFloat status for panel
     *
     * @param {*} panel
     * @memberof Skeleton
     */
    toggleFloatStatus(panel: Panel): void;
    buildFromConfig(config?: EditorConfig, components?: PluginClassSet): void;
    private setupPlugins;
    postEvent(event: SkeletonEvents, ...args: any[]): void;
    createWidget(config: IPublicTypeWidgetBaseConfig | IWidget): IWidget;
    getWidget(name: string): IWidget | undefined;
    createPanel(config: IPublicTypePanelConfig): Panel;
    getPanel(name: string): Panel | undefined;
    getStage(name: string): Stage;
    createStage(config: any): string;
    createContainer(name: string, handle: (item: any) => any, exclusive?: boolean, checkVisible?: () => boolean, defaultSetCurrent?: boolean): WidgetContainer<any, any>;
    private parseConfig;
    registerConfigTransducer(transducer: IPublicTypeConfigTransducer, level?: number, id?: string): void;
    getRegisteredConfigTransducers(): IPublicTypeConfigTransducer[];
    add(config: IPublicTypeSkeletonConfig, extraConfig?: Record<string, any>): IWidget | Widget | Panel | Stage | Dock | PanelDock | undefined;
}
