import { AliasedExpression, Expression } from '../expression/expression.js'; import { AliasNode } from '../operation-node/alias-node.js'; import { OperationNode } from '../operation-node/operation-node.js'; import { ExpressionBuilder } from '../expression/expression-builder.js'; import { SelectQueryBuilderExpression } from '../query-builder/select-query-builder-expression.js'; /** * Like `Expression` but also accepts a select query with an output * type extending `Record`. This type is useful because SQL * treats records with a single column as single values. */ export type OperandExpression = Expression | SelectQueryBuilderExpression>; export type ExpressionOrFactory = OperandExpression | OperandExpressionFactory; export type AliasedExpressionOrFactory = AliasedExpression | AliasedExpressionFactory; export type ExpressionFactory = (eb: ExpressionBuilder) => Expression; type OperandExpressionFactory = (eb: ExpressionBuilder) => OperandExpression; type AliasedExpressionFactory = (eb: ExpressionBuilder) => AliasedExpression; export declare function parseExpression(exp: ExpressionOrFactory): OperationNode; export declare function parseAliasedExpression(exp: AliasedExpressionOrFactory): AliasNode; export declare function isExpressionOrFactory(obj: unknown): obj is ExpressionOrFactory; export {};