import { MongoSchema, MongoSchemaField } from "./MongoSchema"; import { MongoQuery, MongoQueryMulti, MongoQuerySingle } from "./Query"; import { Collection, AggregationCursor, ObjectId, WriteOpResult, UpdateWriteOpResult, CollectionInsertOneOptions, ReplaceOneOptions, CollStats, FindOneAndReplaceOption, FindAndModifyWriteOpResultObject } from "mongodb"; import { DeepPartial, ObjectType } from "./Types"; export interface ICollection { getSchemaDefinition(): MongoSchema; } export declare class MongoCollection implements ICollection { _id: ObjectId; readonly collectionName: string; constructor(data?: any); static constructCollection(type: new () => T): T; hydrate(data: any): void; hydrateSubDocument(fieldValue: any, field: MongoSchemaField): any; dehydrate(fields: MongoSchemaField[], relationsToIds?: boolean): object; toMongoDocument(): object; toObject(): object; toJSON(): object; getValidatedObject(): object; validate(data?: any): Error; private static ensureObjectId; static query(this: ObjectType, query?: Object): MongoQuery; static find(this: ObjectType, query?: Object): MongoQueryMulti; static findOne(this: ObjectType, query?: Object): MongoQuerySingle; static createOne(this: ObjectType, data?: DeepPartial): Promise; static findOneAndUpdate(this: ObjectType, query?: Object, data?: any, options?: FindOneAndReplaceOption): Promise; static updateOne(this: ObjectType, query?: Object, data?: any, options?: ReplaceOneOptions): Promise; static update(this: ObjectType, query?: Object, data?: any, options?: ReplaceOneOptions & { multi?: boolean; }): Promise; static remove(query: Object): Promise; static removeOne(query: Object): Promise; static aggregate(pipeline?: any[]): AggregationCursor; static getSchema(): MongoSchema; static getCollection(): Collection; static stats(): Promise; collection(): Collection; getSchemaDefinition(): MongoSchema; reload(): Promise; load(): Promise; save(options?: any): Promise; insert(options?: CollectionInsertOneOptions): Promise; update(options?: ReplaceOneOptions): Promise; remove(): Promise; replace(replaceWith: MongoCollection): Promise; }