import * as i0 from '@angular/core';
import * as i1 from '@acorex/platform/layout/widgets';
import * as i3 from '@acorex/platform/layout/widget-core';
import * as i4 from '@acorex/platform/workflow';
import { AXPEntityDetailDto, AXPEntityListItemDto, AXPEntityCreateDto, AXPEntityUpdateDto, AXMEntityCrudServiceImpl } from '@acorex/platform/layout/entity';

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

declare class AXMFormTemplateManagementModule {
    static ɵfac: i0.ɵɵFactoryDeclaration<AXMFormTemplateManagementModule, never>;
    static ɵmod: i0.ɵɵNgModuleDeclaration<AXMFormTemplateManagementModule, never, [typeof i1.AXPWidgetsModule, typeof AXMFormTemplateManagementTemplateEntityModule, typeof i3.AXPWidgetCoreModule, typeof i4.AXPWorkflowModule], never>;
    static ɵinj: i0.ɵɵInjectorDeclaration<AXMFormTemplateManagementModule>;
}

interface AXMCreateFormTemplateDto extends AXPEntityCreateDto {
    code: string;
    title: string;
    description?: string;
    template?: string | null;
    typeId: number;
    categoryIds: string[];
}
interface AXMUpdateFormTemplateDto extends AXPEntityUpdateDto<string> {
    title: string;
    description?: string;
    typeId: number;
    template?: string;
    categoryIds: string[];
}
interface AXMFormTemplateDetailDto extends AXPEntityDetailDto<string> {
    title: string;
    description?: string;
    typeId: number;
    type: number;
    template: string | null;
    categoryIds: string[];
    categories: {
        id: string;
        title: string;
    }[];
}
interface AXMFormTemplateListItemDto extends AXPEntityListItemDto<string> {
    title: string;
    description?: string;
    typeId: number;
    type: number;
    categoryIds: string[];
    categories: {
        id: string;
        title: string;
    }[];
}
declare const AXMFormTemplateTypes: {
    Form: {
        id: number;
        title: string;
    };
    Widget: {
        id: number;
        title: string;
    };
    Report: {
        id: number;
        title: string;
    };
};

declare abstract class AXMFormTemplateManagementTemplateEntityService extends AXMEntityCrudServiceImpl<string, AXMFormTemplateDetailDto, AXMFormTemplateListItemDto, AXMCreateFormTemplateDto, AXMUpdateFormTemplateDto> {
}
declare class AXMFormTemplateManagementTemplateEntityServiceImpl extends AXMFormTemplateManagementTemplateEntityService {
    constructor();
    static ɵfac: i0.ɵɵFactoryDeclaration<AXMFormTemplateManagementTemplateEntityServiceImpl, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<AXMFormTemplateManagementTemplateEntityServiceImpl>;
}

declare const AXMPermissionsKeys: {
    FormTemplate: {
        Management: string;
        Templates: {
            Management: string;
            View: string;
            Edit: string;
            Delete: string;
            Create: string;
        };
        Categories: {
            Management: string;
            View: string;
            Edit: string;
            Delete: string;
            Create: string;
        };
    };
};

declare const RootConfig: {
    config: {
        i18n: string;
        module: string;
    };
    module: {
        route: string;
        name: string;
        title: string;
        icon: string;
    };
    entities: {
        template: {
            name: string;
            title: string;
            source: string;
            icon: string;
        };
    };
};

export { AXMFormTemplateManagementModule, AXMFormTemplateManagementTemplateEntityModule, AXMFormTemplateManagementTemplateEntityService, AXMFormTemplateManagementTemplateEntityServiceImpl, AXMFormTemplateTypes, AXMPermissionsKeys, RootConfig };
export type { AXMCreateFormTemplateDto, AXMFormTemplateDetailDto, AXMFormTemplateListItemDto, AXMUpdateFormTemplateDto };
