import { FastifyInstance, FastifyReply } from 'fastify'; import { Filter } from 'mongodb'; import { AllResponses, ApiResponse } from '../../ApiResponse'; import { ValidationResult } from '../../services/DocumentValidator'; import { FilterPolicyResult } from '../../types'; import { MaybePromise } from "../../utilities"; declare type ParseRequestFn = (this: FastifyInstance, request: T) => MaybePromise; declare type ValidateFn = (this: FastifyInstance, values: TParsed) => ValidationResult; declare type CheckAccessFn = (this: FastifyInstance, values: TParsed) => MaybePromise; declare type QueryFn = (this: FastifyInstance, policyFilter: Filter, values: TParsed) => MaybePromise; declare type EmitEventsFn = (this: FastifyInstance, data: TData, context: TContext) => void; declare type ReplyFn = (this: FastifyInstance, data: TData) => TResponse; export declare function pipeline(parseRequest: ParseRequestFn, validate: ValidateFn | undefined, checkAccess: CheckAccessFn, executeQuery: QueryFn, emitEventsFn: EmitEventsFn | undefined, makeReply: ReplyFn): (this: FastifyInstance, request: T, reply: FastifyReply) => Promise; export {};