import { Builder } from './builder'; import { Raw } from './raw'; import { BuildResult, FieldType, SQLTemplateArg } from './types'; export declare abstract class AttrBuilder { /** * 构建 SQL 结果 */ abstract build(builder: Builder): BuildResult; } export declare class Fn extends AttrBuilder { private fn; private args?; constructor(fn: string, args?: any | undefined); build(builder: Builder): { sql: string; }; } export declare class Op extends AttrBuilder { _items: (string | AttrBuilder | Op)[]; _params: any[]; constructor(prep: string | number | Raw | AttrBuilder); param(value: string | number | Raw | AttrBuilder): this; /** * 运算操作 */ op(op: string, value: string | number | Op): this; build(builder: Builder): BuildResult; } export declare class Quote extends AttrBuilder { private col; constructor(col: FieldType); build(builder: Builder): BuildResult; } export declare class Point extends AttrBuilder { private x; private y; constructor(x: number, y: number); build(builder: Builder): BuildResult; } declare class Template extends AttrBuilder { private strings; private args; constructor(strings: TemplateStringsArray, args: SQLTemplateArg[]); build(builder: Builder): BuildResult; } /** * 常用字段查询工具 */ export declare const AB: { raw(str: string): Raw; quote(col: string): Quote; SQL(strings: TemplateStringsArray, ...args: SQLTemplateArg[]): Template; op(prep: any): Op; count(col?: string): Fn; distinctCount(col: string): Template; avg(col: string): Fn; sum(col: string): Fn; min(col: string): Fn; max(col: string): Fn; incr(col: string, val?: number): Op; decr(col: string, val?: number): Op; point(x: number, y: number): Point; }; export {};