import type { Row, TableDef, ViewDef } from '../types.ts'; import { type AuditContext } from './audit.ts'; import { type PlannedAntiJoin, type PlannedJoin, type ViewEntry } from './views.ts'; export interface ViewRowsSource { base?: Row[]; rowsOf?: (entry: PlannedJoin | PlannedAntiJoin) => Row[] | undefined; } type Pk = string; export interface StoreOptions { normalizeValues?: () => boolean; holdSharedSequences?: () => boolean; } export declare class Store { private tables; private tableConfig; private sequenceCounters; private sequenceUse; private autoIncrementCounters; private clock; private seedRows; private removedRows; private previousRows; private savepoint; private auditTables; private auditContext; private auditWrites; readonly views: Map; private readonly normalizeValues; private readonly holdSharedSequences; private readonly unlistedWarned; constructor({ normalizeValues, holdSharedSequences, }?: StoreOptions); begin(audit?: AuditContext): void; commit(): void; takeAuditWrites(): Array<{ tableName: string; key: Pk; }>; rollback(): void; get inTransaction(): boolean; private save; registerTable(tableName: string, definition: TableDef): this; private counterOf; private countersFor; private generatedNumber; registerView(viewName: string, definition: ViewDef): this; private stampSeedRow; private withStoredValues; private stampNewRow; private noteRemoved; private notePrevious; private observeGeneratedValues; nextSequenceValue(sequencePrefix: string, width: number): string; private generateSequenceValue; private generateValues; getAllRows(tableName: string): Row[]; getRow(tableName: string, pk: Pk): Row | undefined; rowKey(tableName: string, row: Row): Pk; findRow(tableName: string, criteria: Row): Row | undefined; withGeneratedValues(tableName: string, record: Row): Row; insertRow(tableName: string, record: Row): Row; private audit; updateRow(tableName: string, pk: Pk, patch: Row): Row | undefined; deleteRow(tableName: string, pk: Pk): boolean; takeRemovedRows(tableName: string, key: Pk): Row[]; takePreviousRecord(tableName: string, row: Row): Row | undefined; takeRemovedRecordsFor(resourceName: string, row: Row): Row[]; getViewRows(viewName: string, tables?: Record): Row[]; getViewRowsFrom(viewName: string, source: ViewRowsSource): Row[]; getViewEntriesFrom(viewName: string, source: ViewRowsSource): ViewEntry[]; private viewOf; getResourceRows(resourceName: string): Row[]; getMetadataRows(resourceName: string): Row[]; hasTable(tableName: string): boolean; getPkFields(resourceName: string): string[]; getRowRef(resourceName: string, row: Row): unknown; getRecordRef(resourceName: string, row: Row): unknown; private locateRecord; private findStoredRecord; rowStubFromKey(resourceName: string, key: Pk): Row; } export {};