import { type PowerSyncBackendConnector, type PowerSyncCloseOptions, BasePowerSyncDatabaseOptions, DatabaseSource, DBAdapter, PowerSyncDatabaseConstructor, CommonPowerSyncDatabase } from '@powersync/common'; import { BasePowerSyncDatabase, CreateSyncImplementationOptions, Mutex, StreamingSyncImplementation, TriggerManagerConfig } from '@powersync/shared-internals'; import { WebSpecificOpenOptions, WebSQLOpenOptions } from './adapters/options.js'; export type WebPowerSyncDatabaseOptions = BasePowerSyncDatabaseOptions & DatabaseSource & WebSpecificOptions; export interface WebSpecificOptions { sync?: WebSyncOptions; /** * Broadcast logs from shared workers, such as the shared sync worker, * to individual tabs. This defaults to true. */ broadcastLogs?: boolean; } 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 | (() => SharedWorker); /** * The log level for logs from the sync worker. * * Defaults to {@link LogLevels.info}. */ logLevel?: number; } /** * @internal Use {@link PowerSyncDatabase} instead, this class is only used by other SDKs also needing web support. */ export declare class WebPowerSyncDatabase extends BasePowerSyncDatabase { static SHARED_MUTEX: Mutex; protected resolvedOpenOptions: WebSpecificOpenOptions; protected enableBroadcastLogs: boolean; constructor(options: WebPowerSyncDatabaseOptions); _initialize(): Promise; protected generateTriggerManagerConfig(): TriggerManagerConfig; protected openDBAdapter(): 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 runExclusive(cb: () => Promise): Promise; protected generateSyncStreamImplementation(connector: PowerSyncBackendConnector, options: CreateSyncImplementationOptions): StreamingSyncImplementation; } /** * 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 const PowerSyncDatabase: PowerSyncDatabaseConstructor; export interface PowerSyncDatabase extends CommonPowerSyncDatabase { }