/** @hidden */ /** */
//@ts-ignore
import { ReactChild } from 'react';
import { PluginModel } from '../../api';
export type PanelInfo = {
    hash: string;
    key: string;
    binder: PluginModel.IStateBinder<any>;
    component: ReactChild;
    settings: PluginModel.PanelSettings;
};
export type Model = {
    panels: PanelInfo[];
    layout: string[];
    /** Defines active top panel (panel with setting.location = 'top') */
    activeTopPanelId?: string | null;
    /** Defines active bottom panel (panel with setting.location = 'bottom') */
    activeBottomPanelId?: string | null;
};
export type Msg = {
    type: 'Register-Panel';
    payload: {
        panelId: string;
        key: string;
        component: ReactChild;
        binder: PluginModel.IStateBinder<any>;
        settings: PluginModel.PanelSettings;
    };
} | {
    type: 'update-panel';
    payload: {
        panelId: string;
        settings: Partial<PluginModel.PanelSettings>;
    };
} | {
    type: 'set-layout';
    payload: {
        layout: string[];
    };
} | {
    type: 'set-active-panel';
    payload: {
        id: string | null;
        location: PluginModel.PanelLocation;
    };
};
