import { InsertOptions } from './insert';
import { SelectColumn, SelectQuery } from './select';
import { UpdateOptions } from './update';
import { DeleteOptions } from './delete';
import { StatementBuilder } from '../builder/statement-builder';
import { GroupBy } from './group-by';
import { OrderBy } from './order-by';
import { Join } from './join';
import { ComparisonToken } from '../comparison';
import { Expression, LogicalToken, MathToken, RawExpressionToken } from '../expression';
import { DatabaseFunction } from '../functions/function-token';
import { Subquery } from './subquery';
import { KeyValExpression } from '../expression/key-val-expression';
import { CaseExpression } from './case-expression';
import { SetOptions } from './set-options';
import { From } from './from';
export declare class DatabaseQueryBuilder extends StatementBuilder {
    expression(expr: Expression | LogicalToken): void;
    subquery(subquery: Subquery): void;
    caseExpression(expr: CaseExpression): void;
    rawExpression(expr: RawExpressionToken): this;
    keyValueExpression(kv: KeyValExpression): this;
    set(options: SetOptions): this;
    setStatement(): this;
    setColumn(options: SetOptions): this;
    selectColumn(column: SelectColumn): this;
    selectColumnList(columns?: SelectColumn[]): this;
    selectFrom(from: From): this;
    tableAlias(alias: string): this;
    selectStatement(): this;
    distinctStatement(): this;
    selectTop(limit: number): this;
    equal(value: Expression): void;
    like(value: Expression): void;
    lt(value: Expression): void;
    lte(value: Expression): void;
    gt(value: Expression): void;
    gte(value: Expression): void;
    notEqual(value: Expression): void;
    isNull(): void;
    inArray(values: Expression[]): void;
    between(a: Expression, b: Expression): void;
    notNull(): void;
    buildComparisonToken(condition: ComparisonToken): this;
    and(): void;
    or(): void;
    not(value: Expression): void;
    logical(token: LogicalToken): void;
    addition(): void;
    subtraction(): void;
    multiplication(): void;
    division(): void;
    modulo(): void;
    math(token: MathToken): void;
    where(where: Expression): this;
    limit(nRecords: number): this;
    offset(nRecords: number): this;
    groupBy(by: GroupBy): this;
    having(query: Expression): this;
    orderBy(by: OrderBy): void;
    select(query: SelectQuery): this;
    pagination(query: SelectQuery): this;
    join(join: Join): void;
    insertIntoStatement(table: string): this;
    insertColumnNames(record: Record<string, Expression>): this;
    insertOnDuplicateKeyUpdate(assignment: Record<string, Expression>): this;
    insertIfNotExists(): this;
    insertOutput(primaryKey: string): this;
    insertReturning(primaryKey: string): this;
    insert(options: InsertOptions): this;
    updateStatement(table: string): this;
    updateKeyValues(values: {
        [key: string]: Expression;
    }): this;
    updateSetStatement(values: {
        [key: string]: Expression;
    }): this;
    update(options: UpdateOptions): this;
    deleteStatement(table: string): this;
    delete(options: DeleteOptions): this;
    /**
     * Append a database function the query
     *
     * @param fn Database function token
     */
    databaseFunction(fn: DatabaseFunction): this;
    average(fn: DatabaseFunction): this;
    count(fn: DatabaseFunction): this;
    min(fn: DatabaseFunction): this;
    max(fn: DatabaseFunction): this;
    sum(fn: DatabaseFunction): this;
    currentTimestamp(fn: DatabaseFunction): this;
    date(fn: DatabaseFunction): this;
    year(fn: DatabaseFunction): this;
    uuid(): this;
    getTriggerOld(): string;
    getTriggerOldColumn(column: string): string;
    getTriggerNew(): string;
    getTriggerNewColumn(column: string): string;
    triggerSetValue(options: {
        table: string;
        idColumn: string;
        column: string;
        value: Expression;
    }): this;
}
