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 {};