import { BaseStatement } from './BaseStatement';
import { Raw } from './Raw';
import { StringKey, TransformPossibleColumnDefinition } from './ColumnDefinition';
export declare type WhereEntry> = ([K, '>' | '<' | '=' | 'CONTAINS', S[K]]) | ([K, 'IS NOT NULL']) | ([K, 'IN', (Raw | any)[]]) | ([[K], '>' | '<' | '=', [S[K]][]]);
export declare type WhereEntryMulti2, K2 extends StringKey> = ([[K1, K2], '>' | '<' | '=', [S[K1], S[K2]][]]);
export declare type WhereEntryMulti3, K2 extends StringKey, K3 extends StringKey> = ([[K1, K2, K3], '>' | '<' | '=', [S[K1], S[K2], S[K3]][]]);
export declare type WhereEntryMulti4, K2 extends StringKey, K3 extends StringKey, K4 extends StringKey> = ([[K1, K2, K3, K4], '>' | '<' | '=', [S[K1], S[K2], S[K3], S[K4]][]]);
export declare type WhereEntryMulti5, K2 extends StringKey, K3 extends StringKey, K4 extends StringKey, K5 extends StringKey> = ([[K1, K2, K3, K4, K5], '>' | '<' | '=', [S[K1], S[K2], S[K3], S[K4], S[K5]][]]);
export declare class WhereStatement extends BaseStatement
{
protected whereClauseDefs: Raw[];
where(selection: Raw): this;
where>(keys: [K1, K2], comparator: 'IN', valueList: [S[K1], S[K2]][]): this;
where, K3 extends StringKey>(keys: [K1, K2, K3], comparator: 'IN', valueList: [S[K1], S[K2], S[K3]][]): this;
where, K3 extends StringKey, K4 extends StringKey>(keys: [K1, K2, K3, K4], comparator: 'IN', valueList: [S[K1], S[K2], S[K3], S[K4]][]): this;
where, K3 extends StringKey, K4 extends StringKey, K5 extends StringKey>(keys: [K1, K2, K3, K4, K5], comparator: 'IN', valueList: [S[K1], S[K2], S[K3], S[K4], S[K5]][]): this;
where>(keys: [K1, K2], comparator: '>' | '<' | '=' | '>=' | '<=', valueList: [S[K1], S[K2]]): this;
where, K3 extends StringKey>(keys: [K1, K2, K3], comparator: '>' | '<' | '=' | '>=' | '<=', valueList: [S[K1], S[K2], S[K3]]): this;
where, K3 extends StringKey, K4 extends StringKey>(keys: [K1, K2, K3, K4], comparator: '>' | '<' | '=' | '>=' | '<=', valueList: [S[K1], S[K2], S[K3], S[K4]]): this;
where, K3 extends StringKey, K4 extends StringKey, K5 extends StringKey>(keys: [K1, K2, K3, K4, K5], comparator: '>' | '<' | '=' | '>=' | '<=', valueList: [S[K1], S[K2], S[K3], S[K4], S[K5]]): this;
where[]): this;
where>(selection: WhereEntryMulti2[]): this;
where, K3 extends StringKey>(selection: WhereEntryMulti3[]): this;
where, K3 extends StringKey, K4 extends StringKey>(selection: WhereEntryMulti4[]): this;
where, K3 extends StringKey, K4 extends StringKey, K5 extends StringKey>(selection: WhereEntryMulti5[]): this;
where(selection: Partial<{
[J in StringKey]: S[J];
}>): this;
where]: S[K];
}[]): this;
whereIn>(keys: [K1, K2], valueList: [S[K1], S[K2]][]): this;
whereIn, K3 extends StringKey>(keys: [K1, K2, K3], valueList: [S[K1], S[K2], S[K3]][]): this;
whereIn, K3 extends StringKey, K4 extends StringKey>(keys: [K1, K2, K3, K4], valueList: [S[K1], S[K2], S[K3], S[K4]][]): this;
whereIn, K3 extends StringKey, K4 extends StringKey, K5 extends StringKey>(keys: [K1, K2, K3, K4, K5], valueList: [S[K1], S[K2], S[K3], S[K4], S[K5]][]): this;
whereIn>(keys: [K1, K2], valueList: [S[K1], S[K2]]): this;
whereContains, K3 extends StringKey>(keys: [K1, K2, K3], valueList: [S[K1], S[K2], S[K3]]): this;
whereContains, K3 extends StringKey, K4 extends StringKey>(keys: [K1, K2, K3, K4], valueList: [S[K1], S[K2], S[K3], S[K4]]): this;
whereContains, K3 extends StringKey, K4 extends StringKey, K5 extends StringKey>(keys: [K1, K2, K3, K4, K5], valueList: [S[K1], S[K2], S[K3], S[K4], S[K5]]): this;
whereContains>(keys: [K1, K2], valueList: [S[K1], S[K2]]): this;
whereLowerThan, K3 extends StringKey>(keys: [K1, K2, K3], valueList: [S[K1], S[K2], S[K3]]): this;
whereLowerThan, K3 extends StringKey, K4 extends StringKey>(keys: [K1, K2, K3, K4], valueList: [S[K1], S[K2], S[K3], S[K4]]): this;
whereLowerThan, K3 extends StringKey, K4 extends StringKey, K5 extends StringKey>(keys: [K1, K2, K3, K4, K5], valueList: [S[K1], S[K2], S[K3], S[K4], S[K5]]): this;
whereLowerThan>(keys: [K1, K2], valueList: [S[K1], S[K2]]): this;
whereGreaterThan, K3 extends StringKey>(keys: [K1, K2, K3], valueList: [S[K1], S[K2], S[K3]]): this;
whereGreaterThan, K3 extends StringKey, K4 extends StringKey>(keys: [K1, K2, K3, K4], valueList: [S[K1], S[K2], S[K3], S[K4]]): this;
whereGreaterThan, K3 extends StringKey, K4 extends StringKey, K5 extends StringKey>(keys: [K1, K2, K3, K4, K5], valueList: [S[K1], S[K2], S[K3], S[K4], S[K5]]): this;
whereGreaterThan>(keys: [K1, K2], valueList: [S[K1], S[K2]]): this;
whereEquals, K3 extends StringKey>(keys: [K1, K2, K3], valueList: [S[K1], S[K2], S[K3]]): this;
whereEquals, K3 extends StringKey, K4 extends StringKey>(keys: [K1, K2, K3, K4], valueList: [S[K1], S[K2], S[K3], S[K4]]): this;
whereEquals, K3 extends StringKey, K4 extends StringKey, K5 extends StringKey>(keys: [K1, K2, K3, K4, K5], valueList: [S[K1], S[K2], S[K3], S[K4], S[K5]]): this;
whereEquals