import * as _ngrx_signals from '@ngrx/signals';
import * as _angular_core from '@angular/core';
import { Signal } from '@angular/core';
import * as _acorex_platform_themes_shared from '@acorex/platform/themes/shared';
import { AXValueChangedEvent } from '@acorex/cdk/common';
import { AXActionSheetService } from '@acorex/components/action-sheet';
import { AXDataTableComponent, AXRowCommandItem, AXDataTableRowDbClick, AXRowCommandItemClickEvent } from '@acorex/components/data-table';
import { AXUnsubscriber } from '@acorex/core/utils';
import * as _acorex_platform_core from '@acorex/platform/core';
import { AXPDeviceService } from '@acorex/platform/core';
import { AXPEntityCommandTriggerViewModel, AXPEntityDetailListViewModel } from '@acorex/platform/layout/entity';
import * as _acorex_platform_common from '@acorex/platform/common';
import { AXPMenuItem, AXPSettingsService, AXPMenuVisibilityService } from '@acorex/platform/common';
import { AXPTaskBadgeService } from '@acorex/platform/layout/components';
import { Router, UrlTree } from '@angular/router';
import { AXDrawerComponent } from '@acorex/components/drawer';

declare class AXPEntityDetailListViewComponent {
    private actionSheetService;
    private unsubscriber;
    private workflow;
    protected store: {
        currentMode: _angular_core.Signal<_acorex_platform_themes_shared.AXPThemeMode>;
        currentPalette: _angular_core.Signal<string>;
        systemThemeMode: _angular_core.Signal<_acorex_platform_themes_shared.AXPThemeMode>;
        font: _ngrx_signals.DeepSignal<{
            family: string;
            size: string;
        }>;
        overlayLoading: _angular_core.Signal<boolean>;
        navigationLoading: _angular_core.Signal<boolean>;
        overlayLoadingTaskCount: _angular_core.Signal<number>;
        navigationLoadingTaskCount: _angular_core.Signal<number>;
        sideMenuState: _angular_core.Signal<_acorex_platform_themes_shared.AXPSideMenuState>;
        sideMenuWidth: _angular_core.Signal<number>;
        menuOrientation: _angular_core.Signal<_acorex_platform_themes_shared.AXPMenuOrientation>;
        isPrinting: _angular_core.Signal<boolean>;
        isDarkMode: _angular_core.Signal<boolean>;
        isLightMode: _angular_core.Signal<boolean>;
        isSystemMode: _angular_core.Signal<boolean>;
        isSideMenuOpen: _angular_core.Signal<boolean>;
        isOverlayLoading: _angular_core.Signal<boolean>;
        isNavigationLoading: _angular_core.Signal<boolean>;
        isMenuHorizontal: _angular_core.Signal<boolean>;
        changeThemeMode: (theme: _acorex_platform_themes_shared.AXPThemeMode) => void;
        openSideMenu: () => void;
        closeSideMenu: () => void;
        setSideMenuWidth: (width: number) => void;
        toggleSideMenu: () => void;
        setNavigationLoading: (value: boolean, delay?: number) => void;
        setOverlayLoading: (value: boolean, delay?: number) => void;
        loadSettings: () => Promise<void>;
    } & _ngrx_signals.StateSource<{
        currentMode: _acorex_platform_themes_shared.AXPThemeMode;
        currentPalette: string;
        systemThemeMode: _acorex_platform_themes_shared.AXPThemeMode;
        font: {
            family: string;
            size: string;
        };
        overlayLoading: boolean;
        navigationLoading: boolean;
        overlayLoadingTaskCount: number;
        navigationLoadingTaskCount: number;
        sideMenuState: _acorex_platform_themes_shared.AXPSideMenuState;
        sideMenuWidth: number;
        menuOrientation: _acorex_platform_themes_shared.AXPMenuOrientation;
        isPrinting: boolean;
    }>;
    protected deviceService: AXPDeviceService;
    protected toolbarPrimaryActions: _angular_core.WritableSignal<AXPEntityCommandTriggerViewModel[]>;
    protected toolbarSecondaryActions: _angular_core.WritableSignal<AXPEntityCommandTriggerViewModel[]>;
    vm: AXPEntityDetailListViewModel;
    protected focusedRow: any;
    grid: AXDataTableComponent;
    constructor(actionSheetService: AXActionSheetService, unsubscriber: AXUnsubscriber);
    private readonly destroyed;
    handleChangeSearchValue(e: AXValueChangedEvent): void;
    protected subscribeActionEvents(): void;
    ngAfterViewInit(): void;
    protected dropdownRowItems: _angular_core.Signal<AXRowCommandItem[]>;
    protected commandRowItems: _angular_core.Signal<AXRowCommandItem[]>;
    protected handleRowDbClick(e: AXDataTableRowDbClick): Promise<void>;
    protected getCommandRowItems: () => AXRowCommandItem[];
    protected getDropdownRowItems: (rowData: unknown) => Promise<AXRowCommandItem[]>;
    protected handleSelectedRowsChange(rows: unknown[]): Promise<void>;
    protected handleRowCommandClick(e: AXRowCommandItemClickEvent): Promise<void>;
    private refreshToolbarActions;
    protected destroy(): void;
    ngOnDestroy(): void;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPEntityDetailListViewComponent, never>;
    static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPEntityDetailListViewComponent, "axp-entity-detail-list-view", never, { "vm": { "alias": "viewModel"; "required": false; }; }, {}, never, never, true, never>;
}

declare class AXPRootLayoutFooterComponent {
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPRootLayoutFooterComponent, never>;
    static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPRootLayoutFooterComponent, "axp-dashboard-admin-footer", never, {}, {}, never, never, true, never>;
}

declare class AXPRootLayoutHeaderComponent {
    private config;
    protected store: {
        currentMode: _angular_core.Signal<_acorex_platform_themes_shared.AXPThemeMode>;
        currentPalette: _angular_core.Signal<string>;
        systemThemeMode: _angular_core.Signal<_acorex_platform_themes_shared.AXPThemeMode>;
        font: _ngrx_signals.DeepSignal<{
            family: string;
            size: string;
        }>;
        overlayLoading: _angular_core.Signal<boolean>;
        navigationLoading: _angular_core.Signal<boolean>;
        overlayLoadingTaskCount: _angular_core.Signal<number>;
        navigationLoadingTaskCount: _angular_core.Signal<number>;
        sideMenuState: _angular_core.Signal<_acorex_platform_themes_shared.AXPSideMenuState>;
        sideMenuWidth: _angular_core.Signal<number>;
        menuOrientation: _angular_core.Signal<_acorex_platform_themes_shared.AXPMenuOrientation>;
        isPrinting: _angular_core.Signal<boolean>;
        isDarkMode: _angular_core.Signal<boolean>;
        isLightMode: _angular_core.Signal<boolean>;
        isSystemMode: _angular_core.Signal<boolean>;
        isSideMenuOpen: _angular_core.Signal<boolean>;
        isOverlayLoading: _angular_core.Signal<boolean>;
        isNavigationLoading: _angular_core.Signal<boolean>;
        isMenuHorizontal: _angular_core.Signal<boolean>;
        changeThemeMode: (theme: _acorex_platform_themes_shared.AXPThemeMode) => void;
        openSideMenu: () => void;
        closeSideMenu: () => void;
        setSideMenuWidth: (width: number) => void;
        toggleSideMenu: () => void;
        setNavigationLoading: (value: boolean, delay?: number) => void;
        setOverlayLoading: (value: boolean, delay?: number) => void;
        loadSettings: () => Promise<void>;
    } & _ngrx_signals.StateSource<{
        currentMode: _acorex_platform_themes_shared.AXPThemeMode;
        currentPalette: string;
        systemThemeMode: _acorex_platform_themes_shared.AXPThemeMode;
        font: {
            family: string;
            size: string;
        };
        overlayLoading: boolean;
        navigationLoading: boolean;
        overlayLoadingTaskCount: number;
        navigationLoadingTaskCount: number;
        sideMenuState: _acorex_platform_themes_shared.AXPSideMenuState;
        sideMenuWidth: number;
        menuOrientation: _acorex_platform_themes_shared.AXPMenuOrientation;
        isPrinting: boolean;
    }>;
    private router;
    protected logo: {
        icon: {
            light: _acorex_platform_core.AXPLogoConfig;
            dark: _acorex_platform_core.AXPLogoConfig;
        };
        text: {
            light: _acorex_platform_core.AXPLogoConfig;
            dark: _acorex_platform_core.AXPLogoConfig;
        };
        full: {
            light: _acorex_platform_core.AXPLogoConfig;
            dark: _acorex_platform_core.AXPLogoConfig;
        };
    } | undefined;
    protected toggleSideMenu(): void;
    protected handleLogoClick(): void;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPRootLayoutHeaderComponent, never>;
    static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPRootLayoutHeaderComponent, "axp-dashboard-admin-header", never, {}, {}, never, never, true, never>;
}

declare class AXPRootLayoutMenuComponent {
    protected menuStore: {
        items: Signal<AXPMenuItem[]>;
        selectedMenuItem: _ngrx_signals.DeepSignal<{
            item: AXPMenuItem | null;
            isFullMatch: boolean;
        }>;
        setMenuItems: (items: AXPMenuItem[]) => void;
        selectMenuItemByRoute: (path: string) => void;
        executeCommand: (item: AXPMenuItem) => void;
        isItemOpen: (item: AXPMenuItem) => boolean;
    } & _ngrx_signals.StateSource<{
        items: AXPMenuItem[];
        selectedMenuItem: {
            item: AXPMenuItem | null;
            isFullMatch: boolean;
        };
    }>;
    protected router: Router;
    protected badgeService: AXPTaskBadgeService;
    protected settingsService: AXPSettingsService;
    protected visibilityService: AXPMenuVisibilityService;
    protected badgeVisible: _angular_core.WritableSignal<boolean>;
    constructor();
    ngOnInit(): Promise<void>;
    onMenuItemClick(item: AXPMenuItem, hasRouterLink?: boolean): void;
    protected sort(items: AXPMenuItem[]): AXPMenuItem[];
    protected getMenuBadge(item: AXPMenuItem): Signal<number>;
    /**
     * Checks if a menu item should be visible based on permissions and features.
     */
    protected isItemVisible(item: AXPMenuItem): boolean;
    /**
     * Determines if a menu item should be rendered.
     * A menu item should be rendered if:
     * 1. It has a routerLink, OR
     * 2. It has visible children, OR
     * 3. It has a command (for non-router navigation)
     */
    protected shouldRenderMenuItem(item: AXPMenuItem): boolean;
    /**
     * Builds a UrlTree that can be consumed by the routerLink directive when the menu item targets
     * an internal route. When the item does not represent an internal route, null is returned so the
     * command execution pipeline remains responsible for navigation.
     */
    protected getRouterLink(item: AXPMenuItem): UrlTree | null;
    /**
     * Extracts internal navigation data regardless of whether it is provided via the legacy `path`
     * property, a direct navigate command, or the execution command wrapper.
     */
    private extractRouterNavigation;
    /**
     * Determines whether routerLink can safely be used based on the target path and navigation
     * extras. If the navigation requires additional runtime behaviour (e.g., opening in a new tab),
     * we fallback to the imperative command pipeline.
     */
    private isRouterLinkCompatible;
    /**
     * Ensures router links include a leading slash while preserving any query parameters or
     * fragments present in the original path.
     */
    private normalizeRouterPath;
    private isExternalNavigation;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPRootLayoutMenuComponent, never>;
    static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPRootLayoutMenuComponent, "axp-side-menu", never, {}, {}, never, never, true, never>;
}

declare class AXPRootHorizontalLayoutComponent {
    drawer: AXDrawerComponent;
    private config;
    protected logo: {
        icon: {
            light: _acorex_platform_core.AXPLogoConfig;
            dark: _acorex_platform_core.AXPLogoConfig;
        };
        text: {
            light: _acorex_platform_core.AXPLogoConfig;
            dark: _acorex_platform_core.AXPLogoConfig;
        };
        full: {
            light: _acorex_platform_core.AXPLogoConfig;
            dark: _acorex_platform_core.AXPLogoConfig;
        };
    } | undefined;
    protected store: {
        currentMode: _angular_core.Signal<_acorex_platform_themes_shared.AXPThemeMode>;
        currentPalette: _angular_core.Signal<string>;
        systemThemeMode: _angular_core.Signal<_acorex_platform_themes_shared.AXPThemeMode>;
        font: _ngrx_signals.DeepSignal<{
            family: string;
            size: string;
        }>;
        overlayLoading: _angular_core.Signal<boolean>;
        navigationLoading: _angular_core.Signal<boolean>;
        overlayLoadingTaskCount: _angular_core.Signal<number>;
        navigationLoadingTaskCount: _angular_core.Signal<number>;
        sideMenuState: _angular_core.Signal<_acorex_platform_themes_shared.AXPSideMenuState>;
        sideMenuWidth: _angular_core.Signal<number>;
        menuOrientation: _angular_core.Signal<_acorex_platform_themes_shared.AXPMenuOrientation>;
        isPrinting: _angular_core.Signal<boolean>;
        isDarkMode: _angular_core.Signal<boolean>;
        isLightMode: _angular_core.Signal<boolean>;
        isSystemMode: _angular_core.Signal<boolean>;
        isSideMenuOpen: _angular_core.Signal<boolean>;
        isOverlayLoading: _angular_core.Signal<boolean>;
        isNavigationLoading: _angular_core.Signal<boolean>;
        isMenuHorizontal: _angular_core.Signal<boolean>;
        changeThemeMode: (theme: _acorex_platform_themes_shared.AXPThemeMode) => void;
        openSideMenu: () => void;
        closeSideMenu: () => void;
        setSideMenuWidth: (width: number) => void;
        toggleSideMenu: () => void;
        setNavigationLoading: (value: boolean, delay?: number) => void;
        setOverlayLoading: (value: boolean, delay?: number) => void;
        loadSettings: () => Promise<void>;
    } & _ngrx_signals.StateSource<{
        currentMode: _acorex_platform_themes_shared.AXPThemeMode;
        currentPalette: string;
        systemThemeMode: _acorex_platform_themes_shared.AXPThemeMode;
        font: {
            family: string;
            size: string;
        };
        overlayLoading: boolean;
        navigationLoading: boolean;
        overlayLoadingTaskCount: number;
        navigationLoadingTaskCount: number;
        sideMenuState: _acorex_platform_themes_shared.AXPSideMenuState;
        sideMenuWidth: number;
        menuOrientation: _acorex_platform_themes_shared.AXPMenuOrientation;
        isPrinting: boolean;
    }>;
    protected handleCollapsedChange(value: boolean): void;
    protected handleResizingEnded(e: AXValueChangedEvent<number>): void;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPRootHorizontalLayoutComponent, never>;
    static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPRootHorizontalLayoutComponent, "axp-root-horizontal-layout", never, {}, {}, never, never, true, never>;
}

declare class AXPRootVerticalLayoutComponent {
    drawer: AXDrawerComponent;
    private config;
    protected logo: {
        icon: {
            light: _acorex_platform_core.AXPLogoConfig;
            dark: _acorex_platform_core.AXPLogoConfig;
        };
        text: {
            light: _acorex_platform_core.AXPLogoConfig;
            dark: _acorex_platform_core.AXPLogoConfig;
        };
        full: {
            light: _acorex_platform_core.AXPLogoConfig;
            dark: _acorex_platform_core.AXPLogoConfig;
        };
    } | undefined;
    protected store: {
        currentMode: _angular_core.Signal<_acorex_platform_themes_shared.AXPThemeMode>;
        currentPalette: _angular_core.Signal<string>;
        systemThemeMode: _angular_core.Signal<_acorex_platform_themes_shared.AXPThemeMode>;
        font: _ngrx_signals.DeepSignal<{
            family: string;
            size: string;
        }>;
        overlayLoading: _angular_core.Signal<boolean>;
        navigationLoading: _angular_core.Signal<boolean>;
        overlayLoadingTaskCount: _angular_core.Signal<number>;
        navigationLoadingTaskCount: _angular_core.Signal<number>;
        sideMenuState: _angular_core.Signal<_acorex_platform_themes_shared.AXPSideMenuState>;
        sideMenuWidth: _angular_core.Signal<number>;
        menuOrientation: _angular_core.Signal<_acorex_platform_themes_shared.AXPMenuOrientation>;
        isPrinting: _angular_core.Signal<boolean>;
        isDarkMode: _angular_core.Signal<boolean>;
        isLightMode: _angular_core.Signal<boolean>;
        isSystemMode: _angular_core.Signal<boolean>;
        isSideMenuOpen: _angular_core.Signal<boolean>;
        isOverlayLoading: _angular_core.Signal<boolean>;
        isNavigationLoading: _angular_core.Signal<boolean>;
        isMenuHorizontal: _angular_core.Signal<boolean>;
        changeThemeMode: (theme: _acorex_platform_themes_shared.AXPThemeMode) => void;
        openSideMenu: () => void;
        closeSideMenu: () => void;
        setSideMenuWidth: (width: number) => void;
        toggleSideMenu: () => void;
        setNavigationLoading: (value: boolean, delay?: number) => void;
        setOverlayLoading: (value: boolean, delay?: number) => void;
        loadSettings: () => Promise<void>;
    } & _ngrx_signals.StateSource<{
        currentMode: _acorex_platform_themes_shared.AXPThemeMode;
        currentPalette: string;
        systemThemeMode: _acorex_platform_themes_shared.AXPThemeMode;
        font: {
            family: string;
            size: string;
        };
        overlayLoading: boolean;
        navigationLoading: boolean;
        overlayLoadingTaskCount: number;
        navigationLoadingTaskCount: number;
        sideMenuState: _acorex_platform_themes_shared.AXPSideMenuState;
        sideMenuWidth: number;
        menuOrientation: _acorex_platform_themes_shared.AXPMenuOrientation;
        isPrinting: boolean;
    }>;
    protected deviceService: AXPDeviceService;
    protected router: Router;
    constructor();
    protected handleResizingEnded(e: AXValueChangedEvent<number>): void;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPRootVerticalLayoutComponent, never>;
    static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPRootVerticalLayoutComponent, "axp-root-vertical-layout", never, {}, {}, never, never, true, never>;
}

declare class AXPRootLayoutComponent {
    protected layout: {
        currentMode: _angular_core.Signal<_acorex_platform_themes_shared.AXPThemeMode>;
        currentPalette: _angular_core.Signal<string>;
        systemThemeMode: _angular_core.Signal<_acorex_platform_themes_shared.AXPThemeMode>;
        font: _ngrx_signals.DeepSignal<{
            family: string;
            size: string;
        }>;
        overlayLoading: _angular_core.Signal<boolean>;
        navigationLoading: _angular_core.Signal<boolean>;
        overlayLoadingTaskCount: _angular_core.Signal<number>;
        navigationLoadingTaskCount: _angular_core.Signal<number>;
        sideMenuState: _angular_core.Signal<_acorex_platform_themes_shared.AXPSideMenuState>;
        sideMenuWidth: _angular_core.Signal<number>;
        menuOrientation: _angular_core.Signal<_acorex_platform_themes_shared.AXPMenuOrientation>;
        isPrinting: _angular_core.Signal<boolean>;
        isDarkMode: _angular_core.Signal<boolean>;
        isLightMode: _angular_core.Signal<boolean>;
        isSystemMode: _angular_core.Signal<boolean>;
        isSideMenuOpen: _angular_core.Signal<boolean>;
        isOverlayLoading: _angular_core.Signal<boolean>;
        isNavigationLoading: _angular_core.Signal<boolean>;
        isMenuHorizontal: _angular_core.Signal<boolean>;
        changeThemeMode: (theme: _acorex_platform_themes_shared.AXPThemeMode) => void;
        openSideMenu: () => void;
        closeSideMenu: () => void;
        setSideMenuWidth: (width: number) => void;
        toggleSideMenu: () => void;
        setNavigationLoading: (value: boolean, delay?: number) => void;
        setOverlayLoading: (value: boolean, delay?: number) => void;
        loadSettings: () => Promise<void>;
    } & _ngrx_signals.StateSource<{
        currentMode: _acorex_platform_themes_shared.AXPThemeMode;
        currentPalette: string;
        systemThemeMode: _acorex_platform_themes_shared.AXPThemeMode;
        font: {
            family: string;
            size: string;
        };
        overlayLoading: boolean;
        navigationLoading: boolean;
        overlayLoadingTaskCount: number;
        navigationLoadingTaskCount: number;
        sideMenuState: _acorex_platform_themes_shared.AXPSideMenuState;
        sideMenuWidth: number;
        menuOrientation: _acorex_platform_themes_shared.AXPMenuOrientation;
        isPrinting: boolean;
    }>;
    protected menuStore: {
        items: _angular_core.Signal<_acorex_platform_common.AXPMenuItem[]>;
        selectedMenuItem: _ngrx_signals.DeepSignal<{
            item: _acorex_platform_common.AXPMenuItem | null;
            isFullMatch: boolean;
        }>;
        setMenuItems: (items: _acorex_platform_common.AXPMenuItem[]) => void;
        selectMenuItemByRoute: (path: string) => void;
        executeCommand: (item: _acorex_platform_common.AXPMenuItem) => void;
        isItemOpen: (item: _acorex_platform_common.AXPMenuItem) => boolean;
    } & _ngrx_signals.StateSource<{
        items: _acorex_platform_common.AXPMenuItem[];
        selectedMenuItem: {
            item: _acorex_platform_common.AXPMenuItem | null;
            isFullMatch: boolean;
        };
    }>;
    protected router: Router;
    private eventService;
    private sessionService;
    private unsubscriber;
    private contextStore;
    ngOnInit(): void;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPRootLayoutComponent, never>;
    static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPRootLayoutComponent, "ng-component", never, {}, {}, never, never, true, never>;
}

declare class AXPDefaultThemeModule {
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPDefaultThemeModule, never>;
    static ɵmod: _angular_core.ɵɵNgModuleDeclaration<AXPDefaultThemeModule, never, [typeof _acorex_platform_common.AXPCommonModule, typeof _acorex_platform_themes_shared.AXPThemesSharedModule], never>;
    static ɵinj: _angular_core.ɵɵInjectorDeclaration<AXPDefaultThemeModule>;
}

export { AXPDefaultThemeModule, AXPEntityDetailListViewComponent, AXPRootHorizontalLayoutComponent, AXPRootLayoutComponent, AXPRootLayoutFooterComponent, AXPRootLayoutHeaderComponent, AXPRootLayoutMenuComponent, AXPRootVerticalLayoutComponent };
