import { Pool } from 'mysql2/promise';
export interface DatabaseConfig {
    host: string;
    port: number;
    user: string;
    password: string;
    database: string;
    connectionLimit?: number;
    waitForConnections?: boolean;
    queueLimit?: number;
}
export declare class DatabaseManager {
    private static instance;
    private pool;
    private config;
    private constructor();
    static getInstance(): DatabaseManager;
    /**
     * Initialize database connection pool
     */
    initialize(config: DatabaseConfig): Promise<void>;
    /**
     * Ensure the database exists, create if it doesn't
     */
    private ensureDatabaseExists;
    /**
     * Get the connection pool
     */
    getPool(): Pool;
    /**
     * Close all database connections
     */
    close(): Promise<void>;
    /**
     * Execute a raw SQL query
     */
    query<T = any>(sql: string, params?: any[]): Promise<T[]>;
}
//# sourceMappingURL=DatabaseConfig.d.ts.map