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 AXPContactCoreModule {
    static ɵfac: i0.ɵɵFactoryDeclaration<AXPContactCoreModule, never>;
    static ɵmod: i0.ɵɵNgModuleDeclaration<AXPContactCoreModule, never, never, never>;
    static ɵinj: i0.ɵɵInjectorDeclaration<AXPContactCoreModule>;
}

declare const RootConfig: {
    config: {
        i18n: string;
        module: string;
    };
    module: {
        name: string;
        title: string;
        icon: string;
    };
    entities: {
        emergencyService: {
            name: string;
            source: string;
            title: string;
            titlePlural: string;
            icon: string;
        };
    };
};

interface AXPContactCoreEmergencyServiceEntityModel {
    id: string;
    title: string;
    description?: string | null;
    phoneNumber?: string | null;
    alternateNumbers?: string | null;
    textNumber?: string | null;
    countryId?: string | null;
    country?: {
        id: string;
        title: string;
    } | null;
    availability?: string | null;
    whenToCall?: string | null;
    whenNotToCall?: string | null;
    instructions?: string | null;
    categoryIds?: string[];
    categories?: Array<{
        id: string;
        title: string;
    }>;
}

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

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

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

declare const AXPContactCorePermissionKeys: {
    readonly ContactCore: {
        readonly EmergencyService: {
            readonly Management: "ContactCore:Permission:EmergencyService.Management";
        };
    };
};

export { AXPContactCoreEntityProvider, AXPContactCoreMenuProvider, AXPContactCoreModule, AXPContactCorePermissionDefinitionProvider, AXPContactCorePermissionKeys, RootConfig };
export type { AXPContactCoreEmergencyServiceEntityModel };
