import * as _acorex_platform_themes_shared from '@acorex/platform/themes/shared';
import * as _ngrx_signals from '@ngrx/signals';
import * as _angular_core from '@angular/core';
import { InjectionToken, Injector } from '@angular/core';
import { AXPAppStartUpService } from '@acorex/platform/core';
import * as i1 from '@acorex/platform/layout/components';
import * as i2 from '@acorex/platform/layout/widget-core';

interface AXPThemePaletteColors {
    primary: string;
    secondary: string;
    success: string;
    warning: string;
    danger: string;
    accents: string[];
    dark: string;
    light: string;
}
interface AXPThemePalette {
    name: string;
    title: string;
    colors: AXPThemePaletteColors;
}
declare enum AXPThemeMode {
    Light = "light",
    Dark = "dark",
    System = "system"
}
declare enum AXPSideMenuState {
    Opened = "opened",
    Closed = "closed"
}
declare enum AXPMenuOrientation {
    Vertical = "vertical",
    Horizontal = "horizontal"
}

declare class AXPThemeSlotComponent {
    protected store: {
        currentMode: _angular_core.Signal<AXPThemeMode>;
        currentPalette: _angular_core.Signal<string>;
        systemThemeMode: _angular_core.Signal<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: 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: AXPThemeMode;
        currentPalette: string;
        systemThemeMode: 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 variants: typeof AXPThemeMode;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPThemeSlotComponent, never>;
    static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPThemeSlotComponent, "ng-component", never, {}, {}, never, never, true, never>;
}

interface AXPThemePaletteProvider {
    getList(): Promise<AXPThemePalette[]>;
}
declare const AXP_THEME_PALETTE_PROVIDER: InjectionToken<Promise<AXPThemePaletteProvider>>;
declare class AXPThemePaletteProviderDefault implements AXPThemePaletteProvider {
    getList(): Promise<AXPThemePalette[]>;
}

declare const AXPLayoutThemeService: _angular_core.Type<{
    currentMode: _angular_core.Signal<AXPThemeMode>;
    currentPalette: _angular_core.Signal<string>;
    systemThemeMode: _angular_core.Signal<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<AXPSideMenuState>;
    sideMenuWidth: _angular_core.Signal<number>;
    menuOrientation: _angular_core.Signal<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: 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: AXPThemeMode;
    currentPalette: string;
    systemThemeMode: AXPThemeMode;
    font: {
        family: string;
        size: string;
    };
    overlayLoading: boolean;
    navigationLoading: boolean;
    overlayLoadingTaskCount: number;
    navigationLoadingTaskCount: number;
    sideMenuState: AXPSideMenuState;
    sideMenuWidth: number;
    menuOrientation: AXPMenuOrientation;
    isPrinting: boolean;
}>>;

declare enum AXPThemeLayoutSetting {
    Name = "Common:Setting:Layout.Name",
    Layout = "Common:Setting:Layout.Layout",
    Font = "Common:Setting:Layout.Font.Family",
    FontSize = "Common:Setting:Layout.Font.Size",
    Palette = "Common:Setting:Layout.Palette",
    Mode = "Common:Setting:Layout.Mode",
    SideMenuStatus = "Common:Setting:Layout.SideMenu.Status",
    SideMenuWidth = "Common:Setting:Layout.SideMenu.Width",
    MenuOrientation = "Common:Setting:Layout.RootMenu.Direction",
    MenuBadgeVisible = "Common:Setting:Layout.RootMenu.Badge"
}

declare class AXPThemesSharedModule {
    constructor(appInitService: AXPAppStartUpService, injector: Injector);
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPThemesSharedModule, never>;
    static ɵmod: _angular_core.ɵɵNgModuleDeclaration<AXPThemesSharedModule, never, [typeof i1.AXPComponentSlotModule, typeof i2.AXPWidgetCoreModule], never>;
    static ɵinj: _angular_core.ɵɵInjectorDeclaration<AXPThemesSharedModule>;
}

export { AXPLayoutThemeService, AXPMenuOrientation, AXPSideMenuState, AXPThemeLayoutSetting, AXPThemeMode, AXPThemePaletteProviderDefault, AXPThemeSlotComponent, AXPThemesSharedModule, AXP_THEME_PALETTE_PROVIDER };
export type { AXPThemePalette, AXPThemePaletteColors, AXPThemePaletteProvider };
