import * as i0 from '@angular/core';
import { OnInit, WritableSignal, Injector } from '@angular/core';
import * as i1 from '@acorex/platform/workflow';
import * as i2 from '@acorex/platform/layout/components';
import { AXPEntity, AXPMenuProvider, AXPMenuProviderContext, AXPSearchCommandProvider, AXPSearchResult, AXPSettingDefinitionProvider, AXPSettingDefinitionProviderContext, AXPFileStorageInfo } from '@acorex/platform/common';
import { AXPEntityDefinitionLoader, AXPEntityDefinitionPreloader, AXPEntityPreloadEntity, AXPEntityModel, AXMEntityCrudServiceImpl } from '@acorex/platform/layout/entity';
import { AXPDataSourceDefinitionProvider, AXPDataSourceDefinition } from '@acorex/platform/core';
import { SafeHtml } from '@angular/platform-browser';
import { AXBasePageComponent } from '@acorex/components/page';
import { AXPPageLayoutBaseComponent } from '@acorex/platform/layout/views';

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

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

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

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

declare class AXMContentManagementModule {
    /**
     * @ignore
     */
    constructor(appTermsCheck: AppTermsCheckService);
    static ɵfac: i0.ɵɵFactoryDeclaration<AXMContentManagementModule, never>;
    static ɵmod: i0.ɵɵNgModuleDeclaration<AXMContentManagementModule, never, [typeof i1.AXPWorkflowModule, typeof i2.AXPComponentSlotModule, typeof AXMPromotionEntityModule, typeof AXMAppTermEntityModule, typeof AXMGlossaryEntityModule], never>;
    static ɵinj: i0.ɵɵInjectorDeclaration<AXMContentManagementModule>;
}

declare const RootConfig: {
    config: {
        i18n: string;
    };
    module: {
        module: string;
        name: string;
        title: string;
        icon: string;
    };
    entities: {
        promotion: {
            name: string;
            title: string;
            titlePlural: string;
            icon: string;
        };
        glossary: {
            name: string;
            title: string;
            titlePlural: string;
            icon: string;
        };
        appTerm: {
            name: string;
            title: string;
            titlePlural: string;
            pageTitle: string;
            pageDescription: string;
            icon: string;
        };
    };
};

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

declare class AXMMenuProvider implements AXPMenuProvider {
    private entityService;
    private sessionService;
    provide(context: AXPMenuProviderContext): Promise<void>;
}

declare class AXMSearchCommandProvider extends AXPSearchCommandProvider {
    commands: AXPSearchResult[];
}

declare class AXMSettingProvider implements AXPSettingDefinitionProvider {
    provide(context: AXPSettingDefinitionProviderContext): Promise<void>;
}

interface AXMPromotionEntityModel extends AXPEntityModel<string> {
    name: string;
    title: string;
    body: string;
    imageId?: string;
    image?: AXPFileStorageInfo;
    contentType?: AXMSelectModel;
    shape?: AXMSelectModel;
    placement?: AXMSelectModel;
}
interface AXMSelectModel {
    name: string;
    title: string;
}

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

declare class AXMPromotionSlotComponent implements OnInit {
    location: string;
    notificationChannelService: AXMAppPromotionService;
    listData: WritableSignal<AXMPromotionEntityModel[]>;
    private fileStorage;
    ngOnInit(): Promise<void>;
    static ɵfac: i0.ɵɵFactoryDeclaration<AXMPromotionSlotComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<AXMPromotionSlotComponent, "acorex-platform-promotion-slot", never, {}, {}, never, never, true, never>;
}

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

declare class AXMPromotionDataSourceDefinition implements AXPDataSourceDefinitionProvider {
    protected promotionService: AXMAppPromotionService;
    protected i18n: string;
    items(): Promise<AXPDataSourceDefinition[]>;
}

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

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

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 function glossaryEntityFactory(injector: Injector): Promise<AXPEntity | null>;

interface AXMPlatformManagementGlossaryEntityModel extends AXPEntityModel<string> {
    name: string;
}

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

declare class AXMNotifyAppTermComponent extends AXBasePageComponent {
    data: AXMAppTermEntityModel[];
    safeData: SafeHtml | null;
    isConfirm: boolean;
    i18n: string;
    transformContent(content: string): string;
    send(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<AXMNotifyAppTermComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<AXMNotifyAppTermComponent, "axm-notify-app", never, {}, {}, never, never, true, never>;
}

declare class AXMListTermsComponent extends AXPPageLayoutBaseComponent {
    private service;
    protected terms: AXMAppTermViewModel[];
    protected loaded: i0.WritableSignal<boolean>;
    protected showScrollSide: i0.WritableSignal<boolean>;
    ngAfterViewInit(): void;
    onResize(): void;
    checkScroll(): void;
    ngOnInit(): Promise<void>;
    protected getPageTitle(): string | Promise<string>;
    protected getPageDescription(): string | Promise<string>;
    static ɵfac: i0.ɵɵFactoryDeclaration<AXMListTermsComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<AXMListTermsComponent, "ng-component", never, {}, {}, never, never, true, never>;
}

export { AXMAppPromotionService, AXMAppTermEntityModule, AXMAppTermService, AXMAppTermServiceImpl, AXMContentManagementModule, AXMEntityProvider, AXMGlossaryEntityModule, AXMGlossaryService, AXMGlossaryServiceImpl, AXMListTermsComponent, AXMMenuProvider, AXMNotifyAppTermComponent, AXMPromotionDataSourceDefinition, AXMPromotionEntityModule, AXMPromotionServiceImpl, AXMPromotionSlotComponent, AXMSearchCommandProvider, AXMSettingProvider, RootConfig, appTermEntityEntityFactory, glossaryEntityFactory, promotionEntityFactory };
export type { AXMAppTermEntityModel, AXMAppTermViewModel, AXMPlatformManagementGlossaryEntityModel, AXMPromotionEntityModel, AXMSelectModel };
