import { ExpressionOrColumn } from "./../core/utils";
import { Drop } from "./drop/drop";
import { Create } from "./create/create";
import { Alter } from "./alter/alter";
import { DatabaseBase } from "../definitions/database-definition";
import { GetMapper } from "../mapper/interface-get-mapper";
import { MapperTable } from "../mapper-table";
export declare class Ddl {
    readonly enableLog: boolean;
    private readonly _database;
    private readonly _getMapper;
    constructor({ getMapper, database, enableLog }?: {
        getMapper?: GetMapper;
        database?: DatabaseBase;
        enableLog?: boolean;
    });
    create<T>(typeT: new () => T, mapperTable?: MapperTable, database?: DatabaseBase): Create<T>;
    alter<T>(typeT: new () => T, mapperTable?: MapperTable, database?: DatabaseBase): Alter<T>;
    drop<T>(typeT: new () => T, mapperTable?: MapperTable, database?: DatabaseBase): Drop<T>;
    /**
     * hasTable
     */
    hasTable<T>(tablename: (new () => T) | string): Promise<boolean>;
    /**
     * hasColumn
     */
    hasColumn<T>(tablename: (new () => T) | string, column: ExpressionOrColumn<any, T>): Promise<boolean>;
    private getDatabase;
}
