import { SQLInterceptor } from './interceptor/SQLInterceptor';
import { SQLModule } from './SQLModule';
export default class BoundSql {
    REPLACE_MULTI_WHITE_LINE: RegExp;
    MYBATIS_TAGS: string[];
    sqlOrXml: string;
    parameters: any[];
    excludeColumns: Set<string>;
    sqlModule: SQLModule;
    bindParameters: Record<string, any>;
    constructor({ sqlOrXml, parameters, bindParameters, sqlModule, }: {
        sqlOrXml: string;
        parameters?: any[];
        bindParameters?: Record<string, any>;
        sqlModule: SQLModule;
    });
    init(): Promise<void>;
    normal(varMap: Record<string, any>): Promise<void>;
    copy(newSqlOrXml: string): BoundSql;
    addParameter(value: any): void;
    getSql(): string;
    setSql(sql: string): void;
    buildSqlCacheKey(sql: string, params?: any[]): string;
    /**
     * 获取环出值
     * @param sql sql
     * @param params 参数
     * @param supplier 执行回调
     */
    getCacheValue<T>(sql: string, params: any[], supplier: () => Promise<T>): Promise<T>;
    /**
     * 执行sql查询
     * @param interceptors 拦截器
     * @param supplier 回调
     */
    execute<T>(interceptors: SQLInterceptor[], supplier: () => Promise<T>): Promise<T>;
}
