import mysql from "mysql2/promise";
import { DBConfig } from "../types";
import Logger from "../utils/index";
/**
 * Clase DBManager que maneja la conexión a la base de datos
 */
export declare class DBManager {
    private config;
    private logger;
    private pool;
    constructor(config: DBConfig, logger?: Logger);
    /**
     * Obtiene o crea el pool de conexiones
     */
    getPool(): Promise<mysql.Pool>;
    /**
     * Cierra la conexión al pool
     */
    closePool(): Promise<void>;
    /**
     * Ejecuta una consulta SQL
     * @param sql - Consulta SQL
     * @param params - Parámetros para la consulta
     * @returns Resultado de la consulta
     */
    executeQuery(sql: string, params?: any[]): Promise<any>;
    /**
     * Ejecuta una consulta SQL de solo lectura, validando primero
     * @param sql - Consulta SQL
     * @returns Resultado de la consulta
     */
    executeReadOnlyQuery(sql: string): Promise<any[]>;
    /**
     * Obtiene el esquema de la base de datos incluyendo relaciones
     * @returns Esquema con columnas y foreign keys por tabla
     */
    getDatabaseSchema(): Promise<Record<string, {
        columns: any[];
        foreignKeys: any[];
    }>>;
    /**
     * Obtiene todas las relaciones Foreign Key de la base de datos
     * @returns Lista de relaciones FK
     */
    private getForeignKeys;
    /**
     * Obtiene las columnas de una tabla específica
     * @param tableName - Nombre de la tabla
     * @returns Columnas de la tabla
     */
    getTableColumns(tableName: string): Promise<any[]>;
}
export default DBManager;
