import { SidebarComponentConfig, SidebarFooterAction, SidebarScopeConfig, SidebarSection, SidebarUser } from '../sidebar/types';
import { SidebarComponent } from '../sidebar/component';
import { TopMenuBar, TopMenuBarActionInput, TopMenuBarConfig, TopMenuBarUser } from './app-shell';
export interface CoreAppRouteLabel {
    pattern: RegExp;
    label: string;
}
export interface CoreAppSidebarPresetOptions extends Omit<SidebarComponentConfig, 'container' | 'sections'> {
    basePath?: string;
    sections?: SidebarSection[];
}
export interface CoreAppTopbarPresetOptions extends Omit<TopMenuBarConfig, 'actions' | 'current' | 'product'> {
    basePath?: string;
    pathname?: string;
    product?: string;
    current?: string;
    actions?: TopMenuBarActionInput[];
    includeSearchAction?: boolean;
    includeFeedbackAction?: boolean;
    includeHelpAction?: boolean;
}
export interface CoreAppChromePreset {
    sidebar: Omit<SidebarComponentConfig, 'container'>;
    topbar: TopMenuBarConfig;
}
export interface CoreAppChromePresetOptions {
    basePath?: string;
    pathname?: string;
    scope?: SidebarScopeConfig;
    sidebarUser?: SidebarUser;
    sidebarFooterActions?: SidebarFooterAction[];
    topbarUser?: TopMenuBarUser;
    topbarActions?: TopMenuBarActionInput[];
}
export interface CoreAppChromeMountOptions extends CoreAppChromePresetOptions {
    sidebarContainer: HTMLElement | string;
    topbarContainer?: HTMLElement | string;
    sidebar?: CoreAppSidebarPresetOptions;
    topbar?: CoreAppTopbarPresetOptions;
    /**
     * Move explicitly marked server-rendered topbar action nodes into the new topbar.
     * Useful for native hooks that are initialized outside the chrome mount.
     * @default true
     */
    preserveTopbarActions?: boolean;
    /**
     * Selector for preserved action nodes inside the topbar container.
     * @default '[data-core-app-topbar-action]'
     */
    topbarActionSelector?: string;
    /**
     * Remove existing placeholder/server-rendered children before mounting.
     * @default true
     */
    clearContainers?: boolean;
}
export interface CoreAppChromeDomMountOptions extends CoreAppChromePresetOptions {
    root?: ParentNode;
    sidebarSelector?: string;
    topbarSelector?: string;
    sidebar?: CoreAppSidebarPresetOptions;
    topbar?: CoreAppTopbarPresetOptions;
    preserveTopbarActions?: boolean;
    topbarActionSelector?: string;
    clearContainers?: boolean;
}
export interface CoreAppChromeMount {
    sidebar: SidebarComponent;
    topbar?: TopMenuBar;
    destroy: () => void;
}
export declare const CORE_APP_ROUTE_LABELS: CoreAppRouteLabel[];
export declare function createCoreAppSidebarSections(basePath?: string): SidebarSection[];
export declare function getCoreAppRouteLabel(pathname: string, basePath?: string): string;
export declare function createCoreAppSidebarConfig(options?: CoreAppSidebarPresetOptions): Omit<SidebarComponentConfig, 'container'>;
export declare function createCoreAppTopbarActions(options?: Pick<CoreAppTopbarPresetOptions, 'includeSearchAction' | 'includeFeedbackAction' | 'includeHelpAction'>): TopMenuBarActionInput[];
export declare function createCoreAppTopbarConfig(options?: CoreAppTopbarPresetOptions): TopMenuBarConfig;
export declare function createCoreAppChromePreset(options?: CoreAppChromePresetOptions): CoreAppChromePreset;
export declare function mountCoreAppChrome(options: CoreAppChromeMountOptions): CoreAppChromeMount;
export declare function mountCoreAppChromeFromDom(options?: CoreAppChromeDomMountOptions): CoreAppChromeMount | null;
//# sourceMappingURL=core-app-chrome.d.ts.map