export type tSqlParams = any[] | Record<string, any>;
export interface iSerializedExpression {
    sql: string;
    isReference: boolean;
    isExpression: boolean;
    isSubSelect: boolean;
}
export interface iExpressionSerializerHooks {
    assertValidIdentifier(identifier: string, context: string): void;
    isReference(value: string): boolean;
    addParam?: (params: tSqlParams, column: string, value: any) => string;
    buildScalarSubSelect?: (subRequest: any, params: tSqlParams) => string;
    onAlias?: (alias: string) => void;
    isKnownFunction?: (functionName: string) => boolean;
}
export interface iExpressionSerializerOptions {
    hooks: iExpressionSerializerHooks;
    params?: tSqlParams;
    context: string;
    contextColumn?: string;
}
export declare const serializeSqlExpression: (value: any, opts: iExpressionSerializerOptions) => iSerializedExpression;
