import { AliasNode } from '../operation-node/alias-node.js'; import { ColumnNode } from '../operation-node/column-node.js'; import { ReferenceNode } from '../operation-node/reference-node.js'; import { AnyColumn, AnyColumnWithTable, ExtractColumnType } from '../util/type-utils.js'; import { SelectQueryBuilderExpression } from '../query-builder/select-query-builder-expression.js'; import { ExpressionOrFactory } from './expression-parser.js'; import { DynamicReferenceBuilder } from '../dynamic/dynamic-reference-builder.js'; import { SelectType } from '../util/column-type.js'; import { OperationNode } from '../operation-node/operation-node.js'; import { Expression } from '../expression/expression.js'; import { SimpleReferenceExpressionNode } from '../operation-node/simple-reference-expression-node.js'; import { OrderByDirection } from './order-by-parser.js'; import { JSONOperatorWith$ } from '../operation-node/operator-node.js'; import { JSONReferenceNode } from '../operation-node/json-reference-node.js'; export type StringReference = AnyColumn | AnyColumnWithTable; export type SimpleReferenceExpression = StringReference | DynamicReferenceBuilder; export type ReferenceExpression = SimpleReferenceExpression | ExpressionOrFactory; export type ReferenceExpressionOrList = ReferenceExpression | ReadonlyArray>; export type ExtractTypeFromReferenceExpression = SelectType>; export type ExtractRawTypeFromReferenceExpression = RE extends string ? ExtractTypeFromStringReference : RE extends SelectQueryBuilderExpression ? O[keyof O] | null : RE extends (qb: any) => SelectQueryBuilderExpression ? O[keyof O] | null : RE extends Expression ? O : RE extends (qb: any) => Expression ? O : DV; export type ExtractTypeFromStringReference = RE extends `${infer SC}.${infer T}.${infer C}` ? `${SC}.${T}` extends TB ? C extends keyof DB[`${SC}.${T}`] ? DB[`${SC}.${T}`][C] : never : never : RE extends `${infer T}.${infer C}` ? T extends TB ? C extends keyof DB[T] ? DB[T][C] : never : never : RE extends AnyColumn ? ExtractColumnType : DV; export type OrderedColumnName = C extends `${string} ${infer O}` ? O extends OrderByDirection ? C : never : C; export type ExtractColumnNameFromOrderedColumnName = C extends `${infer CL} ${infer O}` ? O extends OrderByDirection ? CL : never : C; export declare function parseSimpleReferenceExpression(exp: SimpleReferenceExpression): SimpleReferenceExpressionNode; export declare function parseReferenceExpressionOrList(arg: ReferenceExpressionOrList): OperationNode[]; export declare function parseReferenceExpression(exp: ReferenceExpression): OperationNode; export declare function parseJSONReference(ref: string, op: JSONOperatorWith$): JSONReferenceNode; export declare function parseStringReference(ref: string): ReferenceNode; export declare function parseAliasedStringReference(ref: string): SimpleReferenceExpressionNode | AliasNode; export declare function parseColumnName(column: AnyColumn): ColumnNode; export declare function parseOrderedColumnName(column: string): OperationNode;