import * as i0 from '@angular/core';
import { AXPEntity, AXPMenuProvider, AXPMenuProviderContext } from '@acorex/platform/common';
import { AXPEntityDefinitionLoader } from '@acorex/platform/layout/entity';
import { AXPPermissionDefinitionProvider, AXPPermissionDefinitionProviderContext } from '@acorex/platform/auth';

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

declare const RootConfig: {
    config: {
        i18n: string;
        module: string;
    };
    module: {
        name: string;
        title: string;
        icon: string;
    };
    entities: {
        allergyType: {
            name: string;
            title: string;
            titlePlural: string;
            icon: string;
        };
        bloodType: {
            name: string;
            title: string;
            titlePlural: string;
            icon: string;
        };
        bodyPart: {
            name: string;
            title: string;
            titlePlural: string;
            icon: string;
        };
        chronicConditionType: {
            name: string;
            title: string;
            titlePlural: string;
            icon: string;
        };
        disabilityStatus: {
            name: string;
            title: string;
            titlePlural: string;
            icon: string;
        };
        injuryType: {
            name: string;
            title: string;
            titlePlural: string;
            icon: string;
        };
        vaccinationType: {
            name: string;
            title: string;
            titlePlural: string;
            icon: string;
        };
    };
};

interface AXMHealthCoreAllergyTypeEntityModel {
    id: string;
    title: string;
    description?: string | null;
}

interface AXMHealthCoreBloodTypeEntityModel {
    id: string;
    title: string;
    description?: string | null;
}

interface AXMHealthCoreBodyPartEntityModel {
    id: string;
    title: string;
    description?: string | null;
}

interface AXMHealthCoreChronicConditionTypeEntityModel {
    id: string;
    title: string;
    description?: string | null;
}

interface AXMHealthCoreDisabilityStatusEntityModel {
    id: string;
    title: string;
    description?: string | null;
}

interface AXMHealthCoreInjuryTypeEntityModel {
    id: string;
    title: string;
    description?: string | null;
}

interface AXMHealthCoreVaccinationTypeEntityModel {
    id: string;
    title: string;
    description?: string | null;
}

declare class AXMHealthCoreEntityProvider implements AXPEntityDefinitionLoader {
    private readonly injector;
    get(moduleName: string, entityName: string): Promise<AXPEntity | null>;
    list(): Promise<{
        name: string;
        module: string;
    }[]>;
}

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

declare class AXMHealthCorePermissionDefinitionProvider implements AXPPermissionDefinitionProvider {
    private readonly translationService;
    define(context: AXPPermissionDefinitionProviderContext): Promise<void>;
}

declare const AXMHealthCorePermissionKeys: {
    readonly HealthCore: {
        readonly AllergyType: {
            readonly Management: "HealthCore:Permission:AllergyType.Management";
        };
        readonly BloodType: {
            readonly Management: "HealthCore:Permission:BloodType.Management";
        };
        readonly BodyPart: {
            readonly Management: "HealthCore:Permission:BodyPart.Management";
        };
        readonly ChronicConditionType: {
            readonly Management: "HealthCore:Permission:ChronicConditionType.Management";
        };
        readonly DisabilityStatus: {
            readonly Management: "HealthCore:Permission:DisabilityStatus.Management";
        };
        readonly InjuryType: {
            readonly Management: "HealthCore:Permission:InjuryType.Management";
        };
        readonly VaccinationType: {
            readonly Management: "HealthCore:Permission:VaccinationType.Management";
        };
    };
};

export { AXMHealthCoreEntityProvider, AXMHealthCoreMenuProvider, AXMHealthCoreModule, AXMHealthCorePermissionDefinitionProvider, AXMHealthCorePermissionKeys, RootConfig };
export type { AXMHealthCoreAllergyTypeEntityModel, AXMHealthCoreBloodTypeEntityModel, AXMHealthCoreBodyPartEntityModel, AXMHealthCoreChronicConditionTypeEntityModel, AXMHealthCoreDisabilityStatusEntityModel, AXMHealthCoreInjuryTypeEntityModel, AXMHealthCoreVaccinationTypeEntityModel };
