import { ToSql, SelectData, InsertData, DeleteData, UpdateData, QueryColumns, WithValuesData } from "./SqlBuilder";
import { TypeAdapter } from "../TypeAdapter";
import { AnyValueSource, IExecutableSelectQuery, __AggregatedArrayColumns, ValueType } from "../expressions/values";
import { AbstractSqlBuilder } from "./AbstractSqlBuilder";
import { Column } from "../utils/Column";
import { ITable } from "../utils/ITableOrView";
export declare class SqlServerSqlBuilder extends AbstractSqlBuilder {
    sqlServer: true;
    constructor();
    _appendRawColumnName(column: Column, params: any[]): string;
    _forceAsIdentifier(identifier: string): string;
    _isReservedKeyword(word: string): boolean;
    _nextSequenceValue(_params: any[], sequenceName: string): string;
    _currentSequenceValue(_params: any[], sequenceName: string): string;
    _trueValue: string;
    _falseValue: string;
    _trueValueForCondition: string;
    _falseValueForCondition: string;
    _nullValueForCondition: string;
    _appendSql(value: ToSql | AnyValueSource | IExecutableSelectQuery<any, any, any, any>, params: any[]): string;
    _appendConditionSql(value: ToSql | AnyValueSource, params: any[]): string;
    _isUuid(value: any): boolean;
    _appendSqlMaybeUuid(value: ToSql | AnyValueSource | IExecutableSelectQuery<any, any, any, any>, params: any[]): string;
    _appendConditionParam(value: any, params: any[], columnType: ValueType, columnTypeName: string, typeAdapter: TypeAdapter | undefined, forceTypeCast: boolean): string;
    _appendParam(value: any, params: any[], columnType: ValueType, columnTypeName: string, typeAdapter: TypeAdapter | undefined, forceTypeCast: boolean): string;
    _appendColumnName(column: Column, params: any[]): string;
    _appendColumnNameForCondition(column: Column, params: any[]): string;
    _inlineSelectAsValueForCondition(query: SelectData, params: any[]): string;
    _appendWithKeyword(_recursive: boolean): string;
    _buildWithValues(withValues: WithValuesData, params: any[]): string;
    _buildSelectWithColumnsInfoForCompound(query: SelectData, params: any[], columnsForInsert: {
        [name: string]: Column | undefined;
    }, isOutermostQuery: boolean): string;
    _buildSelectOrderBy(query: SelectData, params: any[]): string;
    _buildSelectLimitOffset(query: SelectData, params: any[]): string;
    _buildInsertOutput(query: InsertData, params: any[]): string;
    _buildInsertReturning(_query: InsertData, _params: any[]): string;
    _updateOldValueInFrom: boolean;
    _buildUpdateOutput(query: UpdateData, params: any[]): string;
    _buildUpdateReturning(_query: UpdateData, _params: any[]): string;
    _buidDeleteUsing(query: DeleteData, params: any[]): string;
    _buildDeleteOutput(query: DeleteData, params: any[]): string;
    _buildQueryOutput(queryColumns: QueryColumns | undefined, table: ITable<any>, alias: string, params: any[]): string;
    _buildDeleteReturning(_query: DeleteData, _params: any[]): string;
    _isNullValue(value: any): boolean;
    _isOptionalValue(value: any): boolean;
    _isNull(params: any[], valueSource: ToSql): string;
    _generalIsNull(params: any[], value: any, columnType: ValueType, columnTypeName: string, typeAdapter: TypeAdapter | undefined): string;
    _isNotNull(params: any[], valueSource: ToSql): string;
    _generalIsNotNull(params: any[], value: any, columnType: ValueType, columnTypeName: string, typeAdapter: TypeAdapter | undefined): string;
    _is(params: any[], valueSource: ToSql, value: any, columnType: ValueType, columnTypeName: string, typeAdapter: TypeAdapter | undefined): string;
    _isNot(params: any[], valueSource: ToSql, value: any, columnType: ValueType, columnTypeName: string, typeAdapter: TypeAdapter | undefined): string;
    _valueWhenNull(params: any[], valueSource: ToSql, value: any, columnType: ValueType, columnTypeName: string, typeAdapter: TypeAdapter | undefined): string;
    _escapeLikeWildcard(params: any[], value: any, columnType: ValueType, columnTypeName: string, typeAdapter: TypeAdapter | undefined): string;
    _startsWith(params: any[], valueSource: ToSql, value: any, columnType: ValueType, columnTypeName: string, typeAdapter: TypeAdapter | undefined): string;
    _notStartsWith(params: any[], valueSource: ToSql, value: any, columnType: ValueType, columnTypeName: string, typeAdapter: TypeAdapter | undefined): string;
    _endsWith(params: any[], valueSource: ToSql, value: any, columnType: ValueType, columnTypeName: string, typeAdapter: TypeAdapter | undefined): string;
    _notEndsWith(params: any[], valueSource: ToSql, value: any, columnType: ValueType, columnTypeName: string, typeAdapter: TypeAdapter | undefined): string;
    _startsWithInsensitive(params: any[], valueSource: ToSql, value: any, columnType: ValueType, columnTypeName: string, typeAdapter: TypeAdapter | undefined): string;
    _notStartsWithInsensitive(params: any[], valueSource: ToSql, value: any, columnType: ValueType, columnTypeName: string, typeAdapter: TypeAdapter | undefined): string;
    _endsWithInsensitive(params: any[], valueSource: ToSql, value: any, columnType: ValueType, columnTypeName: string, typeAdapter: TypeAdapter | undefined): string;
    _notEndsWithInsensitive(params: any[], valueSource: ToSql, value: any, columnType: ValueType, columnTypeName: string, typeAdapter: TypeAdapter | undefined): string;
    _contains(params: any[], valueSource: ToSql, value: any, columnType: ValueType, columnTypeName: string, typeAdapter: TypeAdapter | undefined): string;
    _notContains(params: any[], valueSource: ToSql, value: any, columnType: ValueType, columnTypeName: string, typeAdapter: TypeAdapter | undefined): string;
    _containsInsensitive(params: any[], valueSource: ToSql, value: any, columnType: ValueType, columnTypeName: string, typeAdapter: TypeAdapter | undefined): string;
    _notContainsInsensitive(params: any[], valueSource: ToSql, value: any, columnType: ValueType, columnTypeName: string, typeAdapter: TypeAdapter | undefined): string;
    _trim(params: any[], valueSource: ToSql): string;
    _trimLeft(params: any[], valueSource: ToSql): string;
    _trimRight(params: any[], valueSource: ToSql): string;
    _currentDate(): string;
    _currentTime(): string;
    _random(): string;
    _divide(params: any[], valueSource: ToSql, value: any, columnType: ValueType, columnTypeName: string, typeAdapter: TypeAdapter | undefined): string;
    _asDouble(params: any[], valueSource: ToSql): string;
    _concat(params: any[], valueSource: ToSql, value: any, columnType: ValueType, columnTypeName: string, typeAdapter: TypeAdapter | undefined): string;
    _length(params: any[], valueSource: ToSql): string;
    _ln(params: any[], valueSource: ToSql): string;
    _log10(params: any[], valueSource: ToSql): string;
    _cbrt(params: any[], valueSource: ToSql): string;
    _atan2(params: any[], valueSource: ToSql, value: any, columnType: ValueType, columnTypeName: string, typeAdapter: TypeAdapter | undefined): string;
    _minimumBetweenTwoValues(params: any[], valueSource: ToSql, value: any, columnType: ValueType, columnTypeName: string, typeAdapter: TypeAdapter | undefined): string;
    _maximumBetweenTwoValues(params: any[], valueSource: ToSql, value: any, columnType: ValueType, columnTypeName: string, typeAdapter: TypeAdapter | undefined): string;
    _getDate(params: any[], valueSource: ToSql): string;
    _getTime(params: any[], valueSource: ToSql): string;
    _getFullYear(params: any[], valueSource: ToSql): string;
    _getMonth(params: any[], valueSource: ToSql): string;
    _getDay(params: any[], valueSource: ToSql): string;
    _getHours(params: any[], valueSource: ToSql): string;
    _getMinutes(params: any[], valueSource: ToSql): string;
    _getSeconds(params: any[], valueSource: ToSql): string;
    _getMilliseconds(params: any[], valueSource: ToSql): string;
    _buildCallProcedure(params: any[], functionName: string, functionParams: AnyValueSource[]): string;
    _stringConcat(params: any[], separator: string | undefined, value: any): string;
    _stringConcatDistinct(params: any[], separator: string | undefined, value: any): string;
    _in(params: any[], valueSource: ToSql, value: any, columnType: ValueType, columnTypeName: string, typeAdapter: TypeAdapter | undefined): string;
    _notIn(params: any[], valueSource: ToSql, value: any, columnType: ValueType, columnTypeName: string, typeAdapter: TypeAdapter | undefined): string;
    _substrToEnd(params: any[], valueSource: ToSql, value: any, _columnType: ValueType, _columnTypeName: string, typeAdapter: TypeAdapter | undefined): string;
    _substringToEnd(params: any[], valueSource: ToSql, value: any, _columnType: ValueType, _columnTypeName: string, typeAdapter: TypeAdapter | undefined): string;
    _substr(params: any[], valueSource: ToSql, value: any, value2: any, _columnType: ValueType, _columnTypeName: string, typeAdapter: TypeAdapter | undefined): string;
    _substring(params: any[], valueSource: ToSql, value: any, value2: any, _columnType: ValueType, _columnTypeName: string, typeAdapter: TypeAdapter | undefined): string;
    _useForJsonInAggreagteArrayWhenPossible: boolean;
    _buildSelectAsAggregatedArray(query: SelectData, _params: any[]): string;
    _needAgggregateArrayColumnsTransformation(query: SelectData, _params: any[]): boolean;
    _needAgggregateArrayWrapper(query: SelectData, params: any[]): boolean;
    _appendAggragateArrayWrapperBegin(query: SelectData, params: any[], aggregateId: number): string;
    _appendAggragateArrayWrapperEnd(query: SelectData, params: any[], aggregateId: number): string;
    _appendAggragateArrayColumns(aggregatedArrayColumns: __AggregatedArrayColumns | AnyValueSource, aggregatedArrayDistinct: boolean, params: any[], _query: SelectData | undefined): string;
    _appendJsonValueForAggregate(valueSource: AnyValueSource, params: any[]): string;
    _appendAggragateArrayWrappedColumns(aggregatedArrayColumns: __AggregatedArrayColumns | AnyValueSource, params: any[], aggregateId: number): string;
    _appendJsonValueForWrappedAggregate(prop: string, valueSource: AnyValueSource, _params: any[], aggregateId: number): string;
    _fragment(params: any[], sql: TemplateStringsArray, sqlParams: AnyValueSource[]): string;
    _rawFragment(params: any[], sql: TemplateStringsArray, sqlParams: Array<AnyValueSource | IExecutableSelectQuery<any, any, any, any>>): string;
}
