import type { FetchResult, SchemaQuery } from './query/types/index.js'; import { CollectionNameFromModels, type Models, type RecordType, type SetType } from './schema/index.js'; import { DBChanges, CollectionName, KVStoreTransaction, EntityStore, KVStoreOrTransaction, DBEntity, ApplyChangesOptions } from './types.js'; import { DBSchema } from './db.js'; import { DBSession } from './session.js'; import { TypeConverters } from './schema/converters.js'; import { ReadModel, UpdatePayload, WriteModel } from './types/db.js'; export interface DBTransactionOptions = Models> { entityStore: EntityStore; schema: DBSchema | undefined; kvTx: KVStoreTransaction; systemVars: Record; session: DBSession | undefined; typeConverters: TypeConverters | undefined; skipRules: boolean; } export declare class DBTransaction = Models> { private readonly kvTx; private readonly entityStore; readonly changes: DBChanges; private readonly schema; private readonly systemVars; private readonly session; private readonly typeConverters; private readonly skipRules; constructor(options: DBTransactionOptions); fetch>(query: Q): Promise>; fetchOne>(query: Q): Promise>; fetchById>(collectionName: CN, id: string): Promise>; insert>(collectionName: CN, data: WriteModel): Promise>; update>(collectionName: CN, id: string, update: UpdatePayload): Promise; delete>(collectionName: CN, id: string): Promise; private getOrCreateCollectionChanges; } export declare class EntityStoreWithChanges implements EntityStore { readonly changes: DBChanges; baseStore: EntityStore; constructor(baseStore: EntityStore, changes?: DBChanges); applyChanges(tx: KVStoreTransaction, changes: DBChanges, options: ApplyChangesOptions): Promise; getEntity(storage: KVStoreOrTransaction, collection: string, id: string): Promise; getEntitiesInCollection(storage: KVStoreOrTransaction, collection: CollectionName): AsyncIterable; getCollectionStats(storage: KVStoreOrTransaction, knownCollections?: CollectionName[]): Promise>; } export declare function createUpdateProxyAndTrackChanges(entity: any, changes: any, type: RecordType | undefined): any; export declare function createSetProxy(set: Set, changes: Record, type: SetType | undefined): Set;