import type { AnyDB } from './@types/internal-types.js';
import type { Updatable, UpdateNode } from './@types/update.js';
import { Executor } from './executor.js';
import { FilterableQueryBuilder } from './where-query-builder.js';
/**
 * A query builder for updating records in the database.
 * @template DB - The database type.
 * @template TableName - The name of the table to update.
 */
export declare class UpdateQueryBuilder<DB extends AnyDB, TableName extends keyof DB> extends FilterableQueryBuilder<DB, TableName> {
    #private;
    constructor(node: UpdateNode, executor: Executor);
    /**
     * Sets the values to update for the records that match the where clauses.
     * @param values - An object containing the fields and their new values.
     * @returns The `UpdateQueryBuilder` instance for chaining.
     *
     * @example
     * ```typescript
     * const { affectedRecords } = await qb
     *   .update('users')
     *   .set({ name: 'New Name' })
     *   .where('id', '=', 1)
     *   .execute();
     * ```
     */
    set(values: Updatable<DB[TableName]>): UpdateQueryBuilder<DB, TableName>;
    /**
     * Executes the update query.
     * @returns A promise that resolves with the number of affected records.
     *
     * @example
     * ```typescript
     * const { affectedRecords } = await qb
     *   .update('users')
     *   .set({ name: 'New Name' })
     *   .where('id', '=', 1)
     *   .execute();
     * ```
     */
    execute(): Promise<{
        affectedRecords: number;
    }>;
    compile(): {
        query: string;
        variables: Record<string, any>;
    };
    _prepareMetadata(): any;
}
