/**
 * 用于构建模型数据的接口
 */
import { JSONQLWhereCondition, OrderBy } from '../jsonql';
import { type ConditionValue } from 'amis';
import type { Strategy } from './ApiStrategyInterface';
import type { ModelEntityApiSchema, ExtraField, FeatType } from '../type';
type ApiScene = 'list' | 'form' | 'option';
export declare class ApiBuilder {
    /** 标识符 */
    idParam: string;
    /** 构建方式 */
    strategy: Strategy;
    /** 使用场景 */
    scene: ApiScene;
    /** 字段集合 */
    selects: Array<{
        column: string;
        alias?: string;
    }>;
    /** JSONQL查询条件 */
    wheres: Array<JSONQLWhereCondition>;
    /** JSONQL排序条件 */
    orders: OrderBy[];
    /** JSONQL需要后端解析的变量，在构建其他语句的时候需要添加进去 */
    vars: string[];
    /** 追加的查询条件, */
    query: Record<string, string>;
    constructor(idParam?: string, strategy?: Strategy, scene?: ApiScene);
    get hasQuery(): boolean;
    setIdParam(value: string): void;
    addVar(name: string): string[];
    addQuery(key: string, value: string): void;
    select(column?: string | Array<{
        column: string;
        alias?: string;
    }>, alias?: string): void;
    addSelect(column: string | Array<{
        column: string;
        alias?: string;
    }>, alias?: string): void;
    /** 解析select子句 */
    resolveSelectFields(fields: ExtraField[], options?: {
        feat?: FeatType;
        method?: 'GET' | 'POST' | 'PUT' | 'DELETE';
    }): {
        column: string;
        alias?: string | undefined;
    }[];
    where(condition?: JSONQLWhereCondition): void;
    addWhere(condition: JSONQLWhereCondition): void;
    /** 解析ConditionBuilder，构建where子句 和 query */
    setWhereAndQueryByConditionBuilder(filters?: ConditionValue): void;
    orderBy(condition?: OrderBy | OrderBy[]): void;
    addOrderBy(condition: OrderBy | OrderBy[]): void;
    /**
     * 解析ConditionBuilder中的where子句
     * @desc 排序只支持主表字段，不支持根据子表字段排序
     *
     * @param orders 排序字段集
     * @param many 是否为多数据
     * @returns
     */
    resolveOrderByFields(orders?: ModelEntityApiSchema['orders'], many?: boolean): OrderBy[];
    /**
     * 构建JsonQL中可用的变量
     * @desc 形如{{xxx}}的值会被认为是后端变量，取不到的时候不会有where子句，除非设置了default默认值
     *
     * @param name 变量名称
     * @param defaultValue 默认值
     * @returns
     */
    buildVariable(name: string, defaultValue?: any): string;
}
export {};
