import { IEntityContext, IJsonSchema } from '@jacquesparis/objects-model';
import { Entity } from '@loopback/repository';
import { TreatmentDescription } from './../../integration/extension-description';
import { EntityName } from './../../models/entity-name';
export interface EntityWithContent {
    id?: string;
    content?: any;
    entityName?: string;
    entityCtx?: IEntityContext;
    [contentFieldName: string]: any;
}
export interface ContentEntityServiceInterface {
    providerId: string;
    serviceId: string;
    getContentDefinition(): Promise<IJsonSchema>;
    getContent(entity: EntityWithContent, fieldName: string, args: {
        contentId?: string;
    }): Promise<{
        filePath: string;
        fileName: string;
    } | any>;
    manageContent(entity: EntityWithContent, postedEntity: EntityWithContent): Promise<boolean>;
    addTransientContent(entity: EntityWithContent): Promise<void>;
    deleteContents(entities: EntityWithContent[]): Promise<void>;
}
export declare class ContentEntityService {
    getContentDefinition(contentType: string | undefined): Promise<IJsonSchema>;
    hasContentManager(contentType: string | undefined): boolean | "" | undefined;
    protected contentTypeDefinitions: {
        [contentType: string]: ContentEntityServiceInterface;
    };
    constructor();
    getPostTreatmentDescription(): TreatmentDescription[];
    registerNewContentType(contentType: string, service: ContentEntityServiceInterface): void;
    get contentTypes(): string[];
    manageContent(contentType: string | undefined, entity: Entity, postedEntity: Entity): Promise<boolean>;
    deleteContents(contentType: string, entities: Entity[]): Promise<void>;
    addTransientContent(entityType: EntityName, contentType: string | undefined, entity: EntityWithContent): Promise<void>;
    getContent(contentType: string | undefined, entity: Entity, fieldName: string, args: {
        contentId?: string;
    }): any;
}
