import { MikroORM } from '@mikro-orm/core';
import { MongoDriver, EntityManager } from '@mikro-orm/mongodb';
import { DatabaseOptions, DatabaseClient } from '../../common/clients/database_client.port.cjs';
import { DatabaseConnection } from '../../common/models/database_connection.port.cjs';
import { EntityType } from '../../common/models/entity_type.port.cjs';

declare type MikroOrmDatabaseConnectionType = DatabaseConnection<MikroORM<MongoDriver>, {
    orm_em: EntityManager;
}>;
declare type MikroOrmDatabaseOptions = DatabaseOptions & {
    entities?: Array<EntityType<any>>;
    cache?: {
        enabled?: boolean;
        expirationMs?: number;
    };
};
declare type MikroOrmDatabaseClientType = DatabaseClient<MikroOrmDatabaseConnectionType, MikroOrmDatabaseOptions>;
declare const MikroOrmDatabaseClient: MikroOrmDatabaseClientType;

export { MikroOrmDatabaseClient, MikroOrmDatabaseClientType, MikroOrmDatabaseConnectionType, MikroOrmDatabaseOptions };
