import { RawQueryResult } from '@powersync/common'; import type { RawWaSqliteDatabaseOptions, RawWebResult } from '../wa-sqlite/RawSqliteConnection.js'; export interface WriteAheadBuffers { database: SharedArrayBuffer; writeAheadLog: SharedArrayBuffer; } export interface WriteAheadState { /** * Length of the main database file. */ fileSize: number; walEnd: number; /** * A map of database position offsets to offsets in the WAL logs at which position contents of the page are stored. */ overlay: Map; } export interface WalOverlayEntry { logOffset: number; size: number; } export interface WalIndexChange { fileSize: number; walEnd: number; /** * New overlay entries to add, encoded as (key, value) pairs of {@link WriteAheadState.overlay}. */ added: (number | WalOverlayEntry)[]; /** * Whether to clear the overlay (meaning that we ran a checkpoint). */ cleared: boolean; } export interface DatabaseServer { /** * Open a database connection from the given database and write-ahead log buffers. */ open(buffers: WriteAheadBuffers, options: Partial): Promise; /** * Push new wal changes to this worker. */ updateWalState(overlay: WalIndexChange): Promise; executeRaw(query: string, params?: any[] | undefined): Promise; executeBatch(query: string, params?: any[][] | undefined): Promise; /** * Takes WAL changes made by this worker during its active write iteration. */ takeWalChanges(): Promise; } export declare function emptyWalState(): WriteAheadState; export declare function applyWalChanges(state: WriteAheadState, changes: WalIndexChange): void;