import { IRestEntity } from '@jacquesparis/objects-model';
import { EntityName } from '../../models';
import { ApplicationService, CurrentContext } from '../application.service';
import { ServiceDescription, TreatmentDescription } from './../../integration/extension-description';
import { AbstractEntityInterceptorInterface } from './../../interceptors/abstract-entity-interceptor.service';
export interface TransientEntityInterface {
    providerId: string;
    serviceId: string;
    description: string | (() => TreatmentDescription) | TreatmentDescription;
    completeReturnedEntity(entity: IRestEntity, ctx: CurrentContext): Promise<void>;
}
export declare function onlineDescription(description: string | (() => TreatmentDescription) | TreatmentDescription): string;
export declare class TransientEntityService implements AbstractEntityInterceptorInterface, ServiceDescription {
    protected appCtx: ApplicationService;
    private transientEntities;
    registerTransientEntityService(resource: EntityName, transientEntity: TransientEntityInterface): void;
    getPostTreatmentDescription(): TreatmentDescription[];
    registerTransientEntityTypeFunction<T extends IRestEntity>(functionProviderId: string, functionServiceId: string, functionDescription: string, resource: EntityName, objectType: string, transientFunction: (entity: T, ctx: CurrentContext) => Promise<void>, methods?: ('PUT' | 'POST' | 'PATCH' | 'GET')[]): void;
    get ready(): Promise<void>;
    constructor(appCtx: ApplicationService);
    completeReturnedEntity(entityName: EntityName, entity: IRestEntity, ctx: CurrentContext): Promise<void>;
    completeReturnedEntities(entityName: EntityName, entities: IRestEntity[], ctx: CurrentContext): Promise<void>;
}
