import * as i0 from '@angular/core';
import { Injector } from '@angular/core';
import * as i1 from '@angular/common';
import { AXPEntity, AXPMenuProvider, AXPMenuProviderContext, AXPSearchCommandProvider, AXPSearchResult, AXPSettingDefinitionProvider, AXPSettingDefinitionProviderContext } from '@acorex/platform/common';
import { AXPEntityDefinitionLoader, AXPEntityDefinitionPreloader, AXPEntityPreloadEntity } from '@acorex/platform/layout/entity';

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

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

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

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

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

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

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

declare class AXMPartyManagementModule {
    static ɵfac: i0.ɵɵFactoryDeclaration<AXMPartyManagementModule, never>;
    static ɵmod: i0.ɵɵNgModuleDeclaration<AXMPartyManagementModule, never, [typeof i1.CommonModule, typeof AXMIndustryEntityModule, typeof AXMPartyEntityModule, typeof AXMPartyRoleEntityModule, typeof AXMPartyRelationshipEntityModule, typeof AXMPartyIdentifierTypeEntityModule, typeof AXMPartyIdentifierEntityModule, typeof AXMPartyRelationshipTypeEntityModule], never>;
    static ɵinj: i0.ɵɵInjectorDeclaration<AXMPartyManagementModule>;
}

declare const RootConfig: {
    config: {
        i18n: string;
    };
    module: {
        name: string;
        title: string;
        icon: string;
    };
    entities: {
        industry: {
            name: string;
            title: string;
            titlePlural: string;
            icon: string;
        };
        party: {
            name: string;
            title: string;
            fullname: string;
            titlePlural: string;
            icon: string;
        };
        partyRole: {
            name: string;
            title: string;
            titlePlural: string;
            icon: string;
        };
        partyRelationship: {
            name: string;
            title: string;
            titlePlural: string;
            icon: string;
        };
        partyRelationshipType: {
            name: string;
            title: string;
            titlePlural: string;
            icon: string;
        };
        partyIdentifierType: {
            name: string;
            title: string;
            titlePlural: string;
            icon: string;
        };
        partyIdentifier: {
            name: string;
            title: string;
            titlePlural: string;
            icon: string;
        };
    };
};

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

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

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

declare class AXMSettingProvider implements AXPSettingDefinitionProvider {
    private injector;
    private readonly translateService;
    constructor(injector: Injector);
    provide(context: AXPSettingDefinitionProviderContext): Promise<void>;
}

export { AXMMenuProvider, AXMPartyManagementEntityProvider, AXMPartyManagementModule, AXMSearchCommandProvider, AXMSettingProvider, RootConfig };
