import type { Duration, Timezone } from 'chronoshift';
import { Attributes } from '../datatypes';
import { PlyType } from '../types';
import { SQLDialect } from './baseDialect';
export interface DruidDialectOptions {
    attributes?: Attributes;
}
export declare class DruidDialect extends SQLDialect {
    static TIME_PART_TO_FUNCTION: Record<string, string>;
    static CAST_TO_FUNCTION: Record<string, Record<string, string>>;
    private readonly attributes?;
    constructor(options?: DruidDialectOptions);
    dateToSQLDateString(date: Date): string;
    floatDivision(numerator: string, denominator: string): string;
    emptyGroupBy(): string;
    timeToSQL(date: Date): string;
    stringArrayToSQL(value: string[]): string;
    ipParse(value: string): string;
    ipPrefixParse(value: string): 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;
    countDistinctExpression(a: string, parameterAttributeName: string | undefined): string;
    isNotDistinctFromExpression(a: string, b: string): string;
    castExpression(inputType: PlyType | undefined, operand: string, targetType: string): string;
    private operandAsTimestamp;
    timeFloorExpression(operand: string, duration: Duration, timezone: Timezone): string;
    timeBucketExpression(operand: string, duration: Duration, timezone: Timezone): string;
    timePartExpression(operand: string, part: string, timezone: Timezone): string;
    timeShiftExpression(operand: string, duration: Duration, step: int, timezone: Timezone): string;
    extractExpression(operand: string, regexp: string): string;
    regexpExpression(expression: string, regexp: string): string;
    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(columnName: string, searchString: string, ipSearchType: string): string;
    ipSearchExpression(columnName: string, searchString: string, ipSearchType: string): string;
    ipStringifyExpression(operand: string): string;
}
//# sourceMappingURL=druidDialect.d.ts.map