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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

declare class AXMProjectManagementModule {
    static ɵfac: i0.ɵɵFactoryDeclaration<AXMProjectManagementModule, never>;
    static ɵmod: i0.ɵɵNgModuleDeclaration<AXMProjectManagementModule, never, [typeof i1.AXPRuntimeModule, typeof AXMProjectEntityModule, typeof AXMProjectTypeEntityModule, typeof AXMClientEntityModule, typeof AXMWorkSiteEntityModule, typeof AXMProjectMemeberEntityModule, typeof AXMProjectRoleMemberEntityModule, typeof AXMTaskTypeEntityModule, typeof AXMTaskEntityModule, typeof AXMSprintEntityModule, typeof AXMTimeSheetEntityModule, typeof AXMTaskHistoryEntityModule, typeof AXMSprintTaskEntityModule, typeof AXMJsaEntityModule, typeof AXMJsaAssignmentEntityModule, typeof AXMJsaModule], never>;
    static ɵinj: i0.ɵɵInjectorDeclaration<AXMProjectManagementModule>;
}

declare const RootConfig: {
    config: {
        i18n: string;
    };
    module: {
        module: string;
        name: string;
        title: string;
        icon: string;
    };
    entities: {
        jsa: {
            name: string;
            title: string;
            titlePlural: string;
            icon: string;
        };
        jsaAssignment: {
            name: string;
            title: string;
            titlePlural: string;
            icon: string;
        };
        sprintTask: {
            name: string;
            title: string;
            titlePlural: string;
            icon: string;
        };
        taskHistory: {
            name: string;
            title: string;
            titlePlural: string;
            icon: string;
        };
        timeSheet: {
            name: string;
            title: string;
            titlePlural: string;
            icon: string;
        };
        sprint: {
            name: string;
            title: string;
            titlePlural: string;
            icon: string;
        };
        task: {
            name: string;
            title: string;
            titlePlural: string;
            icon: string;
        };
        taskType: {
            name: string;
            title: string;
            titlePlural: string;
            icon: string;
        };
        projectRoleMember: {
            name: string;
            title: string;
            titlePlural: string;
            icon: string;
        };
        projectMemeber: {
            name: string;
            title: string;
            titlePlural: string;
            icon: string;
        };
        workSite: {
            name: string;
            title: string;
            titlePlural: string;
            icon: string;
        };
        client: {
            name: string;
            title: string;
            titlePlural: string;
            icon: string;
        };
        projectType: {
            name: string;
            title: string;
            titlePlural: string;
            icon: string;
        };
        project: {
            name: string;
            title: string;
            titlePlural: string;
            icon: string;
        };
    };
};

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

interface AXMProjectManagementProjectEntityModel extends AXPEntityModel<string> {
    projectName: string;
    projectNo: string;
    description: string;
    projectTypeId: any;
    projectStatus: any;
    estimatetime: string;
    projectWeight: number;
    client: any;
}

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

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

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

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

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

interface AXMProjectManagementClientEntityModel extends AXPEntityModel<string> {
    title: string;
    description: string;
    personId: number;
    location: string;
}

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

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

interface AXMProjectManagementWorkSiteEntityModel extends AXPEntityModel<string> {
    title: string;
    personId: number;
    clientId: any;
    location: string;
    description: string;
}

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

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

interface AXMProjectManagementProjectMemeberEntityModel extends AXPEntityModel<string> {
    description: string;
    projectId: any;
    personId: number;
    projectRoleMemberId: any;
}

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

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

interface AXMProjectManagementProjectRoleMemberEntityModel extends AXPEntityModel<string> {
    title: string;
    projectTypeId: any;
}

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

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

interface AXMProjectManagementTaskTypeEntityModel extends AXPEntityModel<string> {
    title: string;
    projectTypeId: any;
    description: string;
}

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

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

interface AXMProjectManagementTaskEntityModel extends AXPEntityModel<string> {
    date: Date;
    starttime: Date;
    endTime: Date;
    duration: number;
    asignedTo: string;
    title: string;
    description: string;
    estimatetime: number;
    workSiteId: any;
    typeId: any;
    parentTaskId: any;
    status: any;
    projectId: any;
    wieght: number;
    priorityIndex: number;
    priorityCritical: any;
}

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

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

interface AXMProjectManagementSprintEntityModel extends AXPEntityModel<string> {
    title: string;
    description: string;
    startDate: Date;
    endDate: Date;
    projectId: any;
}

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

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

interface AXMProjectManagementTimeSheetEntityModel extends AXPEntityModel<string> {
    timesheetDescription: string;
    startDate: Date;
    endDate: Date;
    taskId: any;
    personId: any;
}

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

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

interface AXMProjectManagementTaskHistoryEntityModel extends AXPEntityModel<string> {
    taskId: any;
    assignedTo: any;
    status: string;
    startDate: Date;
    endDate: Date;
}

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

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

interface AXMProjectManagementSprintTaskEntityModel extends AXPEntityModel<string> {
    taskId: any;
    sprintId: any;
}

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

type AXMProjectManagementJsaStatus = 'Pending' | 'Setup' | 'Signed' | 'Completed';
interface AXMProjectManagementJsaAssignmentModel extends AXPEntityModel<string> {
    jsaId: string;
    staffUserId: string;
    viewedOnApp?: boolean;
    signedOff: boolean;
    signedOffAt?: Date;
}
interface AXMProjectManagementJsaEntityModel extends AXPEntityModel<string> {
    docNo: string;
    customerId: string;
    workSiteId: string;
    jobNo?: string;
    title: string;
    assignedToUserId: string;
    preparedByUserId: string;
    templateId: string;
    multiSignOff: boolean;
    siteSupervisorSignedOff: boolean;
    status?: AXMProjectManagementJsaStatus;
}

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

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

interface AXMProjectManagementJsaAssignmentEntityModel extends AXPEntityModel<string> {
    jsaId: string;
    staffUserId: string;
    viewedOnApp?: boolean;
    signedOff: boolean;
    signedOffAt?: Date;
}

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

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

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

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

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

declare class AXMSettingProvider implements AXPSettingDefinitionProvider {
    provide(context: AXPSettingDefinitionProviderContext): Promise<void>;
}

export { AXMClientEntityModule, AXMClientService, AXMClientServiceImpl, AXMEntityProvider, AXMJsaAssignmentEntityModule, AXMJsaEntityModule, AXMMenuProvider, AXMProjectEntityModule, AXMProjectManagementJsaAssignmentService, AXMProjectManagementJsaAssignmentServiceImpl, AXMProjectManagementJsaService, AXMProjectManagementJsaServiceImpl, AXMProjectManagementModule, AXMProjectMemeberEntityModule, AXMProjectMemeberService, AXMProjectMemeberServiceImpl, AXMProjectRoleMemberEntityModule, AXMProjectRoleMemberService, AXMProjectRoleMemberServiceImpl, AXMProjectService, AXMProjectServiceImpl, AXMProjectTypeEntityModule, AXMProjectTypeService, AXMProjectTypeServiceImpl, AXMSearchCommandProvider, AXMSettingProvider, AXMSprintEntityModule, AXMSprintService, AXMSprintServiceImpl, AXMSprintTaskEntityModule, AXMSprintTaskService, AXMSprintTaskServiceImpl, AXMTaskEntityModule, AXMTaskHistoryEntityModule, AXMTaskHistoryService, AXMTaskHistoryServiceImpl, AXMTaskService, AXMTaskServiceImpl, AXMTaskTypeEntityModule, AXMTaskTypeService, AXMTaskTypeServiceImpl, AXMTimeSheetEntityModule, AXMTimeSheetService, AXMTimeSheetServiceImpl, AXMWorkSiteEntityModule, AXMWorkSiteService, AXMWorkSiteServiceImpl, RootConfig, clientFactory, jsaAssignmentFactory, jsaFactory, projectFactory, projectMemeberFactory, projectRoleMemberFactory, projectTypeFactory, sprintFactory, sprintTaskFactory, taskFactory, taskHistoryFactory, taskTypeFactory, timeSheetFactory, workSiteFactory };
export type { AXMProjectManagementClientEntityModel, AXMProjectManagementJsaAssignmentEntityModel, AXMProjectManagementJsaAssignmentModel, AXMProjectManagementJsaEntityModel, AXMProjectManagementJsaStatus, AXMProjectManagementProjectEntityModel, AXMProjectManagementProjectMemeberEntityModel, AXMProjectManagementProjectRoleMemberEntityModel, AXMProjectManagementProjectTypeEntityModel, AXMProjectManagementSprintEntityModel, AXMProjectManagementSprintTaskEntityModel, AXMProjectManagementTaskEntityModel, AXMProjectManagementTaskHistoryEntityModel, AXMProjectManagementTaskTypeEntityModel, AXMProjectManagementTimeSheetEntityModel, AXMProjectManagementWorkSiteEntityModel };
