export type Sqlite3Database = { internalDbHandle: any; exec(sqlStr: string): void; prepare(stmtStr: string): Sqlite3Statement; close(): void; }; export type Sqlite3Statement = { internalStatement: any; run(params?: BindParams): RunResult; getAll(params?: BindParams): ResultRow[]; getFirst(params?: BindParams): ResultRow | undefined; }; export interface RunResult { lastInsertRowid: number | bigint; } export type Sqlite3Value = string | Uint8Array | number | null | bigint; export type BindParams = Record; export type ResultRow = Record; /** * Common interface that multiple sqlite3 bindings * (such as better-sqlite3 or qtart's sqlite3 bindings) * can adapt to. * * This does not expose full sqlite3 functionality, but just enough * to be used by our IndexedDB sqlite3 backend. */ export interface Sqlite3Interface { open(filename: string): Sqlite3Database; }