import * as i0 from '@angular/core';
import { Injector } from '@angular/core';
import * as i1 from '@angular/common';
import * as i9 from '@acorex/platform/workflow';
import * as i10 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';

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

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

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

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

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

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

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

declare class AXMMeetingManagementModule {
    static ɵfac: i0.ɵɵFactoryDeclaration<AXMMeetingManagementModule, never>;
    static ɵmod: i0.ɵɵNgModuleDeclaration<AXMMeetingManagementModule, never, [typeof i1.CommonModule, typeof AXMMeetingEntityModule, typeof AXMMeetingParticipantEntityModule, typeof AXMMeetingRoleTypeEntityModule, typeof AXMMeetingTypeEntityModule, typeof AXMMeetingFilesEntityModule, typeof AXMMeetingSessionEntityModule, typeof AXMMeetingTypeFileTemplateEntityModule, typeof i9.AXPWorkflowModule, typeof i10.RouterModule], never>;
    static ɵinj: i0.ɵɵInjectorDeclaration<AXMMeetingManagementModule>;
}

declare const RootConfig: {
    config: {
        i18n: string;
    };
    module: {
        name: string;
        title: string;
        icon: string;
    };
    entities: {
        meeting: {
            name: string;
            title: string;
            titlePlural: string;
            icon: string;
        };
        meetingParticipant: {
            name: string;
            title: string;
            titlePlural: string;
            icon: string;
        };
        meetingRoleType: {
            name: string;
            title: string;
            titlePlural: string;
            icon: string;
        };
        meetingType: {
            name: string;
            title: string;
            titlePlural: string;
            icon: string;
        };
        meetingFiles: {
            name: string;
            title: string;
            titlePlural: string;
            icon: string;
        };
        meetingSession: {
            name: string;
            title: string;
            titlePlural: string;
            icon: string;
        };
        meetingTypeFileTemplate: {
            name: string;
            title: string;
            titlePlural: string;
            icon: string;
        };
        meetingSchedule: {
            name: string;
            title: string;
            titlePlural: string;
            icon: string;
        };
    };
};

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

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

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

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

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

interface AXMMeetingmanagementMeetingEntityModel extends AXPEntityModel<string> {
    title: string;
    meetingNotes: string;
    meetingType: string;
    meetingProviderType: string;
    joinUrl: string;
    hostUrl: string;
    isRecorded: boolean;
    mettingStatus: string;
    meetingFiles: string;
    meetingParticipants: string;
    meetingLocationId: string;
    meetingScheduleId: string;
}

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

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

interface AXMMeetingmanagementMeetingParticipantEntityModel extends AXPEntityModel<string> {
    meetingId: string;
    jointime: Date;
    leftTime: Date;
    duration: number;
    signOffAt: Date;
    participantStatus: string;
    userId: string;
    meetingRoleTypeIds: string;
}

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

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

interface AXMMeetingmanagementMeetingRoleTypeEntityModel extends AXPEntityModel<string> {
    title: string;
    meetingParticipantId: string;
}

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

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

interface AXMMeetingmanagementMeetingTypeEntityModel extends AXPEntityModel<string> {
    meetingId: string;
    title: string;
    templateIds: string;
}

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

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

interface AXMMeetingmanagementMeetingFilesEntityModel extends AXPEntityModel<string> {
    meetingId: string;
    documentId: string;
    description?: string;
}

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

interface AXMMeetingmanagementMeetingSessionEntityModel extends AXPEntityModel<string> {
    title: string;
    meetingId: string;
    scheduleDate: Date;
    startTime: Date;
    endTime: string;
    actualDate?: Date;
    actualStartTime?: Date;
    actualEndTime?: Date;
}

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

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

interface AXMMeetingmanagementMeetingTypeFileTemplateEntityModel extends AXPEntityModel<string> {
    title: string;
    templateId: string;
    typeId: string;
}

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

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

export { AXMMeetingEntityModule, AXMMeetingFilesEntityModule, AXMMeetingFilesService, AXMMeetingFilesServiceImpl, AXMMeetingManagementEntityProvider, AXMMeetingManagementMenuProvider, AXMMeetingManagementModule, AXMMeetingManagementSearchCommandProvider, AXMMeetingParticipantEntityModule, AXMMeetingParticipantService, AXMMeetingParticipantServiceImpl, AXMMeetingRoleTypeEntityModule, AXMMeetingRoleTypeService, AXMMeetingRoleTypeServiceImpl, AXMMeetingService, AXMMeetingServiceImpl, AXMMeetingSessionEntityModule, AXMMeetingSessionService, AXMMeetingSessionServiceImpl, AXMMeetingTypeEntityModule, AXMMeetingTypeFileTemplateEntityModule, AXMMeetingTypeFileTemplateService, AXMMeetingTypeFileTemplateServiceImpl, AXMMeetingTypeService, AXMMeetingTypeServiceImpl, AXMPermissionDefinitionProvider, RootConfig, meetingFactory, meetingFilesFactory, meetingParticipantFactory, meetingRoleTypeFactory, meetingSessionFactory, meetingTypeFactory, meetingTypeFileTemplateFactory };
export type { AXMMeetingmanagementMeetingEntityModel, AXMMeetingmanagementMeetingFilesEntityModel, AXMMeetingmanagementMeetingParticipantEntityModel, AXMMeetingmanagementMeetingRoleTypeEntityModel, AXMMeetingmanagementMeetingSessionEntityModel, AXMMeetingmanagementMeetingTypeEntityModel, AXMMeetingmanagementMeetingTypeFileTemplateEntityModel };
