/** * MongoDB-compatible Document Collection Implementation * * Core document collection with full MongoDB API compatibility * Implements schema-free storage with automatic optimization */ import { Document, ObjectId, QueryFilter, FindOptions, UpdateOperators, UpdateOptions, ReplaceOptions, InsertOneResult, InsertManyResult, UpdateResult, DeleteResult, ReplaceOneResult, BulkWriteOperation, BulkWriteOptions, BulkWriteResult, AggregationPipeline, AggregationOptions, AggregationCursor, IndexSpec, IndexInfo, ChangeStream, ChangeStreamOptions, QueryExplain, PaginationResult, IDocumentCollection, IChangeStreamManager } from './interface.js'; /** * MongoDB-compatible Document Collection */ export declare class DocumentCollection implements IDocumentCollection { readonly name: string; readonly database: string; private d1; private kvStore?; private queryEngine; private indexManager; private changeStreamManager?; private options; constructor(name: string, database: string, d1: any, options?: { kvStore?: any; changeStreamManager?: IChangeStreamManager; maxDocumentSize?: number; enableValidation?: boolean; enableChangeStreams?: boolean; enableQueryCache?: boolean; queryCacheTTL?: number; }); find(filter?: QueryFilter, options?: FindOptions): Promise; findOne(filter?: QueryFilter, options?: FindOptions): Promise; findWithPagination(filter?: QueryFilter, options?: FindOptions & { pageSize?: number; cursor?: string; }): Promise>; countDocuments(filter?: QueryFilter): Promise; estimatedDocumentCount(): Promise; exists(filter: QueryFilter): Promise; distinct(field: K, filter?: QueryFilter): Promise; insertOne(document: Omit & { _id?: ObjectId; }): Promise; insertMany(documents: (Omit & { _id?: ObjectId; })[], options?: { ordered?: boolean; }): Promise; updateOne(filter: QueryFilter, update: UpdateOperators | Partial, options?: UpdateOptions): Promise; updateMany(filter: QueryFilter, update: UpdateOperators | Partial, options?: UpdateOptions): Promise; replaceOne(filter: QueryFilter, replacement: Omit, options?: ReplaceOptions): Promise; findOneAndUpdate(filter: QueryFilter, update: UpdateOperators | Partial, options?: UpdateOptions & { returnDocument?: 'before' | 'after'; includeResultMetadata?: boolean; }): Promise; findOneAndReplace(filter: QueryFilter, replacement: Omit, options?: ReplaceOptions & { returnDocument?: 'before' | 'after'; includeResultMetadata?: boolean; }): Promise; findOneAndDelete(filter: QueryFilter, options?: { includeResultMetadata?: boolean; }): Promise; deleteOne(filter: QueryFilter): Promise; deleteMany(filter: QueryFilter): Promise; bulkWrite(operations: BulkWriteOperation[], options?: BulkWriteOptions): Promise; initializeOrderedBulkOp(): any; initializeUnorderedBulkOp(): any; aggregate(pipeline: AggregationPipeline, options?: AggregationOptions): Promise>; aggregateToArray(pipeline: AggregationPipeline, options?: AggregationOptions): Promise; createIndex(keyPattern: IndexSpec['key'], options?: IndexSpec['options']): Promise; createIndexes(indexSpecs: IndexSpec[]): Promise; dropIndex(indexName: string): Promise; dropIndexes(): Promise; listIndexes(): Promise; indexExists(indexName: string): Promise; indexStats(): Promise>; reIndex(): Promise; watch(pipeline?: AggregationPipeline, options?: ChangeStreamOptions): Promise>; drop(): Promise; rename(newName: string, options?: { dropTarget?: boolean; }): Promise; stats(): Promise; validate(options?: { full?: boolean; }): Promise; explain(operation: 'find' | 'aggregate' | 'update' | 'delete', query: any, options?: any): Promise; hint(query: QueryFilter): Promise; analyzeFields(): Promise; getIndexRecommendations(): Promise; migrateField(fieldPath: string, transform: (value: any) => any, options?: { dryRun?: boolean; }): Promise; private prepareDocumentForInsert; private validateDocument; private ensureIndexedFields; private buildInsertQuery; private buildUpsertDocument; private extractIdFromFilter; private processQueryResults; private recordQueryPattern; private emitChangeEvent; private getCacheKey; private getCachedResult; private cacheResult; private generateObjectId; } //# sourceMappingURL=collection.d.ts.map