import { Action, BenchColumnLayoutData, DesktopDisplayStyle, DesktopNotification, DisplayParentModel, DisplayViewId, Form, Menu, NativeNotificationDefaults, ObjectOrChildModel, Outline, ViewButton, Widget, WidgetModel } from '../index';
export interface DesktopModel extends WidgetModel, DisplayParentModel {
    /**
     * Configures the style which defines the basic layout of the application.
     *
     * Default is {@link DesktopDisplayStyle.DEFAULT}.
     */
    displayStyle?: DesktopDisplayStyle;
    /**
     * Configures the title of the desktop shown in the browser window.
     */
    title?: string;
    /**
     * Configures the url pointing to the image that should be displayed on the top right of the application in the {@link DesktopHeader}.
     *
     * @see DesktopLogo
     */
    logoId?: string;
    /**
     * Configures whether the {@link logo} should be clickable and trigger a {@link DesktopEventMap.logoAction} when clicked.
     *
     * Default is false.
     */
    logoActionEnabled?: boolean;
    /**
     * Defines whether the {@link DesktopNavigation} should be visible.
     *
     * Default is true.
     */
    navigationVisible?: boolean;
    /**
     * Defines whether the {@link DesktopNavigationHandle}, which enables the user to hide and show the navigation, should be visible.
     *
     * Default is true.
     */
    navigationHandleVisible?: boolean;
    /**
     * Defines whether the {@link DesktopBench} should be visible.
     *
     * Default is true.
     */
    benchVisible?: boolean;
    /**
     * Configures the layout data used by the {@link FlexboxLayout} to arrange the view areas in the {@link DesktopBench}.
     *
     * @see BenchColumn
     */
    benchLayoutData?: BenchColumnLayoutData;
    /**
     * Defines whether the {@link DesktopHeader} should be visible.
     *
     * Default is true.
     */
    headerVisible?: boolean;
    /**
     * Configures the menus to be displayed in the {@link DesktopToolBox} in the {@link DesktopHeader}.
     */
    menus?: ObjectOrChildModel<Menu>[];
    /**
     * Defines the (toast) notifications that should be shown on the top right of the desktop.
     */
    notifications?: ObjectOrChildModel<DesktopNotification>[];
    /**
     * Configures the default settings for native notifications. A specific notification can override these settings if
     * desired.
     *
     * The default object is initialized with the desktop's title and logo id. If these values change the defaults won't
     * be adjusted automatically. If you want them to be aligned you need to update the native notification defaults
     * whenever the title or logo changes.
     *
     * *Note*: SVG icons may not work with every browser, you may have to use a bitmap icon.
     */
    nativeNotificationDefaults?: NativeNotificationDefaults;
    /**
     * AddOns are custom widgets that are rendered with the desktop and may or may not have a visual representation.
     */
    addOns?: ObjectOrChildModel<Widget>[];
    /**
     * Configures the keystrokes that should be registered in the current {@link keyStrokeContext}.
     *
     * Use the {@link ActionModel.keyStroke} to assign the keys that need to be pressed.
     *
     * @see KeyStrokeContext
     */
    keyStrokes?: ObjectOrChildModel<Action>[];
    /**
     * View buttons are displayed on the top of the {@link DesktopNavigation} and are mostly used to so switch between {@link Outline}s by using {@link OutlineViewButton}.
     */
    viewButtons?: ObjectOrChildModel<ViewButton>[];
    /**
     * The currently active {@link Outline}.
     */
    outline?: ObjectOrChildModel<Outline> | string;
    /**
     * Configures the forms with {@link Form.DisplayHint.VIEW} that should be selected.
     *
     * For each area of the {@link DesktopBench} only one form can be selected.
     */
    selectedViewTabs?: Map<DisplayViewId, Form> | Form[] | string[];
    /**
     * The name of the CSS theme to be used for the application.
     * @see Desktop.setTheme
     */
    theme?: string;
    /**
     * Defines whether the application should be in dense mode.
     *
     * Dense means that certain UI elements are displayed smaller,
     * like smaller table rows or smaller logical grid rows, so the user can see more information at once on the screen.
     *
     * Default is false.
     */
    dense?: boolean;
    /**
     * Configures whether the keystrokes to select {@link DesktopTab}s should be enabled.
     *
     * Default is true.
     *
     * @see DesktopTabSelectKeyStroke
     */
    selectViewTabsKeyStrokesEnabled?: boolean;
    /**
     * Configures the modifier used by {@link DesktopTabSelectKeyStroke}.
     *
     * Only has an effect is {@link selectViewTabsKeyStrokesEnabled} is set to true.
     */
    selectViewTabsKeyStrokeModifier?: string;
    /**
     * Configures whether the position of the splitter between the navigation and the bench should be stored in the session
     * storage, so that the position may be restored after a page reload. If set to false, the default position is used.
     *
     * Default is true.
     */
    cacheSplitterPosition?: boolean;
}
//# sourceMappingURL=DesktopModel.d.ts.map