import { type RuntimeRecord, type TransitionOutcome } from "../domain/records.js"; import { type JsonSchemaNode } from "./schema.js"; export interface RecordStoreOptions { recordsRoot: string; locksRoot: string; schema?: JsonSchemaNode; createValidator?: (record: RuntimeRecord) => void; recordValidator?: (record: RuntimeRecord) => void; transitionValidator?: (current: RuntimeRecord, next: RuntimeRecord) => void; } export declare class RecordAlreadyExistsError extends Error { readonly recordId: string; constructor(recordId: string); } export interface TransitionOptions> { recordId: string; ownerId: string; expectedVersion: number; nonce: string; expectedActor: string; expectedAttempt: number; expectedLeaseToken: string | null; nextActor?: string; nextAttempt?: number; nextLeaseToken?: string | null; fromStates: readonly State[]; toState: State; updatePayload?: (current: Readonly>) => Payload; } export type TransitionResult> = { status: "applied"; record: RuntimeRecord; outcome: TransitionOutcome; } | { status: "replayed"; record: RuntimeRecord; outcome: TransitionOutcome; }; export declare function createRecordStore(options: RecordStoreOptions): { create>(record: RuntimeRecord): RuntimeRecord; read>(recordId: string): RuntimeRecord; readIfExists>(recordId: string): RuntimeRecord | undefined; list>(): readonly RuntimeRecord[]; transition>(transition: TransitionOptions): TransitionResult; };