import * as _ngrx_signals from '@ngrx/signals';
import * as _angular_core from '@angular/core';
import { Signal, OnInit, OnDestroy } from '@angular/core';
import * as _acorex_platform_themes_shared from '@acorex/platform/themes/shared';
import { AXClickEvent } from '@acorex/cdk/common';
import * as i1 from '@acorex/cdk/drawer';
import { AXDrawerItemDirective } from '@acorex/cdk/drawer';
import * as _acorex_platform_core from '@acorex/platform/core';
import { AXPActionMenuItem, AXPBreadcrumbItem, AXPBadge, AXPPageStatus, AXPBackButton, AXPExecuteCommand, AXPDeviceService, AXPExecuteCommandResult, AXPExpressionEvaluatorScope, AXPBroadcastEventService } from '@acorex/platform/core';
import { AXPCommandService, AXPPolicyEngineService } from '@acorex/platform/runtime';
import { AXPWorkflowService } from '@acorex/platform/workflow';
import { AXToastService } from '@acorex/components/toast';
import { AXFormatService } from '@acorex/core/format';
import { AXTranslationService } from '@acorex/core/translation';
import { AXPSessionService } from '@acorex/platform/auth';
import { AXPHomePageService } from '@acorex/platform/common';
import { AXBasePageComponent } from '@acorex/components/page';
import * as _acorex_platform_layout_widget_core from '@acorex/platform/layout/widget-core';
import { AXPWidgetNode, AXPPageStatus as AXPPageStatus$1, AXPWidgetContainerComponent, AXPWidgetCoreContextChangeEvent } from '@acorex/platform/layout/widget-core';
import { AXFormComponent } from '@acorex/components/form';
import * as _acorex_platform_layout_views from '@acorex/platform/layout/views';
import { Router, ActivatedRoute } from '@angular/router';

declare abstract class AXPPageLayoutBase {
    abstract primaryMenuItems: Signal<AXPActionMenuItem[]>;
    abstract secondaryMenuItems: Signal<AXPActionMenuItem[]>;
    abstract titleActions: Signal<AXPActionMenuItem[]>;
    abstract hasTitleActions: Signal<boolean>;
    abstract hasPrimaryActions: Signal<boolean>;
    abstract hasSecondaryActions: Signal<boolean>;
    abstract hasActions: Signal<boolean>;
    abstract breadcrumbs: Signal<AXPBreadcrumbItem[]>;
    abstract title: Signal<string>;
    abstract titleIcon: Signal<string | null>;
    abstract hasTitle: Signal<boolean>;
    abstract hasTitleIcon: Signal<boolean>;
    abstract hasDescription: Signal<boolean>;
    abstract description: Signal<string | null>;
    abstract hasBreadcrumbs: Signal<boolean>;
    abstract hasBadge: Signal<boolean>;
    abstract badge: Signal<AXPBadge | null>;
    abstract hasStatus: Signal<boolean>;
    abstract status: Signal<AXPPageStatus | null>;
    abstract hasBackButton: Signal<boolean>;
    abstract backButton: Signal<AXPBackButton | null>;
    abstract onBackButtonClick: () => void | Promise<void>;
    abstract startSideToggle: () => void | Promise<void>;
    abstract execute: (command: AXPExecuteCommand) => void | Promise<void>;
}

declare class AXPPageLayoutComponent {
    #private;
    protected page: AXPPageLayoutBase | null;
    protected layoutService: {
        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 startSideDrawer: _angular_core.Signal<AXDrawerItemDirective | undefined>;
    protected workflow: AXPWorkflowService;
    protected commandService: AXPCommandService;
    private checkScrollableContent;
    protected handleActionClick(item: AXPActionMenuItem): void;
    toggleStartSide(): void;
    protected handleSecondaryActionClick(item: AXPActionMenuItem): void;
    protected handleBackdropClick(e: AXClickEvent): boolean;
    protected execute(command: AXPExecuteCommand): Promise<void>;
    protected handleOnBackdropClick(event: MouseEvent): void;
    protected getEntityData(): Record<string, any> | null;
    protected handleStatusTransition(transition: any): Promise<void>;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPPageLayoutComponent, never>;
    static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPPageLayoutComponent, "axp-page-layout", never, {}, {}, never, ["axp-layout-start-side", "axp-page-toolbar", "axp-page-content", "axp-page-footer"], true, [{ directive: typeof i1.AXDrawerContainerDirective; inputs: {}; outputs: {}; }]>;
}

declare abstract class AXPPageLayoutBaseComponent implements AXPPageLayoutBase {
    #private;
    protected readonly layoutService: {
        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 readonly sessionService: AXPSessionService;
    protected readonly translateService: AXTranslationService;
    protected readonly formatService: AXFormatService;
    protected readonly toastService: AXToastService;
    protected readonly homePageService: AXPHomePageService;
    protected readonly policyService: AXPPolicyEngineService;
    private _updateTrigger;
    protected updateTrigger: _angular_core.Signal<number>;
    protected recompute(): void;
    ngOnInit(): Promise<void>;
    title: _angular_core.WritableSignal<string>;
    titleIcon: _angular_core.WritableSignal<string | null>;
    protected getPageTitle(): string | Promise<string>;
    protected getPageIcon(): string | null | Promise<string | null>;
    hasTitle: _angular_core.Signal<boolean>;
    hasTitleIcon: _angular_core.Signal<boolean>;
    description: _angular_core.WritableSignal<string | null>;
    hasDescription: _angular_core.Signal<boolean>;
    protected getPageDescription(): string | null | Promise<string | null>;
    private defaultBreadCrumbs;
    breadcrumbs: _angular_core.WritableSignal<AXPBreadcrumbItem[]>;
    hasBreadcrumbs: _angular_core.Signal<boolean>;
    protected getPageBreadcrumbs(): AXPBreadcrumbItem[] | Promise<AXPBreadcrumbItem[]>;
    badge: _angular_core.WritableSignal<AXPBadge | null>;
    hasBadge: _angular_core.Signal<boolean>;
    protected getPageBadge(): AXPBadge | null | Promise<AXPBadge | null>;
    status: _angular_core.WritableSignal<AXPPageStatus | null>;
    hasStatus: _angular_core.Signal<boolean>;
    protected getPageStatus(): AXPPageStatus | null | Promise<AXPPageStatus | null>;
    protected layout: _angular_core.Signal<AXPPageLayoutComponent | undefined>;
    protected toggleEndSide(): void;
    protected toggleStartSide(): void;
    primaryMenuItems: _angular_core.WritableSignal<AXPActionMenuItem[]>;
    hasPrimaryActions: _angular_core.Signal<boolean>;
    protected getPrimaryMenuItems(): AXPActionMenuItem[] | Promise<AXPActionMenuItem[]>;
    secondaryMenuItems: _angular_core.WritableSignal<AXPActionMenuItem[]>;
    hasSecondaryActions: _angular_core.Signal<boolean>;
    hasActions: _angular_core.Signal<boolean>;
    protected getSecondaryMenuItems(): AXPActionMenuItem[] | Promise<AXPActionMenuItem[]>;
    titleActions: _angular_core.WritableSignal<AXPActionMenuItem[]>;
    hasTitleActions: _angular_core.Signal<boolean>;
    protected getTitleActions(): AXPActionMenuItem[] | Promise<AXPActionMenuItem[]>;
    backButton: _angular_core.WritableSignal<AXPBackButton | null>;
    hasBackButton: _angular_core.Signal<boolean>;
    protected getBackButton(): (AXPBackButton | null) | Promise<AXPBackButton | null>;
    execute(command: AXPExecuteCommand): void | Promise<void>;
    startSideToggle(): void | Promise<void>;
    onBackButtonClick(): void | Promise<void>;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPPageLayoutBaseComponent, never>;
    static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPPageLayoutBaseComponent, "ng-component", never, {}, {}, never, never, true, never>;
}

declare abstract class AXPPopupLayoutBase {
    abstract primaryMenuItems: Signal<AXPActionMenuItem[]>;
    abstract secondaryMenuItems: Signal<AXPActionMenuItem[]>;
    abstract titleActions: Signal<AXPActionMenuItem[]>;
    abstract hasTitleActions: Signal<boolean>;
    abstract hasPrimaryActions: Signal<boolean>;
    abstract hasSecondaryActions: Signal<boolean>;
    abstract hasActions: Signal<boolean>;
    abstract title: Signal<string>;
    abstract hasTitle: Signal<boolean>;
    abstract execute: (command: AXPExecuteCommand) => void | Promise<void>;
}

declare class AXPPopupLayoutComponent {
    #private;
    protected popup: AXPPopupLayoutBase;
    protected layoutService: {
        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 workflow: AXPWorkflowService;
    private checkScrollableContent;
    protected handleActionClick(item: AXPActionMenuItem): void;
    protected handleSecondaryActionClick(item: AXPActionMenuItem): void;
    protected handleBackdropClick(e: AXClickEvent): boolean;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPPopupLayoutComponent, never>;
    static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPPopupLayoutComponent, "axp-popup-layout", never, {}, {}, never, ["axp-page-content"], true, never>;
}

declare abstract class AXPPopupLayoutBaseComponent extends AXBasePageComponent {
    #private;
    protected readonly layoutService: {
        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 readonly sessionService: AXPSessionService;
    protected readonly translateService: AXTranslationService;
    protected readonly formatService: AXFormatService;
    protected readonly toastService: AXToastService;
    protected readonly homePageService: AXPHomePageService;
    private _updateTrigger;
    protected updateTrigger: _angular_core.Signal<number>;
    protected recompute(): void;
    ngOnInit(): Promise<void>;
    title: _angular_core.WritableSignal<string>;
    protected getPopupTitle(): string | Promise<string>;
    hasTitle: _angular_core.Signal<boolean>;
    protected layout: _angular_core.Signal<AXPPopupLayoutComponent | undefined>;
    primaryMenuItems: _angular_core.WritableSignal<AXPActionMenuItem[]>;
    hasPrimaryActions: _angular_core.Signal<boolean>;
    protected getPrimaryMenuItems(): AXPActionMenuItem[] | Promise<AXPActionMenuItem[]>;
    secondaryMenuItems: _angular_core.WritableSignal<AXPActionMenuItem[]>;
    hasSecondaryActions: _angular_core.Signal<boolean>;
    protected getSecondaryMenuItems(): AXPActionMenuItem[] | Promise<AXPActionMenuItem[]>;
    hasActions: _angular_core.Signal<boolean>;
    titleActions: _angular_core.WritableSignal<AXPActionMenuItem[]>;
    hasTitleActions: _angular_core.Signal<boolean>;
    protected getTitleActions(): AXPActionMenuItem[] | Promise<AXPActionMenuItem[]>;
    execute(command: AXPExecuteCommand): void | Promise<void>;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPPopupLayoutBaseComponent, never>;
    static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPPopupLayoutBaseComponent, "ng-component", never, {}, {}, never, never, true, never>;
}

interface AXPLayoutDetailsViewAction extends AXPActionMenuItem {
    zone: 'header' | 'footer';
    priority: 'primary' | 'secondary';
}
interface AXPLayoutDetailsViewTabItem {
    id: string;
    title: string;
    icon?: string;
    visible?: boolean;
    disabled?: boolean;
    active?: boolean;
    content: AXPWidgetNode[];
}
interface AXPLayoutDetailsViewPage {
    id: string;
    title: string;
    label: string;
    description?: string;
    icon?: string;
    content?: AXPWidgetNode[];
    tabs?: AXPLayoutDetailsViewTabItem[];
    actions?: AXPLayoutDetailsViewAction[];
    isPrimary?: boolean;
    isReadonly?: boolean;
    settings?: {
        commands?: {
            accept?: {
                title: string;
                color: string;
                visible?: string | boolean;
                command: AXPExecuteCommand;
            };
            reject?: {
                title: string;
                color: string;
                visible?: string | boolean;
                command: AXPExecuteCommand;
            };
        };
    };
    load?: (params?: Record<string, any>) => Promise<AXPExecuteCommandResult>;
    execute?: (command: AXPExecuteCommand, context: {}) => Promise<AXPExecuteCommandResult>;
}
interface AXPLayoutDetailsViewAdapter {
    name: string;
    title?: string;
    label?: string;
    description?: string;
    icon?: string;
    actions?: AXPLayoutDetailsViewAction[];
    breadcrumbs?: AXPBreadcrumbItem[];
    pages: AXPLayoutDetailsViewPage[];
    execute?: (command: AXPExecuteCommand, context: {}) => Promise<AXPExecuteCommandResult>;
    load?: (params?: Record<string, any>) => Promise<AXPExecuteCommandResult>;
    exitUrl?: string;
}

declare const AXPLayoutDetailsViewViewModel: _angular_core.Type<{
    adapter: _angular_core.Signal<AXPLayoutDetailsViewAdapter | null>;
    rootContext: _angular_core.Signal<Record<string, any>>;
    previousContext: _angular_core.Signal<Record<string, any>>;
    context: _angular_core.Signal<Record<string, any>>;
    scope: _angular_core.Signal<AXPExpressionEvaluatorScope | null>;
    status: _angular_core.Signal<AXPPageStatus$1>;
    currentPage: _angular_core.Signal<AXPLayoutDetailsViewPage | null>;
    currentTab: _angular_core.Signal<AXPLayoutDetailsViewTabItem | null>;
    pageSelectedRows: _angular_core.Signal<any[]>;
    renderedTabsCache: _angular_core.Signal<Record<string, {
        tabId: string;
        tab: AXPLayoutDetailsViewTabItem;
    }[]>>;
    icon: _angular_core.Signal<string | null>;
    content: _angular_core.Signal<_acorex_platform_layout_widget_core.AXPWidgetNode[]>;
    showPages: _angular_core.Signal<boolean>;
    isLarge: _angular_core.Signal<boolean>;
    isBusy: _angular_core.Signal<boolean>;
    isSaving: _angular_core.Signal<boolean>;
    isDirty: _angular_core.Signal<boolean>;
    changesCount: _angular_core.Signal<number>;
    isLoaded: _angular_core.Signal<boolean>;
    currentPageSelectedRows: _angular_core.Signal<any[]>;
    currentPageRenderedTabs: _angular_core.Signal<{
        tabId: string;
        tab: AXPLayoutDetailsViewTabItem;
    }[]>;
    loadAdapter: (adapter: AXPLayoutDetailsViewAdapter) => Promise<void>;
    loadPage: (pageId?: string, forceRefresh?: boolean) => Promise<void>;
    load: (adapter: AXPLayoutDetailsViewAdapter) => Promise<void>;
    updateContext: (context: any) => void;
    updatePageSelectedRows: (rows: any[]) => void;
    currentPageTitle: () => string | null;
    currentPageDescription: () => string | null;
    currentPagePrimaryActions: () => Promise<any>;
    currentPageSecondaryActions: () => Promise<any>;
    currentPageContent: () => _acorex_platform_layout_widget_core.AXPWidgetNode[] | undefined;
    currentPageTabs: () => AXPLayoutDetailsViewTabItem[] | undefined;
    setCurrentPage: (page: AXPLayoutDetailsViewPage | null) => void;
    setCurrentTab: (tab: AXPLayoutDetailsViewTabItem) => void;
    getCurrentTabContent: () => _acorex_platform_layout_widget_core.AXPWidgetNode[];
    getRenderedTabContent: (tabId: string) => _acorex_platform_layout_widget_core.AXPWidgetNode[];
    clearPageTabCache: (pageId: string) => void;
    title: () => string | null;
    backButtonTitle: () => string | null;
    description: () => string | null;
    primaryActions: () => Promise<any>;
    secondaryActions: () => Promise<any>;
    breadcrumbs: () => Promise<{
        title: string;
        name?: string;
        icon?: string;
        command?: AXPExecuteCommand;
    }[]>;
    discard: () => Promise<void>;
    save: (command: AXPExecuteCommand, form: AXFormComponent) => Promise<void>;
    goToListPage: () => void;
} & _ngrx_signals.StateSource<{
    adapter: AXPLayoutDetailsViewAdapter | null;
    rootContext: Record<string, any>;
    previousContext: Record<string, any>;
    context: Record<string, any>;
    scope: AXPExpressionEvaluatorScope | null;
    status: AXPPageStatus$1;
    currentPage: AXPLayoutDetailsViewPage | null;
    currentTab: AXPLayoutDetailsViewTabItem | null;
    pageSelectedRows: any[];
    renderedTabsCache: Record<string, Array<{
        tabId: string;
        tab: AXPLayoutDetailsViewTabItem;
    }>>;
}>>;

declare class AXPLayoutDetailsViewComponent extends AXPPageLayoutBaseComponent implements OnInit, OnDestroy {
    #private;
    adapter: _angular_core.InputSignal<AXPLayoutDetailsViewAdapter>;
    protected vm: {
        adapter: _angular_core.Signal<AXPLayoutDetailsViewAdapter | null>;
        rootContext: _angular_core.Signal<Record<string, any>>;
        previousContext: _angular_core.Signal<Record<string, any>>;
        context: _angular_core.Signal<Record<string, any>>;
        scope: _angular_core.Signal<_acorex_platform_core.AXPExpressionEvaluatorScope | null>;
        status: _angular_core.Signal<_acorex_platform_layout_widget_core.AXPPageStatus>;
        currentPage: _angular_core.Signal<AXPLayoutDetailsViewPage | null>;
        currentTab: _angular_core.Signal<_acorex_platform_layout_views.AXPLayoutDetailsViewTabItem | null>;
        pageSelectedRows: _angular_core.Signal<any[]>;
        renderedTabsCache: _angular_core.Signal<Record<string, {
            tabId: string;
            tab: _acorex_platform_layout_views.AXPLayoutDetailsViewTabItem;
        }[]>>;
        icon: _angular_core.Signal<string | null>;
        content: _angular_core.Signal<_acorex_platform_layout_widget_core.AXPWidgetNode[]>;
        showPages: _angular_core.Signal<boolean>;
        isLarge: _angular_core.Signal<boolean>;
        isBusy: _angular_core.Signal<boolean>;
        isSaving: _angular_core.Signal<boolean>;
        isDirty: _angular_core.Signal<boolean>;
        changesCount: _angular_core.Signal<number>;
        isLoaded: _angular_core.Signal<boolean>;
        currentPageSelectedRows: _angular_core.Signal<any[]>;
        currentPageRenderedTabs: _angular_core.Signal<{
            tabId: string;
            tab: _acorex_platform_layout_views.AXPLayoutDetailsViewTabItem;
        }[]>;
        loadAdapter: (adapter: AXPLayoutDetailsViewAdapter) => Promise<void>;
        loadPage: (pageId?: string, forceRefresh?: boolean) => Promise<void>;
        load: (adapter: AXPLayoutDetailsViewAdapter) => Promise<void>;
        updateContext: (context: any) => void;
        updatePageSelectedRows: (rows: any[]) => void;
        currentPageTitle: () => string | null;
        currentPageDescription: () => string | null;
        currentPagePrimaryActions: () => Promise<any>;
        currentPageSecondaryActions: () => Promise<any>;
        currentPageContent: () => _acorex_platform_layout_widget_core.AXPWidgetNode[] | undefined;
        currentPageTabs: () => _acorex_platform_layout_views.AXPLayoutDetailsViewTabItem[] | undefined;
        setCurrentPage: (page: AXPLayoutDetailsViewPage | null) => void;
        setCurrentTab: (tab: _acorex_platform_layout_views.AXPLayoutDetailsViewTabItem) => void;
        getCurrentTabContent: () => _acorex_platform_layout_widget_core.AXPWidgetNode[];
        getRenderedTabContent: (tabId: string) => _acorex_platform_layout_widget_core.AXPWidgetNode[];
        clearPageTabCache: (pageId: string) => void;
        title: () => string | null;
        backButtonTitle: () => string | null;
        description: () => string | null;
        primaryActions: () => Promise<any>;
        secondaryActions: () => Promise<any>;
        breadcrumbs: () => Promise<{
            title: string;
            name?: string;
            icon?: string;
            command?: AXPExecuteCommand;
        }[]>;
        discard: () => Promise<void>;
        save: (command: AXPExecuteCommand, form: AXFormComponent) => Promise<void>;
        goToListPage: () => void;
    } & _ngrx_signals.StateSource<{
        adapter: AXPLayoutDetailsViewAdapter | null;
        rootContext: Record<string, any>;
        previousContext: Record<string, any>;
        context: Record<string, any>;
        scope: _acorex_platform_core.AXPExpressionEvaluatorScope | null;
        status: _acorex_platform_layout_widget_core.AXPPageStatus;
        currentPage: AXPLayoutDetailsViewPage | null;
        currentTab: _acorex_platform_layout_views.AXPLayoutDetailsViewTabItem | null;
        pageSelectedRows: any[];
        renderedTabsCache: Record<string, Array<{
            tabId: string;
            tab: _acorex_platform_layout_views.AXPLayoutDetailsViewTabItem;
        }>>;
    }>;
    protected router: Router;
    protected route: ActivatedRoute;
    protected eventService: AXPBroadcastEventService;
    protected deviceService: AXPDeviceService;
    private onSelectionChangeSubscription?;
    private readonly destroyed$;
    protected form: _angular_core.Signal<AXFormComponent | undefined>;
    protected widgetContainer: _angular_core.Signal<AXPWidgetContainerComponent | undefined>;
    protected footerPrimaryActions: _angular_core.WritableSignal<AXPActionMenuItem[]>;
    protected footerSecondaryActions: _angular_core.WritableSignal<AXPActionMenuItem[]>;
    protected footerActions: _angular_core.Signal<AXPActionMenuItem[]>;
    protected hasVisibleFooterPrimaryActions: _angular_core.Signal<boolean>;
    protected hasVisibleFooterSecondaryActions: _angular_core.Signal<boolean>;
    protected hasFooter: _angular_core.Signal<boolean>;
    /**
     * Append timestamp query param to trigger router to re-run guards/resolvers
     */
    protected refreshLayout(): Promise<void>;
    ngOnInit(): Promise<void>;
    ngAfterViewInit(): Promise<void>;
    ngOnDestroy(): void;
    protected handleOnContextChanged(e: AXPWidgetCoreContextChangeEvent): void;
    protected handleSelectPage(page: AXPLayoutDetailsViewPage): void;
    protected getAllPrimaryActions(): Promise<AXPLayoutDetailsViewAction[]>;
    protected getPrimaryMenuItems(): Promise<AXPActionMenuItem[]>;
    protected getFooterPrimaryActions(): Promise<AXPActionMenuItem[]>;
    protected getAllSecondaryActions(): Promise<AXPLayoutDetailsViewAction[]>;
    protected getSecondaryMenuItems(): Promise<AXPActionMenuItem[]>;
    protected getFooterSecondaryActions(): Promise<AXPActionMenuItem[]>;
    protected getPageBreadcrumbs(): Promise<AXPBreadcrumbItem[]>;
    protected getPageTitle(): Promise<string>;
    getPageDescription(): Promise<string | null>;
    getBackButton(): Promise<AXPBackButton | null>;
    /**
     * Get entity data for status chip component
     */
    getEntityData(): Record<string, any> | null;
    onBackButtonClick(): Promise<void>;
    execute(command: AXPExecuteCommand): Promise<void>;
    protected handleKeyboardEvent(event: KeyboardEvent): Promise<void>;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPLayoutDetailsViewComponent, never>;
    static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPLayoutDetailsViewComponent, "axp-layout-details-view", never, { "adapter": { "alias": "adapter"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
}

export { AXPLayoutDetailsViewComponent, AXPLayoutDetailsViewViewModel, AXPPageLayoutBase, AXPPageLayoutBaseComponent, AXPPageLayoutComponent, AXPPopupLayoutBase, AXPPopupLayoutBaseComponent, AXPPopupLayoutComponent };
export type { AXPLayoutDetailsViewAction, AXPLayoutDetailsViewAdapter, AXPLayoutDetailsViewPage, AXPLayoutDetailsViewTabItem };
