import type { Duration, Timezone } from 'chronoshift';
import { Ip } from '../datatypes/ip';
import { PlyType, PlyTypeSimple } from '../types';
export declare abstract class SQLDialect {
    private escapedTableName;
    constructor();
    setTable(name: string | null): void;
    nullConstant(): string;
    emptyGroupBy(): string;
    escapeName(name: string): string;
    maybeNamespacedName(name: string): string;
    escapeLiteral(name: string): string;
    booleanToSQL(bool: boolean): string;
    ipToSQL(ip: Ip): string;
    floatDivision(numerator: string, denominator: string): string;
    numberOrTimeToSQL(x: number | Date): string;
    numberToSQL(num: number): string;
    dateToSQLDateString(date: Date): string;
    abstract timeToSQL(date: Date): string;
    abstract stringArrayToSQL(value: string[]): string;
    aggregateFilterIfNeeded(inputSQL: string, expressionSQL: string, elseSQL?: string | null): string;
    concatExpression(_a: string, _b: string): string;
    containsExpression(_a: string, _b: string, _insensitive: boolean): string;
    mvContainsExpression(_a: string, _b: string[]): string;
    mvFilterOnlyExpression(_a: string, _b: string[]): string;
    mvOverlapExpression(_a: string, _b: string[]): string;
    substrExpression(a: string, position: number, length: number): string;
    coalesceExpression(a: string, b: string): string;
    countDistinctExpression(a: string, _parameterAttributeName: string | undefined): string;
    ifThenElseExpression(a: string, b: string, c?: string): string;
    filterAggregatorExpression(aggregate: string, whereFilter: string): string;
    isNotDistinctFromExpression(a: string, b: string): string;
    regexpExpression(expression: string, regexp: string): string;
    inExpression(operand: string, start: string, end: string, bounds: string): string;
    abstract castExpression(inputType: PlyType, operand: string, targetType: PlyTypeSimple): string;
    lengthExpression(a: string): string;
    abstract timeFloorExpression(operand: string, duration: Duration, timezone: Timezone): string;
    abstract timeBucketExpression(operand: string, duration: Duration, timezone: Timezone): string;
    abstract timePartExpression(operand: string, part: string, timezone: Timezone): string;
    abstract timeShiftExpression(operand: string, duration: Duration, step: int, timezone: Timezone): string;
    abstract extractExpression(operand: string, regexp: string): string;
    abstract indexOfExpression(str: string, substr: string): string;
    quantileExpression(_str: string, _quantile: number, _parameterAttributeName: string | undefined): string;
    logExpression(base: string, operand: string): string;
    lookupExpression(_base: string, _lookup: string): string;
    ipMatchExpression(_colName: string, _searchString: string, _ipSearchType?: string): string;
    ipSearchExpression(_colName: string, _searchString: string, _ipSearchType?: string): string;
    ipStringifyExpression(_operand: string): string;
}
//# sourceMappingURL=baseDialect.d.ts.map