import { Ability } from '@casl/ability'; import { Collection, CollectionOptions } from 'mongodb'; import { Job, PipelineOperation } from '../../pipeline.js'; import { APIRequest, APIResponse, Method } from '../../types.js'; import { MongoResource } from '../resource.js'; export interface MongoJob extends Job { coll: Collection; } export declare abstract class MongoOperation extends PipelineOperation { resource: MongoResource; constructor(resource: MongoResource, path: string, method: Method, id?: string); get collection(): Promise; get requestSchema(): any; get responseSchema(): any; protected getCollectionOptions(): CollectionOptions | undefined; protected getItemQuery(_id: any): { [x: string]: any; }; protected parseFields(fields: string[]): any; getAbilityConstraints(ability: Ability): any; createJob(req: APIRequest, res: APIResponse): Promise; prepareQuery(job: MongoJob): Promise; redactResult(job: MongoJob): Promise; }