///
import { Connection, FieldInfo, Pool } from 'mysql';
import { Type } from "../Utils.js";
import Migration, { MigrationType } from "./Migration.js";
export interface QueryResult {
readonly results: Record[];
readonly fields: FieldInfo[];
readonly other?: Record;
foundRows?: number;
}
export declare function query(queryString: string, values?: QueryVariable[], connection?: Connection): Promise;
export default class MysqlConnectionManager {
private static currentPool?;
private static databaseReady;
private static migrationsRegistered;
private static readonly migrations;
static isReady(): boolean;
static registerMigrations(migrations: MigrationType[]): void;
private static registerMigration;
static hasMigration(migration: Type): boolean;
static prepare(runMigrations?: boolean): Promise;
static get pool(): Pool;
private static createPool;
static endPool(): Promise;
static query(queryString: string, values?: QueryVariable[], connection?: Connection): Promise;
static wrapTransaction(transaction: (connection: Connection) => Promise): Promise;
private static rejectAndRollback;
static getCurrentMigrationVersion(): Promise;
private static handleMigrations;
/**
* @param migrationId what migration to rollback. Use with caution. default=0 is for last registered migration.
*/
static rollbackMigration(migrationId?: number): Promise;
static migrationCommand(args: string[]): Promise;
}
export declare type QueryVariable = boolean | string | number | Date | Buffer | null | undefined;
export declare function isQueryVariable(value: unknown): value is QueryVariable;