import { StatementBuilder } from '../builder/statement-builder';
import { ColumnOptions, ColumnType } from '../column';
import { AddColumnsOptions, AddForeignKeyOptions, ChangeColumnOptions, DropColumnOptions, DropForeignKeyOptions, RenameTableOptions } from './alter-table';
import { CreateDatabaseOptions } from './create-database';
import { CreateTableOptions } from './create-table';
import { CreateUserOptions } from './create-user';
import { DropDatabaseOptions } from './drop-database';
import { DropTableOptions } from './drop-table';
import { DropUserOptions } from './drop-user';
import { ForeignKeyConstraint, ForeignKeyReferenceOption } from './foreign-key-constraint';
import { GrantOn, GrantOptions } from './grant';
import { TruncateOptions } from './truncate';
import { DatabaseQueryBuilder } from '../dml';
import { CreateIndexOptions } from './create-index';
import { DropTriggerOptions, TriggerBody, TriggerOptions } from '../triggers';
export declare class DataDefinitionBuilder extends StatementBuilder {
    protected columnTypes: typeof ColumnType;
    protected queryBuilderType: typeof DatabaseQueryBuilder;
    getQueryBuilder(): DatabaseQueryBuilder;
    getColumnTypes(): typeof ColumnType;
    createDatabaseStatement(): this;
    createDatabase(options: CreateDatabaseOptions): this;
    createUserStatement(): this;
    createUserPassword(password: string): this;
    createUser(options: CreateUserOptions): this;
    createTableStatement(): this;
    ifNotExists(): this;
    createColumnType(column: ColumnOptions): this;
    columnRequired(): this;
    columnDefaultValue(column: ColumnOptions): this;
    columnDefaultNull(): this;
    columnDefaultTrue(): this;
    columnDefaultFalse(): this;
    columnAutoIncrement(): this;
    createTableColumn(column: ColumnOptions): this;
    createTablePrimaryKeys(names: string[]): this;
    createTableColumns(options: CreateTableOptions): this;
    createTable(options: CreateTableOptions): this;
    constraintStatement(): this;
    createTableTriggers(options: CreateTableOptions): this;
    createIndex(options: CreateIndexOptions): this;
    grantOnDatabase(database: string): this;
    grantOn(on: GrantOn): this;
    /**
     * IMPORTANT: UNSTABLE. Grant is currently only compatible with
     * 	mysql and mssql and may cause unintended side-effects and/or
     * 	privilege escalation.
     * This should not be used in most circumstances!
     * Use a dedicated database connection for this method, as it may change
     * 	the database connection's default database.
     * This method and it's arguments are likely to change in future versions
     *
     * @param options Grant options
     * @returns
     */
    grant(options: GrantOptions): this;
    foreignKeyStatement(): this;
    foreignKeyName(childTable: string, fk: ForeignKeyConstraint): this;
    foreignKeyColumns(columns: string[]): this;
    referencesStatement(table: string, columns: string[]): this;
    fkOnUpdate(option: ForeignKeyReferenceOption): this;
    fkOnDelete(option: ForeignKeyReferenceOption): this;
    foreignKeyConstraint(childTable: string, fk: ForeignKeyConstraint): void;
    disableForeignKeyChecks(): this;
    enableForeignKeyChecks(): this;
    uniqueConstraint(table: string, column: string): this;
    alterTableStatement(table: string): this;
    addColumns(options: AddColumnsOptions): this;
    addForeignKey(options: AddForeignKeyOptions): this;
    alterColumnStatement(column: string): this;
    changeColumn(options: ChangeColumnOptions): this;
    dropColumn(options: DropColumnOptions): this;
    dropForeignKey(options: DropForeignKeyOptions): this;
    renameTable(options: RenameTableOptions): this;
    dropDatabase(options: DropDatabaseOptions): this;
    dropTable(options: DropTableOptions): this;
    dropUser(options: DropUserOptions): this;
    truncate(options: TruncateOptions): this;
    createTrigger(options: TriggerOptions): this;
    createTriggerStatement(): this;
    getTriggerName(options: TriggerOptions): string;
    createTriggerTableEvent(options: TriggerOptions): this;
    createTriggerTable(table: string): this;
    createTriggerEvent(options: TriggerOptions): this;
    createTriggerBody(sql: TriggerBody): this;
    createTriggerBeginStatement(): this;
    createTriggerEndStatement(): this;
    createTriggerForEachRow(): this;
    dropTrigger(options: DropTriggerOptions): this;
    dropTriggerStatement(): this;
    ifExists(): this;
    dropTriggerName(options: {
        name: string;
        table: string;
    }): this;
}
