export type InfixOperator = '+' | '-' | '*' | '/' | '=' | '<>' | '<' | '<=' | '>' | '>=' | 'and' | 'or' | 'is'; export type PrefixOperator = '+' | '-' | 'not'; export declare enum Kind { INFIX = 0, PREFIX = 1, VALUE = 2, NAME = 3, FCALL = 4, LIST = 5, STAR = 6,// count(*) FLAT = 7 } export declare class Node { kind: Kind; brackets?: boolean; alias?: string; constructor(kind: Kind); } export declare class InfixNode extends Node { op: InfixOperator; lhs: Node; rhs: Node; constructor(lhs: Node, op: InfixOperator, rhs: Node); } export declare class PrefixNode extends Node { op: PrefixOperator; expr: Node; constructor(op: PrefixOperator, expr: Node); } export declare enum ValueType { LOGICAL = 0, NUMBER = 1, STRING = 2, NULL = 3 } export declare class ValueNode extends Node { type: ValueType; constructor(type: ValueType); } export declare class LogicalValueNode extends ValueNode { value: boolean; constructor(value: boolean); } export declare class NumberValueNode extends ValueNode { value: number; constructor(value: number); } export declare class StringValueNode extends ValueNode { value: string; constructor(value: string); } export declare class NullValueNode extends ValueNode { constructor(); } export declare class StarNode extends Node { constructor(); } export declare class NameNode extends Node { name: string; constructor(name: string); } export declare class FunctionCallNode extends Node { name: NameNode; args: ListNode; constructor(name: NameNode, args: ListNode); } export declare class ListNode extends Node { list: Node[]; constructor(node?: Node); push(node: Node): void; } export declare class FlatNode extends Node { tokens: Array<{ type: number; text: string; }>; constructor(); } export declare class Statement { node?: Node; } type Encoder = (s: string) => string; export type RewriteOptions = { func?: Encoder; name: Encoder; text: Encoder; }; export declare function visit(ast: Node, nameCb: (name: string) => void): void; export declare function rewrite(ast: Node, options: RewriteOptions): string; export declare function rewriteFlat(ast: FlatNode, options: { name: Encoder; }): string; export {};