import { Operation } from './operation.js'; import { Resource } from './resource.js'; import { APIRequest, APIResponse, Method } from './types.js'; import { CSVOptions } from './util.js'; export interface Job { req: APIRequest; res: APIResponse; query?: any; doc?: any; opts?: any; data?: any; feat?: { filter?: { fields: boolean; data: boolean; }; format?: { type: 'json'; } | ({ type: 'csv'; filename?: string; } & CSVOptions); }; } export declare abstract class PipelineOperation extends Operation { createJob(req: APIRequest, res: APIResponse): Promise; prepareQuery(job: Job): Promise; prepareDoc(job: Job): Promise; prepareOpts(job: Job): Promise; abstract runOperation(job: Job): Promise; redactResult(job: Job): Promise; processResult(job: Job): Promise; handler(req: APIRequest, res: APIResponse): Promise; } export interface PipelineOperationRunner { (job: Job): Promise; } export declare class SimplePipelineOperation extends PipelineOperation { protected customRunner: PipelineOperationRunner; constructor(customRunner: PipelineOperationRunner, resource: Resource, path: string, method: Method, id?: string); runOperation(job: Job): Promise; }