import * as i0 from '@angular/core';
import { Injector } from '@angular/core';
import * as i1 from '@angular/common';
import * as i5 from '@angular/router';
import { AXPEntity, AXPMenuProvider, AXPMenuProviderContext, AXPSearchCommandProvider, AXPSearchResult } from '@acorex/platform/common';
import { AXPEntityDefinitionLoader, AXPEntityDefinitionPreloader, AXPEntityPreloadEntity, AXPEntityModel, AXMEntityCrudServiceImpl } from '@acorex/platform/layout/entity';
import { AXPPermissionDefinitionProvider, AXPPermissionDefinitionProviderContext } from '@acorex/platform/auth';
import { AXPBreadcrumbItem, AXPActionMenuItem } from '@acorex/platform/core';
import { AXPPageLayoutBaseComponent } from '@acorex/platform/layout/views';

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

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

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

declare class AXMContactManagementModule {
    static ɵfac: i0.ɵɵFactoryDeclaration<AXMContactManagementModule, never>;
    static ɵmod: i0.ɵɵNgModuleDeclaration<AXMContactManagementModule, never, [typeof i1.CommonModule, typeof AXMContactMethodTypeEntityModule, typeof AXMContactMethodEntityModule, typeof AXMEmergencyContactEntityModule, typeof i5.RouterModule], never>;
    static ɵinj: i0.ɵɵInjectorDeclaration<AXMContactManagementModule>;
}

declare const RootConfig: {
    config: {
        i18n: string;
    };
    module: {
        name: string;
        title: string;
        icon: string;
    };
    entities: {
        contactMethodType: {
            name: string;
            title: string;
            titlePlural: string;
            icon: string;
        };
        contactMethod: {
            name: string;
            title: string;
            titlePlural: string;
            icon: string;
        };
        emergencyContact: {
            name: string;
            title: string;
            titlePlural: string;
            icon: string;
        };
    };
};

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

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

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

declare class AXMPermissionDefinitionProvider implements AXPPermissionDefinitionProvider {
    private injector;
    private readonly translateService;
    constructor(injector: Injector);
    define(context: AXPPermissionDefinitionProviderContext): Promise<void>;
}

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

interface AXMContactManagementContactMethodTypeEntityModel extends AXPEntityModel<string> {
    title: string;
    description?: string;
    icon?: string;
    validationRegex?: string;
    placeholder?: string;
    isDefault: boolean;
    isActive: boolean;
    order: number;
}

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

interface AXMContactManagementContactMethodEntityModel extends AXPEntityModel<string> {
    reference?: {
        id: string;
        type: string;
    };
    methodTypeId: any;
    value: string;
    isPrimary: boolean;
    isVerified: boolean;
    notes?: string;
}

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

interface AXMContactManagementEmergencyContactEntityModel extends AXPEntityModel<string> {
    name: string;
    shortName?: string;
    description?: string;
    categoryIds?: string[];
    phoneNumber: string;
    alternateNumbers?: string[];
    textNumber?: string;
    website?: string;
    email?: string;
    country?: string;
    region?: string;
    city?: string;
    isNational: boolean;
    isRegional: boolean;
    isLocal: boolean;
    availability: string;
    languages?: string[];
    isTextCapable: boolean;
    isVideoCallCapable: boolean;
    whenToCall?: string;
    whenNotToCall?: string;
    instructions?: string;
    priority: number;
    isActive: boolean;
    isVerified: boolean;
    lastVerified?: Date;
    showOnDashboard: boolean;
    requiresConfirmation: boolean;
    isQuickDial: boolean;
    additionalInfo?: string;
}

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

declare class AXMEmergencyContactsPageComponent extends AXPPageLayoutBaseComponent {
    private emergencyContactService;
    protected allContacts: i0.WritableSignal<AXMContactManagementEmergencyContactEntityModel[]>;
    protected loading: i0.WritableSignal<boolean>;
    protected isLargeScreen: i0.WritableSignal<boolean>;
    protected expandedContactIds: i0.WritableSignal<Set<string>>;
    protected quickDialContacts: i0.Signal<AXMContactManagementEmergencyContactEntityModel[]>;
    protected dashboardContacts: i0.Signal<AXMContactManagementEmergencyContactEntityModel[]>;
    protected allActiveContacts: i0.Signal<AXMContactManagementEmergencyContactEntityModel[]>;
    protected displayContacts: i0.Signal<AXMContactManagementEmergencyContactEntityModel[]>;
    onResize(): void;
    private checkScreenSize;
    ngOnInit(): Promise<void>;
    private loadEmergencyContacts;
    protected toggleExpanded(contactId: string): void;
    protected isExpanded(contactId: string): boolean;
    protected handleCallContact(contact: AXMContactManagementEmergencyContactEntityModel): void;
    protected handleTextContact(contact: AXMContactManagementEmergencyContactEntityModel): void;
    protected handleVisitWebsite(contact: AXMContactManagementEmergencyContactEntityModel): void;
    protected handleCopyNumber(contact: AXMContactManagementEmergencyContactEntityModel): Promise<void>;
    protected handleRefresh(): void;
    protected getPrimaryAction(contact: AXMContactManagementEmergencyContactEntityModel): 'call' | 'text';
    protected performPrimaryAction(contact: AXMContactManagementEmergencyContactEntityModel): void;
    protected getPrimaryActionLabel(contact: AXMContactManagementEmergencyContactEntityModel): string;
    protected getPrimaryActionColor(contact: AXMContactManagementEmergencyContactEntityModel): 'primary' | 'danger';
    protected getCoverageText(contact: AXMContactManagementEmergencyContactEntityModel): string;
    protected getCapabilitiesText(contact: AXMContactManagementEmergencyContactEntityModel): string;
    protected getPriorityColor(priority: number): string;
    protected getPageTitle(): Promise<string>;
    protected getPageDescription(): Promise<string>;
    getPageBreadcrumbs(): Promise<AXPBreadcrumbItem[]>;
    getSecondaryMenuItems(): Promise<AXPActionMenuItem[]>;
    execute(command: any): Promise<void>;
    static ɵfac: i0.ɵɵFactoryDeclaration<AXMEmergencyContactsPageComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<AXMEmergencyContactsPageComponent, "axm-emergency-contacts-page", never, {}, {}, never, never, true, never>;
}

declare class AXMEmergencyContactItemComponent {
    contact: i0.InputSignal<AXMContactManagementEmergencyContactEntityModel>;
    protected expanded: i0.WritableSignal<boolean>;
    protected categoryIcon: i0.Signal<string>;
    protected categoryColor: i0.Signal<string>;
    protected messageDisabled: i0.Signal<boolean>;
    protected callDisabled: i0.Signal<boolean>;
    protected coverageText: i0.Signal<string>;
    protected capabilitiesText: i0.Signal<string>;
    protected toggleExpanded(): void;
    protected handleCall(): void;
    protected handleText(): void;
    protected visitWebsite(): void;
    protected copyInfo(): Promise<void>;
    static ɵfac: i0.ɵɵFactoryDeclaration<AXMEmergencyContactItemComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<AXMEmergencyContactItemComponent, "axm-emergency-contact-item", never, { "contact": { "alias": "contact"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
}

export { AXMContactManagementEntityProvider, AXMContactManagementMenuProvider, AXMContactManagementModule, AXMContactManagementSearchCommandProvider, AXMContactMethodEntityModule, AXMContactMethodService, AXMContactMethodServiceImpl, AXMContactMethodTypeEntityModule, AXMContactMethodTypeService, AXMContactMethodTypeServiceImpl, AXMEmergencyContactEntityModule, AXMEmergencyContactItemComponent, AXMEmergencyContactService, AXMEmergencyContactServiceImpl, AXMEmergencyContactsPageComponent, AXMPermissionDefinitionProvider, RootConfig, contactMethodTypeFactory };
export type { AXMContactManagementContactMethodEntityModel, AXMContactManagementContactMethodTypeEntityModel, AXMContactManagementEmergencyContactEntityModel };
