import { NamedTable } from './NamedTable';
type AndFunction = (where: Where) => Where;
export declare class Where {
    tokens: string[];
    params: any[];
    namedTable: NamedTable;
    needWhere: boolean;
    _notNull: boolean;
    _notBlank: boolean;
    constructor(namedTable: NamedTable, needWhere?: boolean);
    /**
     * 克隆
     */
    clone(): Where;
    /**
     * 过滤`null`的参数
     */
    notNull(flag?: boolean): this;
    /**
     * 过滤`blank`的参数
     */
    notBlank(flag?: boolean): this;
    /**
     * 等于`=`,如：`eq('name', '老王') ---> name = '老王'`
     * @param condition 判断表达式，当为true时拼接条件
     * @param column 数据库中的列名
     * @param value 值
     */
    eq(condition: boolean | string, column: string | any, value?: any): Where;
    /**
     * 不等于`<>`,如：`ne('name', '老王') ---> name <> '老王'`
     * @param condition 判断表达式，当为true时拼接条件
     * @param column 数据库中的列名
     * @param value 值
     */
    ne(condition: boolean | string, column: string | any, value?: any): Where;
    /**
     * 小于`<`,如：`lt('age', 18) ---> age < 18
     * @param condition 判断表达式，当为true时拼接条件
     * @param column 数据库中的列名
     * @param value 值
     */
    lt(condition: boolean | string, column: string | any, value?: any): Where;
    /**
     * 小于等于`<=`,如：`lte('age', 18) ---> age <= 18
     * @param condition 判断表达式，当为true时拼接条件
     * @param column 数据库中的列名
     * @param value 值
     */
    lte(condition: boolean | string, column: string | any, value?: any): Where;
    /**
     * 大于`>`,如：`gt('age', 18) ---> age > 18
     * @param condition 判断表达式，当为true时拼接条件
     * @param column 数据库中的列名
     * @param value 值
     */
    gt(condition: boolean | string, column: string | any, value?: any): Where;
    /**
     * 大于等于`>=`,如：`gte('age', 18) ---> age >= 18
     * @param condition 判断表达式，当为true时拼接条件
     * @param column 数据库中的列名
     * @param value 值
     */
    gte(condition: boolean | string, column: string | any, value?: any): Where;
    /**
     * `in`,如：`in('age', [1,2,3]) ---> age in (1,2,3)
     * @param condition 判断表达式，当为true时拼接条件
     * @param column 数据库中的列名
     * @param value 值
     */
    in(condition: boolean | string, column: string | any, value?: any): Where;
    /**
     * `not in`,如：`notIn('age', [1,2,3]) ---> age not in (1,2,3)
     * @param condition 判断表达式，当为true时拼接条件
     * @param column 数据库中的列名
     * @param value 值
     */
    notIn(condition: boolean | string, column: string | any, value?: any): Where;
    /**
     * `like`,如：`like('name', '%王%') ---> name like '%王%'
     * @param condition 判断表达式，当为true时拼接条件
     * @param column 数据库中的列名
     * @param value 值
     */
    like(condition: boolean | string, column: string | any, value?: any): Where;
    /**
     * not like`,如：`notLike('name', '%王%') ---> name not like '%王%'
     * @param condition 判断表达式，当为true时拼接条件
     * @param column 数据库中的列名
     * @param value 值
     */
    notLike(condition: boolean | string, column: string | any, value?: any): Where;
    /**
     * `is null`,如：`isNull('name') ---> name is null
     * @param condition 判断表达式，当为true时拼接条件
     * @param column 数据库中的列名
     */
    isNull(condition: boolean | string, column?: string | any): Where;
    /**
     * `is not null`,如：`isNotNull('name') ---> name is not null
     * @param condition 判断表达式，当为true时拼接条件
     * @param column 数据库中的列名
     */
    isNotNull(condition: boolean | string, column?: string | any): Where;
    /**
     * 如：`custom('id in ( SELECT userId FROM sys_user_dept WHERE deptId IN ( ? ))') ---> id in ( SELECT userId FROM sys_user_dept WHERE deptId IN ( ? ))
     * @param condition 判断表达式，当为true时拼接条件
     * @param sql 自定义sql
     * @param value sql参数
     */
    custom(condition: boolean | string, sql: string | any, value?: any): Where;
    /**
     * 拼接`or`
     */
    or(): this;
    /**
     * 拼接`and`
     * `and`嵌套，如and(it => it.eq('name','李白').ne('status','正常') --> and (name = '李白' and status <> '正常')
     * @param condition 判断表达式，当为true时拼接条件
     * @param _function 回调函数
     */
    and(condition?: boolean | AndFunction, _function?: AndFunction): this;
    /**
     * 拼接`order by xxx asc/desc`
     * @param column 要排序的列
     * @param sort `asc`或`desc`
     */
    orderBy(column: string, sort?: 'asc' | 'desc'): this;
    /**
     * 拼接拼接`order by xxx desc`
     * @param column 要排序的列
     */
    orderByDesc(column: string): this;
    /**
     * 拼接`group by`
     * @param columns 要分组的列
     */
    groupBy(...columns: string[]): this;
    /**
     * 保存到表中，当主键有值时则修改，否则插入
     * @param data 各项列和值
     * @param beforeQuery 是否根据id查询有没有数据
     */
    save(data: Record<string, any>, beforeQuery?: boolean): Promise<any>;
    /**
     * 执行插入语句，返回主键
     * @param data 各项列和值
     */
    insert(data: Record<string, any>): Promise<any>;
    /**
     * 执行delete语句
     */
    delete(): Promise<number>;
    /**
     * 执行update语句
     * @param data 各项列和值
     * @param isUpdateBlank 是否更新空值字段
     */
    update(data: Record<string, any>, isUpdateBlank?: boolean): Promise<number>;
    /**
     * 执行分页查询，分页条件手动传入
     * @param limit 限制条数
     * @param offset 跳过条数
     */
    page(limit: number, offset: number): Promise<import("..").PageResult<Record<string, any>[]>>;
    /**
     * 执行select查询
     */
    select(): Promise<any[]>;
    /**
     * 执行selectOne查询
     */
    selectOne(): Promise<Record<string, any>>;
    /**
     * 查询条数
     */
    count(): Promise<number>;
    /**
     * 查询是否存在
     */
    exists(): Promise<boolean>;
    appendAnd(): void;
    appendOr(): void;
    remove(): void;
    isEmpty(): boolean;
    getSql(): string;
    filterNullAndBlank(value: any): boolean;
    append(append: boolean | string, column?: string | any, condition?: string, value?: any): Where;
}
export {};
