import { AliasNode } from '../operation-node/alias-node.js'; import { TableNode } from '../operation-node/table-node.js'; import { type AliasedExpressionOrFactory } from './expression-parser.js'; import type { OperationNode } from '../operation-node/operation-node.js'; import type { AliasedExpression } from '../expression/expression.js'; import type { DrainOuterGeneric } from '../util/type-utils.js'; import { type AliasedDynamicTableBuilder } from '../dynamic/dynamic-table-builder.js'; export type TableExpression = AnyAliasedTable | AnyTable | AliasedExpressionOrFactory | AliasedDynamicTableBuilder; export type TableExpressionOrList = TableExpression | ReadonlyArray>; export type SimpleTableReference = AnyAliasedTable | AnyTable; export type AnyAliasedTable = `${AnyTable} as ${string}`; export type AnyTable = keyof DB & string; export type From = DrainOuterGeneric<{ [C in keyof DB | ExtractAliasFromTableExpression]: C extends ExtractAliasFromTableExpression ? ExtractRowTypeFromTableExpression : C extends keyof DB ? DB[C] : never; }>; export type FromTables = DrainOuterGeneric>; export type ExtractTableAlias = TE extends `${string} as ${infer TA}` ? TA extends keyof DB ? TA : never : TE extends keyof DB ? TE : never; type ExtractAliasFromTableExpression = TE extends string ? TE extends `${string} as ${infer TA}` ? TA : TE extends keyof DB ? TE : never : TE extends AliasedExpression ? QA : TE extends (qb: any) => AliasedExpression ? QA : TE extends AliasedDynamicTableBuilder ? DA : never; type ExtractRowTypeFromTableExpression = TE extends `${infer T} as ${infer TA}` ? TA extends A ? T extends keyof DB ? DB[T] : never : never : TE extends A ? TE extends keyof DB ? DB[TE] : never : TE extends AliasedExpression ? QA extends A ? O : never : TE extends (qb: any) => AliasedExpression ? QA extends A ? O : never : TE extends AliasedDynamicTableBuilder ? DA extends A ? T extends keyof DB ? DB[T] : never : never : never; export declare function parseTableExpressionOrList(table: TableExpressionOrList): OperationNode[]; export declare function parseTableExpression(table: TableExpression): OperationNode; export declare function parseAliasedTable(from: string): TableNode | AliasNode; export declare function parseTable(from: string): TableNode; export {};