import { Database } from "./database";
import { QueryInput, DatabaseConfig, AlterTableChanges, MetadataHeader, InsertInput } from "../config/types";
export declare class MySQLDatabase extends Database {
    constructor(config: DatabaseConfig);
    establishDatabaseConnection(): Promise<void>;
    getMaxConnections(): number;
    getDialectConfig(): import("../config/types").DialectConfig;
    protected getPermanentErrors(): Promise<string[]>;
    testQuery(queryOrParams: QueryInput): Promise<any>;
    protected executeQuery(query: string): Promise<any>;
    protected executeQuery(QueryInput: QueryInput): Promise<any>;
    getCreateSchemaQuery(schemaName: string): QueryInput;
    getCheckSchemaQuery(schemaName: string | string[]): QueryInput;
    getCreateTableQuery(table: string, headers: MetadataHeader): QueryInput[];
    getAlterTableQuery(table: string, alterTableChangesOrOldHeaders: AlterTableChanges | MetadataHeader, newHeaders?: MetadataHeader): Promise<QueryInput[]>;
    getDropTableQuery(table: string): QueryInput;
    getTableExistsQuery(schema: string, table: string): QueryInput;
    getTableMetaDataQuery(schema: string, table: string): QueryInput;
    getPrimaryKeysQuery(table: string): QueryInput;
    getForeignKeyConstraintsQuery(table: string): QueryInput;
    getViewDependenciesQuery(table: string): QueryInput;
    getDropPrimaryKeyQuery(table: string): QueryInput;
    getDropUniqueConstraintQuery(table: string, indexName: string): QueryInput;
    getAddPrimaryKeyQuery(table: string, primaryKeys: string[]): QueryInput;
    getUniqueIndexesQuery(table: string, column_name?: string): QueryInput;
    getSplitTablesQuery(table: string): QueryInput;
    getInsertStatementQuery(tableOrInput: string | InsertInput, data?: Record<string, any>[], metaData?: MetadataHeader, insertInput?: "UPDATE" | "INSERT"): QueryInput;
    getInsertFromStagingQuery(tableOrInput: string | InsertInput, metaData?: MetadataHeader, insertInput?: "UPDATE" | "INSERT"): QueryInput;
    getInsertChangedRowsToHistoryQuery(tableOrInput: string | InsertInput, metaData?: MetadataHeader): QueryInput;
    getCreateTempTableQuery(table: string): QueryInput;
    getConstraintConflictQuery(table: string, structure: {
        uniques: Record<string, string[]>;
        primary: string[];
    }): QueryInput;
}
//# sourceMappingURL=mysql.d.ts.map