import { MySQLDatabase } from "./mysql";
import { PostgresDatabase } from "./pgsql";
import { InsertInput, MetadataHeader, AlterTableChanges, QueryResult, QueryInput } from "../config/types";
export declare class AutoSQLHandler {
    private db;
    constructor(dbInstance: MySQLDatabase | PostgresDatabase);
    autoCreateTable(table: string, newMetaData: MetadataHeader, tableExists?: boolean, runQuery?: boolean): Promise<QueryResult | QueryInput[]>;
    autoAlterTable(table: string, tableChanges: AlterTableChanges, tableExists?: boolean, runQuery?: boolean): Promise<QueryResult | QueryInput[]>;
    autoConfigureTable(inputOrTable: string | InsertInput, inputData?: Record<string, any>[] | null, inputCurrentMetaData?: MetadataHeader | AlterTableChanges | null, inputNewMetaData?: MetadataHeader | null, inputRunQuery?: boolean): Promise<QueryResult | QueryInput[]>;
    fetchTableMetadata(table: string): Promise<{
        currentMetaData: MetadataHeader | null;
        tableExists: boolean;
    }>;
    splitTableData(table: string, data: Record<string, any>[], metaData: MetadataHeader): Promise<{
        table: string;
        data: Record<string, any>[];
        metaData: MetadataHeader;
        previousMetaData: MetadataHeader;
        mergedMetaData: {
            changes: AlterTableChanges;
            updatedMetaData: MetadataHeader;
        };
    }[]>;
    autoInsertData(inputOrTable: InsertInput | string, inputData?: Record<string, any>[], inputMetaData?: MetadataHeader, inputPreviousMetaData?: AlterTableChanges | MetadataHeader | null, inputComparedMetaData?: {
        changes: AlterTableChanges;
        updatedMetaData: MetadataHeader;
    }, inputRunQuery?: boolean, inputInsertType?: "UPDATE" | "INSERT"): Promise<QueryInput[] | QueryResult>;
    handleMetadata(table: string, data: Record<string, any>[], primaryKey?: string[]): Promise<{
        currentMetaData: MetadataHeader | null;
        mergedMetaData: MetadataHeader;
        initialComparedMetaData: {
            changes: AlterTableChanges;
            updatedMetaData: MetadataHeader;
        } | undefined;
        changes: AlterTableChanges | null;
        newMetaData: MetadataHeader;
    }>;
    private attemptTableSplit;
    private prepareInsertData;
    private configureTables;
    private insertData;
    private prepareStagingTables;
    private insertStagingTables;
    private removeStagingTables;
    private resolveConflicts;
    private insertFromStagingTables;
    private insertToHistoryTables;
    private insertHistory;
    private extractNestedInputs;
    autoSQL(table: string, data: Record<string, any>[], schema?: string, primaryKey?: string[]): Promise<QueryResult>;
}
//# sourceMappingURL=autosql.d.ts.map