export declare class ExpressionCompiler { private compiledExpressions; private expressionsByName; private tableName; private total; constructor(expressions: IExpression[], tableName: string, total?: boolean); private fixExpressionType; private getExpression; getCompiledExpressions(): ICompiledExpressions; parseExpressionInput(expressionsInput: IExpressionInput, isRequiredAsPermissionExpression?: boolean): ICompiledExpression[]; getCompiledExpression(name: string, params?: TParams, isRequiredAsPermissionExpression?: boolean): ICompiledExpression; } export declare function orderExpressions(a: ICompiledExpression, b: ICompiledExpression): 1 | -1 | 0; export interface IExpressionsByName { [name: string]: IExpression; } export interface IExpression { name: string; type: "expression" | "function"; requiresAuth?: boolean; gqlReturnType: string; getNameWithParams?: (params: TParams) => string; generate: (context: IExpressionContext, params: TParams) => string; excludeFromPermissionExpressions?: boolean; } export interface IExpressionContext { getField: (name: string) => string; getExpression: (expressionInput: IExpressionInputObject) => string; } export interface ICompiledExpressions { [name: string]: ICompiledExpression; } export interface ICompiledExpression { type: string; gqlReturnType: string; name: string; sql: string; requiresLateral: boolean; requiresAuth: boolean; dependentExpressions: string[]; order: number; isRequiredAsPermissionExpression: boolean; excludeFromPermissionExpressions: boolean; } export interface IExpressionInputObject { name: string; params?: TParams; } export declare type IExpressionInput = IExpressionInputObject | string | Array | string>;