import type { CompiledSchema, CompiledTable } from './schema.js'; import type { AuthoritativeQueryRequest, AuthoritativeQueryResult, ClientCursorInfo, ClientRecord, CommitMetadata, CommitMetadataQuery, CommitWindowQuery, IndexRowScanQuery, PartitionRegistryEntry, PrunedReactionCounts, ReactionClaimQuery, ReactionFailureUpdate, ReactionListQuery, ReactionPruneQuery, RowScanQuery, ScopeActivityQuery, ScopeCommitActivity, ServerStorage, StorageTransaction, StoredCommit, StoredPushResult, StoredReaction, StoredRow } from './storage.js'; export interface D1PreparedStatement { bind(...values: unknown[]): D1PreparedStatement; first>(): Promise; all>(): Promise<{ results: T[]; }>; run(): Promise; } export interface D1Database { prepare(query: string): D1PreparedStatement; batch(statements: D1PreparedStatement[]): Promise; exec(query: string): Promise; } export interface D1ServerStorageOptions { /** * Assert that all writes for a partition reach this storage serially. * Required for every push because D1 exposes no interactive transaction * lock. Set this only inside an explicit per-partition request queue, * Durable Object, or equivalent coordinator; the default fails closed. */ readonly pushApplySerialized?: boolean; /** * @deprecated Use `pushApplySerialized`. This alias remains valid only * because the old assertion already promised that every partition write, * not merely validator callbacks, was externally serialized. */ readonly commitValidationSerialized?: boolean; } export declare class D1ServerStorage implements ServerStorage { #private; constructor(db: D1Database, options?: D1ServerStorageOptions); /** Apply the schema DDL (idempotent). Call once before use. */ migrate(): Promise; /** Resolve a table's compiled schema; row operations require `ensureSchema`. */ table(name: string): CompiledTable; ensureSchema(schema: CompiledSchema): Promise; touchPartition(partition: string, authenticatedAtMs: number, initialLogEpoch: string): Promise; rotatePartitionLogEpoch(partition: string, logEpoch: string, authenticatedAtMs: number): Promise; listPartitionRegistry(): Promise; begin(partition: string): Promise; getMaxCommitSeq(partition: string): Promise; queryAuthoritative(partition: string, query: AuthoritativeQueryRequest): Promise; getHorizonSeq(partition: string): Promise; setHorizonSeq(partition: string, seq: number): Promise; pruneCommitsThrough(partition: string, seq: number): Promise; getCommitSeqBefore(partition: string, createdBeforeMs: number): Promise; getRow(partition: string, table: string, rowId: string): Promise; getPushResult(partition: string, clientId: string, clientCommitId: string): Promise; claimReactions(partition: string, query: ReactionClaimQuery): Promise; completeReaction(partition: string, idempotencyKey: string, leaseOwner: string, completedAtMs: number): Promise; extendReactionLease(partition: string, idempotencyKey: string, leaseOwner: string, leaseExpiresAtMs: number): Promise; failReaction(partition: string, idempotencyKey: string, update: ReactionFailureUpdate): Promise; retryReaction(partition: string, idempotencyKey: string, nowMs: number): Promise; getReaction(partition: string, idempotencyKey: string): Promise; listReactions(partition: string, query: ReactionListQuery): Promise; pruneReactions(partition: string, query: ReactionPruneQuery): Promise; readCommitWindow(partition: string, query: CommitWindowQuery): Promise; scanRows(partition: string, query: RowScanQuery): Promise; scanRowsByIndex(partition: string, query: IndexRowScanQuery): Promise; getClientRecord(partition: string, clientId: string): Promise; putClientRecord(partition: string, record: ClientRecord): Promise; listClientCursors(partition: string): Promise; listRowsReferencingBlob(partition: string, blobId: string): Promise<{ readonly table: string; readonly rowId: string; readonly scopes: Record; }[]>; listReferencedBlobIds(partition: string): Promise; listClientRecords(partition: string): Promise; listCommitMetadata(partition: string, query: CommitMetadataQuery): Promise; scopeActivity(partition: string, query: ScopeActivityQuery): Promise; getRowScopes(partition: string, table: string, rowId: string): Promise<{ serverVersion: number; scopes: Record; } | undefined>; listPartitions(): Promise; }