import { Collection, CollectionOptions, Db } from 'mongodb'; import { OpenAPIV3 } from 'openapi-police'; import { Operation } from '../operation.js'; import { Resource, ResourceDefinition, Routes } from '../resource.js'; import { Method } from '../types.js'; export interface MongoOperationFactory { new (resource: MongoResource, path: string, method: Method): Operation; } export interface MongoRoutes extends Routes { [path: string]: { ['get']?: MongoOperationFactory; ['put']?: MongoOperationFactory; ['post']?: MongoOperationFactory; ['delete']?: MongoOperationFactory; ['options']?: MongoOperationFactory; ['head']?: MongoOperationFactory; ['patch']?: MongoOperationFactory; }; } export interface MongoResourceDefinition extends ResourceDefinition { collection?: string; idIsObjectId?: boolean; createIndexes?: boolean; escapeProperties?: boolean; queryLimit?: number; } export declare class MongoResource extends Resource { info: MongoResourceDefinition; db: Promise; indexesChecked: boolean; constructor(db: string | Db | Promise, info: MongoResourceDefinition, routes?: MongoRoutes); protected initInfo(): void; get schema(): OpenAPIV3.SchemaObject | OpenAPIV3.ReferenceObject; get requestSchema(): OpenAPIV3.SchemaObject | OpenAPIV3.ReferenceObject; get responseSchema(): OpenAPIV3.SchemaObject | OpenAPIV3.ReferenceObject; checkCollectionIndexes(coll: Collection): Promise; getCollection(opts?: CollectionOptions): Promise; protected getCollectionOptions(): CollectionOptions; protected getIndexes(): any[] | undefined; static defaultRoutes(): MongoRoutes; }