import { DbUrlsJsonData, RawSuitesRow, ReporterConfig } from '../types';
import type { Database as BetterSqlite3Database, Statement } from 'better-sqlite3';
import { ReadonlyDeep } from 'type-fest';
export declare const selectAllQuery: (tableName: string) => string;
export declare const selectAllSuitesQuery: () => string;
export declare const createTablesQuery: () => string[];
export declare const compareDatabaseRowsByTimestamp: (row1: RawSuitesRow, row2: RawSuitesRow) => number;
export interface Database {
}
export interface DbLoadResult {
    url: string;
    status: string;
    data: null | unknown;
}
export interface DbDetails {
    url: string;
    status: string;
    success: boolean;
}
export interface HandleDatabasesOptions {
    pluginConfig: ReporterConfig;
    loadDbJsonUrl: (dbJsonUrl: string) => Promise<{
        data: DbUrlsJsonData | null;
        status?: string;
    }>;
    formatData?: (dbJsonUrl: string, status?: string) => DbLoadResult;
    prepareUrls: (dbUrls: string[], baseUrls: string) => string[];
    loadDbUrl: (dbUrl: string, opts: HandleDatabasesOptions) => Promise<DbLoadResult | string>;
}
export declare const handleDatabases: (dbJsonUrls: string[], opts: HandleDatabasesOptions) => Promise<(string | DbLoadResult)[]>;
export declare const mergeTables: ({ db, dbPaths, getExistingTables }: {
    db: BetterSqlite3Database;
    dbPaths: string[];
    getExistingTables?: ((getTablesStatement: Statement<[
    ]>) => string[]) | undefined;
}) => void;
export declare function createTableQuery(tableName: string, columns: ReadonlyDeep<{
    name: string;
    type: string;
}[]>): string;
