import { Document, FilterQuery } from 'mongoose'; import { BaseOutputModel, CreateInputModel, DeleteInputModel, InfoInputModel, ListInputModel, ListOutputModel, UpdateInputModel } from '../models'; import { BaseRepository } from '../repositories'; import { QueryOptions, Request } from '../types'; import { PusherService } from './pusher.service'; export declare abstract class BaseService { readonly baseRepository: BaseRepository; readonly basePusherService: PusherService; readonly outputModelInstantiator: (document: T) => K; readonly instanceName: string; readonly searchProperties: (keyof T)[]; readonly prerequisites?: FilterQuery | undefined; protected constructor(baseRepository: BaseRepository, basePusherService: PusherService, outputModelInstantiator: (document: T) => K, instanceName: string, searchProperties?: (keyof T)[], prerequisites?: FilterQuery | undefined); create(createInputModel: CreateInputModel, request: Request, { populateOptions }?: QueryOptions): Promise; delete(deleteInputModel: DeleteInputModel, request: Request): Promise; info(infoInputModel: InfoInputModel, filter?: FilterQuery, { populateOptions, projection }?: QueryOptions): Promise; list(listInputModel: ListInputModel, filter?: FilterQuery, { populateOptions, projection }?: QueryOptions): Promise>; update(updateInputModel: UpdateInputModel, request: Request, { populateOptions, projection, upsert }?: QueryOptions): Promise; }