import { Filter } from 'mongodb'; import { BaseOutputModel, CreateInputModel, DeleteInputModel, InfoInputModel, ListInputModel, ListOutputModel, UpdateInputModel } from '../models'; import { EventRepository } from '../repositories'; import { QueryOptions, Request } from '../types'; import { PusherService } from './pusher.service'; export declare abstract class EventService { readonly eventRepository: EventRepository; readonly basePusherService: PusherService; readonly outputModelInstantiator: (document: object | null) => T; readonly instanceName: string; readonly searchProperties: (keyof T)[]; readonly prerequisites?: Filter | undefined; protected constructor(eventRepository: EventRepository, basePusherService: PusherService, outputModelInstantiator: (document: object | null) => T, instanceName: string, searchProperties?: (keyof T)[], prerequisites?: Filter | undefined); create(createInputModel: CreateInputModel, request: Request): Promise; delete(deleteInputModel: DeleteInputModel, request: Request): Promise; info(infoInputModel: InfoInputModel, filter?: Filter): Promise; list(listInputModel: ListInputModel, filter?: Filter, { projection }?: QueryOptions): Promise>; update(updateInputModel: UpdateInputModel, request: Request): Promise; private getDifferenceAndFormer; private makeDifference; }