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

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;
        };
        role: {
            name: string;
            title: string;
            source: string;
            icon: string;
        };
        company: {
            name: string;
            source: string;
            title: string;
            icon: string;
        };
        team: {
            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;
}

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

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

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

interface AXMOrganizationManagementRoleEntityModel extends AXPEntityModel<string> {
    title: string;
    description?: string;
    categoriesId?: string[];
    categories?: {
        id: string;
        title: string;
    }[];
    skillsId?: string[];
    skills?: {
        id: string;
        title: string;
    }[];
    responsibilitiesId?: string[];
    responsibilities?: {
        id: string;
        title: string;
    }[];
}

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

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 AXMOrganizationManagementBusinessUnitTypeEntityService extends AXMEntityCrudServiceImpl<string, any> {
}
declare class AXMOrganizationManagementBusinessUnitTypeEntityServiceImpl extends AXMOrganizationManagementBusinessUnitTypeEntityService {
    constructor();
    static ɵfac: i0.ɵɵFactoryDeclaration<AXMOrganizationManagementBusinessUnitTypeEntityServiceImpl, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<AXMOrganizationManagementBusinessUnitTypeEntityServiceImpl>;
}

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

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>;
}

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

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

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

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 AXMOrganizationManagementResponsibilityEntityModule, typeof AXMOrganizationManagementRoleEntityModule, typeof AXMOrganizationManagementTeamEntityModule, typeof AXMOrganizationManagementCompanyEntityModule, typeof AXMOrganizationManagementPositionEntityModule, typeof AXMOrganizationManagementChartEntityModule, typeof AXMOrganizationManagementBusinessUnitEntityModule, typeof AXMOrganizationManagementBusinessUnitTypeEntityModule], never>;
    static ɵinj: i0.ɵɵInjectorDeclaration<AXMOrganizationManagementModule>;
}

export { AXMOrgChartCategory, AXMOrgChartNodeType, AXMOrganizationManagementBusinessUnitEntityModule, AXMOrganizationManagementBusinessUnitEntityService, AXMOrganizationManagementBusinessUnitEntityServiceImpl, AXMOrganizationManagementBusinessUnitTypeEntityModule, AXMOrganizationManagementBusinessUnitTypeEntityService, AXMOrganizationManagementBusinessUnitTypeEntityServiceImpl, AXMOrganizationManagementChartEntityModule, AXMOrganizationManagementChartEntityService, AXMOrganizationManagementChartEntityServiceImpl, AXMOrganizationManagementCompanyEntityModule, AXMOrganizationManagementCompanyEntityService, AXMOrganizationManagementCompanyEntityServiceImpl, AXMOrganizationManagementModule, AXMOrganizationManagementPositionEntityModule, AXMOrganizationManagementPositionEntityService, AXMOrganizationManagementPositionEntityServiceImpl, AXMOrganizationManagementResponsibilityEntityModule, AXMOrganizationManagementResponsibilityEntityService, AXMOrganizationManagementResponsibilityEntityServiceImpl, AXMOrganizationManagementRoleEntityModule, AXMOrganizationManagementRoleEntityService, AXMOrganizationManagementRoleEntityServiceImpl, AXMOrganizationManagementTeamEntityModule, AXMOrganizationManagementTeamEntityService, AXMOrganizationManagementTeamEntityServiceImpl, RootConfig };
export type { AXMOrganizationManagementChartEntityModel, AXMOrganizationManagementChartNodeEntityModel, AXMOrganizationManagementCompanyEntityModel, AXMOrganizationManagementPositionEntityModel, AXMOrganizationManagementResponsibilityEntityModel, AXMOrganizationManagementRoleEntityModel, AXMOrganizationManagementTeamEntityModel, AXMOrganizationNode };
