import { Service } from "../service"; export declare const BROWSER_DB_SVC = "BrowserDatabaseService"; export interface DbStoreType { } interface UpgradeHandler { version: number; upgrade: (db: IDBDatabase, transaction: IDBTransaction, oldVersion: number) => void | Promise; rollback?: (db: IDBDatabase, transaction: IDBTransaction, targetVersion: number) => void | Promise; description?: string; } export interface DatabaseConfig { /** * Name of the database */ name: string; /** * Version of the database */ version: number; /** * Upgrades that will be applied to the database (like migrations) */ upgrades: UpgradeHandler[]; onVersionChange?: (event: IDBVersionChangeEvent) => void; onBlocked?: (event: Event) => void; } declare class DatabaseTransaction { private transaction; private _completed; constructor(transaction: IDBTransaction); private checkActive; get(storeName: K, key: IDBValidKey): Promise; put(storeName: K, value: DbStoreType[K], key?: IDBValidKey): Promise; delete(storeName: keyof DbStoreType, key: IDBValidKey): Promise; getAll(storeName: StoreName): Promise; waitForCompletion(): Promise; abort(): void; } export declare class IndexedDBDatabase { private config; private loggerService; private db; constructor(config: DatabaseConfig); /** * Open an IndexDB database * * @returns */ open(): Promise; isOpen(): boolean; createTransaction(mode: IDBTransactionMode, storeNames: (keyof DbStoreType)[]): DatabaseTransaction; runTransaction(mode: IDBTransactionMode, storeNames: (keyof DbStoreType)[], operation: (tx: DatabaseTransaction) => Promise): Promise; close(): void; } export declare class BrowserDatabaseService extends Service { static getInstance(): BrowserDatabaseService; static build(): BrowserDatabaseService; private instances; /** * Create a new {@link IndexedDBDatabase} instance * * @param config - Database config object * @returns database instance */ createDbInstance(config: DatabaseConfig): IndexedDBDatabase; deleteDatabase(name: string): Promise; } export {}; //# sourceMappingURL=browserDatabase.service.d.ts.map