import { IAbstractEntity } from '../../domain'; import { AbstractServiceModel } from '../models'; import { SimpleConsoleLoggerService } from '../../infrastructure/logging'; import { AbstractRepository } from '../../application/repository/abstract-repository'; import { IPaginatedResult, IRepositoryPaginatedQueryOptions, IRepositoryOperationOptions } from '../repository/abstractions'; export declare abstract class AbstractService> { protected readonly repository: AbstractRepository; protected readonly logger?: SimpleConsoleLoggerService; constructor(repository: AbstractRepository, logger?: SimpleConsoleLoggerService); existsById(id: string): Promise; update(entityId: string, serviceModel: Model, options?: IRepositoryOperationOptions): Promise; updateAllValues(entityId: string, entity: Entity): Promise; save(serviceModel: Model, options?: IRepositoryOperationOptions): Promise; /** * Saves the given service-model class and returns the original Entity */ saveAsEntity(serviceModel: Model, options?: IRepositoryOperationOptions): Promise; saveEntity(entity: Entity, options?: IRepositoryOperationOptions): Promise; /** * Get the entity and converts it to the service-model provided * @param modelClass The service-model class represented by the Model extends AbstractServiceModel */ getById(id: string, modelClass: new () => Model): Promise; getByIdAsEntity(id: string): Promise; count(): Promise; /** * Get all entities paginated and converted to the service-model provided * @param modelClass The service-model class represented by the Model extends AbstractServiceModel */ getAll(pagination: IRepositoryPaginatedQueryOptions, modelClass: new () => Model): Promise>; getAllAsEntity(options: IRepositoryPaginatedQueryOptions): Promise>; }