import { AbstractPowerSyncDatabase, DBAdapter, PowerSyncDatabaseOptions, PowerSyncDatabaseOptionsWithDBAdapter, PowerSyncDatabaseOptionsWithOpenFactory, PowerSyncDatabaseOptionsWithSettings, StreamingSyncImplementation, TriggerManagerConfig, Mutex, type BucketStorageAdapter, type PowerSyncBackendConnector, type PowerSyncCloseOptions, type RequiredAdditionalConnectionOptions } from '@powersync/common';
import { ResolvedWebSQLOpenOptions, WebSQLFlags } from './adapters/web-sql-flags.js';
export interface WebPowerSyncFlags extends WebSQLFlags {
/**
* Externally unload open PowerSync database instances when the window closes.
* Setting this to `true` requires calling `close` on all open PowerSyncDatabase
* instances before the window unloads
*/
externallyUnload?: boolean;
}
type WithWebFlags = Base & {
flags?: WebPowerSyncFlags;
};
export interface WebSyncOptions {
/**
* Allows you to override the default sync worker.
*
* You can either provide a path to the worker script
* or a factory method that returns a worker.
*/
worker?: string | URL | ((options: ResolvedWebSQLOpenOptions) => SharedWorker);
}
type WithWebSyncOptions = Base & {
sync?: WebSyncOptions;
};
export interface WebEncryptionOptions {
/**
* Encryption key for the database.
* If set, the database will be encrypted using Multiple Ciphers.
*/
encryptionKey?: string;
}
type WithWebEncryptionOptions = Base & WebEncryptionOptions;
export type WebPowerSyncDatabaseOptionsWithAdapter = WithWebSyncOptions>;
export type WebPowerSyncDatabaseOptionsWithOpenFactory = WithWebSyncOptions>;
export type WebPowerSyncDatabaseOptionsWithSettings = WithWebSyncOptions>>;
export type WebPowerSyncDatabaseOptions = WithWebSyncOptions>;
export declare const DEFAULT_POWERSYNC_FLAGS: Required;
export declare const resolveWebPowerSyncFlags: (flags?: WebPowerSyncFlags) => Required;
/**
* A PowerSync database which provides SQLite functionality
* which is automatically synced.
*
* @example
* ```typescript
* export const db = new PowerSyncDatabase({
* schema: AppSchema,
* database: {
* dbFilename: 'example.db'
* }
* });
* ```
*/
export declare class PowerSyncDatabase extends AbstractPowerSyncDatabase {
protected options: WebPowerSyncDatabaseOptions;
static SHARED_MUTEX: Mutex;
protected unloadListener?: () => Promise;
protected resolvedFlags: WebPowerSyncFlags;
constructor(options: WebPowerSyncDatabaseOptionsWithAdapter);
constructor(options: WebPowerSyncDatabaseOptionsWithOpenFactory);
constructor(options: WebPowerSyncDatabaseOptionsWithSettings);
constructor(options: WebPowerSyncDatabaseOptions);
_initialize(): Promise;
protected generateTriggerManagerConfig(): TriggerManagerConfig;
protected openDBAdapter(options: WebPowerSyncDatabaseOptionsWithSettings): DBAdapter;
/**
* Closes the database connection.
* By default the sync stream client is only disconnected if
* multiple tabs are not enabled.
*/
close(options?: PowerSyncCloseOptions): Promise;
protected loadVersion(): Promise;
protected resolveOfflineSyncStatus(): Promise;
protected generateBucketStorageAdapter(): BucketStorageAdapter;
protected runExclusive(cb: () => Promise): Promise;
protected generateSyncStreamImplementation(connector: PowerSyncBackendConnector, options: RequiredAdditionalConnectionOptions): StreamingSyncImplementation;
}
export {};