import { Class, DeepPartial, MetaValue } from '../common'; import { AggregateQuery, AggregateResponse, Query } from '../interfaces'; export interface Assembler, CreateEntity = DeepPartial, UpdateDTO = CreateDTO, UpdateEntity = CreateEntity> { /** * Convert an entity to a DTO * @param entity - the entity to convert */ convertToDTO(entity: Entity): Promise | DTO; /** * Convert a DTO to an entity. * @param dto - The dto to convert. */ convertToEntity(dto: DTO): Promise | Entity; /** * Convert a DTO query to an entity query. * @param query - the query to convert. */ convertQuery(query: Query): Query; /** * Convert a DTO query to an entity query. * @param aggregate - the aggregate query to convert. */ convertAggregateQuery(aggregate: AggregateQuery): AggregateQuery; /** * Convert a Entity aggregate response query to an dto aggregate. * @param aggregate - the aggregate query to convert. */ convertAggregateResponse(aggregate: AggregateResponse): AggregateResponse; /** * Convert a create dto input to the equivalent create entity type * @param createDTO */ convertToCreateEntity(createDTO: CreateDTO): Promise | CreateEntity; /** * Convert a update dto input to the equivalent update entity type * @param createDTO */ convertToUpdateEntity(createDTO: UpdateDTO): Promise | UpdateEntity; /** * Convert an array of entities to a an of DTOs * @param entities - the entities to convert. */ convertToDTOs(entities: Entity[]): Promise; /** * Convert an array of DTOs to an array of entities. * @param dtos - the dtos to convert. */ convertToEntities(dtos: DTO[]): Promise; /** * Convert an array of create DTOs to an array of create entities * @param createDtos */ convertToCreateEntities(createDtos: CreateDTO[]): Promise; } export interface AssemblerClasses { DTOClass: Class; EntityClass: Class; } /** * Class decorator for Assemblers to register them with nestjs-query * @param DTOClass - the DTO class. * @param EntityClass - The entity class. */ export declare function Assembler, CE = DeepPartial, U = DeepPartial, UE = DeepPartial>(DTOClass: Class, EntityClass: Class): >>(cls: Cls) => Cls | void; export declare function getAssemblers(DTOClass: Class): MetaValue, Class>>>; export declare function getAssemblerClasses(AssemblerClass: Class>): MetaValue>;