import { Database as DB, Statement as DBStatement } from 'better-sqlite3';
export declare class SqliteDatabase {
    protected db?: DB;
    protected fileName?: string;
    open(filename: string, readonly: boolean): void;
    close(): void;
    run(sql: string): void;
    prepare(sql: string): StatementPool;
    _prepare(pool: StatementPool, sql: string): Statement;
}
export declare class StatementPool {
    protected statements: Statement[];
    protected sql: string;
    protected db: SqliteDatabase;
    protected finalizing: boolean;
    protected used: number;
    constructor(db: SqliteDatabase, sql: string);
    obtain(): Statement;
    release(value: Statement): void;
    finalize(): Promise<void>;
}
export declare class Statement {
    protected statement: DBStatement;
    protected pool: StatementPool;
    constructor(pool: StatementPool, statement: DBStatement);
    release(): void;
    run(params?: unknown): void;
    get<T>(params?: unknown): T;
    all<T>(params?: unknown): T[];
    iterate<T>(params: unknown | undefined): IterableIterator<T>;
}
