export type DocumentId = string; export type DocumentRecord = Record & { _id?: DocumentId; }; export type QueryResultType = DocumentRecord | DocumentRecord[] | unknown[]; export interface QueryResult { exec(): Promise; then(onfulfilled?: ((value: T | null) => TResult1 | PromiseLike) | undefined | null, onrejected?: ((reason: unknown) => TResult2 | PromiseLike) | undefined | null): Promise; } export interface QueryBuilder extends QueryResult { select(_: unknown): QueryBuilder; populate(_: unknown): QueryBuilder; sort(_: unknown): QueryBuilder; limit(_: number): QueryBuilder; skip(_: number): QueryBuilder; lean(): QueryBuilder; collation(_: unknown): QueryBuilder; session(_: unknown): QueryBuilder; where(_: unknown): QueryBuilder; distinct(_: unknown): QueryBuilder; } export interface DocumentCollection { find(filter?: Partial): QueryBuilder; findOne(filter?: Partial): QueryBuilder; findById(id: DocumentId): QueryBuilder; findOneAndUpdate(filter: Partial, update: Partial): QueryBuilder; findOneAndDelete(filter: Partial): QueryBuilder; findByIdAndUpdate(id: DocumentId, update: Partial): QueryBuilder; findByIdAndDelete(id: DocumentId): QueryBuilder; create(doc: T): Promise; insertMany(docs: T[]): Promise; updateOne(filter: Partial, update: Partial): Promise<{ modifiedCount: number; matchedCount: number; }>; updateMany(filter: Partial, update: Partial): Promise<{ modifiedCount: number; matchedCount: number; }>; replaceOne(filter: Partial, doc: T): Promise<{ modifiedCount: number; matchedCount: number; }>; deleteOne(filter: Partial): Promise<{ deletedCount: number; }>; deleteMany(filter: Partial): Promise<{ deletedCount: number; }>; countDocuments(filter?: Partial): Promise; estimatedDocumentCount(): Promise; aggregate(pipeline: unknown[]): QueryBuilder; distinct(field: keyof T): QueryBuilder; exists(filter: Partial): Promise<{ _id: DocumentId; } | null>; watch?(): void; startSession?(): unknown; } export interface DocumentStore { collection(name: string): DocumentCollection; /** * Run a callback within a transaction. Commits on success, aborts on error. * Optional — only available when backed by BrightDb or similar transactional store. */ withTransaction?(fn: (session: unknown) => Promise): Promise; } /** * Extended document store interface with lifecycle methods. * Parallel to upstream's IDocumentStore but without Mongoose dependencies. * Implementations should provide connect/disconnect lifecycle and * model retrieval via getModel(). */ export interface IBrightDbDocumentStore extends DocumentStore { /** Connect to the backing store. URI may be ignored by non-network stores. */ connect(uri?: string): Promise; /** Disconnect from the backing store. */ disconnect(): Promise; /** Whether the store is currently connected and ready for operations. */ isConnected(): boolean; /** Retrieve a collection by model name (alias for collection()). */ getModel(modelName: string): DocumentCollection; /** Optional: provision a dev/test database. */ setupDevStore?(): Promise; /** Optional: seed the dev database with initial data. */ initializeDevStore?(): Promise; } //# sourceMappingURL=document-store.d.ts.map