import { AXPEntityModel, AXMEntityCrudServiceImpl } from '@acorex/platform/layout/entity';
import * as i0 from '@angular/core';
import { AXPSpreadsheetData } from '@acorex/platform/layout/components';
import * as i1 from '@angular/common';
import * as i2 from '@acorex/platform/layout/widget-core';

declare const RootConfig: {
    config: {
        i18n: string;
        module: string;
    };
    module: {
        route: string;
        name: string;
        title: string;
        icon: string;
    };
    entities: {
        responsibility: {
            name: string;
            title: string;
            source: string;
            icon: string;
        };
        jobDefinition: {
            name: string;
            title: string;
            source: string;
            icon: string;
        };
        jobLevel: {
            name: string;
            title: string;
            source: string;
            icon: string;
        };
        responsibilityLevel: {
            name: string;
            title: string;
            titlePlural: string;
            source: string;
            icon: string;
        };
        company: {
            name: string;
            source: string;
            title: string;
            icon: string;
        };
        team: {
            name: string;
            source: string;
            title: string;
            icon: string;
        };
        teamMemberRole: {
            name: string;
            source: string;
            title: string;
            icon: string;
        };
        teamMember: {
            name: string;
            source: string;
            title: string;
            icon: string;
        };
        position: {
            name: string;
            source: string;
            title: string;
            icon: string;
        };
        businessUnitType: {
            name: string;
            source: string;
            title: string;
            icon: string;
        };
        businessUnit: {
            name: string;
            source: string;
            title: string;
            icon: string;
        };
        structure: {
            name: string;
            source: string;
            title: string;
            menu: {
                title: string;
            };
            icon: string;
        };
        chart: {
            name: string;
            source: string;
            title: string;
            menu: {
                title: string;
            };
            icon: string;
        };
    };
};

interface AXMOrganizationManagementChartEntityModel extends AXPEntityModel<string> {
    version: string;
    data: AXMOrganizationManagementChartNodeEntityModel;
}
interface AXMOrganizationManagementChartNodeEntityModel extends AXPEntityModel<string> {
    id: string;
    title: string;
    subtitle?: string;
    description?: string | null;
    isExpanded?: boolean;
    children?: AXMOrganizationManagementChartNodeEntityModel[];
    icon?: string;
    type?: string;
    parentId?: string | null;
    entity?: {
        id: string;
        source: string;
    };
    metadata?: Record<string, any>;
}

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

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

interface AXMOrganizationManagementCompanyEntityModel extends AXPEntityModel<string> {
    title: string;
}

interface AXMOrganizationManagementPositionEntityModel extends AXPEntityModel<string> {
    title: string;
    description?: string;
    categoriesId?: string[];
    categories?: {
        id: string;
        title: string;
    }[];
}

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

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

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

interface AXMOrganizationManagementJobDefinitionEntityModel extends AXPEntityModel<string> {
    title: string;
    description?: string;
    jobLevelIds?: string[];
    categoriesId?: string[];
    categories?: {
        id: string;
        title: string;
    }[];
    responsibilityLevelIds?: string[];
    responsibilities?: AXPSpreadsheetData;
    skillRequirements?: AXPSpreadsheetData;
}

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

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

interface AXMOrganizationManagementTeamEntityModel extends AXPEntityModel<string> {
    title: string;
    leaderId: string;
    memberIds?: string[];
    description?: string;
}

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

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

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

interface AXMOrganizationManagementResponsibilityEntityModel extends AXPEntityModel<string> {
    title: string;
    description?: string;
    categoriesId?: string[];
    categories?: {
        id: string;
        title: string;
    }[];
}

declare class AXMOrganizationManagementResponsibilityLevelEntityModule {
    static ɵfac: i0.ɵɵFactoryDeclaration<AXMOrganizationManagementResponsibilityLevelEntityModule, never>;
    static ɵmod: i0.ɵɵNgModuleDeclaration<AXMOrganizationManagementResponsibilityLevelEntityModule, never, [typeof i1.CommonModule], never>;
    static ɵinj: i0.ɵɵInjectorDeclaration<AXMOrganizationManagementResponsibilityLevelEntityModule>;
}

interface AXMOrganizationManagementResponsibilityLevelEntityModel extends AXPEntityModel<string> {
    title: string;
    description?: string;
    level: number;
}

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

declare class AXMOrganizationManagementJobLevelEntityModule {
    static ɵfac: i0.ɵɵFactoryDeclaration<AXMOrganizationManagementJobLevelEntityModule, never>;
    static ɵmod: i0.ɵɵNgModuleDeclaration<AXMOrganizationManagementJobLevelEntityModule, never, [typeof i1.CommonModule], never>;
    static ɵinj: i0.ɵɵInjectorDeclaration<AXMOrganizationManagementJobLevelEntityModule>;
}

interface AXMOrganizationManagementJobLevelEntityModel extends AXPEntityModel<string> {
    title: string;
    description?: string;
    level?: number;
}

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

declare enum AXMOrgChartNodeType {
    Company = "Company",
    Country = "Country",
    State = "State",
    City = "City",
    Division = "Division",
    Department = "Department",
    Branch = "Branch",
    Position = "Position",
    Employee = "Employee"
}
declare enum AXMOrgChartCategory {
    Company = "Company",
    Location = "Location",
    BusinessUnit = "BusinessUnit",
    Position = "Position",
    Employee = "Employee"
}
interface AXMOrganizationNode {
    id: string;
    title: string;
    subtitle?: string;
    description?: string | null;
    isExpanded?: boolean;
    children?: AXMOrganizationNode[];
    icon?: string;
    type?: AXMOrgChartNodeType;
    parentId?: string | null;
    entity?: {
        id: string;
        source: string;
    };
    metadata?: Record<string, any>;
}

declare class AXMOrganizationManagementModule {
    static ɵfac: i0.ɵɵFactoryDeclaration<AXMOrganizationManagementModule, never>;
    static ɵmod: i0.ɵɵNgModuleDeclaration<AXMOrganizationManagementModule, never, [typeof i1.CommonModule, typeof i2.AXPWidgetCoreModule, typeof AXMOrganizationManagementResponsibilityLevelEntityModule, typeof AXMOrganizationManagementJobDefinitionEntityModule, typeof AXMOrganizationManagementJobLevelEntityModule, typeof AXMOrganizationManagementTeamEntityModule, typeof AXMOrganizationManagementPositionEntityModule, typeof AXMOrganizationManagementChartEntityModule, typeof AXMOrganizationManagementBusinessUnitEntityModule], never>;
    static ɵinj: i0.ɵɵInjectorDeclaration<AXMOrganizationManagementModule>;
}

export { AXMOrgChartCategory, AXMOrgChartNodeType, AXMOrganizationManagementBusinessUnitEntityModule, AXMOrganizationManagementBusinessUnitEntityService, AXMOrganizationManagementBusinessUnitEntityServiceImpl, AXMOrganizationManagementChartEntityModule, AXMOrganizationManagementChartEntityService, AXMOrganizationManagementChartEntityServiceImpl, AXMOrganizationManagementJobDefinitionEntityModule, AXMOrganizationManagementJobDefinitionEntityService, AXMOrganizationManagementJobDefinitionEntityServiceImpl, AXMOrganizationManagementJobLevelEntityModule, AXMOrganizationManagementJobLevelEntityService, AXMOrganizationManagementJobLevelEntityServiceImpl, AXMOrganizationManagementModule, AXMOrganizationManagementPositionEntityModule, AXMOrganizationManagementPositionEntityService, AXMOrganizationManagementPositionEntityServiceImpl, AXMOrganizationManagementResponsibilityLevelEntityModule, AXMOrganizationManagementResponsibilityLevelEntityService, AXMOrganizationManagementResponsibilityLevelEntityServiceImpl, AXMOrganizationManagementTeamEntityModule, AXMOrganizationManagementTeamEntityService, AXMOrganizationManagementTeamEntityServiceImpl, RootConfig };
export type { AXMOrganizationManagementChartEntityModel, AXMOrganizationManagementChartNodeEntityModel, AXMOrganizationManagementCompanyEntityModel, AXMOrganizationManagementJobDefinitionEntityModel, AXMOrganizationManagementJobLevelEntityModel, AXMOrganizationManagementPositionEntityModel, AXMOrganizationManagementResponsibilityEntityModel, AXMOrganizationManagementResponsibilityLevelEntityModel, AXMOrganizationManagementTeamEntityModel, AXMOrganizationNode };
