import { BaseSchema, Model, SchemaOptions } from "papr"; import { Db, IndexDescription } from "mongodb"; //#region src/types.d.ts type PaprSchemaTuple = readonly [BaseSchema, unknown]; type PaprDocument = TSchema[0]; type PaprSchemaDefinition = Extract>>; type PaprModel = Model, PaprSchemaDefinition>; /** * Main interface for the fastify-papr plugin * Contains all registered models and their connections */ type FastifyPaprModel = Model; type FastifyPaprConnection = Record; interface FastifyPapr { [key: string]: FastifyPaprModel | FastifyPaprConnection | undefined; } /** * Represents a model registration with its schema and optional indexes */ type ModelRegistration = { /** Collection name in MongoDB */name: string; /** Schema definition pair (schema and options) */ schema: [BaseSchema, SchemaOptions>]; /** Optional MongoDB indexes to create */ indexes?: IndexDescription[]; }; /** * Maps model registrations to FastifyPapr property names */ type ModelRegistrationPair = Record; /** * Configuration options for the fastify-papr plugin */ type FastifyPaprOptions = { /** Optional name for multiple database support */name?: string; /** MongoDB database instance */ db: Db; /** Models to register */ models: ModelRegistrationPair; /** Whether to skip schema validation reconciliation */ disableSchemaReconciliation?: boolean; }; //#endregion export { FastifyPapr, FastifyPaprConnection, FastifyPaprModel, FastifyPaprOptions, ModelRegistration, ModelRegistrationPair, PaprDocument, PaprModel, PaprSchemaDefinition, PaprSchemaTuple }; //# sourceMappingURL=types.d.ts.map