import type { MakeSqliteDb, PersistenceInfo, SqliteDb } from '@livestore/common';
import type { MemoryVFS } from '@livestore/wa-sqlite/src/examples/MemoryVFS.js';
import type { AccessHandlePoolVFS } from './opfs/AccessHandlePoolVFS.js';
export * from './opfs/opfs-sah-pool.js';
export type WebDatabaseMetadataInMemory = {
    _tag: 'in-memory';
    vfs: MemoryVFS;
    dbPointer: number;
    persistenceInfo: PersistenceInfo;
    deleteDb: () => void;
    configureDb: (db: SqliteDb) => void;
};
export type WebDatabaseMetadataOpfs = {
    _tag: 'opfs';
    vfs: AccessHandlePoolVFS;
    dbPointer: number;
    persistenceInfo: PersistenceInfo<{
        opfsDirectory: string;
        /** Actual filename used by OPFS */
        opfsFileName: string;
    }>;
    deleteDb: () => void;
    configureDb: (db: SqliteDb) => void;
};
export type WebDatabaseMetadata = WebDatabaseMetadataInMemory | WebDatabaseMetadataOpfs;
export type WebDatabaseInputInMemory = {
    _tag: 'in-memory';
    configureDb?: (db: SqliteDb) => void;
};
export type WebDatabaseInputOpfs = {
    _tag: 'opfs';
    /** Filename of the database file (only used when exporting/downloading the database) */
    fileName: string;
    opfsDirectory: string;
    configureDb?: (db: SqliteDb) => void;
};
export type WebDatabaseInput = WebDatabaseInputInMemory | WebDatabaseInputOpfs;
export type MakeWebSqliteDb = MakeSqliteDb<{
    dbPointer: number;
    persistenceInfo: PersistenceInfo;
}, WebDatabaseInput, WebDatabaseMetadata>;
export declare const sqliteDbFactory: ({ sqlite3 }: {
    sqlite3: SQLiteAPI;
}) => MakeWebSqliteDb;
//# sourceMappingURL=mod.d.ts.map