import * as i0 from '@angular/core';
import { Injector } from '@angular/core';
import * as i1 from '@acorex/platform/workflow';
import { AXPEntity } from '@acorex/platform/common';
import { AXPEntityModel, AXMEntityCrudServiceImpl } from '@acorex/platform/layout/entity';

declare class AXPUpdaterService {
    constructor();
    static ɵfac: i0.ɵɵFactoryDeclaration<AXPUpdaterService, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<AXPUpdaterService>;
}

declare class AXMUpdaterModule {
    private updaterService;
    constructor(updaterService: AXPUpdaterService);
    static ɵfac: i0.ɵɵFactoryDeclaration<AXMUpdaterModule, never>;
    static ɵmod: i0.ɵɵNgModuleDeclaration<AXMUpdaterModule, never, never, never>;
    static ɵinj: i0.ɵɵInjectorDeclaration<AXMUpdaterModule>;
}

/**
 * Token feature module.
 * Provides token definition providers (static and dynamic) and refresh listeners.
 */
declare class AXMTokenModule {
    static ɵfac: i0.ɵɵFactoryDeclaration<AXMTokenModule, never>;
    static ɵmod: i0.ɵɵNgModuleDeclaration<AXMTokenModule, never, never, never>;
    static ɵinj: i0.ɵɵInjectorDeclaration<AXMTokenModule>;
}

/**
 * Module for menu management features including the menu customizer
 * and related workflows.
 */
declare class AXMMenuManagementModule {
    static ɵfac: i0.ɵɵFactoryDeclaration<AXMMenuManagementModule, never>;
    static ɵmod: i0.ɵɵNgModuleDeclaration<AXMMenuManagementModule, never, [typeof i1.AXPWorkflowModule], never>;
    static ɵinj: i0.ɵɵInjectorDeclaration<AXMMenuManagementModule>;
}

declare class AXMTokenEntityModule {
    static ɵfac: i0.ɵɵFactoryDeclaration<AXMTokenEntityModule, never>;
    static ɵmod: i0.ɵɵNgModuleDeclaration<AXMTokenEntityModule, never, never, never>;
    static ɵinj: i0.ɵɵInjectorDeclaration<AXMTokenEntityModule>;
}

declare class AXMPlatformManagementModule {
    static ɵfac: i0.ɵɵFactoryDeclaration<AXMPlatformManagementModule, never>;
    static ɵmod: i0.ɵɵNgModuleDeclaration<AXMPlatformManagementModule, never, [typeof AXMUpdaterModule, typeof AXMTokenModule, typeof AXMMenuManagementModule, typeof AXMTokenEntityModule], never>;
    static ɵinj: i0.ɵɵInjectorDeclaration<AXMPlatformManagementModule>;
}

declare const RootConfig: {
    config: {
        i18n: string;
    };
    module: {
        route: string;
        name: string;
        title: string;
        icon: string;
    };
    entities: {
        localizationManagement: {
            name: string;
            title: string;
            icon: string;
        };
        token: {
            name: string;
            title: string;
            icon: string;
        };
    };
};

declare function tokenEntityFactory(injector: Injector): Promise<AXPEntity | null>;

interface AXMTokenEntityModel extends AXPEntityModel<string> {
    name: string;
    title: string;
    description?: string;
    type: 'String' | 'Integer' | 'Boolean' | 'Expression';
    expression?: string;
}

declare abstract class AXMTokensService extends AXMEntityCrudServiceImpl<string, AXMTokenEntityModel> {
}
declare class AXMTokensServiceImpl extends AXMEntityCrudServiceImpl<string, AXMTokenEntityModel> {
    constructor();
    static ɵfac: i0.ɵɵFactoryDeclaration<AXMTokensServiceImpl, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<AXMTokensServiceImpl>;
}

declare const AXPPlatformManagementFeatureKeys: {
    readonly MenuCustomization: "PlatformManagement:Feature:menu-customization";
    readonly AutoCheckUpdates: "PlatformManagement:Feature:auto-check-updates";
    readonly MaxTokens: "PlatformManagement:Feature:max-tokens";
};

export { AXMPlatformManagementModule, AXMTokenEntityModule, AXMTokensService, AXMTokensServiceImpl, AXPPlatformManagementFeatureKeys, RootConfig, tokenEntityFactory };
export type { AXMTokenEntityModel };
