import { JoinData, SqlBuilder, ToSql, UpdateData } from "../sqlBuilders/SqlBuilder";
import { HasAddWiths, HasIsValue, ITable, ITableOrView, IWithView, OuterJoinSource } from "../utils/ITableOrView";
import { AlwaysIfValueSource, AnyValueSource, IBooleanValueSource, IIfValueSource } from "../expressions/values";
import type { UpdateExpression, ExecutableUpdate, ExecutableUpdateExpression, DynamicExecutableUpdateExpression, UpdateExpressionAllowingNoWhere, NotExecutableUpdateExpression, CustomizableExecutableUpdate, UpdateCustomization, ComposableExecutableUpdate, ComposeExpression, ComposeExpressionDeletingInternalProperty, ComposeExpressionDeletingExternalProperty, ComposableCustomizableExecutableUpdate, ReturnableExecutableUpdate, ExecutableUpdateReturning, UpdateColumns, UpdateSetExpression, UpdateSetExpressionAllowingNoWhere, UpdateSetJoinExpression, DynamicOnExpression, OnExpression, UpdateExpressionWithoutJoin, UpdateFromExpression, UpdateSetJoinExpressionAllowingNoWhere, DynamicOnExpressionAllowingNoWhere, OnExpressionAllowingNoWhere, UpdateExpressionWithoutJoinAllowingNoWhere, UpdateFromExpressionAllowingNoWhere, ShapedUpdateSetExpression, ShapedUpdateSetExpressionAllowingNoWhere, ShapedExecutableUpdateExpression, ShapedNotExecutableUpdateExpression, ComposableCustomizableExecutableUpdateProjectableAsNullable } from "../expressions/update";
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 UpdateQueryBuilder extends ComposeSplitQueryBuilder implements HasAddWiths, ToSql, UpdateExpression<any, any>, UpdateExpressionAllowingNoWhere<any, any>, ExecutableUpdate<any>, CustomizableExecutableUpdate<any>, ExecutableUpdateExpression<any, any>, ShapedExecutableUpdateExpression<any, any, any>, NotExecutableUpdateExpression<any, any>, ShapedNotExecutableUpdateExpression<any, any, any>, DynamicExecutableUpdateExpression<any, any>, UpdateData, ComposableExecutableUpdate<any, any, any>, ComposeExpression<any, any, any, any, any, any>, ComposeExpressionDeletingInternalProperty<any, any, any, any, any, any>, ComposeExpressionDeletingExternalProperty<any, any, any, any, any, any>, ComposableCustomizableExecutableUpdate<any, any, any>, ReturnableExecutableUpdate<any, any>, ExecutableUpdateReturning<any, any, any>, UpdateSetExpression<any, any>, ShapedUpdateSetExpression<any, any, any>, UpdateSetExpressionAllowingNoWhere<any, any>, ShapedUpdateSetExpressionAllowingNoWhere<any, any, any>, UpdateSetJoinExpression<any, any>, DynamicOnExpression<any, any>, OnExpression<any, any>, UpdateExpressionWithoutJoin<any, any>, UpdateFromExpression<any, any>, UpdateSetJoinExpressionAllowingNoWhere<any, any>, DynamicOnExpressionAllowingNoWhere<any, any>, OnExpressionAllowingNoWhere<any, any>, UpdateExpressionWithoutJoinAllowingNoWhere<any, any>, UpdateFromExpressionAllowingNoWhere<any, any>, ComposableCustomizableExecutableUpdateProjectableAsNullable<any, any> {
    [type]: any;
    [database]: any;
    [tableOrView]: any;
    [resultType]: any;
    __table: ITable<any>;
    __shape?: {
        [property: string]: Column | string;
    };
    __sets: {
        [property: string]: any;
    };
    __where?: AlwaysIfValueSource<any, any>;
    __allowNoWhere: boolean;
    __withs: Array<IWithView<any>>;
    __customization?: UpdateCustomization<any>;
    __oldValues?: ITableOrView<any>;
    __froms?: Array<ITableOrView<any>>;
    __joins?: Array<JoinData>;
    __oneColumn?: boolean;
    __lastJoin?: JoinData;
    __params: any[];
    __query: string;
    constructor(sqlBuilder: SqlBuilder, table: ITable<any>, allowNoWhere: boolean);
    executeUpdate(min?: number, max?: number): Promise<int> & Promise<number>;
    executeUpdateNoneOrOne(): Promise<any>;
    executeUpdateOne(): Promise<any>;
    executeUpdateMany(min?: number, max?: number): Promise<any>;
    query(): string;
    params(): any[];
    __toSql(_sqlBuilder: SqlBuilder, params: any[]): string;
    __toSqlForCondition(sqlBuilder: SqlBuilder, params: any[]): string;
    shapedAs(shape: any): this;
    extendShape(shape: any): this;
    dynamicSet(columns?: any): this;
    set(columns: any): this;
    setIfValue(columns: any): this;
    setIfSet(columns: any): this;
    setIfSetIfValue(columns: any): this;
    setIfNotSet(columns: any): this;
    setIfNotSetIfValue(columns: any): this;
    ignoreIfSet(...columns: any[]): this;
    keepOnly(...columns: any[]): this;
    setIfHasValue(columns: any): this;
    setIfHasValueIfValue(columns: any): this;
    setIfHasNoValue(columns: any): this;
    setIfHasNoValueIfValue(columns: any): this;
    ignoreIfHasValue(...columns: any[]): this;
    ignoreIfHasNoValue(...columns: any[]): this;
    ignoreAnySetWithNoValue(): this;
    disallowIfSet(error: string | Error, ...columns: any[]): this;
    disallowIfNotSet(error: string | Error, ...columns: any[]): this;
    disallowIfValue(error: string | Error, ...columns: any[]): this;
    disallowIfNoValue(error: string | Error, ...columns: any[]): this;
    disallowAnyOtherSet(error: string | Error, ...columns: any[]): this;
    setWhen(when: boolean, columns: any): this;
    setIfValueWhen(when: boolean, columns: any): this;
    setIfSetWhen(when: boolean, columns: any): this;
    setIfSetIfValueWhen(when: boolean, columns: any): this;
    setIfNotSetWhen(when: boolean, columns: any): this;
    setIfNotSetIfValueWhen(when: boolean, columns: any): this;
    ignoreIfSetWhen(when: boolean, ...columns: any[]): this;
    keepOnlyWhen(when: boolean, ...columns: any[]): this;
    setIfHasValueWhen(when: boolean, columns: any): this;
    setIfHasValueIfValueWhen(when: boolean, columns: any): this;
    setIfHasNoValueWhen(when: boolean, columns: any): this;
    setIfHasNoValueIfValueWhen(when: boolean, columns: any): this;
    ignoreIfHasValueWhen(when: boolean, ...columns: any[]): this;
    ignoreIfHasNoValueWhen(when: boolean, ...columns: any[]): this;
    ignoreAnySetWithNoValueWhen(when: boolean): this;
    disallowIfSetWhen(when: boolean, error: string | Error, ...columns: any[]): this;
    disallowIfNotSetWhen(when: boolean, error: string | Error, ...columns: any[]): this;
    disallowIfValueWhen(when: boolean, error: string | Error, ...columns: any[]): this;
    disallowIfNoValueWhen(when: boolean, error: string | Error, ...columns: any[]): this;
    disallowAnyOtherSetWhen(when: boolean, error: string | Error, ...columns: any[]): this;
    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;
    from(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: UpdateCustomization<any>): this;
    returning(columns: UpdateColumns<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;
}
