import { SqlBuilder, DeleteData, JoinData, ToSql } from "../sqlBuilders/SqlBuilder";
import { HasAddWiths, HasIsValue, ITable, ITableOrView, IWithView, OuterJoinSource } from "../utils/ITableOrView";
import { IBooleanValueSource, IIfValueSource, AnyValueSource, AlwaysIfValueSource } from "../expressions/values";
import type { DeleteExpression, ExecutableDelete, DynamicExecutableDeleteExpression, DeleteExpressionAllowingNoWhere, DeleteCustomization, CustomizableExecutableDelete, ComposableExecutableDelete, ComposeExpression, ComposeExpressionDeletingInternalProperty, ComposeExpressionDeletingExternalProperty, ComposableCustomizableExecutableDelete, ReturnableExecutableDelete, ExecutableDeleteReturning, DeleteColumns, DeleteWhereExpression, DeleteWhereExpressionAllowingNoWhere, DeleteWhereJoinExpression, DynamicOnExpression, OnExpression, DeleteExpressionWithoutJoin, DeleteUsingExpression, DeleteWhereJoinExpressionAllowingNoWhere, DynamicOnExpressionAllowingNoWhere, OnExpressionAllowingNoWhere, DeleteExpressionWithoutJoinAllowingNoWhere, DeleteUsingExpressionAllowingNoWhere, ComposableCustomizableExecutableDeleteProjectableAsNullable } from "../expressions/delete";
import type { int } from "ts-extended-types";
import { database, resultType, tableOrView, type } from "../utils/symbols";
import { ComposeSplitQueryBuilder } from "./ComposeSliptQueryBuilder";
import { Column } from "../utils/Column";
export declare class DeleteQueryBuilder extends ComposeSplitQueryBuilder implements HasAddWiths, ToSql, DeleteExpression<any, any>, DeleteExpressionAllowingNoWhere<any, any>, CustomizableExecutableDelete<any>, ExecutableDelete<any>, DynamicExecutableDeleteExpression<any, any>, DeleteData, ComposableExecutableDelete<any, any, any>, ComposeExpression<any, any, any, any, any, any>, ComposeExpressionDeletingInternalProperty<any, any, any, any, any, any>, ComposeExpressionDeletingExternalProperty<any, any, any, any, any, any>, ComposableCustomizableExecutableDelete<any, any, any>, ReturnableExecutableDelete<any, any>, ExecutableDeleteReturning<any, any, any>, DeleteWhereExpression<any, any>, DeleteWhereExpressionAllowingNoWhere<any, any>, DeleteWhereJoinExpression<any, any>, DynamicOnExpression<any, any>, OnExpression<any, any>, DeleteExpressionWithoutJoin<any, any>, DeleteUsingExpression<any, any>, DeleteWhereJoinExpressionAllowingNoWhere<any, any>, DynamicOnExpressionAllowingNoWhere<any, any>, OnExpressionAllowingNoWhere<any, any>, DeleteExpressionWithoutJoinAllowingNoWhere<any, any>, DeleteUsingExpressionAllowingNoWhere<any, any>, ComposableCustomizableExecutableDeleteProjectableAsNullable<any, any> {
    [type]: any;
    [database]: any;
    [tableOrView]: any;
    [resultType]: any;
    __table: ITable<any>;
    __where?: AlwaysIfValueSource<any, any>;
    __allowNoWhere: boolean;
    __withs: Array<IWithView<any>>;
    __customization?: DeleteCustomization<any>;
    __using?: Array<ITableOrView<any>>;
    __joins?: Array<JoinData>;
    __oneColumn?: boolean;
    __lastJoin?: JoinData;
    __query: string;
    __params: any[];
    constructor(sqlBuilder: SqlBuilder, table: ITable<any>, allowNoWhere: boolean);
    executeDelete(min?: number, max?: number): Promise<int> & Promise<number>;
    executeDeleteNoneOrOne(): Promise<any>;
    executeDeleteOne(): Promise<any>;
    executeDeleteMany(min?: number, max?: number): Promise<any>;
    query(): string;
    params(): any[];
    __toSql(_sqlBuilder: SqlBuilder, params: any[]): string;
    __toSqlForCondition(sqlBuilder: SqlBuilder, params: any[]): string;
    dynamicWhere(): this;
    where(condition: IBooleanValueSource<any, any> | IIfValueSource<any, any>): this;
    and(condition: IBooleanValueSource<any, any> | IIfValueSource<any, any>): this;
    or(condition: IBooleanValueSource<any, any> | IIfValueSource<any, any>): this;
    using(table: ITableOrView<any>): any;
    join(table: ITableOrView<any>): any;
    innerJoin(table: ITableOrView<any>): any;
    leftJoin(source: OuterJoinSource<any, any>): any;
    leftOuterJoin(source: OuterJoinSource<any, any>): any;
    dynamicOn(): any;
    on(condition: IBooleanValueSource<any, any> | IIfValueSource<any, any>): any;
    __finishJoin(): void;
    customizeQuery(customization: DeleteCustomization<any>): this;
    returning(columns: DeleteColumns<any, any>): this;
    projectingOptionalValuesAsNullable(): any;
    returningOneColumn(column: AnyValueSource): this;
    __addWiths(sqlBuilder: HasIsValue, withs: Array<IWithView<any>>): void;
    __registerTableOrView(_sqlBuilder: HasIsValue, _requiredTablesOrViews: Set<ITableOrView<any>>): void;
    __registerRequiredColumn(_sqlBuilder: HasIsValue, _requiredColumns: Set<Column>, _onlyForTablesOrViews: Set<ITableOrView<any>>): void;
    __getOldValues(_sqlBuilder: HasIsValue): ITableOrView<any> | undefined;
    __getValuesForInsert(_sqlBuilder: HasIsValue): ITableOrView<any> | undefined;
    __isAllowed(sqlBuilder: HasIsValue): boolean;
}
