import { RequestHandler, Request, Response, ErrorRequestHandler, Application } from 'express'; import mongoose from 'mongoose'; type Access = "private" | "protected" | "public"; type OutputFn = (req: Request, res: Response) => void | Promise; type ReadPreference = "p" | "primary" | "pp" | "primaryPreferred" | "s" | "secondary" | "sp" | "secondaryPreferred" | "n" | "nearest"; type Options = { prefix: `/${string}`; version: `/v${number}`; idProperty: string; restify: boolean; name?: string; allowRegex: boolean; runValidators: boolean; readPreference: ReadPreference; totalCountHeader: boolean | string; private: string[]; protected: string[]; lean: boolean; limit?: number; findOneAndRemove: boolean; findOneAndUpdate: boolean; upsert: boolean; preMiddleware: RequestHandler | RequestHandler[]; preCreate: RequestHandler | RequestHandler[]; preRead: RequestHandler | RequestHandler[]; preUpdate: RequestHandler | RequestHandler[]; preDelete: RequestHandler | RequestHandler[]; updateDeep: boolean; access?: (req: Request) => Access | Promise; contextFilter: (model: mongoose.Model, req: Request, done: (query: mongoose.Model | mongoose.Query) => void) => void; postCreate?: RequestHandler | RequestHandler[]; postRead?: RequestHandler | RequestHandler[]; postUpdate?: RequestHandler | RequestHandler[]; postDelete?: RequestHandler | RequestHandler[]; outputFn: OutputFn; postProcess?: (req: Request, res: Response) => void; onError: ErrorRequestHandler; modelFactory?: { getModel: (req: Request) => mongoose.Model; }; }; declare function serve(app: Application, model: mongoose.Model, options?: Partial): string; export { serve };