import { FactoryProvider } from '@shadow-library/app'; import { ConnectOptions, Connection, MongooseError, Schema } from 'mongoose'; import { Promisable } from 'type-fest'; export interface MongooseModuleFactoryOptions extends ConnectOptions { uri: string; connectionFactory?: (connection: Connection, name: string) => Connection; connectionErrorFactory?: (error: MongooseError) => MongooseError; onConnectionCreate?: (connection: Connection) => void; } export interface MongooseModuleOptions extends Omit { connectionName?: string; } export interface MongooseModuleAsyncOptions { connectionName?: string; inject?: FactoryProvider['inject']; useFactory: (...args: any[]) => Promisable; } export interface DiscriminatorOptions { name: string; schema: Schema; value?: string; } export interface ModelDefinition { name: string; schema: Schema; collection?: string; discriminators?: DiscriminatorOptions[]; } export interface MongooseFeatureOptions { connectionName?: string; featureName?: string; }