import * as i0 from '@angular/core';
import { Injector, WritableSignal } from '@angular/core';
import * as i5 from '@acorex/platform/workflow';
import { AXPWorkflowAction, AXPWorkflowContext, AXPWorkflow } from '@acorex/platform/workflow';
import * as i1 from '@acorex/platform/layout/widget-core';
import * as i6 from '@acorex/platform/core';
import { AXPEntity, AXPSystemStatusType, AXPMenuProvider, AXPMenuProviderContext, AXPSearchCommandProvider, AXPSearchResult } from '@acorex/platform/common';
import { AXPEntityModel, AXMEntityCrudServiceImpl, AXPEntityDefinitionLoader } from '@acorex/platform/layout/entity';
import { SafeHtml, DomSanitizer } from '@angular/platform-browser';
import { AXBasePageComponent } from '@acorex/components/page';

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

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

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

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

interface AXMApplicationManagementEditionEntityModel extends AXPEntityModel<string> {
    title: string;
    description?: string;
    /**
     * Modules and features configuration for this edition.
     * Format: { modules: string[], features: Record<string, any> }
     */
    modulesAndFeatures?: {
        modules: string[];
        features: Record<string, any>;
    };
}

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

interface AXMApplicationManagementApplicationEntityModel extends AXPEntityModel<string> {
    code?: string;
    title: string;
    description?: string;
    version?: string;
    category?: string;
    tags?: string[];
    statusId?: AXPSystemStatusType;
    icon?: string;
    logo?: string;
    color?: string;
    url?: string;
    documentationUrl?: string;
    supportEmail?: string;
    releaseDate?: Date;
    isPublic?: boolean;
    editionIds: string[];
    editions: AXMApplicationManagementEditionEntityModel[];
}

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

interface AXMAppTermEntityModel extends AXPEntityModel<string> {
    type: string;
    title: string;
    content: string;
    version: number;
    effectiveDate: string;
    notifyUser: boolean;
    applicationId?: string;
    application?: AXMApplicationManagementApplicationEntityModel;
}
interface AXMAppTermViewModel {
    id?: string;
    type: string;
    title: string;
    content: SafeHtml;
    version: number;
    effectiveDate: string;
    notifyUser: boolean;
    applicationId?: string;
}

interface AXMAppVersionEntityModel extends AXPEntityModel<string> {
    versionNumber: string;
    publishDate: string;
    changeLog: string;
    showFirstTimePopup: boolean;
}
interface AXMAppVersionListComponentModel {
    id: string | undefined;
    title: string;
    content: SafeHtml | string;
}

declare class AXMListVersionComponent extends AXBasePageComponent {
    private appVersionService;
    private formatService;
    sanitize: DomSanitizer;
    versions: WritableSignal<AXMAppVersionListComponentModel[]>;
    protected ngOnInit(): Promise<void>;
    static ɵfac: i0.ɵɵFactoryDeclaration<AXMListVersionComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<AXMListVersionComponent, "axm-list-version", never, {}, {}, never, never, true, never>;
}

declare class AXMChangeLogPopupAction extends AXPWorkflowAction {
    private popupService;
    execute(context: AXPWorkflowContext): Promise<void>;
    static ɵfac: i0.ɵɵFactoryDeclaration<AXMChangeLogPopupAction, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<AXMChangeLogPopupAction>;
}
declare class AXMChangeLogUpdateSettingAction extends AXPWorkflowAction {
    private settingsService;
    execute(context: AXPWorkflowContext): Promise<void>;
    static ɵfac: i0.ɵɵFactoryDeclaration<AXMChangeLogUpdateSettingAction, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<AXMChangeLogUpdateSettingAction>;
}
declare const AXMWhatsNewWorkflow: AXPWorkflow;
declare class AXMCheckNewVersionAction extends AXPWorkflowAction {
    private appVersionCheckService;
    private settingsService;
    execute(context: AXPWorkflowContext): Promise<void>;
    static ɵfac: i0.ɵɵFactoryDeclaration<AXMCheckNewVersionAction, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<AXMCheckNewVersionAction>;
}
declare const AXMCheckNewVersionWorkflow: AXPWorkflow;

declare class AXMAppTermsCheckService {
    private settingsService;
    private workflowService;
    private appTermService;
    private appInitService;
    private sessionService;
    constructor();
    static ɵfac: i0.ɵɵFactoryDeclaration<AXMAppTermsCheckService, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<AXMAppTermsCheckService>;
}

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

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

declare class AXMFeaturesModule {
    static ɵfac: i0.ɵɵFactoryDeclaration<AXMFeaturesModule, never>;
    static ɵmod: i0.ɵɵNgModuleDeclaration<AXMFeaturesModule, never, [typeof i1.AXPWidgetCoreModule], never>;
    static ɵinj: i0.ɵɵInjectorDeclaration<AXMFeaturesModule>;
}

declare class AXMApplicationManagementModule {
    constructor(appTermsCheck: AXMAppTermsCheckService);
    static ɵfac: i0.ɵɵFactoryDeclaration<AXMApplicationManagementModule, never>;
    static ɵmod: i0.ɵɵNgModuleDeclaration<AXMApplicationManagementModule, never, [typeof AXMApplicationEntityModule, typeof AXMAppVersionEntityModule, typeof AXMAppTermEntityModule, typeof AXMFeaturesModule, typeof i5.AXPWorkflowModule, typeof i6.AXPComponentSlotModule], never>;
    static ɵinj: i0.ɵɵInjectorDeclaration<AXMApplicationManagementModule>;
}

declare const RootConfig: {
    config: {
        i18n: string;
        module: string;
    };
    module: {
        route: string;
        name: string;
        title: string;
        icon: string;
    };
    entities: {
        application: {
            name: string;
            title: string;
            titlePlural: string;
            icon: string;
        };
        edition: {
            name: string;
            title: string;
            titlePlural: string;
            icon: string;
        };
        appVersion: {
            name: string;
            title: string;
            titlePlural: string;
            icon: string;
        };
        appTerm: {
            name: string;
            title: string;
            titlePlural: string;
            pageTitle: string;
            pageDescription: string;
            icon: string;
        };
    };
};
declare const AXMApplicationManagementModuleConst: {
    moduleName: string;
    moduleRoute: string;
    i18n: string;
};

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

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

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

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

declare class AXMEntityProvider implements AXPEntityDefinitionLoader {
    private injector;
    get(moduleName: string, entityName: string): Promise<AXPEntity | null>;
    list(): Promise<{
        name: string;
        module: string;
    }[]>;
    static ɵfac: i0.ɵɵFactoryDeclaration<AXMEntityProvider, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<AXMEntityProvider>;
}

declare class AXMApplicationManagmentModuleMenuProvider implements AXPMenuProvider {
    private entityService;
    private sessionService;
    provide(context: AXPMenuProviderContext): Promise<void>;
    static ɵfac: i0.ɵɵFactoryDeclaration<AXMApplicationManagmentModuleMenuProvider, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<AXMApplicationManagmentModuleMenuProvider>;
}

declare class AXMSearchCommandProvider extends AXPSearchCommandProvider {
    commands: AXPSearchResult[];
    static ɵfac: i0.ɵɵFactoryDeclaration<AXMSearchCommandProvider, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<AXMSearchCommandProvider>;
}

declare const AXMPermissionsKeys: {
    ApplicationManagement: {
        Root: string;
        Applications: string;
        ReleaseNotes: string;
        AppTerms: string;
    };
};

declare const AXMApplicationManagementFeatureKeys: {};

export { AXMAppTermEntityModule, AXMAppTermService, AXMAppTermServiceImpl, AXMAppVersionEntityModule, AXMAppVersionService, AXMAppVersionServiceImpl, AXMApplicationEntityModule, AXMApplicationManagementFeatureKeys, AXMApplicationManagementModule, AXMApplicationManagementModuleConst, AXMApplicationManagmentModuleMenuProvider, AXMApplicationService, AXMApplicationServiceImpl, AXMChangeLogPopupAction, AXMChangeLogUpdateSettingAction, AXMCheckNewVersionAction, AXMCheckNewVersionWorkflow, AXMEditionEntityModule, AXMEditionService, AXMEditionServiceImpl, AXMEntityProvider, AXMListVersionComponent, AXMPermissionsKeys, AXMSearchCommandProvider, AXMWhatsNewWorkflow, RootConfig, appTermEntityEntityFactory, appVersionEntityEntityFactory, applicationEntityFactory, editionEntityFactory };
export type { AXMAppTermEntityModel, AXMAppTermViewModel, AXMAppVersionEntityModel, AXMAppVersionListComponentModel, AXMApplicationManagementApplicationEntityModel, AXMApplicationManagementEditionEntityModel };
