import { type Document, type Filter, ObjectId, type Sort } from 'mongodb'; import { AbstractDialect } from 'nukak/dialect'; import type { EntityMeta, FieldValue, Query, QueryOptions, QuerySelect, QuerySelectMap, QuerySort, QueryWhere, RelationKey, Type } from 'nukak/type'; import { type CallbackKey } from 'nukak/util'; export declare class MongoDialect extends AbstractDialect { where(entity: Type, where?: QueryWhere, { softDelete }?: QueryOptions): Filter; select(entity: Type, select: QuerySelect): QuerySelectMap; sort(entity: Type, sort: QuerySort): Sort; aggregationPipeline(entity: Type, q: Query): MongoAggregationPipelineEntry[]; normalizeIds(meta: EntityMeta, docs: E[]): E[]; normalizeId(meta: EntityMeta, doc: E): E; getIdValue(value: T): T; getPersistable(meta: EntityMeta, payload: E, callbackKey: CallbackKey): E; getPersistables(meta: EntityMeta, payload: E | E[], callbackKey: CallbackKey): E[]; } type MongoAggregationPipelineEntry = { readonly $lookup?: MongoAggregationLookup; $match?: Filter | Record; $sort?: Sort; readonly $unwind?: MongoAggregationUnwind; }; type MongoAggregationLookup = { readonly from?: string; readonly foreignField?: string; readonly localField?: string; readonly pipeline?: MongoAggregationPipelineEntry>[]; readonly as?: RelationKey; }; type MongoAggregationUnwind = { readonly path?: string; readonly preserveNullAndEmptyArrays?: boolean; }; type IdValue = string | ObjectId; export {};