import { C6C } from "../constants/C6Constants";
import { OrderDirection, OrderTerm, SQLExpression, SQLKnownFunction } from "../types/mysqlTypes";
type DerivedTableSpec = Record<string, any> & {
    [C6C.SUBSELECT]?: Record<string, any>;
    [C6C.AS]?: string;
};
export declare const isDerivedTableKey: (key: string) => boolean;
export declare const resolveDerivedTable: (key: string) => DerivedTableSpec | undefined;
export declare const derivedTable: <T extends DerivedTableSpec>(spec: T) => T;
export declare const A: (tableName: string, alias: string) => string;
export declare const F: (qualifiedCol: string, alias: string) => string;
export declare const fieldEq: (leftCol: string, rightCol: string, leftAlias: string, rightAlias: string) => Record<string, string>;
export declare const distSphere: (fromCol: string, toCol: string, fromAlias: string, toAlias: string) => any[];
export declare const bbox: (minLng: number, minLat: number, maxLng: number, maxLat: number) => any[];
export declare const stContains: (envelope: string, shape: string) => any[];
export declare const fn: <Fn extends SQLKnownFunction>(functionName: Fn, ...args: SQLExpression[]) => [Fn, ...SQLExpression[]];
export declare const call: (functionName: string, ...args: SQLExpression[]) => [typeof C6C.CALL, string, ...SQLExpression[]];
export declare const alias: (expression: SQLExpression, aliasName: string) => [typeof C6C.AS, SQLExpression, string];
export declare const distinct: (expression: SQLExpression) => [typeof C6C.DISTINCT, SQLExpression];
export declare const lit: <T>(value: T) => [typeof C6C.LIT, T];
export declare const lits: <T>(values: readonly T[]) => Array<[typeof C6C.LIT, T]>;
export declare const eqLit: <T>(value: T) => [typeof C6C.EQUAL, [typeof C6C.LIT, T]];
export declare const inLit: <T>(values: readonly T[]) => Record<typeof C6C.IN, Array<[typeof C6C.LIT, T]>>;
export declare const notInLit: <T>(values: readonly T[]) => Record<typeof C6C.NOT_IN, Array<[typeof C6C.LIT, T]>>;
export declare const betweenLit: <Start, End>(start: Start, end: End) => [typeof C6C.BETWEEN, [[typeof C6C.LIT, Start], [typeof C6C.LIT, End]]];
export declare const order: (expression: SQLExpression, direction?: OrderDirection) => OrderTerm;
export declare const asc: (expression: SQLExpression) => OrderTerm;
export declare const desc: (expression: SQLExpression) => OrderTerm;
export {};
