import type { DbUrlsJsonData, RawSuitesRow, ReporterConfig } from '../types';
import type { Database as SqlJsDatabase, Statement } from '@gemini-testing/sql.js';
import type { 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;
}
type DbJsonLoadResult = {
    data: DbUrlsJsonData | null;
    status?: string;
    error?: unknown;
};
export interface HandleDatabasesOptions {
    pluginConfig: Pick<ReporterConfig, 'path'>;
    strict?: boolean;
    loadDbJsonUrl: (dbJsonUrl: string) => Promise<DbJsonLoadResult>;
    formatData?: (dbJsonUrl: string, status?: string) => DbLoadResult;
    prepareUrls: (dbUrls: string[], baseUrls: string) => string[];
    loadDbUrl: (dbUrl: string, opts: HandleDatabasesOptions) => Promise<DbLoadResult | string>;
}
export declare const makeFileDownloadErrorMessage: (fileUrl: string, error: unknown, requestStatus?: string) => string;
export declare const handleDatabases: (dbJsonUrls: string[], opts: HandleDatabasesOptions) => Promise<(string | DbLoadResult)[]>;
export declare const mergeTables: ({ db, dbPaths, getExistingTables }: {
    db: SqlJsDatabase;
    dbPaths: string[];
    getExistingTables?: ((getTablesStatement: Statement) => string[]) | undefined;
}) => void;
export declare function createTableQuery(tableName: string, columns: ReadonlyDeep<{
    name: string;
    type: string;
}[]>): string;
export {};
