/** * @license * Copyright 2025 Steven Roussey * SPDX-License-Identifier: Apache-2.0 */ import { DataPortSchemaObject, FromSchema, TypedArraySchemaOptions } from "@workglow/util/schema"; import { type ITabularMigration, type ITabularMigrationApplier } from "../migrations"; import { BaseTabularStorage, ClientProvidedKeysOption, KeyGenerationStrategy } from "./BaseTabularStorage"; import { AnyTabularStorage, AutoGeneratedKeys, CoveringIndexQueryOptions, DeleteSearchCriteria, InsertEntity, QueryOptions, SearchCriteria, SimplifyPrimaryKey, TabularChangePayload, TabularSubscribeOptions } from "./ITabularStorage"; export declare const FS_FOLDER_TABULAR_REPOSITORY: import("@workglow/util").ServiceToken; /** Tabular repository where each row is stored as a JSON file in a directory. */ export declare class FsFolderTabularStorage, Entity = FromSchema, PrimaryKey = SimplifyPrimaryKey, Value = Omit, InsertType = InsertEntity>> extends BaseTabularStorage { private folderPath; private autoIncrementCounter; private pollingManager; /** `indexes` is accepted for shape compatibility but is unused here. */ constructor(folderPath: string, schema: Schema, primaryKeyNames: PrimaryKeyNames, indexes?: readonly (keyof NoInfer | readonly (keyof NoInfer)[])[], clientProvidedKeys?: ClientProvidedKeysOption, tabularMigrations?: ReadonlyArray); setupDirectory(): Promise; setupDatabase(): Promise; getMigrationApplier(): ITabularMigrationApplier | null; protected generateKeyValue(columnName: string, strategy: KeyGenerationStrategy): string | number; put(entity: InsertType): Promise; putBulk(entities: InsertType[]): Promise; get(key: PrimaryKey): Promise; delete(value: PrimaryKey | Entity): Promise; getAll(): Promise; deleteAll(): Promise; size(): Promise; getOffsetPage(offset: number, limit: number): Promise; private getFilePath; query(_criteria: SearchCriteria, _options?: QueryOptions): Promise; queryIndex(_criteria: SearchCriteria, _options: CoveringIndexQueryOptions): Promise[]>; deleteSearch(_criteria: DeleteSearchCriteria): Promise; /** Lazy-init so all subscriptions share a single polling loop per interval. */ private getPollingManager; /** Filesystem has no native change notifications; we poll. */ subscribeToChanges(callback: (change: TabularChangePayload) => void, options?: TabularSubscribeOptions): () => void; destroy(): void; } //# sourceMappingURL=FsFolderTabularStorage.d.ts.map